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

编译原理PDF电子书下载

工业技术

  • 电子书积分:11 积分如何计算积分?
  • 作 者:张雪峰,姚学武,尚文,张稼编著
  • 出 版 社:北京:研究出版社
  • 出版年份:2008
  • ISBN:9787801683519
  • 页数:271 页
图书介绍:本书全面地介绍了编译程序的基本结构,系统地阐述了编译原理的一般理论以及常用的方法和技术。包括引论、形式语言与自动机理论基础、词法分析、语法分析、语法制导翻译与中间代码生成、运行时的存储空间组织、代码优化、代码生成和面向对象的编译技术等相关内容。
《编译原理》目录

第1章 引论 1

1.1什么是编译程序 1

编译的分析-综合模型 2

编译器的前驱与后继 3

1.2编译器的各阶段 4

词法分析 4

语法分析 4

语义分析 5

中间代码生成 6

代码优化 6

符号表管理 7

错误检测与报告 7

1.3编译预处理 8

预处理器 8

汇编器 8

装配器和连接编辑器 8

1.4编译器各阶段的分组 9

前端与后端 9

编译的遍 9

减少编译的遍数 9

1.5编译器的构造工具 10

1.6程序设计语言范型 10

强制(命令)型语言 11

函数型语言 11

逻辑(规则)型语言 11

面向对象语言 11

面向数据结构型语言 12

混合型语言 12

基于多目标机的多源语言 12

小结 12

综合练习一 12

一、选择题 12

二、填空题 13

三、应用题 13

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

2.1文法与语言 15

字母表、串和语言 15

文法与语言的引入 16

形式定义 17

文法与语言的分类 18

2.2正规文法与有穷自动机 20

正规集与正规文法 20

有穷自动机 21

正规文法到有穷自动机的转换 24

正规文法与正规式 25

2.3正规式、NFA和DFA之间的等价转换 26

从正规式构造NFA 27

NFA的确定化 29

DFA的最小化 32

DFA到正规式的转换 34

2.4上下文无关文法与下推自动机 36

上下文无关文法 36

上下文无关文法的变换 37

语法树与文法的二义性 39

下推自动机 40

小结 43

综合练习二 43

一、选择题 43

二、填空题 44

三、应用题 44

第3章 词法分析 48

3.1词法分析概述 48

词法分析阶段的必要性 49

记号、模式和词素 49

单词的机内表示 50

词法错误 51

输入缓冲 51

3.2词法分析程序的设计方法 53

单词符号的分类与识别 53

状态转换图 55

扫描器的任务 57

扫描器的设计 58

3.3词法分析器的自动构造原理 63

Lex语言的基本语句与功能 63

Lex输入文件的格式 66

Lex编译器原理 70

小结 71

综合练习三 72

一、选择题 72

二、填空题 72

三、应用题 72

四、实验题 73

第4章 语法分析 74

4.1语法分析概述 74

自顶向下的语法分析 74

自底向上的语法分析 75

推导 76

推导过程的表示——分析树 77

文法的二义性 78

消除二义性 80

消除左递归 83

消除回溯 84

语法分析的错误处理 85

错误恢复策略 86

4.2自顶向下的语法分析 87

递归下降分析法 87

预测语法分析法 88

状态转换图 88

非递归的预测分析法 89

FIRST集合、FOLLOW集合和SELECT集合 90

预测分析表的构造 93

LL(1)文法及其分析法 94

预测分析的错误恢复 96

4.3自底向上的语法分析 97

句柄 98

句柄裁剪 99

用栈实现移进-归约分析 100

活前缀 101

移进-归约分析过程中的冲突 101

4.4算符优先分析法 103

算符优先文法的定义 104

算符优先关系表的构造 105

算符优先分析算法的设计 106

优先函数的构造 109

算符优先分析中的错误恢复 111

算符优先分析法的局限性 113

4.5 LR分析方法 113

LR语法分析概述 114

LR文法与LR分析方法的特点 116

LR(0)分析法 116

SLR(1)分析法 121

LR(1)分析法 125

LALR(1)分析法 128

LALR(1)语法分析表的有效构造 132

LR语法分析表的压缩 133

4.6二义性文法的应用 135

使用优先级和结合规则来解决分析动作的冲突 136

悬空else的二义性 137

特例产生式引起的二义性解决 139

LR语法分析中的错误恢复 140

4.7语法分析器的生成器 141

语法分析器的生成器YACC 142

用YACC处理二义性文法 144

用Lex建立YACC的词法分析器 145

YACC的错误恢复 145

小结 146

综合练习四 146

一、选择题 146

二、填空题 147

三、应用题 147

四、实验题 149

第5章 语法制导翻译与中间代码生成 151

5.1语法制导翻译概述 151

语法制导翻译的形式 152

综合属性 152

继承属性 153

依赖图 154

计算次序 155

5.2 S属性的自下而上计算 156

语法树 156

构造表达式的语法树 156

构造语法树的语法制导翻译 157

表达式的无环有向图 158

S属性的自下而上计算 159

5.3 L属性文法 160

L属性文法的定义 161

翻译方案 161

5.4自顶向下的语法制导翻译 162

删除翻译方案的左递归 162

预测翻译器的设计 164

5.5继承属性的自下而上计算 165

删除翻译方案中嵌入的动作 165

分析栈上的继承属性 166

模拟继承属性的计算 167

用综合属性代替继承属性 169

递归次数不确定的语法制导翻译 169

5.6递归计算 170

自左向右遍历 170

其他遍历方法 170

5.7语法制导翻译的分析 171

属性的递归计算 172

强无环的语法制导翻译 172

5.8中间语言 173

图表示 173

三地址码 174

三地址语句的类型 174

语法制导翻译生成三地址码 175

三地址语句与四元式 176

表示方法比较与间址的使用 177

5.9声明语句的翻译 177

过程中的声明语句 178

跟踪作用域信息 178

记录中的域名 179

5.10赋值语句的翻译 180

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

临时变量的重用 180

定址数组元素 181

数组元素寻址的翻译方案 182

赋值语句中的类型转换 184

记录域的访问 184

5.11布尔表达式的翻译 185

翻译布尔表达式的方法 185

用数值表示的布尔表达式的翻译 185

短路代码 185

控制流语句 186

用控制流表示布尔表达式的翻译 187

混合模式的布尔表达式 188

5.12分支语句的翻译 189

小结 190

综合练习五 191

一、选择题 191

二、填空题 191

三、应用题 191

四、实验题 192

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

6.1程序运行的基本概念 193

过程与函数 193

活动树 194

控制栈 194

声明的作用域 195

名字的结合 195

6.2存储组织 196

运行时内存的划分 196

活动记录 197

编译时的局部数据安排 197

6.3存储分配策略 199

静态存储分配策略 199

栈式存储分配策略 201

悬空引用 203

堆式存储分配策略 204

6.4访问非局部变量 207

程序块 207

无过程嵌套的静态作用域 209

有过程嵌套的静态作用域 210

动态作用域 212

6.5参数传递 213

按值调用 213

引用调用 215

复写-恢复调用 215

换名调用 216

6.6面向对象语言的存储分配策略 216

面向对象语言的动态存储管理 216

Java语言的存储分配 217

小结 219

综合练习六 219

一、选择题 219

二、填空题 219

三、应用题 220

四、实验题 221

第7章 代码优化 222

7.1优化技术简介 222

7.2局部优化 224

基本块的划分 224

基本块的变换 225

基本块DAG表示 225

7.3循环优化 226

程序流图 226

循环 227

代码外提 228

强度削弱 230

删除归纳变量 231

7.4数据流分析与全局优化 234

主要的概念 234

数据流方程的一般形式 235

到达-定值数据流方程 235

小结 239

综合练习七 239

一、选择题 239

二、填空题 240

三、应用题 240

四、实验题 241

第8章 代码生成 242

8.1代码生成器设计中的问题 242

代码生成器的输入 242

目标程序 242

存储管理 242

指令选择 243

寄存器分配 243

计算次序选译 244

代码生成途径 244

8.2目标机器 244

8.3基本块和流图 246

基本块 246

基本块的变换 247

流图 248

8.4下次引用信息 249

计算下次引用信息 249

临时名字的存储分配 250

8.5一个简单的代码生成器 250

寄存器描述和地址描述 251

代码生成算法 251

函数getreg 251

为其他类型的语句产生代码 252

条件语句 252

小结 253

综合练习八 253

一、选择题 253

二、填空题 254

三、应用题 254

四、实验题 254

第9章 面向对象的编译技术 256

9.1面向对象语言的基本概念 256

抽象 256

对象和对象类 256

继承 257

信息封装 259

9.2方法的编译 260

9.3继承的编译方案 262

单一继承的编译 262

多重继承的编译 264

小结 268

综合练习九 268

一、选择题 268

二、填空题 269

三、应用题 269

四、实验题 269

参考文献 270

内容简介 271

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