PL0E 是一個完整的編譯器實現,它包括如下功能:
1. 詞法分析 (Lexical Analysis) :輸入源程序,對構成源程序的字符串進行掃描和分解,
識別出一個個的 token(亦稱單詞符號或簡稱符號),如基本字(begin、end、if、for、
while),標識符、常數、運算符和界符(標點符號、左右括號)。單詞符號是語言的基
本組成成分,是人們理解和編寫程序的基本要素。
2. 語法分析 (Syntax Analysis):根據語言的語法規則,由單詞符號形成語法單位(如“短
語”、“句子”、“程序段”、“程序”等),由小到大,一層一層地逐步進行。通過語法分析,
檢查源程序在語法上是否正確,把源程序分解成語法的正確成分,即程序語句。
3. 語義分析 (Semantic Analysis):編譯程序的語義分析階段要對源程序的語法結構進行
靜態分析,檢查源程序中的語義錯誤,并收集類型信息供后面的代碼生成階段使用。
4. 中間代碼產生 (Intermediate Code Generation):中間代碼是源程序的一種內部表示,
或稱“中間語言”。這個中間語言使得編譯器可以被分為前端 (Front End) 和后端 (Back
End)。編譯器前端負責產生中間代碼,而后端負責生成目標代碼。這樣對于一個新出現
的語言只需寫出它的前端就可以了。中間代碼也是編譯器的前端和后端的分界點。
5. 代碼優化 (Code Optimization):編譯程序中優化階段的任務是對前階段產生的中間代
碼進行變換或進行改造,目的是使生成的目標代碼更為高效,即運行時間更短,占用的
空間更小。
6. 目標代碼生成 (Target Code Generation):目標代碼生成是編譯的最后一個階段。在生
成目標代碼時要考慮以下幾個問題:計算機的系統結構、指令系統、寄存器的分配以及
內存的組織等。