内容简介
第一章 引言
1.1计算机的语言层次与翻译
1.2编译的阶段(phase)
1.3编译的遍(pass)
1.4 SIMPLE编译的结构设计
第二章 编译基础
2.1字母表、串和语言
2.2文法的引例
2.3文法的形式定义
2.4文法的分类
2.5正规文法和有穷自动机
2.5.1 正规集与正规文法
2.5.2有穷自动机
2.5.3正规文法与有穷自动机
2.5.4 正规文法和正规式
2.6 正规式、NFA和DFA之间的等价变换
2.6.1 从正规式构造NFA
2.6.2 NFA的确定化
2.6.3 DFA的最小化
2.7上下文无关文法与下推自动机
2.7.1 上下文无关文法
2.7.2上下文无关文法的变换
2.7.3语法树与文法的二义性
2.7.4 下推自动机
习题
第三章 程序设计语言的构造基础与定义
3.1程序设计语言的构造基础
3.1.1 对象的名字、属性与汇聚
3.1.2 数据型对象及其存贮表示
3.1.3 运行时的存贮管理
3.1.4 运算及运算的复合
3.1.5 运算的顺序控制
3.1.6参数传递
3.2程序设计语言的定义
3.2.1 程序语言的语法定义
3.2.2 程序语言的语义定义
3.3 SIMPLE语言的主要成分
习题
第四章 词法分析
4.1单词的种类与机内表示法
4.1.1 单词的分类
4.1.2单词的机内表示法
4.2扫描器的任务与设计考虑
4.3扫描器的设计
4.3.1 扫描器的界面与数据结构
4.3.2 扫描器的数据流图
4.3.3 扫描器的详细设计
4.4扫描器的其他设计技术
4.4.1 有穷自动机技术
4.4.2正规式技术
4.5某些高级语言的词法分析问题
4.6词法分析阶段的错误处理
4.7扫描器的自动生成原理
4.7.1 LEX语言的基本语句与功能
4.7.2 LEX编译器原理
习题
第五章 语法分析
5.1自顶向下分析法
5.1.1 自顶向下分析法中的问题研究
5.1.2 左递归与回溯问题
5.1.3 LL(1)文法的定义
5.1.4 LL(1)文法的判别
5.1.5 LL(1)文法的讨论
5.2递归下降法
5.3 LL(1)分析法
5.4自底向上分析法
5.4.1 自底向上分析法中的问题研究
5.4.2 句柄的定义与识别方法
5.5算符优先分析技术
5.5.1 算符优先文法
5.5.2算符优先矩阵
5.5.3算符优先分析法的实现问题
5.5.4 算符优先分析的数据流图与模块结构图
5.5.5算符优先分析技术的改进
5.6 LR分析技术
5.6.1 概述
5.6.2 LR(0)分析表的构造方法
5.6.3 SLR(1)分析表的构造方法
5.6.4 LR(1)分析表的构造方法
5.6.5 LALR分析表的构造方法
5.6.6 二义文法的LR分析法
5.6.7 LR分析器总控程序
5.7语法分析中的错误处理
5.8各种语法分析技术的比较
5.9语法分析器自动生成的原理
5.9.1 文法定义语言的功能
5.9.2其他文法类分析表的自动生成问题
习题
第六章 语法制导翻译技术
6.1语法制导翻译概述
6.2中间代码
6.3自底向上的语法制导翻译
6.3.1 自底向上翻译的特点
6.3.2说明语句的翻译
6.3.3简单赋值句的翻译
6.3.4布尔表达式的翻译
6.3.5 IF语句的翻译
6.3.6 REPEAT语句的翻译
6.3.7 FOR循环语句的翻译
6.4自顶向下的语法制导翻译
6.4.1 递归下降的语法制导翻译
6.4.2 LL(1)语法制导翻译
6.5属性文法与属性翻译
6.5.1属性文法与L_属性文法
6.5.2属性计值规则的改造与属性翻译
6.6 SIMPLE语言的语法制导翻译程序的设计
6.7某些复杂语言成分的翻译
6.7.1 分程序结构的符号表
6.7.2数组变量说明的翻译
6.7.3过程语句的翻译
6.7.4 过程调用语句和返回语句的翻译
6.7.5 复杂赋值句的翻译
6.7.6 CASE语句的翻译
6.7.7 输入输出语句的翻译
6.8 P-代码
习题
第七章 运行时的存贮分配
7.1数据区的内容
7.2静态存贮分配
7.3栈式存贮分配
7.3.1 栈式存贮管理和过程数据区格式
7.3.2运行时地址的计算
7.3.3过程调用与返回语句的目标代码
7.3.4 过程的目标代码结构和运行栈的管理
7.3.5 递归过程的调用
7.4堆式存贮分配
7.4.1 堆空间的分配管理
7.4.2堆空间的释放与敛集
习题
第八章 程序控制流与数据流分析
8.1程序控制流图与循环分析
8.1.1 基本块与程序控制流图的构造
8.1.2查找循环结构
8.2到达-定值数据流分析
8.2.1 引用与定值(ud)链
8.2.2到达-定值数据流方程
8.3活跃变量分析
8.3.1 活跃变量的教据流方程
8.3.2定值-引用(du)链及其数据流方程
8.4可用表达式分析
8.5非常忙表达式分析
8.6模块间数据流分析
第九章 代码优化
9.1局部优化
9.1.1 局部优化的种类
9.1.2适合于优化的中间代码
9.2合并已知量
9.3利用公共子表达式和消除无用赋值
9.4循环优化技术
9.4.1代码外提
9.4.2 强度削弱和变换循环变量
9.4.3循环展开和循环合并
习题
第十章 目标代码生成
10.1 目标机
10.2各类四元式的翻译方法
10.3寄存器分配与基本块代码的生成
10.3.1 引用信息与活跃信息
10.3.2寄存器的分配问题
10.3.3基本块的代码生成算法
10.4 DAG的目标代码生成
10.5 SIMPLE目标代码生成器的设计
10.6 目标代码的其他优化技术
10.6.1窥孔优化
10.6.2 区域内寄存器的分配
习题
第十一章 运行准备
11.1装配程序
11.1.1绝对装配程序
11.1.2重定位装配程序
11.2外部访问的辨认
11.3连接程序(LINKER)
11.4库管理
11.5存贮分配
习题
部分习题参考答案
参考文献