淺談Javac編譯原理

1、javac是什麼?java

一、javac是一種編譯器,可以將一種語言規範轉化成另一種語言規範編程

二、javac的任務就是將Java源代碼轉化成JVM可以識別的一種語言(Java字節碼),這種字節碼不是針對某種機器、某種平臺的數據結構

2、javac編譯器編譯程序的步驟編程語言

一、詞法分析.net

首先是讀取源代碼,找出這些字節中哪些是咱們定義的語法關鍵詞,如Java中的if、else、for等關鍵詞。blog

語法分析的結果:從源代碼中找出一些規範化的token流。token

注:token是一種認證機制get

二、語法分析編譯器

檢查關鍵詞組合在一塊兒是否是Java語言規範,如if後面是否是緊跟着一個布爾表達式。虛擬機

語法分析的結果:造成一個符合Java語言規範的抽象語法樹

三、語義分析

把一些難懂的、複雜的語法轉化爲更加簡單的語法。

語義分析的結果:完成複雜語法到簡單語法的簡化,如將foreach語句轉化成for循環結果,還有註解等。最後造成一個註解事後的抽象語法樹,這顆語法樹更接近目標語言的語法規則。

四、生成字節碼

經過字節碼生成器生成字節碼,根據通過註解的抽象語法樹生成字節碼,也就是將一個數據結構轉化成另外一個數據結構。

代碼生成器的結果:生成符合Java虛擬機規範的字節碼。

注:抽象語法樹

在計算機科學中,抽象語法樹是源代碼語法結構的一種抽象表示。它以樹狀的形式表現編程語言的語法結構,樹上的每一個節點都表示源代碼中的一種結構。

3、javac編譯器的基本結構

按照上述編譯步驟來看,能夠將javac編譯器分爲4個模塊:詞法分析器、語法分析器、語義分析器和代碼生成器。

 

素小暖講Java@目錄

相關文章
相關標籤/搜索