實質
電腦程式編譯原理的實質就是把程式設計師員容易理解的高級語言程式代碼流翻譯成計算機可執行的機器指令代碼流。可以使用“ 一斷、二比、三譯”形象說明實質。
1、 斷。按照語言的語法規則掃描 斷詞,結合文法詞典把程式字元串流分解成為計算機語言能夠識別的基本單元(標識詞、運算符)。
2、 比。從程式流中找出擴展標識詞的定義,建立標識詞結構,放入文法詞典,服務於新的定義和函式程式代碼的編譯。程式語句、表達式裡面使用的標識可以從詞典中比較找到。
3、 譯。把函式程式文本字元串流中的算術表達式、賦值語句、控制語句翻譯成為計算機機器語言二進制代碼流。
4、組裝函式翻譯後的二進制代碼流,明確數據空間地址和大小,生成計算機裸機或作業系統可以執行目標代碼。
文法
“ 文法是以有窮的集合刻畫無窮的集合的一個工具”,有窮的集合應該是已經出現的,人們普遍接受的詞、詞組或句子,無窮的集合就是有窮的集合的詞、詞組或句子,創造新的集合過程和結果,有待進一步認識接受。
我們的 文法規定內涵 是已經明確定義的和正在定義(聲明)的內容。反映到計算機語言程式中 就是編程時已經定義的和正在定義(聲明)的字元或字元串。文法可以以表的形式,或詞典形式存放。
語法
使用“ 三二術”替代“語法樹”。
不管是常數、對象變數、函式,還是“()”,表達式可以看成具有輸出的中間量
量1 + 量2 - 量3 * 量4 & 量5 > 量6
按照表達式的從前到後的順序,先取表達式三個量和兩個計算符,把其中兩量和一符優先計算,結果存放在中間量之中,而後再順序取表達式一符一量,變成新三量兩符,重複兩量和一符優先計算,直到剩兩量和一符,再得到最後計算結果。
對比
與普通編譯原理比較(圖),從圖片可以看出兩種編譯技術異同。