Java語法樹與直譯機制

(郭肇安, 民國95年6月)

在傳統Java程式的環境下,程式員若需執行Java程式,都必須將原始碼編譯為位元組碼,再交由Java虛擬機解譯執行。編譯後的位元組碼只是模擬原始碼的一種虛擬機器語言,與原始碼之間並沒有任何先天的關連性。

本論文提出對Java語言的直譯機制,透過此機制我們不需將原始碼編譯為位元組碼,而是將原始碼轉成語法樹結構。透過樹狀節點所配置的虛擬函數,以遞迴呼叫直接執行原始碼的語意。

由於本直譯機制是採用遞迴呼叫的方式來完成,在遇到return敘述、break敘述與continue敘述時,僅能跳離單一層級的遞迴呼叫,無法跳離多層級的遞迴呼叫。本論文採用try/catch技術來突破因遞迴呼叫導致return敘述、break敘述與continue敘述無法脫離深層遞迴的問題。

在進行再造工程時,若採用Java原始碼轉為語法樹結構,可利用語法樹的樹狀運動來完成再造工程。

關鍵詞:Java、語法樹、直譯器。


回首頁