Javac编译器

作者: 暮想sun | 来源:发表于2020-01-15 20:15 被阅读0次

    把.java文件转变成.class文件,属于一种前端编译器。

    1.解析与填充符号表过程
    2.插入式注解处理器的注解处理过程
    3.分析与字节码生成过程


    1.解析与填充符号表

    解析步骤包括词法分析和语法分析

    词法分析

    词法分析是将源代码的字符流转变为标记集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为标记。
    例:int a = b + 2,有6个标记,int 、a、= 、b 、+ 、2

    语法分析

    语法分析是根据标记序列构成抽象语法树的过程。

    填充符号表

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

    2.注解处理器

    插入式注解处理器的标准API在编译期间对注解进行处理,可以看作是编译器插件,如果插件在处理注解期间对语法树进行了修改,编辑器将回到解析及填充符号表的过程重新处理。

    3.语义分析与字节码生成

    语义分析

    主要任务是对结构上正确的源程序进行上下文的审查。

    标注检查

    标注检查步骤检查的内容包括诸如变量使用前是否已被声明,变量和赋值之间的数据类型是否能够匹配等。

    数据及控制流分析

    是对程序上下文逻辑更进一步的验证。

    解语法糖

    虚拟机在运行时不支持语法糖形式语法,在编一阶段还原回简单的基础语法结构。这个过程称为解语法糖。

    字节码生成

    是javac编译过程的最后一个阶段,不仅仅是把前面各个步骤所生成的信息转换成字节码写到磁盘,编译器还进行了少量的代码添加和转换工作。

    实例构造器<init>以及类构造器<clinit>是在这个阶段添加到语法树。

    相关文章

      网友评论

        本文标题:Javac编译器

        本文链接:https://www.haomeiwen.com/subject/uvqxzctx.html