第一章 编译过程 1
1.1 语言和机器的关系 2
1.2 编译过程的几个方面 11
1.3 编译程序的设计 15
习题 18
第二章 语言定义 20
2.1 语法和语义 20
2.2 文法 21
2.3 程序设计语言的形式定义 32
2.4 语法分析问题 38
习题 44
第三章 词法分析 46
3.1 符号的识别 46
3.2 词法分析程序的输出 57
3.3 注释等 60
3.4 关于具体语言的问题 61
习题 64
4.1 上下文无关文法 65
第四章 上下文无关文法和自顶向下的语法分析 65
4.2 递归下降方法 72
4.3 LL(1)文法 76
4.4 LL(1)语言 89
4.5 LL(1)语法分析表 97
习题 110
第五章 自底向上的语法分析 112
5.1 自底向上的语法分析 112
5.2 LR(1)文法和语言 117
5.3 LR语法分析表 120
5.4 LR语法分析表的构造 126
5.5 LL与LR语法分析方法对比 137
习题 140
第六章 语法中的嵌入动作 143
6.1 四元组的产生 143
6.2 符号表处理 149
6.3 其它应用 156
习题 157
第七章 编译程序的设计 159
7.1 遍数问题 159
7.2 中间语言 172
7.3 中间目标语言 173
习题 175
第八章 符号表和类型表 176
8.1 符号表 176
8.2 类型表 188
习题 192
第九章 存储分配 193
9.1 运行时刻栈 193
9.2 堆积 207
习题 221
第十章 代码生成 222
10.1 中间代码 222
10.2 用于代码生成的数据结构 227
10.3 为某些典型结构生成代码 231
10.4 P-码 237
10.5 编译时刻与运行时刻 239
习题 240
第十一章 生成机器码 242
11.1 概述 242
11.2 机器码生成的例子 243
11.3 目标代码优化 247
习题 248
第十二章 出错恢复和诊断 249
12.1 错误类型 250
12.2 词法错误 251
12.3 括号错误 253
12.4 语法错误 255
12.5 非上下文无关错误 260
12.6 运行时刻错误 263
习题 265
12.7 界限错误 265
第十三章 编写可靠的编译程序 267
13.1 采用形式定义 267
13.2 模块化设计 269
13.3 检查编译程序 273
习题 273
习题解答 275
参考文献 297
中英文名词对照表 303