书籍详情
程序设计语言编译原理
作者:陈火旺等编
出版社:国防工业出版社
出版时间:1984-06-01
ISBN:9787118012569
定价:¥20.00
内容简介
本书是在第一版的教学实践基础上,按高等学校工科电子类《计算机与自动控制》教材编审委员会计算机编审小组的修订意见修编而成。本书旨在介绍编译程序构造的一般原理和基础实现方法,内容包括词法分析、语法分析、中间代码产生、优化和目标代码产生。作为一本原理性的书,重点在于介绍基本的理论和方法,不拘泥于具体的实现细节.本书既注意了最经典、最广泛应用的编译技术,又反映了七十年代以来的一些最重要的研究成果。在词法、语法分析方面特别注重分析器的自动产生; 在翻译方面突出了语法制导翻译方法; 在优化方面强调全局数据流分析。全书的组织注意了前后连贯,循序渐进,各章之后并附有习题。本书可作为高等(理、工)院校计算机科学(或工程)专业的教材,或作为教师、研究生、高年级学生或软件工程技术人员的参考书。
作者简介
暂缺《程序设计语言编译原理》作者简介
目录
引论
0.1 什么叫编译程序
0.2 编译过程概述
0.3 编译程序的结构
0.3.1 编译程序总框
0.3.2 表格与表格管理
0.3.3 遍
0.4 编译程序的生成
0.5 学习构选编译程序
第一章 高级程序语言概述
1.1 程序语言的定义
1.1.1 语言的词法和语法结构
1.1.2 语义
1.2 初等类型数据
1.2.1 标识符和名字
1.2.2 名字的属性和说明
1.3 数据结构
1.3.1 数组
1.3.2 记录结构
1.3.3 字符串、表格和栈
1.4 表达式
1.5 语句
1.5.1 赋值句
1.5.2 控制语句
1.5.3 说明句
1.5.4 简单句和复合句
1.6 程序段
1.6.1 FORTRAN
1.6.2 ALGOL
1.6.3 PASCAL
1.7 参数传递
1.7.1 参数
1.7.2 传地址
1.7.3 传值
1.7.4 传名
1.8 存储管理
1.8.1 静态存储分配
1.8.2 动态存储分配
1.8.3 栈式动态存储分配
1.8.4 堆式动态存储分配
1.9 历史回顾
第二章 词法分析
2.1 对于词法分析器的要求
2.1.1 词法分析器的功能和输出形式
2.1.2 词法分析器作为一个独立子程序
2.2 词法分析器的设计
2.2.1 输入、预处理
2.2.2 单词符号的识别:超前搜索
2.2.3 状态转换图
2.2.4 状态转换图的实现
2.3 正规表达式与有限自动机
2.3.1 正规式与正规集
2.3.2 确定有限自动机(DFA)
2.3.3 非确定有限自动机(NFA)
2.3.4 正规式与有限自动机的等价性
2.3.5 确定有限自动机的化简
2.4 词法分析器的自动产生
2.4.1 语言LEX的一般描述
2.4.2 超前搜索
2.4.3 LEX的实现
第三章 程序语言的语法描述与分析
3.1 上下文无关文法
3.1.1 文法与语言
3.1.2 语法树与二义性
3.1.3 形式语言鸟瞰
3.2 语法分析——自下而上分析
3.2.1 归约与分析树
3.2.2 规范归纳简述
3.2.3 符号栈的使用与分析树的表示
3.3 算符优先分析法
3.3.1 直观算符优先分析法
3.3.2 算符优先文法和优先表构造
3.3.3 算符优先分析算法的设计
3.3.4 优先函数
3.4 语法分析——由上而下分析
3.5 递归下降分析法
3.5.1 左递归的消除
3.5.2 消除回溯、提左因子和递归下降分拆器
3.5.3 文法的另一种表示法和转换图
3.5.4 预测分析程序
3.5.5 状态表
第四章 语法分析程序的自动构造
4.1 LR分析器
4.1.1 LR文法
4.1.2 一些非LR结构
4.2 LR(0)项目集族和LR(0)分析表的构造
4.2.1 LR(0)项目集规范族的构造
4.2.2 有效项目
4.2.3 LR(0)分析表的构造
4.3 SLR分析表的构造
4.4 规范LR分析表的构造
4.5 LALR分析表的构造
4.6 二义文法的应用
4.7 分析表的自动产生
4.7.1 终结符和产生式的优先级
4.7.2 结合规则
4.8 LR分析表的实际安排
第五章 语法制导翻译和中间代码产生
5.1 语法制导翻译概说
5.2 逆波兰表示法
5.2.1 后缀式的计值
5.2.2 后缀式的推广
5.2.3 语法制导生成后组式
5.3 三元式和树
5.3.1 间接三元式
5.3.2 树
5.4 四元式
5.5 简单算术表达式和赋值句到四元式的翻译
5.6 布尔表达式到四元式的翻译
5.6.1 作为条件控制的布尔式翻译
5.7 控制语句的翻译
5.7.1 标号和转移语句
5.7.2 条件语句
5.7.3 循环语句
5.7.4 分叉语句
5.8 数组元素引用
5.8.1 数组元素引用的中间代码
5.8.2 赋值句中数组元素的翻译
5.8.3 按列为序存放数组元素的情形
5.9 过程调用
5.9.1 过程调用的四元式产生
5.9.2 过程调用和数组元素相混淆的处理
5.10 说明语句的翻译
5.11 记录结构
5.11.1 记录说明的翻译
5.11.2 记录结构的引用
5.12 输入/输出语句的翻译
5.12.1 I/O语句的实现
5.12.2 I/O语句的翻译
5.12.3 格式语句的处理
5.13 自上而下分析制导翻译概说
第六章 符号表
6.1 符号表的组织和使用
6.2 整理与查找
6.2.1 线性表
6.2.2 对折查找与二叉树
6.2.3 杂凑技术
6.3 名字的作用范围
6.3.1 FORTRAN的符号表组织
6.3.2 ALGOL的符号表组织
6.4 符号表的内容
第七章 运行的存储空间组织
7.1 静态存储管理——FORTRAI存储分配
7.1.1 数据区
7.1.2 公用语句的处理
7.1.3 等价语句的处理
7.1.4 地址分配
7.1.5 临时变量的地址分配
7.2 一个简单的栈式存储分配的实现
7.2.1 C的活动记录
7.2.2 C的过程调用, 过程进入数组空间分配和过程返回
7.3 嵌套过程语言的栈式实现
7.3.1 欲套层次显示表DISPLAY和活动记录
7.3.2 过程调用, 过程进入
7.3.3 参数传递
7.4 ALGOL的实现
7.4.1 分程序结构
7.4.2 分程序的进入和退出
7.4.3 过程调用, 进入和返回
7.4.4 参数子程序
7.5 分程序结构语言存储分配拾遗
第八章 错误的诊察和较正
8.1 出错处理概述
8.1.1 语法错误
8.1..2 语义错误
8.1.3 错误处理
8.1.4 出错处理系统与编译程序各阶段的联系
8.2 词法分析阶段的错误诊察
8.3 语法分析(自下而上)阶段的错误诊察
8.3.1 算符优先分析法的错误处理
8.3.2 LR分析算法的错误处理
8.4 自上而下分析的错误诊察
8.5 语义错误诊察
8.5.1 遏止株连信息
8.5.2 遏止重复信息
第九章 代码优化
9.1 优化概述
9.2 局部优化
9.3 基本块的DAG表示及其应用
9.3.1 基本块的DAG表示
9.3.2 DAG的应用
9.3.3 DAG构造算法讨论
9.4 控制流程分析和循环查找算法
9.4.1 程序流图与循环
9.4.2 必经结点集
9.4.3 查找循环算法
9.4.4 可归约流图
9.4.5 深度为主查找及其算法
9.5 到达一定值与引用一定值链
9.5.1 到达一定值数据流方程
9.5.2 到达一定值数据流方程的求解
9.5.3 引用一定值链(ud链)
9.5.4 ud链的应用
9.6 循环优化
9.6.1 代码外提
9.6.2 强度削弱
6.9.3 删除归纳变量
第十章 数据流分析
10.1 活跃变量与定值-引用键(du链)
10.1.1 活跃变量的数据流方积
10.1.2 活跃变量数据流方程的求解
10.1.3 定值-引用链(du链)
10.1.4 活跃变量与du链的应用
10.2 删除全局公共子表达式
10.2.1 可用表达式及其数据流方程
10.2.2 可用表达式数据流方程的求解
10.2.3 删除全局公共子表达式的算法
10.3 复写传播
10.4 非常忙表达式和代码提升
10.4.1 非常忙表达式数据流方程
10.4.2 代码提升
10.5 四类数据流方程小结
10.6 实施各种优化的综合考虑
第十一章 代码生成
11.1 一个计算机模型
11.2 一个简单代码生成器
11.2.1 待用信息
11.2.2 寄存器描述和地址描述
11.2.3 代码生成算法
11.3 寄存器分配
11.4 DAG的目标代码
11.5 树的目标代码
0.1 什么叫编译程序
0.2 编译过程概述
0.3 编译程序的结构
0.3.1 编译程序总框
0.3.2 表格与表格管理
0.3.3 遍
0.4 编译程序的生成
0.5 学习构选编译程序
第一章 高级程序语言概述
1.1 程序语言的定义
1.1.1 语言的词法和语法结构
1.1.2 语义
1.2 初等类型数据
1.2.1 标识符和名字
1.2.2 名字的属性和说明
1.3 数据结构
1.3.1 数组
1.3.2 记录结构
1.3.3 字符串、表格和栈
1.4 表达式
1.5 语句
1.5.1 赋值句
1.5.2 控制语句
1.5.3 说明句
1.5.4 简单句和复合句
1.6 程序段
1.6.1 FORTRAN
1.6.2 ALGOL
1.6.3 PASCAL
1.7 参数传递
1.7.1 参数
1.7.2 传地址
1.7.3 传值
1.7.4 传名
1.8 存储管理
1.8.1 静态存储分配
1.8.2 动态存储分配
1.8.3 栈式动态存储分配
1.8.4 堆式动态存储分配
1.9 历史回顾
第二章 词法分析
2.1 对于词法分析器的要求
2.1.1 词法分析器的功能和输出形式
2.1.2 词法分析器作为一个独立子程序
2.2 词法分析器的设计
2.2.1 输入、预处理
2.2.2 单词符号的识别:超前搜索
2.2.3 状态转换图
2.2.4 状态转换图的实现
2.3 正规表达式与有限自动机
2.3.1 正规式与正规集
2.3.2 确定有限自动机(DFA)
2.3.3 非确定有限自动机(NFA)
2.3.4 正规式与有限自动机的等价性
2.3.5 确定有限自动机的化简
2.4 词法分析器的自动产生
2.4.1 语言LEX的一般描述
2.4.2 超前搜索
2.4.3 LEX的实现
第三章 程序语言的语法描述与分析
3.1 上下文无关文法
3.1.1 文法与语言
3.1.2 语法树与二义性
3.1.3 形式语言鸟瞰
3.2 语法分析——自下而上分析
3.2.1 归约与分析树
3.2.2 规范归纳简述
3.2.3 符号栈的使用与分析树的表示
3.3 算符优先分析法
3.3.1 直观算符优先分析法
3.3.2 算符优先文法和优先表构造
3.3.3 算符优先分析算法的设计
3.3.4 优先函数
3.4 语法分析——由上而下分析
3.5 递归下降分析法
3.5.1 左递归的消除
3.5.2 消除回溯、提左因子和递归下降分拆器
3.5.3 文法的另一种表示法和转换图
3.5.4 预测分析程序
3.5.5 状态表
第四章 语法分析程序的自动构造
4.1 LR分析器
4.1.1 LR文法
4.1.2 一些非LR结构
4.2 LR(0)项目集族和LR(0)分析表的构造
4.2.1 LR(0)项目集规范族的构造
4.2.2 有效项目
4.2.3 LR(0)分析表的构造
4.3 SLR分析表的构造
4.4 规范LR分析表的构造
4.5 LALR分析表的构造
4.6 二义文法的应用
4.7 分析表的自动产生
4.7.1 终结符和产生式的优先级
4.7.2 结合规则
4.8 LR分析表的实际安排
第五章 语法制导翻译和中间代码产生
5.1 语法制导翻译概说
5.2 逆波兰表示法
5.2.1 后缀式的计值
5.2.2 后缀式的推广
5.2.3 语法制导生成后组式
5.3 三元式和树
5.3.1 间接三元式
5.3.2 树
5.4 四元式
5.5 简单算术表达式和赋值句到四元式的翻译
5.6 布尔表达式到四元式的翻译
5.6.1 作为条件控制的布尔式翻译
5.7 控制语句的翻译
5.7.1 标号和转移语句
5.7.2 条件语句
5.7.3 循环语句
5.7.4 分叉语句
5.8 数组元素引用
5.8.1 数组元素引用的中间代码
5.8.2 赋值句中数组元素的翻译
5.8.3 按列为序存放数组元素的情形
5.9 过程调用
5.9.1 过程调用的四元式产生
5.9.2 过程调用和数组元素相混淆的处理
5.10 说明语句的翻译
5.11 记录结构
5.11.1 记录说明的翻译
5.11.2 记录结构的引用
5.12 输入/输出语句的翻译
5.12.1 I/O语句的实现
5.12.2 I/O语句的翻译
5.12.3 格式语句的处理
5.13 自上而下分析制导翻译概说
第六章 符号表
6.1 符号表的组织和使用
6.2 整理与查找
6.2.1 线性表
6.2.2 对折查找与二叉树
6.2.3 杂凑技术
6.3 名字的作用范围
6.3.1 FORTRAN的符号表组织
6.3.2 ALGOL的符号表组织
6.4 符号表的内容
第七章 运行的存储空间组织
7.1 静态存储管理——FORTRAI存储分配
7.1.1 数据区
7.1.2 公用语句的处理
7.1.3 等价语句的处理
7.1.4 地址分配
7.1.5 临时变量的地址分配
7.2 一个简单的栈式存储分配的实现
7.2.1 C的活动记录
7.2.2 C的过程调用, 过程进入数组空间分配和过程返回
7.3 嵌套过程语言的栈式实现
7.3.1 欲套层次显示表DISPLAY和活动记录
7.3.2 过程调用, 过程进入
7.3.3 参数传递
7.4 ALGOL的实现
7.4.1 分程序结构
7.4.2 分程序的进入和退出
7.4.3 过程调用, 进入和返回
7.4.4 参数子程序
7.5 分程序结构语言存储分配拾遗
第八章 错误的诊察和较正
8.1 出错处理概述
8.1.1 语法错误
8.1..2 语义错误
8.1.3 错误处理
8.1.4 出错处理系统与编译程序各阶段的联系
8.2 词法分析阶段的错误诊察
8.3 语法分析(自下而上)阶段的错误诊察
8.3.1 算符优先分析法的错误处理
8.3.2 LR分析算法的错误处理
8.4 自上而下分析的错误诊察
8.5 语义错误诊察
8.5.1 遏止株连信息
8.5.2 遏止重复信息
第九章 代码优化
9.1 优化概述
9.2 局部优化
9.3 基本块的DAG表示及其应用
9.3.1 基本块的DAG表示
9.3.2 DAG的应用
9.3.3 DAG构造算法讨论
9.4 控制流程分析和循环查找算法
9.4.1 程序流图与循环
9.4.2 必经结点集
9.4.3 查找循环算法
9.4.4 可归约流图
9.4.5 深度为主查找及其算法
9.5 到达一定值与引用一定值链
9.5.1 到达一定值数据流方程
9.5.2 到达一定值数据流方程的求解
9.5.3 引用一定值链(ud链)
9.5.4 ud链的应用
9.6 循环优化
9.6.1 代码外提
9.6.2 强度削弱
6.9.3 删除归纳变量
第十章 数据流分析
10.1 活跃变量与定值-引用键(du链)
10.1.1 活跃变量的数据流方积
10.1.2 活跃变量数据流方程的求解
10.1.3 定值-引用链(du链)
10.1.4 活跃变量与du链的应用
10.2 删除全局公共子表达式
10.2.1 可用表达式及其数据流方程
10.2.2 可用表达式数据流方程的求解
10.2.3 删除全局公共子表达式的算法
10.3 复写传播
10.4 非常忙表达式和代码提升
10.4.1 非常忙表达式数据流方程
10.4.2 代码提升
10.5 四类数据流方程小结
10.6 实施各种优化的综合考虑
第十一章 代码生成
11.1 一个计算机模型
11.2 一个简单代码生成器
11.2.1 待用信息
11.2.2 寄存器描述和地址描述
11.2.3 代码生成算法
11.3 寄存器分配
11.4 DAG的目标代码
11.5 树的目标代码
猜您喜欢