目录 1
1概论 1
1.1程序设计语言 1
1.2编译程序 3
1.3源程序执行的途径 4
1.4编译程序的结构 5
1.5编译程序的开发 11
习题 14
2文法和形式语言 15
2.1符号和符号串 15
2.2文法和语言 19
2.3语法树和二义性 28
2.4文法的实用限制 34
2.5扩充的BNF表示法 43
2.6文法和语言分类 44
2.7正则表达式与E则集 49
习题二 51
3自动机 54
3.1转换图 54
3.2确定有限自动机(DFA) 55
3.3不确定有限自动机(NFA) 58
3.4 ε—自动机 63
3.5自动机的简化 64
3.6语法图与自动机 67
3.7下推自动机 72
习题三 75
4.1符号表及其应用 77
4符号表 77
4.2符号表的内容 79
4.3存贮分配与符号表的组织 81
4.4标识符的处理 89
4.5符号表的结构和存取 90
习题四 95
5词法分析 96
5.1 引言 96
5.2取单词 98
5.3读标识符 101
5.4取无正负号数 102
5.5词法分析器的自动生成 103
习题五 108
6.1常用的终结符号集 110
6语法和语义分析 110
6.2句子的分析 112
6.3虚拟机 116
6.4递归子程序方法 119
6.5 LL(k)分析方法 124
6.6运算符优先数法 129
6.7状态矩阵法 147
习题六 153
7递归子程序方法 156
7.1 PL/0程序设计语言 156
7.2 PL/0处理机 159
7.3代码生成形式 163
7.4 PL/0编译程序的子程序 167
习题七 186
8 LR(k)分析方法 187
8.1 LR分析方法的逻辑结构及分析过程 187
8.2 LR(0)分析表的构造 194
8.3 SLR(1)分析表的构造 200
8.4 LR(1)分析表的构造 205
8.5 LALR(1)分析表的构造 211
习题八 216
9中间语言 219
9.1逆波兰表示 219
9.2四元式 222
9.3三元式 225
9.4树表示 228
习题九 229
10优化 230
10.1引言 230
10.2有关概念 230
10.3优化处理概述 232
10.4表达式的优化 235
10.5循环优化 237
习题十 241
11语法制导翻译与代码生成 243
11.1语法制导翻译 243
11.2表达式的翻译 244
11.3布尔表达式的翻译 246
11.4语句的语法制导翻译 247
11.5过程调用语句的翻译 251
11.6说明部分的翻译 254
11.7属性文法技术 256
11.8目标代码的生成 260
11.9寄存器的分配 261
习题十一 262
12存贮组织与分配 263
12.1静态存贮分配 263
12.2栈式存贮分配 265
12.3堆式存贮分析 270
12.4参数传递 270
习题十二 273
13.1引言 274
13程序的查错与处理 274
13.2词法分析阶段的查错处理 275
13.3语法分析阶段的查错处理 275
13.4语义错误的处理 277
13.5错误处理程序 277
习题十三 278
附录PL/0编译程序 279
附Ⅰ PL/0语言的文法规则 279
附ⅡPL/0编译程序的功能 280
附Ⅲ PL/0编译程序的有关过程及函数 280
附Ⅳ编译步骤 281
附Ⅴ PL/0编译程序及主要参数 282
附Ⅵ 上机运行及说明 297
参考文献 299