hello, world!

按照介绍编程语言的惯例,我们从hello, world!开始。不过,我们不是编写程序直接输出这句话,而是要实现一个Lua解释器来解释执行下面的Lua代码:

print "hello, world!"

这段代码虽然简单,但我们的极简版本的解释器仍然会包含一个通用解释器的完整流程,包括词法分析、语法分析、生成字节码和虚拟机执行等步骤。后续只要在这个流程的基础上增加功能,就可以逐渐实现一个完整的Lua解释器。

不过,这段Lua代码也没看上去那么简单,它包含了全局变量(print),字符串常量("hello, world!"),标准库(print)和函数调用等诸多概念。这些概念又依赖Lua的值、栈等内部概念。能够解释执行这段代码,就可以对解释器的工作原理有个很直观的理解。

为了完成这个解释器,本章首先介绍下必要的编译原理知识,这应该是整个系列文章里仅有的理论部分,也可能是错误最多的一节。然后介绍字节码和值这两个核心概念。再然后逐步实现词法分析、语法分析和虚拟机。最终完成一个(仅)能执行上述Lua代码的解释器。