论坛元老
- 威望
- 510
- 贡献
- 606
- 热心值
- 1
- 金币
- 3680
- 注册时间
- 2023-4-2
|
内容简介本书是《用Go语言自制解释器》的续篇。在自制解释器时,你已经为Monkey语言实现了类C语法、变量绑定、基本数据类型、算术运算、内置函数、闭包等特性。是时候让Monkey继续成长了!在本书中,Monkey将继续“进化”,并最终成长为成熟的程序设计语言。在已有词法分析器、语法分析器和抽象语法树的基础上,你将为Monkey语言定义字节码指令,指定操作数,编写反汇编程序,构建执行字节码的虚拟机。通过动手学习,你将能够体验从无到有实现类C语言的乐趣。作者简介索斯藤·鲍尔(Thorsten Ball) Sourcegraph软件工程师,精通多门程序设计语言,包括Go、C、JavaScript和Ruby,深谙编译原理、系统编程、Unix、数据库等相关技术。现居德国,长期活跃于欧洲各大技术大会。 廖彬 毕业于中国科学院计算技术研究所,高级语言虚拟机爱好者,在语言虚拟机领域从事开发近十年昌就职于阿里巴巴和腾讯。目录版权信息致谢前言进击的Monkey过去和现在未来如何使用本书更多信息第 1 章 编译器与虚拟机1.1 编译器1.2 虚拟机与物理机1.2.1 物理机1.2.2 什么是虚拟机1.2.3 为什么要构建虚拟机1.2.4 字节码1.3 虚拟机与编译器的二元性第 2 章 你好,字节码!2.1 第一条指令2.1.1 以字节作为开端2.1.2 最小编译器2.1.3 字节码与反汇编程序2.1.4 回归初心,继续前行2.1.5 给机器上电2.2 栈上加法2.3 连接REPL第 3 章 编译表达式3.1 栈清理3.2 中缀表达式3.3 布尔类型3.4 比较运算符3.5 前缀表达式第 4 章 条件语句4.1 跳转4.2 编译条件语句4.3 执行跳转4.4 欢迎回来,Null值第 5 章 追踪名称5.1 计划5.2 编译绑定5.2.1 添加符号表5.2.2 在编译器中使用符号5.3 在虚拟机中支持全局变量第 6 章 字符串、数组和哈希表6.1 字符串6.2 数组6.3 哈希表6.4 索引运算符第 7 章 函数7.1 一个简单的函数7.1.1 函数表示7.1.2 执行函数的操作码7.1.3 编译函数字面量7.1.4 编译函数调用7.1.5 虚拟机中的函数7.1.6 一点奖励7.2 局部绑定7.2.1 局部绑定操作码7.2.2 编译局部绑定7.2.3 在虚拟机中实现局部绑定7.3 参数7.3.1 编译带参数的函数调用7.3.2 将引用解析为参数7.3.3 虚拟机中的参数第 8 章 内置函数8.1 使修改变得简单8.2 做出改变:计划8.3 内置函数作用域8.4 执行内置函数第 9 章 闭包9.1 问题9.2 计划9.3 将一切视为闭包9.4 编译和解析自由变量9.5 运行时创建闭包9.6 递归闭包第 10 章 最后的测试 |
|