技术教育社区
www.teccses.org

编译原理与实践

封面

作者:鲁斌主编

页数:219页

出版社:北京邮电大学出版社

出版日期:2020

ISBN:9787563559930

电子书格式:pdf/epub/txt

内容简介

本书分九章, 内容包括: 高级语言及其语法描述 ; 词法分析 ; 自上而下语法分析 ; 自下而上语法分析 ; 语义分析与中间代码生成 ; 符号表与运行时存储空间组织等。

作者简介

鲁斌,华北电力大学(保定)计算机系主任,博士,副教授,硕士生导师,英国访问学者。现为国际信息研究学会中国分会人工智能专委会副主任、中国人工智能学会基础委员会委员、中国计算机学会会员。参加过国家863项目1项、国家教委博士点基金项目1项,国家自然科学基金项目3项;主持河北省科技项目1项,教育部中央直属高校科研业务费项目2项;获河北省科技进步三等奖3项,保定市科技进步一等奖2项、二等奖2项;出版专著1部,发表核心期刊以上级别论文42篇,其中SCI、EI检索34篇

本书特色

本书是一本关于编译器设计原理与实践的教材。第1章阐述了编译器的功能、结构、工作过程和构造方式。编译器以高级语言为翻译对象,而高级语言样式繁多,因此第2章将从更高的角度阐述高级语言所具有的共性。此外,文法是翻译的基础,第2章还将给出便于理解的形式文法的基本理论,着重上下文无法文法作为高级语言的语法描述方式,并以自定义的L语言为例给出其语法描述,同时也将作为后续翻译演示代码的程序语言。第3章将介绍手工方式实现词法分析的过程,以及有限自动机相关理论用于理解自动词法分析生产工具LEX。第4章介绍自上而下的语法分析,包括LL(1)文法和递归下降分析和预测分析法。第5章介绍自下而上分析包括算符优先分析,以及LR(0)、SLR(1)、LR(1)等方法。第6章介绍语法制导翻译方法,主要讨论其基本原理与相关技术,属性文法以及利用属性文法进行一遍扫描生成中间代码的语义分析方法。第7章讨论贯穿于各个编译阶段的重要表格—符号表的组织方法,以及符号的存取方式。此外,也讨论编译器为实现高效程序运行,而进行的内存空间分配与回收工作。第8章将介绍常用的中间代码优化技术。第9章以80×86汇编指令为目标代码,介绍简单的目标代码生成算法,主要讨论寄存器分配问题。

目录

第1章 绪论
1.1 编译程序简介
1.1.1 编译概述
1.1.2 编译技术的重要性
1.1.3 编译技术的应用
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.3 编译程序的构造
1.4 本章小结
1.5 习题
第2章 高级语言及其语法描述
2.1 高级语言简介
2.1.1 高级语言的定义
2.1.2 高级语言的一般特性
2.1.3 L语言说明
2.2 高级语言的语法描述
2.2.1 符号和符号串
2.2.2 上下文无关文法
2.2.3 语法分析树
2.2.4 文法的二义性
2.2.5 文法的分类
2.3 本章小结
2.4 习题
第3章 词法分析
3.1 词法分析器概述
3.1.1 词法分析器的功能
3.1.2 单词的类型和内部表示
3.2 词法分析器的设计
3.2.1 总体设计
3.2.2 详细设计
3.2.3 状态转换图
3.2.4 L语言词法分析器的设计与实现
3.3 正规表达式与有限自动机
3.3.1 正规式与正规集
3.3.2 确定有限自动机(DFA)
3.3.3 不确定有限自动机(NFA)
3.3.4 正规文法与有限自动机的等价性
3.3.5 正规式与有限自动机的等价性
3.3.6 DFA的化简
3.3.7 化简的DFA到程序的表示
3.4 词法分析器的自动生成
3.4.1 LEX概述
3.4.2 LEX语言规范
3.4.3 使用LEX自动生成L语言的词法分析器
3.5 本章小结
3.6 习题
第4章 自上而下语法分析
4.1 概述
4.2 自上而下分析基本思想
4.3 LL(1)分析
4.3.1 消除左递归
4.3.2 FIRST集、提取左因子
4.3.3 FOLLOW集
4.3.4 LL(1)文法
4.4 递归下降分析法
4.4.1 基本思路
4.4.2 流程设计
4.4.3 程序实现
4.4.4 L语言设计与实现
4.5 预测分析法
4.5.1 预测分析过程
4.5.2 预测分析表的构造
4.6 LL(1)分析中的错误处理
4.7 本章小结
4.8 习题
第5章 自下而上语法分析
5.1 移进-归约方法
5.2 规范归约
5.2.1 规范归约和句柄
5.2.2 短语
5.2.3 LR分析
5.3 算符优先分析
5.3.1 算符优先文法
5.3.2 算符优先关系表
5.3.3 算符优先分析算法
5.3.4 优先函数
5.3.5 算符优先分析中的出错处理
5.4 LR分析
5.4.1 规范句型的活前缀
5.4.2 LR(0)分析
5.4.3 SLR(1)分析
5.4.4 LR(1)分析
5.4.5 LALR(1)分析
5.4.6 二义文法的应用
5.4.7 LR分析中的出错处理
5.5 语法分析器的自动产生工具YACC
5.6 本章小结
5.7 习题
第6章 语义分析与中间代码生成
6.1 属性文法
6.1.1 综合属性
6.1.2 继承属性
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 变量说明语句的翻译
6.4.2 L语言变量说明语句的翻译
6.5 赋值语句的翻译
6.5.1 简单算术表达式及赋值语句的翻译
6.5.2 数组元素的引用
6.5.3 L语言赋值语句的翻译
6.6 布尔表达式的翻译
6.6.1 数值计算法
6.6.2 优化计算法
6.6.3 L语言布尔表达式的翻译
6.7 控制语句的翻译
6.7.1 典型控制语句的翻译
6.7.2 L语言控制语句的翻译
6.8 本章小结
6.9 习题
第7章 符号表与运行时存储空间组织
7.1 符号表的内容与组织
7.1.1 符号表的作用
7.1.2 符号表的内容
7.1.3 符号表的组织方式
7.2 符号表的整理与查找
7.2.1 线性表
7.2.2 对折查找与二叉树
7.2.3 杂凑法
7.3 目标程序运行时的活动
7.3.1 过程的活动
7.3.2 参数传递
7.4 运行时存储器的组织
7.4.1 运行时存储器的划分
7.4.2 活动记录
7.4.3 存储分配策略
7.5 静态存储分配
7.5.1 静态存储分配的性质
7.5.2 静态存储分配的实现
7.5.3 临时变量的地址分配
7.6 栈式存储分配
7.6.1 简单的栈式存储分配
7.6.2 嵌套过程语言的栈式存储分配
7.7 堆式存储分配
7.7.1 堆式存储分配的实现
7.7.2 隐式存储回收
7.8 本章小结
7.9 习题
第8章 优化
8.1 概述
8.1.1 优化的原则
8.1.2 优化的种类
8.1.3 基本块与流图
8.2 局部优化
8.2.1 删除公共子表达式
8.2.2 复写传播
8.2.3 删除无用代码
8.2.4 对程序进行代数恒等变换
8.2.5 利用基本块的DAG进行优化
8.3 循环优化
8.3.1 找出循环
8.3.2 代码外提
8.3.3 强度削弱
8.3.4 删除归纳变量
8.3.5 循环展开
8.4 本章小结
8.5 习题
第9章 目标代码生成
9.1 概述
9.2 目标机器模型
9.3 一个简单的代码生成器
9.3.1 待用信息与活跃信息
9.3.2 寄存器描述和地址描述
9.3.3 简单代码生成算法
9.4 寄存器分配
9.4.1 全局寄存器分配
9.4.2 图着色方法分配寄存器
9.5 DAG的目标代码
9.6 窥孔优化
9.7 本章小结
9.8 习题
参考文献

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《编译原理与实践》
Article link:https://www.teccses.org/1134093.html