任何語言都有開發出來編譯器的可能?


任何語言都有開發出來編譯器的可能?

今天在思考一個問題,畢竟學完編譯原理一段時間了,編譯器到底可以由哪種語言開發呢?

我們都知道編譯程序通常分為下面五個階段:
1)詞法分析
2)語法分析
3)語義分析與中間代碼產生
4)優化
5)目標代碼生成

當然最難的一點就是目標代碼的生成,這一階段實現了最終的翻譯,就是真正把原碼翻譯成可以被CPU直接計算的機器碼(NativeCode)。


在網上看了看,有的網友說C語言的第一代編譯器是由B語言寫的,因為C語言畢竟是在B語言的基礎上設計出的一種新語言。

但是B語言由A語言修改而成的語言,當然B語言的編譯器肯定是A語言生成的,那A呢?無窮遞歸,總有一個結束的地方。

那就是匯編語言,匯編語言寫出了第一個簡單的編譯器,然后這個編譯器再生成編譯器,不斷的生成新的編譯器,不斷的拋棄舊編譯器,這樣編譯器就越來越成熟,越來

越好用了。

也就是下面的這句話:

機器生匯編,匯編生A,A生B,B生C,C生萬物。

理論上來講,用什么語言都可以編寫出編譯器,只是效率的問題,因為經過很多步驟的翻譯,都最終翻譯成了機器碼,有的步驟多,效率低,有的步驟少,效率高,當然,我

們現在用的就是效率高的這種。


其實我在想為什么匯編語言生成一個簡單的編譯器后,可以用新生成的編譯器再次生成編譯器,例如,C語言開發C的編譯器呢?

這是一個遞歸的思想,舉個例子一看就明白了

用一個大的模具可以生成一個A模具,A模具可以做出來B模具,依次往下推,最終這個小模具可以做出來小盒子用來裝東西。

第一個大模具肯定是手工做出來的第一個模具,但是有了這個大模具后,后面就可以用他自動的生成更多的模具,后面的各種模具加起來又可以造出來更精致的模具,

所以,自動第一個大模具造出來模具的時候,大模具就可以被拋棄了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM