如题,这是一系列关于Lua的源码分析的文章。分析的重点在编译原理和虚拟机的部分,而不是相关的库的实现部分。写这系列文章,最初是因为想要设计一门编程语言以及它的虚拟机,为此参考现有的优秀的实现。

为何选择Lua?

其实本人更加想分析Javascript的v8引擎和Chakra引擎的,只是感觉能力还不太够。而Lua的实现相当小巧,只有几万行C代码,与C/C++的互操作相当方便,并且实现的质量也是工业级别的,用来练手正合适。至于v8和Chakra,以后有机会再上。

出于边学习边分析的目的,写下这系列文章,只是更新可能会比较慢,若可以,本人尽量一周更新一次,毕竟比较忙。

运行环境

基础知识要求

  • 编译原理:至少知道词法分析和语法分析,能看懂正则表达式、产生式,知道相关术语。无需精通。

  • C语言:熟悉指针用法。有多门编程语言基础的更好。C语言是必须懂的。无需精通。

  • 数据结构:对常见的数据结构要有一些概念。

  • Lua语言:尽量熟悉,无需精通。

源码托管地址

分析过程中在不改变官方实现的情况下,本人将对官方的源代码添加一些注释。

后期补上,先占个坑

参考资料

本系列文章的目录(暂定)

  1. 概述

  2. 分析思路

  3. Lua 的编码规范

  4. Lua 中重要的数据类型

  5. Lua 的运行过程

  6. Lua 的 opcode

  7. Lua 的虚拟机结构

  8. Lua 的词法分析

  9. Lua 的语法分析

  10. Lua 的字节码

本文固定链接: http://www.js-code.com/c/c_61888.html