书籍详情

编译原理和技术(第二版)

编译原理和技术(第二版)

作者:陈意云编著

出版社:中国科学技术大学出版社

出版时间:2005-11-10

ISBN:9787312008894

定价:¥28.00

购买这本书可以去
内容简介
  《编译原理和技术》介绍了编译器构造的一般原理和基本实现方法,反映了直至90年代的一些重要成果,其内容包括词法分析、语法分析、中间代码生成、代码优化和目标代码生成等。除了介绍传统程序设计语言的编译技术外,《编译原理和技术》还介绍了面向对象语言和函数式程序设计语言的实现技术。作为原理性的教材,《编译原理和技术》旨在介绍基本的理论和方法,而不偏各于某种源语言或目标机器。全书内容充实,图文并茂,各章节之间循序渐进,并在各章之后附有习题,供读者学习时练习和参考。《编译原理和技术》可作为高等院校计算机科学专业的教材,也可作为软件工程技术人员的参考书。
作者简介
暂缺《编译原理和技术(第二版)》作者简介
目录
第二版前言.
第一版前言
第1章引论
1.1编译的阶段
1.1.1词法分析
1.1.2语法分析
1.1.3语义分析
1.1.4中间代码生成
1.1.5代码优化
1.1.6代码生成
1.1.7符号表管理
1.1.8错误诊断和报告
1.1.9阶段的分组
1.2编译器的伙伴
1.2.1预处理器
1.2.2汇编器
1.2.3装配器和连接编辑器
第2章词法分析
2.1词法分析器的作用
2.1.1分离词法分析的理由
2.1.2记号.模式.单词
2.1.3记号的属性
2.1.4词法错误
2.2记号的描述
2.2.1串和语言
2.2.2语言的运算
2.2.3正规式
2.2.4正规定义
2.2.5表示的缩写
2.2.6非正规集
2.3记号的识别
2.3.1转换图
2.3.2实现转换图
2.4有限自动机
2.4.1不确定的有限自动机
2.4.2确定的有限自动机
2.4.3NFA到DFA的变换
2.5从正规式到NFA
2.6DFA的化简
2.7词法分析器的说明语言
习题
第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.3.4消除二义性
3.3.5消除左递归
3.3.6提左因子
3.3.7非上下文无关的语言结构
3.3.8形式语言概述
3.4自上而下分析
3.4.1自上而下分析的一般方法
3.4.2预测分析器
3.4.3非递归的预测分析
3.4.4开始符号和后继符号
3.4.5构造预测分析表
3.4.6LL(1)文法
3.4.7预测分析的错误恢复
3.5自下而上分析
3.5.1句柄
3.5.2用栈实现移进—归约分析
3.5.3移进—归约分析的冲突
3.6LR分析器
3.6.1LR分析算法
3.6.2LR文法
3.6.3构造SLR分析表
3.6.4构造规范LR分析表
3.6.5构造LALR分析表
3.6.6非LR的上下文无关结构
3.7二义文法的应用
3.7.1使用优先级和结合规则来解决分析动作的冲突
3.7.2悬空else的二义性
3.7.3特殊情况产生式引起的二义性
3.7.4LR分析的错误恢复
3.8分析器的生成器
3.8.1分析器的生成器Yacc
3.8.2用Yacc处理二义文法
3.8.3用Lex建立Yacc的词法分析器
3.8.4Yacc的错误恢复
习题
第4章语法制导的翻译
4.1语法制导的定义
4.1.1语法制导定义的形式
4.1.2综合属性
4.1.3继承属性
4.1.4依赖图
4.1.5计算次序
4.2S属性的自下而上计算
4.2.1语法树
4.2.2构造表达式的语法树
4.2.3构造语法树的语法制导定义
4.2.4表达式的无环有向图
4.2.5S属性的自下而上计算
4.3L属性定义
4.3.1L属性定义
4.3.2翻译方案
4.4自上而下翻译
4.4.1删除翻译方案的左递归
4.4.2预测翻译器的设计
4.5继承属性的自下而上计算
4.5.1删除翻译方案中嵌入的动作
4.5.2分析栈上的继承属性
4.5.3模拟继承属性的计算
4.5.4用综合属性代替继承属性
4.5.5一个困难的语法制导定义
4.6递归计算
4.6.1自左向右遍历
4.6.2其它遍历方法
4.7语法制导定义的分析
4.7.1属性的递归计算
4.7.2强无环的语法制导定义
习题
第5章类型检查
5.1类型体制
5.1.1类型表达式
5.1.2类型体制
5.1.3静态和动态的类型检查
5.1.4错误恢复
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.5多态函数
5.5.1为什么要使用多态函数
5.5.2类型变量
5.5.3一个含多态函数的语言
5.5.4代换.实例和合一
5.5.5多态函数的检查
习题..
第6章运行环境
6.1源语言问题
6.1.1过程
6.1.2活动树
6.1.3控制栈
6.1.4声明的作用域
6.1.5名字的结合
6.2存储组织
6.2.1运行时内存的划分
6.2.2活动记录
6.2.3编译时的局部数据安排
6.3存储分配策略
6.3.1静态分配
6.3.2栈分配
6.3.3悬空引用
6.3.4堆分配
6.4访问非局部名字
6.4.1程序块
6.4.2无过程嵌套的静态作用域
6.4.3有过程嵌套的静态作用域
6.4.4动态作用域
6.5参数传递
6.5.1值调用
6.5.2引用调用
6.5.3复写—恢复
6.5.4换名调用
习题
第7章中间代码生成
7.1中间语言
7.1.1后缀表示
7.1.2图形表示
7.1.3三地址代码
7.1.4三地址语句的种类
7.1.5三地址语句的实现
7.1.6内部表示的比较
7.2声明
7.2.1过程中的声明
7.2.2作用域信息的保存
7.2.3记录的域名
7.3赋值语句
7.3.1符号表中的名字
7.3.2临时名字的重新使用
7.3.3数组元素的定址
7.3.4数组元素定址的翻译方案
7.3.5赋值语句中的类型转换
7.3.6记录域的访问
7.4布尔表达式
7.4.1翻译布尔表达式的方法
7.4.2数值表示
7.4.3短路代码
7.4.4控制流语句
7.4.5布尔表达式的控制流翻译
7.5分情况语句
习题
第8章代码生成
8.1代码生成器设计中的问题
8.1.1代码生成器的输入
8.1.2目标程序
8.1.3存储管理
8.1.4指令选择
8.1.5寄存器分配
8.1.6计算次序选译
8.1.7代码生成途径
8.2目标机器
8.2.1目标机器
8.2.2指令代价
8.3基本块和流图
8.3.1基本块
8.3.2基本块的变换
8.3.3流图
8.4下次引用信息
8.4.1计算下次引用信息
8.4.2临时名字的存储分配
8.5一个简单的代码生成器
8.5.1寄存器描述和地址描述
8.5.2代码生成算法
8.5.3函数getreg
8.5.4为其它类型的语句产生代码
8.5.5条件语句
习题
第9章代码优化
9.1引言
9.1.1代码改进变换的标准
9.1.2争取较好的性能
9.1.3优化编译器的组织
9.2优化的主要种类
9.2.1公共子表达式
9.2.2复写传播
9.2.3死代码删除
9.2.4循环优化
9.2.5代码外提
9.2.6归纳变量和强度消弱
9.3流图中的循环
9.3.1必经结点
9.3.2自然循环
9.3.3内循环
9.3.4前置结点
9.3.5可归约流图
9.4全局数据流分析介绍
9.4.1点和路径
9.4.2到达-定值
9.4.3到达-定值的迭代算法
9.4.4可用表达式
9.4.5活跃变量分析
9.4.6定值-引用链
9.5代码改进变换
9.5.1公共子表达式删除
9.5.2复写传播
9.5.3寻找循环不变计算
9.5.4代码外提
9.5.5代码外提后维持数据流信息
9.5.6归纳变量删除
9.5.7有循环不变计算的归纳变量
习题
第10章面向对象语言的编译
10.1面向对象语言的概念
10.1.1对象
10.1.2对象类
10.1.3继承性
10.1.4信息封装
10.1.5小结
10.2方法的编译
10.3编译继承性的方案
10.3.1简单继承性的编译方案
10.3.2多继承性的编译方案
习题
第11章函数式程序设计语言的编译
11.1函数式程序设计语言简介
11.1.1SFP台构造
11.1.2参数传递机制
11.1.3自由出现和约束出现
11.2一个简单的函数式语言的编译简介
11.2.1几个受启发的例子
11.2.24个编译函数
11.2.3环境与约束
11.3抽象机的系统结构
11.3.1FAM的栈
11.3.2FAM的堆
11.3.3名字的寻址
11.3.4约束的建立
11.4指令集和编译
11.4.1程序表达式
11.4.2简单表达式
11.4.3变量的引用性出现
11.4.4函数定义
11.4.5函数应用
11.4.6构造和计算闭包
11.4.7letrec表达式和局部变量
11.5表的实现
11.5.1SFP的扩充
11.5.2表表达式的编译
11.5.3表运算的编译
习题...
猜您喜欢

读书导航