編寫程式語言最經典的參考書,當然是最有名的恐龍書,幾十年來,書愈編愈厚,基本上是不要讓人在當學生時
可以練習完的厚度,而且滿布了編譯器的專有名詞。
而本文所要參考的書,是ANTLR 的作者,Terence Parr教授編寫的手冊,The Definitive ANTLR 4 Reference。
薄薄的322頁書,至少比恐龍書少了一千頁。給你很多設計語言的案例,來學習使用ANTLR工具,程式碼產生器,類別庫。
如果你志不在一個JVM語言,其實熟練ANTLR,你就可以做一些有趣的應用了。
例如語言的自動轉換器。有一個日本高手寫了一個Objective-C 轉Swift 的線上轉換器,
Objective-C 轉Swift 的線上轉換器。
有人學習新語言的同時,有人用轉換舊語言到新語言來學新語言。
強國也有人寫了一個Objective-C 轉JS的工具,
這工具是想迴避APP STORE的上架審查機制所寫的。
以上兩種都是借用ANTLR的應用案例。
如果,你覺得轉換語言不夠讓內心踏實,一定要有個指令,如JAVAC 來編譯程式,JAVA執行程式,才
叫語言,那可以試試JVM語言。
可能是東歐牛人的JAKUB DZIWORSKI,寫了一系列博文,用自創的Enkel語言,
結合ANTLR,ASM ,來產生bytecode ,可在JVM上執行。
未來28天的文章,就圍繞著這兩個參考來源,實作一些程式碼來驗証JVM語言。
新創一個語言,這引發著一個問題,什麼樣才算一個新語言?個人覺得C like 的語言其實很多,C++, JAVA,
PHP 都是C-like的語言,只是主攻的強項不同。
而PYTHON類的語言,從文法風格上,就覺得很特別,和C LIKE類的語言,從外貌上就差異很大。
而函數式語言很多的括號(),外貌上也很特別。
這三種形的語言,外貌上有差異,讓人覺得差異頗大。
而以強打的功能而言,那又是另一種分類為新語言的方式。