《用Go语言自制编译器》是由人民邮电出版社出版的一本关于Go语言方面的书籍,作者是索斯藤·鲍尔(Thorsten、Ball),主要介绍了关于Go语言、自制编译器方面的知识内容,目前在Go语言类书籍综合评分为:7.5分。
书籍介绍
go语言程序设计编程实战虚拟机编译原理教程书籍,摆脱枯燥的理论学习,用边学边练的方式理解编译原理,原版豆瓣评分9.4分,体验一步步实现类C语言的乐趣
内容简介
本书是《用Go语言自制解释器》的续篇。在自制解释器时,你已经为Monkey语言实现了类C语法、变量绑定、基本数据类型、算术运算、内置函数、闭包等特性。是时候让Monkey继续成长了!在本书中,Monkey将继续“进化”,并终成长为成熟的程序设计语言。在已有词法分析器、语法分析器和抽象语法树的基础上,你将为Monkey语言定义字节码指令,指定操作数,编写反汇编程序,构建执行字节码的虚拟机。通过动手学习,你将能够体验从无到有实现类C语言的乐趣。
目录
- 第 1章 编译器与虚拟机 1
- 1.1 编译器 2
- 1.2 虚拟机与物理机 5
- 1.2.1 物理机 6
- 1.2.2 什么是虚拟机 11
- 1.2.3 为什么要构建虚拟机 14
- 1.2.4 字节码 15
- 1.3 虚拟机与编译器的二元性 17
- 第 2章 你好,字节码! 19
- 2.1 第 一条指令 20
- 2.1.1 以字节作为开端 21
- 2.1.2 小编译器 26
- 2.1.3 字节码与反汇编程序 32
- 2.1.4 回归初心,继续前行 37
- 2.1.5 给机器上电 40
- 2.2 栈上加法 46
- 2.3 连接REPL 52
- 第3章 编译表达式 55
- 3.1 栈清理 55
- 3.2 中缀表达式 60
- 3.3 布尔类型 64
- 3.4 比较运算符 69
- 3.5 前缀表达式 76
- 第4章 条件语句 83
- 4.1 跳转 86
- 4.2 编译条件语句 88
- 4.3 执行跳转 103
- 4.4 欢迎回来,Null 值 106
- 第5章 追踪名称 115
- 5.1 计划 116
- 5.2 编译绑定 117
- 5.2.1 添加符号表 120
- 5.2.2 在编译器中使用符号 123
- 5.3 在虚拟机中支持全局变量 126
- 第6章 字符串、数组和哈希表 132
- 6.1 字符串 132
- 6.2 数组 138
- 6.3 哈希表 142
- 6.4 索引运算符 149
- 第7章 函数 156
- 7.1 一个简单的函数 156
- 7.1.1 函数表示 157
- 7.1.2 执行函数的操作码 158
- 7.1.3 编译函数字面量 161
- 7.1.4 编译函数调用 176
- 7.1.5 虚拟机中的函数 179
- 7.1.6 一点奖励 190
- 7.2 局部绑定 191
- 7.2.1 局部绑定操作码 192
- 7.2.2 编译局部绑定 195
- 7.2.3 在虚拟机中实现局部绑定 208
- 7.3 参数 218
- 7.3.1 编译带参数的函数调用 219
- 7.3.2 将引用解析为参数 224
- 7.3.3 虚拟机中的参数 227
- 第8章 内置函数 237
- 8.1 使修改变得简单 238
- 8.2 做出改变:计划 244
- 8.3 内置函数作用域 245
- 8.4 执行内置函数 250
- 第9章 闭包 256
- 9.1 问题 257
- 9.2 计划 258
- 9.3 将一切视为闭包 260
- 9.4 编译和解析自由变量 271
- 9.5 运行时创建闭包 283
- 9.6 递归闭包 288
- 第 10章 后的测试 303