编译原理及编译程序构造 本书目录
目录
第一章 引 言
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源程序的输入与词法分析程序的输出
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.3NFA的确定化
3.6.4正则表达式与有穷自动机的等价性
3.7词法分析程序的自动生成器
3.7.1LEX源程序(LEX的输入文件)
3.7.2LEX的实现
练 习
第四章 语法分析
4.1自顶向下分析方法
4.1.1带回溯的自顶向下分析算法
4.1.2存在的问题及解决办法
4.2递归下降分析(递归子程序法)
练 习
4.3LL(1)分析方法
4.3.1LL(1)分析器的逻辑结构及工作过程
4.3.2LL(1)分析表的构造方法
练 习
4.4自底向上分析方法
4.5算符优先分析法
4.5.1方法概述
4.5.2直观算符优先分析法
4.5.3算符优先分析法的进一步讨论
练 习
4.6LR分析方法
4.6.1概念和术语
练 习
4.6.2LR(0)分析器
练 习
4.6.3SLR(1)分析器
练 习
4.6.4规范LR(1)分析器
练 习
4.6.5LALR(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.2S-属性文法
练 习
第六章 符号表管理技术
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.3Display区
7.2.4运行时的地址计算
7.2.5递归过程的处理
练 习
7.3堆式存贮分配
7.3.1隐式存贮请求
7.3.2显示存贮请求
7.3.3堆式存贮管理技术
第八章 源程序的中间形式
8.1波兰表示
8.2N-元表示
8.2抽象语法树
8.4抽象机代码
8.4.1可移植性和抽象机
8.4.2PASCAL的P-c0de抽象机
练 习
第九章 错误处理
9.1概述
9.2错误的分类
9.3错误的诊察与报告
9.4错误处理技术
9.4.1错误改正
9.4.2错误局部化处理
9.5遏止重复的错误信息
第十章 语义分析和代码生成
10.1语义分析的概念
10.2栈式抽象机及其汇编指令
10.3声明的处理
10.3.1常量类型
10.3.2简单变量
10.3.3数组变量
10.3.4记录变量
10.3.5过程声明
10.4表达式
10.5赋值语句
10.6控制语句
10.6.1if语句
10.6.2分情形语句
10.6.3repeat-while语句
10.6.4for循环语句
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.1PDP—11
12.3.2VAX-11
练 习
第十三章 编译程序生成方法和工具
13.1编译程序的书写语言
13.2自展
13.3移植
13.4编译程序—编译程序
13.4.1YACC:一个LALR(1)分析器生成器
13.4.2属性LL(1)分析器生成器
13.4.3代码生成器的生成系统
第十四章 PL/0简单编译系统
14.1PL/0语言
14.2PL/0编译系统结构
14.3PL/0的词法分析
14.4PL/0的语法分析
14.5出错处理
14.6目标代码的生成和解释执行
14.7PL/0程序编译和运行举例
第十五章 Pascal-S编译系统
15.1Pascal-S语言
15.2Pascal-S编译程序的结构
15.3Pascal-S编译程序
15.3.1表格
15.3.2编译初启
15.3.3实用程序
15.3.4词法分析及处理
15.3.5语法分析处理
15.3.6出错处理
15.4Pascal-S解释执行程序
15.4.1P代码指令系统
15.4.2运行栈
15.4.3运行时的display
15.4.4运行出错处理和现场剖析打印
15.5编译及运行的例子
参考资料
附录A PL/0编译系统源程序清单
附录B Pascal—S编译系统源程序清单
返回顶部