编译技术与应用(微课视频版 题库版)
作者:杨金民,陈果,黎文伟
出版社:清华大学出版社
出版时间:2023-04-01
ISBN:9787302631057
定价:¥69.00
第1章编译技术概述1
1.1计算模型和机器语言的特性2
1.2高级程序语言及其特性4
1.3编译方法及过程6
1.3.1源程序的构成特性6
1.3.2编译过程7
1.3.3编译器的结构特性12
1.4编译器构造方法学13
1.5编译前对源程序文本的预处理15
1.6程序调试17
1.7编译执行和解释执行18
1.8编译方式的演进20
1.9虚拟机22
1.10程序语言的发展历程23
1.11当前主流的编译器产品24
1.12编译知识的广泛应用25
1.13本章小结26
知识拓展: 别名的概述26
习题28
第2章词法分析29
2.1高级程序语言的词构成特性29
2.2词法的描述31
2.2.1正则语言和正则运算31
2.2.2C语言词法的正则描述33
2.2.3词法分析的实现框架34
2.2.4正则表达式的含义35
2.3基于状态转换图的词法分析36
2.3.1基于状态转换图的匹配判断36
2.3.2状态转换图的特征37
2.3.3基于状态转换图的通用词法分析器39
2.4正则表达式的状态转换图自动生成方法40
2.4.1正则表达式的NFA原生构造方法41
2.4.2基于NFA的匹配判断算法44
2.4.3基于NFA的DFA构造方法46
2.4.4正则表达式的最简NFA构造法49
2.4.5特殊正则表达式的最简NFA构造54
2.4.6NFA和DFA中状态属性值的确定方法56
2.4.7正则表达式之间的包含关系58
2.5正则表达式及其DFA在文本搜索中的应用61
2.6本章小结62
知识拓展: NFA和DFA构造中涉及的数据结构63
习题65
◆编译技术与应用(微课视频版·题库版)目录◆第3章语法分析67
3.1程序的树结构特性68
3.2语言的语法描述69
3.3词串的语法分析树及其构造策略73
3.4语法描述和词法描述的比较75
3.5自顶向下和最左推导的语法分析78
3.5.1自顶向下和最左推导的语法分析过程78
3.5.2左递归及其消除方法80
3.5.3左公因子及其提取方法83
3.5.4推导中的产生式选择84
3.5.5FIRST和FOLLOW函数值求解算法87
3.5.6LL(1)文法特性及其语法分析表93
3.5.7二义性文法的可改造性94
3.5.8基于LL(1)语法分析表和符号栈的语法分析器通用代码95
3.6自底向上的语法分析98
3.6.1自底向上的语法分析及有待解决的关键问题99
3.6.2文法的DFA构造方法100
3.6.3基于状态栈和文法DFA的LR语法分析104
3.6.4基于FOLLOW函数值的冲突解决方法107
3.6.5基于语法分析表的LR语法分析通用代码108
3.6.6基于FOLLOW精确化的冲突解决方法112
3.7LL语法分析和LR语法分析的对比116
3.8LR文法设计116
3.8.1DFA物理含义的挖掘和应用117
3.8.2尽量减少文法中的非终结符数量119
3.8.3非终结符语义的宽泛化121
3.8.4文法的二义性及其消除方法124
3.8.5LALR(1)型DFA的收益和代价124
3.8.6文法的上下文无关性126
3.9LR语法分析中错误的恢复127
3.10本章小结129
知识拓展: 语法分析表构造中涉及的数据结构130
习题132
第4章语法制导的翻译135
4.1LR分析中的语法制导翻译136
4.1.1LR分析中的语法制导翻译简介136
4.1.2LR分析中语法制导的翻译实现框架139
4.1.3词法分析器构造工具的实现142
4.2LL分析中语法制导的翻译149
4.2.1LL分析中语法制导的翻译简介149
4.2.2LL分析中语法制导的翻译实现框架150
4.3从LR型SDT得出LL型SDT156
4.4LR语法分析中对继承属性的处理158
4.5本章小结161
习题162
第5章语义分析与中间代码生成164
5.1语义分析和中间代码生成简介165
5.1.1程序的层级结构165
5.1.2类型的语义分析167
5.1.3变量的语义分析170
5.1.4函数的语义分析173
5.1.5中间语言简介174
5.1.6中间代码生成简介176
5.2类型和变量的语义分析框架179
5.3类型和变量定义的SDT设计180
5.3.1高级程序语言中的指针语义180
5.3.2类型和变量定义的文法设计182
5.3.3类型和变量定义的语义分析及其SDD设计183
5.3.4类型和变量定义的语义分析SDT设计185
5.4变量使用的SDT设计190
5.4.1变量地址的确定方法190
5.4.2描述变量使用的文法192
5.4.3变量使用的语义分析和中间代码生成SDD设计194
5.4.4变量使用的语义分析和中间代码生成SDT设计197
5.5运算的语义分析和中间代码生成201
5.6类型系统205
5.7分支语句的中间代码生成206
5.7.1分支语句的文法207
5.7.2分支语句的中间代码生成SDD设计209
5.7.3分支语句的中间代码生成SDT设计212
5.7.4分支语句中break和continue语句的处理217
5.8函数调用的语义分析和中间代码生成218
5.9本章小结219
习题220
第6章运行环境和目标代码生成222
6.1函数调用223
6.1.1局部变量的静态存储分配方案224
6.1.2局部变量的动态存储分配方案225
6.1.3相对寻址方式带来的好处228
6.1.4形参和数组的动态性229
6.2软件集成230
6.2.1源代码级的软件集成231
6.2.2二进制可执行文件级的软件集成233
6.2.3跨模块内存访问带来的问题及解决方法235
6.2.4静态链接与动态链接237
6.3软件调试238
6.3.1程序之间的交互238
6.3.2运行环境的构建239
6.3.3调试器与被调程序之间的协同交互241
6.3.4变量值的获取与关联243
6.4垃圾自动回收245
6.4.1基于引用记数的垃圾回收方法246
6.4.2基于定期识别和清扫的垃圾回收方法247
6.4.3基于程序分析的垃圾识别和清除249
6.5异常处理250
6.6面向对象中的多态252
6.6.1面向对象编程问题的揭示253
6.6.2基于代理的解耦和封装实现方案255
6.6.3基于多态的面向对象编程问题解决方案256
6.6.4接口特性259
6.6.5接口获取259
6.7本章小结260
习题262
第7章代码优化264
7.1中间代码的优化265
7.1.1基本块和流图265
7.1.2中间代码优化途径267
7.2目标代码优化基础270
7.2.1计算机特性270
7.2.2目标语言272
7.2.3目标代码生成与优化275
7.3寄存器分配276
7.3.1活变量标识算法276
7.3.2基于图着色的寄存器分配278
7.3.3变量溢出280
7.3.4内存数据的加载和刷新281
7.3.5寄存器腾空和变量溢出283
7.3.6同步函数和异步函数284
7.4基于机器其他特性的代码优化285
7.4.1基于指令流水线处理的代码优化285
7.4.2基于高速缓存的代码优化286
7.4.3基于多核处理器的代码优化287
7.4.4大数据处理和云计算中的优化288
7.5本章小结289
习题289
参考文献291