图书介绍

编译原理 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

编译原理 第2版
  • 陈意云,张昱编 著
  • 出版社: 北京:高等教育出版社
  • ISBN:7040239639
  • 出版时间:2008
  • 标注页数:412页
  • 文件大小:25MB
  • 文件页数:425页
  • 主题词:编译程序-程序设计-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

编译原理 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 引论1

1.1编译器概述1

词法分析1

语法分析3

语义分析3

中间代码生成4

代码优化4

代码生成5

符号表管理5

阶段的分组6

解释器7

1.2编译器技术的应用7

高级语言的实现7

针对计算机体系结构的优化8

新计算机体系结构的设计9

程序翻译10

提高软件开发效率的工具11

习题112

第2章 词法分析13

2.1词法记号及属性13

词法记号、模式、词法单元14

词法记号的属性15

词法错误16

2.2词法记号的描述与识别16

串和语言16

正规式17

正规定义19

状态转换图20

2.3有限自动机23

不确定的有限自动机23

确定的有限自动机24

NFA到DFA的变换25

DFA的化简28

2.4从正规式到有限自动机30

2.5词法分析器的生成器32

习题235

第3章 语法分析38

3.1上下文无关文法38

上下文无关文法的定义39

推导40

分析树41

二义性42

3.2语言和文法43

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

分离词法分析器的理由44

验证文法产生的语言44

适当的表达式文法45

消除二义性46

消除左递归47

提左因子48

非上下文无关的语言构造49

形式语言鸟瞰51

3.3自上而下分析52

自上而下分析的一般方法52

LL(1)文法53

递归下降的预测分析54

非递归的预测分析56

构造预测分析表58

预测分析的错误恢复59

3.4自下而上分析62

归约62

句柄63

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

移进-归约分析的冲突65

3.5 LR分析器67

LR分析算法67

LR文法和LR分析方法的特点71

构造SLR分析表72

构造规范的LR分析表79

构造LALR分析表83

非二义且非LR的上下文无关文法86

3.6二义文法的应用87

使用算符的优先级和结合性来解决冲突88

使用其他约定来解决冲突90

LR分析的错误恢复91

3.7语法分析器的生成器93

分析器的生成器Yacc93

用Yacc处理二义文法96

Yacc的错误恢复99

习题3100

第4章 语法制导的翻译106

4.1语法制导的定义106

语法制导定义的形式107

综合属性108

继承属性108

属性依赖图109

属性计算次序110

4.2 S属性定义的自下而上计算111

语法树111

构造语法树的语法制导定义112

S属性的自下而上计算113

4.3 L属性定义的自上而下计算115

L属性定义116

翻译方案116

预测翻译器的设计120

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

4.4 L属性的自下而上计算122

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

分析栈上的继承属性123

模拟继承属性的计算125

习题4127

第5章 类型检查130

5.1类型在编程语言中的作用130

执行错误和安全语言131

类型化语言和类型系统131

类型化语言的优点133

5.2描述类型系统的语言134

定型断言135

定型规则136

类型检查和类型推断137

5.3一个简单类型检查器的规范137

一个简单的语言137

类型系统138

类型检查140

类型转换141

5.4多态函数142

为什么要使用多态函数143

类型变量144

一个含多态函数的语言145

代换、实例和合一146

多态函数的类型检查147

5.5类型表达式的等价151

类型表达式的结构等价151

类型表达式的名字等价152

记录类型153

类型表示中的环154

5.6函数和算符的重载154

子表达式的可能类型集合155

缩小可能类型的集合156

习题5157

第6章 运行时存储空间的组织和管理163

6.1局部存储分配164

过程164

名字的作用域和绑定165

活动记录165

局部数据的安排166

程序块167

6.2全局栈式存储分配168

运行时内存的划分168

活动树和运行栈169

调用序列171

栈上可变长度数据173

悬空引用174

6.3非局部名字的访问175

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

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

动态作用域179

6.4参数传递180

值调用180

引用调用181

换名调用181

6.5堆管理182

内存管理器183

计算机内存分层184

程序局部性185

手工回收请求186

习题6186

第7章 中间代码生成199

7.1中间语言200

后缀表示200

图形表示200

三地址代码201

静态单赋值形式203

7.2声明语句204

过程中的声明204

作用域信息的保存205

记录的域名207

7.3赋值语句207

符号表中的名字208

数组元素的地址计算208

数组元素地址计算的翻译方案209

类型转换212

7.4布尔表达式和控制流语句213

布尔表达式214

控制流语句的翻译214

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

开关语句的翻译218

过程调用的翻译220

习题7221

第8章 代码生成227

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

目标程序227

指令选择228

寄存器分配229

计算次序选择229

8.2目标语言230

目标机器的指令集230

指令的代价231

8.3基本块和流图233

基本块233

基本块的优化234

流图235

下次引用信息236

8.4一个简单的代码生成器237

寄存器描述和地址描述238

代码生成算法238

寄存器选择函数239

为变址和指针语句产生代码241

条件语句241

习题8242

第9章 独立于机器的优化250

9.1优化的主要种类250

优化的主要源头250

一个实例251

公共子表达式删除252

复写传播255

死代码删除256

代码外提256

强度削弱和归纳变量删除257

9.2数据流分析介绍258

数据流抽象259

数据流分析模式260

到达-定值261

活跃变量265

可用表达式267

小结269

9.3数据流分析的基础270

半格270

迁移函数273

一般框架的迭代算法274

数据流解的含义276

9.4常量传播278

常量传播框架的数据流值278

常量传播框架的迁移函数279

常量传播框架的单调性280

常量传播框架的非分配性280

结果的解释281

9.5部分冗余删除282

冗余的根源282

能否删除所有的冗余284

惰性代码移动问题285

预期表达式286

惰性代码移动算法286

9.6流图中的循环291

支配结点291

回边和可归约性293

流图的深度294

自然循环294

迭代流图算法的收敛速度296

习题9297

第10章 依赖于机器的优化306

10.1处理器体系结构307

指令流水线和分支延迟307

流水化的执行308

多指令发射308

10.2代码调度的约束309

数据相关309

发现内存访问中的相关性310

寄存器使用和并行执行之间的折中311

寄存器分配和代码调度的次序安排312

控制相关313

投机执行的支持313

一个基本的机器模型314

10.3基本块调度315

数据依赖图315

基本块的表调度316

区分优先级的拓扑次序317

10.4全局代码调度318

简单的代码移动318

向上的代码移动319

向下的代码移动320

更新数据相关321

全局调度的其他问题321

静态调度器和动态调度器的交互322

10.5软件流水323

引言323

循环的软件流水324

寄存器分配和代码生成326

do-across循环327

软件流水的目标和约束328

软件流水算法329

无环数据依赖图的调度330

10.6并行性和数据局部性优化概述331

多处理器331

应用中的并行性333

循环级并行334

数据局部性335

矩阵乘法算法336

矩阵乘法算法的优化338

习题10340

第11章 编译系统和运行系统343

11.1 C语言的编译系统343

预处理器344

汇编器345

连接器346

目标文件的格式347

符号解析349

静态库350

可执行目标文件及装入352

动态连接353

处理目标文件的一些工具354

11.2 Java语言的运行系统355

Java虚拟机语言简介355

Java虚拟机356

即时编译器357

11.3无用单元收集359

标记和清扫359

引用计数360

拷贝收集361

分代收集363

渐增式收集364

编译器与收集器之间的相互影响364

习题11367

第12章 面向对象语言的编译371

12.1面向对象语言的概念371

对象和对象类371

继承372

信息封装374

12.2方法的编译374

12.3继承的编译方案377

单一继承的编译方案378

重复继承的编译方案380

习题12384

第13章 函数式语言的编译387

13.1函数式编程语言简介387

语言构造387

参数传递机制389

变量的自由出现和约束出现390

13.2函数式语言的编译简介392

几个受启发的例子392

编译函数394

环境与约束394

13.3抽象机的体系结构396

抽象机的栈396

抽象机的堆397

名字的寻址398

约束的建立399

13.4指令集和编译400

表达式400

变量的引用性出现401

函数定义402

函数应用404

构造和计算闭包407

letrec表达式和局部变量409

习题13410

参考文献412

热门推荐