书籍目录
封面
数字版权声明
作者简介
扉页
版权
译者序
前言
推荐序
致谢
本书的阅读方式
目录
第 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.3 定义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天 抽象语法树与设计模式
19.1 理想的设计
19.2 Interpreter模式
19.3 Visitor模式
19.4 使用反射
19.5 面向切面语言
关注图灵
封底
看完了
没有回复内容