Lua1.1 其它

Lua1.1 的代码大体上和 Lua1.0 相近,由于之前对 Lua1.0 的代码做了简要的分析,所以这里不再进行分析。
如果有这方面的分析需要,可以参见 Lua1.1 的手册,能获得很多有用信息。
Lua1.1 的代码相对来说比较直接,没有太复杂的结构,有 C 语言基础的应该比较容易看懂。如果对于编译原理有一点了解就会更好了,比如对于 Yacc 这样的工具的原理有一定了解的话。
Lua1.1 相关部分断断续续写了有一段时间了,写到这儿算是告一段落了。

接下来,写点儿什么呢?

时间: 2024-10-15 07:02:19

Lua1.1 其它的相关文章

Lua1.0 代码分析 table.c

转载出处:http://my.oschina.net/xhan/blog/307961 table.c 代码分析 全局符号,常量,字符串,关联数组,文件列表的定义. 全局符号: 初始有 5 个基本的符号,Lua 预设的函数和库函数都注册在里面. 常量: 初始的几个常量是 Lua 中 type 的名字. 字符串表,关联数组表,文件列表 所有的这些在 table.c 中定义的这些数组可以认为是 Lua 的全局注册表空间,Lua 的环境. 函数分析 ? 1 2 3 4 5 6 7 8 9 10 11

Lua1.1 程序分析一

先试下 globals.lua, 这个是从 Lua1.0 那里拷贝过来的.因为在 Lua1.0 里对这个程序的输出有点疑问,所以这里再执行一下它. 源代码如下:---------------------------$debugk,v=nextvar(k)while k do print(k) k,v=nextvar(k)end---------------------------执行一下输出:typetonumbernextnextvarprintdofiledostringreadfromwr

Lua1.1 打印字节码

如何打印出字节码:代码里做如下修改,把打印字节码的宏开关打开.y.tab.c18 行#define LISTING 0改为#define LISTING 1 因为 PrintCode 的定义在调用之后,所以加个前置声明:做出下修改:y.tab.c329 行添加static void PrintCode (Byte *code, Byte *end);保证在 lua_parse 调用它的时候,是已经声明了的. 把打印字节码打开之后,执行脚本的时候就会先打字节码打印出来.看看字节码打印出来是什么样,

Lua1.0 编译准备

转载出处:http://my.oschina.net/xhan/blog/305943 从官网 www.lua.org/ftp/lua-1.0.tar.gz 下代码.如何编译,ReadMe 里有这样的说明: The code compiles and runs in RedHat 5.2 with gcc 2.7.2.3. It may not run innewer systems, because it assumes that stdin and stdout are constants,

Lua1.0 脚本初步印象

转载出处:http://my.oschina.net/xhan/blog/305949 先来个 hello, world! 看看解释器是否能正常工作:print("hello, world") 可以正常输出,说明解释器能正常干活.再看看几个官方自带的测试文件是干什么的: array.lua $debug a = @() i=0 while i<10 do  a[i] = i*i  i=i+1 end r,v = next(a,nil) while r ~= nil do  pri

Lua1.1 语法分析

无论是 lua_dostring 或者是 lua_dofile,都调用了语法分析 lua_parse.在 lua 里面语法分析器是用 yacc 生成的,就是y.tab.c 文件,lua.stx 就是 yacc 的输入文件.这里说的东西基本上编译原理书里都有介绍,如需要进一步了解,请自行参阅. 在说语法分析之前,说下词法分析.lua 的词法分析是手写的,手写的词法分析性能比较好,这个在 lua1.1 自带的文档里有说明,文件名 lua.ps, 第 8 页 (或者 www.lua.org/semis

Lua1.0 环境准备

转载出处:http://my.oschina.net/xhan/blog/306719 从 lua.c 的 main 函数开始,看看在代码执行过程中中发生了什么? 1 2 3 4 5  if (argc < 2)  {   puts ("usage: lua filename [functionnames]");   return;  } Lua1.0 执行时至少要有一个参数,否则直接退出.接着是三个 lua_register . ? 1 2 3  lua_register (&

Lua1.0 代码分析 库

Lua1.0 代码分析 库库的代码相对比较简单.这里以数学库为例进行说明.比如看下这个取绝对值的数学函数 static void math_abs (void) {  double d;  lua_Object o = lua_getparam (1);  if (o == NULL)  { lua_error ("too few arguments to function `abs'"); return; }  if (!lua_isnumber(o))  { lua_error (

Lua1.1 Lua 的设计和实现 (二)

转载出处:http://my.oschina.net/xhan/blog/309615 (接上篇) -------------------------------------- 实现 -------------------------------------- 扩展语言总是由应用程序以某种方式解释执行的.简单的扩展语言可以直接从源代码进行解释执行.另一方面,嵌入式语言通常是强大的编程语言,具有复杂的语法和语义.一个更有效的嵌入式语言实现技术是设计适合语言需求的虚拟机,编译扩展程序成虚拟机的字节码

Lua1.1 Lua 的设计和实现 (一)

转载出处:http://my.oschina.net/xhan/blog/309613 说明: 这个文档是 Lua1.1 的 doc 目录里的 lua.ps 文件. 同时这个文档可以这里找到:http://www.lua.org/semish94.html 原文版权归原作者所有,这篇翻译只是作为学习之用.如果翻译有不当之处,请参考原文. --------------------以下是正文------------------ 应用程序扩展语言的设计和实现 摘要.我们描述 Lua 的设计和实现,一个