总体三个过程

  • 分析与符号填充
  • 注解处理
  • 分析与字节码生成

图片说明

分析与符号填充

  1. 词法、语法解析:建立抽象语法树,后续操作这个语法树,不再与源码有关系。
  2. 填充符号表:符号信息与符号地址的k-v存储。

注解处理

  1. 修改语法树:读取、修改、添加抽象语法树种的任意元素。

语义分析与字节码

语义分析为:
1.标注检查:变量名,常量折叠。
2.数据及控制流分析:上下文逻辑把控。局部变量是否被赋值,返回值,受查异常。
3.解语法糖。把一些方便人们的语法还原为java支持的语法。比如泛型擦除、变长变量、自动装箱/拆箱。
4.字节码生成:把前面的信息(抽象语法树、符号表)转为字节码输入到硬盘中。