天然,咱們仍是先從 tao 語言的編譯器下手吧。在動手寫編譯器以前,得容我將編譯器的結構進行進一步的劃分。編譯器可視爲一個黑盒,從其一端輸入源代碼,另外一端產出目標代碼。此過程進一步拆分便有了以下形式。html
首先是 Tokenizer (詞法分析器),它讀入一個一個字符,並將其合併成一個一個Token(單詞)。這些 Token 將被 Parser(語法分析器)接收並進行進一步處理。Parser 處理結果稱之爲 Syntax Tree (語法樹),此時產物再也不是線性結構,而轉爲變成樹形結構了。spa
一旦獲得了 Syntax Tree 便可進行語義分析,以後即可生成代碼,至此,整個編譯的流程就此走完。能夠見以下圖。3d
因爲本系列將着重於「寫」出編譯器,必要的理論和概念仍是會交代的。不過會有所側重,若非與我要寫的代碼緊密相關,概念和理論也不會作過多着墨。htm