由于工作需要用了很多年的lua编写各种逻辑处理模块,今天心血来潮,决定深入了解一下lua源码的实现,目的是方便自己的lua代码调试,省的每次都用print打印这种原始手段,本“长篇小说“ 主要弄懂以下的问题:
1 local , global, upvalue 的原理和实现,upvalue的查找和递归标记是什么?
2 Function是什么,执行过程如何,参数如何传递,怎么分配栈上空间?
3 循环结构的实现
4 模块的实现,closure是什么
5 各种元表的实现,基本类型的元表如何增加(lua内部职能给table加元表,number,string这些都需要外部增加)
6 各种库方法的实现,如debug, math, string, os库等,浏览一遍有个概念即可
7 判断和跳转的实现
8 钩子函数的实现和应用
9 报错是如何组织的,各项信息在哪里保存的,又如何获取?
10 lua常量是什么,为什么要共享同一份常量?
11 gc回收是什么,如何实现的,流程是什么?
12 table类型的存储和访问,分数组类型和哈希类型
万里执行始于足下:先从最简单的local变量开始:
一、主要流程先表述一下:解析lua语言,生成c代码 >>>>> 调用c代码
前面的各种函数调用封装,检测错误封装暂且不表,直接进入最终解析语法的开始函数这: f_par