第一章 编译原理概述 1
1.1 高级程序设计语言的实现 1
目录 1
1.2 编译程序的组成 2
1.3 编译程序的实现 4
1.4 其他相关程序 5
2.2 SNL的词法 7
2.2.1 语言的字符表 7
2.2.2 单词的巴科斯范式 7
2.1 SNL的特点 7
第二章 SNL介绍 7
2.3 SNL的语法 8
2.3.1 语法的非形式说明 8
2.3.2 语法的形式定义 9
2.4 SNL的语义 13
习题二 14
第三章 SNL编译程序简介 15
3.1 SNL编译程序功能结构 15
3.2 SNL编译程序的开发环境 17
3.3 SNL编译程序包 17
说明 29
3.4 SNL编译程序的主程序 29
第四章 SNL的词法分析 35
4.1 词法分析简介 35
4.1.1 单词的分类 35
4.1.2 单词的TOKEN表示 36
4.1.3 词法分析程序和语法分析程序的接口 37
4.2 DFA的构造和实现 37
4.2.1 状态转换图 37
4.2.2 状态转换图的实现 40
输出 42
4.3.1 词法分析程序的输入/ 42
4.3 词法分析程序的实现 42
4.3.2 实现词法分析程序的注意事项 44
4.3.3 词法分析程序的实现 45
框图 45
4.4 词法分析程序的自动生 49
成器 49
4.4.1 LEX/FLEX简介 49
4.4.2 LEX运行与应用过程 49
4.4.3 LEX源程序结构 50
分析程序 52
4.4.4 应用LEX构造词法 52
习题四 57
第五章 SNL的语法分析 58
5.1 语法分析概述 58
5.1.1 上下文无关文法 58
5.1.2 语法分析方法的分类 60
5.1.3 3个重要集合 60
5.1.4 SNL的Predict集 61
输出 64
5.2.1 语法分析程序的输入/ 64
5.2 语法分析程序的实现 64
5.2.2 语法树节点的数据 65
结构 65
5.3 递归下降法的实现 69
5.3.1 递归下降法基本原理 69
5.3.2 递归下降法应满足的 70
条件 70
5.3.3 递归下降法的语法分析 71
程序框图 71
基本原理 117
5.4.1 LL(1)语法分析方法的 117
实现 117
5.4 LL(1)语法分析方法的 117
5.4.2 SNL的LL(1)语法 118
分析概述 118
5.4.3 LL(1)语法分析程序 119
框图 119
5.5 语法分析程序的自动生 158
成器 158
5.5.1 YACC/Bison 158
5.5.2 ACCENT 164
习题五 170
第六章 符号表管理与语义分析 171
6.1 语义分析概述 171
6.2 符号表管理 172
6.2.1 符号表的内容 172
6.2.2 符号表的组织 177
6.2.3 符号表的操作 179
6.2.4 符号表的实现 179
6.3 语义分析实现 181
6.3.1 输入/输出 182
6.3.2 算法框图 182
习题六 197
7.1 中间代码简介 198
第七章 中间代码生成 198
7.1.1 中间代码的表示形式 199
7.1.2 中间代码的生成方法 200
7.2 SNL的中间语言 201
7.3 SNL的中间代码生成 203
7.3.1 输入/输出 203
7.3.2 中间代码的构造方法 205
7.3.3 从语法树生成四元式 209
7.3.4 相关的应用函数 210
说明 213
7.3.5 中间代码生成程序 213
习题七 221
第八章 中间代码优化 222
8.1 中间代码优化简介 222
8.1.1 优化种类介绍 222
8.1.2 基本块的划分 223
8.2 常量表达式优化 224
8.2.1 常量表达式优化的 224
原理 224
8.2.2 常量表达式节省的 226
实现 226
8.3.1 公共表达式优化原理 231
8.3 公共表达式节省方法 231
8.3.2 公共表达式节省的 233
实现 233
8.4 循环不变式外提 241
8.4.1 循环不变式外提的 241
原理 241
8.4.2 循环外提的实现 244
习题八 251
储器 252
9.1.1 TM的寄存器和存 252
9.1 虚拟目标机TM 252
第九章 SNL的目标代码生成 252
9.1.2 TM的地址模式和指 253
令集 253
9.2 编译程序中运行时存储 254
空间管理 254
9.2.1 存储空间结构 255
9.2.2 过程活动记录 256
9.2.3 动态链 258
9.3 语法树到目标代码的生成 259
9.3.1 原理 259
9.3.2 框图 263
9.4.1 原理 274
9.4 四元式到目标代码的生成 274
9.4.2 四元式到目标代码生成中的关键问题 279
9.4.3 程序框图 280
习题九 292
10.1 解释程序 293
命令 293
10.2 虚拟目标机TM的可执行 293
程序 293
第十章 虚拟目标代码的解释 293
10.3 解释程序的实现 294
习题十 304
第十一章 实践课题 305
11.1 语言的扩充和实现 305
11.2 实现方法的扩充 305
11.3 应用自动生成工具 306
11.4 实现语言 306
12.1.2 SNLC的运行环境 307
12.1.1 SNLC的特色 307
12.1.3 SNLC的安装和卸载 307
第十二章 SNLC软件使用指南 307
12.1 SNLC概述 307
12.1.4 SNLC的启动和退出 311
12.2 SNLC的使用 312
12.2.1 SNL文件的操作 313
12.2.2 SNL程序的词法 313
分析 313
12.2.3 SNL程序的语法 314
分析 314
12.2.4 SNL程序的语义 315
分析 315
生成 316
12.2.5 SNL程序的中间代码 316
12.2.6 SNL程序的优化 317
12.2.7 SNL程序的目标代码 318
生成 318
12.2.8 SNL程序的虚拟 320
执行 320
12.3 有关问题的说明 323
12.3.1 SNLC的维护和出错 323
处理 323
12.3.2 SNLC的帮助功能 323
参考文献 326