Javac編譯原理學習:一、Javac介紹

Java虛擬機規範和Java規範是不一樣的,他們都有自己的詞法和語法解析規則。所以javac要將Java語言規範解析成Java虛擬機的語法規範,Javac作爲‘翻譯‘’。

Javac是什麼?

機器能夠識別和運行的都是機器碼,但人去寫機器碼的話太困難,太不友好、所以人們通過編譯器將高級語言轉換成目標機器碼。

javac編輯器就是將Java語言編譯成jvm所能識別的語言,最後jvm將jvm語言轉換成當前機器能夠識別的語言。

這種轉換雖然比其他語言多了一層步驟,犧牲了一些執行步驟,但是卻擁有了平臺無關性。

在Java編譯原理中,將會了解到Javac的語法樹結構、Javac的工作流程(包括詞法分析、語法分析、符號表構建、annotation處理、標註和語法檢查、數據流分析、類型轉換、語法等)、java如何實現內部類、如何實行對異常的處理、javac與其他編譯器的對比。

Javac將java語言轉換到jvm語言需要經過以下幾個步驟:

1、詞法分析

2、語法分析

3、語義分析

4、代碼生成

要讀取源代碼,就需要一個單詞一個單詞地讀取,從中找出規範的token流,就像人類語言一樣,要能識別出哪些是標點符號,哪些是動詞,哪些是名次。

語法分析檢查單詞之前的組合是否符合Java規範,比如if後面是否接了布爾判斷表達式,就像人類語言中主謂賓的組合是不是能夠理解的。

語法分析形成一個符合Java語言規範的抽象語法樹,抽象語法樹是一個結構化的語法表達形式,它的作用是把語法的主要詞法用一個結構化的形式來組織起來。

語義分析將複雜的語法解析成簡單的語法,比如將foreach轉爲for,註解轉爲代碼。

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章