《编译方法》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:贺汛编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2007
  • ISBN:9787111218012
  • 页数:238 页
图书介绍:本书介绍了关于程序设计语言方面的编译程序设计技术等。

第1章 编译概述 1

1.1 编译程序 1

1.1.1 编译与程序设计语言 1

1.1.2 编译程序的构造 2

1.2 编译过程概述 3

1.2.1 词法分析 3

1.2.2 语法分析 4

1.2.3 语义分析和中间代码生成 4

1.2.4 代码优化 5

1.2.5 目标代码生成 6

1.2.6 表格管理和出错处理 6

1.3 编译程序的结构 6

1.3.1 编译程序的结构 6

1.3.2 编译阶段的组合 6

1.3.3 编译程序的生成 8

1.4 编译程序与程序设计环境 9

1.5 编译技术的应用 9

本章重点 10

习题 10

第2章 语言和文法 11

2.1 语言 11

2.1.1 什么是语言 11

2.1.2 语言中的符号和符号串 11

2.2 文法 13

2.2.1 语言的定义方法 13

2.2.2 文法的形式定义 14

2.2.3 语言的形式定义 15

2.3 文法的分类及实用限制 16

2.3.1 文法的分类 16

2.3.2 文法的化简 18

2.3.3 关于ε产生式 19

2.4 上下文无关文法 19

2.4.1 程序设计语言的描述 19

2.4.2 语法树 19

2.4.3 文法的二义性 21

2.5 句型分析方法 22

2.5.1 自顶向下的分析方法 22

2.5.2 自底向上的分析方法 23

本章重点 24

习题 25

第3章 词法分析 27

3.1 单词的种类与机内表示 27

3.1.1 单词的种类 27

3.1.2 单词的机内表示法 27

3.2 单词的描述 29

3.2.1 正规式 29

3.2.2 正规文法 30

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

3.3 有穷自动机FA 33

3.3.1 确定的有穷自动机DFA 33

3.3.2 不确定的有穷自动机NFA 34

3.3.3 NFA到DFA的转换 35

3.3.4 DFA的化简 38

3.4 正规文法和FA的等价性 40

3.4.1 正规文法到FA的转换方法 40

3.4.2 FA到正规文法的转换方法 41

3.5 正规式和FA的等价性 42

3.5.1 FA到正规式的转换方法 42

3.5.2 正规式到FA的转换方法 45

3.6 词法分析程序的构造 46

3.6.1 词法分析程序设计的有关问题 46

3.6.2 从DFA构造词法分析程序的方法 48

3.6.3 词法分析程序的自动生成工具LEX简介 51

本章重点 52

习题 52

第4章 自顶向下语法分析 54

4.1 程序设计语言的语法描述 54

4.2 自顶向下的语法分析方法 54

4.2.1 确定的自顶向下的语法分析方法 54

4.2.2 不确定的自顶向下的语法分析方法 55

4.3 确定的自顶向下语法分析方法 55

4.3.1 “回溯”的原因 55

4.3.2 提取左公共因子 57

4.3.3 消除左递归 58

4.3.4 LL(1)文法 59

4.3.5 LL(1)文法的判别 64

4.4 预测分析法 64

4.4.1 预测分析表 65

4.4.2 分析栈 65

4.4.3 预测分析程序 66

4.5 递归下降分析法 67

本章重点 70

习题 70

第5章 自底向上语法分析 72

5.1 自底向上语法分析概述 72

5.2 短语和句柄 74

5.3 算符优先分析法 76

5.3.1 简单优先分析法 76

5.3.2 算符优先分析法 80

5.3.3 优先函数 86

5.4 LR分析法 88

5.4.1 LR分析概述 89

5.4.2 LR(0)分析 90

5.4.3 SLR(1)分析法 99

5.4.4 LR(1)分析 102

5.4.5 LALR(1)分析法 106

5.5 语法分析程序的自动生成工具YACC简介 108

本章重点 110

习题 111

第6章 语法制导翻译技术 113

6.1 属性文法 113

6.2 语法制导翻译概述 115

6.3 中间代码 117

6.3.1 逆波兰式 117

6.3.2 树代码 118

6.3.3 三地址码 119

6.4 自底向上语法制导翻译 121

6.4.1 说明语句的翻译 121

6.4.2 含简单变量的赋值语句的翻译 124

6.4.3 含数组元素的赋值语句的翻译 126

6.4.4 布尔表达式的翻译 127

6.4.5 控制语句的翻译 133

6.5 过程调用 141

本章重点 142

习题 142

第7章 符号表 144

7.1 符号表的作用 144

7.2 符号表的内容 145

7.3 符号表的组织 147

7.3.1 符号表的总体组织 147

7.3.2 符号表的构造方法 148

7.3.3 域的组织 151

7.3.4 栈式符号表 152

7.4 符 号表的管理 155

本章重点 156

习题 156

第8章 运行时存储空间组织 158

8.1 运行时存储空间的划分 158

8.2 数据空间的分配策略 158

8.2.1 静态存储分配策略 159

8.2.2 动态存储分配 159

8.3 栈式存储分配 162

8.3.1 简单程序设计语言的栈式存储分配 162

8.3.2 嵌套过程语言的栈式存储分配 166

本章重点 171

习题 171

第9章 代码优化 173

9.1 代码优化概述 173

9.2 局部优化 173

9.2.1 基本块及其划分 173

9.2.2 基本块的优化技术 176

9.2.3 基本块优化技术的实现 178

9.3 循环优化 184

9.3.1 程序中的循环 184

9.3.2 循环的优化技术及其实现 187

本章重点 191

习题 192

第10章 目标代码生成 194

10.1 目标代码生成概述 194

10.2 模型计算机的指令系统 194

10.2.1 寻址方式 195

10.2.2 指令系统 195

10.3 一种简单代码生成算法 196

10.3.1 寄存器的使用原则 196

10.3.2 待用信息和活跃信息 197

10.3.3 寄存器描述和变量地址描述 200

10.3.4 基本块代码生成算法 201

10.4 DAG的目标代码生成 204

本章重点 205

习题 205

附录 206

附录A S语言编译程序的设计与实现 206

A.1 S语言说明 206

A.2 实验一 词法分析程序 208

A.3 实验二 语法/语义分析程序 210

A.4 实验三 目标代码生成程序 213

附录B 习题参考答案 215

参考文献 238