编委会
总序
前言
第1章 引论
1.1 程序设计语言
1.1.1 概述
1.1.2 程序设计语言的语法、语义与语有
1.2 源程序的执行途径
1.3 编译程序的结构
1.3.1 编译程序的构造
1.3.2 趟的概念
1.3.3 编译程序的分类
习题
第2章 形式语言初步
2.1 文法和语言
2.1.1 符号与符号串
2.1.2 文法和语言
2.1.3 文法的分类
2.1.4 语法树和二义性
2.1.5 句型分析
2.1.6 文法的使用限制
2.1.7 正则表达式和正则文法
2.2 自动机
2.2.1 状态转换图
2.2.2 确定有限自动机(DFA)
2.2.3 不确定有限自动机(NFA)
2.2.4 NFA确定化为DFA
2.2.5 DFA的化简
2.2.6 正则式和有限自动机的等价性
2.2.7 正则文法和有限自动机间的转换
习题
第3章 词法分析
3.1 词法分析器
3.1.1 功能
3.1.2 单词的分类与描述
3.1.3 实现形式
3.2 词法分析器的设计
3.3 词法分析器的自动构造工具
习题
第4章 自上而下语法分析
4.1 自上而下语法分析的基本思想
4.2 LL(1)文法
4.3 将某些非 LL(1)文法转换为 LL(1)文法
4.3.1 左递归的消除
4.3.2 提取公共左因子
4.4 递归下降分析法
4.5 LL(1)分析器
4.5.1 LL(1)分析器的逻辑结构和实现过程
4.5.2 预测分析表的构造
习题
第5章 自下而上语法分析
5.1 自下而上语法分析 方法的基本思想
5.1.1 自下而上优先分析法
5.1.2 简单优先分析法
5.1.3 算符优先分析法简介
5.2 算符优先文法
5.3 算符优先关系表的构造
5.4 算符优先分析算法
5.5 优先函数
5.6 算符优先分析的局限性
习题
第6章 LR语示分析
6.1 LR分析概述
6.2 LR(0)分析
6.2.1 活前缀
6.2.2 识别活前缀的有限自动机
6.2.3 LR(0)项目集规范族的构造
6.2.4 LR(0)分析表的构造
6.3 SLR(1)分析
6.4 LR(1)分析
6.5 LALR(1)分析
6.6 二义文法的应用
习题
第7章 语义分析与中间代码产生
7.1 语法制异翻译
7.1.1 语法制导定义
7.1.2 综合属性
7.1.3 继承属性
7.1.4 依赖图
7.1.5 S属性的定义与自下而上计算
7.1.6 L属性的定义与翻译方案
7.2 中间语言
7.2.1 逆波兰表示
7.2.2 三元式
7.2.3 语法树
7.2.4 四元式
7.3 简单赋值语句的翻译
7.4 布尔表达式的翻译
7.4.1 布尔表达式的翻译
7.4.2 控制语句中布尔表达式的翻译
7.5 控制语句的翻译
7.5.1 goto语句的翻译
7.5.2 条件语句的翻译
7.5.3 case语句的翻译
7.5.4 for循环语句的翻译
7.6 说明语句的翻译
7.7 数组说明和数组元素引用的翻译
7.8 过程说明和过程调用的翻译
习题
第8章 运行时的存储组织与分配
8.1 存储组织
8.1.1 运行时内存的划分
8.1.2 活动记录
8.2 运行时的分配策略
8.2.1 静态存储分配
8.2.2 栈式存储分配
8.2.3 堆式存储分配
习题
第9章 代码优化
9.1 代码优化概述
9.1.1 优化的概念
9.1.2 代码优化的分类
9.1.3 代码优化程序的结构
9.2 基本块与流图
9.3 基本块的优化
9.3.1 基本块DAG的构造
9.3.2 基本块DAG的应用
9.4 循环优化
9.4.1 循环优化的种类
9.4.2 循环优化的实现
9.5 窥孔优化
9.5.1 冗余指令序列
9.5.2 控制流优化
9.5.3 代码化简
9.5.4 特殊指令的使用
9.6 习题
第10章 代码生成
10.1 目标代码的形式
10.2 寄存器与临时单元 的管理
10.3 一种代码生成程序的雏形
10.4 代码生成器的自动化技术
10.5 习题
第11章 编译原理的发展和实现技术
11.1 面向对象语言的编译
11.1.1 面向对象语言的概念
11.1.2 方法的编译
11.1.3 编译继承性的方案
11.2 其他的编译程序实现技术
11.2.1 编译程序的语言表示
11.2.2 编译程序的自展技术
11.2.3 编译程序的移植技术
11.2.4 编译程序的构造工具
11.3 PL/0编译程序
11.3.1 PL/0语言的文法规则
11.3.2 PL/0编译程序的功能
11.3.3 PL/0编译程序的有关过程及函数
11.3.4 PL/0编译程序文本及主要参数
第12章 编译实现
部分习题答案
参考文献