图书介绍

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

编译原理
  • 陈意云,张昱编著 著
  • 出版社: 北京:高等教育出版社
  • ISBN:7040133679
  • 出版时间:2003
  • 标注页数:382页
  • 文件大小:15MB
  • 文件页数:394页
  • 主题词:编译程序-程序设计-高等学校-教材

PDF下载


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

下载说明

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

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

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

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

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

图书目录

第1章编译器概述1

目 录1

1.1词法分析2

1.2语法分析2

1.3语义分析4

1.4中间代码生成5

1.5代码优化6

1.6代码生成6

1.8错误诊断和报告7

1.7符号表管理7

1.9阶段的分组9

习题19

第2章词法分析10

2.1词法记号及属性10

2.1.1词法记号、模式、词法单元11

2.1.2词法记号的属性12

2.2.1 串和语言13

2.1.3词法错误13

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

2.2.2正规式15

2.2.3正规定义16

2.2.4状态转换图17

2.3有限自动机20

2.3.1不确定的有限自动机21

2.3.2确定的有限自动机22

2.3.3 NFA到DFA的变换23

2.3.4 DFA的化简27

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

2.5词法分析器的生成器32

习题236

第3章语法分析39

3.1上下文无关文法39

3.1.1上下文无关文法的定义39

3.1.2推导41

3.1.3分析树43

3.1.4二义性43

3.2语言和文法44

3.2.1正规式和上下文无关45

文法的比较45

3.2.2分离词法分析器的理由45

3.2.3验证文法产生的语言46

3.2.4适当的表达式文法46

3.2.5消除二义性47

3.2.6消除左递归49

3.2.7提左因子50

3.2.8非上下文无关的语言结构51

3.2.9形式语言鸟瞰52

3.3自上而下分析53

3.3.1 自上而下分析的一般方法54

3.3.2 LL(1)文法55

3.3.3递归下降的预测分析56

3.3.4非递归的预测分析58

3.3.5构造预测分析表60

3.3.6预测分析的错误恢复62

3.4自下而上分析65

3.4.1 归约65

3.4.2句柄66

3.4.3用栈实现移进—归约分析67

3.4.4移进—归约分析的冲突69

3.5 LR分析器70

3.5.1 LR分析算法71

3.5.2 LR文法和LR分析74

方法的特点74

3.5.3构造SLR分析表75

3.5.4构造规范的LR分析表83

3.5.5构造LALR分析表87

3.5.6非LR的上下文无关结构90

3.6.1使用文法以外的信息来解决92

分析动作的冲突92

3.6二义文法的应用92

3.6.2特殊情况产生式引起的94

二义性94

3.6.3 LR分析的错误恢复95

3.7分析器的生成器97

3.7.1分析器的生成器Yacc97

3.7.2用Yacc处理二义文法100

3.7.3 Yacc的错误恢复103

习题3105

第4章语法制导的翻译111

4.1语法制导的定义111

4.1.1语法制导定义的形式111

4.1.2综合属性113

4.1.3继承属性113

4.1.4属性依赖图114

4.1.5属性计算次序115

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

4.2.2构造语法树的语法制导定义117

4.2.1语法树117

4.2.3 S属性的自下而上计算119

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

4.3.1 L属性定义122

4.3.2翻译方案122

4.3.3预测翻译器的设计126

4.3.4用综合属性代替继承属性128

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

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

4.4.2分析栈上的继承属性130

4.4.3模拟继承属性的计算132

4.5递归计算135

4.5.1 自左向右遍历136

4.5.2其他遍历方法137

4.5.3多次遍历138

习题4140

第5章类型检查143

5.1.1引言144

5.1类型在程序设计语言中的作用144

5.1.2执行错误和安全语言145

5.1.3类型化语言的优点147

5.2描述类型系统的语言148

5.2.1定型断言149

5.2.2定型规则150

5.2.3类型检查和类型推断151

5.3简单类型检查器的说明151

5.3.1一个简单的语言152

5.3.2类型系统152

5.3.3类型检查154

5.3.4类型转换156

*5.4多态函数157

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

5.4.2类型变量158

5.4.3一个含多态函数的语言160

5.4.4代换、实例和合一161

5.4.5多态函数的类型检查162

5.5类型表达式的等价167

5.5.1类型表达式的结构等价168

5.5.2类型表达式的名字等价169

5.5.3记录类型170

5.5.4类型表示中的环171

5.6函数和算符的重载172

5.6.1子表达式的可能类型集合172

5.6.2缩小可能类型的集合174

习题5175

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

和管理181

6.1局部存储分配策略181

6.1.1过程182

6.1.2名字的作用域和绑定182

6.1.3活动记录183

6.1.4局部数据的安排184

6.1.5程序块185

6.2.1运行时内存的划分187

6.2全局存储分配策略187

6.2.2静态分配188

6.2.3栈式分配190

6.2.4堆式分配196

6.3非局部名字的访问197

6.3.1无过程嵌套的静态作用域198

6.3.2有过程嵌套的静态作用域198

6.3.3动态作用域202

6.4.1值调用203

6.4参数传递203

6.4.2引用调用204

6.4.3复写-恢复调用204

6.4.4换名调用205

习题6206

第7章中间代码生成215

7.1 中间语言215

7.1.1后缀表示215

7.1.2图形表示216

7.1.3三地址代码217

7.2声明语句219

7.2.1过程中的声明219

7.2.2作用域信息的保存219

7.2.3记录的域名222

7.3赋值语句223

7.3.1符号表中的名字223

7.3.2临时名字的重新使用224

7.3.3数组元素的地址计算225

7.3.4数组元素地址计算的226

翻译方案226

7.3.5类型转换230

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

7.4.1布尔表达式的翻译232

7.4.2控制流语句的翻译233

7.4.3布尔表达式的控制流翻译235

7.4.4开关语句的翻译237

7.4.5过程调用的翻译240

习题7241

第8章代秒生成245

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

8.1.1 目标程序245

8.1.2指令选择246

8.1.3寄存器分配247

8.1.4计算次序选择247

8.2.1 目标机器的指令系统248

8.2 目标机器248

8.2.2指令的代价249

8.3基本块和流图251

8.3.1基本块251

8.3.2基本块的变换253

8.3.3流图254

8.3.4下次引用信息255

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

8.4.1 寄存器描述和地址描述256

8.4.2代码生成算法257

8.4.3寄存器选择函数258

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

8.4.5条件语句260

习题8261

*第9章代码优化269

9.1优化的主要种类269

9.1.1代码改进变换的标准269

9.1.2公共子表达式删除272

9.1.3复写传播273

9.1.4死代码删除274

9.1.5代码外提275

9.1.6强度削弱和归纳变量删除275

9.1.7优化编译器的组织276

9.2流图中的循环278

9.2.1必经结点278

9.2.2 自然循环279

9.2.4可归约流图280

9.2.3前置结点280

9.3全局数据流分析介绍281

9.3.1点和路径282

9.3.2到达-定值283

9.3.3可用表达式286

9.3.4活跃变量分析289

9.4代码改进变换290

9.4.1公共子表达式删除291

9.4.2复写传播292

9.4.3寻找循环不变计算294

9.4.4代码外提294

9.4.5归纳变量删除297

习题9300

第10章编译系统和运行系统306

10.1 C语言的编译系统306

10.1.1预处理器307

10.1.2汇编器308

10.1.3连接器310

10.1.4目标文件的格式311

10.1.5符号解析313

10.1.6静态库314

10.1.7可执行目标文件及装入316

10.1.8动态连接317

10.1.9处理目标文件的一些工具319

10.2 Java语言的运行系统319

10.2.1 Java虚拟机语言简介320

10.2.2 Java虚拟机321

10.2.3即时编译器322

*10.3无用单元收集324

10.3.1标记和清扫325

10.3.2引用计数326

10.3.3拷贝收集327

10.3.4分代收集328

10.3.6编译器与收集器之间330

的相互影响330

10.3.5渐增式收集330

习题10334

*第11章 面向对象语言的编译337

11.1面向对象语言的概念337

11.1.1对象和对象类337

11.1.2继承338

11.1.3信息封装341

11.2方法的编译341

11.3继承的编译方案344

11.3.1单一继承的编译方案345

11.3.2重复继承的编译方案347

习题11352

*第12章 函数式语言的编译355

12.1 函数式程序设计语言简介355

12.1.1语言构造355

12.1.2参数传递机制357

出现358

12.1.3变量的自由出现和约束358

12.2函数式语言的编译简介360

12.2.1几个受启发的例子360

12.2.2编译函数362

12.2.3环境与约束363

12.3抽象机的系统结构364

12.3.1抽象机的栈365

12.3.2抽象机的堆366

12.3.3名字的寻址366

12.3.4约束的建立368

12.4指令集和编译369

12.4.1表达式369

12.4.2变量的引用性出现371

12.4.3函数定义372

12.4.4函数应用373

12.4.5构造和计算闭包376

12.4.6 letrec表达式和局部变量378

习题12380

参考文献382

热门推荐