antlr4:如何从解析器规则中的令牌集中最多选择一个令牌
我正在为一种语言创建一个antlr4语法,该语言具有多种变量声明前缀的可能性,例如,变量声明可以是以下任意一种:antlr4:如何从解析器规则中的令牌集中最多选择一个令牌,antlr4,Antlr4,我正在为一种语言创建一个antlr4语法,该语言具有多种变量声明前缀的可能性,例如,变量声明可以是以下任意一种: IDENTIFIER PREFIX1 IDENTIFIER PREFIX2 IDENTIFIER PREFIX1 PREFIX2 IDENTIFIER PREFIX2 PREFIX1 IDENTIFIER 前缀是可选的,可以按任何顺序排列,但最多一个 如果我有一个规则: var_declaration: (PREFIX1 | PREFIX2)? IDENTIFIER; 然后它将不
IDENTIFIER
PREFIX1 IDENTIFIER
PREFIX2 IDENTIFIER
PREFIX1 PREFIX2 IDENTIFIER
PREFIX2 PREFIX1 IDENTIFIER
前缀是可选的,可以按任何顺序排列,但最多一个
如果我有一个规则:
var_declaration: (PREFIX1 | PREFIX2)? IDENTIFIER;
然后它将不处理任何前缀或处理任何一种类型的前缀。如何处理none、one或两者的顺序,但防止两个前缀相同?没有特殊的语法。您将拥有定义所有备选方案的权限:
var_declaration
: PREFIX1 PREFIX2 IDENTIFIER
| PREFIX2? PREFIX1? IDENTIFIER
;
如果有两个以上的前缀,列出它们将变得冗长。在这种情况下,最好将其中任何一个匹配零次或多次:
var_declaration
: prefix* IDENTIFIER
;
prefix
: PREFIX1
| PREFIX2
| PREFIX3
;
然后在解析之后(使用树侦听器)检查匹配的前缀是否唯一
相关问答: