我正在研究在Python之上實現的一個特定於領域的語言。語法和Python非常接近,直到現在我們只是進行了一些簡單的字符串轉換,然後將其輸入到ast
。例如,縮進被替換爲#endfor
/#endwhile
/#endif
語句,所以我們對縮進進行規範化,但它仍然是一個字符串。解析一個幾乎是Python的語言的最佳方式?
我想知道是否有更好的方法?據我所知,ast
是硬編碼來解析Python語法,我真的找不到除http://docs.python.org/library/ast.html#module-ast(以及源自身,我想)以外的任何文檔。
有沒有人有PyParsing,ANTLR或PLY的個人經驗?
有些模糊的計劃將解釋器重寫爲將我們的語言轉換爲有效的Python並將其提供給Python解釋器本身的東西,所以我想要一些與compile
兼容的東西,但這不是一個交易斷路器。
更新:它只是發生,我認爲
from __future__ import print_function, with_statement
改變Python解析下列源的方式。但是,PEP 236表明這是編譯器功能的句法窗口修飾。有人可以確認試圖覆蓋/擴展__future__
是不是我的問題的正確解決方案?
「編譯器特性的句法窗口修飾」。這兩個'__future__'模塊實際上不是'模塊'。它看起來像一個'import'語法,但它修改了正在使用的Python編譯器。這不是一個合適的「進口」。這是魔法。 – 2010-08-17 19:16:58