如题,这是一系列关于Lua的源码分析的文章。分析的重点在编译原理和虚拟机的部分,而不是相关的库的实现部分。写这系列文章,最初是因为想要设计一门编程语言以及它的虚拟机,为此参考现有的优秀的实现。
为何选择Lua?
其实本人更加想分析Javascript的v8引擎和Chakra引擎的,只是感觉能力还不太够。而Lua的实现相当小巧,只有几万行C代码,与C/C++的互操作相当方便,并且实现的质量也是工业级别的,用来练手正合适。至于v8和Chakra,以后有机会再上。
出于边学习边分析的目的,写下这系列文章,只是更新可能会比较慢,若可以,本人尽量一周更新一次,毕竟比较忙。
运行环境
Windows10 64位操作系统
VS2015
基础知识要求
编译原理:至少知道词法分析和语法分析,能看懂正则表达式、产生式,知道相关术语。无需精通。
C语言:熟悉指针用法。有多门编程语言基础的更好。C语言是必须懂的。无需精通。
数据结构:对常见的数据结构要有一些概念。
Lua语言:尽量熟悉,无需精通。
源码托管地址
分析过程中在不改变官方实现的情况下,本人将对官方的源代码添加一些注释。
后期补上,先占个坑
参考资料
本系列文章的目录(暂定)
概述
分析思路
Lua 的编码规范
Lua 中重要的数据类型
Lua 的运行过程
Lua 的 opcode
Lua 的虚拟机结构
Lua 的词法分析
Lua 的语法分析
Lua 的字节码