两周自制脚本语言 PDF 文档
本书是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。
本书适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识,有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
本书是一本编译原理的入门读物。过去,大家普遍认为编译器与解释器之间存在很大的差异,因此会分别编写针对编译器与解释器的图书。不过,最近编译器与解释器之间的界限越来越模糊,我们只要稍微了解一下常见的程序设计语言,就会发现两者已不再是对立的概念。
因此,与其说本书是编译原理的入门书,不如说是语言处理器的入门读物更为恰当。语言处理器是用于执行程序设计语言的软件,它同时包含了编译器与解释器。本书看似用了大量篇幅讲解解释器的原理,其实是在讲解编译器与解释器通用的理论。第 1 章将详细介绍各章节的具体内容。
本书采用了 Java 语言来实现语言处理器。在设计语言处理器时,C 语言或 C++ 语言更为常见,加之本书没有借助 yacc 等常用的工具来生成语言处理器,因此读者也许会认为本书的实用性不足。
目录
第 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 面向切面语言
关注图灵
封底
看完了
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/gzdx3NuS4QWAR1XF.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 客户端存储技术 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论