2016-12-03 46 views
1

我有一个ANTLR4的语法文件。
我有一些'('')'令牌,我想让ANTLR4跳过它,这取决于静态boolean是否等于true根据布尔值跳过一些标记

示例:如果某一静态boolean是`真

example 
    : '(' IDENTIFIER ')' 

IDENTIFIER: [a-z]+; 

我想为()令牌被跳过。

`这样做的任何方式?

+0

“跳过它”是什么意思? –

+0

不再需要它,就好像它没有放在语法中一样。 – user3535030

+0

在解析器规则?在词法分析规则中?这将大大有助于你想要实现的一些例子 –

回答

1

试试这个:

grammar T; 

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

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

IDENTIFIER 
: [a-z]+ 
; 

注意,通过这样做,你的语法是依赖于特定的语言(Java的,在这种情况下)。