自創一門程式語言的14步

edithfang發表於2014-12-04


Step 1 對專業術語十分熟悉

寫編譯器的人通常會使用一些你不是那麼熟悉的術語,所以你一定要在開發前先了解編譯器,確保你知道編譯的所有事情。

Step 2 確定這門語言的應用領域

你要知道你的這門語言是用來解決某個特定領域的問題,還是通用目的的語言?

Step 3 思考這門語言的語義和概念

(1)允許直接的指標訪問嗎?

(2)這門語言提供哪些資料型別?

(3)這是一門靜態語言還是動態的語言?

(4)使用什麼記憶體模型?是有自動的垃圾回收機制還是需要手工管理記憶體?

(5)如何處理併發性?你準備使用單程式/鎖模型,還是複雜一些的,像 Linda 或 actor 模型?

(6)語言中提供一些內嵌的簡單函式還是所有的內容都來自於類/函式庫?

(7)這門語言的正規化是什麼?是函式式的,物件導向的,面向方面的,模板式的,還是一種原型,或就是徹頭徹尾全新的?

(8)這門語言和現存的庫或函式的介面是如何的?如果你是在建立某一領域特定的語言,這點就尤其重要。

(9)最後,這裡面的一些問題如果想有很好的答案,需要先做好第二步。

Step 4 思考人們想用這門語言做的事情

比如說,一些人想利用它指揮機器人,一些人想用它開發移動端的桌面程式或是用它開發 Web 應用。

Step 5 利用上面的例子測試語法

注意應該讓你的語言屬於上下文無關範疇或是它的子類別,這在以後對你和你的語法分析程式都是件好事。

Step 6 寫出正式的語法規則

Step 7 確定這是一門解釋型語言還是編譯型語言

它意味著如果這是一門解釋型語言,你的使用者通常會在編輯器裡寫程式,然後直接在直譯器中執行。但是對於編譯型語言,你的使用者會寫程式碼,編譯,然後將可執行程式存到別的地方,單獨執行。

Step 8 寫好語法分析器或藉助工具幫助你

想好如果使用者的程式出現語法錯誤,你的編譯器或直譯器將給出什麼樣的警告?

Step 9 使用語法分析器資訊寫目的碼

Step 10 寫好執行程式或程式碼生成器

Step 11 寫出足夠多的測試程式來檢測這門語言

你希望創造出一門正規的語言,它的編譯器可以明確的接受定義範圍內的所有的內容,而拒絕這之外的一切內容。

Step 12 考慮使用者如何除錯自己的程式

Step 13 如果你的語言使用標準類庫,你要寫好它

特別是,如果你寫一個編譯器,你需要這麼一段程式碼,讓作業系統執行它從而開始執行使用者程式。

Step 14 釋出這門語言的同時加上它的說明書和一些附屬例子

不要忘記註明你是如何整合這些庫和語言的,如何使用執行時間的特性和標準類庫。

英文原文:How to Create a Programming Language

翻譯:PHP100_Zeroing
來自:PHP100
相關閱讀
評論(1)

相關文章