二手书,此书是一本无赠品和附件,套装不全,购买套装请联系客服
¥ 5 1.0折 ¥ 49 八五品
库存71件
作者李文生 著
出版社清华大学出版社
出版时间2016-09
版次1
装帧平装
货号9787302441410
上书时间2024-12-19
本书系统地介绍了编译程序的设计原理和基本实现技术。主要内容包括词法分析、语法分析、语义分析、中间代码生成、代码生成和代码优化等,还重点介绍了用于实现语义分析和中间代码生成的语法制导翻译技术,以及程序运行时存储空间的组织与管理。
本书在介绍基本理论和方法的同时,也注重实际应用,介绍了LEX和YACC的使用方法及原理,剖析了PL/0语言的编译程序,介绍了GCC编译程序的基本结构。配合理论教学,给出了一些实践题目,旨在培养学生分析和解决问题的能力。
本书内容充实、图文并茂、各章节内容循序渐进,并注重理论与实践的结合。
本书可作为高等学校计算机科学与技术专业的本科生教材或参考书,也可供其他专业的学生或从事计算机工作的工程技术人员阅读参考。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
李文生,北京邮电大学计算机学院副教授。1990年毕业于天津大学计算机系,获硕士学位。自1990年3月以来,一直在北京邮电大学计算机学院任教,主讲计算机专业本科“编译原理与技术”、“操作系统”等课程,长期站在教学第一线,有着丰富的教学实践经验:出版《编译原理与技术》、《编译程序设计原理与技术》等多部教材。
第1章编译概述/1
1.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.1PascalS语言说明/392
12.4.2课程设计要求及说明/398
12.4.3编译程序的测试/400附录PL/0编译程序源程序/402参考文献/416
— 没有更多了 —
以下为对购买帮助不大的评价