前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javac 编译过程

javac 编译过程

作者头像
WindWant
发布2020-09-11 11:02:31
1.2K0
发布2020-09-11 11:02:31
举报
文章被收录于专栏:后端码事

javac 编译过程

一、解析与填充符号表:

1. 语法、词法分析:

a) 语法分析:将源代码字符流转换为标记(Token:编译过程最小元素)集合。

b) 词法分析:根据标记序列构造抽象语法树(AST:用来描述程序代码语法结构的树形表示方式,每一个节点代表程序中的一个语法结构。

2. 填充符号表:

一组符号地址和符号信息组成的表格。

二、注解处理器:

   插入式注解处理器,编译期间处理注解,读取,修改,删除语法树中的任意元素,编译器会根据修改与否,重新回到解析及符号表填充阶段进行处理。

  initProcessAnnotations,processAnnotation,doProcessing。

三、语义分析,字节码生成(逻辑验证):

1. 标注检查:

包括变量使用前是否已声明,变量与赋值之间的数据类型是否匹配 +++ 常量折叠:int a = 1 + 2 ==> int a = 3

2. 数据集控制流分析:

包括,局部变量是否赋值,方法路径返回值验证,受检异常的正确处理。

3. 解语法糖:

泛型,装箱拆箱,for循环,条件编译等

4. 字节码生成

转换字节写磁盘。<init>()<cinit>()相关处理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、解析与填充符号表:
    • 1. 语法、词法分析:
      • 2. 填充符号表:
      • 二、注解处理器:
      • 三、语义分析,字节码生成(逻辑验证):
        • 1. 标注检查:
          • 2. 数据集控制流分析:
            • 3. 解语法糖:
              • 4. 字节码生成:
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档