Lua1.1 是官方公开发布的第一版,是事实上的第一版 ,也是最早发布的一版。
代码从这里 www.lua.org/ftp/lua-1.1.tar.gz 下载,事实上在 www.lua.org/versions.html 页面,有所有的可以下下载到的版本。
代码下载下来之后,解压,可以看到这次多了不少目录(和 Lua1.0 的一个孤零零的目录相比)。
目录介绍:
clients, include, src 目录中是代码。
test 目录中是一些测试文件。
doc 目录中是文档。
编译:
看目录中有 Makefile 文件,make 一下试试,不行,各种奇怪的错误。好吧,我比较懒,就不深究原因了。开 VS2010, 把上面提到的几个代码目录中的文件全部拷贝到一起,建工程,把这些代码全部加入工程,编译,编译失败,
在 iolib.c 的 21 行报错:error C2099: initializer is not a constant 看看 iolib.c 的 21 行是什么
static FILE *in=stdin, *out=stdout;
这个代码错误好像很熟悉的样子,是的,Lua1.0 里就遇到过了。同样,这里做如下修改:
iolib.c
21 行
static FILE *in=stdin, *out=stdout;
改为
static FILE *in=NULL, *out=NULL;
472 行 iolib_open 中
添加 in=stdin; out=stdout;
再编译,很好,编译通过。看看 Debug 目录中有可执行文件生成。
写个 hello, world 试试
print ("hello, world")
可以正常执行,说明编译的很成功。
再试下 mingw 和 linux,把 Lua1.1 的所有代码拷贝到一个目录里面,就像 Lua1.0 那样,把 Lua1.0 的 Makefile 拷贝过来。修改下目标文件,由于 Lua1.1 的文件相比 Lua1.0 有变化,我们做相应修改。词法分析和语法分析文件改为 lex.o 和 y.tab.o,由于 Lua1.1 少了 floatingpoint.h 这个文件,我们把它加上(虽然它是个没有什么内容的空文件)。iolib.c 的修改方式上面已经说了。做完这几步之后,make 一下,无论是 mingw 的 gcc 或者是 linux 里都可以成功生成可执行文件。不错,环境的准备也算挺顺利的。
README 的主要内容包括,Lua 是什么,由谁开发,一些特点,如何安装,法律事务,如何联系作者。
Lua 是一个简单但是强大的应用程序扩展语言。
类 pascal 语法,变量不需要声明,有强大的数据描述结构,函数可接受多参数,函数可返回多个结果,代码被编译为字节码由虚拟机执行。
Lua 是由 ASNI C 写成的,是可移植的。
Lua1.1 的文档是 *.ps 格式的文件,在 Linux 里看着比较方便,在 Windows 里要安装阅读器,为了看两个文件,我安装了 Ghostscript 和 GSview ( http://www.ghostscript.com/ )。