图书介绍

编译原理PDF|Epub|txt|kindle电子书版本网盘下载

编译原理
  • 蒋宗礼,姜守旭编著 著
  • 出版社: 北京:高等教育出版社
  • ISBN:9787040290585
  • 出版时间:2010
  • 标注页数:439页
  • 文件大小:268MB
  • 文件页数:453页
  • 主题词:编译程序-程序设计-高等学校-教材

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 程序设计语言的翻译4

1.3 编译程序的总体结构8

1.4 编译程序的组织15

1.5 编译程序的生成17

1.6 本章小结22

习题22

第2章 高级语言及其文法24

2.1 语言概述24

2.2 基本定义26

2.3 文法的定义31

2.4 文法的分类40

2.5 CFG的语法树46

2.6 CFG的二义性53

2.7 本章小结57

习题58

第3章 词法分析64

3.1 词法分析器的功能64

3.1.1 单词的分类与表示65

3.1.2 词法分析器的输出67

3.1.3 源程序的输入缓冲与预处理68

3.1.4 词法分析阶段的错误处理70

3.1.5 词法分析器的位置72

3.2 单词的描述73

3.2.1 正则文法73

3.2.2 正则表达式74

3.2.3 正则表达式与正则文法的等价性77

3.2.4 有穷状态自动机83

3.2.5 状态转换图86

3.2.6 正则表达式转换为状态转换图87

3.3 单词的识别89

3.3.1 有穷状态自动机与单词识别的关系89

3.3.2 单词识别的状态转换图表示93

3.3.3 几种典型的单词识别问题96

3.3.4 状态转换图的实现98

3.3.5 词法分析程序的编写103

3.4 词法分析程序的自动生成106

3.4.1 Lex源程序106

3.4.2 Lex的实现原理111

3.5 本章小结112

习题112

第4章 自顶向下的语法分析118

4.1 语法分析概述118

4.2 自顶向下的语法分析面临的问题与文法的改造119

4.2.1 自顶向下分析面临的问题120

4.2.2 对上下文无关文法的改造123

4.2.3 LL(1)文法127

4.3 预测分析法131

4.3.1 预测分析器的构成131

4.3.2 预测分析表的构造134

4.3.3 预测分析中错误的处理134

4.4 递归下降分析法137

4.4.1 递归下降分析法的基本思想137

4.4.2 语法图和递归子程序法138

4.4.3 基于语法图的语法分析器的工作方式140

4.4.4 语法图的化简与实现140

4.4.5 递归子程序法的实现步骤143

4.5 本章小结143

习题144

第5章 自底向上的语法分析148

5.1 自底向上的语法分析概述148

5.1.1 移进-归约分析149

5.1.2 优先法151

5.1.3 状态法152

5.2 算符优先分析法155

5.2.1 算符优先文法155

5.2.2 算符优先矩阵的构造157

5.2.3 算符优先分析算法161

5.2.4 优先函数164

5.2.5 算符优先分析的出错处理167

5.3 LR分析法169

5.3.1 LR分析算法169

5.3.2 LR(0)分析表的构造173

5.3.3 SLR(1)分析表的构造181

5.3.4 LR(1)分析表的构造184

5.3.5 LALR(1)分析表的构造189

5.3.6 二义性文法的应用197

5.3.7 LR分析中的出错处理200

5.4 语法分析程序的自动生成工具Yacc202

5.4.1 Yacc源程序的结构203

5.4.2 Yacc源程序的声明部分204

5.4.3 Yacc源程序的规则部分205

5.4.4 Yacc源程序的例程部分206

5.4.5 Yacc对二义性文法的处理207

5.4.6 Yacc的出错处理209

5.5 本章小结209

习题210

第6章 语法制导翻译与属性文法215

6.1 语法制导翻译概述215

6.2 语法制导定义217

6.3 属性计算222

6.3.1 依赖图222

6.3.2 属性的计算顺序224

6.3.3 S-属性定义225

6.3.4 L-属性定义225

6.3.5 属性计算示例227

6.4 翻译模式231

6.4.1 翻译模式与语义动作的执行时机231

6.4.2 S-属性定义的自底向上翻译235

6.4.3 L-属性定义的自顶向下翻译238

6.4.4 L-属性定义的自底向上翻译244

6.5 本章小结249

习题249

第7章 语义分析与中间代码生成252

7.1 中间代码的形式252

7.1.1 逆波兰表示252

7.1.2 三地址码253

7.1.3 图表示257

7.2 声明语句的翻译260

7.2.1 类型表达式260

7.2.2 类型等价262

7.2.3 声明语句的文法262

7.2.4 过程内声明语句的翻译262

7.2.5 嵌套过程中声明语句的翻译264

7.2.6 记录的翻译266

7.3 赋值语句的翻译267

7.3.1 简单赋值语句的翻译267

7.3.2 数组元素的寻址268

7.3.3 带有数组引用的赋值语句的翻译270

7.3.4 记录域的访问272

7.4 类型检查273

7.4.1 类型检查的规则273

7.4.2 类型转换274

7.5 控制结构的翻译276

7.5.1 布尔表达式的翻译277

7.5.2 常见控制结构的翻译279

7.5.3 布尔表达式的控制流翻译281

7.5.4 混合模式的布尔表达式翻译283

7.6 回填285

7.6.1 布尔表达式的回填式翻译285

7.6.2 常用控制流语句的回填式翻译288

7.6.3 for循环语句的回填式翻译293

7.6.4 repeat语句的回填式翻译294

7.6.5 break、continue及goto语句的翻译294

7.7 switch语句的翻译295

7.7.1 switch语句翻译的基本思想295

7.7.2 switch语句的语法制导翻译296

7.8 过程调用和返回语句的翻译298

7.9 输入输出语句的翻译300

7.10 本章小结302

习题302

第8章 符号表管理307

8.1 符号表的作用307

8.2 符号表中存放的信息309

8.2.1 符号表中的名字309

8.2.2 符号表中的属性311

8.2.3 符号的地址属性312

8.3 符号表的组织结构313

8.3.1 符号表的线性表实现313

8.3.2 符号表的散列表实现314

8.4 符号表与作用域317

8.4.1 程序块结构的符号表318

8.4.2 程序块结构符号表的其他实现320

8.4.3 C语言的符号表323

8.4.4 嵌套过程的符号表324

8.5 本章小结325

习题325

第9章 运行时的存储组织327

9.1 与存储组织有关的源语言概念与特征327

9.1.1 名字及其绑定327

9.1.2 声明的作用域328

9.1.3 过程及其活动331

9.1.4 参数传递方式332

9.1.5 对变长数据及用户自由申请空间的支持334

9.2 存储组织335

9.2.1 运行时内存的划分335

9.2.2 活动记录336

9.2.3 局部数据的组织337

9.2.4 全局存储分配策略337

9.3 静态存储分配338

9.4 栈式存储分配340

9.4.1 调用序列和返回序列341

9.4.2 C语言的过程调用和过程返回342

9.4.3 栈中的可变长数据343

9.5 栈中非局部数据的访问344

9.5.1 无嵌套过程的静态作用域的实现345

9.5.2 包含嵌套过程的静态作用域的实现346

9.5.3 动态作用域的实现351

9.6 堆管理352

9.6.1 内存管理器352

9.6.2 内存体系353

9.6.3 程序中的局部性354

9.6.4 降低碎片量的堆区空间管理策略355

9.6.5 人工回收请求357

9.7 本章小结359

习题360

第10章 代码优化363

10.1 优化的种类363

10.1.1 公共子表达式删除364

10.1.2 复制传播366

10.1.3 无用代码删除366

10.1.4 代码外提367

10.1.5 强度削弱和归纳变量删除367

10.2 控制流分析369

10.2.1 基本块369

10.2.2 流图370

10.2.3 循环371

10.3 数据流分析374

10.3.1 数据流方程的一般形式374

10.3.2 到达-定义分析375

10.3.3 活跃变量分析377

10.3.4 可用表达式分析378

10.4 局部优化380

10.4.1 基本块的DAG表示380

10.4.2 局部公共子表达式删除381

10.4.3 无用代码删除382

10.4.4 代数恒等式的使用382

10.4.5 数组引用的DAG表示383

10.4.6 指针赋值和过程调用的DAG表示384

10.4.7 从DAG到基本块的重组385

10.5 循环优化386

10.5.1 循环不变计算的检测386

10.5.2 代码外提387

10.5.3 归纳变量删除和强度削弱389

10.5.4 带有循环不变表达式的归纳变量393

10.6 全局优化393

10.6.1 全局公共子表达式的删除393

10.6.2 复制传播395

10.7 本章小结396

习题397

第11章 代码生成400

11.1 代码生成器设计中的问题400

11.1.1 代码生成器的输入400

11.1.2 目标代码的形式400

11.1.3 指令选择401

11.1.4 寄存器分配401

11.1.5 计算顺序选择402

11.2 目标语言402

11.2.1 目标机模型402

11.2.2 程序和指令的开销403

11.2.3 变量的运行时刻地址404

11.3 一个简单的代码生成器404

11.3.1 后续引用信息405

11.3.2 寄存器描述符与地址描述符406

11.3.3 代码生成算法406

11.3.4 常用三地址码的代码生成408

11.4 窥孔优化409

11.4.1 冗余指令消除410

11.4.2 不可达代码消除410

11.4.3 强度削弱411

11.4.4 特殊机器指令的使用411

11.4.5 其他处理411

11.5 寄存器分配与指派411

11.5.1 全局寄存器分配411

11.5.2 引用计数412

11.5.3 外层循环的寄存器指派413

11.6 本章小结414

习题414

附录 “编译原理”课程教学设计416

缩写符号424

词汇索引425

参考文献438

热门推荐