当前位置:首页 > 工业技术
编译原理
编译原理

编译原理PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:李冬梅,施海虎编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2006
  • ISBN:7115144656
  • 页数:317 页
图书介绍:本书介绍编译程序的构造原理和实现技术。
上一篇:当代茶经下一篇:操作系统概论
《编译原理》目录

1.1 程序的翻译 1

第1章 编译概述 1

1.2 编译程序的组成 3

1.2.1 编译过程概述 3

1.2.2 编译程序的逻辑结构 6

1.2.3 编译阶段的前端和后端 7

1.2.4 遍(pass) 8

1.3 编译程序的构造 8

1.3.1 如何构造一个编译程序 8

1.3.2 编译程序的生成方法 9

1.4.1 编译技术在软件开发中的应用 10

1.4 编译技术的应用及发展 10

1.4.2 编译技术的发展 11

1.5 小结 12

习题 12

第2章 形式语言的基本知识 13

2.1 字母表和符号串的基本概念 13

2.1.1 字母表和符号串 13

2.1.2 符号串的运算 14

2.2 文法和语言的形式定义 15

2.2.1 文法的非形式定义 15

2.2.2 文法的形式定义 17

2.2.3 推导的形式定义 18

2.2.4 语言的形式定义 19

2.2.5 递归文法 21

2.3 句型的分析 22

2.3.1 规范推导和规范归约 22

2.3.2 语法树与文法的二义性 23

2.4 文法和语言的分类 25

2.5 PL/0编译程序概述 27

2.5.1 PL/0语言的功能 28

2.5.2 一个PL/0程序实例 28

2.5.3 PL/0语言的文法 29

2.5.4 PL/0编译程序的结构 32

习题 35

2.6 小结 35

第3章 词法分析 37

3.1 词法分析的任务 37

3.2 词法分析程序的输出形式 38

3.2.1 单词符号 38

3.2.2 词法分析程序的输出形式 38

3.3 词法分析程序的设计与实现 39

3.3.1 正规文法及其状态图 40

3.3.2 词法分析程序的实现 41

3.4 正规式与有穷自动机 45

3.4.1 正规式与正规集 45

3.4.2 正规文法与正规式 47

3.4.3 有穷自动机 48

3.4.4 正规式与有穷自动机的等价性 54

3.4.5 正规文法与有穷自动机的等价性 56

3.5 词法分析程序的自动生成工具LEX 57

3.5.1 LEX的源程序 58

3.5.2 LEX的正规式 61

3.5.3 LEX的实现 63

3.5.4 Parser Generator的使用 65

3.6 PL/0编译程序的词法分析 66

3.6.1 PL/0词法分析程序的任务 66

3.6.2 PL/0词法分析程序的设计 67

3.7 小结 69

习题 70

第4章 语法分析 73

4.1 语法分析的任务 73

4.2 自顶向下分析法 74

4.2.1 自顶向下分析的一般过程 74

4.2.2 自顶向下分析存在的主要问题 75

4.2.3 LL(1)文法的判别 78

4.2.4 递归下降分析法 82

4.2.5 LL(1)分析法 84

4.3.1 自底向上分析的一般过程 89

4.3 自底向上分析法 89

4.3.2 自底向上分析存在的主要问题 90

4.4 算符优先分析法 93

4.4.1 方法概述 93

4.4.2 算符优先文法的定义 94

4.4.3 算符优先关系表的构造 95

4.4.4 算符优先分析算法 100

4.4.5 优先函数 104

4.5 LR分析法 106

4.5.1 LR分析器的逻辑结构和工作过程 107

4.5.2 LR(0)分析法 111

4.5.3 SLR(1)分析法 120

4.5.4 LR(1)分析法 124

4.5.5 LALR(1)分析法 128

4.5.6 二义性文法的LR分析法 130

4.6 语法分析程序的自动生成工具YACC 133

4.6.1 YACC的源程序组成 134

4.6.2 用LEX建立YACC的词法分析器 141

4.7 PL/0编译程序的语法分析 143

4.8 小结 144

习题 146

第5章 语义分析与中间代码生成 149

5.1 语义分析的任务 149

5.2.1 属性文法 150

5.2 语法制导翻译 150

5.2.2 语法制导翻译的过程 151

5.2.3 语法制导定义 152

5.2.4 抽象语法树的构造 157

5.2.5 S属性定义与自底向上翻译 160

5.2.6 L属性定义与自顶向下翻译 161

5.3 中间代码 166

5.3.1 后缀式 167

5.3.2 三地址代码 167

5.3.3 图形表示 170

5.4.2 过程中说明语句的翻译 171

5.4.1 简单说明语句的翻译 171

5.4 说明语句的翻译 171

5.5 赋值语句的翻译 172

5.5.1 简单赋值语句的翻译 172

5.5.2 含数组元素的赋值语句的翻译 174

5.6 布尔表达式的翻译 180

5.6.1 布尔表达式的两种计算方法 180

5.6.2 数值表示法翻译方案 180

5.6.3 控制流语句中布尔表达式的翻译 181

5.7 控制流语句的翻译 186

5.7.1 基本控制流语句的翻译 186

5.7.2 for循环语句的翻译 190

5.7.3 case语句的翻译 191

5.8 过程调用语句的翻译 193

5.9 PL/0编译程序的语义分析 194

5.9.1 说明部分的分析 195

5.9.2 过程体部分的分析 197

5.9.3 PL/0编译程序目标代码的结构 197

5.9.4 PL/0编译程序目标代码的生成 198

5.10 小结 203

习题 203

6.1 符号表管理 206

6.1.1 符号表的作用和内容 206

第6章 符号表管理和错误处理 206

6.1.2 符号表的组织 207

6.1.3 分程序结构语言符号表的管理 209

6.1.4 非分程序结构语言符号表的管理 210

6.2 错误处理 211

6.2.1 错误处理概述 211

6.2.2 词法分析阶段的错误处理 212

6.2.3 语法分析阶段的错误处理 212

6.2.4 语义分析阶段的错误处理 216

6.3 PL/0编译程序的错误处理 218

6.3.1 PL/0编译程序的语法错误处理方法 218

6.3.2 PL/0编译程序的错误局部化处理原则 218

6.3.3 PL/0编译程序的错误局部化处理方法 219

6.3.4 PL/0语言的出错信息表 220

6.4 小结 221

习题 222

第7章 运行时的存储组织与分配 223

7.1 存储组织概述 223

7.1.1 存储空间的一般组织 223

7.1.2 过程的活动和活动记录 224

7.2 静态存储分配 225

7.3 栈式动态存储分配 225

7.3.1 简单语言的栈式存储分配 225

7.3.2 嵌套过程语言的栈式存储分配 228

7.4 堆式动态存储分配 231

7.5 PL/0编译程序目标代码解释执行时的存储分配 233

7.5.1 PL/0目标计算机的组织结构 233

7.5.2 PL/0语言的栈式动态存储分配 234

7.6 小结 237

习题 238

第8章 代码优化 240

8.1 局部优化 240

8.1.1 基本块的定义及其划分 240

8.1.2 基本块内的优化 241

8.1.3 基本块的DAG表示 243

8.1.4 利用DAG进行基本块的优化处理 248

8.2 循环优化 250

8.2.1 程序流图 250

8.2.2 循环的定义和查找 251

8.2.3 循环优化 253

8.3 小结 258

习题 259

第9章 目标代码生成 261

9.1 目标代码的形式 261

9.2 假想的计算机模型 262

9.3.1 待用信息与活跃信息 263

9.3 一个简单的代码生成程序 263

9.3.2 寄存器分配 265

9.3.3 简单的代码生成算法 266

9.4 小结 268

习题 269

附录A 使用C语言实现的PL/0程序 270

A.1 程序简介 270

A.2 程序文本 270

附录B 使用LEX和YACC语言实现的PL/0程序 297

B.1 程序简介 297

B.2 程序文本 298

参考文献 317

返回顶部