我正在開發一個翻譯器,用於將PC上的簡單腳本翻譯成某些字節碼以在微控制器上執行它(字節碼)。如何從ParseResults獲取抽象語法樹
我使用lex和re2c開發了C++中的翻譯器,但是我正在考慮切換到pyparsing。
爲了將我的腳本語句翻譯成字節碼中的少量操作,我需要獲取該語句的抽象語法樹。
I.E.這個腳本:
X = 1 - 2;
應轉換爲這個二進制數:
register1 <- 1
register2 <- 2
register3 <- register1 - register2
x <- register3
我有了這個Python代碼:
integer = Combine(number)
ident = Word(alphas,alphanums)
expr = Forward()
atom = (integer |
(lpar + expr.suppress() + rpar)
)
expr << (atom + (addop | multop) + atom)
statement = ident + assign + expr
L = statement..parseString(line)
是否有訪問AST的葉子的例子在L?或者類似的東西...提前
感謝
非常感謝! SimpleBool是我需要查看的很好的代碼示例。 infixNotation是定義表達式的絕佳解決方案。 另外我不是Python的主人,所以操作員的操作符對我來說很有洞察力 – Mtr