描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111312611
内容简介
编译原理是计算机学科的一门重要专业基础课。本书旨在介绍编译程序设计的基本原理、实现技术、方法和工具,充分考虑了教师便于教学,学生便于自学的问题。在介绍基本原理和实现技术中,注重循序渐进、深入浅出,每一章节都提供了编译程序实现的具体实例,每章末尾给出了丰富的习题以辅助学生更好地掌握编译过程。
本书包含了编译程序设计的基础理论和具体实现技术,主要内容有:形式语言和自动机理论、词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等编译过程。
本书可作为大专院校计算机专业本科生教材,也可作为计算机工程技术人员的参考书。
本书包含了编译程序设计的基础理论和具体实现技术,主要内容有:形式语言和自动机理论、词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等编译过程。
本书可作为大专院校计算机专业本科生教材,也可作为计算机工程技术人员的参考书。
目 录
第1章 编译引论
1.1 程序设计语言和编译程
1.2 编译程序的结构
1.2.1 编译程序的构成
1.2.2 遍
1.2.3 编译程序的前端和后端
1.3 编译程序和程序设计环境
1.4 编译程序的实现
习题
第2章 形式语言与自动机理论基础
2.1 基本概念
2.2 文法
2.2.1 文法的定义
2.2.2 文法分类
2.2.3 推导和归约
2.2.4 语法树与文法二义性
2.2.5 文法等价变换
2.3 有限自动机(FA)
2.3.1 确定有限自动机
2.3.2 非确定有限自动机
2.3.3 DFA与NFA的等价
2.3.4 DFA的化简
2.4 正则表达式
2.4.1 正则表达式与正则集
2.4.2 正则表达式与有限自的相互转换
习题
第3章 词法分析
3.1 词法分析介绍
3.1.1 词法分析程序的功能
3.1.2 词法分析程序的接口
3.2 词法分析程序设计
3.2.1 单词分类
3.2.2 单词的内部表示
3.2.3 单词的形式描述
3.2.4 自动机的实现
3.3 词法分析程序的实现
3.3.1 实现词法分析程序应注意的问题
3.3.2 单词结
3.3.3 实现算法
3.4 词法分析程序自动生成
3.4.1 LEX简介
3.4.2 LEX工作原理
3.4.3 LEX源文件结构
3.4.4 LEX系统中的正则式
3.4.5 LEX的使用方式
3.4.6 应用实例
习题
第4章 语法分析——自顶向下分析方法
4.1 语法分析程序介绍
4.1.1 语法分析程序的功能
4.1.2 语法错误类别及错误处理
4.1.3 自顶向下语法分析基本思想
4.1.4 3个重要的集合
4.1.5 自顶向下语法分析条件
4.2 递归下降法
4.2.1 递归下降法语法分析原理
4.2.2 递归下降法语法分析程序的构造
4.3 LL(1)分析方法
4.3.1 LL(1)分析法原理
4.3.2 LL(1)分析表的构造
4.3.3 LL(1)驱动程序的构造
4.4 自顶向下分析程序的自动生成
习题
第5章 语法分析——自底向上分析方法
5.1 自底向上语法分析方法介绍
5.2 简单优先分析
5.2.1 简单优先文法及其优先关系矩阵的构造
5.2.2 简单优先分析算法
5.3 LR分析法
5.3.1 LR类分析法的工作过程
5.3.2 LR(0)分析方法
5.3.3 SLR(1)分析方法
5.3.4 LR(1)分析方法
5.3.5 LALR(1)分析方法
5.3.6 LR方法小结
5.4 自底向上分析程序的自动生成
习题
第6章 语义分析和符号表
6.1 语义分析概述
6.1.1 语义
6.1.2 语义分析的功能
6.1.3 语义分析的一般过程
6.2 符号表的数据结构
6.2.1 标识符的属性
6.2.2 标识符的内部表示
6.2.3 类型的内部表示
6.2.4 值的内部表示
6.3 符号表的管理
6.3.1 符号表的建立与访问
6.3.2 符号表的组织
6.3.3 符号表的局部化处理
6.4 程序设计语言符号表的实例
6.4.1 Pascal的符号表
6.4.2 C的符号表
习题
第7章 中间代码生成
7.1 常用的中间代码结构
7.1.1 后缀式
7.1.2 抽象语法树和DAG
7.1.3 三地址中间代码
7.2 语法制导方法概论
7.3 类型检查和类型转换
7.4 中间代码生成中的几个问题
7.4.1 语义信息的获取和保存
7.4.2 语义栈Sem及其操作
7.4.3 常用的语义子程序
7.5 表达式的中间代码生成
7.6 下标变量的中间代码生成
7.6.1 下标变量的地址
7.6.2 下标变量的四元式结构
7.6.3 下标变量的中间代码生成过程
7.6.4 下标变量中间代码生成实例
7.7 赋值语句的中间代码
7.8 过程调用和函数调用的中间代码
7.9 控制语句的中间代码生成
7.9.1 goto语句和标号定位的中间代码
7.9.2 条件语句的中间代码
7.9.3 while语句的中间代码
7.10 过程∕函数声明的中间代码生成
习题
第8章 中间代码优化
8.1 优化方法概述
8.2 基本块划分
8.3 常量表达式局部优化
8.4 公共表达式局部优化
8.5 循环不变式外提
8.5.1 循环不变式外提概述
8.5.2 循环不变式外提原理
8.6 其他各类优化介绍
习题
第9章 运行时存储空间的组织与管理
9.1 目标程序运行时的存储结构
9.1.1 目标程序运行时内存的划分
9.1.2 目标程序运行时的存储分配策略
9.2 过程活动记录和运行时栈
9.2.1 过程活动记录
9.2.2 过程活动记录的申请和释放
9.3 变量访问环境
9.3.1 变量访问环境概述
9.3.2 Display表方法
9.3.3 静态链方法
习题
第10章 目标代码生成
10.1 目标代码生成介绍
10.1.1 代码生成器的输入和输出
10.1.2 指令选择
10.2 虚拟机
10.3 寄存器的分配
10.3.1 单寄存器机器的寄存器分配
10.3.2 多寄存器机器的寄存器分配
10.4 四元式到目标代码的翻译
10.4.1 表达式四元式的翻译
10.4.2 赋值语句四元式的翻译
10.4.3 输入输出语句四元式的翻译
10.4.4 条件语句四元式的翻译
10.4.5 循环语句四元式的翻译
10.4.6 标号语句四元式和goto语句四元式的翻译
10.4.7 过程、函数说明语句四元式的翻译
10.4.8 过程和函数调用语句四元式的翻译
习题
参考文献
1.1 程序设计语言和编译程
1.2 编译程序的结构
1.2.1 编译程序的构成
1.2.2 遍
1.2.3 编译程序的前端和后端
1.3 编译程序和程序设计环境
1.4 编译程序的实现
习题
第2章 形式语言与自动机理论基础
2.1 基本概念
2.2 文法
2.2.1 文法的定义
2.2.2 文法分类
2.2.3 推导和归约
2.2.4 语法树与文法二义性
2.2.5 文法等价变换
2.3 有限自动机(FA)
2.3.1 确定有限自动机
2.3.2 非确定有限自动机
2.3.3 DFA与NFA的等价
2.3.4 DFA的化简
2.4 正则表达式
2.4.1 正则表达式与正则集
2.4.2 正则表达式与有限自的相互转换
习题
第3章 词法分析
3.1 词法分析介绍
3.1.1 词法分析程序的功能
3.1.2 词法分析程序的接口
3.2 词法分析程序设计
3.2.1 单词分类
3.2.2 单词的内部表示
3.2.3 单词的形式描述
3.2.4 自动机的实现
3.3 词法分析程序的实现
3.3.1 实现词法分析程序应注意的问题
3.3.2 单词结
3.3.3 实现算法
3.4 词法分析程序自动生成
3.4.1 LEX简介
3.4.2 LEX工作原理
3.4.3 LEX源文件结构
3.4.4 LEX系统中的正则式
3.4.5 LEX的使用方式
3.4.6 应用实例
习题
第4章 语法分析——自顶向下分析方法
4.1 语法分析程序介绍
4.1.1 语法分析程序的功能
4.1.2 语法错误类别及错误处理
4.1.3 自顶向下语法分析基本思想
4.1.4 3个重要的集合
4.1.5 自顶向下语法分析条件
4.2 递归下降法
4.2.1 递归下降法语法分析原理
4.2.2 递归下降法语法分析程序的构造
4.3 LL(1)分析方法
4.3.1 LL(1)分析法原理
4.3.2 LL(1)分析表的构造
4.3.3 LL(1)驱动程序的构造
4.4 自顶向下分析程序的自动生成
习题
第5章 语法分析——自底向上分析方法
5.1 自底向上语法分析方法介绍
5.2 简单优先分析
5.2.1 简单优先文法及其优先关系矩阵的构造
5.2.2 简单优先分析算法
5.3 LR分析法
5.3.1 LR类分析法的工作过程
5.3.2 LR(0)分析方法
5.3.3 SLR(1)分析方法
5.3.4 LR(1)分析方法
5.3.5 LALR(1)分析方法
5.3.6 LR方法小结
5.4 自底向上分析程序的自动生成
习题
第6章 语义分析和符号表
6.1 语义分析概述
6.1.1 语义
6.1.2 语义分析的功能
6.1.3 语义分析的一般过程
6.2 符号表的数据结构
6.2.1 标识符的属性
6.2.2 标识符的内部表示
6.2.3 类型的内部表示
6.2.4 值的内部表示
6.3 符号表的管理
6.3.1 符号表的建立与访问
6.3.2 符号表的组织
6.3.3 符号表的局部化处理
6.4 程序设计语言符号表的实例
6.4.1 Pascal的符号表
6.4.2 C的符号表
习题
第7章 中间代码生成
7.1 常用的中间代码结构
7.1.1 后缀式
7.1.2 抽象语法树和DAG
7.1.3 三地址中间代码
7.2 语法制导方法概论
7.3 类型检查和类型转换
7.4 中间代码生成中的几个问题
7.4.1 语义信息的获取和保存
7.4.2 语义栈Sem及其操作
7.4.3 常用的语义子程序
7.5 表达式的中间代码生成
7.6 下标变量的中间代码生成
7.6.1 下标变量的地址
7.6.2 下标变量的四元式结构
7.6.3 下标变量的中间代码生成过程
7.6.4 下标变量中间代码生成实例
7.7 赋值语句的中间代码
7.8 过程调用和函数调用的中间代码
7.9 控制语句的中间代码生成
7.9.1 goto语句和标号定位的中间代码
7.9.2 条件语句的中间代码
7.9.3 while语句的中间代码
7.10 过程∕函数声明的中间代码生成
习题
第8章 中间代码优化
8.1 优化方法概述
8.2 基本块划分
8.3 常量表达式局部优化
8.4 公共表达式局部优化
8.5 循环不变式外提
8.5.1 循环不变式外提概述
8.5.2 循环不变式外提原理
8.6 其他各类优化介绍
习题
第9章 运行时存储空间的组织与管理
9.1 目标程序运行时的存储结构
9.1.1 目标程序运行时内存的划分
9.1.2 目标程序运行时的存储分配策略
9.2 过程活动记录和运行时栈
9.2.1 过程活动记录
9.2.2 过程活动记录的申请和释放
9.3 变量访问环境
9.3.1 变量访问环境概述
9.3.2 Display表方法
9.3.3 静态链方法
习题
第10章 目标代码生成
10.1 目标代码生成介绍
10.1.1 代码生成器的输入和输出
10.1.2 指令选择
10.2 虚拟机
10.3 寄存器的分配
10.3.1 单寄存器机器的寄存器分配
10.3.2 多寄存器机器的寄存器分配
10.4 四元式到目标代码的翻译
10.4.1 表达式四元式的翻译
10.4.2 赋值语句四元式的翻译
10.4.3 输入输出语句四元式的翻译
10.4.4 条件语句四元式的翻译
10.4.5 循环语句四元式的翻译
10.4.6 标号语句四元式和goto语句四元式的翻译
10.4.7 过程、函数说明语句四元式的翻译
10.4.8 过程和函数调用语句四元式的翻译
习题
参考文献
评论
还没有评论。