1
我目前有一個編譯器,它使用一個代碼塊的所有子代都在同一級別的AST(即,block.children == {stm1,stm2,stm3 ,等...})。我試圖在這棵樹上做活性分析,這意味着我需要從stm1處理返回的值,然後將其傳遞給stm2,然後將stm2返回的值傳遞給stm3,依此類推。當AST以這種方式構建時,我沒有看到以這種方式執行子規則的方式。一次處理一個n-ary ANTLR AST一個孩子
有沒有辦法允許我用給定的AST鏈接兒童語法項目的執行,還是我將不得不經歷重構解析器以生成嵌套結構和更新其餘部分的痛苦過程編譯器的工作與新的AST?
例ANTLR語法片段:
block
: ^(BLOCK statement*)
;
statement
: // stuff
;
我希望我不用去:
block
: ^(BLOCK statementList)
;
statementList
: ^(StmLst statement statement+)
| ^(StmLst statement)
;
statement
: // stuff
;
非常感謝。這正是我需要的。 – 2010-04-21 14:47:13
好聽@Chris。別客氣。 – 2010-04-21 16:02:39