解释器文档(lua.html)
---------------------------------------------------------
名字
lua - Lua 解释器
概要
lua [ arguments ]
描述
lua 是独立的 Lua 解释器。它加载并执行 Lua 程序,程序可以是文本源代码形式,或由 Lua 编译器 luac 输出的预编译二进制形式。lua 可以用作批处理解释器,也可用做交互式解释。
参数可以是选项,赋值,文件名,它们从左到右按顺序执行。
选项以中划线 - 开始,描述如下。
一个赋值是一个形如 a=b 的参数,它把字符串 ‘b‘ 赋值给全局变量 a。注意,如果它没有包含空格或者其它对于 shell 来说特殊的字符则不需要引号。这仅仅是为了方便。(一般来说,你应该注意当使用引号和空格在命令行上时,因为它们通常会由 shell 处理。)
如果参数既不是选项也不是赋值,那么它将被认为是一个文件名,然后被加载并执行。
如果没有给出任何参数,且标准输入是一个终端就认为是 "-v -i" 。否则,认为是 -。
选项
- 把标准输入作为文件加载,也就是说,不是交互式地,即使标准输入是一个终端。
-c 退出前关闭 Lua。
-e“stat”执行语句 stat。你需要用引号把它括起来,如果它包含空格或引号的话。
-f "file" 把所有剩余的参数作为字符串收集到名为 arg 的全局表中,并执行 file。在 arg 中的参数从 0 开始,它包含字符串 ‘file‘。最后一个参数的索引保存在 "arg.n" 中。
-i 进入交互模式,显示一个提示符。在这种模式下,lua 从标准输入中读取行并执行他们。每一行必须包含一个完整的句子。为使一个句子跨越多行,可以每行的末尾加反斜线 ‘\e‘。显示的提示符是全局变量 _PROMPT 的值,如果这个值是一个字符串。所以,为改变提示符,可以把 _PROMPT 设置为一个你选择的字符串。你可以在调用解释器之后做这件事,或者例如可以在命令行上这样写 "_PROMPT=\‘lua: \‘"(注意,需要加引号,因为字符串包含一个空格。)。默认的提示符是 ">"。
-q 进入交互模式,但不显示一个提示符。
-sn 设置栈的大小为 n。如果存在,这必须是第一个选项。注意 n 和 -s 在同一个参数中。例如,为了设置一个栈的大小为 2000,可以使用 -s2000。
-v 输出版本信息。
另请参阅
luac(1)
http://www.tecgraf.puc-rio.br/lua/
诊断
错误消息应该是自描述的。
作者
R. Ierusalimschy, L. H. de Figueiredo, and W. Celes ([email protected])
----------------------------------------
这个客户端是个简单的
它可以从命令行通过文件名加载可执行的文件,也可以从标准输入加载可执行的文本行。
注意,如果是后一种情况,每一行必须包含一个完成的语句。
例如,函数不可以跨行。
---------------------------------------------------------
lua 的 readme 自述文件
这是 lua,一个简单的 lua 解释器。
它可以被用来做为一个批处理解释器或者也可以交互使用。
它的帮助手册有 nroff 和 ../../doc 目录中的 html 文件。
这里是一些它可以识别的选项:
- 把标准输入作为一个文件执行
-c 退出前关闭 Lua
-e stat 执行字符串 `stat‘
-f name 执行文件 `name‘ 并把剩余的参数放在表 `arg‘
-i 进入交互模式,有提示符
-q 进入交互模式,没有提示符
-sNUM 设置栈的大小为 NUM (必须是第一个选项)
-v 输出版本信息
a=b 设置全局变量 `a‘ 为字符串 `b‘
name 执行文件 `name‘
如果没有给出选项,它从标准输入中读取行并执行他们。所以,每一行必须包含一个完整的句子。为使一个句子跨越多行,可以每行的末尾加反斜线 ‘\‘。
为改变提示符,可以把 _PROMPT 设置为任何你想要的值。你可以在调用解释器之后做这件事,或者例如可以在命令行上这样写 lua _PROMPT="lua: " -i
注意,在这种情况下你需要 "-i" 。
你必须注意当使用引号在命令行上时,因为它们通常会由 shell 处理。
当把 Lua 作为一个独立的语言使用时,这个解释器很好。
如果需要一个最小的解释器,参见 ../../etc/min.c.
如果你的应用程序需要简单的导出新的函数给 Lua (这是很常见的场景),那么你可以直接使用这个解释器(基本上不用修改),如下:
首先,定义一个函数
void myinit (lua_State *L)
在你自己的代码中。在这个函数中,你应该做任何你的应用程序需要的初始化操作,把你的程序导出给 Lua。
然后,在 lua.c 中添加一个调用,在标记
"add your libraries here"
的位置之后。
当然,你可以使用任何名字替代 "myinit"。