《编译原理及实现技术》PDF下载

  • 购买积分:9 如何计算积分?
  • 作  者:刘磊等编著
  • 出 版 社:机械工业出版社
  • 出版年份:2005
  • ISBN:7111171160
  • 页数:173 页
图书介绍:本书包括编译程序设计的基础理论和具体实现技术等。

目录 1

前言 1

第1章 编译引论 1

1 1 程序设计语言和编译程序 1

1 2 编译程序的结构 2

1 2 1 编译程序的构成 2

1 2 2 遍 4

1 2 3 编译程序的前端和后端 4

1 3 编译程序和程序设计环境 5

1 4 编译程序的实现 6

习题 7

第2章 形式语言与自动机理论基础 8

2 1 语言和文法 8

2 1 1 基本概念 8

2.1 2 文法分类 11

2 1 3 推导和归约 13

2.1 4 语法树与文法二义性 14

2 1 5 文法等价变换 16

2 2 有限自动机(FA) 20

2 2 1 确定有限自动机(DFA) 21

2 2 2 非确定有限自动机(NFA) 23

2 2 3 DFA与NFA的等价 24

2 2 4 DFA的化简 26

2 3 正则表达式 28

习题 32

第3章 词法分析 33

3 1 词法分析介绍 33

3 1 1 词法分析程序的功能 33

3 1 2 词法分析程序的接口 33

3.2 2 单词的内部表示 34

3.2.3 单词的形式描述 34

3.2 词法分析程序的设计 34

3.2 1 单词分类 34

3.2 4 自动机的实现 35

3 3 词法分析程序的实现 37

3 3 1 实现词法分析程序应注意的问题 37

3 3.2 标识符表和常量表 39

3 3 3 单词结构 39

3 3 4 实现算法 39

3.4 1 LEX简介 41

3.4 2 LEX工作原理 41

3 4 词法分析程序自动生成 41

3 4 3 LEX源文件结构 42

3.4 4 LEX系统中的正则式 43

3.4.5 LEX的使用方式 46

3 4.6 应用实例 46

习题 47

4 1.1 语法分析程序的功能 48

4.1.2 语法错误类别及错误处理 48

4 1 语法分析程序介绍 48

第4章 语法分析——自顶向下分析方法 48

4.1 3 自顶向下语法分析的基本思想 49

4.1 4 三个重要的集合 51

4 1 5 自顶向下语法分析条件 52

4 2 递归下降法 53

4.2.1 递归下降法语法分析原理 53

4 2 2 递归下降法语法分析程序的构造 54

4 3 LL(1)分析法 56

4.3.1 LL(1)分析法原理 56

4 3.2 LL(1)分析表的构造 57

4.3.3 LL(1)驱动程序构造 58

4 4 自顶向下分析程序的自动生成 59

习题 60

第5章 语法分析——自底向上分析方法 61

5 1 自底向上语法分析方法介绍 61

5.2 简单优先分析 62

5.2 1 简单优先文法及其优先关系矩阵的构造 62

5.2.2 简单优先分析算法 63

5 3 LR(k)分析法 64

5 3 1 LR(k)分析法的工作过程 65

5 3 2 LR(0)分析法 66

5 3 3 SLR(1)分析法 72

5 3 4 LR(1)分析法 75

5 3 5 LALR(1)分析法 78

5 3 6 小结 80

5 4 自底向上分析程序的自动生成 82

习题 83

第6章 语义分析和符号表 85

6 1 语义分析概述 85

6 2 标识符的内部表示 86

6 3 类型的内部表示 90

6 4 值的内部表示 93

6 5 2 符号表项的排列 94

6.5 1 符号表的总体组织 94

6 5 符号表的组织和管理 94

6 5 3 符号表的建立与查找 96

6 6 嵌套式符号表和分程序结构的管理 98

6 6 1 简单C语言的符号表 98

6 6 2 Pascal语言的符号表 99

6 6 3 带有分程序结构的符号表 101

6 7 标号的语义分析 103

习题 104

7 1 2 抽象语法树和有向无环图 106

7 1 1 后缀式 106

7 1 常用的中间代码结构 106

第7章 中间代码生成 106

7 1 3 三地址中间代码 107

7 2 语法制导方法概论 108

7 3 类型检查和类型转换 110

7 4 中间代码生成中的几个问题 110

7 4 1 语义信息的获取和保存 110

7 4 2 语义栈Sem及其操作 111

7 4 3 常用的语义子程序 111

7 5 表达式的中间代码生成 112

7 6 1 下标变量的地址 114

7 6 下标变量的中间代码生成 114

7 6 2 下标变量的四元式结构 115

7 6 3 下标变量的中间代码生成 115

7 6 4 下标变量中间代码生成举例 116

7 7 赋值语句的中间代码 117

7 8 过程调用和函数调用的中间代码 118

7 9 控制语句的中间代码生成 119

7.9 1 goto语句和标号定位的中间代码 120

7 9.2 条件语句的中间代码 120

7 9 3 while语句的中间代码 121

7 10 过程/函数声明的中间代码生成 122

习题 123

第8章 中间代码优化 124

8 1 优化方法概述 124

8 2 基本块划分 126

8 3 常量表达式局部优化 127

8 4 公共表达式局部优化 128

8.5 循环不变式外提 130

8.5 1 循环不变式外提概述 130

8 5 2 循环不变式外提原理 133

8 6 其它各类优化介绍 134

习题 136

第9章 运行时存储空间的组织与管理 137

9 1 目标程序运行时的活动 137

9 1 1 过程的活动 137

9.1 2 名字的作用域和绑定 138

9.1 3 过程活动记录 138

9.1.4 抽象地址分配 140

9.1.5 参数传递 142

9 2 运行时存储器的划分 144

9 3 静态存储分配 145

9 4 简单的栈式存储分配 146

9 5 嵌套式语言的栈式存储分配 147

9.5.1 局部Display表方法 149

9 5 2 静态链方法 151

9 5 3 全局Display表方法 152

9 6 堆式动态存储分配 154

9.6 1 堆区的分配策略 154

9 6.2 堆区的回收策略 156

9 7 过程调用中几种特殊情况的处理 157

9 7 3 过程的奇特型调用 158

9 7.2 形式过程语句 158

9 7.1 非正常出口语句 158

习题 159

第10章 目标代码生成 161

10 1 目标代码生成介绍 161

10 1 1 代码生成器的输入和输出 161

10 1.2 指令选择 161

10 2 虚拟机 162

10 3 寄存器的分配 164

10 3 1 单寄存器机器的寄存器分配 164

10 3 2 多寄存器机器的寄存器分配 164

10 4 1 表达式四元式的翻译 165

10 4 四元式到目标代码的翻译 165

10 4 2 赋值语句四元式的翻译 166

10 4 3 输入输出语句四元式的翻译 166

10 4 4 条件语句四元式的翻译 167

10 4 5 循环语句四元式的翻译 168

10 4 6 标号语句四元式和goto语句四元式的翻译 169

10 4 7 过程、函数说明语句四元式的翻译 170

10 4 8 过程、函数调用语句四元式的翻译 170

习题 171

参考文献 173