前言
第1章 Javac介绍
1.1 初识Javac
1.2 Javac源码与调试
1.3 Javac命令
第2章 Javac文件系统
2.1 文件相关实现类
2.2 文件的管理
2.2.1 获取JavacFileManager对象
2.2.2 StandardLocation类
2.2.3 JavacFileManager类
第3章 词法分析
3.1 字符编码
3.2 获取字符输入流
3.3 Token与Name
3.3.1 Token介绍
3.3.2 Name对象的生成与存储
3.3.3 Name映射为Token
3.4 生成Token流
第4章 语法分析之认识树节点
4.1 定义及声明
4.1.1 JCCompilationUnit类
4.1.2 JCImport类
4.1.3 JCClassDecl类
4.1.4 JCModifiers类
4.1.5 JCTypeParameter类
4.1.6 JCVariableDecl类
4.1.7 JCMethodDecl类
4.2 语句
4.2.1 JCBlock类
4.2.2 JCIf类
4.2.3 JCWhileLoop、JCDoWhileLoop、JCForLoop与JCEnhancedForLoop类
4.2.4 JCSwitch与JCCase类
4.2.5 JCTry、JCCatch与JCThrow类
4.2.6 JCLabeledStatement、JCReturn、JCContinue与JCBreak类
4.2.7 JCSynchronized类
4.2.8 JCAssert类
4.3 表达式
4.3.1 基本表达式
4.3.2 含运算符的表达式
4.3.3 类型相关表达式
4.3.4 注解表达式
4.4 生成树节点
第5章 语法分析之建立抽象语法树
5.1 定义及声明的抽象语法树
5.2 语句的抽象语法树
5.3 表达式的抽象语法树
5.3.1 基本表达式
5.3.2 含有运算符的表达式
5.4 遍历抽象语法树
第6章 符号表的组织
6.1 符号的定义
6.1.1 Symbol类
6.1.2 TypeSymbol及其子类
6.1.3 VarSymbol类
6.1.4 MethodSymbol及OperatorSymbol类
6.2 符号表的组织
6.2.1 Env类介绍
6.2.2 AttrContext类介绍
6.2.3 Scope类介绍
6.2.4 符号表的建立
6.3 类型的定义
6.3.1 普通类型的定义
6.3.2 泛型相关类型的定义
第7章 填充符号表
7.1 依赖的处理
7.1.1 创建包或类符号
7.1.2 输入包或类下的成员符号
7.2 符号输入的第一阶段
7.2.1 Enter类
7.2.2 visitTopLevel()方法
7.2.3 visitClassDef()方法
7.2.4 visitTypeParameter()方法
7.3 符号输入第二阶段
7.3.1 MemberEnter类
7.3.2 visitImport()方法
7.3.3 visitMethodDef()方法
7.3.4 visitVarDef()方法
第8章 插入式注解的实现
8.1 注解处理器基础
8.1.1 编写注解处理器
8.1.2 注解配置
8.1.3 工具类
8.2 初始化注解处理器
8.3 运行注解处理器
第9章 语义分析之类型转换
9.1 类型转换的种类
9.2 赋值转换
9.3 方法调用转换
9.4 强制类型转换
9.5 数字提升
第10章 语义分析之语法检查
10.1 类型定义的检查
10.1.1 父类及实现接口的检查
10.1.2 类型定义的唯一性检查
10.1.3 类型中方法的兼容性检查
10.1.4 类型中实现方法的检查
10.2 变量定义的检查
10.3 方法定义的检查
10.3.1 方法的唯一性检查
10.3.2 方法的隐藏
10.3.3 方法的覆写
第11章 语义分析之引用消解
11.1 Resolve类介绍
11.2 类型引用的消解
11.3 变量引用的消解
11.4 方法引用的消解
第12章 语义分析之语法树标注
12.1 Attr类介绍
12.2 表达式相关树节点的标注
12.2.1 JCUnary树节点标注
12.2.2 JCBinary树节点的标注
12.2.3 JCAssignOp树节点的标注
12.3 JCIdent树节点的标注
12.4 JCFieldAccess树节点的标注
第13章 泛型的实现
13.1 泛型类型
13.2 泛型方法
13.2.1 类型推断
13.2.2 钻石语法
13.3 泛型擦除
第14章 数据流检查
14.1 Flow类介绍
14.1.1 语句的活跃性分析
14.1.2 变量赋值检查
14.1.3 异常检查
14.2 if语句的分析
14.2.1 if语句
14.2.2 一元表达式与if语句
14.2.3 二元表达式与if语句
14.2.4 三元表达式与if语句
14.3 循环语句的分析
14.3.1 for语句
14.3.2 中断循环语句
14.4 try语句与throw语句的分析
14.4.1 抛出异常
14.4.2 异常检查
14.4.3 变量赋值状态及语句的活跃性
第15章 语法糖去除
15.1 简单语法糖
15.1.1 变长参数
15.1.2 条件编译
15.1.3 自动装箱与拆箱
15.2 语句语法糖
15.2.1 foreach语句
15.2.2 switch语句
15.2.3 try-with-resources语句
15.3 枚举类语法糖
15.4 内部类语法糖
15.4.1 调用私有构造方法
15.4.2 引用成员
15.4.3 super关键字引用父类成员
15.4.4 访问自由变量
第16章 字节码指令生成
16