Javac编译器的编译过程
总体三个过程
- 分析与符号填充
- 注解处理
- 分析与字节码生成
分析与符号填充
- 词法、语法解析:建立抽象语法树,后续操作这个语法树,不再与源码有关系。
- 填充符号表:符号信息与符号地址的k-v存储。
注解处理
- 修改语法树:读取、修改、添加抽象语法树种的任意元素。
语义分析与字节码
语义分析为:
1.标注检查:变量名,常量折叠。
2.数据及控制流分析:上下文逻辑把控。局部变量是否被赋值,返回值,受查异常。
3.解语法糖。把一些方便人们的语法还原为java支持的语法。比如泛型擦除、变长变量、自动装箱/拆箱。
4.字节码生成:把前面的信息(抽象语法树、符号表)转为字节码输入到硬盘中。