從高階語言到機器碼的完整轉換
編譯器是將人類可讀的高階程式語言翻譯成機器碼的系統軟體。翻譯過程涉及語法分析、語意理解、優化轉換和碼生成等多個層次的處理。
將原始程式碼轉換為 Token 序列,包括關鍵字、識別符、常值、運算子、分隔符等。
將 Token 序列轉換為抽象語法樹(AST),驗證程式碼是否符合文法規則。方法有自頂向下(遞迴下降、LL(1))和自底向上(LR、LALR)。
型態檢查、作用域檢查、控制流檢查,確保程式意義正確。
平臺無關的程式表示,如三地址碼(TAC)、靜態單一賦值(SSA)、控制流圖(CFG)。LLVM IR 是最廣泛使用的 IR 之一。
本地最佳化(常數摺疊、死碼消除)、全域最佳化(資料流分析、迴圈最佳化)、目標碼生成(指令選擇、暫存器分配)。