第一章 概论 1
1.1程序语言和语言处理程序 1
1.2解释程序概况 3
1.3编译程序概况 4
小结 7
习题一 7
第二章 形式语言基础 8
2.1上下文无关文法 8
2.2推导树 11
2.3关系及其运算 16
2.4一些说明 23
小结 24
习题二 25
第三章 有限状态自动机和词法分析 27
3.1有限状态自动机 27
3.1.1有限状态自动机概念 27
3.1.2有限状态自动机表示 30
3.1.3有限状态自动机的等价性定理 32
3.2有限状态自动机和正则表达式 34
3.2.1正则表达式概念 34
3.2.2传递图 35
3.3有限状态自动机的最小化 38
3.4词法分析 42
小结 48
习题三 48
第四章 自顶向下句法分析 51
4.1下推自动机 51
4.1.1下推自动机概念 51
4.1.2下推自动机应用举例 53
4.2LL(1)文法 54
4.2.1自顶向下句法分析 54
4.2.2LL(1)文法 55
4.2.3LL(1)文法句法分析的实现 56
4.2.4非LL(1)文法到LL(1)文法的转换 62
4.3产生式选择集合的计算 64
4.3.1求FIRST(α)集合 64
4.3.2求FOLLOW(〈A〉)集合 67
小结 69
习题四 69
第五章 自底向上句法分析 73
5.1引言 73
5.2LR(0)文法 77
5.2.1概念 77
5.2.2LR(0)文法的句法分析 82
5.3SLR(1)文法和LR(1)文法 84
5.3.1SLR(1)文法 84
5.3.2LR(1)文法 89
5.4LALR(1)文法 94
小结 98
习题五 99
第六章 中间代码生成和符号表 101
6.1中间代码 101
6.1.1后缀表示 101
6.1.2多元组 104
6.1.3树 107
6.2表达式的翻译 108
6.2.1句法制导翻译文法 108
6.2.2属性文法 111
6.2.3表达式的翻译 115
6.2.4布尔表达式的翻译 117
6.3顺序控制结构的翻译 119
6.3.1if语句的翻译 119
6.3.2for语句的翻译 121
6.3.3go to语句的翻译 123
6.4符号表 124
6.4.1符号表内容 124
6.4.2符号表的数据结构 127
6.4.3块结构语言的符号表简介 131
小结 135
习题六 135
第七章 运行时刻存储和环境管理 138
7.1引言 138
7.2过程调用记录 139
7.3块结构语言的非局部量的访问 142
7.4数组和下标变量 153
7.4.1数组 153
7.4.2下标变量 157
7.5形式参数和实在参数 158
7.5.1按访问调用 158
7.5.2按值调用 159
7.5.3数组 159
7.5.4过程 161
7.5.5标号 161
7.6过程调用和返回 161
7.6.1过程调用和返回任务的划分 161
7.6.2过程调用和返回语句的翻译 162
小结 163
习题七 163
第八章 代码生成 166
8.1概述 166
8.2寄存器和临时变量的存储分配 168
8.2.1寄存器的分配 168
8.2.2基地址寄存器的加载 171
8.2.3临时变量的分配 173
8.3算术表达式的代码生成 176
8.3.1寄存器分配子程序 176
8.3.2寄存器值的保存 177
8.3.3寄存器加载 178
8.3.4取变量子程序 179
8.3.5关于加法四元组的代码生成的描述 179
8.4代码生成的进一步讨论 181
8.4.1与转向有关的中间代码的目标代码生成 181
8.4.2过程调用中间代码的目标代码生成 184
8.4.3过程说明入口处的处理简介 187
8.5与机器无关的代码优化概述 188
8.5.1基本块和基本块的值 189
8.5.2数据流分析简介 193
小结 198
习题八 198
第九章 出错恢复 200
9.1引言 200
9.2词法分析的出错恢复 201
9.3LR和LL句法分析的出错恢复 201
小结 204
习题九 205
参考文献 206