用Go编写解释器
212 页
Chinese
PDF
4.5

用Go编写解释器

用Go编写解释器

作者:

年份:

简介:

引言

《Writing an Interpreter in Go》(中文译名《用Go编写解释器》)是Thorsten Ball撰写的一本独特的实践指南,它循序渐进地教你为虚构的编程语言Monkey创建一个完整的解释器。与学术性的编译器教材不同,本书聚焦于实际代码和极简的理论,让读者能够立即着手用Go语言编写一个可运行的解释器。

本书出版于2018年,共212页,面向希望深入了解编程语言“底层”工作原理的程序员。它不需要读者具备编译器方面的预备知识,但要求读者熟练掌握Go语言。

本书内容

本书系统地引导读者经历创建解释器的所有阶段:从词法分析到代码执行。主要主题包括:

  • 词法分析器(Lexer)——将源代码分解为词法单元(Token)。
  • 解析器(Parser)——使用递归下降和Pratt解析方法构建抽象语法树(AST)。
  • 对象系统——表示各种值(数字、字符串、布尔值、函数、数组、哈希)。
  • 求值器(Eval)——遍历AST并执行表达式和语句。
  • 闭包和一等函数——实现作用域和闭包。
  • 内置函数——添加标准操作(len, puts, first, rest等)。
  • 类型系统——带有运行时检查的动态类型系统。

每一章都以可立即测试的代码结尾。最终,读者将获得一个能够运行Monkey程序的解释器——Monkey是一种语法类似于C、JavaScript和Python混合体的语言。

适合读者

本书适合以下人群:

  • Go开发者——希望加深对Go语言及其功能的理解。
  • 对编译器感兴趣的开发者——希望了解解析器和解释器的工作原理。
  • 学生和教师——作为编程语言课程的实践补充。
  • 任何希望创建自己语言或DSL(领域特定语言)的开发者。

重要提示:本书不从头教授Go语言——读者需要具备中等水平的Go编程能力(了解结构体、接口、指针,不需要掌握协程)。

读者将学到什么

阅读本书后,您将能够:

  • 从头编写一个词法分析器,将字符串解析为词法单元。
  • 使用带运算符优先级的递归下降方法实现解析器。
  • 构建并遍历AST。
  • 创建值系统和环境(执行环境)。
  • 实现闭包和高阶函数。
  • 添加对数组、哈希和字符串操作的支持。
  • 理解动态分发和错误处理的工作原理。
  • 获得可扩展的解释器完整代码。

本书优势

实践导向。每个概念都立即通过代码得到巩固。您不仅仅是阅读理论——而是一行一行地编写解释器。

循序渐进。本书分为多个小章节,每章都添加新功能。这使得您可以轻松回顾前面的部分。

干净的Go代码。作者使用了地道的Go语言、接口和组合,使代码既具有教学性又具有工业级质量。

无冗余理论。与“龙书”(Aho, Lam, Sethi, Ullman)不同,本书没有形式化语法和证明——只包含构建可运行解释器所需的内容。

推荐