溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java的編譯過程分為幾步

發(fā)布時(shí)間:2020-06-19 11:45:34 來源:億速云 閱讀:320 作者:鴿子 欄目:編程語言

java編譯過程主要分以下幾步:

1、詞法分析: 把源代碼中的字符(各個(gè)關(guān)鍵字、變量等)轉(zhuǎn)為標(biāo)記(Token)集合,單個(gè)字符的程序編寫的最小單元,而token是編譯過程的最小單元。

2、語法分析: 將標(biāo)記(Token)集合構(gòu)造為抽象語法樹。語法樹的每一個(gè)節(jié)點(diǎn)都代表代碼中的一個(gè)語法結(jié)構(gòu)(如包、類型、接口、修飾符等等)。

3、填充符號(hào)表:符號(hào)表是有一組符號(hào)地址和符號(hào)信息構(gòu)成的表格。填充符號(hào)表的過程的出口是一個(gè)待處理列表,包含了每一個(gè)抽象語法樹(和package-info.java)的頂級(jí)節(jié)點(diǎn)。

4、插入式注解處理器處理注解: 注解處理器可以增刪改抽象語法樹的任意元素。因此每當(dāng)注解處理器對(duì)語法樹進(jìn)行修改時(shí),都將重新執(zhí)行1,2,3步,直到注解處理器不再對(duì)語法樹進(jìn)行修改為止。每一次的循環(huán)過程都稱為一次Round。

5、語義分析:對(duì)語法樹結(jié)構(gòu)上正確的源程序進(jìn)行上下文有關(guān)的審查。

  • 標(biāo)注檢查:包括是否變量聲明、變量和賦值類型是否匹配等、常量折疊。

  • 數(shù)據(jù)和控制流分析:對(duì)程序上下文邏輯更進(jìn)一步驗(yàn)證。包括變量使用前是否賦值、方法是否有返回值、異常是否被正確處理等。

6、解語法糖: 把高級(jí)語法(如:泛型、可變參數(shù)、拆箱裝箱等)轉(zhuǎn)為基礎(chǔ)語法結(jié)構(gòu),虛擬機(jī)運(yùn)行時(shí)不支持這些高級(jí)語法。

7、生成字節(jié)碼:把語法樹、符號(hào)表里的信息轉(zhuǎn)為字節(jié)碼寫到磁盤,同時(shí)進(jìn)行少量的代碼添加和轉(zhuǎn)換工作。

以上就是javac編譯包含哪幾個(gè)過程的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI