javac 編譯過程


javac 編譯過程
  javac編譯過程
 

一、解析與填充符號表:

1.  語法、詞法分析:

a) 語法分析:將源代碼字符流轉換為標記(Token:編譯過程最小元素)集合。

b) 詞法分析:根據標記序列構造抽象語法樹(AST:用來描述程序代碼語法結構的樹形表示方式,每一個節點代表程序中的一個語法結構。

2.  填充符號表:

一組符號地址和符號信息組成的表格。

二、注解處理器:

        插入式注解處理器,編譯期間處理注解,讀取,修改,刪除語法樹中的任意元素,編譯器會根據修改與否,重新回到解析及符號表填充階段進行處理。
  initProcessAnnotations,processAnnotation,doProcessing。

三、語義分析,字節碼生成(邏輯驗證):

1.  標注檢查:

包括變量使用前是否已聲明,變量與賦值之間的數據類型是否匹配 +++ 常量折疊:int a = 1  + 2 ==> int a = 3

2.  數據集控制流分析:

包括,局部變量是否賦值,方法路徑返回值驗證,受檢異常的正確處理。

3.  解語法糖:

泛型,裝箱拆箱,for循環,條件編譯等

4.  字節碼生成

轉換字節寫磁盤。<init>()<cinit>()相關處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM