图书介绍

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

编译原理
  • 王生原等编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302381419
  • 出版时间:2015
  • 标注页数:399页
  • 文件大小:106MB
  • 文件页数:411页
  • 主题词:编译程序-程序设计-高等学校-教材

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

1.2 编译过程和编译程序的结构2

1.2.1 编译过程概述2

1.2.2 编译程序的结构5

1.2.3 编译阶段的组合6

1.3 解释程序和一些软件工具7

1.3.1 解释程序7

1.3.2 处理源程序的软件工具8

1.4 PL/0语言编译系统10

1.4.1 PL/0语言编译系统构成11

1.4.2 PL/0语言11

1.4.3 类P-code语言14

1.4.4 PL/0编译程序15

1.4.5 PL/0语言编译系统的驱动代码16

练习18

第2章 文法和语言19

2.1 文法的直观概念19

2.2 符号和符号串20

2.3 文法和语言的形式定义21

2.4 文法的类型25

2.5 上下文无关文法及其语法树26

2.6 句型的分析29

2.6.1 自上而下的分析方法30

2.6.2 自下而上的分析方法30

2.6.3 句型分析的有关问题31

2.7 有关文法实际应用的一些说明32

2.7.1 有关文法的实用限制32

2.7.2 上下文无关文法中的ε规则33

练习33

第3章 词法分析37

3.1 词法分析程序的设计37

3.1.1 词法分析程序和语法分析程序的接口方式37

3.1.2 词法分析程序的输出37

3.1.3 将词法分析工作分离的考虑38

3.1.4 词法分析程序中如何识别单词39

3.2 PL/0编译程序中词法分析程序的设计和实现39

3.3 单词的形式化描述工具44

3.3.1 正规文法44

3.3.2 正规式45

3.3.3 正规文法和正规式的等价性46

3.4 有穷自动机47

3.4.1 确定的有穷自动机(DFA)47

3.4.2 不确定的有穷自动机(NFA)49

3.4.3 NFA转换为等价的DFA50

3.4.4 确定有穷自动机的化简52

3.5 正规式和有穷自动机的等价性54

3.6 正规文法和有穷自动机的等价性57

3.7 词法分析程序的自动构造工具58

3.7.1 lex描述文件中使用的正规表达式59

3.7.2 lex描述文件的格式60

3.7.3 lex的使用63

3.7.4 与yacc的接口约定63

练习64

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

4.1 确定的自顶向下分析思想68

4.2 LL(1)文法的判别72

4.3 某些非LL(1)文法到LL(1)文法的等价变换77

4.3.1 提取左公共因子77

4.3.2 消除左递归80

4.4 不确定的自顶向下分析思想84

4.5 LL(1)分析的实现86

4.5.1 递归下降LL(1)分析程序86

4.5.2 表驱动LL(1)分析程序92

4.6 LL(1)分析中的出错处理95

4.6.1 应急恢复95

4.6.2 短语层恢复96

4.6.3 PL/0语法分析程序的错误处理98

练习99

第5章 自底向上优先分析103

5.1 自底向上优先分析概述104

5.2 简单优先分析法104

5.2.1 优先关系定义105

5.2.2 简单优先文法的定义106

5.2.3 简单优先分析法的操作步骤106

5.3 算符优先分析法107

5.3.1 直观算符优先分析法107

5.3.2 算符优先文法的定义108

5.3.3 算符优先关系表的构造110

5.3.4 算符优先分析算法115

5.3.5 优先函数117

5.3.6 算符优先分析法的局限性121

练习121

第6章 LR分析123

6.1 LR分析概述123

6.2 LR(0)分析124

6.2.1 可归前缀和子前缀125

6.2.2 识别活前缀的有限自动机127

6.2.3 活前缀及可归前缀的一般计算方法128

6.2.4 LR(0)项目集规范族的构造130

6.3 SLR(1)分析137

6.4 LR(1)分析144

6.4.1 LR(1)项目集族的构造145

6.4.2 LR(1)分析表的构造146

6.5 LALR(1)分析148

6.6 二义性文法在LR分析中的应用153

练习156

第7章 语法制导的语义计算160

7.1 基于属性文法的语义计算160

7.1.1 属性文法160

7.1.2 遍历分析树进行语义计算164

7.1.3 S-属性文法和L-属性文法166

7.1.4 基于S-属性文法的语义计算166

7.1.5 基于L-属性文法的语义计算168

7.2 基于翻译模式的语义计算172

7.2.1 翻译模式172

7.2.2 基于S-翻译模式的语义计算173

7.2.3 基于L-翻译模式的自顶向下语义计算174

7.2.4 基于L-翻译模式的自底向上语义计算178

7.3 分析和翻译程序的自动生成工具yacc183

7.3.1 yacc描述文件184

7.3.2 使用yacc的一个简单例子187

练习189

第8章 静态语义分析和中间代码生成195

8.1 符号表195

8.1.1 符号表的作用195

8.1.2 符号的常见属性196

8.1.3 符号表的实现197

8.1.4 符号表体现作用域与可见性197

8.1.5 实例:PL/0编译程序中符号表的设计与实现199

8.2 静态语义分析203

8.2.1 静态语义分析的主要任务203

8.2.2 类型检查204

8.3 中间代码生成208

8.3.1 常见的中间表示形式208

8.3.2 生成抽象语法树210

8.3.3 生成三地址码211

8.4 多遍的方法220

练习223

第9章 运行时存储组织229

9.1 运行时存储组织概述229

9.1.1 运行时存储组织的作用与任务229

9.1.2 程序运行时存储空间的布局230

9.1.3 存储分配策略231

9.2 活动记录234

9.2.1 过程活动记录234

9.2.2 嵌套过程定义中非局部量的访问236

9.2.3 嵌套程序块的非局部量访问239

9.2.4 动态作用域规则和静态作用域规则240

9.3 过程调用241

9.4 PL/0编译程序的运行时存储组织243

9.4.1 PL/0程序运行栈中的过程活动记录244

9.4.2 实现过程调用和返回的类P-code指令245

9.5 面向对象语言存储分配策略247

9.5.1 类和对象的角色247

9.5.2 面向对象程序运行时的特征247

9.5.3 对象的存储组织248

9.5.4 例程的动态绑定249

9.5.5 其他话题251

练习251

第10章 代码优化和目标代码生成255

10.1 基本块、流图和循环255

10.1.1 基本块255

10.1.2 流图256

10.1.3 循环257

10.2 数据流分析基础258

10.2.1 数据流方程的概念259

10.2.2 到达-定值数据流分析259

10.2.3 活跃变量数据流分析262

10.2.4 几种重要的变量使用数据流信息263

10.3 代码优化技术268

10.3.1 窥孔优化270

10.3.2 局部优化271

10.3.3 循环优化275

10.3.4 全局优化278

10.4 目标代码生成技术279

10.4.1 目标代码生成的主要环节280

10.4.2 一个简单的代码生成过程282

10.4.3 高效使用寄存器285

10.4.4 图着色寄存器分配288

10.4.5 PL/0编译器的目标代码生成程序289

练习292

第11章 课程设计296

11.1 基于PL/0编译器的课程设计296

11.2 基于Decaf编译器的课程设计297

11.2.1 Decaf编译器实验的总体结构298

11.2.2 词法和语法分析(阶段一)300

11.2.3 语义分析(阶段二)303

11.2.4 中间代码生成(阶段三)309

11.2.5 代码优化(阶段四)317

11.2.6 目标代码生成(阶段五)320

11.2.7 基于Decaf编译器的课程设计333

11.3 软件包相关信息说明335

第12章 编译器和相关工具实例——GCC/Binutils336

12.1 开源编译器GCC336

12.1.1 GCC介绍337

12.1.2 GCC总体结构338

12.1.3 GCC编译流程339

12.1.4 GCC代码组织341

12.1.5 小结341

12.2 开源工具Binutils341

12.2.1 目标文件341

12.2.2 汇编器和链接器342

12.2.3 其他工具343

12.2.4 小结343

12.3 编译器和工具使用实例343

12.3.1 编译特定版本的编译器343

12.3.2 查看目标文件347

12.3.3 程序代码优化349

12.3.4 小结353

练习353

附录A PL/0编译程序文本354

参考文献398

热门推荐