编译原理(第3版) / 高等学校教材计算机系列教材
作者: 蒋立源,康慕宁
出版时间:2005年1月
出版社:西北工业大学出版社
- 西北工业大学出版社
- 9787561218709
- 86252
- 2005年1月
- 未分类
- 未分类
- TP314
蒋立源、康慕宁主编的《编译原理》第3版系普通高等教育“十五”国家级重点教材,旨在系统地介绍编译系统的结构、工作流程以及编译程序的设计原理和实现技术。全书共11章,内容包括语言及文法的基本知识、词法分析、语法分析、语义分析及中间代码生成、符号表组织、运行时的存储组织与分配、代码优化、目标代码生成以及面向对象语言的编译技术等。在内容的组织上,本书将编译的基本理论和具体的实现技术有机地结合起来,既准确清楚地阐述相关的概念和原理,又给出典型的实现程序;同时,对目前颇为流行且使用效果良好的分析器自动生成工具(如LEX,LLama,YACC,OCCS及GCC等)的功能和使用方法也作了详细的介绍。本书力求反映编译技术方面的最新成果。书中所列的分析算法、驱动程序及语义动作等,全部用C语言描述,各章之后附有大量的习题和上机实习题目。本书文字简洁易懂,内容循序渐进、深入浅出,便于自学。
本书可作为大学计算机类本科专业的教材,也可作为计算机软件科技人员的参考书。
第1章 绪论
1.1 编译过程概述
1.2 编译程序的逻辑结构
1.2.1 词法分析程序
1.2.2 语法分析程序
1.2.3 语义分析程序
1.2.4 中间代码生成
1.2.5 代码优化程序
1.2.6 目标代码生成程序
1.2.7 错误检查和处理程序
1.2.8 信息表管理程序
1.3 编译程序的组织
习题
第2章 前后文无关文法和语言
2.1 文法及语言的表示
2.2 文法和语言的定义
2.2.1 基本概念和术语
2.2.2 文法和语言的形式定义
2.3 句型的分析
2.3.1 规范推导和规范归约
2.3.2 语法树和二义性
2.3.3 短语和句柄
2.4 文法的化简和改造
2.4.1 无用符号和无用产生式的删除
2.4.2 ε-产生式的消除
2.4.3 单产生式的消除
2.5 文法和语言的Chomsky分类
习题
第3章 词法分析及词法分析程序
3.1 设计扫描器时应考虑的几个问题
3.1.1 词法分析阶段的必要性
3.1.2 单词符号的内部表示
3.1.3 识别标识符的若干约定和策略
3.1.4 源程序的输入及预处理
3.2 正规文法和状态转换图
3.2.1 由正规文法构造状态转换图
3.2.2 状态转换图的一种实现——状态矩阵法
3.3 有限自动机
3.3.1 确定的有限自动机
3.3.2 非确定的有限自动机
3.3.3 NFA与DFA的等价性
3.3.4 具有ε动作的FA
3.3.5 具有ε动作的NFA的确定化——子集法
3.3.6 DFA状态数的最小化
3.4 正规表达式与正规集
3.4.1 正规表达式与正规集的定义
3.4.2 由正规文法构造相应的正规式
3.4.3 由正规式构造FA——Thompson法
3.5 词法分析程序的实现
3.5.1 词法分析程序的编写
3.5.2 词法分析程序的自动生成
习题
上机实习题
第4章 语法分析和语法分析程序
4.1 自顶向下的语法分析
4.1.1 消除文法的左递归
4.1.2 回溯的消除及LL(1)文法
4.1.3 递归下降分析法
4.1.4 预测分析法
4.1.5 某些非LL(1)文法的改造
4.2 自底向上的语法分析
4.2.1 简单优先分析法
4.2.2 算符优先分析法
4.2.3 优先函数
4.2.4 LR分析法
习题
上机实习题
第5章 语法制导翻译及中间代码生成
5.1 引言
5.2 属性文法与属性翻译文法
5.2.1 语义属性与属性文法
5.2.2 属性翻译文法
5.3 常见中间语言概述
5.3.1 逆波兰表示
5.3.2 四元式和三元式
5.3.3 其它表示法
5.4 简单算术表达式和赋值语句的翻译
5.5 布尔表达式的翻译
5.6 程序流程控制语句的翻译
5.6.1 常见控制结构的翻译
5.6.2 FOR循环语句的翻译
5.6.3 语句标号及GOTO语句的翻译
5.6.4 情况语句的翻译
5.7 含数组元素的算术表达式及赋值语句的翻译
5.7.1 下标变量地址的计算
5.7.2 含有下标变量的赋值语句的翻译
5.8 过程说明和过程调用的翻译
5.8.1 过程说明的翻译
5.8.2 实参和形参间的信息传递
5.8.3 过程语句的翻译
5.8.4 关于形实结合的进一步讨论
5.9 说明语句的翻译
5.9.1 类型说明(变量及数组定义)语句的翻译
5.9.2 数据类型定义语句的翻译
5.10 语法分析程序的自动生成工具
5.10.1 LALR(1)分析器的自动生成工具——YACC和OCCS
5.10.2 LL(1)语法分析程序自动生成工具LLama简介
5.10.3 LLGen简介
5.10.4 GCC概述
习题
上机实习题
第6章 符号表
6.1 符号表的组织
6.2 分程序结构语言符号表的建立
6.3 非分程序结构语言符号表的建立
习题
第7章 运行时的存储组织与分配
7.1 存储组织
7.1.1 运行时内存的划分
7.1.2 活动记录
7.2 运行时的分配策略
7.2.1 静态分配
7.2.2 栈式分配
7.2.3 堆式分配
习题
第8章 代码优化
8.1 语法制导翻译阶段的优化
8.2 线性窥孔优化
8.2.1 强度削弱
8.2.2 常数合并和常数传播
8.2.3 无用变量与无用代码的删除
8.2.4 窥孔优化实例
8.3 基于结构信息的优化
8.3.1 基本块及其优化
8.3.2 数据流分析方法
8.3.3 循环优化
习题
上机实习题
第9章 目标代码生成
9.1 目标代码的形式
9.2 一种假想的计算机模型
9.3 一种代码生成程序的雏型
9.3.1 待用信息
9.3.2 寄存器描述符与地址描述符
9.3.3 生成目标代码的算法
9.4 DAG的代码生成
9.5 全局寄存器分配
习题
上机实习题
第10章 查错与改错
10.1 语法错误的校正
10.1.1 单词错误的校正
10.1.2 自顶向下分析中的错误校正
10.1.3 自底向上分析中的错误校正
10.2 语义错误的校正
10.2.1 遏止株连信息
10.2.2 遏止重复信息
习题
第11章 面向对象语言的编译技术
11.1 引言
11.1.1 面向对象程序设计语言
11.1.2 面向对象语言编译器的一些特点
11.2 类和对象的基本特征
11.3 类的基本定义
11.3.1 基本类声明的语法定义
11.3.2 基本类声明的抽象语法树表示
11.3.3 基本类声明的处理
11.4 OOPL中重载和继承的处理
11.4.1 面向对象程序设计语言中的重载和继承
11.4.2 文法的扩展
11.4.3 重载的处理
11.4.4 继承的处理
习题
参考文献