拥有这本书的图书馆:
作品目录
译者序
前言
推荐序
致谢
本书的阅读方式
● 出场角色
● 有效利用源代码
第 1 部分 基础篇
第 1 天 来,我们一起做些什么吧
1.1 机器语言与汇编语言
1.2 解释器与编译器
1.3 开发语言处理器
1.4 语言处理器的结构与本书的框架
第 2 天 设计程序设计语言
2.1 麻雀虽小、五脏俱全的程序设计语言
2.2 句尾的分号
2.3 含糊不得的语言
第 3 天 分割单词
3.1 Token 对象
3.2 通过正则表达式定义单词
3.3 借助 java.util.regex 设计词法分析器
3.4 词法分析器试运行
第 4 天 用于表示程序的对象
4.1 抽象语法树的定义
4.2 设计节点类
4.3 BNF
4.4 语法分析与抽象语法树
第 5 天 设计语法分析器
5.1 Stone 语言的语法
5.2 使用解析器与组合子
5.3 由语法分析器生成的抽象语法树
5.4 测试语法分析器
第 6 天 通过解释器执行程序
6.1 eval 方法与环境对象
6.2 各种类型的 eval 方法
6.3 关于 GluonJ
6.4 执行程序
第 7 天 添加函数功能
7.1 扩充语法规则
7.2 作用域与生存周期
7.3 执行函数
7.4 计算斐波那契数
7.5 为闭包提供支持
7.6 实现闭包
第 8 天 关联 Java 语言
8.1 原生函数
8.2 编写使用原生函数的程序
第 9 天 设计面向对象语言
9.1 设计用于操作类与对象的语法
9.2 实现类所需的语法规则
9.3 实现 eval 方法
9.4 通过闭包表示对象
9.5 运行包含类的程序
第 10 天 无法割舍的数组
10.1 扩展语法分析器
10.2 仅通过修改器来实现数组
第 2 部分 性能优化篇
第 11 天 优化变量读写性能
11.1 通过简单数组来实现环境
11.2 用于记录全局变量的环境
11.3 事先确定变量值的存放位置
11.4 修正 eval 方法并最终完成性能优化
第 12 天 优化对象操作性能
12.1 减少内存占用
12.2 能否通过事先查找变量的保存位置来优化性能
12.1 定义 lookup 方法
12.4 整合所有修改并执行
12.5 内联缓存
第 13 天 设计中间代码解释器
13.1 中间代码与机器语言
13.2 Stone 虚拟机
13.3 通过栈实现环境
13.4 寄存器的使用
13.5 引用变量的值
13.6 if 语句与 while 语句
13.7 函数的定义与调用
13.8 转换为虚拟机器语言
13.9 通过虚拟机执行
第 14 天 为 Stone 语言添加静态类型支持以优化性能
14.1 指定变量类型
14.2 通过数据类型检查发现错误
14.3 运行程序时执行类型检查
14.4 对类型省略的变量进行类型推论
14.5 Java 二进制代码转换
14.6 综合所有修改再次运行程序
第 3 部分 解说篇(自习时间)
第 15 天 手工设计词法分析器
15.1 修改自动机
15.2 自动机程序
15.3 正则表达式的极限
第 16 天 语法分析方式
16.1 正则表达式与 BNF
16.2 语法分析算法
16.3 LL 语法分析
16.4 算符优先分析法与自底向上语法分析
第 17 天 Parser 库的内部结构
17.1 组合子分析
17.2 解析器组合子的内部
第 18 天 GluonJ 的使用方法
18.1 设定类路径
18.2 启动设定
18.3 GluonJ 语言
18.4 功能总结
第 19 天 抽象语法树与设计模式
18.1 理想的设计
19.2 Interpreter 模式
19.3 Visitor 模式
19.4 使用反射
19.5 面向切面语言
本书是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。本书适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
希望发布您的读后感或评论?请先登录那熊账号