目录 1
第一章 引言 1
1.1 编译程序、汇编程序、解释程序 1
1.2 编译过程概述 3
1.3 编译程序构造的一些例子 8
第二章 文法和语言 13
2.1 文法的讨论 13
2.2 符号和符号串 17
2.3 文法和语言的形式定义 21
2.4 语法树和二义性 27
2.5 句型的分析问题 34
2.6 有关文法的一些关系 38
2.7 构造关系的传递闭包 42
2.8 有关文法的实用限制 47
2.9 其它的语法表示方法 50
2.10 形式语言理论概观及其参考资料 54
2.11 总的回顾 57
第三章 扫描程序 59
3.1 引言 59
3.2 正则表达式和有穷状态自动机 62
3.3 编写扫描程序 77
3.4 扫描程序的构造程序 86
3.5 AED RWORD系统 94
3.6 历史概述 101
第四章 自顶向下识别算法 102
4.1 带回溯的自顶向下识别算法 102
4.2 自顶向下分析算法中的问题及其解决办法 112
4.3 递归子程序方法 119
4.4 历史概述 123
5.1 优先关系及其应用 124
第五章 简单优先文法 124
5.2 优先关系的定义和构造 128
5.3 分析算法 135
5.4 优先函数 138
5.5 构造优先文法的困难 143
5.6 历史概述 147
第六章 其它自底向上识别算法 148
6.1 算符优先文法 149
6.2 高阶优先文法 161
6.3 限界上下文文法 170
6.4 转换矩阵 177
6.5 历史概述 187
第七章 产生式语言 191
7.1 产生式语言 191
7.2 使用PL 201
7.3 调用语义程序 207
7.4 历史概述 209
第八章 运行时的存贮组织 211
8.1 数据区和区头向量 212
8.2 属性单元 215
8.3 基本数据类型的存贮分配 216
整型变量,实型变量,逻辑变量,指示字变量 217
8.4 数组的存贮分配 217
向量,矩阵,多维数组,内情向量 223
8.5 字符串的存贮分配 223
8.6 结构的存贮分配 225
Hoare记录,PL/1结构,Standish数据结构 231
8.7 实在参数与形式参数之间的对应 231
引用调用,值调用,结果调用,哑变元,名字调用,数组名字和过程名字作实在参数用8.8 FORTRAN存贮管理 238
8.9 ALGOL存贮管理 239
8.10 动态存贮分配 254
8.11 历史概述 262
9.1 关于表的组织 263
第九章 组织各种符号表 263
9.2 不加整理的表和加以整理的表 265
9.3 散列地址编码 267
再散列,拉链,散列函数 278
9.4 树结构的符号表 278
9.5 分程序结构的符号表 279
基本组织,分程序表,开和闭的分程序,登入和查找 285
9.6 历史概述 285
第十章 符号表中的数据 286
10.1 描述信息 286
10.2 结构分量的描述信息 291
第十一章 源程序的内部形式 301
11.1 运算符和运算对象 302
11.2 波兰表示 304
11.3 四元组 311
11.4 三元组,树和间接三元组 313
11.5 基本块 317
11.6 历史概述 318
第十二章 介绍语义程序 320
12.1 翻译中缀形式为波兰表示 320
12.2 翻译中缀形式为四元组 324
12.3 实现语义程序和栈 328
12.4 采用自顶向下句法分析方法的语义处理 330
12.5 历史概述 333
第十三章 类似ALGOL结构的语义程序 335
13.1 语义程序的表示方式 336
13.2 条件语句 339
13.3 标号和转移 342
13.4 变量和表达式 345
13.5 循环语句 349
13.6 布尔表达式优化 351
14.1 分配变量的地址 361
自底向上和自顶向下方法 361
第十四章 运行时变量的存贮分配 361
14.2 对临时变量分配存贮 365
14.3 公用变量和等价变量 372
第十五章 错误校正 385
15.1 引言 385
15.2 校正语义错误 389
15.3 校正语法错误 393
第十六章 解释程序 402
第十七章 代码生成 413
17.1 引言 413
17.2 对简单算术表达式生成代码 416
17.3 运算对象用地址表示 429
17.4 把代码生成扩充到其他四元组类型 442
17.5 紧缩的代码生成 448
17.6 结果模块 452
第十八章 代码优化 464
18.1 基本块内的优化 465
18.2 适中的循环优化 474
18.3 更有效的优化 494
18.4 讨论和历史概述 506
第十九章 宏功能的实现 515
19.1 简单的宏功能方案 515
19.2 其他一些宏功能的特征 528
19.3 通用宏功能生成程序(GPM) 535
19.4 历史概述 542
第二十章 编写翻译程序的系统 545
20.1 引言 545
20.2 考察两个编译程序的编译程序 549
第二十一章 对编译程序编写者的一些提示 561
附录 本书所用的程序设计语言 577
参考资料 587