编译原理 / 国家精品课程主讲教材
作者: 何炎祥
出版时间:2004-07-30
出版社:高等教育出版社
- 高等教育出版社
- 9787040153910
- 1版
- 27021
- 44259675-5
- 平装
- 异16开
- 2004-07-30
- 400
- 308
- 工学
- 软件工程
- 计算机科学与技术
- 本科
本书主要介绍设计和构造编译程序的基本原理和方法。内容包括形式语言理论和自动机理论、常用的词法分析方法、各种经典的语法分析方法、语法制导翻译方法、存储器的组织与管理方法、符号表的组织与造查表方法、代码优化和代码生成方法、并行编译程序及编译自动化技术等。
本书注重理论与实践、原理与方法的互通,基本概念阐述清晰,讲授深入浅出,循序渐进,系统性强。各章之后还附有难度不一的习题供复习、思考和探索之用。本书既可作为高等院校计算机专业的教材,也可供相关专业师生和科技工作者及软件研发人员学习和参考。
前辅文
第1章 引论
1. 1 翻译程序
1. 1. 1 程序设计语言
1. 1. 2 翻译程序
1. 2 为什么需要编译程序
1. 3 编译程序的工作过程
1. 3. 1 分析
1. 3. 2 综合
1. 4 编译程序的结构
1. 5 编译程序的组织方式
1. 6 编译程序的其他有关技术
1. 6. 1 编译程序的自展技术
1. 6. 2 编译程序的移植技术
1. 6. 3 编译程序自动化
1. 6. 4 程序的可再入性
1. 7 翻译程序编写系统
1. 8 并行编译程序
1. 9 小结
习题一
第2章 形式语言概论
2. 1 语言成分
2. 2 产生式文法和语言
2. 2. 1 产生式文法
2. 2. 2 上下文无关文法
2. 2. 3 上下文无关文法定义的语言
2. 3 文法的分类
2. 3. 1 文法分类
2. 3. 2 文法分类的意义
2. 3. 3 文法举例
2. 4 语言和语法
2. 4. 1 句型、句子和语言
2. 4. 2 语法树
2. 4. 3 语法树的生成过程
2. 5 文法和语言的一些特性
2. 5. 1 无用非终结符号
2. 5. 2 不可达文法符号
2. 5. 3 可空非终结符
2. 5. 4 最左、最右推导和规范推导
2. 5. 5 二义性
2. 6 分析方法简介
2. 6. 1 自上而下分析方法
2. 6. 2 确定的自上而下分析方法
2. 6. 3 自下而上分析方法
2. 6. 4 文法在内存中的表示
2. 7 小结
习题二
第3章 有穷自动机
3. 1 概述
3. 2 有穷自动机的形式定义
3. 2. 1 状态转换表
3. 2. 2 状态转换图
3. 2. 3 构形和移动
3. 2. 4 自动机的等价性
3. 2. 5 非确定有穷自动机
3. 3 NDFSA 到DFSA 的转换
3. 3. 1 空移环路的寻找和消除
3. 3. 2 消除空移
3. 3. 3 利用状态转换表消除空移
3. 3. 4 确定化———子集法
3. 3. 5 确定化———造表法
3. 3. 6 消除不可达状态
3. 3. 7 确定的有穷自动机的化简
3. 3. 8 从化简后的DFSA 到程序表示
3. 3. 9 小结
3. 4 正规文法和有穷自动机
3. 4. 1 从正规文法到FSA
3. 4. 2 从FSA 到正规文法
3. 5 正规表达式与FSA
3. 5. 1 正规表达式的定义
3. 5. 2 正规表达式的CFG
3. 5. 3 正规表达式与FSA 的对应性
3. 5. 4 正规表达式到NDFSA 的转换
3. 5. 5 NDFSA M 到正规表达式的转换
3. 5. 6 从正规文法到正规表达式
3. 6 DFSA 在计算机中的表示
3. 6. 1 矩阵表示法
3. 6. 2 表结构
3. 6. 3 程序表示法
3. 7 小结
习题三
第4章 词法分析
4. 1 词法分析概述
4. 2 单词符号
4. 3 扫描程序的设计
4. 4 标识符的处理
4. 4. 1 类型的机内表示
4. 4. 2 标识符的语义表示
4. 4. 3 符号表(标识符表)
4. 4. 4 标识符处理的基本思想
4. 5 设计词法分析程序的直接方法
4. 6 与设计扫描程序相关的几个问题
4. 7 小结
习题四
第5章 自上而下语法分析
5. 1 非确定的下推自动机
5. 1. 1 PDA 的形式定义
5. 1. 2 PDA 的构形和移动
5. 1. 3 上下文无关语言与PDA
5. 2 消除左递归方法
5. 2. 1 文法的左递归性
5. 2. 2 用扩展的BNF 表示法消除左递归
5. 2. 3 直接改写法
5. 2. 4 消除所有左递归的算法
5. 3 LL(k)文法
5. 3. 1 LL(1)文法的判断条件
5. 3. 2 集合FIRST、FOLLOW 和SELECT 的构造
5. 4 确定的LL(1)分析器的构造
5. 4. 1 构造分析表M 的算法
5. 4. 2 LL(1)分析器的总控算法
5. 5 LL(k)文法的几个结论
5. 6 递归下降分析程序及其设计
5. 6. 1 框图设计
5. 6. 2 程序设计
5. 7 带回溯的自上而下分析法
5. 7. 1 文法在内存中的存放形式
5. 7. 2 其他信息的存放
5. 7. 3 带回溯的自上而下分析算法
5. 8 小结
习题五
第6章 自下而上分析和优先分析方法
6. 1 短语和句柄
6. 2 移进-归约方法
6. 3 非确定的自下而上分析器
6. 4 有关文法的一些关系
6. 4. 1 关系
6. 4. 2 布尔矩阵和关系
6. 4. 3 Warshall 算法
6. 4. 4 关系FIRST 和LAST
6. 5 简单优先分析方法
6. 5. 1 优先关系
6. 5. 2 简单优先关系的形式化构造方法
6. 5. 3 简单优先文法及其分析算法
6. 5. 4 简单优先分析方法的局限性
6. 6 算符优先分析方法
6. 6. 1 算符优先文法
6. 6. 2 OPG 优先关系的构造
6. 6. 3 素短语及句型的分析
6. 6. 4 算符优先分析算法
6. 7 优先函数及其构造
6. 7. 1 Bell 方法
6. 7. 2 Floyd 方法
6. 7. 3 两种方法的比较
6. 8 两种优先分析方法的比较
6. 9 小结
习题六
第7章 自下而上的LR(k)分析方法
7. 1 LR(k)文法和LR(k)分析器
7. 2 LR(0)分析表的构造
7. 2. 1 规范句型的活前缀
7. 2. 2 LR(0)项目
7. 2. 3 文法G 的拓广文法
7. 2. 4 CLOSURE(I)函数
7. 2. 5 goto(I,X)函数
7. 2. 6 LR(0)项目集规范族
7. 2. 7 有效项目
7. 2. 8 举例
7. 2. 9 LR(0)文法
7. 2. 10 构造LR(0)分析表的算法
7. 2. 11 构造LR(0)分析表步骤小结
7. 3 SLR 分析表的构造
7. 4 规范LR(1)分析表的构造
7. 5 LALR 分析表的构造
7. 6 无二义性规则的使用
7. 7 小结
7. 7. 1 LR 分析程序
7. 7. 2 LR 分析表的自动构造
7. 7. 3 文法间的关系
7. 7. 4 LR 文法举例
7. 7. 5 有关LR 文法的几个结论
习题七
第8章 语法制导翻译法
8. 1 一般原理和树变换
8. 1. 1 一般原理
8. 1. 2 树变换
8. 2 简单SDTS 和自上而下翻译器
8. 3 简单后缀SDTS 和自下而上翻译器
8. 3. 1 后缀翻译
8. 3. 2 IFTHENELSE 控制语句
8. 3. 3 函数调用
8. 4 抽象语法树的构造
8. 4. 1 自下而上构造AST
8. 4. 2 AST 的拓广
8. 5 属性文法
8. 5. 1 L 属性文法
8. 5. 2 S 属性文法
8. 6 中间代码形式
8. 6. 1 逆波兰表示法
8. 6. 2 逆波兰表示法的推广
8. 6. 3 四元式
8. 6. 4 三元式
8. 7 属性翻译文法的应用
8. 7. 1 综合属性与自下而上定值
8. 7. 2 继承属性和自上而下定值
8. 7. 3 布尔表达式到四元式的翻译
8. 7. 4 条件语句的翻译
8. 7. 5 迭代语句的翻译
8. 8 小结
习题八
第9章 运行时的存储组织与管理
9. 1 数据区和属性字
9. 2 基本数据类型的存储分配
9. 3 数组的存储分配
9. 3. 1 单块存储方式
9. 3. 2 信息向量与数组分配程序
9. 3. 3 多块存储方式
9. 4 记录结构的存储分配
9. 5 参数传递方式及其实现
9. 5. 1 换名
9. 5. 2 传值
9. 5. 3 传地址
9. 5. 4 传结果
9. 5. 5 数组名用做实参
9. 5. 6 过程名用做实参
9. 6 栈式存储分配方法
9. 6. 1 概述
9. 6. 2 现行DISPLAY 和现行数据区
9. 6. 3 标识符的作用域
9. 6. 4 分程序的入口和出口工作
9. 6. 5 过程调用时的存储管理
9. 7 堆式存储分配方法
9. 8 临时工作单元的存储分配
9. 9 小结
习题九
第10章 符号表的组织和查找
10. 1 符号表的一般组织形式
10. 2 符号表中的数据
10. 3 符号表的构造与查找
10. 3. 1 线性查找
10. 3. 2 折半法
10. 3. 3 杂凑技术
10. 4 分程序结构的符号表
10. 5 小结
习题十
第11章 优化
11. 1 基本块及其求法
11. 2 优化举例
11. 3 利用变量的定义点进行优化
11. 3. 1 变量的定义点
11. 3. 2 循环中不变式的外提
11. 3. 3 运算强度削弱
11. 3. 4 公共表达式的消除
11. 3. 5 常量合并
11. 4 循环优化
11. 5 借助DAG 进行优化
11. 6 并行分支的优化
11. 7 窥孔优化
11. 8 小结
习题十一
第12章 代码生成
12. 1 假想的计算机模型
12. 2 从四元式生成代码
12. 3 从三元式生成代码
12. 4 从树形表示生成代码
12. 5 从逆波兰表示生成代码
12. 6 寄存器的分配
12. 7 小结
习题十二
参考文献