图书介绍
编译原理PDF|Epub|txt|kindle电子书版本网盘下载
![编译原理](https://www.shukui.net/cover/25/30269640.jpg)
- 王生原,董渊,杨萍等编著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115217318
- 出版时间:2010
- 标注页数:294页
- 文件大小:14MB
- 文件页数:306页
- 主题词:编译程序-程序设计-高等学校-教材
PDF下载
下载说明
编译原理PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 编译程序概论1
1.1 什么是编译程序1
1.2 编译过程和编译程序的结构3
1.2.1 词法分析3
1.2.2 语法分析4
1.2.3 语义分析5
1.2.4 中间代码生成6
1.2.5 代码优化6
1.2.6 目标代码生成6
1.2.7 符号表管理和出错处理7
1.2.8 编译阶段的组合和编译结构9
1.3 实例:PL/0编译程序10
1.3.1 PL/0语言简介10
1.3.2 PL/0语言处理系统11
习题13
第2章 语言和文法14
2.1 语言的基本概念14
2.1.1 字母表和字14
2.1.2 关于字的运算和字母表上的运算14
2.1.3 语言15
2.1.4 关于语言的运算15
2.2 上下文无关文法16
2.2.1 上下文无关文法的基本概念16
2.2.2 归约与推导17
2.2.3 上下文无关语言18
2.2.4 句型、句子与分析树20
2.2.5 归约、推导与分析树之间关系20
2.2.6 文法的二义性21
2.3 PL/0语言的语法25
2.3.1 PL/0语言语法的上下文无关文法描述25
2.3.2 PL/0语言语法的EBNF描述26
习题28
第3章 词法分析程序及其自动构造31
3.1 词法分析概述31
3.1.1 词法分析的任务31
3.1.2 词法分析在编译程序中的组织32
3.1.3 词法分析程序中如何识别单词33
3.2 实例:PL/0编译程序中词法分析程序的设计和实现33
3.3 词法分析程序自动构造原理37
3.3.1 正规表达式与正规语言37
3.3.2 有限自动机40
3.3.3 词法分析程序构造的自动化52
3.4 LEX:一个词法分析程序的生成工具52
3.4.1 LEX描述文件中使用的正规表达式53
3.4.2 LEX描述文件的格式54
3.4.3 LEX的使用56
3.4.4 与YACC的接口约定56
3.4.5 用LEX构造PL/0词法分析程序57
习题57
第4章 自顶向下语法分析60
4.1 自顶向下分析思想60
4.2 LL(1)分析方法63
4.2.1 First集合和Follow集合63
4.2.2 LL(1)文法66
4.2.3 LL(1)分析的实现66
4.2.4 一些有用的文法变换72
4.3 实例:PL/0编译程序中语法分析程序的设计和实现76
4.3.1 PL/0语法分析程序的自顶向下预测分析思想76
4.3.2 PL/0递归下降语法分析程序的设计78
4.3.3 PL/0编译程序中的错误处理80
习题82
第5章 自底向上语法分析85
5.1 自底向上分析思想85
5.1.1 短语和直接短语86
5.1.2 句柄87
5.1.3 移进-归约分析89
5.2 LR分析方法92
5.2.1 LR分析基础92
5.2.2 LR(0)分析95
5.2.3 SLR(1)分析100
5.2.4 LR(1)分析102
5.2.5 LALR(1)分析107
5.2.6 某些非LR文法的强制LR分析109
5.3 LR分析中的错误处理111
5.4 几类分析文法之间的关系113
习题113
第6章 语法制导的语义分析和中间代码生成118
6.1 语法制导的语义处理基础118
6.1.1 属性文法以及基于属性文法的语义处理118
6.1.2 翻译模式以及基于翻译模式的语义处理127
6.2 语法制导的语义分析133
6.2.1 语义分析的主要工作134
6.2.2 类型检查134
6.3 语法制导的中间代码生成137
6.3.1 常见的中间表示形式137
6.3.2 生成抽象语法树138
6.3.3 生成三地址码139
6.4 YACC:一个语法分析/语义处理程序的生成工具147
6.4.1 YACC描述文件147
6.4.2 使用YACC的一个简单例子151
6.4.3 用LEX和YACC实现PL/0编译程序152
习题152
第7章 符号表158
7.1 名字的属性和说明158
7.2 符号表的组织159
7.2.1 符号表的总体组织159
7.2.2 关键字域的组织160
7.2.3 符号表的基本实现技术160
7.3 分程序结构的符号表161
7.4 PL/0编译程序中符号表的设计与实现164
7.4.1 PL/0符号表的设计164
7.4.2 作用域与可见性166
7.4.3 符号表的操作168
习题169
第8章 目标程序运行时的存储组织171
8.1 数据空间的使用和管理方法171
8.1.1 静态存储分配172
8.1.2 动态存储分配172
8.2 栈式存储分配的实现173
8.2.1 动态地分配和释放一个过程的数据空间174
8.2.2 对非局部变量的引用175
8.2.3 分程序共享过程的活动记录179
8.3 参数传递180
8.3.1 形实参对应的方法181
8.3.2 传值的实现181
8.3.3 传地址的实现182
8.4 PL/0程序运行时的存储组织183
8.4.1 PL/0程序运行栈中的过程活动记录183
8.4.2 实现过程调用和返回的类P-code指令185
习题186
第9章 代码优化和代码生成189
9.1 基本块和流图191
9.1.1 基本块191
9.1.2 控制流图192
9.1.3 循环的判定193
9.1.4 跟踪基本块内部变量使用信息194
9.1.5 跟踪基本块之间变量使用信息196
9.2 中间代码优化200
9.2.1 局部优化200
9.2.2 循环优化202
9.2.3 全局优化205
9.3 目标代码的生成和优化207
9.3.1 设计代码生成程序的基本考虑207
9.3.2 一个简单的代码生成算法209
9.3.3 目标代码优化211
9.4 PL/0编译程序中的目标代码生成212
习题214
第10章 编译器和相关工具实例——GCC/Binutils217
10.1 开源编译器GCC217
10.1.1 GCC介绍218
10.1.2 GCC总体结构219
10.1.3 GCC编译流程220
10.1.4 GCC代码组织221
10.2 开源工具Binutils222
10.2.1 目标文件222
10.2.2 汇编器和链接器223
10.2.3 其他工具224
10.3 编译器和工具使用实例224
10.3.1 编译特定版本的编译器224
10.3.2 查看目标文件227
10.3.3 程序代码优化229
习题232
附录A PL/0编译程序文本233
附录A-1 PL/0编译程序文本(Pascal)233
附录A-2 PL/0编译程序文本(C)250
附录B 用于生成某个PL/0编译程序的LEX描述文件和YACC描述文件279
附录B-1 LEX描述文件pl0.l279
附录B-2 YACC描述文件pl0.y280
附录B-3 头文件define.h292
参考文献293