当前位置:首页 > 工业技术
编译原理及实践教程
编译原理及实践教程

编译原理及实践教程PDF电子书下载

工业技术

  • 电子书积分:10 积分如何计算积分?
  • 作 者:黄贤英,王柯柯编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:7302164223
  • 页数:210 页
图书介绍:本书介绍编译原理的基础知识,开发过程,方法和技术及实践。
《编译原理及实践教程》目录

第1章 概述 1

1.1 程序设计语言与翻译程序 1

1.2 编译过程和编译程序的结构 3

1.2.1 编译过程概述 3

1.2.2 编译程序的结构 7

1.2.3 编译阶段的组合 8

1.3 编译程序的构造 9

1.3.1 编译程序的构造与生成 9

1.3.2 Sample语言编译程序的设计 10

1.4 编译程序的发展及应用 11

1.4.1 编译程序的发展 11

1.4.2 为什么要学习编译原理及其构造技术 11

1.4.3 编译技术的应用 12

1.5 小结 13

1.6 习题 13

第2章 形式语言基本知识 14

2.1 符号和符号串 14

2.2 上下文无关文法及其语言 15

2.2.1 上下文无关文法 15

2.2.2 推导、句型和语言 17

2.3 语法树和文法的二义性 19

2.3.1 语法分析树 19

2.3.2 文法的二义性 20

2.4 文法的分类 21

2.5 类Pascal语言Sample的简单介绍 22

2.5.1 Sample语言字符集的定义 22

2.5.2 Sample语言单词的定义 23

2.5.3 Sample语言数据类型的定义 23

2.5.4 Sample语言表达式的定义 24

2.5.5 Sample语言语句的定义 24

2.5.6 Sample语言程序的定义 25

2.5.7 符合Sample语言定义的源程序举例 25

2.6 小结 26

2.7 习题 26

第3章 词法分析 28

3.1 词法分析的任务和功能 28

3.1.1 词法分析的功能 28

3.1.2 单词的类型和类别码 29

3.2 词法分析器的设计 31

3.2.1 词法分析器的接口 31

3.2.2 词法分析程序的总体设计 31

3.2.3 词法分析程序的详细设计 33

3.2.4 单词的识别和状态转换图 33

3.2.5 符号表及其操作 36

3.2.6 词法分析阶段的错误处理 37

3.3 正规文法、正规式与有穷自动机 38

3.3.1 正规文法 38

3.3.2 正规式 39

3.3.3 有穷自动机 40

3.3.4 正规文法与有穷自动机的等价性 47

3.3.5 正规式与有穷自动机的等价性 48

3.4 词法分析器的自动产生 50

3.4.1 Lex的概述 51

3.4.2 Lex源文件的格式 51

3.4.3 Lex源文件中正规式的约定 52

3.4.4 Lex源文件的翻译规则 54

3.4.5 Lex源程序设计举例 54

3.4.6 Lex使用中的一些注意事项 58

3.4.7 使用Lex自动生成Sample语言的词法分析器 59

3.5 小结 60

3.6 习题 60

第4章 语法分析 64

4.1 语法分析概述 64

4.2 自上而下分析面临的问题及其解决方法 65

4.2.1 确定的自上而下分析面临的两个问题 65

4.2.2 左递归的消除 67

4.2.3 回溯的消除 68

4.2.4 LL(1)文法 69

4.3 确定的自上而下的分析方法 73

4.3.1 递归下降分析法 73

4.3.2 预测分析法 77

4.4 Sample语言自上而下语法分析程序的设计 82

4.5 自下而上语法分析的思想 84

4.5.1 “移进-归约”分析方法 84

4.5.2 规范归约与句柄 86

4.6 算符优先分析 88

4.6.1 算符优先文法 88

4.6.2 算符优先表的构造 89

4.6.3 算符优先分析方法 93

4.6.4 算符优先函数 95

4.7 LR分析法 97

4.7.1 LR分析概述 97

4.7.2 LR(0)分析 100

4.7.3 SLR(1)分析 108

4.7.4 LR(1)分析 111

4.7.5 LALR(1)分析 115

4.7.6 二义文法在LR分析中的应用 117

4.8 语法分析器的自动生成工具Yacc 119

4.8.1 Yacc概述 119

4.8.2 Yacc源文件的格式 120

4.8.3 Yacc的翻译规则 122

4.8.4 Yacc的辅助程序 123

4.9 语法分析程序中的错误处理 124

4.9.1 语法分析中的错误处理的一般原则 124

4.9.2 自上而下语法分析的错误处理 125

4.9.3 自下而上语法分析的错误处理 127

4.10 小结 131

4.11 习题 132

第5章 语义分析和中间代码生成 136

5.1 静态语义检查 137

5.2 中间代码的形式 137

5.2.1 逆波兰式 137

5.2.2 三地址代码 138

5.3 属性文法和语法制导的翻译 140

5.3.1 属性文法 140

5.3.2 综合属性 141

5.3.3 继承属性 142

5.3.4 语法制导的翻译方法 143

5.4 常见语句的语法制导的翻译 144

5.4.1 常量说明语句的翻译 145

5.4.2 变量说明语句的翻译 146

5.4.3 简单算术表达式和赋值语句的翻译 147

5.4.4 布尔表达式的翻译 149

5.4.5 IF语句的翻译 155

5.4.6 REPEAT语句的翻译 157

5.4.7 FOR语句的翻译 158

5.5 Sample语言语法制导的翻译程序的设计 160

5.6 小结 161

5.7 习题 162

第6章 运行时存储空间的组织 164

6.1 源程序及其目标程序执行时的活动 164

6.1.1 源程序中的过程 164

6.1.2 过程执行时的活动 165

6.1.3 名字的作用域 166

6.1.4 参数的传递 166

6.1.5 名字的绑定 167

6.2 程序执行时的存储器组织 168

6.2.1 程序执行时存储器的划分 168

6.2.2 局部数据区的内容 169

6.2.3 存储分配策略 170

6.3 静态存储分配 171

6.3.1 静态存储分配的性质 171

6.3.2 静态存储分配的实现 172

6.3.3 临时变量的地址分配 173

6.4 栈式存储分配 173

6.5 堆式存储分配 175

6.6 小结 176

6.7 习题 176

第7章 代码优化 178

7.1 概述 178

7.1.1 代码优化器的结构及所处的地位 178

7.1.2 优化的原则 179

7.1.3 优化的主要种类 180

7.1.4 基本块的概念及流图 180

7.2 局部优化 182

7.2.1 删除公共子表达式 182

7.2.2 复写传播 182

7.2.3 删除无用代码 183

7.2.4 对程序进行代数恒等变换 184

7.2.5 利用基本块的DAG进行优化 185

7.3 循环优化 188

7.3.1 循环的定义 188

7.3.2 代码外提 189

7.3.3 强度削弱 190

7.3.4 删除归纳变量 191

7.4 小结 192

7.5 习题 192

第8章 目标代码生成 194

8.1 概述 194

8.2 目标机器 196

8.3 简单的代码生成算法 197

8.3.1 中间代码的简单翻译方法 198

8.3.2 引用信息和活跃信息 199

8.3.3 寄存器描述和地址描述 201

8.3.4 基本块的代码生成算法 202

8.4 从DAG生成目标代码 204

8.5 Sample语言代码优化及目标代码生成器的设计 207

8.6 小结 209

8.7 习题 209

参考文献 210

相关图书
作者其它书籍
返回顶部