当前位置:首页 > 工业技术
编译原理及编译程序构造
编译原理及编译程序构造

编译原理及编译程序构造PDF电子书下载

工业技术

  • 电子书积分:11 积分如何计算积分?
  • 作 者:秦振松编
  • 出 版 社:南京:东南大学出版社
  • 出版年份:1995
  • ISBN:7810500864
  • 页数:278 页
图书介绍:本书介绍编译理论基础及其实现方法,强调语言的形式化定义、编译技术的各种概念及实现过程的具体方法。
《编译原理及编译程序构造》目录

1 引论 1

1.1 程序设计语言与编译 1

1.2 编译程序概述 2

1.2.1 词法分析 3

1.2.2 语法分析 3

1.2.3 中间代码生成 5

1.2.4 优化 5

1.2.5 目标代码生成 6

1.2.6 表格与表格管理 6

1.2.7 出错处理 8

1.2.8 遍 8

1.3 编译程序生成 9

1.4 编译程序构造 10

2 编译基础知识 11

2.1 字母表与符号串 11

2.1.1 符号串集合的运算 11

2.1.2 字母表的闭包与正闭包 12

2.2 文法与语言的关系 12

2.2.1 文法的概念 12

2.2.2 文法与语言的形式定义 15

2.3 文法构造与文法简化 18

2.3.1 由语言构造文法的例子 18

2.3.2 文法的简化 19

2.3.3 构造无ε产生式的上下文无关文法 20

2.4 语法树与文法的二义性 21

2.4.1 语法树 21

2.4.2 文法的二义性 22

习题 24

3 词法分析 26

3.1 正规文法和有限自动机 26

3.1.1 正规文法、正规集与正规式 26

3.1.2 有限自动机 28

3.1.3 正规式与有限自动机之间的关系 33

3.1.4 正规文法与有限自动机 36

3.2 词法分析程序 38

3.2.1 预处理与超前搜索 38

3.2.2 扫描器的输出格式 39

3.2.3 扫描器的设计 41

3.3 词法分析程序的自动生成 47

3.3.1 LEX语言 47

3.3.2 LEX编译程序的构造 49

习题 51

4 自上而下语法分析 54

4.1 下推自动机 54

4.2 自上而下分析法的一般问题 55

4.2.1 消除左递归 57

4.2.2 消除回溯——预测与提左因子 59

4.3 预测分析程序与LL(1)文法 60

4.3.1 求串a的终结首符集和非终结符A的随符集 62

4.3.2 构造预测分析表 64

4.3.3 状态表 66

4.4 递归下降分析法 68

习题 74

5 优先分析法 77

5.1 简单优先分析方法 77

5.1.1 基本思想 77

5.1.2 有关文法的一些关系 78

5.1.3 优先矩阵的构造算法 82

5.1.4 简单优先分析算法 84

5.2 算符优先分析法 85

5.2.1 算符优先分析技术的引进 87

5.2.2 算符优先文法及优先表的构造 89

5.2.3 算符优先分析的若干问题 92

5.3 优先函数 96

习题 98

6 LR分析法及分析程序自动构造6.1 LR分析器 101

6.2 LR(0)项目集族和LR(0)分析表的构造 104

6.2.1 LR(0)项目集规范族的构造 106

6.2.2 LR(0)分析表的构造算法 107

6.3 SLR分析表的构造 108

6.4 规范LR分析表的构造 111

6.4.1 构造LR(1)项目集规范族的算法 112

6.4.2 构造LR(1)分析表算法 113

6.5 LALR分析表构造 114

6.5.1 基本思想 114

6.5.2 构造LALR分析表算法 116

6.6 二义文法的应用 117

6.7 分析表的自动生成 121

6.7.1 终结符和产生式的优先级 122

6.7.2 结合规则 122

6.7.3 LR分析表的安排 124

习题 125

7 语法制导翻译并产生中间代码7.1 概述 127

7.2 简单算术表达式和赋值语句的翻译 129

7.2.1 四元式 129

7.2.2 赋值语句的翻译 130

7.2.3 类型转换 132

7.3 布尔表达式的翻译 133

7.3.1 布尔表达式在逻辑演算中的翻译 133

7.3.2 控制语句中布尔式的翻译 134

7.4 控制语句的翻译 138

7.4.1 标号和转移语句 139

7.4.2 IF语句的翻译 140

7.4.3 WHILE语句的翻译 142

7.4.4 REPEAT语句的翻译 143

7.4.5 循环FOR语句的翻译 144

7.4.6 分情语句的翻译 147

7.4.7 复合语句的翻译 151

7.5 数组元素及其在赋值语句中的翻译 152

7.5.1 数组及下标变量地址的计算 152

7.5.2 数组元素引用的中间代码形式 154

7.5.3 按行存放赋值语句中数组元素的翻译 155

7.5.4 按列存放赋值语句中数组元素的翻译 158

7.6 过程调用语句 159

7.6.1 参数传递 160

7.6.2 过程调用语句的翻译 161

7.6.3 过程调用和数组元素相混淆的处理 162

7.7 说明语句的翻译 163

7.7.1 分程序结构的符号表 163

7.7.2 整型、实型说明语句的翻译 166

7.7.3 常量定义语句的翻译 167

7.7.4 数组说明语句的翻译 168

7.7.5 过程说明语句的翻译 169

7.8 输入/输出语句的翻译 169

7.9 自上而下分析制导的翻译 171

7.9.1 算术表达式的翻译 171

7.9.2 布尔表达式的翻译 173

7.9.3 简单语句的翻译 175

7.9.4 LL(1)语法制导翻译 178

7.10 属性文法与属性翻译 180

7.10.1 属性文法与L属性文法 180

7.10.2 属性翻译 182

7.11 中间代码的其它形式 184

7.11.1 后缀式表示法 184

7.11.2 三元式 187

7.11.3 间接三元式 188

7.11.4 树 189

习题 190

8 运行时数据区的管理 194

8.1 静态存储管理 194

8.1.1 数据区 194

8.1.2 公用语句处理 196

8.1.3 等价语句处理 197

8.1.4 地址分配 199

8.1.5 临时变量地址分配 201

8.2 栈式存储管理 203

8.2.1 允许过程(函数)递归调用的数据存储管理 203

8.2.2 嵌套过程语言的栈式存储管理 206

8.3 堆式存储管理 211

8.3.1 堆式存储管理技术 211

8.3.2 堆空间的释放与无用单元收集 214

习题 215

9 中间代码优化 218

9.1 优化概述 218

9.1.1 局部优化简介 218

9.1.2 循环优化简介 219

9.1.3 全局优化简介 221

9.2 局部优化 222

9.2.1 基本块 222

9.2.2 基本块的DAG表示 224

9.2.3 DAG在基本块优化中的作用 228

9.2.4 DAG构造算法讨论 230

9.3 控制流程分析和循环查找算法 232

9.3.1 程序流图与必经结点集 232

9.3.2 深度为主排序 234

9.3.3 查找循环算法 234

9.4 数据流分析 235

9.4.1 到达-定值数据流方程 235

9.4.2 引用-定值链(ud链) 238

9.4.3 活跃变量及数据流方程 238

9.5 循环优化 240

9.5.1 代码外提 240

9.5.2 强度减弱与归纳变量删除 242

习题 243

10 目标代码生成 248

10.1 模型计算机的指令系统 248

10.2 一种简单代码生成算法 249

10.2.1 活跃信息与待用信息 249

10.2.2 寄存器和变量地址描述 250

10.2.3 代码生成算法 251

10.3 循环中寄存器分配 254

10.4 DAG结点的一种启发式排序 256

习题 259

附录 EL语言编译程序 261

A EL语言文法的扩充Backus表示法 261

B EL语言编译程序构造的实践指导 262

C 扩充的EL语言文法与中间代码的解释执行程序 274

参考文献 278

返回顶部