当前位置:首页 > 工业技术
编译技术基础教程
编译技术基础教程

编译技术基础教程PDF电子书下载

工业技术

  • 电子书积分:10 积分如何计算积分?
  • 作 者:鲁斌主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302251972
  • 页数:203 页
图书介绍:本书在简要介绍编译技术所涉及的基本知识和高级语言的语法描述方法之后,按照编译程序的工作过程逐步介绍了编译各个阶段的主要内容。
《编译技术基础教程》目录

第1章 绪论 1

1.1 编译程序简介 1

1.1.1 编译概述 1

1.1.2 编译技术的重要性 3

1.1.3 编译技术的应用 3

1.2 编译程序的结构及编译过程 4

1.2.1 词法分析器 5

1.2.2 语法分析器 6

1.2.3 语义分析与中间代码生成器 6

1.2.4 代码优化器 7

1.2.5 目标代码生成器 8

1.2.6 表格管理 9

1.2.7 错误处理 9

1.2.8 常见术语 10

1.3 编译程序的构造 11

1.4 本章小结 12

1.5 习题 12

第2章 高级语言及其语法描述 13

2.1 高级语言简介 13

2.1.1 高级语言的定义 13

2.1.2 高级语言的一般特性 13

2.1.3 L语言说明 17

2.2 高级语言的语法描述 19

2.2.1 符号和符号串 19

2.2.2 上下文无关文法 20

2.2.3 语法分析树 24

2.2.4 文法的二义性 24

2.2.5 文法的分类 25

2.3 本章小结 26

2.4 习题 26

第3章 词法分析 28

3.1 词法分析器概述 28

3.1.1 词法分析器的功能 28

3.1.2 单词的类型和内部表示 29

3.2 词法分析器的设计 30

3.2.1 总体设计 30

3.2.2 详细设计 31

3.2.3 状态转换图 33

3.2.4 L语言词法分析器的设计与实现 34

3.3 正规表达式与有限自动机 36

3.3.1 正规式与正规集 36

3.3.2 确定有限自动机 37

3.3.3 不确定有限自动机 38

3.3.4 正规文法与有限自动机的等价性 41

3.3.5 正规式与有限自动机的等价性 42

3.3.6 DFA的化简 44

3.4 词法分析器的自动生成 46

3.4.1 LEX概述 46

3.4.2 LEX语言规范 46

3.4.3 使用LEX自动生成L语言的词法分析器 49

3.5 本章小结 50

3.6 习题 50

第4章 自上而下语法分析 52

4.1 概述 52

4.2 自上而下分析面临的问题 52

4.3 LL(1)分析法 53

4.3.1 左递归的消除 53

4.3.2 消除回溯、提左因子 55

4.3.3 LL(1)文法 57

4.4 递归下降分析法 58

4.4.1 基本思路 58

4.4.2 L语言设计与实现 61

4.5 预测分析法 62

4.5.1 预测分析程序的工作过程 63

4.5.2 预测分析表的构造 64

4.6 LL(1)分析中的错误处理 65

4.7 本章小结 67

4.8 习题 67

第5章 自下而上语法分析 69

5.1 概述 69

5.2 规范规约 70

5.3 算符优先分析 71

5.3.1 算符优先文法及优先表的构造 71

5.3.2 算符优先分析算法 73

5.3.3 优先函数 74

5.3.4 算符优先分析中的出错处理 76

5.4 LR分析法 77

5.4.1 LR分析概述 78

5.4.2 LR(0)分析 80

5.4.3 SLR(1)分析 87

5.4.4 LR(1)分析 90

5.4.5 LALR(1)分析 93

5.4.6 二义文法的应用 95

5.4.7 LR分析中的出错处理 97

5.5 语法分析器的自动产生工具YACC 99

5.6 本章小结 102

5.7 习题 102

第6章 语义分析与中间代码生成 105

6.1 属性文法 105

6.1.1 综合属性 107

6.1.2 继承属性 107

6.2 语法制导翻译方法 108

6.2.1 依赖图 108

6.2.2 树遍历的属性计算方法 109

6.2.3 一遍扫描的处理方法 110

6.2.4 两类特殊的属性文法 111

6.3 中间代码的形式 113

6.3.1 后缀式 113

6.3.2 图表示法 114

6.3.3 三地址代码 115

6.4 说明语句的翻译 117

6.4.1 变量说明语句的翻译 117

6.4.2 L语言变量说明语句的翻译 120

6.5 赋值语句的翻译 122

6.5.1 简单算术表达式及赋值语句的翻译 122

6.5.2 数组元素的引用 123

6.5.3 L语言赋值语句的翻译 126

6.6 布尔表达式的翻译 129

6.6.1 数值计算法 130

6.6.2 优化计算法 131

6.6.3 L语言布尔表达式的翻译 134

6.7 控制语句的翻译 137

6.7.1 典型控制语句的翻译 137

6.7.2 L语言控制语句的翻译 139

6.8 本章小结 143

6.9 习题 143

第7章 符号表与运行时存储空间组织 145

7.1 符号表的内容与组织 145

7.1.1 符号表的作用 145

7.1.2 符号表的内容 145

7.1.3 符号表的组织方式 146

7.2 符号表的整理与查找 147

7.2.1 线性表 147

7.2.2 对折查找与二叉树 148

7.2.3 杂凑法 149

7.3 目标程序运行时的活动 150

7.3.1 过程的活动 150

7.3.2 参数传递 150

7.4 运行时存储器的组织 152

7.4.1 运行时存储器的划分 152

7.4.2 活动记录 153

7.4.3 存储分配策略 153

7.5 静态存储分配 154

7.5.1 静态存储分配的性质 154

7.5.2 静态存储分配的实现 155

7.5.3 临时变量的地址分配 156

7.6 栈式存储分配 156

7.6.1 简单的栈式存储分配 156

7.6.2 嵌套过程语言的栈式存储分配 157

7.7 堆式存储分配 161

7.7.1 堆式存储分配的实现 162

7.7.2 隐式存储回收 162

7.8 本章小结 163

7.9 习题 163

第8章 优化 165

8.1 概述 165

8.1.1 优化的原则 165

8.1.2 优化的种类 165

8.1.3 基本块与流图 166

8.2 局部优化 168

8.2.1 删除公共子表达式 168

8.2.2 复写传播 173

8.2.3 删除无用代码 173

8.2.4 对程序进行代数恒等变换 176

8.2.5 利用基本块的DAG进行优化 177

8.3 循环优化 180

8.3.1 代码外提 180

8.3.2 强度削弱 182

8.3.3 删除归纳变量 182

8.4 本章小结 183

8.5 习题 183

第9章 目标代码生成 185

9.1 概述 185

9.2 目标机器模型 187

9.3 一个简单的代码生成器 188

9.3.1 待用信息与活跃信息 189

9.3.2 寄存器描述和地址描述 190

9.3.3 简单代码生成算法 191

9.4 寄存器分配 194

9.5 DAG的目标代码 197

9.6 窥孔优化 198

9.7 本章小结 200

9.8 习题 201

参考文献 203

返回顶部