java编译器源码解析-词法分析
借用《深入理解java虚拟机》中的一张图片,实际的解析分为多个步骤。
0.初始化插入式注解处理器(非必须)
1.词法分析、
2.语法分析
3.输入到符号表
4.执行注解处理
5.属性分析
6.数据流分析
7.解析语法糖
8.生成字节码
源码中有一个枚举类描述了解析的过程,可以作为参考:
public enum CompileState { INIT(0), PARSE(1), ENTER(2), PROCESS(3), ATTR(4), FLOW(5), TRANSTYPES(6), UNLAMBDA(7), LOWER(8), GENERATE(9); }
因为第0步非必须,我们从第一步词法分析开始
二、词法解析
javac的词法解析器是com.sun.tools.javac.parser.Scanner,实现代码在com.sun.tools.javac.parser.JavaTokenizer,其中核心方法是readToken(),其中
scanIdent()用了解析一个标识符;
scanNumber()用于解析一个数字,包括二进制、8进制、十进制和十六进制;
scanOperator()用了解析加减乘除等操作符;
scanLitChar()解析一个字符串字面量;
词法分析的结果是一个token流
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-04-14 CDH集群日志清理
2021-04-14 TLPI读书笔记第41章-共享库基础2
2021-04-14 TLPI读书笔记第41章-共享库基础1