编译原理及编译程序构造

编译原理及编译程序构造
作 者: 高仲仪 金茂忠
出版社: 北京航空航天大学出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 编译原理
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《编译原理及编译程序构造》作者简介

内容简介

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

图书目录

第一章 引 言

1. 1 程序设计语言

1. 2 翻译程序

1. 3 编译程序模型

1. 4 编译程序的前后处理器

1. 4. 1 预处理器

1. 4. 2 汇编程序

1. 4. 3 两遍汇编

1. 4. 4 加载器和连接编辑器

1. 5 编译技术在软件工程中的应用

练 习

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

2. 1 文法的非形式讨论

2. 1. 1 语法树

2. 1. 2 规则

2. 1. 3 由规则推导句子

练 习

2. 2 符号. 符号串及其集合的运算

2. 2. 1 字母表和符号串

2. 2. 2 符号串及其集合的运算

练 习

2. 3 文法和语言的形式定义

2. 3. 1 文法的形式定义

2. 3. 2 推导的形式定义

2. 3. 3 语言的形式定义

2. 3. 4 递归规则与递归文法

2. 3. 5 短语. 简单短语和句柄

练 习

2. 4 语法树和二义性

2. 4. 1 推导与语法树

2. 4. 2 文法的二义性

练 习

2. 5 符号串的分析

2. 5. 1 自顶向下分析

2. 5. 2 自底向上分析

2. 6 有关文法的实用限制

练 习

2. 7 扩充的BNF表示和语法图

2. 7. 1 扩充的BNF表示

2. 7. 2 语法图

2. 8 文法和语言分类

第三章 词法分析

3. 1 词法分析程序的功能

3. 2 源程序的输入与词法分桥程序的输Q.

3. 2. 1 源程序的输入

3. 2. 2 单词符号的种类及词法分析程序的输出形式

3. 3 正则文法及其状态图

3. 3. 1 状态图

3. 3. 2 状态图的作用

3. 4 词法分析程序的设计与实现

3. 4. 1 文法及其状态图

3. 4. 2 词法分析程序的构造

3. 4. 3 词法分析程序的实现

3. 5 正则文法和正则表达式

3. 6 有穷自动机(FA)

3. 6. 1 确定的有穷自动机(DFA)

3. 6. 2 不确定的有穷自动机(NFA)

3. 6. 3 NFA的确定化

3. 6. 4 正则表达式与有穷自动机的等价性

3. 7 词法分析程序的自动生成器

3. 7. 1 LEX源程序(LEX的输入文件)

3, 7. 2 LEX的实现

练 习

第四章 语法分析

4. 1 自顶向下分析方法

4. 1. 1 带回溯的自顶向下分桥算法

4. 1. 2 存在的问题及解决办法

4. 2 递归下降分析(递归子程序法)

练 习

4. 3 LL(1)分析方法

4. 3. 1 LL(1)分析器的逻辑结构及工作过程

4. 3. 2 LL(1)分析表的构造方法

练 习

4. 4 自底向上分析方法

4. 5 算符优先分析法

4. 5. 1 方法概述

4. 5. 2 直观算符优先分析法

4. 5. 3 算符优先分析法的进一步讨论

练 习

4. 6 LR分析方法

4. 6. 1 概念和术语

练 习

4. 6. 2 LR(0)分析器

练 习

4. 6. 3 SLR(1)分析器

练 习

4. 6. 4 规范LR(1)分析器

练 习

4. 6. 5 LALR(1)分析器

练 习

第五章 语法制导翻译技术

5. 1 翻译文法(TG)

5. 2 语法制导翻译

5. 3 属性翻译文法(ATG)

5. 3. 1 综合属性

5. 3. 2 继承属性

5. 3. 3 属性翻译文法

5. 3. 4 属性翻译文法举例——算术表达式的翻译

练 习

5. 4 自顶向下语法制导翻译

5. 4. 1 翻译文法的自顶向下处理

练 习

5. 4. 2 属性文法的自顶向下翻译

练 习

5. 5 自底向上的语法制导翻译

5. 5. 1 波兰翻译

5. 5. 2 S—属性文法

练 习

第六章 符号表管理技术

6. 1 前景和动机

6. 2 何时建立和访问符号表

6. 3 符号表内容

6. 4 在符号表上的操作

6. 5 非分程序结构语言的符号表组织

6. 5. 1 无序符号表

6. 5. 2 有序符号表

6. 5. 3 散列符号表

6. 6 分程序结构语言的符号表组织

6. 6. 1 分程序结构语言的概念

6. 6. 2 栈式符号表

6. 6. 3 散列符号表的栈式实现

练 习

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

7. 1 静态存贮分配

练 习

7. 2 动态存贮分配

7. 2. 1 活动记录

7. 2. 2 参数区

7. 2. 3 Display区

7. 2. 4 运行时的地址计算

7. 2. 5 递归过程的处理

练 习

7. 3 堆式存贮分配

7. 3. 1 隐式存贮请求

7. 3. 2 显示存贮请求

7. 3. 3 堆式存贮管理技术

第八章 源程序的中间形式

8. 1 波兰表示

8. 2 N—元表示

8. 3 抽象语法树

8. 4 抽象机代码

8. 4. 1 可移植性和抽象机

8. 4. 2 PASCAL的P—code抽象机

练 习

第九章 错误处理

9. 1 概述

9. 2 错误的分类

9. 3 错误的诊察与报告

9. 4 错误处理技术

9. 4. 1 错误改正

9. 4. 2 错误局部化处理

9. 5 遏止重复的错误信息

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

l0. 1 语义分析的概念

10. 2 栈式抽象机及其汇编指令

10. 3 声明的处理

10. 3. 1 常量类型

10. 3. 2 简单变量

10. 3. 3 数组变量

lo. 3. 4 记录变量

10. 3. 5 过程声明

l0. 4 表达式

10. 5 赋值语句

10. 6 控制语句

10. 6. 1 if语句

10. 6. 2 分情形语句

10. 6. 3 repeat—while语句

lo. 6. 4 for循环语句

10. 7 过程调用和返回

10. 7. 1 参数的基本传递形式

10. 7. 2 过程调用

10. 7. 3 返回语句和过程终止

10. 8 输入和输出语句

10. 8. 1 输入语句

10. 8. 2 输出语句

10. 9 编译程序的辅助功能

练 习

第十一章 代码优化

11. 1 概述

11. 2 基本块

11. 3 常数合并

11. 4 冗余子表达式的消防

11. 5 循环内的优化

11. 5. 1 循环展开

11. 5. 2 额度削弱

11. 5. 3 强度削弱

11. 5. 4 循环优化技术的综合

练 习

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

12. 1 与机器有关的优化概述

12. 2 寄存器分配的优化

12. 2. 1 单寄存器机器中的寄存器分配

12. 2. 2 多寄存器机器中的寄存器分配

12. 3 目标机和目标代码生成

12. 3. 1 PDP—11

12. 3. 2 VAX—11

练 习

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

13. 1 编译程序的书写语言

13. 2 自展

13. 3 移植

13. 4 编译程序一编译程序

13. 4. 1 YACC:一个LALR(1)分析器生成器

13. 4. 2 属性LL(1)分析器生成器

13. 4. 3 代码生成器的生成系统

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

14. 1 PL/O语言

14. 2 PL/O编译系统结构

14. 3 PL/0的词法分析

14. 4 PL/O的语法分析

14. 5 出错处理

14. 6 目标代码的生成和解释执行

14. 7 PL/O程序编译和运行举例

第十五章 Pascal—S编译系统

15. 1 Pascal—S语言

15. 2 Pascal—S编译程序的结构

15. 3 Pascal—S编译程序

15. 3. 1 表格

15. 3. 2 编译初启

15. 3. 3 实用程序

15. 3. 4 词法分析及处理

15. 3. 5 语法分析处理

15. 3. 6 出错处理

15. 4 Pascal—S解释执行程序

15. 4. 1 P代码指令系统

15. 4. 2 运行栈

15. 4. 3 运行时的display

15. 4. 4 运行出错处理和现场剖析打印

15. 5 编译及运行的例子

参考资料

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

附录B Pascal—S编译系统源程序请单