自己动手实现Lua:虚拟机、编译器和标准库

张秀宏
前言 为什么编写本书 Lua是一门强大、高效、轻量、可嵌入的脚本语言。Lua语言设计十分精巧,在一个很小的内核上可以支持函数式编程、面向对象编程、元编程等多种编程范式。以本书完稿时的最新版本Lua 5.3.4为例,全部代码(包括Lua虚拟机、编译器、标准库等)仅有2万多行,这其中还包括注释和空行。 Lua语言大约于1993年诞生于巴西PUC-Rio大学,之后在游戏领域大放异彩,被很多游戏客户端选为脚本语言,比如知名游戏《魔兽世界》《模拟城市4》《愤怒的小鸟》等。很多流行的游戏引擎也选择Lua作为脚本语言,比如CryENGINE2、Cocos2d-x及Corona SDK等。另外,也有很多游戏服务端采用C/C++搭配Lua的开发模式。除了游戏领域,Lua语言在其他地方也有很多应用,例如被广泛使用的NoSQL数据库Redis就使用Lua作为脚本语言扩展其能力。 相信自己动手设计并实现一门编程语言是每个程序员都会有的一个梦想,目前国内也已经出版或引进了一些指导读者自己实现编程语言的书籍。不过这些书籍要么只介绍了语言实现环节中的一小部分,无法纵观全局;要么只讨论某种大幅裁减后的简化语言,离真正的工业语言还有一定距离。例如,我自己的《自己动手写Java虚拟机》,只讨论了Java虚拟机实现,没有涉及Java编译器和Java标准库。 如上所述,之所以选择Lua语言,就是因为它足够小巧,并且有很好的流行度。麻雀虽小,五脏俱全,这使得我们可以在一本书的篇幅范围内覆盖虚拟机、编译器、标准库这三个方面的内容。希望读者可以通过本书完整体验一门编程语言的实现过程,为将来打造属于自己的语言做好准备。这正是本书的与众不同之处。 本书主要内容 本书主要内容可以分为四个部分:第一部分(第1章)为准备工作;第二部分(第2~13章)主要讨论Lua虚拟机和Lua API;第三部分(第14~17章)主要讨论Lua…