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