《编译程序的设计与现实》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:刘磊等编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2004
  • ISBN:7040146207
  • 页数:326 页
图书介绍:编译程序是计算机系统不可缺少的部分,是程序设计者的必备工具。学习并掌握编译程序的构造原理和实用技术,能够提高对程序语言的理解,提高程序设计,尤其是大型软件的设计能力。本书针对一个教学语言,介绍了该语言编译程序的实现方法,并对已经实现的编译程序的源代码分阶段进行了详细的分析,尤其是对编译器程序的组成、算法、所用数据结构以及各功能部分所采用的编译技术都作了详细的介绍,并配有图例说明。读者在学习本课程的同时,可以通过本书中编译实例的分析,进一步理解和掌握编译器程序的构造和实现方式,同时通过本书中提供的编译程序源代码的阅读和改进,可以大大地提高程序设计能力。本书可作为普通高校计算机及相关专业编译原理课程的教材使用,也可作为程序设计人员的参考书。

第一章 编译原理概述 1

1.1 高级程序设计语言的实现 1

目录 1

1.2 编译程序的组成 2

1.3 编译程序的实现 4

1.4 其他相关程序 5

2.2 SNL的词法 7

2.2.1 语言的字符表 7

2.2.2 单词的巴科斯范式 7

2.1 SNL的特点 7

第二章 SNL介绍 7

2.3 SNL的语法 8

2.3.1 语法的非形式说明 8

2.3.2 语法的形式定义 9

2.4 SNL的语义 13

习题二 14

第三章 SNL编译程序简介 15

3.1 SNL编译程序功能结构 15

3.2 SNL编译程序的开发环境 17

3.3 SNL编译程序包 17

说明 29

3.4 SNL编译程序的主程序 29

第四章 SNL的词法分析 35

4.1 词法分析简介 35

4.1.1 单词的分类 35

4.1.2 单词的TOKEN表示 36

4.1.3 词法分析程序和语法分析程序的接口 37

4.2 DFA的构造和实现 37

4.2.1 状态转换图 37

4.2.2 状态转换图的实现 40

输出 42

4.3.1 词法分析程序的输入/ 42

4.3 词法分析程序的实现 42

4.3.2 实现词法分析程序的注意事项 44

4.3.3 词法分析程序的实现 45

框图 45

4.4 词法分析程序的自动生 49

成器 49

4.4.1 LEX/FLEX简介 49

4.4.2 LEX运行与应用过程 49

4.4.3 LEX源程序结构 50

分析程序 52

4.4.4 应用LEX构造词法 52

习题四 57

第五章 SNL的语法分析 58

5.1 语法分析概述 58

5.1.1 上下文无关文法 58

5.1.2 语法分析方法的分类 60

5.1.3 3个重要集合 60

5.1.4 SNL的Predict集 61

输出 64

5.2.1 语法分析程序的输入/ 64

5.2 语法分析程序的实现 64

5.2.2 语法树节点的数据 65

结构 65

5.3 递归下降法的实现 69

5.3.1 递归下降法基本原理 69

5.3.2 递归下降法应满足的 70

条件 70

5.3.3 递归下降法的语法分析 71

程序框图 71

基本原理 117

5.4.1 LL(1)语法分析方法的 117

实现 117

5.4 LL(1)语法分析方法的 117

5.4.2 SNL的LL(1)语法 118

分析概述 118

5.4.3 LL(1)语法分析程序 119

框图 119

5.5 语法分析程序的自动生 158

成器 158

5.5.1 YACC/Bison 158

5.5.2 ACCENT 164

习题五 170

第六章 符号表管理与语义分析 171

6.1 语义分析概述 171

6.2 符号表管理 172

6.2.1 符号表的内容 172

6.2.2 符号表的组织 177

6.2.3 符号表的操作 179

6.2.4 符号表的实现 179

6.3 语义分析实现 181

6.3.1 输入/输出 182

6.3.2 算法框图 182

习题六 197

7.1 中间代码简介 198

第七章 中间代码生成 198

7.1.1 中间代码的表示形式 199

7.1.2 中间代码的生成方法 200

7.2 SNL的中间语言 201

7.3 SNL的中间代码生成 203

7.3.1 输入/输出 203

7.3.2 中间代码的构造方法 205

7.3.3 从语法树生成四元式 209

7.3.4 相关的应用函数 210

说明 213

7.3.5 中间代码生成程序 213

习题七 221

第八章 中间代码优化 222

8.1 中间代码优化简介 222

8.1.1 优化种类介绍 222

8.1.2 基本块的划分 223

8.2 常量表达式优化 224

8.2.1 常量表达式优化的 224

原理 224

8.2.2 常量表达式节省的 226

实现 226

8.3.1 公共表达式优化原理 231

8.3 公共表达式节省方法 231

8.3.2 公共表达式节省的 233

实现 233

8.4 循环不变式外提 241

8.4.1 循环不变式外提的 241

原理 241

8.4.2 循环外提的实现 244

习题八 251

储器 252

9.1.1 TM的寄存器和存 252

9.1 虚拟目标机TM 252

第九章 SNL的目标代码生成 252

9.1.2 TM的地址模式和指 253

令集 253

9.2 编译程序中运行时存储 254

空间管理 254

9.2.1 存储空间结构 255

9.2.2 过程活动记录 256

9.2.3 动态链 258

9.3 语法树到目标代码的生成 259

9.3.1 原理 259

9.3.2 框图 263

9.4.1 原理 274

9.4 四元式到目标代码的生成 274

9.4.2 四元式到目标代码生成中的关键问题 279

9.4.3 程序框图 280

习题九 292

10.1 解释程序 293

命令 293

10.2 虚拟目标机TM的可执行 293

程序 293

第十章 虚拟目标代码的解释 293

10.3 解释程序的实现 294

习题十 304

第十一章 实践课题 305

11.1 语言的扩充和实现 305

11.2 实现方法的扩充 305

11.3 应用自动生成工具 306

11.4 实现语言 306

12.1.2 SNLC的运行环境 307

12.1.1 SNLC的特色 307

12.1.3 SNLC的安装和卸载 307

第十二章 SNLC软件使用指南 307

12.1 SNLC概述 307

12.1.4 SNLC的启动和退出 311

12.2 SNLC的使用 312

12.2.1 SNL文件的操作 313

12.2.2 SNL程序的词法 313

分析 313

12.2.3 SNL程序的语法 314

分析 314

12.2.4 SNL程序的语义 315

分析 315

生成 316

12.2.5 SNL程序的中间代码 316

12.2.6 SNL程序的优化 317

12.2.7 SNL程序的目标代码 318

生成 318

12.2.8 SNL程序的虚拟 320

执行 320

12.3 有关问题的说明 323

12.3.1 SNLC的维护和出错 323

处理 323

12.3.2 SNLC的帮助功能 323

参考文献 326