计算机系列教材编译原理与技术(第2版)学习指导与习题解析/李文生 本书特色
《编译原理与技术(第2版)学习指导与习题解析》是与《编译原理与技术(第2版)》一书配套的学习指导教材,对应《编译原理与技术(第2版)》的主要章节,给出相应的知识要点总结、习题解答思路分析及参考答案,结合每一章介绍的原理和技术,给出相应的算法设计或上机实验题目、解决方案。
计算机系列教材编译原理与技术(第2版)学习指导与习题解析/李文生 内容简介
《编译原理与技术(第2版)学习指导与习题解析》是与《编译原理与技术(第2版)》一书配套的学习指导教材,对应《编译原理与技术(第2版)》的主要章节,给出相应的知识要点总结、习题解答思路分析及参考答案,结合每一章介绍的原理和技术,给出相应的算法设计或上机实验题目、解决方案。
计算机系列教材编译原理与技术(第2版)学习指导与习题解析/李文生 目录
目录
第1章编译概述/1
1.1知识要点/1
1.2习题解析及参考答案/1第2章形式语言与自动机基础/5
2.1知识要点/5
2.2习题解析及参考答案/5第3章词法分析/36
3.1知识要点/36
3.2习题解析及参考答案/36第4章语法分析/56
4.1知识要点/56
4.2习题解析及参考答案/56第5章语法制导翻译技术/90
5.1知识要点/90
5.2习题解析及参考答案/90第6章语义分析/132
6.1知识要点/132
6.2习题解析及参考答案/132第7章运行环境/156
7.1知识要点/156
7.2习题解析及参考答案/156第8章中间代码生成/174
8.1知识要点/1748.2习题解析及参考答案/174第9章目标代码生成/194
9.1知识要点/194
9.2习题解析及参考答案/194第10章代码优化/212
10.1知识要点/212
10.2习题解析及参考答案/212第11章模拟试卷/226
11.1模拟试卷1及参考答案/226
11.1.1模拟试卷1/226
11.1.2模拟试卷1参考答案/229
11.2模拟试卷2及参考答案/236
11.2.1模拟试卷2/236
11.2.2模拟试卷2参考答案/238参考文献/2451.1翻译和解释/1
1.1.1程序设计语言/1
1.1.2翻译程序/2
1.2编译的阶段和任务/4
1.2.1分析阶段/4
1.2.2综合阶段/7
1.2.3符号表管理/10
1.2.4错误处理/10
1.3和编译有关的其他概念/11
1.3.1编译的前端和后端/11
1.3.2“遍”的概念/11
1.4编译程序的伙伴工具/13
1.4.1预处理器/14
1.4.2汇编程序/14
1.4.3连接装配程序/16
1.5编译原理的应用/16
习题1/18第2章形式语言与自动机基础/19
2.1语言和文法/19
2.1.1字母表和符号串/19
2.1.2语言/20
2.1.3文法及其形式定义/21
2.1.4推导和短语/23
2.1.5分析树及二义性/25
2.1.6文法变换/27
2.2有限自动机/31
2.2.1确定的有限自动机/32
2.2.2非确定的有限自动机/342.2.3具有ε?转移的非确定的有限自动机/36
2.2.4DFA的化简/40
2.3正规文法与有限自动机的等价性/42
2.4正规表达式与有限自动机的等价性/45
2.5正规表达式与正规文法的等价性/48
2.5.1正规定义式/48
2.5.2表示的缩写/49
2.5.3正规表达式转换为等价的正规文法/50
习题2/51第3章词法分析/53
3.1词法分析程序与语法分析程序的关系/53
3.2词法分析程序的输入与输出/54
3.2.1输入缓冲区/54
3.2.2词法分析程序的输出/56
3.3记号的描述和识别/57
3.3.1词法与正规文法/58
3.3.2记号的文法/58
3.3.3状态转换图与记号的识别/61
3.4词法分析程序的设计与实现/62
3.4.1文法及状态转换图/63
3.4.2词法分析程序的构造/65
3.4.3词法分析程序的实现/65
3.5LEX简介/71
3.5.1LEX源程序的结构/71
3.5.2LEX源程序举例/74
习题3/76
程序设计1/77第4章语法分析/78
4.1语法分析简介/78
4.1.1语法分析程序的地位/78
4.1.2常用的语法分析方法/78
4.1.3语法错误的处理/79
4.2自顶向下分析方法/80
4.2.1递归下降分析/81
4.2.2递归调用预测分析/82
4.2.3非递归预测分析/88
4.3自底向上分析方法/95
4.3.1规范归约/97
4.3.2“移进?归约”方法的实现/98
4.4LR分析方法/100
4.4.1LR分析程序的模型及工作过程/100
4.4.2SLR(1)分析表的构造/104
4.4.3LR(1)分析表的构造/112
4.4.4LALR(1)分析表的构造/119
4.4.5LR分析方法对二义文法的应用/124
4.4.6LR分析的错误处理与恢复/129
4.5软件工具YACC/131
4.5.1YACC源程序/132
4.5.2YACC对二义文法的处理/134
4.5.3用LEX建立YACC的词法分析程序/136
习题4/137
程序设计2/141第5章语法制导翻译技术/142
5.1语法制导定义及翻译方案/143
5.1.1语法制导定义/143
5.1.2依赖图/146
5.1.3计算次序/147
5.1.4S属性定义及L属性定义/148
5.1.5翻译方案/149
5.2S属性定义的自底向上翻译/151
5.2.1为表达式构造语法树的语法制导
定义/151
5.2.2S属性定义的自底向上翻译/155
5.3L属性定义的自顶向下翻译/158
5.3.1消除翻译方案中的左递归/158
5.3.2预测翻译程序的设计/162
5.4L属性定义的自底向上翻译/165
5.4.1移走翻译方案中嵌入的语义规则/166
5.4.2直接使用分析栈中的继承属性/166
5.4.3变换继承属性的计算规则/169
5.4.4改写语法制导定义为S属性定义/172
5.5通用的语法制导翻译方法/173
习题5/176第6章语义分析/180
6.1语义分析概述/180
6.1.1语义分析的任务/180
6.1.2语义分析程序的位置/181
6.1.3错误处理/181
6.2符号表/182
6.2.1符号表的建立和访问时机/182
6.2.2符号表内容/184
6.2.3符号表操作/187
6.2.4符号表组织/189
6.3类型检查/193
6.3.1类型表达式/194
6.3.2类型等价/197
6.4一个简单的类型检查程序/204
6.4.1语言说明/204
6.4.2符号表的建立/205
6.4.3表达式的类型检查/210
6.4.4语句的类型检查/213
6.4.5类型转换/214
6.5类型检查有关的其他主题/216
6.5.1函数和运算符的重载/216
6.5.2多态函数/217
习题6/220
程序设计3/223第7章运行环境/225
7.1程序运行时的存储组织/225
7.1.1程序运行空间的划分/226
7.1.2活动记录与控制栈/227
7.1.3名字的作用域及名字绑定/230
7.2存储分配策略/231
7.2.1静态存储分配/231
7.2.2栈式存储分配/233
7.2.3堆式存储分配/237
7.3非局部名字的访问/239
7.3.1程序块/239
7.3.2静态作用域规则下非局部名字的
访问/241
7.3.3动态作用域规则下非局部名字的
访问/248
7.4参数传递机制/250
7.4.1传值调用/250
7.4.2引用调用/252
7.4.3复制恢复/253
7.4.4传名调用/255
习题7/255第8章中间代码生成/259
8.1中间代码形式/259
8.1.1图形表示/259
8.1.2三地址代码/260
8.2赋值语句的翻译/265
8.2.1仅涉及简单变量的赋值语句的
翻译/265
8.2.2涉及数组元素的赋值语句/268
8.2.3记录结构中域的访问/273
8.3布尔表达式的翻译/274
8.3.1翻译布尔表达式的方法/274
8.3.2数值表示法/275
8.3.3控制流表示法及回填技术/276
8.4控制语句的翻译/282
8.5goto语句的翻译/287
8.6CASE语句的翻译/289
8.7过程调用语句的翻译/292
习题8/294第9章目标代码生成/297
9.1目标代码生成概述/297
9.1.1代码生成程序的位置/297
9.1.2代码生成程序设计的相关问题/298
9.2基本块和流图/300
9.3下次引用信息/302
9.4一个简单的代码生成程序/305
9.4.1目标机器描述/305
9.4.2代码生成算法/307
9.4.3其他常用语句的代码生成/312
习题9/315第10章代码优化/317
10.1代码优化概述/317
10.1.1代码优化程序的功能和位置/317
10.1.2代码优化的主要种类/317
10.2基本块优化/318
10.2.1常数合并及常数传播/318
10.2.2删除公共表达式/320
10.2.3复制传播/321
10.2.4削弱计算强度/321
10.2.5改变计算次序/321
10.3dag在基本块优化中的应用/322
10.3.1基本块的dag表示/322
10.3.2基本块的dag构造算法/323
10.3.3dag的应用/327
10.3.4dag构造算法的进一步讨论/330
10.4循环优化/333
10.4.1循环展开/333
10.4.2代码外提/334
10.4.3削弱计算强度/334
10.4.4删除归纳变量/335
10.5窥孔优化/337
10.5.1删除冗余的传送指令/337
10.5.2删除死代码/337
10.5.3控制流优化/338
10.5.4削弱计算强度及代数化简/338
习题10/339第11章面向对象的编译方法/341
11.1面向对象语言的基本概念/341
11.1.1类和对象/341
11.1.2继承/343
11.1.3信息封装/346
11.1.4多态性/347
11.2方法的编译/350
11.2.1静态方法/350
11.2.2动态方法/351
11.3继承的编译/354
11.3.1单一继承的编译/354
11.3.2多继承的编译/355
11.4程序运行环境/358
习题11/359第12章编译程序构造实践/360
12.1编译程序的表示及实现方法/360
12.1.1表示方法/360
12.1.2实现语言/360
12.1.3自展法/361
12.1.4移植法/362
12.2PL/0语言及其编译程序介绍/364
12.2.1PL/0语言/365
12.2.2PL/0编译程序的结构/368
12.2.3PL/0编译程序的词法分析/369
12.2.4PL/0编译程序的语法分析/371
12.2.5PL/0编译程序的出错处理/373
12.2.6PL/0编译程序的执行环境及
代码生成/375
12.2.7PL/0程序编译和运行示例/379
12.3GCC编译程序/381
12.3.1GCC简介/382
12.3.2GCC编译程序的结构与处理
流程/383
12.3.3GCC的分析程序/384
12.3.4GCC的中间语言及中间代码
生成/385
12.3.5GCC的代码优化/389
12.3.6GCC的代码生成/391
12.4编译实践/392
12.4.1Pascal?S语言说明/392
12.4.2课程设计要求及说明/398
12.4.3编译程序的测试/400附录PL/0编译程序源程序/402参考文献/416