基於「木蘭」編譯器,八行代碼實現 "對於...中的"語法

早先討論過如何漢化編程語言中的for...in關鍵字, 雖然有了方案,但終歸受限於原英文語法的語序。之前用很少代碼實現了一個新關鍵字,這裏試試實現對於...中的語法,僅作演示之用。 與原語法比較效果如下(由於逆向工程的問題,只能用這個用例測試。歡迎參與解決該問題!詳見文末):

> print(n) 對於 0..2 中的 n
012
> print(n) for n in 0..2
012

修改簡介如下。

parser/lexer.py

先在 RULES 中加了對於中的,接着在分詞器母機中加了對應詞。

parser/core.py

對分析器母機的for_stmt的語法規則作了擴展,加了兩條規則:

    @pg_.production('for_stmt : 對於 loop_range 中的 iterator block')

    @pg_.production('for_stmt : stmt 對於 loop_range 中的 iterator')

並在生成語法樹時對參數位置作了相應對調。

如果不是一個低級錯誤,應該是幾分鐘就可以完成了,只要知道在哪裏改。


對逆向工程問題有興趣的請在此跟帖。

『木蘭』相關文章都會發表在《木蘭編程語言》知乎專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章