当前位置:首页 > 工业技术
编译原理及编译程序构造
编译原理及编译程序构造

编译原理及编译程序构造PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:高仲仪,金茂忠编
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:1990
  • ISBN:7810121863
  • 页数:444 页
图书介绍:内容简介 本书为高校计算机专业学习程序设计语言编译原理和方法的教材。全书内容分为两部分:第一部分 介绍编译程序的设计原理和构造;第二部分介绍两个较为典型的小型编译系统PL/0和PASCAL-S编译 程序。 本书较系统地介绍了翻译文法和属性文法的概念和表示,并用它们来描述程序语言的翻译过程。由 于这种描述是很接近形式化的,所以能够更系统、更清楚地说明语法、语义分析和代码生成的过程。这将 有利于读者学习和理解这部分内容。 书中还介绍了近年来在编译程序的自动生成工具的研制方面所取得的一些成果以及编译的原理和 方法在软件工程中的应用。最后介绍了PL/0和PASCAL-S编译程序。书中给出了这两个系统的全部源 程序和编译实例。为了提高可读性,在源程序中加上了必要的注释。 本书取材广泛新颖,在内容组织上注意了理论联系实际、由浅入深及循序渐进的原则,以便于读者阅 读。 本书可作为高等院校计算机专业程序设计语言编译课程的教材,也可供软件工程技术人员参考和作 为自学用书。
《编译原理及编译程序构造》目录

第一章 引言 1

1.1 程序设计语言 1

1.2 翻译程序 2

1.3 编译程序模型 4

1.4 编译程序的前后处理器 9

1.4.1 预处理器 9

1.4.2 汇编程序 10

1.4.3 两遍汇编 10

1.4.4 加载器和连接编辑器 11

1.5 编译技术在软件工程中的应用 11

2.1.1 语法树 14

2.1 文法的非形式讨论 14

第二章 文法和语言的概念和表示 14

2.1.2 规则 15

2.1.3 由规则推导句子 15

2.2 符号、符号串及其集合的运算 18

2.2.1 字母表和符号串 18

2.2.2 符号串及其集合的运算 18

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

2.3.1 文法的形式定义 20

2.3.2 推导的形式定义 21

2.3.3 语言的形式定义 22

2.3.4 递归规则与递归文法 24

2.3.5 短语、简单短语和句柄 25

2.4.1 推导与语法树 27

2.4 语法树和二义性 27

2.4.2 文法的二义性 30

2.5 符号串的分析 35

2.5.1 自顶向下分析 35

2.5.2 自底向上分析 36

2.6 有关文法的实用限制 37

2.7 扩充的BNF表示和语法图 39

2.7.1 扩充的BNF表示 39

2.7.2 语法图 40

2.8 文法和语言分类 41

第三章 词法分析 43

3.1 词法分析程序的功能 43

3.2.1 源程序的输入 44

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

3.2.2 单词符号的种类及词法分析程序的输出形式 45

3.3 正则文法及其状态图 45

3.3.1 状态图 46

3.3.2 状态图的作用 46

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

3.4.1 文法及其状态图 47

3.4.2 词法分析程序的构造 48

3.4.3 词法分析程序的实现 49

3.5 正则文法和正则表达式 52

3.6 有穷自动机(FA) 54

3.6.1 确定的有穷自动机(DFA) 54

3.6.2 不确定的有穷自动机(NFA) 56

3.6.3 NFA的确定化 57

3.6.4 正则表达式与有穷自动机的等价性 59

3.7 词法分析程序的自动生成器 63

3.7.1 LEX源程序(LEX的输入文件) 63

3.7.2 LEX的实现 64

第四章 语法分析 69

4.1 自顶向下分析方法 69

4.1.1 带回溯的自顶向下分析算法 69

4.1.2 存在的问题及解决办法 70

4.2 递归下降分析(递归子程序法) 75

4.3 LL(1)分析方法 80

4.3.1 LL(1)分析器的逻辑结构及工作过程 80

4.3.2 LL(1)分析表的构造方法 84

4.4 自底向上分析方法 88

4.5 算符优先分析法 90

4.5.1 方法概述 90

4.5.2 直观算符优先分析法 92

4.5.3 算符优先分析法的进一步讨论 95

4.6 LR分析方法 100

4.6.1 概念和术语 101

4.6.2 LR(0)分析器 104

4.6.3 SLR(1)分析器 109

4.6.4 规范LR(1)分析器 117

4.6.5 LALR(1)分析器 123

第五章 语法制导翻译技术 128

5.1 翻译文法(TG) 128

5.2 语法制导翻译 130

5.3 属性翻译文法(ATG) 131

5.3.1 综合属性 131

5.3.2 继承属性 133

5.3.3 属性翻译文法 134

5.3.4 属性翻译文法举例——算术表达式的翻译 136

5.4 自顶向下语法制导翻译 139

5.4.1 翻译文法的自顶向下处理 139

5.4.2 属性文法的自顶向下翻译 145

5.5 自底向上的语法制导翻译 158

5.5.1 波兰翻译 159

5.5.2 S-属性文法 160

6.2 何时建立和访问符号表 163

6.1 前景和动机 163

第六章 符号表管理技术 163

6.3 符号表内容 165

6.4 在符号表上的操作 167

6.5 非分程序结构语言的符号表组织 169

6.5.1 无序符号表 169

6.5.2 有序符号表 170

6.5.3 散列符号表 171

6.6 分程序结构语言的符号表组织 180

6.6.1 分程序结构语言的概念 180

6.6.2 栈式符号表 182

6.6.3 散列符号表的栈式实现 183

7.1 静态存贮分配 186

第七章 运行时的存贮组织及管理 186

7.2 动态存贮分配 188

7.2.1 活动记录 190

7.2.2 参数区 190

7.2.3 Display区 190

7.2.4 运行时的地址计算 192

7.2.5 递归过程的处理 193

7.3 堆式存贮分配 196

7.3.1 隐式存贮请求 196

7.3.2 显示存贮请求 197

7.3.3 堆式存贮管理技术 198

8.1 波兰表示 205

第八章 源程序的中间形式 205

8.2 N-元表示 206

8.3 抽象语法树 208

8.4 抽象机代码 209

8.4.1 可移植性和抽象机 209

8.4.2 PASCAL的P-code抽象机 210

第九章 错误处理 212

9.1 概述 212

9.2 错误的分类 212

9.3 错误的诊察与报告 213

9.4 错误处理技术 214

9.4.1 错误改正 215

9.4.2 错误局部化处理 215

9.5 遏止重复的错误信息 217

第十章 语义分析和代码生成 219

10.1 语义分析的概念 219

10.2 栈式抽象机及其汇编指令 221

10.3 声明的处理 222

10.3.1 常量类型 223

10.3.2 简单变量 223

10.3.3 数组变量 225

10.3.4 记录变量 226

10.3.5 过程声明 227

10.4 表达式 228

10.5 赋值语句 234

10.6 控制语句 235

10.6.1 if语句 236

10.6.2 分情形语句 237

10.6.3 repeat-while语句 238

10.6.4 for循环语句 239

10.7 过程调用和返回 241

10.7.1 参数的基本传递形式 241

10.7.2 过程调用 242

10.7.3 返回语句和过程终止 246

10.8 输入和输出语句 246

10.8.1 输入语句 246

10.8.2 输出语句 249

10.9 编译程序的辅助功能 249

11.2 基本块 251

11.1 概述 251

第十一章 代码优化 251

11.3 常数合并 252

11.4 冗余子表达式的消除 257

11.5 循环内的优化 265

11.5.1 循环展开 266

11.5.2 频度削弱 269

11.5.3 强度削弱 275

11.5.4 循环优化技术的综合 278

第十二章 与机器有关的优化及目标代码的生成 283

12.1 与机器有关的优化概述 283

12.2.1 单寄存器机器中的寄存器分配 284

12.2 寄存器分配的优化 284

12.2.2 多寄存器机器中的寄存器分配 290

12.3 目标机和目标代码生成 294

12.3.1 PDP-11 295

12.3.2 VAX-11 299

第十三章 编译程序生成方法和工具 305

13.1 编译程序的书写语言 305

13.2 自展 306

13.3 移植 306

13.4 编译程序—编译程序 307

13.4.1 YACC:一个LALR(1)分析器生成器 308

13.4.2 属性LL(1)分析器生成器 313

13.4.3 代码生成器的生成系统 319

14.1 PL/0语言 324

第十四章 PL/0简单编译系统 324

14.2 PL/0编译系统结构 328

14.3 PL/0的词法分析 329

14.4 PL/0的语法分析 330

14.5 出错处理 332

14.6 目标代码的生成和解释执行 333

14.7 PL/0程序编译和运行举例 335

第十五章 Pascal-S编译系统 344

15.1 Pascal-S语言 344

15.2 Pascal-S编译程序的结构 349

15.3 Pascal-S编译程序 353

15.3.1 表格 353

15.3.2 编译初启 358

15.3.3 实用程序 359

15.3.4 词法分析及处理 359

15.3.5 语法分析处理 359

15.3.6 出错处理 364

15.4 Pascal-S解释执行程序 366

15.4.1 P代码指令系统 366

15.4.2 运行栈 368

15.4.3 运行时的display 369

15.4.4 运行出错处理和现场剖析打印 370

15.5 编译及运行的例子 370

参考资料 380

附录A PL/0编译系统源程序清单 383

附录B Pascal-S编译系统源程序清单 395

返回顶部