狂推神作 Crafting Interpreters!
Compiler/interpreter 技术,一直有种神秘色彩。一方面,掌握它能让你在更高层面看待编程语言,甚至自己创造一门。另一方面,庞杂的技术和龙书这样的大部头书,又往往将人劝退。
幸好,有了 Crafting Interpreters。
它的定位出奇制胜,因为它选择了一条独特的路径,带着我们游览 compiler/interpreter 技术丛林。
这本书以实践为主,主线是从 0 构建 interpreter,理论只做最简要的介绍。非常适合我这种连龙书 Syntax Analysis 那一章都没撑过去的苦手。😂
跟随着它的路径,我们只用几千行代码,就实现了一门完整的编程语言(Lox)。而且是两次,一次用 Java 一次用 C。
第一部分用 Java 实现一个 tree-walk interpreter。每章一个主题,先是实现 scanner,然后 recursive descent parser。然后从表达式求值逐步扩充,直到完整支持语句、控制流、函数、类与继承等语言特性。
第二部分改用 C 语言,实现一个虚拟机。我们从设计字节码开始,并将前面实现的语言特性编译为字节码。
整个过程中,不依赖外部库,需要的东西全部自己动手。跟着书的进度,几百行代码之后我们得到一个 scanner,再几百行之后得到一个 parser,几千行之后你就实现了完整的编程语言:Lox。
剩下的,就是自由发挥的天地了。😎
Crafting Interpreters