目录 1
丛书序言 1
前言 1
第1章 引言 1
1.1 本书的目的 1
1.2 平台的选择 1
1.3 GJC的总体结构 2
1.4 实验设计 8
第2章 词法分析 9
2.1 单词符号的定义 11
2.2 词法分析程序的基本数据结构 12
2.3 词法分析程序的初始化 15
2.4 扫描下一个字符 16
2.5 扫描下一个符号 17
2.6 滤除源程序中的注释 22
2.7 读取一个标识符 23
2.8 读取一个数值常量 24
2.9 实例分析 25
2.10 小结 27
第3章 语法分析 29
3.1 自顶向下分析 29
3.1.1 自顶向下分析的一般过程 29
3.1.2 自顶向下分析方法的特点 29
3.1.3 自顶向下分析存在的问题及解决方法 30
3.1.4 自顶向下分析的主要方法 32
3.2 自底向上分析 33
3.2.1 基本算法思想 33
3.2.2 自底向上分析的主要方法 33
3.3 GJC中的语法分析过程 34
3.3.1 主要数据结构及方法 35
3.3.2 对各种语法成分的分析 39
3.4 实例分析 51
3.5 小结 61
第4章 符号表管理 63
4.1 GJC中与符号表管理相关的类 65
4.2 Java语言中符号的种类 66
4.3 符号名字的管理 67
4.4 符号的表示 72
4.5 类型的表示 75
4.6 可见性管理 78
4.7 实例分析 84
4.8 小结 86
第5章 抽象语法树 87
5.1 源程序的中间形式 87
5.1.1 逆波兰表示 87
5.1.2 N元表示 88
5.1.3 树形表示 89
5.2.1 Tree.java 90
5.2 GJC中的抽象语法树 90
5.2.2 TreeScanner.java和TreeTranslator.java 100
5.2.3 TreeMaker.java 100
5.2.4 TreeInfo.java 103
5.3 小结 108
第6章 语义分析 109
6.1 上下文环境 109
6.2 符号表相关的操作 112
6.3 语义检查 116
6.4 语义分析的主体 124
6.5 实例分析 131
6.6 小结 133
第7章 错误处理 135
7.1 概述 135
7.2 错误的种类 135
7.3 错误的诊察与报告 136
7.4 错误处理技术 139
7.4.1 错误改正 139
7.4.2 错误局部化处理 140
7.5 限制重复报告错误信息 142
7.6 小结 143
第8章 Java虚拟机指令集简介 145
8.1 Java虚拟机的指令集编码 145
8.2 Java虚拟机支持的基本数据类型 148
8.3 面向堆栈指令的语义 149
8.4 将Java翻译成字节码指令 154
8.5 小结 160
第9章 代码生成 161
9.1 指令的编码 162
9.2 生成代码的管理 165
9.3 指令的发射 165
9.4 存储管理 169
9.5 为Java语言的各种结构生成代码 172
9.5.1 为Java方法生成代码 172
9.5.2 为方法的调用生成代码 174
9.5.3 为循环结构生成代码 175
9.5.4 为条件语句生成代码 177
9.5.5 为异常捕获部分生成代码 178
9.6 实例分析 182
9.7 小结 186
附录一 Pascal实现的PL/O编译器源代码 187
附录二 在J2SE中单独编译GJC编译器 205
附录三 用jdb调试GJC编译器 207
实验一 为Java语言增加默认参数的特性 209
实验二 Java虚拟机上的PL/O编译器 213
实验三 使用工具自动生成词法分析器和语法分析器 219
参考文献 222