有誰知道我可以用來從AST生成Python代碼的工具嗎?從定製設計的抽象語法樹生成Python代碼
我已經成功地編寫了一個標記器和一個解析器,但是我正在尋找更多的Pythonic方法來從中生成Python代碼。 我之前使用過LLVMPY
,我想知道是否有類似的東西可以用來生成Python代碼而不是LLVM IR
。
您的建議將不勝感激:-)
編輯
這是不 Python的AST。這是來自我自己的語言,所以我知道沒有一種工具可以神奇地理解它。我只是在尋找能夠在產生Source Code
的途中遇到我的東西。
例如:
而是連接字符串產生a = 1 + 2
的,碰到這樣的a = builder.add(1,2)
。基本上任何可以節省我手動生成字符串和處理縮進的痛苦的東西。有這樣的嗎?
我已經消耗了AST的一類,但我發現自己不得不做這樣的事情比比皆是:
...
elif node.type == "Assign":
_buffer = self.descend(node.args[0])
_buffer += self.descend(node.args[1])
_buffer += self.descend(node.args[2])
return _buffer
elif node.type == "BinOp":
_buffer = self.descend(node.args[1])
_buffer += node.args[0]
_buffer += self.descend(node.args[2])
return _buffer
...
當我要實現像Functions
和Classes
大對象這會變得更加tideous。我只是想知道是否沒有更好的方法來做到這一點。
如果有幫助,標準python libraray中有模塊ast。你檢查過了嗎? –
我試圖從我爲實驗寫的玩具編程語言生成Python代碼。我看了看那個模塊,但我看不出有什麼幫助。 – Sthe
當你說「Python代碼」時,你是指文本源代碼還是字節碼?當你說「AST」時,你的意思是Python的AST(如'ast'模塊中實現的)或你自己的語言的AST? – Blckknght