编译原理简明教程

编译原理简明教程

杨明, 姜乃松, 蔡维玲, 编著

出版社:电子工业出版社

年代:2011

定价:29.0

书籍简介:

本书是省精品课程建设成果,以目前流行的C/C++编译器为例,全面讲述现代编译器的各个组成部分,包括词法分析、语法分析、语义分析与语法指导翻译、面向对象语言的语法制导翻译、符号表、运行时环境、寄存器分配、目标代码优化和数据流分析等。全书既包括编译原理的基础知识,适用于本科生学习;也包括面向对象语言的语法制导翻译、存储分配、目标代码生成等,适合于后续课程或研究生教学。书中专门为学生提供了一个基于面向对象语言mini-C++的编译器,学生可以结合该实例进行系统学习。本身为任课老师免费提供电子课件。

书籍目录:

第1章 编译概述 1

1.1 翻译程序 1

1.2 编译过程和编译程序的基本结构 2

1.3 编译程序的分类和生成方法 5

1.3.1 编译程序的分类 5

1.3.2 编译程序的生成方法 6

1.4 编译技术的应用 7

本章小结 7

习题1 7

第2章 文法与语言 8

2.1 符号串与语言 8

2.1.1 字母表 8

2.1.2 符号串 8

2.1.3 符号串的集合――语言 9

2.2 文法和语言的形式化定义 10

2.2.1 文法的形式化定义 10

2.2.2 语言的形式化定义 14

2.2.3 短语、直接短语和句柄 16

2.2.4 规范推导和规范归约 17

2.3 语法分析树与文法的二义性 18

2.3.1 语法分析树 18

2.3.2 文法的二义性 19

2.3.3 二义性的消除 20

2.4 文法的化简 22

2.5 语言的分类 23

本章小结 25

习题2 26

第3章 词法分析与有限自动机 28

3.1 词法分析器的设计 28

3.1.1 词法分析器的任务 28

3.1.2 词法分析器的输出形式 29

3.2 词法分析器的手工构造 30

3.2.1 确定的有限自动机 31

3.2.2 构造单词的确定有限自动机 32

3.2.3 编写一个C语言词法分析器 34

3.3 有限自动机及其化简 36

3.3.1 不确定有限自动机 36

3.3.2 不确定有限自动机的化简 37

3.3.3 确定有限自动机的化简 40

3.4 正规文法、正规式和有限自动机之间的关系 42

3.4.1 正规式与正规集 42

3.4.2 正规式与正规文法的关系 43

3.4.3 正规文法与有限自动机之间的转换 45

3.4.4 正规式与有限自动机之间的转换 47

3.5 词法分析程序自动生成器――Lex 49

3.5.1 Lex的功能 50

3.5.2 Lex源程序的组成 50

3.5.3 Lex编译器的实现原理 51

3.5.4 一个生成C语言词法分析器的Lex程序格式 51

本章小结 53

习题3 53

第4章 自顶向下的语法分析 55

4.1 语法分析器的功能 55

4.2 不确定的自顶向下的分析方法 56

4.3 LL(1)分析方法 57

4.3.1 回溯的判别条件与LL(1)文法 57

4.3.2 左递归文法的改造 58

4.3.3 回溯的消除 60

4.4 构造递归下降分析程序 61

4.5 非递归的预测分析方法 62

4.5.1 预测分析程序工作原理 63

4.5.2 构造预测分析表(或称LL(1)分析表) 64

4.5.3 预测分析的出错处理 66

本章小结 68

习题4 68

第5章 自底向上的语法分析 70

5.1 引言 70

5.2 自底向上的语法分析面临的问题 70

5.3 算符优先分析技术 71

5.3.1 算符优先关系的定义 71

5.3.2 算符优先关系表的生成 74

5.3.3 算符优先分析总控程序 76

5.3.4 优先函数及其生成 78

5.4 LR分析技术 81

5.4.1 LR分析技术概述 81

5.4.2 LR(0)分析法 82

5.4.3 SLR(1)分析技术 89

5.4.4 LR(1)分析技术 90

5.4.5 LALR(1)分析技术 94

5.5 二义性文法的应用 95

5.6 语法分析器自动生成器――YACC 96

5.6.1 基本原理与工作过程 96

5.6.2 C语法分析器的自动生成 102

本章小结 102

习题5 102

第6章 属性文法 104

6.1 属性文法 104

6.1.1 属性文法的定义 104

6.1.2 综合属性 106

6.1.3 继承属性 106

6.1.4 依赖图 107

6.1.5 属性文法的计算顺序 108

6.2 S-属性定义及其自底向上的计算 109

6.3 L-属性定义及其自顶向下的计算 111

6.4 自底向上计算继承属性 115

6.4.1 删除翻译方案中嵌入的动作 115

6.4.2 分析栈中的继承属性 115

6.4.3 模拟继承属性的计算 117

本章小结 119

习题6 119

第7章 语义分析与语法制导的翻译 121

7.1 语义分析的主要任务 121

7.2 中间语言 121

7.2.1 图表示 122

7.2.2 抽象语法树 122

7.2.3 三地址代码 123

7.2.4 四元式 124

7.2.5 三元式 124

7.2.6 逆波兰式表示 125

7.3 声明语句的翻译 125

7.3.1 C语言变量声明语句的翻译 125

7.3.2 C语言函数定义的翻译 126

7.3.3 C语言数组定义的翻译 131

7.4 C表达式与简单赋值语句的翻译 133

7.5 支持C数组的赋值语句的翻译 134

7.6 C语言布尔表达式的翻译 136

7.6.1 作为数值计算的布尔表达式的翻译 137

7.6.2 作为条件控制用的布尔表达式的翻译 138

7.7 C语言中if语句的翻译 140

7.8 C语言中while语句的翻译 145

7.9 C语言中switch语句的翻译 147

7.10 C语言中break语句的翻译 148

7.11 C语言continue语句的翻译 149

7.12 C语言中标号与goto语句的翻译 150

7.13 C语言函数调用语句的翻译 150

本章小结 152

习题7 152

第8章 运行时环境 153

8.1 概述 153

8.2 符号表 154

8.2.1 符号表的作用与结构 154

8.2.2 符号表的管理 154

8.2.3 C语言中的符号表 155

8.3 存储分配策略 157

8.3.1 静态存储分配策略 157

8.3.2 栈式存储分配策略 157

8.3.3 堆式存储分配策略 158

8.4 存储空间的组织 158

8.4.1 运行时内存空间的划分 158

8.4.2 函数与活动记录 158

*8.5 非局部变量的访问 159

8.6 C语言的存储分配 163

8.6.1 C语言的活动记录结构 163

8.6.2 入口指令的自动生成 165

8.6.3 出口指令的自动生成 166

8.7 垃圾回收机制 166

8.8 运行库管理 168

8.9 连接程序与装配程序 168

本章小结 169

习题8 169

第9章 目标代码生成 171

9.1 概述 171

9.2 一个面向栈的计算机模型 171

9.3 中间代码生成目标代码 173

9.3.1 逆波兰式生成目标代码 173

9.3.2 四元式生成目标代码 174

9.4 C语言目标代码生成 176

9.4.1 目标文件结构 176

9.4.2 从内部语法树生成目标代码 177

9.5 寄存器分配算法 179

本章小结 181

习题9 182

第10章 代码优化 183

10.1 基本概念 183

10.1.1 优化的定义 183

10.1.2 优化的原则 183

10.1.3 优化的分类 183

10.1.4 代码优化器的结构 184

10.2 基本块的概念及优化举例 185

10.2.1 基本块的概念 185

10.2.2 流图 185

10.2.3 优化举例 186

10.3 基本块内优化 189

10.3.1 块内优化技术 189

10.3.2 基本块的DAG 190

10.4 循环优化 195

10.4.1 循环的查找 195

10.4.2 循环优化技术 197

本章小结 201

习题10 201

第11章 并行编译技术 204

11.1 并行处理 204

11.1.1 并行体系结构 204

11.1.2 并行软件系统 205

11.1.3 并行程序设计 205

11.2 并行编译系统的功能和结构 206

11.2.1 并行编译系统的功能 206

11.2.2 并行编译系统的结构 206

11.3 向量语言编译技术 207

11.4 共享存储器并行机的并行编译技术 207

本章小结 208

习题11 208

第12章 面向对象语言的语法制导翻译 209

12.1 面向对象语言理论基础 209

12.2 mini-C++的对象布局模型的设计 210

12.3 mini-C++的函数名字转换方案的设计 211

12.4 mini-C++的try-catch语句的翻译 213

12.5 mini-C++的非静态函数的翻译 215

12.6 mini-C++的函数重载的翻译 216

12.7 mini-C++的单一继承的编译处理 217

12.8 mini-C++的多重继承的编译处理 219

12.9 mini-C++的虚基类的编译处理 221

12.10 mini-C++的单一继承下虚函数重写的翻译 223

12.11 mini-C++的多重继承下虚函数重写的翻译 224

12.12 mini-C++的运算符重载的翻译 224

12.13 mini-C++的模板的翻译 225

本章小结 225

习题12 225

附录A C语言的YACC源程序 226

参考文献 232

内容摘要:

本书是精品课程建设成果。全书分12章,内容包括:编译概述、文法和语言、词法分析与有限自动机、自顶向下的语法分析、自底向上的语法分析、属性文法、语义分析与语法制导的翻译、运行时环境、目标代码生成、代码优化、并行编译技术、面向对象语言的语法制导翻译。本教材先进、实用、简洁、通俗,可读性好,还免费提供电子教案和习题解答。

书籍规格:

书籍详细信息
书名编译原理简明教程站内查询相似图书
9787121145964
如需购买下载《编译原理简明教程》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位电子工业出版社
版次1版印次1
定价(元)29.0语种简体中文
尺寸26 × 18装帧平装
页数 260 印数

书籍信息归属:

编译原理简明教程是电子工业出版社于2011.9出版的中图分类号为 TP314 的主题关于 编译程序-高等学校-教材 的书籍。