内容简介
本书介绍编译系统的一般构造原理、基本设计方法、主要实现技术和一些自动构造工具,主要由语言基础知识、词法分析、语法分析、中间代码生成、代码优化、目标代码生成、符号表的构造和运行时存储空间的组织等8部分组成。 本书首先从剖析一个简单的编译程序(PL/0)入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予必要的介绍;对于广泛使用的语法分析方法和语义分析技术,如递归子程序法、算符优先分析、LR分析及语法制导翻译等进行了详细的讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑等给予了描述;此外还介绍了编译程序的构造工具。同时引入“PL/0语言的编译程序”结构及文本,还引入LEX、YACC使用方法与实例。各章末附有习题。“编译原理”是一门对实践性要求较高的课程,为此,我们拟定了教学实验要求,列在附录D中。实验所参考的PL/0编译程序文本列在附录A中。附录B和C是对编译程序构造工具LEX和YACC的介绍。配合本书的教学自行研制了“编译原理计算机辅助教学软件”,附录E对该软件的功能和使用进行了说明。本书是高等院校计算机科学与技术专业的教材,也可作为教师、研究生或软件工程技术人员的参考书。
目录
前言
第1章 编译程序概论
1. 1 什么是编译程序
1. 2 编译过程概述
1. 3 编译程序的结构
1. 4 编译阶段的组合
1. 5 编译技术和软件工具
第2章 PL/0编译程序的实现
2. 1 PL/O语言描述
2. 1. 1 PL/0语言的语法描述图
2. 1. 2 PL/0语言文法的EBNF表示
2. 2 PL/O编译程序的结构
2. 3 PL/0编译程序的词法分析
2. 4 PL/0编译程序的语法分析
2. 5 PL/0编译程序的目标代码结构和代码生成
2. 6 PL/0编译程序的语法错误处理
2. 7 PL/0编译程序的目标代码解释执行时的存储分配
2. 8 练习
第3章 文法和语言
3. 1 文法的直观概念
3. 2 符号相符号串
3. 3 文法和语言的形式定义
3. 4 文法的类型
3. 5 上下文无关文法及其语法树
3. 6 句型的分析
3. 6. 1 自上而下的分析方法
3. 6. 2 自下而上的分析方法
3. 6. 3 句型分析的有关问题
3. 7 有关文法实用中的一些说明
3. 7. 1 有关文法的实用限制
3. 7. 2 上下文无关文法中的s规则
3. 8 练习
第4章 词法分析
4. 1 词法分析程序的设计
4. 1. 1 词法分析程序与语法分析程序的接口方式
4. 1. 2 词法分析程序的输出
4. 1. 3 将词法分析工作分离的考虑
4. 2 单词的描述工具
4. 2. 1 正规文法
4. 2. 2 正规式
4. 2. 3 正规文法到正规式
4. 3 有穷自动机
4. 3. 1 确定的有穷自动机 DFA
4. 3. 2 不确定的有穷自动机 NFA
4. 3. 3 NFA—DFA的转换
4. 3. 4 确定有穷自动机的化简
4. 4 正规式和有穷自动机的等价性
4. 5 正规文法和有穷自动机间的转换
4. 6 词法分析程序的自动构造工具
4. 6. 1 LEX语言
4. 7 练习
第5章 自顶向下语法分析方法
5. 1 确定的..