JVM:前端编译优化

Javac 编译器

编译过程大致可以分为 1个准备过程,3 个处理过程,分别是:

准备过程:

初始化插入式注解处理器

 

处理过程:

1:解析与填充符号表过程

2:插入式注解处理器的注解处理过程(在这个过程里如果产生新的符号,就必须转会到第一个处理过程重新处理)

3:分析与字节码生成过程

 

一:解析与填充符号表过程

1.  词法、语法分析

 词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为标记

语法分析是根据 Token 序列构造抽象语法树的过程,抽象语法树(Abstract Syntax Tree,AST)是一种用来描述程序代码语法结构的树形表示方式,语法树的每一个节点都代表着程序代码中的一个语法结构(Construct),例如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。

 

2.  填充符号表

符号表(Symbol Table)是由一组符号地址和符号信息构成的数据结构。符号表中所登记的信息在编译的不同阶段都要用到。

在语义分析中,符号表所登记的内容将用于语义检查,和产生中间代码

在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。

 

二:注解处理器

在 JDK 1.5 之后,Java 语言提供了对注解࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值