图书介绍
编译原理及编译程序构造pdf电子书版本下载
- 张莉,杨海燕,史晓华,金茂忠,高仲仪编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302263142
- 出版时间:2011
- 标注页数:439页
- 文件大小:28MB
- 文件页数:455页
- 主题词:编译程序-程序设计-高等学校-教材
PDF下载
下载说明
编译原理及编译程序构造PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 绪论 1
1.1什么是程序设计语言 1
1.1.1程序设计语言的定义方法 2
1.1.2程序设计语言的处理系统 2
1.1.3编译程序和解释程序 3
1.1.4 T形图 4
1.2与编译程序相关的处理系统 5
1.2.1各种翻译程序 5
1.2.2预处理器 6
1.2.3宏处理器 6
1.3编译程序和程序设计环境 7
1.4编译程序的构造 8
1.5编译技术在软件工程中的应用 13
练习1 15
第2章 文法和语言的概念和表示 16
2.1文法的非形式讨论 16
2.1.1语法树 16
2.1.2规则 17
2.1.3由规则推导句子 17
练习2.1 19
2.2符号、符号串及其集合的运算 20
2.2.1字母表和符号串 20
2.2.2符号串及其集合的运算 20
练习2.2 22
2.3文法和语言的形式定义 22
2.3.1文法的形式定义 22
2.3.2推导的形式定义 24
2.3.3语言的形式定义 24
2.3.4递归规则与递归文法 26
2.3.5短语、简单短语和句柄 27
练习2.3 28
2.4语法树和二义性 29
2.4.1推导与语法树 29
2.4.2文法的二义性 33
练习2.4 36
2.5符号串的分析 37
2.5.1自顶向下分析 38
2.5.2自底向上分析 38
2.6有关文法的实用限制 40
练习2.5 41
2.7扩充的BNF表示和语法图 41
2.7.1扩充的BNF表示 41
2.7.2语法图 43
2.8文法和语言分类 43
第3章 词法分析 46
3.1词法分析程序的功能及实现方案 46
3.2单词的种类及词法分析程序的输出形式 47
3.3正则文法及其状态图 48
3.3.1状态图 49
3.3.2状态图的使用 49
3.4词法分析程序的设计与实现 50
3.4.1文法及其状态图 50
3.4.2词法分析程序的构造 51
3.4.3词法分析程序的实现 53
练习3.1 56
3.5正则文法与正则表达式 56
3.5.1正则表达式 57
3.5.2正则文法转换为正则表达式 59
3.5.3正则表达式转换为正则文法 59
3.6有穷自动机(FA) 60
3.6.1确定的有穷自动机(DFA) 60
3.6.2不确定的有穷自动机(NFA) 61
3.6.3 NFA的确定化 63
3.6.4确定有穷自动机的化简(最小化) 65
3.6.5正则表达式与有穷自动机的等价性 67
3.6.6正则文法与有穷自动机的等价性 70
3.7词法分析程序的自动生成器 71
3.7.1 LEX源程序(LEX的输入文件) 72
3.7.2 LEX的实现 73
练习3.2 76
第4章 语法分析 78
4.1自顶向下分析方法 78
4.1.1带回溯的自顶向下分析方法 78
4.1.2存在的问题及解决办法 80
练习4.1 85
4.2递归下降分析法(递归子程序法) 85
练习4.2 90
4.3 LL(1)分析方法 91
4.3.1 LL(1)分析器的逻辑结构及工作过程 91
4.3.2 LL(1)分析表的构造方法 94
练习4.3 97
4.4自底向上分析方法 99
4.5算法优先分析法 101
4.5.1方法概述 101
4.5.2直观算符优先分析法 102
4.5.3算符优先分析法的进一步讨论 105
练习4.4 110
4.6 LR语法分析方法 110
4.6.1概念和术语 111
练习4.5 112
4.6.2 LR分析算法 113
练习4.6 117
4.6.3 LR文法 117
4.6.4构造SLR语法分析表 118
练习4.7 122
练习4.8 124
4.6.5构造规范LR语法分析表 125
练习4.9 130
4.6.6构造LALR语法分析表 130
练习4.10 134
4.7二义文法的应用 135
4.8 LR语法分析中的错误恢复 136
练习4.11 137
第5章 符号表管理技术 138
5.1概述 138
5.1.1什么是符号表 138
5.1.2何时建立和访问符号表 138
5.1.3符号表的重要性和作用 140
5.1.4在符号表上的操作 140
5.2符号表的组织和内容 141
5.2.1符号表的结构与内容 141
5.2.2符号表的组织方式 143
5.3非分程序结构语言的符号表组织 144
5.3.1标识符的作用域及基本处理方法 145
5.3.2符号表的组织方式 145
5.4分程序结构语言的符号表组织 150
5.4.1标识符的作用域及基本处理方法 150
5.4.2定位和重定位操作 151
5.4.3符号表的组织方式 152
练习5 155
第6章 运行时的存储组织及管理 157
6.1静态存储分配 157
练习6.1 159
6.2动态存储分配 159
6.2.1活动记录 160
6.2.2参数区 161
6.2.3 display区 161
6.2.4运行时的地址计算 163
6.2.5递归过程的处理 164
练习6.2 166
第7章 源程序的中间形式 168
7.1波兰表示 168
7.2 N元表示 169
7.3抽象语法树 171
7.4抽象机代码 172
7.4.1可移植性和抽象机 172
7.4.2 Pascal的P-code抽象机 173
7.4.3 P-code指令 174
练习7 175
第8章 错误处理 176
8.1概述 176
8.2错误的分类 177
8.3错误的诊察与报告 177
8.4错误处理技术 179
8.4.1错误改正 179
8.4.2错误局部化处理 179
8.4.3目标程序运行时的错误检测与处理 182
8.4.4遏止重复的错误信息 182
第9章 语法制导翻译技术 183
9.1翻译文法(TG: Translation Grammar) 184
9.2语法制导翻译 186
9.3属性翻译文法(ATG: Attribute TG) 187
9.3.1综合属性 187
9.3.2继承属性 189
9.3.3属性翻译文法概述 190
9.3.4属性翻译文法举例——算术表达式的翻译 191
练习9.1 193
9.4自顶向下语法制导翻译 195
9.4.1翻译文法的自顶向下翻译 195
练习9.2 200
9.4.2属性翻译文法的自顶向下翻译 201
练习9.3 212
9.5自底向上语法制导翻译 213
9.5.1波兰翻译 214
9.5.2 S-属性文法 214
练习9.4 216
第10章 语义分析和代码生成 218
10.1语义分析的概念 218
10.2栈式抽象机及其汇编指令 220
10.3声明的处理 221
10.3.1常量类型 222
10.3.2简单变量 223
10.3.3数组变量 224
10.3.4记录变量 226
10.3.5过程声明 226
10.4表达式 227
10.5赋值语句 233
10.6控制语句 234
10.6.1 if语句 234
10.6.2分情形语句 236
10.6.3 repeat-while语句 238
10.6.4 for循环语句 239
10.7过程调用和返回 240
10.7.1参数的基本传递形式 241
10.7.2过程调用 242
10.7.3返回语句和过程终止 245
10.8输入和输出语句 246
10.8.1输入语句 246
10.8.2输出语句 248
10.9编译程序的辅助功能 249
练习10 250
第11章 代码优化 251
11.1基本块和流图 252
11.2基本块内优化 254
11.2.1基本块的DAG图表示 254
11.2.2消除局部公共子表达式 255
11.2.3数组、指针及函数调用 255
11.2.4从DAG图重新导出中间代码 256
11.2.5窥孔优化 258
11.2.6常数合并和传播 259
11.3全局优化 260
11.3.1数据流分析 260
11.3.2活跃变量分析 264
11.3.3定义-使用链、网和冲突图 266
11.3.4消除全局公共子表达式 269
11.3.5复制传播 270
11.3.6死代码删除 270
11.4循环优化 271
11.4.1循环交换 271
11.4.2循环展开 272
11.4.3代码外提和循环强度削弱 272
练习11 273
第12章 目标代码生成 275
12.1微处理器体系结构简介 276
12.1.1指令集架构 276
12.1.2存储层次架构 279
12.1.3流水线 281
12.2地址空间 283
12.2.1程序地址空间的实例分析 284
12.2.2程序运行栈的设计 286
12.3寄存器的分配和指派 288
12.3.1全局寄存器分配 289
12.3.2临时寄存器分配 291
12.4指令选择 292
练习12 294
第13章 编译程序生成方法和工具 296
13.1编译程序的书写语言 296
13.2自展 297
13.3移植 298
13.4编译程序的生成工具 299
13.4.1语法分析器的生成器Yacc 299
13.4.2用Yacc处理二义文法 302
13.4.3用Lex建立Yacc的词法分析器 304
13.4.4 Yacc的错误恢复 305
练习13 306
第14章PL/O简单编译系统 307
14.1 PL/O语言 307
14.2 PL/O编译系统结构 311
14.3 PL/O的词法分析 312
14.4 PL/O的语法分析 313
14.5出错处理 315
14.6目标代码的生成和解释执行 316
14.7 PL/O程序编译和运行举例 318
第15章Pascal-S编译系统 328
15.1 Pascal-S语言 328
15.2 Pascal-S编译程序的结构 333
15.3 Pascal-S编译程序 336
15.3.1表格 337
15.3.2编译初启 342
15.3.3实用程序 343
15.3.4词法分析及处理 343
15.3.5语法分析处理 344
15.3.6出错处理 349
15.4 Pascal-S解释执行程序 351
15.4.1 P-code指令系统 351
15.4.2运行栈 353
15.4.3运行时的display 354
15.4.4运行出错处理和现场剖析打印 355
15.5编译及运行的例子 356
附录A PL/O编译系统源代码 366
附录B Pascal-S编译系统源代码 382
参考文献 439