书籍详情
编译原理
作者:侯文永,张冬茉编著
出版社:电子工业出版社
出版时间:2002-08-01
ISBN:9787505379503
定价:¥17.00
购买这本书可以去
内容简介
编译原理是计算机专业的一门重要专业课,本书旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。本书较系统地介绍了经典的、广泛应用的技术,特别注重词法分析器、语法分析器的自动生成,以及语法制导的翻译方法和以控制流分析与数据流分析为基础的代码优化,并概要介绍了属性文法和并行编译。各章之后附有习题,其中包括要求用C语言实现相应的分析器、翻译器、优化器、代码生成器的习题。本书可作为高等院校计算机科学专业的教材,也可作为教师、研究生、软件技术人员的参考书。
作者简介
暂缺《编译原理》作者简介
目录
第1章 引论1
1.1 编译程序是一种特定的翻译程序1
1.2 编译程序的结构2
1.2.1 词法分析阶段2
1.2.2 语法分析阶段2
1.2.3 语义分析、中间代码生成阶段3
1.2.4 优化阶段3
1.2.5 目标代码生成阶段3
1.2.6 符号表管理3
1.2.7 出错管理程序3
1.2.8 编译阶段的前端和后端4
1.2.9 遍4
1.3 编译程序的生成5
1.3.1 自展5
1.3.2 移植6
1.3.3 对编译程序的评价7
1.4 编译程序的学习7
第2章 文法和语言8
2.1 基本概念8
2.1.1 语言8
2.1.2 文法10
2.1.3 归约与句柄12
2.2 分析树与二义性14
2.2.1 分析树14
2.2.2 子树14
2.2.3 二义性15
2.3 形式语言分类15
习题217
第3章 词法分析19
3.1 构造一个简单的词法分析器19
3.1.1 词法分析器的功能19
3.1.2 扫描缓冲区22
3.1.3 超前搜索23
3.1.4 状态转换图23
3.1.5 状态转换图的实现24
3.2 正规表达式与正规集27
3.2.1 正规式与正规集的定义27
3.2.2 正规式的性质29
3.2.3 正规式与正规文法30
3.3 有限自动机30
3.3.1 有限自动机的定义30
3.3.2 FA的表示31
3.3.3 FA M识别的的语言32
3.3.4 NFA M的确定化32
3.3.5 DFA M的简化34
3.4 正规式与有限自动机35
3.4.1 正规式与有限自动机的等价性35
3.4.2 由正规式构造等价的NFA M37
3.5 词法分析器的自动生成38
习题339
第4章 语法分析41
4.1 语法分析概述41
4.2 递归下降分析方法41
4.2.1 试探分析法41
4.2.2 提取左因子42
4.2.3 消除左递归43
4.2.4 预测分析器45
4.3 非递归的预测分析方法45
4.3.1 表驱动的预测分析器45
4.3.2 FIRST集和FOLLW集48
4.3.3 LL(1)文法50
4.3.4 预测分析表的构造51
4.3.5 错误处理52
4.4 算符优先分析法52
4.4.1 算符优先关系表53
4.4.2 算符优先分析方法54
4.4.3 优先关系表的构造56
4.4.4 优先函数57
4.4.5 错误处理58
4.5 LR分析器59
4.5.1 LR分析法59
4.5.2 识别活前缀的DFA61
4.5.3 SLR分析表的构造66
4.5.4 LR(1)分析表的构造67
4.5.5 LALR分析表的构造70
4.6 二义文法的应用75
4.7 分析表的自动生成77
习题478第1章 引论
1.1 编译程序是一种特定的翻译程序
1.2 编译程序的结构
1.2.1 词法分析阶段
1.2.2 语法分析阶段
1.2.3 语义分析、中间代码生成阶段
1.2.4 优化阶段
1.2.5 目标代码生成阶段
1.2.6 符号表管理
1.2.7 出错管理程序
1.2.8 编译阶段的前端和后端
1.2.9 遍
1.3 编译程序的生成
1.3.1 自展
1.3.2 移植
1.3.3 对编译程序的评价
1.4 编译程序的学习
第2章 文法和语言
2.1 基本概念
2.1.1 语言
2.1.2 文法
2.1.3 归约与句柄
2.2 分析树与二义性
2.2.1 分析树
2.2.2 子树
2.2.3 二义性
2.3 形式语言分类
习题2
第3章 词法分析
3.1 构造一个简单的词法分析器
3.1.1 词法分析器的功能
3.1.2 扫描缓冲区
3.1.3 超前搜索
3.1.4 状态转换图
3.1.5 状态转换图的实现
3.2 正规表达式与正规集
3.2.1 正规式与正规集的定义
3.2.2 正规式的性质
3.2.3 正规式与正规文法
3.3 有限自动机
3.3.1 有限自动机的定义
3.3.2 FA的表示
3.3.3 FA M识别的语言
3.3.4 NFA M的确定化
3.3.5 DFA M的简化
3.4 正规式与有限自动机
3.4.1 正规式与有限自动机的等价性
3.4.2 由正规式构造等价的NFA M
3.5 词法分析器的自动生成
习题3
第4章 语法分析
4.1 语法分析概述
4.2 递归下降分析方法
4.2.1 试探分析法
4.2.2 提取左因子
4.2.3 消除左递归
4.2.4 预测分析器
4.3 非递归的预测分析方法
4.3.1 表驱动的预测分析器
4.3.2 FIRST集和FOLLW集
4.3.3 LL(1)文法
4.3.4 预测分析表的构造
4.3.5 错误处理
4.4 算符优先分析法
4.4.1 算符优先关系表
4.4.2 算符优先分析方法
4.4.3 优先关系表的构造
4.4.4 优先函数
4.4.5 错误处理
4.5 LR分析器
4.5.1 LR分析法
4.5.2 识别活前缀的DFA
4.5.3 SLR分析表的构造
4.5.4 LR(1)分析表的构造
4.5.5 LALR分析表的构造
4.6 二义文法的应用
4.7 分析表的自动生成
习题4
第5章 语法制导翻译和中间代码生成
5.1 翻译概述
5.1.1 静态语义检查
5.1.2 语义制导翻译的例子
5.1.3 翻译要解决的问题
5.2 中间语言
5.2.1 后缀式表示
5.2.2 图表示
5.2.3 三地址代码
5.2.4 三地址语句的种类
5.2.5 三地址代码的具体实现
5.3 说明语句
5.3.1 一类说明语句的翻译方案
5.3.2 嵌套过程中的说明语句
5.3.3 记录中的域名
5.4 赋值语句
5.4.1 只含简单变量的赋值语句的翻译
5.4.2 类型转换
5.4.3 含数组元素的赋值语句的翻译
5.4.4 访问记录结构中的域
5.5 控制流语句
5.5.1 布尔表达式的两种基本作用
5.5.2 布尔表达式的两种翻译方法
5.5.3 数值表示法翻译方案
5.5.4 控制流语句中布尔表达式的翻译
5.5.5 控制流语句的翻译
5.5.6 转向语句和语句标号
5.6 循环语句、过程调用语句及CASE语句
5.6.1 循环语句的翻译
5.6.2 过程调用、函数调用语句的翻译
5.6.3 CASE语句或switch语句的翻译
5.7 属性文法
5.7.1 语法制导定义
5.7.2 属性的分类
5.7.3 依赖图
5.7.4 语义规则的计算次序
5.7.5 属性文法的两个子类
习题5
第6章 运行时存储空间管理
6.1 变量及存储分配
6.1.1 程序的存储空间
6.1.2 活动记录
6.1.3 变量的存储分配
6.1.4 存储分配模式
6.2 静态分配
6.2.1 FORTRAN程序运行时的结构
6.2.2 运行环境的转换
6.3 栈式分配
6.3.1 只含半静态变量的栈式分配
6.3.2 半动态变量的栈式分配
6.3.3 动态变量的存储分配
6.3.4 非局部环境
6.3.5 对非局部环境的引用
6.4 堆分配
6.5 参数传递
6.5.1 数据参数传递
6.5.2 过程参数的传递
6.6 符号表
6.6.1 符号表的组织
6.6.2 常用的符号表结构
习题6
第7章 代码优化
7.1 优化概述
7.1.1 优化定义
7.1.2 不同阶段的优化
7.1.3 程序流图的构造
7.2 局部优化
7.2.1 基本块内的优化
7.2.2 基本块的dag表示
7.2.3 dag的构造
7.2.4 dag实现的优化
7.2.5 对dag构造算法的修正
7.3 控制流分析及循环的查找
7.3.1 循环的定义
7.3.2 必经结点集
7.3.3 自然循环
7.3.4 可归约流图
7.3.5 深度优先搜索
7.4 数据流分析
7.4.1 到达一定值数据流方程和ud链
7.4.2 活跃变量数据流方程和du链
7.4.3 可用表达式数据流方程与复写传播
7.4.4 非常忙表达式与代码提升
7.4.5 数据流方程的求解
7.5 循环优化
7.5.1 循环优化的例子
7.5.2 代码外提
7.5.3 归纳变量
7.5.4 强度削弱
7.5.5 删除归纳变量
习题7
第8章 代码生成
8.1 目标代码
8.1.1 代码生成器的输入与输出
8.1.2 目标机
8.2 一个简单代码生成器
8.2.1 待用信息
8.2.2 寄存器描述和地址描述
8.2.3 如何生成目标代码
8.2.4 函数getreg(P:x:=y op z)
8.2.5 代码生成算法
8.2.6 其他语句的代码生成
8.3 寄存器分配
8.3.1 执行代价的节省
8.3.2 固定分配寄存器的代码生成
8.3.3 多重循环的寄存器分配
8.3.4 用图的点着色法做寄存器分配
8.4 窥孔优化
8.5 由dag生成代码
8.5.1 重新安排计算次序
8.5.2 dag为树时最优代码生成
习题8
第9章 并行编译概述
9.1 并行计算机及其编译系统
9.1.1 向量计算机
9.1.2 共享存储器多处理机
9.1.3 分布存储器大规模并行计算机
9.1.4 并行编译系统的结构
9.2 并行编译技术
9.2.1 依赖关系
9.2.2 依赖测试
9.2.3 循环向量化与并行化
参考文献
1.1 编译程序是一种特定的翻译程序1
1.2 编译程序的结构2
1.2.1 词法分析阶段2
1.2.2 语法分析阶段2
1.2.3 语义分析、中间代码生成阶段3
1.2.4 优化阶段3
1.2.5 目标代码生成阶段3
1.2.6 符号表管理3
1.2.7 出错管理程序3
1.2.8 编译阶段的前端和后端4
1.2.9 遍4
1.3 编译程序的生成5
1.3.1 自展5
1.3.2 移植6
1.3.3 对编译程序的评价7
1.4 编译程序的学习7
第2章 文法和语言8
2.1 基本概念8
2.1.1 语言8
2.1.2 文法10
2.1.3 归约与句柄12
2.2 分析树与二义性14
2.2.1 分析树14
2.2.2 子树14
2.2.3 二义性15
2.3 形式语言分类15
习题217
第3章 词法分析19
3.1 构造一个简单的词法分析器19
3.1.1 词法分析器的功能19
3.1.2 扫描缓冲区22
3.1.3 超前搜索23
3.1.4 状态转换图23
3.1.5 状态转换图的实现24
3.2 正规表达式与正规集27
3.2.1 正规式与正规集的定义27
3.2.2 正规式的性质29
3.2.3 正规式与正规文法30
3.3 有限自动机30
3.3.1 有限自动机的定义30
3.3.2 FA的表示31
3.3.3 FA M识别的的语言32
3.3.4 NFA M的确定化32
3.3.5 DFA M的简化34
3.4 正规式与有限自动机35
3.4.1 正规式与有限自动机的等价性35
3.4.2 由正规式构造等价的NFA M37
3.5 词法分析器的自动生成38
习题339
第4章 语法分析41
4.1 语法分析概述41
4.2 递归下降分析方法41
4.2.1 试探分析法41
4.2.2 提取左因子42
4.2.3 消除左递归43
4.2.4 预测分析器45
4.3 非递归的预测分析方法45
4.3.1 表驱动的预测分析器45
4.3.2 FIRST集和FOLLW集48
4.3.3 LL(1)文法50
4.3.4 预测分析表的构造51
4.3.5 错误处理52
4.4 算符优先分析法52
4.4.1 算符优先关系表53
4.4.2 算符优先分析方法54
4.4.3 优先关系表的构造56
4.4.4 优先函数57
4.4.5 错误处理58
4.5 LR分析器59
4.5.1 LR分析法59
4.5.2 识别活前缀的DFA61
4.5.3 SLR分析表的构造66
4.5.4 LR(1)分析表的构造67
4.5.5 LALR分析表的构造70
4.6 二义文法的应用75
4.7 分析表的自动生成77
习题478第1章 引论
1.1 编译程序是一种特定的翻译程序
1.2 编译程序的结构
1.2.1 词法分析阶段
1.2.2 语法分析阶段
1.2.3 语义分析、中间代码生成阶段
1.2.4 优化阶段
1.2.5 目标代码生成阶段
1.2.6 符号表管理
1.2.7 出错管理程序
1.2.8 编译阶段的前端和后端
1.2.9 遍
1.3 编译程序的生成
1.3.1 自展
1.3.2 移植
1.3.3 对编译程序的评价
1.4 编译程序的学习
第2章 文法和语言
2.1 基本概念
2.1.1 语言
2.1.2 文法
2.1.3 归约与句柄
2.2 分析树与二义性
2.2.1 分析树
2.2.2 子树
2.2.3 二义性
2.3 形式语言分类
习题2
第3章 词法分析
3.1 构造一个简单的词法分析器
3.1.1 词法分析器的功能
3.1.2 扫描缓冲区
3.1.3 超前搜索
3.1.4 状态转换图
3.1.5 状态转换图的实现
3.2 正规表达式与正规集
3.2.1 正规式与正规集的定义
3.2.2 正规式的性质
3.2.3 正规式与正规文法
3.3 有限自动机
3.3.1 有限自动机的定义
3.3.2 FA的表示
3.3.3 FA M识别的语言
3.3.4 NFA M的确定化
3.3.5 DFA M的简化
3.4 正规式与有限自动机
3.4.1 正规式与有限自动机的等价性
3.4.2 由正规式构造等价的NFA M
3.5 词法分析器的自动生成
习题3
第4章 语法分析
4.1 语法分析概述
4.2 递归下降分析方法
4.2.1 试探分析法
4.2.2 提取左因子
4.2.3 消除左递归
4.2.4 预测分析器
4.3 非递归的预测分析方法
4.3.1 表驱动的预测分析器
4.3.2 FIRST集和FOLLW集
4.3.3 LL(1)文法
4.3.4 预测分析表的构造
4.3.5 错误处理
4.4 算符优先分析法
4.4.1 算符优先关系表
4.4.2 算符优先分析方法
4.4.3 优先关系表的构造
4.4.4 优先函数
4.4.5 错误处理
4.5 LR分析器
4.5.1 LR分析法
4.5.2 识别活前缀的DFA
4.5.3 SLR分析表的构造
4.5.4 LR(1)分析表的构造
4.5.5 LALR分析表的构造
4.6 二义文法的应用
4.7 分析表的自动生成
习题4
第5章 语法制导翻译和中间代码生成
5.1 翻译概述
5.1.1 静态语义检查
5.1.2 语义制导翻译的例子
5.1.3 翻译要解决的问题
5.2 中间语言
5.2.1 后缀式表示
5.2.2 图表示
5.2.3 三地址代码
5.2.4 三地址语句的种类
5.2.5 三地址代码的具体实现
5.3 说明语句
5.3.1 一类说明语句的翻译方案
5.3.2 嵌套过程中的说明语句
5.3.3 记录中的域名
5.4 赋值语句
5.4.1 只含简单变量的赋值语句的翻译
5.4.2 类型转换
5.4.3 含数组元素的赋值语句的翻译
5.4.4 访问记录结构中的域
5.5 控制流语句
5.5.1 布尔表达式的两种基本作用
5.5.2 布尔表达式的两种翻译方法
5.5.3 数值表示法翻译方案
5.5.4 控制流语句中布尔表达式的翻译
5.5.5 控制流语句的翻译
5.5.6 转向语句和语句标号
5.6 循环语句、过程调用语句及CASE语句
5.6.1 循环语句的翻译
5.6.2 过程调用、函数调用语句的翻译
5.6.3 CASE语句或switch语句的翻译
5.7 属性文法
5.7.1 语法制导定义
5.7.2 属性的分类
5.7.3 依赖图
5.7.4 语义规则的计算次序
5.7.5 属性文法的两个子类
习题5
第6章 运行时存储空间管理
6.1 变量及存储分配
6.1.1 程序的存储空间
6.1.2 活动记录
6.1.3 变量的存储分配
6.1.4 存储分配模式
6.2 静态分配
6.2.1 FORTRAN程序运行时的结构
6.2.2 运行环境的转换
6.3 栈式分配
6.3.1 只含半静态变量的栈式分配
6.3.2 半动态变量的栈式分配
6.3.3 动态变量的存储分配
6.3.4 非局部环境
6.3.5 对非局部环境的引用
6.4 堆分配
6.5 参数传递
6.5.1 数据参数传递
6.5.2 过程参数的传递
6.6 符号表
6.6.1 符号表的组织
6.6.2 常用的符号表结构
习题6
第7章 代码优化
7.1 优化概述
7.1.1 优化定义
7.1.2 不同阶段的优化
7.1.3 程序流图的构造
7.2 局部优化
7.2.1 基本块内的优化
7.2.2 基本块的dag表示
7.2.3 dag的构造
7.2.4 dag实现的优化
7.2.5 对dag构造算法的修正
7.3 控制流分析及循环的查找
7.3.1 循环的定义
7.3.2 必经结点集
7.3.3 自然循环
7.3.4 可归约流图
7.3.5 深度优先搜索
7.4 数据流分析
7.4.1 到达一定值数据流方程和ud链
7.4.2 活跃变量数据流方程和du链
7.4.3 可用表达式数据流方程与复写传播
7.4.4 非常忙表达式与代码提升
7.4.5 数据流方程的求解
7.5 循环优化
7.5.1 循环优化的例子
7.5.2 代码外提
7.5.3 归纳变量
7.5.4 强度削弱
7.5.5 删除归纳变量
习题7
第8章 代码生成
8.1 目标代码
8.1.1 代码生成器的输入与输出
8.1.2 目标机
8.2 一个简单代码生成器
8.2.1 待用信息
8.2.2 寄存器描述和地址描述
8.2.3 如何生成目标代码
8.2.4 函数getreg(P:x:=y op z)
8.2.5 代码生成算法
8.2.6 其他语句的代码生成
8.3 寄存器分配
8.3.1 执行代价的节省
8.3.2 固定分配寄存器的代码生成
8.3.3 多重循环的寄存器分配
8.3.4 用图的点着色法做寄存器分配
8.4 窥孔优化
8.5 由dag生成代码
8.5.1 重新安排计算次序
8.5.2 dag为树时最优代码生成
习题8
第9章 并行编译概述
9.1 并行计算机及其编译系统
9.1.1 向量计算机
9.1.2 共享存储器多处理机
9.1.3 分布存储器大规模并行计算机
9.1.4 并行编译系统的结构
9.2 并行编译技术
9.2.1 依赖关系
9.2.2 依赖测试
9.2.3 循环向量化与并行化
参考文献
猜您喜欢