javac编译过程
- 格式:pdf
- 大小:88.58 KB
- 文档页数:1
javac编译过程
javac 编译过程
⼀、解析与填充符号表:
1. 语法、词法分析:a) 语法分析:将源代码字符流转换为标记(Token:编译过程最⼩元素)集合。b) 词法分析:根据标记序列构造抽象语法树(AST:⽤来描述程序代码语法结构的树形表⽰⽅式,每⼀个节点代表程序中的⼀个语法结构。2. 填充符号表:
⼀组符号地址和符号信息组成的表格。⼆、注解处理器:
插⼊式注解处理器,编译期间处理注解,读取,修改,删除语法树中的任意元素,编译器会根据修改与否,重新回到解析及符号表填充阶段进⾏处理。 initProcessAnnotations,processAnnotation,doProcessing。三、语义分析,字节码⽣成(逻辑验证):
1. 标注检查:
包括变量使⽤前是否已声明,变量与赋值之间的数据类型是否匹配 +++ 常量折叠:int a = 1 + 2 ==> int a = 32. 数据集控制流分析:
包括,局部变量是否赋值,⽅法路径返回值验证,受检异常的正确处理。3. 解语法糖:
泛型,装箱拆箱,for循环,条件编译等4. 字节码⽣成:
转换字节写磁盘。