根据布尔值跳过一些标记

Skip some tokens depending on boolean value

我有一个 ANTLR4 的语法文件。
我有一些 '('')' 标记,我希望 ANTLR4 跳过它取决于静态 boolean 是否等于 true

示例:

example
   :    '(' IDENTIFIER ')'

IDENTIFIER: [a-z]+;

如果某个静态 boolean 为“真”,我希望跳过 () 标记。

`有什么办法吗?

试试这个:

grammar T;

@parser::members {
  boolean skipParens = true;
}

example
 : {skipParens}? IDENTIFIER
 |               '(' IDENTIFIER ')'
 ;

IDENTIFIER
 : [a-z]+
 ;

请注意,这样做会使您的语法与特定语言相关联(Java,在本例中)。