當前位置:編程學習大全網 - 編程語言 - 編程只有寫代碼→編譯→程序 這壹種方式嗎?有沒有更復雜的東西?

編程只有寫代碼→編譯→程序 這壹種方式嗎?有沒有更復雜的東西?

是這樣。簡單編譯器靠壹個人完全可以實現。編譯器主要分為編譯器和連接器兩個部分。我這裏先簡單說壹下編譯器。

首先所有編譯器都預定義了壹個符號表項,在符號表現中保存著程序語言(如C++)的關鍵字(保留字)以及這些關鍵字對應的類型、作用域、優先級、結合性等等。這個符號表項如果自己編寫的話,可以考慮實現為C++中的壹個map容器。

其次編譯器需要壹個代碼分析器。如果妳之前寫過壹個C++的計算器程序的話,我認為妳對這個會很了解。代碼分析器就是說識別出代碼中的關鍵字並且識別出用戶定義類型等等。這個可以通過目前廣泛流行的“遞歸向下調用”實現。

首先編寫壹個函數,處理大的表達式。這個函數返回最終結果(在編譯器中,這壹步就是生成程序代碼),然後是字表達式函數,處理子表達式,返回結果。最後是壹個分析單項的函數。這個函數分析出項是什麽類型(名字、值、關鍵字等)並且將類型信息用壹個enum枚舉值返回。

最後我們通過這樣壹個鏈條向下調用:表達式->字表達式->項。由項返回項類型給字表達式,子表達式產生結果(可能是壹個新對象、壹個變量)並且返回給表達式,表達式生成代碼(這裏的代碼只是偽代碼,需要給連接器進壹步處理成機器代碼)。

參見《C++程序設計語言 特別版》第6章 Calculator類。以及習題中有壹道是讓妳動手編寫壹個簡單編譯器。

最後是連接器。連接器的實現很復雜。。很晦澀(這壹步我完全不會)。它牽扯到了操作系統底層語言和實現。連接器的大致原理是分析編譯器生成的偽代碼並且會把它翻譯成機器語言(即壹個二進制可執行文件)。光是這壹步就有大量的系統底層問題:內存、指針、栰、地址、映象、內核等等。需要妳精通操作系統以及內核了。事實上,我估計這壹步只有大師級別的程序員才能實現(這樣的程序員估計沒有幾個)。這絕對是計算機編程的最高境界了。

  • 上一篇:玩也能玩出名堂作文
  • 下一篇:我想養壹只小狗寫作文。
  • copyright 2024編程學習大全網