国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從零開始寫個(gè)編譯器吧 - 從何處下手

lovXin / 1091人閱讀

摘要:作為本系列的第一章,將考慮從何開始下手。運(yùn)行環(huán)境解釋執(zhí)行編譯器產(chǎn)生的目標(biāo)代碼。從零開始寫個(gè)編譯器吧從何處下手的博客

作為本系列的第一章,將考慮從何開始下手。既然寫的是編譯器,那在此得明確編譯器長(zhǎng)什么樣子,進(jìn)一步,編譯器由哪幾部分構(gòu)成,其工作原理大概是怎樣的。了解了這些,才好下手。

簡(jiǎn)單來說,編譯器本身是一個(gè)程序,這個(gè)程序能將一種代碼(源代碼)翻譯成另一種代碼(目標(biāo)代碼)。簡(jiǎn)而言之就是如下圖。

而本系列中設(shè)計(jì)出來以供編譯的語言——tao 語言,也就扮演著“源代碼”的角色。

而編譯器,會(huì)將 tao 語言編譯成目標(biāo)代碼以供執(zhí)行。那么,是何種目標(biāo)代碼呢?實(shí)際上我并沒有打算寫一個(gè)直接生成可執(zhí)行程序的編譯器,換句話說,該編譯器生成的目標(biāo)代碼不可以直接(在操作系統(tǒng)上)運(yùn)行。因此,我需要為 tao 語言創(chuàng)造一個(gè)運(yùn)行環(huán)境。

相對(duì)于之第一張圖,第二張圖多了tao runtime environment 這個(gè)東東。這即是 tao 語言的運(yùn)行環(huán)境。目標(biāo)代碼將在此運(yùn)行環(huán)境上解釋執(zhí)行。

但是,tao 語言作為一門語言,還必須要配一個(gè)標(biāo)準(zhǔn)庫。為此,在圖中加上標(biāo)準(zhǔn)庫,便有了如下圖。

至此,我們的任務(wù)也就清晰的呈現(xiàn)在眼前了。如果我們想讓世界上出現(xiàn)一門叫做 tao 語言的新語言,并且能讓程序員用這種語言寫的程序能順利運(yùn)行,我們至少要做出下面三個(gè)東西:

編譯器:能將 tao 語言寫的源代碼編譯成可供運(yùn)行環(huán)境解釋執(zhí)行的目標(biāo)代碼。
運(yùn)行環(huán)境:解釋執(zhí)行編譯器產(chǎn)生的目標(biāo)代碼。
標(biāo)準(zhǔn)庫:供 tao 語言的用戶調(diào)用的類庫。

從零開始寫個(gè)編譯器吧 - 從何處下手 - moskize 的博客

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64217.html

相關(guān)文章

  • 開始寫個(gè)譯器系列

    摘要:是的,這個(gè)系列將呈現(xiàn)一個(gè)完整的編譯器從無到有的過程。但在寫這個(gè)編譯器的過程中,我可不會(huì)偷工減料,該有的一定會(huì)寫上的。該語言的虛擬機(jī)將運(yùn)行于之上,同時(shí)編譯器將使用實(shí)現(xiàn)。我早有寫編譯器的想法之前沒寫過,故希望一邊寫編譯器一邊完成這個(gè)系列。 是的,這個(gè)系列將呈現(xiàn)一個(gè)完整的編譯器從無到有的過程。當(dāng)然,為了保證該系列內(nèi)容的簡(jiǎn)潔(也為了降低難度),僅僅保證編譯器的最低要求,即僅能用。但在寫這個(gè)編譯...

    genedna 評(píng)論0 收藏0
  • 開始寫個(gè)譯器 - 譯器的結(jié)構(gòu)

    摘要:自然,我們還是先從語言的編譯器下手吧。在動(dòng)手寫編譯器之前,得容我將編譯器的結(jié)構(gòu)進(jìn)行進(jìn)一步的劃分。這些將被語法分析器接收并進(jìn)行進(jìn)一步處理。由于本系列將著重于寫出編譯器,必要的理論和概念還是會(huì)交代的。從零開始寫個(gè)編譯器吧編譯器的結(jié)構(gòu)的博客 自然,我們還是先從 tao 語言的編譯器下手吧。在動(dòng)手寫編譯器之前,得容我將編譯器的結(jié)構(gòu)進(jìn)行進(jìn)一步的劃分。編譯器可視為一個(gè)黑盒,從其一端輸入源代碼,另一...

    wudengzan 評(píng)論0 收藏0
  • 開始寫個(gè)譯器系列——將在 GitBook 上以在線電子書的形式繼續(xù)連載

    摘要:各位抱歉了,這個(gè)系列在多個(gè)平臺(tái)的專欄上連載。所以,我把從零開始寫個(gè)編譯器吧弄到了上。以后更新也是先從上開始。從零開始寫歌編譯器吧更及時(shí)的信息可以從我的公眾號(hào)上獲得雖然不怎么寫公眾號(hào),但是還是掛一下吧 各位抱歉了,這個(gè)系列在多個(gè)平臺(tái)的專欄上連載。每發(fā)一個(gè)新章節(jié),都要同步到各個(gè)專欄上,于是可能漏掉 Segmentfault 的博客。汗,其實(shí) Segmentfault 這邊已經(jīng)落后很久了。 ...

    justCoding 評(píng)論0 收藏0
  • 開始寫個(gè)譯器 - 詞法分析器是一個(gè)狀態(tài)機(jī)

    摘要:詞法分析器本身就是一個(gè)狀態(tài)機(jī),生成這個(gè)狀態(tài)機(jī)有很多種方法,而我打算采取手寫的方式。狀態(tài)機(jī)不斷從源代碼即一個(gè)字符串中讀入一個(gè)一個(gè)字符,讀到不同的字符將使?fàn)顟B(tài)機(jī)的狀態(tài)從一個(gè)狀態(tài)變化到另外一個(gè)狀態(tài)。 詞法分析器 Tokenizer 本身就是一個(gè)狀態(tài)機(jī),生成這個(gè)狀態(tài)機(jī)有很多種方法,而我打算采取手寫的方式。因?yàn)?tao 語言的詞法還是相對(duì)比較簡(jiǎn)單的,手寫不成問題。 先新建一個(gè)LexicalAna...

    calx 評(píng)論0 收藏0
  • 開始寫個(gè)譯器 - 開始寫詞法分析器(3)

    摘要:在之前的章節(jié)第章從零開始寫個(gè)編譯器吧開始寫詞法分析器中我有說,我將函數(shù)設(shè)計(jì)成主動(dòng)調(diào)用的形式,而則是被動(dòng)調(diào)用的形式。接下來本系列將進(jìn)入編寫語法分析器的階段,不過在此之前,我將抽出一點(diǎn)時(shí)間介紹一下語言本身。 上周周末旅游去了,就沒更新了,雖然回到海拔0m的地區(qū),不過目前似乎還在缺氧,所以本次就少更點(diǎn)吧。 這章將結(jié)束詞法分析的部分。 在之前的章節(jié)(第7章從零開始寫個(gè)編譯器吧 - 開始寫詞...

    Barrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<