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