《编译原理简明教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:郭伟主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302236795
  • 页数:321 页
图书介绍:本书主要介绍了语言基础知识、词法分析、语法分析、中间代码生成、运行时的存储空间组织、代码优化、目标代码生成等。

第1章 引论 1

1.1什么叫编译程序 1

1.2编译过程概述 2

1.3.编译过程的结构 7

1.3.1编译程序总框 7

1.3.2表格与表格管理 7

1.3.3出错处理 8

1.3.4遍 8

1.3.5编译前端与后端 9

1.4解释程序和程序设计语言范型 9

1.4.1解释程序 9

1.4.2程序设计语言范型 11

1.5编译程序的生成 12

习题1 14

第2章 编译基础 15

2.1文法的直观概念 15

2.2符号和符号串 16

2.3文法和语言的形式定义 17

2.4文法的类型 20

2.5语法分析树与二义性 21

2.6句型的分析 25

2.6.1自上而下分析方法 25

2.6.2自下而上分析方法 26

2.6.3句型分析的有关问题 26

习题2 27

第3章 词法分析 29

3.1单词的描述工具 29

3.1.1正规文法 29

3.1.2正规式 30

3.1.3正规文法和正规式的等价性 31

3.2有限自动机 32

3.2.1确定的有限自动机(DFA) 33

3.2.2非确定的有限自动机(NFA) 34

3.2.3正规文法与有限自动机的等价性 37

3.2.4正规式与有限自动机的等价性 39

3.2.5确定有限自动机的化简 41

3.3词法分析器的要求 43

3.3.1词法分析器的功能和输出形式 43

3.3.2词法分析工作分离的考虑 44

3.4词法分析器的设计 45

3.4.1输入、预处理 45

3.4.2单词符号的识别——超前搜索 45

3.4.3状态转换图 47

3.4.4状态转换图的实现 49

3.5词法分析器的自动产生 52

3.5.1语言LEX的一般描述 52

3.5.2超前搜索 54

3.5.3 LEX的实现 55

习题3 57

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

4.1语法分析器的功能 59

4.2下推自动机模型 59

4.3自上而下分析面临的问题 62

4.4 LL(1)分析法 64

4.4.1左递归的消除 64

4.4.2消除回溯、提取左因子 66

4.4.3 LL(1)分析条件 67

4.5递归下降分析程序的构造 69

4.6预测分析程序 71

4.6.1预测分析程序工作过程 71

4.6.2预测分析表的构造 72

4.7 LL(1)分析中的错误处理 74

习题4 76

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

5.1自下而上分析的基本问题 78

5.1.1归约 78

5.1.2规范归约简述 79

5.1.3符号栈的使用与语法树的表示 81

5.2算符优先分析 83

5.2.1算符优先分析技术的改进 84

5.2.2算符优先文法及优先表构造 85

5.2.3算符优先分析算法 89

5.2.4算符优先分析中的出错处理 91

5.3 LR分析法 93

5.3.1 LR分析器 93

5.3.2 LR(0)项目集族和LR(0)分析表的构造 98

5.3.3 SLR分析表的构造 105

5.3.4规范LR分析表的构造 108

5.3.5 LALR分析表的构造 111

5.3.6二义文法的应用 114

5.3.7 LR分析中的出错处理 117

5.4语法分析器的自动产生工具YACC 120

习题5 124

第6章 语法制导翻译和中间代码生成 126

6.1概述 126

6.2属性文法 128

6.3语法制导翻译 131

6.3.1依赖图 133

6.3.2 S-属性文法的自下而上计算 135

6.3.3 L-属性文法和自上而下翻译 138

6.3.4 L-属性文法在自下而上分析中的实现 141

6.3.5 YACC使用语法制导翻译方法 143

6.4语义分析 144

6.5中间代码形式 144

6.5.1逆波兰记号 144

6.5.2三地址代码 145

6.5.3树形表示形式 148

6.6说明语句 148

6.6.1过程中的说明语句 149

6.6.2保留作用域信息 149

6.6.3记录中的域名 152

6.7赋值语句的翻译 153

6.7.1简单算术表达式及赋值语句 153

6.7.2数组元素的引用 154

6.7.3记录中域的引用 159

6.8布尔表达式的翻译方法 159

6.8.1布尔表达式的翻译方法 160

6.8.2控制语句中布尔表达式的翻译 161

6.9控制结构的翻译 165

6.9.1条件转移 165

6.9.2开关语句 167

6.9.3 for循环语句 169

6.9.4出口语句 171

6.9.5 goto语句 171

6.10过程调用的处理 173

习题6 174

第7章 运行时的存储空间组织 177

7.1数据空间的三种不同使用方法和管理方法 177

7.1.1静态存储分配 178

7.1.2动态存储分配 179

7.1.3栈式动态存储分配 179

7.1.4堆式动态存储分配 179

7.2栈式存储分配的实现 179

7.2.1简单的栈式存储分配的实现 180

7.2.2嵌套过程语言的栈式实现 181

7.2.3分程序结构的存储管理 185

7.3参数传递 189

7.3.1传值 189

7.3.2传地址 191

7.3.3过程参数 191

7.4过程调用、过程进入和过程返回 192

习题7 193

第8章 优化 196

8.1概述 196

8.2局部优化 201

8.2.1基本块及流图 201

8.2.2基本块的DAG表示及其应用 203

8.3循环优化 209

8.3.1代码外提 209

8.3.2强度削弱 213

8.3.3删除归纳变量 214

习题8 216

第9章 目标代码生成 219

9.1基本问题 219

9.2目标机器模型 221

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

9.3.1待用信息 224

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

9.3.3代码生成算法 225

9.4寄存器分配 228

9.5 DAG的目标代码 231

9.6窥孔优化 234

习题9 236

第10章 面向对象语言的编译 238

10.1面向对象语言的基本概念 238

10.1.1对象 238

10.1.2对象类 239

10.1.3继承性 239

10.1.4信息封装 241

10.2方法的编译 242

10.3编译继承性的方案 243

10.3.1简单继承性的编译方案 244

10.3.2多继承性的编译方案 246

习题解析部分 251

习题1解析 251

习题2解析 253

习题3解析 256

习题4解析 269

习题5解析 276

习题6解析 288

习题7解析 296

习题8解析 305

习题9解析 315

参考文献 320