第一章 编译过程 1
1.1 翻译和解释 1
1.2 编译程序的结构 6
1.3 阶段的分组 10
1.4 编译器的伙伴 11
1.5 编译程序的生成 13
练习一 17
2.1 词法分析器的作用 18
第二章 词法分析 18
2.2 源程序的输入 21
2.3 单词符号的识别 23
2.4 状态转换图 24
2.5 正则表达式与有限自动机 27
2.6 词法分析器的自动生成 41
练习二 47
第三章 语法分析 48
3.1 文法和语言 48
3.2 语法树和二义性 54
3.3 符号串的分析 57
3.4 递归下降分析法 60
3.5 LL(1)分析法 71
3.6 算符优先分析法 79
3.7 LR分析法 90
3.8 LALR分析法 110
3.9 分析表的自动生成器 116
练习三 119
第四章 中间代码 121
4.1 逆波兰表示法 122
4.2 三元式 127
4.3 四元式 130
4.4 语法制导生成中间语言 134
练习四 140
第五章 符号表和模式表 141
5.1 符号表的组织和使用 141
5.2 顺序查表与造表法 146
5.3 对半查表与造表法 148
5.4 散列表法 150
5.5 分程序结构语言符号表的组织 154
5.6 非分程序结构语言符号表的组织 158
5.7 模式表 160
练习五 163
第六章 目标代码结构 165
6.1 程序的目标结构 165
6.2 说明和语句的目标结构 166
6.3 过程调用时数据传递的基本形式 172
6.4 循环语句的目标结构 176
练习六 180
第七章 运行时的存储组织及管理 181
7.1 存储组织 181
7.2 静态存储分配策略 186
7.3 栈式存储分配策略 189
7.4 堆式存储分配策略 195
练习七 198
8.1 错误处理概述 200
第八章 错误处理 200
8.2 词法及语法分析阶段错误的处理 202
8.3 语义错误处理 205
练习八 206
第九章 代码优化 207
9.1 优化概述 207
9.2 局部优化 208
9.3 循环优化 215
练习九 222
10.1 引言 225
第十章 代码生成 225
10.2 目标机器指令系统 226
10.3 一个简单的代码生成器 228
10.4 寄存器分配 237
10.5 窥孔优化 240
练习十 243
附录:试题举例 245
主要参考文献 250