編譯器編寫教程 如何寫一個(gè)編譯器?
如何寫一個(gè)編譯器?It 這很簡單。在學(xué)習(xí)了《計(jì)算機(jī)組成原理》、《編譯原理》、《數(shù)據(jù)結(jié)構(gòu)和算法》、《設(shè)計(jì)模式》和《匯編》,并掌握了一門高級(jí)語言之后,你幾乎可以開始這樣做了。如果真的感興趣,先看看Lua
如何寫一個(gè)編譯器?
It 這很簡單。在學(xué)習(xí)了《計(jì)算機(jī)組成原理》、《編譯原理》、《數(shù)據(jù)結(jié)構(gòu)和算法》、《設(shè)計(jì)模式》和《匯編》,并掌握了一門高級(jí)語言之后,你幾乎可以開始這樣做了。
如果真的感興趣,先看看Lua解釋器(編譯器)源代碼,總共不到2萬行。如果你理解別人,你可以模仿他們。
現(xiàn)在開始寫吧
編譯器分幾個(gè)部分,都需要一些基本的計(jì)算機(jī)知識(shí),所以我贏了 我不想詳細(xì)談?wù)撍?/p>
1.語法分析器和語義分析器。理解程序員 在分析了你設(shè)計(jì)的語言的語法和語義之后。
網(wǎng)上有很多開源項(xiàng)目,比如語法和語義分析,供參考。
在分析了程序的含義并用目標(biāo)語言描述后,就需要代碼生成器了。
2、代碼生成器,源語言程序,用目標(biāo)語言編寫。目標(biāo)語言最終是匯編,通常先做成中間語言,再翻譯成機(jī)器語言,便于不同平臺(tái)之間的移植。
最后
自己寫編譯器,現(xiàn)在卻愿意賺錢或者學(xué)習(xí)。所以有一個(gè)偷懶的辦法,就是把目標(biāo)語言寫成比你熟悉的更高級(jí)的語言,比如C語言。編譯器分析后,用代碼生成器用C語言編寫源語言程序,然后通過C編譯器編譯鏈接后運(yùn)行C語言,比較程序的運(yùn)行結(jié)果,驗(yàn)證編譯器的正確性。
你可以先設(shè)計(jì)一個(gè)簡單的語言,當(dāng)整個(gè)過程完成后,你就可以增加語言的語法難度,讓它變得實(shí)用。更進(jìn)一步就是編寫更有效的目標(biāo)代碼,形成自己的支持庫,從而發(fā)展成為一門獨(dú)立有效的編程語言。
編譯器分為詞法分析,語法分析,語義分析,根據(jù)你得到的語義實(shí)現(xiàn)轉(zhuǎn)換成目標(biāo)語言。這些步驟可以分階段進(jìn)行,也可以混合進(jìn)行。
首先,你需要了解編譯原理。之前,你需要造輪子?,F(xiàn)在你有輪子了,就是llvm。你可以在此基礎(chǔ)上制作自己的編譯器。clang和swift就是在此基礎(chǔ)上開發(fā)的編譯器。
學(xué)會(huì)自學(xué),先思考,而不是等著頭條的一個(gè)問題。
為什么高級(jí)程序語言需要編譯程序?
因?yàn)橛酶呒?jí)編程語言編寫的程序計(jì)算機(jī)不能直接運(yùn)行,需要編譯器對(duì)其進(jìn)行編譯,即翻譯成目標(biāo)程序,最后編譯成可執(zhí)行文件,計(jì)算機(jī)才能運(yùn)行。所以用高級(jí)語言寫的源程序需要三步: "編譯、鏈接和構(gòu)建 "。
c語言有沒有線上編譯器?
是的。一個(gè)典型的例子就是C語言網(wǎng)絡(luò),它為包括C語言在內(nèi)的不同編程語言提供了一個(gè)在線編譯和運(yùn)行的環(huán)境。
而在線編譯器一般主要用于一些編程題目的訓(xùn)練,不能作為工程開發(fā)的環(huán)境。如果只是需要寫一些算法函數(shù),使用在線編譯器是非常適合的,但是如果要開發(fā)大型項(xiàng)目,還是需要選擇本地的開發(fā)工具和工具。頭發(fā)環(huán)境。