当前位置: 首页>前端>正文

在线lua解释器 lua解释器原理

解释器文档(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 输出版本信息。


诊断
错误消息应该是自描述的。

作者
R. Ierusalimschy, L. H. de Figueiredo, and W. Celes (lua@tecgraf.puc-rio.br)

----------------------------------------
这个客户端是个简单的 
它可以从命令行通过文件名加载可执行的文件,也可以从标准输入加载可执行的文本行。 
注意,如果是后一种情况,每一行必须包含一个完成的语句。
例如,函数不可以跨行。
---------------------------------------------------------
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"。


https://www.xamrdz.com/web/2bx1957673.html

相关文章: