第一章 引 言
1. 1 程序设计语言
1. 2 翻译程序
1. 3 编译程序模型
1. 4 编译程序的前后处理器
1. 4. 1 预处理器
1. 4. 2 汇编程序
1. 4. 3 两遍汇编
1. 4. 4 加载器和连接编辑器
1. 5 编译技术在软件工程中的应用
练 习
第二章 文法和语言的榴念和表示
2. 1 文法的非形式讨论
2. 1. 1 语法树
2. 1. 2 规则
2. 1. 3 由规则推导句子
练 习
2. 2 符号. 符号串及其集合的运算
2. 2. 1 字母表和符号串
2. 2. 2 符号串及其集合的运算
练 习
2. 3 文法和语言的形式定义
2. 3. 1 文法的形式定义
2. 3. 2 推导的形式定义
2. 3. 3 语言的形式定义
2. 3. 4 递归规则与递归文法
2. 3. 5 短语. 简单短语和句柄
练 习
2. 4 语法树和二义性
2. 4. 1 推导与语法树
2. 4. 2 文法的二义性
练 习
2. 5 符号串的分析
2. 5. 1 自顶向下分析
2. 5. 2 自底向上分析
2. 6 有关文法的实用限制
练 习
2. 7 扩充的BNF表示和语法图
2. 7. 1 扩充的BNF表示
2. 7. 2 语法图
2. 8 文法和语言分类
第三章 词法分析
3. 1 词法分析程序的功能
3. 2 源程序的输入与词法分桥程序的输Q.
3. 2. 1 源程序的输入
3. 2. 2 单词符号的种类及词法分析程序的输出形式
3. 3 正则文法及其状态图
3. 3. 1 状态图
3. 3. 2 状态图的作用
3. 4 词法分析程序的设计与实现
3. 4. 1 文法及其状态图
3. 4. 2 词法分析程序的构造
3. 4. 3 词法分析程序的实现
3. 5 正则文法和正则表达式
3. 6 有穷自动机(FA)
3. 6. 1 确定的有穷自动机(DFA)
3. 6. 2 不确定的有穷自动机(NFA)
3. 6. 3 NFA的确定化
3. 6. 4 正则表达式与有穷自动机的等价性
3. 7 词法分析程序的自动生成器
3. 7. 1 LEX源程序(LEX的输入文件)
3, 7. 2 LEX的实现
练 习
第四章 语法分析
4. 1 自顶向下分析方法
4. 1. 1 带回溯的自顶向下分桥算法
4. 1. 2 存在的问题及解决办法
4. 2 递归下降分析(递归子程序法)
练 习
4. 3 LL(1)分析方法
4. 3. 1 LL(1)分析器的逻辑结构及工作过程
4. 3. 2 LL(1)分析表的构造方法
练 习
4. 4 自底向上分析方法
4. 5 算符优先分析法
4. 5. 1 方法概述
4. 5. 2 直观算符优先分析法
4. 5. 3 算符优先分析法的进一步讨论
练 习
4. 6 LR分析方法
4. 6. 1 概念和术语
练 习
4. 6. 2 LR(0)分析器
练 习
4. 6. 3 SLR(1)分析器
练 习
4. 6. 4 规范LR(1)分析器
练 习
4. 6. 5 LALR(1)分析器
练 习
第五章 语法制导翻译技术
5. 1 翻译文法(TG)
5. 2 语法制导翻译
5. 3 属性翻译文法(ATG)
5. 3. 1 综合属性
5. 3. 2 继承属性
5. 3. 3 属性翻译文法
5. 3. 4 属性翻译文法举例——算术表达式的翻译
练 习
5. 4 自顶向下语法制导翻译
5. 4. 1 翻译文法的自顶向下处理
练 习
5. 4. 2 属性文法的自顶向下翻译
练 习
5. 5 自底向上的语法制导翻译
5. 5. 1 波兰翻译
5. 5. 2 S—属性文法
练 习
第六章 符号表管理技术
6. 1 前景和动机
6. 2 何时建立和访问符号表
6. 3 符号表内容
6. 4 在符号表上的操作
6. 5 非分程序结构语言的符号表组织
6. 5. 1 无序符号表
6. 5. 2 有序符号表
6. 5. 3 散列符号表
6. 6 分程序结构语言的符号表组织
6. 6. 1 分程序结构语言的概念
6. 6. 2 栈式符号表
6. 6. 3 散列符号表的栈式实现
练 习
第七章 运行时的存贮组织及管理
7. 1 静态存贮分配
练 习
7. 2 动态存贮分配
7. 2. 1 活动记录
7. 2. 2 参数区
7. 2. 3 Display区
7. 2. 4 运行时的地址计算
7. 2. 5 递归过程的处理
练 习
7. 3 堆式存贮分配
7. 3. 1 隐式存贮请求
7. 3. 2 显示存贮请求
7. 3. 3 堆式存贮管理技术
第八章 源程序的中间形式
8. 1 波兰表示
8. 2 N—元表示
8. 3 抽象语法树
8. 4 抽象机代码
8. 4. 1 可移植性和抽象机
8. 4. 2 PASCAL的P—code抽象机
练 习
第九章 错误处理
9. 1 概述
9. 2 错误的分类
9. 3 错误的诊察与报告
9. 4 错误处理技术
9. 4. 1 错误改正
9. 4. 2 错误局部化处理
9. 5 遏止重复的错误信息
第十章 语义分析和代码生成
l0. 1 语义分析的概念
10. 2 栈式抽象机及其汇编指令
10. 3 声明的处理
10. 3. 1 常量类型
10. 3. 2 简单变量
10. 3. 3 数组变量
lo. 3. 4 记录变量
10. 3. 5 过程声明
l0. 4 表达式
10. 5 赋值语句
10. 6 控制语句
10. 6. 1 if语句
10. 6. 2 分情形语句
10. 6. 3 repeat—while语句
lo. 6. 4 for循环语句
10. 7 过程调用和返回
10. 7. 1 参数的基本传递形式
10. 7. 2 过程调用
10. 7. 3 返回语句和过程终止
10. 8 输入和输出语句
10. 8. 1 输入语句
10. 8. 2 输出语句
10. 9 编译程序的辅助功能
练 习
第十一章 代码优化
11. 1 概述
11. 2 基本块
11. 3 常数合并
11. 4 冗余子表达式的消防
11. 5 循环内的优化
11. 5. 1 循环展开
11. 5. 2 额度削弱
11. 5. 3 强度削弱
11. 5. 4 循环优化技术的综合
练 习
第十二章 与机器有关的优化及目标代码的生成
12. 1 与机器有关的优化概述
12. 2 寄存器分配的优化
12. 2. 1 单寄存器机器中的寄存器分配
12. 2. 2 多寄存器机器中的寄存器分配
12. 3 目标机和目标代码生成
12. 3. 1 PDP—11
12. 3. 2 VAX—11
练 习
第十三章 编译程序生成方法和工具
13. 1 编译程序的书写语言
13. 2 自展
13. 3 移植
13. 4 编译程序一编译程序
13. 4. 1 YACC:一个LALR(1)分析器生成器
13. 4. 2 属性LL(1)分析器生成器
13. 4. 3 代码生成器的生成系统
第十四章 PL/O简单编译系统
14. 1 PL/O语言
14. 2 PL/O编译系统结构
14. 3 PL/0的词法分析
14. 4 PL/O的语法分析
14. 5 出错处理
14. 6 目标代码的生成和解释执行
14. 7 PL/O程序编译和运行举例
第十五章 Pascal—S编译系统
15. 1 Pascal—S语言
15. 2 Pascal—S编译程序的结构
15. 3 Pascal—S编译程序
15. 3. 1 表格
15. 3. 2 编译初启
15. 3. 3 实用程序
15. 3. 4 词法分析及处理
15. 3. 5 语法分析处理
15. 3. 6 出错处理
15. 4 Pascal—S解释执行程序
15. 4. 1 P代码指令系统
15. 4. 2 运行栈
15. 4. 3 运行时的display
15. 4. 4 运行出错处理和现场剖析打印
15. 5 编译及运行的例子
参考资料
附录A PL/O编译系统源程序清单
附录B Pascal—S编译系统源程序请单