我有以下ANTLR规则:
procedure
: ('int' | 'char') IDENT '(' args ')' body -> ^(PROCEDURE IDENT (args)* body)
;
我想捕获AST中的('int' | 'char')
部分。正如您所看到的,在右侧没有显示,但我不确定如何在AST中显示所选的'int'
或'char'
。我希望'int'
或“char'
部分位于PROCEDURE
根目录下的树中,但之前 IDENT
。
答案 0 :(得分:3)
您可以标记该对,然后在重写中引用标签:
procedure
: primType=('int' | 'char') IDENT '(' args ')' body
-> ^(PROCEDURE $primType IDENT args body)
;