早先討論過如何漢化編程語言中的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')
並在生成語法樹時對參數位置作了相應對調。
如果不是一個低級錯誤,應該是幾分鐘就可以完成了,只要知道在哪裏改。
對逆向工程問題有興趣的請在此跟帖。
『木蘭』相關文章都會發表在《木蘭編程語言》知乎專欄