程序设计语言编译原理(第3版) / 高等学校电子信息类规划教材
作者: 陈火旺,刘春林,谭庆平,赵克佳,刘越
出版时间:2014年12月
出版社:国防工业出版社
- 国防工业出版社
- 9787118022070
- 47258
- 2014年12月
- 未分类
- 未分类
- TP314
陈火旺、刘春林、谭庆平、赵克佳、刘越编著的《程序设计语言编译原理(第3版高等学校电子信息类规划教材)》的参考学时数80学时,其主要内容包括词法分析、语法分析、属性文法与语法制导翻译、语义分析与中间代码产生、符号表与运行时存储空间组织、优化.与目标代码生成、并行编译技术。本书将编译技术的最新发展,例如属性文法、面向对象语言的编译技术、并行编译技术、编译程序自动构造工具等内容系统地融合到教材中。本书的主要例题和习题均以C、Pascal为语言背景,并在一些重要的章节中增加了必要的例题,以帮助读者理解和自学。使用本教材时应注意,在学这门课之前,学生必须预修计算引论(程序设计方法)和高级语言(PASCAL、C或C++),并且最好具有数据结构和离散数学方面的基
第一章 引论
1.1 什么叫编译程序
1.2 编译过程概述
1.3 编译程序的结构
1.3.1 编译程序总框
1.3.2 表格与表格管理
I.3.3 出错处理
1.3.4 遍
1.3.5 编译前端与后端
1.4 编译程序与程序设计环境
1.5 编译程序的生成
第二章 高级语言及其语法描述
2.1 程序语言的定义
2.1.1 语法
2.1.2 语义
2.2 高级语言的一般特性
2.2.1 高级语言的分类
2.2.2 程序结构
2.2.3 数据类型与操作
2.2.4 语句与控制结构
2.3 程序语言的语法描述
2.3.1 上下文无关文法
2.3.2 语法分析树与二义性
2.3.3 形式语言鸟瞰
练 习
第三章 词法分析
3.1 对于词法分析器的要求
3.1.1 词法分析器的功能和输出形式
3.1.2 词法分析器作为一个独立子程序
3.2 词法分析器的设计
3.2.1 输入、预处理
3.2.2 单词符号的识别:超前搜索
3.2.3 状态转换图
3.2.4 状态转换图的实现
3.3 正规表达式与有限自动机
3.3.1 正规式与正规集
3.3.2 确定有限自动机(DFA)
3.3.3 非确定有限自动机(NFA)
3.3.4 正规文法与有限自动机的等价性
3.3.5 正规式与有限自动机的等价性
3.3.6 确定有限自动机的化简
3.4 词法分析器的自动产生
3.4.1 语言LEX的一般描述
3.4.2 超前搜索
3.4.3 LEX的实现
练 习
第四章 语法分析——自上而下分析
4.1 语法分析器的功能
4.2 自上而下分析面临的问题
4.3 LL(1)分析法
4.3.1 左递归的消除
4.3.2 消除回溯、提左因子
4.3.3 LL(1)分析条件
4.4 递归下降分析程序构造
4.5 预测分析程序
4.5.1 预测分析程序工作过程
4.5.2 预测分析表的构造
4.6 LL(1)分析中的错误处理
练 习
第五章 语法分析——自下而上分析
5.1 自下而上分析基本问题
5.1.1 归约
5.1.2 规范归约简述
5.1.3 符号栈的使用与语法树的表示
5.2 算符优先分析
5.2.1 算符优先文法及优先表构造
5.2.2 算符优先分析算法
5.2.3 优先函数
5.2.4 算符优先分析中的出错处理
*5.3 LR分析法
5.3.1 LR分析器
5.3.2 LR(0)项目集族和LR(0)分析表的构造
5.3.3 SLR分析表的构造
5.3.4 规范LR分析表的构造
5.3.5 LALR分析表的构造
5.3.6 二义文法的应用
5.3.7 LR分析中的出错处理
5.4 语法分析器的自动产生工具YAcc
练 习
第六章 属性文法和语法制导翻译
6.1 属性文法
6.2 基于属性文法的处理方法
6.2.1 依赖图
6.2.2 树遍历的属性计算方法
6.2.3 一遍扫描的处理方法
6.2.4 抽象语法树
6.3 S一属性文法的自下而上计算
6.4 L一属性文法和自顶向下翻译
6.4.1 翻译模式
6.4.2 自顶向下翻译
6.4.3 递归下降翻译器的设计
6.5 自下而上计算继承属性
6.5.1 从翻译模式中去掉嵌入在产生式中间的动作一
6.5.2 分析栈中的继承属性
6.5.3 模拟继承属性的计算
6.5.4 用综合属性代替继承属性
练 习
第七章 语义分析和中间代码产生
7.1 中间语言
7.1.1 后缀式
7.1.2 图表示法
7.1.3 三地址代码
7.2 说明语句
7.2.1 过程中的说明语句
7.2.2 保留作用域信息
7.2.3 记录中的域名
7.3 赋值语句的翻译
7.3.1 简单算术表达式及赋值语句
7.3.2 数组元素的引用
7.3.3 记录中域的引用
7.4 布尔表达式的翻译
7.4.1 数值表示法
7.4.2 作为条件控制的布尔式翻译
7.5 控制语句的翻译
7.5.1 控制流语句
7.5.2 标号与got语句
7.5.3 CASE语句的翻译
7.6 过程调用的处理
7.7 类型检查
7.7.1 类型系统
7.7.2 类型检查器的规格说明
7.7.3 函数和运算符的重载
7.7.4 多态函数
练 习
第八章 符号表
8.1 符号表的组织与作用
8.1.1 符号表的作用
8.1.2 符号表的组织方式
8.2 整理与查找
8.2.1 线性表
8.2.2 对折查找与二叉树
8.2.3 杂凑技术
8.3 名字的作用范围
8.3.1 FORTRAN的符号表组织
8.3.2 Pascal的符号表组织
8.4 符号表的内容
练 习
第九章 运行时存储空间组织
9.1 目标程序运行时的活动
9.1.1 过程的活动
9.1.2 参数传递
9.2 运行时存储器的划分
9.2.1 运行时存储器的划分
9.2.2 活动记录
9.2.3 存储分配策略
9.3 静态存储分配
9.3.1 数据区
*9.3.2 公用语句的处理
*9.3.3 等价语句的处理
*9.3.4 地址分配
9.3.5 临时变量的地址分配
9.4 简单的栈式存储分配
9.4.1 C的活动记录
9.4.2 C的过程调用、过程进入、数组空间分配和过程返回
9.5 嵌套过程语言的栈式实现
9.5.1 非局部名字的访问的实现
9.5.2 参数传递的实现
9.6 堆式动态存储分配
9.6.1 堆式动态存储分配的实现
9.6.2 隐式存储回收
练 习
第十章 优化
10.1 概述
10.2 局部优化
10.2.1 基本块及流图
10.2.2 基本块的DAG表示及其应用.
10.3 循环优化
10.3.1 代码外提
10.3.2 强度削弱
10.3.3 删除归纳变量
*10.4 数据流分析
10.4.1 任意路径数据流分析
10.4.2 全路径数据流分析
10.4.3 数据流问题的分类
10.4.4 其它主要的数据流问题
10.4.5 利用数据流信息进行全局优化
练 习
第十一章 目标代码生成
11.1 基本问题
11.2 目标机器模型
11.3 一个简单的代码生成器
11.3.1 待用信息
11.3.2 寄存器描述和地址描述
11.3.3 代码生成算法
11.4 寄存器分配
11.5 DAG的目标代码
11.6 窥孔优化
练 习
第十二章 并行编译基础
12.1 并行计算机及其编译系统.
12.1.1 向量计算机
12.1.2 共享存储器多处理机
12.1.3 分布存储器大规模并行计算机
12.1.4 并行编译系统的结构
12.2 基本概念
12.2.1 向量与向量的次序
12.2.2 循环模型与索引空间
12.2.3 输入与输出集合
12.2.4 语句的执行顺序
12.3 依赖关系
12.3.1 依赖关系定义
12.3.2 语句依赖图
12.3.3 依赖距离、依赖方向与依赖层次
12.4 依赖关系问题
12.5 依赖关系测试
12.6 循环的向量化与并行化
12.7 循环变换技术
练 习
参考文献
^