OR lexer表达式的AST重写规则

时间:2013-03-20 20:42:55

标签: antlr antlr3

我有以下ANTLR规则:

procedure
 : ('int' | 'char') IDENT '(' args ')' body -> ^(PROCEDURE IDENT (args)* body)
 ;

我想捕获AST中的('int' | 'char')部分。正如您所看到的,在右侧没有显示,但我不确定如何在AST中显示所选的'int''char'。我希望'int'或“char'部分位于PROCEDURE根目录下的树中,但之前 IDENT

1 个答案:

答案 0 :(得分:3)

您可以标记该对,然后在重写中引用标签:

procedure
    : primType=('int' | 'char') IDENT '(' args ')' body
      -> ^(PROCEDURE $primType IDENT args body)
    ;