第1章 导引 1
1.1 数学基础 1
1.1.1 集合与序列 1
1.1.2 语言 2
1.1.3 关系与翻译 3
1.1.4 图 4
1.1.5 证明 6
1.2 编译 8
1.2.1 编译阶段 8
1.2.2 编译器构造 12
1.3 重写系统 13
1.3.1 语言模型 14
本书要点 15
习题 15
部分习题解答 17
第2章 词法分析 19
2.1 模型 19
2.1.1 正规表达式 19
2.1.2 有穷自动机 20
2.1.3 有穷自动机的表示 22
2.1.4 简化 23
2.1.5 有穷变换机 28
2.2 方法 29
2.2.1 单词与单词记号 29
2.2.2 词法分析器 33
2.2.3 额外的任务 39
2.3 理论 39
2.3.1 正规表达式到有穷自动机的变换 39
2.3.2 有穷自动机的化简 44
2.3.3 非正规词法构造 51
2.3.4 判定问题 60
习题 62
部分习题解答 67
第3章 语法分析 69
3.1 模型 69
3.1.1 文法 69
3.1.2 下推自动机 80
3.2 方法 83
3.2.1 自上而下分析 83
3.2.2 递归下降分析程序 86
3.2.3 消除左递归 89
3.2.4 自下而上分析 91
3.3 理论 96
3.3.1 分析模型的能力 97
3.3.2 验证文法形式的语法描述 97
3.3.3 文法的简化 99
3.3.4 文法的范式和基于它们的分析 108
3.3.5 文法不能描述的语法 114
3.3.6 判定问题 120
习题 122
部分习题解答 127
第4章 确定的自上而下分析 130
4.1 预测集合和LL文法 130
4.2 预测分析 136
4.2.1 递归下降预测分析 136
4.2.2 表驱动的预测分析 139
4.2.3 处理错误 144
习题 145
部分习题解答 149
第5章 确定的自下而上分析 151
5.1 优先分析 151
5.1.1 算符优先分析算法 151
5.1.2 算符优先表的构造 154
5.1.3 处理错误 155
5.1.4 扩展 158
5.1.5 限制 160
5.2 LR语法分析 160
5.2.1 LR分析算法 160
5.2.2 构造LR表 163
5.2.3 LR分析中的错误处理 170
习题 172
部分习题解答 175
第6章 语法制导翻译和中间代码生成 178
6.1 自下而上语法制导翻译和中间代码生成 179
6.1.1 语法树 180
6.1.2 三地址码 185
6.1.3 波兰式 188
6.2 自上而下的语法制导翻译 189
6.3 语义分析 191
6.4 符号表 192
6.4.1 组织 192
6.4.2 存储标识符名字 193
6.4.3 块结构的符号表 194
6.5 语法制导翻译的软件工具 195
6.5.1 Lex 196
6.5.2 Yacc 197
习题 201
部分习题解答 203
第7章 优化和目标代码生成 205
7.1 跟踪变量的使用 205
7.1.1 基本块 206
7.1.2 基本块内变量的使用 208
7.1.3 基本块之间变量的使用 211
7.2 中间代码优化 214
7.3 目标代码的优化和生成 218
习题 222
部分习题解答 225
结束语 226
文献纪要 226
研究生层次的话题 227
当前趋势 230
附录A 实现 233
A.1 概念 233
类接口 234
A.2 代码 236
参考文献 256