java編譯器原始碼解析-詞法分析
阿新 • • 發佈:2022-04-14
借用《深入理解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流