第1章 编译系统概述 1
习题 5
第2章 词法分析 6
2.1词法分析器的设计考虑及手工构造 6
2.1.1单词类型及二元式编码 6
2.1.2源程序的输入及预处理 8
2.1.3基本字的识别和超前搜索 10
2.1.4状态转换图和词法分析器的手工构造 11
2.1.5词法分析器手工构造实例 15
2.2正规式、自动机及词法分析器的自动生成 18
2.2.1基本概念 19
2.2.2正规式与正规集 20
2.2.3确定有限自动机 22
2.2.4非确定有限自动机 23
2.2.5 NFA的确定化 24
2.2.6正规式的NFA表示 26
2.2.7正规式与确定有限自动机的等价性 27
2.3词法分析器的自动生成 29
2.3.1自动生成过程概述 29
2.3.2扫描器控制程序工作原理 32
2.3.3扫描器控制程序的实现 33
习题 38
习题答案 39
第3章 程序设计语言的语法描述 45
3.1文法的引入 45
3.1.1语法树 45
3.1.2语法规则和句子推导 46
3.1.3递归规则和递归文法 47
3.2上下文无关文法 48
3.2.1文法和语言 49
3.2.2文法的二义性 51
3.3文法举例 53
习题 54
习题答案 56
第4章 自上而下的语法分析 60
4.1带回溯的自上而下分析法概述 60
4.2直接左递归的消除 61
4.3不带回溯的自上而下分析法的基本原理 63
4.4提取左因子 66
4.5 first集和follow集 66
4.5.1 first集的定义及构造算法 66
4.5.2 follow集的定义及构造算法 69
4.6递归下降分析法 71
4.7预测分析法 75
4.7.1预测分析表的构造 75
4.7.2预测分析控制程序 76
4.7.3预测分析程序讨论 81
4.7.4应用举例 83
习题 86
习题答案 86
第5章 自下而上的语法分析 95
5.1自下而上的语法分析概述 95
5.2 LR分析法的基本原理 98
5.3 LR(0)项目集规范族的构造 102
5.4有效项目 104
5.5 LR(0)分析表的构造 104
5.6 SLR(1)分析表的构造 107
5.7 LR语法分析器的控制程序 110
5.8二义文法在LR分析法中的应用 115
5.9应用举例 117
5.10 LR分析法在词法分析器自动构造中的应用 120
5.10.1模型语言的词法描述及SLR分析表 120
5.10.2使用SLR分析表识别单词的基本原理 122
5.10.3算法描述和程序实现 123
5.10.4 LR_LEX中的分析表最小化 128
习题 131
习题答案 133
第6章 语法制导翻译和中间代码生成 139
6.1语法制导翻译概述 140
6.2符号表和常数表 143
6.3中间代码 144
6.3.1三元式 145
6.3.2四元式 145
6.4说明语句(简单变量)的翻译 147
6.5整型算术表达式及赋值语句的翻译 148
6.6混合型算术表达式及赋值语句的翻译 151
6.7布尔表达式的翻译 154
6.8标号和无条件转移语句的翻译 162
6.9控制语句的翻译 164
6.9.1 if-then语句的翻译 165
6.9.2 if-then-else语句的翻译 166
6.9.3 while-do语句的翻译 168
6.9.4复合语句的翻译 170
6.10小结 172
6.11自上而下分析制导翻译概述 172
习题 174
习题答案 176
第7章 目标代码生成 181
7.1目标计算机的虚拟实现 181
7.2语法制导翻译在汇编程序自动构造中的应用 184
7.2.1汇编语言文法和分析表构造 184
7.2.2单词编码表和词法分析 186
7.2.3汇编语言语义和语法制导翻译 188
7.3从四元式到汇编语言的翻译 190
习题 197
习题答案 197
附录A虚拟机汇编程序使用说明 199
附录B课程实习指导 201
参考文献 217