做爲本系列的第一章,將考慮從何開始下手。既然寫的是編譯器,那在此得明確編譯器長什麼樣子,進一步,編譯器由哪幾部分構成,其工做原理大概是怎樣的。瞭解了這些,纔好下手。html
簡單來講,編譯器自己是一個程序,這個程序能將一種代碼(源代碼)翻譯成另外一種代碼(目標代碼)。簡而言之就是以下圖。程序員
而本系列中設計出來以供編譯的語言——tao 語言,也就扮演着「源代碼」的角色。spa
而編譯器,會將 tao 語言編譯成目標代碼以供執行。那麼,是何種目標代碼呢?實際上我並無打算寫一個直接生成可執行程序的編譯器,換句話說,該編譯器生成的目標代碼不能夠直接(在操做系統上)運行。所以,我須要爲 tao 語言創造一個運行環境。操作系統
相對於之第一張圖,第二張圖多了tao runtime environment 這個東東。這便是 tao 語言的運行環境。目標代碼將在此運行環境上解釋執行。翻譯
可是,tao 語言做爲一門語言,還必需要配一個標準庫。爲此,在圖中加上標準庫,便有了以下圖。設計
至此,咱們的任務也就清晰的呈如今眼前了。若是咱們想讓世界上出現一門叫作 tao 語言的新語言,而且能讓程序員用這種語言寫的程序能順利運行,咱們至少要作出下面三個東西:htm
編譯器:能將 tao 語言寫的源代碼編譯成可供運行環境解釋執行的目標代碼。
運行環境:解釋執行編譯器產生的目標代碼。
標準庫:供 tao 語言的用戶調用的類庫。get