Lua5.0 非正式总结

如您所愿,这个 Lua 代码分析系列结束了。

Lua 老版本代码的“考古工作”暂时告一段落。

以后应该也不会再拾起来了。

从写第一篇到现在已经快两年了,这是个不短的时间。

像有的网友说的,这个事儿的意义何在?

我可以说出很多个意义,但最初也是最重要的一条,兴趣。

最开始的时候是兴趣使然,挺高兴的一件事儿,还能收获知识,何乐而不为?

写着写着,目标清晰起来,既然高兴的开始了,何不愉快的结束。

到如今,应当算是一个愉快的结束,最初的目标虽然没有百分百实现,但中间修改后的目标都实现了。

比起开发中的需求变更,这个目标的变化要小很多。

收获也是很大的,从最初的不熟悉 Lua 代码,到现在熟悉了 Lua 的很多方面。

回到最初,为什么写博客?

刚开始有写博客想法的时候,想着零散地记录学习和思维轨迹,有点备忘的意味。

但最近在网上看到的一句话,原话记不清了。

用博客记录下有价值的思考,会带来很多好处,却没有任何明显的坏处。

好像是刘未鹏说的,他的博客写得很好!

现在我也越来越感觉到写博客的好处了。

以后会怎么样?

星辰大海

时间: 2024-10-27 21:20:30

Lua5.0 非正式总结的相关文章

Lua5.0 第零篇

Lua5.0 版本从这里下载: www.lua.org/ftp/lua-5.0.tar.gz 它的在线文档在这里: http://www.lua.org/manual/5.0/ 很好,终于进入版本五时代了. 打开下载下来的压缩包,好多的目录和文件.不管它们,把所有的源代码文件放到一起,编译一下. 一如既往的好编. 不过在 VS 中编编译器的时候有一个小插曲,就是 print.c 里的 luaP_opnames 找不到,有个链接错误. 原来是宏定义 LUA_OPNAMES 的问题,解决之,搜了一下

Lua5.0 编译器入口

编译器相关的文主要是 luac.c . 看一下它的内容: int main(int argc, char* argv[]) {  lua_State* L;  Proto* f;  int i=doargs(argc,argv);  argc-=i; argv+=i;  if (argc<=0) usage("no input files given",NULL);  L=lua_open();  luaB_opentests(L);  for (i=0; i<argc; 

Lua5.0 语法分析

写着写着,又来到了这里. 这次是写还是不写,嗯,这是一个问题. 先说点题外话,没准也算是题内. 经过这段时间的代码阅读,分析,调试,感觉自己的代码控制力提高了一些. 当然了,不单是 Lua 相关的,也有其它的工作中的代码阅读. 相比之下,还是工作中阅读的代码量要更大一些,更快一些. 究其原因,可能是工作中的代码阅读的目的性要更强一些吧. 打个比方,工作中的代码阅读是为了解决某个很具体的问题. 带着问题去阅读代码,针对性更强一些. 也比较容易把关注点集中在相关的代码上,这个过程中不自觉地就忽略了其

Lua5.0 语法解析之路

上回说到 luaL_loadfile ,这次把它的调用展开到语法分析器 parser. 先一下它的函数定义 LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) {   LoadF lf;   int status, readstatus;   int c;   int fnameindex = lua_gettop(L) + 1;  /* index of filename on the stack */   if 

Lua5.0 词法分析

语法分析器会调用词法分析器. 在语法分析之前,简单的看一下词法分析. 内存管理和 ZIO 输入在词法分析中会用到,因为它们相对比较孤立,不影响主流程的阅读. 上一个版本也看过它们了,这里就不再重复了. 词法分析最重要的函数就是 int luaX_lex (LexState *LS, SemInfo *seminfo); 如果你用其它的词法分析工具生成器,生成的词法分析器也会有个类似的函数. 这个函数主要就是从源代码中读出一个 token 返回给语法分析器. 在语法分析的 next 和 lookh

http://mirror2.openwrt.org/sources/

http://mirror2.openwrt.org/sources/ Index of /sources/ ../ 1.0.4.3.arm 22-Dec-2008 20:29 93996 2.13.0.0.a.13.14.arm 10-Aug-2010 16:23 30888 2.13.12.0.arm 18-Feb-2009 16:31 29036 2.13.24.0.lm86.arm 18-Feb-2009 16:31 30083 2.13.24.0.lm87.arm 28-Nov-200

lua与c++的相互调用入门篇

进入游戏行业,开始学习lua,lua脚本语言的优势在于灵活,游戏行业应用相当广泛,因为支持动态加载,所以是必不可少的存在.可以想想,如果死守C++不放,有一个bug,莫非修正bug后重启服务器?这得浪费多少时间? 好了,废话少说,上流程. 1:下载lua源码:http://www.lua.org/ftp/ 2:建立控制台应用程序,选择“静态库”,去掉“预编译头”选项 3:将下载的lua源码 添加到工程,如下图 4:选择Release 模式 5:为了防止4996错误,在“预处理器”中加入 “_CR

《Programming in Lua 3》读书笔记(二十八)

日期:2014.8.15 PartⅣ The C API 32 Memory Management Lua是动态的对其数据结构进行管理的.所有数据结构按需求进行增长,最终进行释放.Lua对其内存的使用控制较为严格,当我们关闭了一个Lua state的时候,Lua会立即释放其内存占用.不仅如此,Lua中的所有对象都被垃圾回收器管理,包括tables,strings,和functions,threads,和modules. Lua进行内存管理的方式对多数程序来说都是挺合适的.但是还是有一些特殊的程序

Lua1.1 打印字节码

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