图书介绍

编译原理与技术PDF|Epub|txt|kindle电子书版本下载

编译原理与技术
  • 李文生编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302441410
  • 出版时间:2016
  • 标注页数:416页
  • 文件大小:177MB
  • 文件页数:433页
  • 主题词:编译程序-程序设计-教材

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.1.1 程序设计语言1

1.1.2 翻译程序2

1.2 编译的阶段和任务4

1.2.1 分析阶段4

1.2.2 综合阶段7

1.2.3 符号表管理10

1.2.4 错误处理10

1.3 和编译有关的其他概念11

1.3.1 编译的前端和后端11

1.3.2 “遍”的概念11

1.4 编译程序的伙伴工具13

1.4.1 预处理器14

1.4.2 汇编程序14

1.4.3 连接装配程序16

1.5 编译原理的应用16

习题118

第2章 形式语言与自动机基础19

2.1 语言和文法19

2.1.1 字母表和符号串19

2.1.2 语言20

2.1.3 文法及其形式定义21

2.1.4 推导和短语23

2.1.5 分析树及二义性25

2.1.6 文法变换27

2.2 有限自动机31

2.2.1 确定的有限自动机32

2.2.2 非确定的有限自动机34

2.2.3 具有ε-转移的非确定的有限自动机36

2.2.4 DFA的化简40

2.3 正规文法与有限自动机的等价性42

2.4 正规表达式与有限自动机的等价性45

2.5 正规表达式与正规文法的等价性48

2.5.1 正规定义式48

2.5.2 表示的缩写49

2.5.3 正规表达式转换为等价的正规文法50

习题251

第3章 词法分析53

3.1 词法分析程序与语法分析程序的关系53

3.2 词法分析程序的输入与输出54

3.2.1 输入缓冲区54

3.2.2 词法分析程序的输出56

3.3 记号的描述和识别57

3.3.1 词法与正规文法58

3.3.2 记号的文法58

3.3.3 状态转换图与记号的识别61

3.4 词法分析程序的设计与实现62

3.4.1 文法及状态转换图63

3.4.2 词法分析程序的构造65

3.4.3 词法分析程序的实现65

3.5 LEX简介71

3.5.1 LEX源程序的结构71

3.5.2 LEX源程序举例74

习题376

程序设计177

第4章 语法分析78

4.1 语法分析简介78

4.1.1 语法分析程序的地位78

4.1.2 常用的语法分析方法78

4.1.3 语法错误的处理79

4.2 自顶向下分析方法80

4.2.1 递归下降分析81

4.2.2 递归调用预测分析82

4.2.3 非递归预测分析88

4.3 自底向上分析方法95

4.3.1 规范归约97

4.3.2 “移进-归约”方法的实现98

4.4 LR分析方法100

4.4.1 LR分析程序的模型及工作过程100

4.4.2 SLR(1)分析表的构造104

4.4.3 LR(1)分析表的构造112

4.4.4 LALR(1)分析表的构造119

4.4.5 LR分析方法对二义文法的应用124

4.4.6 LR分析的错误处理与恢复129

4.5 软件工具YACC131

4.5.1 YACC源程序132

4.5.2 YACC对二义文法的处理134

4.5.3 用LEX建立YACC的词法分析程序136

习题4137

程序设计2141

第5章 语法制导翻译技术142

5.1 语法制导定义及翻译方案143

5.1.1 语法制导定义143

5.1.2 依赖图146

5.1.3 计算次序147

5.1.4 S属性定义及L属性定义148

5.1.5 翻译方案149

5.2 S属性定义的自底向上翻译151

5.2.1 为表达式构造语法树的语法制导定义151

5.2.2 S属性定义的自底向上翻译155

5.3 L属性定义的自顶向下翻译158

5.3.1 消除翻译方案中的左递归158

5.3.2 预测翻译程序的设计162

5.4 L属性定义的自底向上翻译165

5.4.1 移走翻译方案中嵌入的语义规则166

5.4.2 直接使用分析栈中的继承属性166

5.4.3 变换继承属性的计算规则169

5.4.4 改写语法制导定义为S属性定义172

5.5 通用的语法制导翻译方法173

习题5176

第6章 语义分析180

6.1 语义分析概述180

6.1.1 语义分析的任务180

6.1.2 语义分析程序的位置181

6.1.3 错误处理181

6.2 符号表182

6.2.1 符号表的建立和访问时机182

6.2.2 符号表内容184

6.2.3 符号表操作187

6.2.4 符号表组织189

6.3 类型检查193

6.3.1 类型表达式194

6.3.2 类型等价197

6.4 一个简单的类型检查程序204

6.4.1 语言说明204

6.4.2 符号表的建立205

6.4.3 表达式的类型检查210

6.4.4 语句的类型检查213

6.4.5 类型转换214

6.5 类型检查有关的其他主题216

6.5.1 函数和运算符的重载216

6.5.2 多态函数217

习题6220

程序设计3223

第7章 运行环境225

7.1 程序运行时的存储组织225

7.1.1 程序运行空间的划分226

7.1.2 活动记录与控制栈227

7.1.3 名字的作用域及名字绑定230

7.2 存储分配策略231

7.2.1 静态存储分配231

7.2.2 栈式存储分配233

7.2.3 堆式存储分配237

7.3 非局部名字的访问239

7.3.1 程序块239

7.3.2 静态作用域规则下非局部名字的访问241

7.3.3 动态作用域规则下非局部名字的访问248

7.4 参数传递机制250

7.4.1 传值调用250

7.4.2 引用调用252

7.4.3 复制恢复253

7.4.4 传名调用255

习题7255

第8章 中间代码生成259

8.1 中间代码形式259

8.1.1 图形表示259

8.1.2 三地址代码260

8.2 赋值语句的翻译265

8.2.1 仅涉及简单变量的赋值语句的翻译265

8.2.2 涉及数组元素的赋值语句268

8.2.3 记录结构中域的访问273

8.3 布尔表达式的翻译274

8.3.1 翻译布尔表达式的方法274

8.3.2 数值表示法275

8.3.3 控制流表示法及回填技术276

8.4 控制语句的翻译282

8.5 goto语句的翻译287

8.6 CASE语句的翻译289

8.7 过程调用语句的翻译292

习题8294

第9章 目标代码生成297

9.1 目标代码生成概述297

9.1.1 代码生成程序的位置297

9.1.2 代码生成程序设计的相关问题298

9.2 基本块和流图300

9.3 下次引用信息302

9.4 一个简单的代码生成程序305

9.4.1 目标机器描述305

9.4.2 代码生成算法307

9.4.3 其他常用语句的代码生成312

习题9315

第10章 代码优化317

10.1 代码优化概述317

10.1.1 代码优化程序的功能和位置317

10.1.2 代码优化的主要种类317

10.2 基本块优化318

10.2.1 常数合并及常数传播318

10.2.2 删除公共表达式320

10.2.3 复制传播321

10.2.4 削弱计算强度321

10.2.5 改变计算次序321

10.3 dag在基本块优化中的应用322

10.3.1 基本块的dag表示322

10.3.2 基本块的dag构造算法323

10.3.3 dag的应用327

10.3.4 dag构造算法的进一步讨论330

10.4 循环优化333

10.4.1 循环展开333

10.4.2 代码外提334

10.4.3 削弱计算强度334

10.4.4 删除归纳变量335

10.5 窥孔优化337

10.5.1 删除冗余的传送指令337

10.5.2 删除死代码337

10.5.3 控制流优化338

10.5.4 削弱计算强度及代数化简338

习题10339

第11章 面向对象的编译方法341

11.1 面向对象语言的基本概念341

11.1.1 类和对象341

11.1.2 继承343

11.1.3 信息封装346

11.1.4 多态性347

11.2 方法的编译350

11.2.1 静态方法350

11.2.2 动态方法351

11.3 继承的编译354

11.3.1 单一继承的编译354

11.3.2 多继承的编译355

11.4 程序运行环境358

习题11359

第12章 编译程序构造实践360

12.1 编译程序的表示及实现方法360

12.1.1 表示方法360

12.1.2 实现语言360

12.1.3 自展法361

12.1.4 移植法362

12.2 PL/0语言及其编译程序介绍364

12.2.1 PL/0语言365

12.2.2 PL/0编译程序的结构368

12.2.3 PL/0编译程序的词法分析369

12.2.4 PL/0编译程序的语法分析371

12.2.5 PL/0编译程序的出错处理373

12.2.6 PL/0编译程序的执行环境及代码生成375

12.2.7 PL/0程序编译和运行示例379

12.3 GCC编译程序381

12.3.1 GCC简介382

12.3.2 GCC编译程序的结构与处理流程383

12.3.3 GCC的分析程序384

12.3.4 GCC的中间语言及中间代码生成385

12.3.5 GCC的代码优化389

12.3.6 GCC的代码生成391

12.4 编译实践392

12.4.1 Pascal-S语言说明392

12.4.2 课程设计要求及说明398

12.4.3 编译程序的测试400

附录 PL/0编译程序源程序402

参考文献416

热门推荐