- ISBN:9787302381419
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:399
- 出版时间:2021-10-01
- 条形码:9787302381419 ; 978-7-302-38141-9
本书特色
本套教材已伴随着计算机科学与技术的发展茁壮成长了三十余年,获得了中华人民共和国教育部科技进步奖、普通高等学校优秀教材全国特等奖、全国畅销书金奖等三十多项部级以上奖励,被近千所高校选作教材,教学效果非常好。本套教材经过多次修订改版和增加新品种、新内容、新技术,基本涵盖了本科生和硕士研究生的主要课程。本套教材的作者全部是清华大学计算机系的教师,教材的内容、语言特点、课时安排体现了他们治学严谨的特点,概念表述严谨,逻辑推理严密,语言精练。同时,本套教材体系完整,结构严谨,理论结合实际,注重素质培养。 《编译原理(第3版)》特色 在保持前两个版本风格的基础上,重组了语法制导的方法,语义分析,中间代码生成,运行时存储组织,代码优化和目标代码生成等相关内容,力求在各主要知识点之间达到较合理的均衡。 包含两个小型编译程序的设计实例,既可以作为学生了解编译程序的构造原理和实现技术的平台,也可以作为课程设计的备选素材。 通过程序实例,对业界广泛使用的开源编译器GCC及其相关工具链的作用和基本用法进行简介,为可能从事相关领域工作的学生提供必要的基础知识储备。
内容简介
《编译原理(第3版)》介绍程序设计语言编译程序构造的一般原理、基本设计方法和主要实现技术,主要内容包括文法、自动机和语言的基础知识,词法分析,语法分析,语法制导的语义计算,语义分析,中间代码生成,运行时存储组织,代码优化和目标代码生成。 除了基本设计原理外,书中还包含两个小型编译程序的设计实例,可选作课程设计的素材。一个是PL/O语言编译程序,其设计和实现框架贯穿于该书相关章节中;另一个是简单面向对象语言Decaf的编译程序。该书*后还介绍了业界广泛使用的开源编译器GCC及和它紧密相关的Binutils工具链,通过一系列程序实例说明这些工具的作用和基本用法。 《编译原理(第3版)》可作为高等院校计算机科学与技术相关专业的本科生教材,也可作为相关教师、研究生或工程技术人员的参考书。
目录
第1章引论1
1.1什么是编译程序1
1.2编译过程和编译程序的结构2
1.2.1编译过程概述2
1.2.2编译程序的结构5
1.2.3编译阶段的组合6
1.3解释程序和一些软件工具7
1.3.1解释程序7
1.3.2处理源程序的软件工具8
1.4PL/0语言编译系统10
1.4.1PL/0语言编译系统构成11
1.4.2PL/0语言11
1.4.3类Pcode语言14
1.4.4PL/0编译程序15
1.4.5PL/0语言编译系统的驱动代码16
练习18
第2章文法和语言19
2.1文法的直观概念19
2.2符号和符号串20
2.3文法和语言的形式定义21
2.4文法的类型25
2.5上下文无关文法及其语法树26
2.6句型的分析29
2.6.1自上而下的分析方法30
2.6.2自下而上的分析方法30
2.6.3句型分析的有关问题31
2.7有关文法实际应用的一些说明32
2.7.1有关文法的实用限制32
2.7.2上下文无关文法中的ε规则33
练习33
第3章词法分析37
3.1词法分析程序的设计37
3.1.1词法分析程序和语法分析程序的接口方式37
3.1.2词法分析程序的输出37
3.1.3将词法分析工作分离的考虑38
3.1.4词法分析程序中如何识别单词39
3.2PL/0编译程序中词法分析程序的设计和实现39
3.3单词的形式化描述工具44
3.3.1正规文法44
3.3.2正规式45
3.3.3正规文法和正规式的等价性46
3.4有穷自动机47
3.4.1确定的有穷自动机(DFA)47
3.4.2不确定的有穷自动机(NFA)49
3.4.3NFA转换为等价的DFA50
3.4.4确定有穷自动机的化简52
3.5正规式和有穷自动机的等价性54
3.6正规文法和有穷自动机的等价性57
3.7词法分析程序的自动构造工具58
3.7.1lex描述文件中使用的正规表达式59
3.7.2lex描述文件的格式60
3.7.3lex的使用63
3.7.4与yacc的接口约定63
练习64
第4章自顶向下语法分析方法68
4.1确定的自顶向下分析思想68
4.2LL(1)文法的判别72
4.3某些非LL(1)文法到LL(1)文法的等价变换77
4.3.1提取左公共因子77
4.3.2消除左递归80
4.4不确定的自顶向下分析思想84
4.5LL(1)分析的实现86
4.5.1递归下降LL(1)分析程序86
4.5.2表驱动LL(1)分析程序92
4.6LL(1)分析中的出错处理95
4.6.1应急恢复95
4.6.2短语层恢复96
4.6.3PL/0语法分析程序的错误处理98
练习99
第5章自底向上优先分析103
5.1自底向上优先分析概述104
5.2简单优先分析法104
5.2.1优先关系定义105
5.2.2简单优先文法的定义106
5.2.3简单优先分析法的操作步骤106
5.3算符优先分析法107
5.3.1直观算符优先分析法107
5.3.2算符优先文法的定义108
5.3.3算符优先关系表的构造110
5.3.4算符优先分析算法115
5.3.5优先函数117
5.3.6算符优先分析法的局限性121
练习121
第6章LR分析123
6.1LR分析概述123
6.2LR(0)分析124
6.2.1可归前缀和子前缀125
6.2.2识别活前缀的有限自动机127
6.2.3活前缀及可归前缀的一般计算方法128
6.2.4LR(0)项目集规范族的构造130
6.3SLR(1)分析137
6.4LR(1)分析144
6.4.1LR(1)项目集族的构造145
6.4.2LR(1)分析表的构造146
6.5LALR(1)分析148
6.6二义性文法在LR分析中的应用153
练习156
第7章语法制导的语义计算160
7.1基于属性文法的语义计算160
7.1.1属性文法160
7.1.2遍历分析树进行语义计算164
7.1.3S属性文法和L属性文法166
7.1.4基于S属性文法的语义计算166
7.1.5基于L属性文法的语义计算168
7.2基于翻译模式的语义计算172
7.2.1翻译模式172
7.2.2基于S翻译模式的语义计算173
7.2.3基于L翻译模式的自顶向下语义计算174
7.2.4基于L翻译模式的自底向上语义计算178
7.3分析和翻译程序的自动生成工具yacc183
7.3.1yacc描述文件184
7.3.2使用yacc的一个简单例子187
练习189
第8章静态语义分析和中间代码生成195
8.1符号表195
8.1.1符号表的作用195
8.1.2符号的常见属性196
8.1.3符号表的实现197
8.1.4符号表体现作用域与可见性197
8.1.5实例: PL/0编译程序中符号表的设计与实现199
8.2静态语义分析203
8.2.1静态语义分析的主要任务203
8.2.2类型检查204
8.3中间代码生成208
8.3.1常见的中间表示形式208
8.3.2生成抽象语法树210
8.3.3生成三地址码211
8.4多遍的方法220
练习223
第9章运行时存储组织229
9.1运行时存储组织概述229
9.1.1运行时存储组织的作用与任务229
9.1.2程序运行时存储空间的布局230
9.1.3存储分配策略231
9.2活动记录234
9.2.1过程活动记录234
9.2.2嵌套过程定义中非局部量的访问236
9.2.3嵌套程序块的非局部量访问239
9.2.4动态作用域规则和静态作用域规则240
9.3过程调用241
9.4PL/0编译程序的运行时存储组织243
9.4.1PL/0程序运行栈中的过程活动记录244
9.4.2实现过程调用和返回的类Pcode指令245
9.5面向对象语言存储分配策略247
9.5.1类和对象的角色247
9.5.2面向对象程序运行时的特征247
9.5.3对象的存储组织248
9.5.4例程的动态绑定249
9.5.5其他话题251
练习251
第10章代码优化和目标代码生成255
10.1基本块、流图和循环255
10.1.1基本块255
10.1.2流图256
10.1.3循环257
10.2数据流分析基础258
10.2.1数据流方程的概念259
10.2.2到达定值数据流分析259
10.2.3活跃变量数据流分析262
10.2.4几种重要的变量使用数据流信息263
10.3代码优化技术268
10.3.1窥孔优化270
10.3.2局部优化271
10.3.3循环优化275
10.3.4全局优化278
10.4目标代码生成技术279
10.4.1目标代码生成的主要环节280
10.4.2一个简单的代码生成过程282
10.4.3高效使用寄存器285
10.4.4图着色寄存器分配288
10.4.5PL/0编译器的目标代码生成程序289
练习292
第11章课程设计296
11.1基于PL/0编译器的课程设计296
11.2基于Decaf编译器的课程设计297
11.2.1Decaf编译器实验的总体结构298
11.2.2词法和语法分析(阶段一)300
11.2.3语义分析(阶段二)303
11.2.4中间代码生成(阶段三)309
11.2.5代码优化(阶段四)317
11.2.6目标代码生成(阶段五)320
11.2.7基于Decaf编译器的课程设计333
11.3软件包相关信息说明335
第12章编译器和相关工具实例——GCC/Binutils336
12.1开源编译器GCC336
12.1.1GCC介绍337
12.1.2GCC总体结构338
12.1.3GCC编译流程339
12.1.4GCC代码组织341
12.1.5小结341
12.2开源工具Binutils341
12.2.1目标文件341
12.2.2汇编器和链接器342
12.2.3其他工具343
12.2.4小结343
12.3编译器和工具使用实例343
12.3.1编译特定版本的编译器343
12.3.2查看目标文件347
12.3.3程序代码优化349
12.3.4小结353
练习353
附录APL/0编译程序文本354
参考文献398
作者简介
本书介绍程序设计语言编译程序构造的一般原理、基本设计方法和主要实现技术,主要内容包括文法、自动机和语言的基础知识,词法分析,语法分析,语法制导的语义计算,语义分析,中间代码生成,运行时存储组织,代码优化和目标代码生成。 除了基本设计原理外,书中还包含两个小型编译程序的设计实例,可选作课程设计的素材。一个是PL/0语言编译程序,其设计和实现框架贯穿于本书相关章节中;另一个是简单面向对象语言Decaf的编译程序。本书*后还介绍了业界广泛使用的开源编译器GCC及和它紧密相关的Binutils工具链,通过一系列程序实例说明这些工具的作用和基本用法。 本书可作为高等院校计算机科学与技术相关专业的本科生教材,也可作为相关教师、研究生或工程技术人员的参考书。
-
当代中国政府与政治(新编21世纪公共管理系列教材)
¥33.6¥48.0 -
落洼物语
¥8.7¥28.0 -
中国当代文学名篇选读
¥19.1¥53.0 -
中医基础理论
¥50.7¥59.0 -
北大人文课(平装)
¥13.9¥45.0 -
宪法-第二版
¥12.2¥29.0 -
当代中国政府与政治 第二版
¥57.8¥68.0 -
EPLAN电气设计
¥29.9¥39.8 -
闯进数学世界――探秘历史名题
¥21.3¥32.8 -
企业法务教程
¥34.8¥49.0 -
习近平新时代中国特色社会主义思想概论
¥18.2¥26.0 -
金融学
¥29.9¥49.0 -
计算机操作系统教程(第4版)(清华大学计算机系列教材)
¥31.9¥49.0 -
三国史
¥27.5¥50.0 -
陶瓷坯釉料制备技术/高职高专材料工程技术专业
¥37.4¥45.0 -
陶瓷工艺技术
¥41.7¥49.0 -
飞机总体设计
¥46.8¥78.0 -
陶瓷工艺学/焦宝祥
¥41.7¥49.0 -
古代汉语(第四册)
¥16.1¥35.0 -
编辑审稿实务教程
¥35.1¥45.0