前文《日語程式設計語言"撫子" - 第三版特色初探》僅對語言的文法進行了初步了解. 之前的語言原型實作嘗試(如《程式設計語言試驗之Antlr4+JavaScript實作"圈4"》)之後, 感覺有必要學習"撫子"的實作, 因為它也內建支援線上程式設計, 應該很有借鑒價值.
開發環境配置
主要參考
kujirahand/nadesiko3.
運作"npm start"後通路"localhost:3000"就有如下開發環境界面:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLkFTMwQ2N3AjZkhjNmNDOjNWMmBzNmJ2YiBDZwUmY0UGZ3cTZ1QGOz8CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
它也支援生成基于Electron的可以本地運作的獨立程式(在Mac下測試). 運作"npm run electron"後就看到與網絡界面相同的程式界面. 感覺這個方式很合理. 之後希望嘗試類似途徑同時實作線上和本地開發環境.
它也提供一個
Atom插件 , 安裝後(拷貝目錄到~/.atom/packages下)在Atom中打開test.nako3測試檔案就有文法高亮:源碼學習
在/src下, 源碼檔案不多, 分類如下, 連同基于源碼和注釋個人整理的簡單介紹:
- 編譯器主程式:
- nako3.js
- cnako.js: 支援指令行下運作
- enoko.js: 支援electron
- wnako3.js: 支援web browser-浏覽器
- 分析器實作
- nako_prepare.js: 全半角字元處理; 特殊字元串處理, 比如{% raw %}{{{{{% endraw %}等
- nako_lexer.js: 對已經是全角的代碼進行詞法分析, 包括保留關鍵字, 分詞器等等
- nako_parser_base.js: 顯示文法錯誤, NakoParserBase類
- nako_parser_const.js: 定義運算符的優先級, 以及日語助詞(?), 如'いて', 'えて'等等
- nako_parser3.js: 是NakoParserBase的擴充, 實施文法分析, 生成文法樹
- nako_gen.js: 從文法樹生成JS類
- 插件(功能庫)
- plugin_browser.js: 浏覽器相關功能封裝成API, 如'言'是"window.alert"(對話彈窗)
- plugin_node.js: Node.js常用功能封裝, 如'開'是"readFileSync"(打開檔案)
- plugin_system.js: JavaScript本身常用API封裝, 如"割餘"是"a%b"(求餘)
- plugin_turtle.js: 類似LOGO語言的基于"撫子"語言的腳本語言. 示範在 ゼロからはじめてみる日本語プログラミング「なでしこ」(3) タートルグラフィックスでお絵かきしよう(その1)
- 其他
- index.js: 用npm子產品方式使用"撫子"
- repl.nako3: 用"撫子"語言本身寫的一個簡單的對話執行環境
時間有限, 以後再對不同子產品深入學習.
2017-12-22