編譯器的結構(The Structure of a Compiler)
源程序的分析階段分為:線性分析,層次分析,語義分析。
1、詞法分析(Lexical Analysis)
2、語法分析(Syntax Analysis)
把源程序的記號分組,產生被編譯器用于生成代碼的語法短語。
詞法結構不要求遞歸,語法結構需要遞歸。
3、語義分析(Semantic Analysis)
語義分析階段檢查源程序的語義錯誤,并收集代碼產生階段時用到的類型信息。語義分析通過語法分析的層次結構來區分表達式和語句中的操作符和操作數。
4、中間碼的產生(Intermediate Code Generation)
源程序的中間代碼:易于產生;易于翻譯成目標程序。
5、代碼生成(Code Generation)
編譯器為源程序定義盒使用的變量選擇存儲單元,并把中間指令翻譯完成相同任務的機器代碼指令序列。
6、符號表的管理(Symbol-Table Management)
符號表時一個數據結構。每個標識符在符號表中都有一條記錄,記錄每個域對對應于該標識符的一個屬性。這種數據結構允許我們快速地找到每個標識符的記錄,并在該記錄中快速地存儲盒檢索信息。