【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
lua本身作为非常优秀的语言,在游戏和项目开发中占有举足轻重的角色。因此,很多朋友都希望自己可以看看lua是怎么设计的。网上关于lua的教程很多,不过我还是建议大家可以找一找低阶版本的lua版本进行阅读。只要掌握一点lex、bison和vm的知识,lua本身并不复杂。
1、选择哪个版本?
我个人建议选择lua-1.1.tar.gz版本,这个版本中少有的包含了词法分析文件lua.lex和语法分析文件lua.stx。
2、怎么编译?
直接./domake就可以了,少量的编译错误大家可以自己解决。
3、主要代码怎么分布?
项目主要包含了bin/clients/doc/include/lib/src/test等目录。其中bin、lib用来保存生成的文件。doc为文档目录。include为头文件目录。clients和src为主要的代码目录,clients中包含了lib文件、lua入口文件,而src包含了主要的编译文件、虚拟机执行文件等等。test目录包含了很多lua代码,可以用来进行测试。
4、lua.lex & lua.stx做什么用?
这两个文件主要用来生成对应的c文件,做字符解析和语法解析使用。其中lua.lex生成的c文件为lex.c,lua.stx生成的文件为y.tab.c。
5、虚拟机执行在那个文件?
虚拟机执行主要在lua_execute这个函数,在opcode.c文件中。
6、lua执行的基本流程是什么?
整个lua解析的流程不复杂,从main->lua_dofile->lua_parse->lua_execute,基本流程就是这样的。
7、如果需要从c调用lua怎么办?
lua-1.1.tar.gz其实提供了lua_call这个函数来实现这一目标,但是好像没有地方用到这个函数。
8、想学习lua调用c怎么办?
直接学习clients/lib/mathlib.c等函数,活学活用。
9、其他要注意什么?
利用lua.lex和lua.stx掌握lua的基本规则,配合lua_execute学习,都可以学得会。大家不用有任何心理负担。