《编译原理和技术 第2版》求取 ⇩

目录1

第1章 引论1

1.1 编译的阶段1

1.1.1 词法分析2

1.1.2 语法分析2

1.1.3 语义分析4

1.1.4 中间代码生成5

1.1.5 代码优化5

1.1.6 代码生成6

1.1.7 符号表管理6

1.1.8 错误诊断和报告8

1.1.9 阶段的分组8

1.2 编译器的伙伴8

1.2.1 预处理器9

1.2.2 汇编器10

1.2.3 装配器和连接编辑器11

2.1 词法分析器的作用12

第2章 词法分析12

2.1.1 分离词法分析的理由13

2.1.2 记号、模式、单词13

2.1.3 记号的属性14

2.1.4 词法错误15

2.2 记号的描述15

2.2.1 串和语言15

2.2.2 语言的运算16

2.2.3 正规式16

2.2.5 表示的缩写18

2.2.4 正规定义18

2.2.6 非正规集19

2.3 记号的识别19

2.3.1 转换图20

2.3.2 实现转换图22

2.4 有限自动机23

2.4.1 不确定的有限自动机23

2.4.2 确定的有限自动机25

2.4.3 NFA到DFA的变换25

2.5 从正规式到NFA29

2.6 DFA的化简31

2.7 词法分析器的说明语言33

习题36

第3章 语法分析39

3.1 分析器的作用39

3.1.1 语法错误的处理40

3.1.2 错误恢复策略41

3.2 上下文无关文法42

3.2.1 符号使用的约定43

3.2.2 推导44

3.2.3 分析树和推导45

3.2.4 二义性46

3.3 语言和文法46

3.3.1 正规式和上下文无关文法的比较47

3.3.2 验证文法产生的语言48

3.3.3 适当的表达式文法48

3.3.4 消除二义性49

3.3.5 消除左递归50

3.3.6 提左因子51

3.3.7 非上下文无关的语言结构52

3.3.8 形式语言概述53

3.4 自上而下分析55

3.4.1 自上而下分析的一般方法55

3.4.2 预测分析器56

3.4.3 非递归的预测分析58

3.4.4 开始符号和后继符号59

3.4.5 构造预测分析表60

3.4.6 LL(1)文法61

3.4.7 预测分析的错误恢复62

3.5 自下而上分析63

3.5.1 句柄64

3.5.2 用栈实现移进-归约分析66

3.5.3 移进-归约分析的冲突67

3.6 LR分析器68

3.6.1 LR分析算法69

3.6.2 LR文法72

3.6.3 构造SLR分析表73

3.6.4 构造规范LR分析表79

3.6.5 构造LALR分析表83

3.6.6 非LR的上下文无关结构86

3.7 二义文法的应用87

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

3.7.2 悬空else的二义性89

3.7.3 特殊情况产生式引起的二义性90

3.7.4 LR分析的错误恢复92

3.8 分析器的生成器94

3.8.1 分析器的生成器Yacc95

3.8.2 用Yacc处理二义文法97

3.8.3 用Lex建立Yacc的词法分析器99

3.8.4 Yacc的错误恢复100

习题101

第4章 语法制导的翻译107

4.1 语法制导的定义107

4.1.1 语法制导定义的形式108

4.1.2 综合属性108

4.1.3 继承属性109

4.1.4 依赖图110

4.1.5 计算次序111

4.2 S属性的自下而上计算112

4.2.1 语法树113

4.2.2 构造表达式的语法树113

4.2.3 构造语法树的语法制导定义114

4.2.4 表达式的无环有向图115

4.2.5 S属性的自下而上计算116

4.3 L属性定义118

4.3.2 翻译方案119

4.3.1 L属性定义119

4.4 自上而下翻译122

4.4.1 删除翻译方案的左递归122

4.4.2 预测翻译器的设计126

4.5 继承属性的自下而上计算127

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

4.5.2 分析栈上的继承属性128

4.5.3 模拟继承属性的计算130

4.5.5 一个困难的语法制导定义133

4.5.4 用综合属性代替继承属性133

4.6.1 自左向右遍历134

4.6 递归计算134

4.6.2 其它遍历方法135

4.7 语法制导定义的分析137

4.7.1 属性的递归计算137

4.7.2 强无环的语法制导定义138

习题140

第5章 类型检查143

5.1.1 类型表达式144

5.1 类型体制144

5.1.2 类型体制145

5.1.3 静态和动态的类型检查146

5.1.4 错误恢复146

5.2 简单类型检查器的说明146

5.2.1 一个简单的语言147

5.2.2 表达式的类型检查148

5.2.3 语句的类型检查148

5.2.5 类型转换149

5.2.4 函数的类型检查149

5.3 类型表达式的等价150

5.3.1 类型表达式的结构等价151

5.3.2 类型表达式的名字152

5.3.3 类型表示中的环153

5.4 函数和算符的重载154

5.4.1 子表达式的可能类型集合154

5.4.2 缩小可能类型的集合156

5.5 多态函数156

5.5.1 为什么要使用多态函数157

5.5.2 类型变量158

5.5.3 一个含多态函数的语言159

5.5.4 代换、实例和合一161

5.5.5 多态函数的检查161

习题165

第6章 运行环境168

6.1 源语言问题168

6.1.1 过程168

6.1.2 活动树169

6.1.3 控制栈170

6.1.4 声明的作用域171

6.1.5 名字的结合171

6.2 存储组织172

6.2.1 运行时内存的划分172

6.2.2 活动记录173

6.2.3 编译时的局部数据安排174

6.3.1 静态分配175

6.3 存储分配策略175

6.3.2 栈分配177

6.3.3 悬空引用180

6.3.4 堆分配181

6.4 访问非局部名字182

6.4.1 程序块182

6.4.2 无过程嵌套的静态作用域184

6.4.3 有过程嵌套的静态作用域185

6.4.4 动态作用域188

6.5 参数传递189

6.5.1 值调用190

6.5.2 引用调用191

6.5.3 复写-恢复191

6.5.4 换名调用192

习题193

第7章 中间代码生成196

7.1 中间语言196

7.1.1 后缀表示196

7.1.3 三地址代码197

7.1.2 图形表示197

7.1.4 三地址语句的种类198

7.1.5 三地址语句的实现199

7.1.6 内部表示的比较200

7.2 声明201

7.2.1 过程中的声明201

7.2.2 作用域信息的保存202

7.3 赋值语句204

7.3.1 符号表中的名字204

7.2.3 记录的域名204

7.3.2 临时名字的重新使用205

7.3.3 数组元素的定址206

7.3.4 数组元素定址的翻译方案208

7.3.5 赋值语句中的类型转换210

7.3.6 记录域的访问211

7.4.1 翻译布尔表达式的方法212

7.4.2 数值表示212

7.4 布尔表达式212

7.4.3 短路代码214

7.4.4 控制流语句214

7.4.5 布尔表达式的控制流翻译216

7.5 分情况语句218

习题220

第8章 代码生成224

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

8.1.1 代码生成器的输入224

8.1.3 存储管理225

8.1.2 目标程序225

8.1.4 指令选择226

8.1.5 寄存器分配226

8.1.6 计算次序选译227

8.1.7 代码生成途径228

8.2 目标机器228

8.2.1 目标机器228

8.2.2 指令代价229

8.3.1 基本块230

8.3 基本块和流图230

8.3.2 基本块的变换232

8.3.3 流图233

8.4 下次引用信息234

8.4.1 计算下次引用信息234

8.4.2 临时名字的存储分配235

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

8.5.1 寄存器描述和地址描述236

8.5.2 代码生成算法236

8.5.3 函数getreg237

8.5.4 为其它类型的语句产生代码238

8.5.5 条件语句239

习题240

第9章 代码优化241

9.1 引言241

9.1.1 代码改进变换的标准241

9.1.2 争取较好的性能242

9.1.3 优化编译器的组织243

9.2 优化的主要种类245

9.2.1 公共子表达式245

9.2.2 复写传播247

9.2.3 死代码删除248

9.2.4 循环优化248

9.2.5 代码外提248

9.2.6 归纳变量和强度消弱249

9.3 流图中的循环250

9.3.1 必经结点250

9.3.2 自然循环251

9.3.4 前置结点252

9.3.3 内循环252

9.3.5 可归约流图253

9.4 全局数据流分析介绍254

9.4.1 点和路径255

9.4.2 到达-定值256

9.4.3 到达-定值的迭代算法256

9.4.4 可用表达式259

9.4.5 活跃变量分析262

9.4.6 定值-引用链262

9.5.1 公共子表达式删除263

9.5 代码改进变换263

9.5.2 复写传播264

9.5.3 寻找循环不变计算266

9.5.4 代码外提267

9.5.5 代码外提后维持数据流信息268

9.5.6 归纳变量删除269

9.5.7 有循环不变计算的归纳变量272

习题272

10.1.1 对象274

10.1 面向对象语言的概念274

第10章 面向对象语言的编译274

10.1.2 对象类275

10.1.3 继承性275

10.1.4 信息封装277

10.1.5 小结277

10.2 方法的编译278

10.3 编译继承性的方案279

10.3.1 简单继承性的编译方案280

10.3.2 多继承性的编译方案282

习题286

第11章 函数式程序设计语言的编译289

11.1 函数式程序设计语言简介289

11.1.1 SFP的构造289

11.1.2 参数传递机制290

11.1.3 自由出现和约束出现292

11.2 一个简单的函数式语言的编译简介293

11.2.1 几个受启发的例子293

11.2.3 环境与约束295

11.2.2 4个编译函数295

11.3 抽象机的系统结构296

11.3.1 FAM的栈297

11.3.2 FAM的堆298

11.3.3 名字的寻址299

11.3.4 约束的建立300

11.4 指令集和编译300

11.4.1 程序表达式300

11.4.2 简单表达式301

11.4.3 变量的引用性出现302

11.4.4 函数定义303

11.4.5 函数应用304

11.4.6 构造和计算闭包307

11.4.7 letrec表达式和局部变量309

11.5 表的实现310

11.5.1 SFP的扩充310

11.5.2 表表达式的编译312

11.5.3 表运算的编译312

习题315

1989《编译原理和技术 第2版》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由陈意云编著 1989 合肥:中国科学技术大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

光测原理和技术(1992 PDF版)
光测原理和技术
1992 北京:兵器工业出版社
编译原理 P325( PDF版)
编译原理 P325
编译技术( PDF版)
编译技术
编译技术(1995 PDF版)
编译技术
1995 南京:东南大学出版社
微型计算机接口原理与技术  第2版(1999 PDF版)
微型计算机接口原理与技术 第2版
1999 长沙:国防科技大学出版社
编译程序原理与技术(1997 PDF版)
编译程序原理与技术
1997 北京市:清华大学出版社
编译原理和技术(1989 PDF版)
编译原理和技术
1989 合肥:中国科学技术大学出版社
编译原理(1985 PDF版)
编译原理
1985 北京:电子工业出版社
编译技术(1975 PDF版)
编译技术
1975 北京:科学出版社
编译程序设计原理与构造技术(1997 PDF版)
编译程序设计原理与构造技术
1997 合肥:中国科学技术大学出版社
编译原理及其实现技术(1993 PDF版)
编译原理及其实现技术
1993 上海:上海交通大学出版社
编译原理  第2版(1993 PDF版)
编译原理 第2版
1993 西安:西北工业大学出版社
编译技术原理(1994 PDF版)
编译技术原理
1994 北京:国防工业出版社
编译原理(1998 PDF版)
编译原理
1998 北京:清华大学出版社
新编电视机原理和维修技术(1993 PDF版)
新编电视机原理和维修技术
1993 北京:电子工业出版社