- 高等教育出版社
- 9787040146202
- 1版
- 64271956-1
- 异16开
- 380
- 工学
- 计算机类
- 计算机科学与技术
- 本科 高职
内容简介
编译程序是计算机系统不可缺少的部分,是程序设计者的必备工具。学习并掌握编译程序的构造原理和实现技术,能够增强对程序设计语言的理解,提高程序设计、尤其是大型软件的设计能力。
本教材以一个简单的具有嵌套过程定义的过程式语言SNL作为教学语言,详细介绍了该语言编译程序的设计和实现方法,并对已经实现的编译程序的源代码分阶段进行了详细的分析,尤其是对编译程序的组成、实现算法、所用数据结构以及各功能部分所采用的编译技术都做了详细的介绍,并配有相应的框图说明。学生在学习“编译原理”课程的同时,可以配合本教材中编译实例的分析,进一步理解和掌握编译程序的构造原理和实现方法。此外,随书发行的光盘中含有SNLC(SNL编译程序)的安装程序、SNLC的源代码以及SNL源程序实例。学生可阅读其中的编译程序源代码,并根据需要对源代码进行改进,从而达到加深对编译原理的理解、提高程序设计能力的目的。
本教材是一本非常实用的编译程序实例分析和教学辅导教材,可作为高等院校计算机及相关专业的本科教材,也可供相关技术人员参考。
目录
目录
第一章 编译原理概述
1.1 高级程序设计语言的实现
1.2 编译程序的组成
1.3 编译程序的实现
1.4 其他相关程序
第二章 SNL介绍
2.1 SNL的特点
2.2 SNL的词法
2.2.1 语言的字符表
2.2.2 单词的巴科斯范式
2.3 SNL的语法
2.3.1 语法的非形式说明
2.3.2 语法的形式定义
2.4 SNL的语义
习题二
第三章 SNL编译程序简介
3.1 SNL编译程序功能结构
3.2 SNL编译程序的开发环境
3.3 SNL编译程序包
3.4 SNL编译程序的主程序说明
第四章 SNL的词法分析
4.1 词法分析简介
4.1.1 单词的分类
4.1.2 单词的TOKEN表示
4.1.3 词法分析程序和语法分析程序的接口
4.2 DFA的构造和实现
4.2.1 状态转换图
4.2.2 状态转换图的实现
4.3 词法分析程序的实现
4.3.1 词法分析程序的输入/输出
4.3.2 实现词法分析程序的注意事项
4.3.3 词法分析程序的实现框图
4.4 词法分析程序的自动生成器
4.4.1 LEX/FLEX简介
4.4.2 LEX运行与应用过程
4.4.3 LEX源程序结构
4.4.4 应用LEX构造词法分析程序
习题四
第五章 SNL的语法分析
5.1 语法分析概述
5.1.1 上下文无关文法
5.1.2 语法分析方法的分类
5.1.3 3个重要集合
5.1.4 SNL的Predict集
5.2 语法分析程序的实现
5.2.1 语法分析程序的输入/输出
5.2.2 语法树节点的数据结构
5.3 递归下降法的实现
5.3.1 递归下降法基本原理
5.3.2 递归下降法应满足的条件
5.3.3 递归下降法的语法分析程序框图
5.4 LL(1)语法分析方法的实现
5.4.1 LL(1)语法分析方法的基本原理
5.4.2 SNL的LL(1)语法分析概述
5.4.3 LL(1)语法分析程序框图
5.5 语法分析程序的自动生成器
5.5.1 YACC/Bison
5.5.2 ACCENT
习题五
第六章 符号表管理与语义分析
6.1 语义分析概述
6.2 符号表管理
6.2.1 符号表的内容
6.2.2 符号表的组织
6.2.3 符号表的操作
6.2.4 符号表的实现
6.3 语义分析实现
6.3.1 输入/输出
6.3.2 算法框图
习题六
第七章 中间代码生成
7.1 中间代码简介
7.1.1 中间代码的表示形式
7.1.2 中间代码的生成方法
7.2 SNL的中间语言
7.3 SNL的中间代码生成
7.3.1 输入/输出
7.3.2 中间代码的构造方法
7.3.3 从语法树生成四元式
7.3.4 相关的应用函数
7.3.5 中间代码生成程序说明
习题七
第八章 中间代码优化
8.1 中间代码优化简介
8.1.1 优化种类介绍
8.1.2 基本块的划分
8.2 常量表达式优化
8.2.1 常量表达式优化的原理
8.2.2 常量表达式节省的实现
8.3 公共表达式节省方法
8.3.1 公共表达式优化原理
8.3.2 公共表达式节省的实现
8.4 循环不变式外提
8.4.1 循环不变式外提的原理
8.4.2 循环外提的实现
习题八
第九章 SNL的目标代码生成
9.1 虚拟目标机TM
9.1.1 TM的寄存器和存储器
9.1.2 TM的地址模式和指令集
9.2 编译程序中运行时存储空间管理
9.2.1 存储空间结构
9.2.2 过程活动记录
9.2.3 动态链
9.3 语法树到目标代码的生成
9.3.1 原理
9.3.2 框图
9.4 四元式到目标代码的生成
9.4.1 原理
9.4.2 四元式到目标代码生成中的关键问题
9.4.3 程序框图
习题九
第十章 虚拟目标代码的解释程序
10.1 解释程序
10.2 虚拟目标机TM的可执行命令
10.3 解释程序的实现
习题十
第十一章 实践课题
11.1 语言的扩充和实现
11.2 实现方法的扩充
11.3 应用自动生成工具
11.4 实现语言
第十二章 SNLC软件使用指南
12.1 SNLC概述
12.1.1 SNLC的特色
12.1.2 SNLC的运行环境
12.1.3 SNLC的安装和卸载
12.1.4 SNLC的启动和退出
12.2 SNLC的使用
12.2.1 SNL文件的操作
12.2.2 SNL程序的词法分析
12.2.3 SNL程序的语法分析
12.2.4 SNL程序的语义分析
12.2.5 SNL程序的中间代码生成
12.2.6 SNL程序的优化
12.2.7 SNL程序的目标代码生成
12.2.8 SNL程序的虚拟执行
12.3 有关问题的说明
12.3.1 SNLC的维护和出错处理
12.3.2 SNLC的帮助功能
参考文献
第一章 编译原理概述
1.1 高级程序设计语言的实现
1.2 编译程序的组成
1.3 编译程序的实现
1.4 其他相关程序
第二章 SNL介绍
2.1 SNL的特点
2.2 SNL的词法
2.2.1 语言的字符表
2.2.2 单词的巴科斯范式
2.3 SNL的语法
2.3.1 语法的非形式说明
2.3.2 语法的形式定义
2.4 SNL的语义
习题二
第三章 SNL编译程序简介
3.1 SNL编译程序功能结构
3.2 SNL编译程序的开发环境
3.3 SNL编译程序包
3.4 SNL编译程序的主程序说明
第四章 SNL的词法分析
4.1 词法分析简介
4.1.1 单词的分类
4.1.2 单词的TOKEN表示
4.1.3 词法分析程序和语法分析程序的接口
4.2 DFA的构造和实现
4.2.1 状态转换图
4.2.2 状态转换图的实现
4.3 词法分析程序的实现
4.3.1 词法分析程序的输入/输出
4.3.2 实现词法分析程序的注意事项
4.3.3 词法分析程序的实现框图
4.4 词法分析程序的自动生成器
4.4.1 LEX/FLEX简介
4.4.2 LEX运行与应用过程
4.4.3 LEX源程序结构
4.4.4 应用LEX构造词法分析程序
习题四
第五章 SNL的语法分析
5.1 语法分析概述
5.1.1 上下文无关文法
5.1.2 语法分析方法的分类
5.1.3 3个重要集合
5.1.4 SNL的Predict集
5.2 语法分析程序的实现
5.2.1 语法分析程序的输入/输出
5.2.2 语法树节点的数据结构
5.3 递归下降法的实现
5.3.1 递归下降法基本原理
5.3.2 递归下降法应满足的条件
5.3.3 递归下降法的语法分析程序框图
5.4 LL(1)语法分析方法的实现
5.4.1 LL(1)语法分析方法的基本原理
5.4.2 SNL的LL(1)语法分析概述
5.4.3 LL(1)语法分析程序框图
5.5 语法分析程序的自动生成器
5.5.1 YACC/Bison
5.5.2 ACCENT
习题五
第六章 符号表管理与语义分析
6.1 语义分析概述
6.2 符号表管理
6.2.1 符号表的内容
6.2.2 符号表的组织
6.2.3 符号表的操作
6.2.4 符号表的实现
6.3 语义分析实现
6.3.1 输入/输出
6.3.2 算法框图
习题六
第七章 中间代码生成
7.1 中间代码简介
7.1.1 中间代码的表示形式
7.1.2 中间代码的生成方法
7.2 SNL的中间语言
7.3 SNL的中间代码生成
7.3.1 输入/输出
7.3.2 中间代码的构造方法
7.3.3 从语法树生成四元式
7.3.4 相关的应用函数
7.3.5 中间代码生成程序说明
习题七
第八章 中间代码优化
8.1 中间代码优化简介
8.1.1 优化种类介绍
8.1.2 基本块的划分
8.2 常量表达式优化
8.2.1 常量表达式优化的原理
8.2.2 常量表达式节省的实现
8.3 公共表达式节省方法
8.3.1 公共表达式优化原理
8.3.2 公共表达式节省的实现
8.4 循环不变式外提
8.4.1 循环不变式外提的原理
8.4.2 循环外提的实现
习题八
第九章 SNL的目标代码生成
9.1 虚拟目标机TM
9.1.1 TM的寄存器和存储器
9.1.2 TM的地址模式和指令集
9.2 编译程序中运行时存储空间管理
9.2.1 存储空间结构
9.2.2 过程活动记录
9.2.3 动态链
9.3 语法树到目标代码的生成
9.3.1 原理
9.3.2 框图
9.4 四元式到目标代码的生成
9.4.1 原理
9.4.2 四元式到目标代码生成中的关键问题
9.4.3 程序框图
习题九
第十章 虚拟目标代码的解释程序
10.1 解释程序
10.2 虚拟目标机TM的可执行命令
10.3 解释程序的实现
习题十
第十一章 实践课题
11.1 语言的扩充和实现
11.2 实现方法的扩充
11.3 应用自动生成工具
11.4 实现语言
第十二章 SNLC软件使用指南
12.1 SNLC概述
12.1.1 SNLC的特色
12.1.2 SNLC的运行环境
12.1.3 SNLC的安装和卸载
12.1.4 SNLC的启动和退出
12.2 SNLC的使用
12.2.1 SNL文件的操作
12.2.2 SNL程序的词法分析
12.2.3 SNL程序的语法分析
12.2.4 SNL程序的语义分析
12.2.5 SNL程序的中间代码生成
12.2.6 SNL程序的优化
12.2.7 SNL程序的目标代码生成
12.2.8 SNL程序的虚拟执行
12.3 有关问题的说明
12.3.1 SNLC的维护和出错处理
12.3.2 SNLC的帮助功能
参考文献
第一章 编译原理概述
1.1 高级程序设计语言的实现
1.2 编译程序的组成
1.3 编译程序的实现
1.4 其他相关程序
第二章 SNL介绍
2.1 SNL的特点
2.2 SNL的词法
2.2.1 语言的字符表
2.2.2 单词的巴科斯范式
2.3 SNL的语法
2.3.1 语法的非形式说明
2.3.2 语法的形式定义
2.4 SNL的语义
习题二
第三章 SNL编译程序简介
3.1 SNL编译程序功能结构
3.2 SNL编译程序的开发环境
3.3 SNL编译程序包
3.4 SNL编译程序的主程序说明
第四章 SNL的词法分析
4.1 词法分析简介
4.1.1 单词的分类
4.1.2 单词的TOKEN表示
4.1.3 词法分析程序和语法分析程序的接口
4.2 DFA的构造和实现
4.2.1 状态转换图
4.2.2 状态转换图的实现
4.3 词法分析程序的实现
4.3.1 词法分析程序的输入/输出
4.3.2 实现词法分析程序的注意事项
4.3.3 词法分析程序的实现框图
4.4 词法分析程序的自动生成器
4.4.1 LEX/FLEX简介
4.4.2 LEX运行与应用过程
4.4.3 LEX源程序结构
4.4.4 应用LEX构造词法分析程序
习题四
第五章 SNL的语法分析
5.1 语法分析概述
5.1.1 上下文无关文法
5.1.2 语法分析方法的分类
5.1.3 3个重要集合
5.1.4 SNL的Predict集
5.2 语法分析程序的实现
5.2.1 语法分析程序的输入/输出
5.2.2 语法树节点的数据结构
5.3 递归下降法的实现
5.3.1 递归下降法基本原理
5.3.2 递归下降法应满足的条件
5.3.3 递归下降法的语法分析程序框图
5.4 LL(1)语法分析方法的实现
5.4.1 LL(1)语法分析方法的基本原理
5.4.2 SNL的LL(1)语法分析概述
5.4.3 LL(1)语法分析程序框图
5.5 语法分析程序的自动生成器
5.5.1 YACC/Bison
5.5.2 ACCENT
习题五
第六章 符号表管理与语义分析
6.1 语义分析概述
6.2 符号表管理
6.2.1 符号表的内容
6.2.2 符号表的组织
6.2.3 符号表的操作
6.2.4 符号表的实现
6.3 语义分析实现
6.3.1 输入/输出
6.3.2 算法框图
习题六
第七章 中间代码生成
7.1 中间代码简介
7.1.1 中间代码的表示形式
7.1.2 中间代码的生成方法
7.2 SNL的中间语言
7.3 SNL的中间代码生成
7.3.1 输入/输出
7.3.2 中间代码的构造方法
7.3.3 从语法树生成四元式
7.3.4 相关的应用函数
7.3.5 中间代码生成程序说明
习题七
第八章 中间代码优化
8.1 中间代码优化简介
8.1.1 优化种类介绍
8.1.2 基本块的划分
8.2 常量表达式优化
8.2.1 常量表达式优化的原理
8.2.2 常量表达式节省的实现
8.3 公共表达式节省方法
8.3.1 公共表达式优化原理
8.3.2 公共表达式节省的实现
8.4 循环不变式外提
8.4.1 循环不变式外提的原理
8.4.2 循环外提的实现
习题八
第九章 SNL的目标代码生成
9.1 虚拟目标机TM
9.1.1 TM的寄存器和存储器
9.1.2 TM的地址模式和指令集
9.2 编译程序中运行时存储空间管理
9.2.1 存储空间结构
9.2.2 过程活动记录
9.2.3 动态链
9.3 语法树到目标代码的生成
9.3.1 原理
9.3.2 框图
9.4 四元式到目标代码的生成
9.4.1 原理
9.4.2 四元式到目标代码生成中的关键问题
9.4.3 程序框图
习题九
第十章 虚拟目标代码的解释程序
10.1 解释程序
10.2 虚拟目标机TM的可执行命令
10.3 解释程序的实现
习题十
第十一章 实践课题
11.1 语言的扩充和实现
11.2 实现方法的扩充
11.3 应用自动生成工具
11.4 实现语言
第十二章 SNLC软件使用指南
12.1 SNLC概述
12.1.1 SNLC的特色
12.1.2 SNLC的运行环境
12.1.3 SNLC的安装和卸载
12.1.4 SNLC的启动和退出
12.2 SNLC的使用
12.2.1 SNL文件的操作
12.2.2 SNL程序的词法分析
12.2.3 SNL程序的语法分析
12.2.4 SNL程序的语义分析
12.2.5 SNL程序的中间代码生成
12.2.6 SNL程序的优化
12.2.7 SNL程序的目标代码生成
12.2.8 SNL程序的虚拟执行
12.3 有关问题的说明
12.3.1 SNLC的维护和出错处理
12.3.2 SNLC的帮助功能
参考文献
第一章 编译原理概述
1.1 高级程序设计语言的实现
1.2 编译程序的组成
1.3 编译程序的实现
1.4 其他相关程序
第二章 SNL介绍
2.1 SNL的特点
2.2 SNL的词法
2.2.1 语言的字符表
2.2.2 单词的巴科斯范式
2.3 SNL的语法
2.3.1 语法的非形式说明
2.3.2 语法的形式定义
2.4 SNL的语义
习题二
第三章 SNL编译程序简介
3.1 SNL编译程序功能结构
3.2 SNL编译程序的开发环境
3.3 SNL编译程序包
3.4 SNL编译程序的主程序说明
第四章 SNL的词法分析
4.1 词法分析简介
4.1.1 单词的分类
4.1.2 单词的TOKEN表示
4.1.3 词法分析程序和语法分析程序的接口
4.2 DFA的构造和实现
4.2.1 状态转换图
4.2.2 状态转换图的实现
4.3 词法分析程序的实现
4.3.1 词法分析程序的输入/输出
4.3.2 实现词法分析程序的注意事项
4.3.3 词法分析程序的实现框图
4.4 词法分析程序的自动生成器
4.4.1 LEX/FLEX简介
4.4.2 LEX运行与应用过程
4.4.3 LEX源程序结构
4.4.4 应用LEX构造词法分析程序
习题四
第五章 SNL的语法分析
5.1 语法分析概述
5.1.1 上下文无关文法
5.1.2 语法分析方法的分类
5.1.3 3个重要集合
5.1.4 SNL的Predict集
5.2 语法分析程序的实现
5.2.1 语法分析程序的输入/输出
5.2.2 语法树节点的数据结构
5.3 递归下降法的实现
5.3.1 递归下降法基本原理
5.3.2 递归下降法应满足的条件
5.3.3 递归下降法的语法分析程序框图
5.4 LL(1)语法分析方法的实现
5.4.1 LL(1)语法分析方法的基本原理
5.4.2 SNL的LL(1)语法分析概述
5.4.3 LL(1)语法分析程序框图
5.5 语法分析程序的自动生成器
5.5.1 YACC/Bison
5.5.2 ACCENT
习题五
第六章 符号表管理与语义分析
6.1 语义分析概述
6.2 符号表管理
6.2.1 符号表的内容
6.2.2 符号表的组织
6.2.3 符号表的操作
6.2.4 符号表的实现
6.3 语义分析实现
6.3.1 输入/输出
6.3.2 算法框图
习题六
第七章 中间代码生成
7.1 中间代码简介
7.1.1 中间代码的表示形式
7.1.2 中间代码的生成方法
7.2 SNL的中间语言
7.3 SNL的中间代码生成
7.3.1 输入/输出
7.3.2 中间代码的构造方法
7.3.3 从语法树生成四元式
7.3.4 相关的应用函数
7.3.5 中间代码生成程序说明
习题七
第八章 中间代码优化
8.1 中间代码优化简介
8.1.1 优化种类介绍
8.1.2 基本块的划分
8.2 常量表达式优化
8.2.1 常量表达式优化的原理
8.2.2 常量表达式节省的实现
8.3 公共表达式节省方法
8.3.1 公共表达式优化原理
8.3.2 公共表达式节省的实现
8.4 循环不变式外提
8.4.1 循环不变式外提的原理
8.4.2 循环外提的实现
习题八
第九章 SNL的目标代码生成
9.1 虚拟目标机TM
9.1.1 TM的寄存器和存储器
9.1.2 TM的地址模式和指令集
9.2 编译程序中运行时存储空间管理
9.2.1 存储空间结构
9.2.2 过程活动记录
9.2.3 动态链
9.3 语法树到目标代码的生成
9.3.1 原理
9.3.2 框图
9.4 四元式到目标代码的生成
9.4.1 原理
9.4.2 四元式到目标代码生成中的关键问题
9.4.3 程序框图
习题九
第十章 虚拟目标代码的解释程序
10.1 解释程序
10.2 虚拟目标机TM的可执行命令
10.3 解释程序的实现
习题十
第十一章 实践课题
11.1 语言的扩充和实现
11.2 实现方法的扩充
11.3 应用自动生成工具
11.4 实现语言
第十二章 SNLC软件使用指南
12.1 SNLC概述
12.1.1 SNLC的特色
12.1.2 SNLC的运行环境
12.1.3 SNLC的安装和卸载
12.1.4 SNLC的启动和退出
12.2 SNLC的使用
12.2.1 SNL文件的操作
12.2.2 SNL程序的词法分析
12.2.3 SNL程序的语法分析
12.2.4 SNL程序的语义分析
12.2.5 SNL程序的中间代码生成
12.2.6 SNL程序的优化
12.2.7 SNL程序的目标代码生成
12.2.8 SNL程序的虚拟执行
12.3 有关问题的说明
12.3.1 SNLC的维护和出错处理
12.3.2 SNLC的帮助功能
参考文献













