Antlr4 没有量词的括号在词法规则中有什么作用?
假设以下语法:Antlr4 没有量词的括号在词法规则中有什么作用?,antlr4,Antlr4,假设以下语法: grammar Demo; start: START_BLOCK SEPERATOR; START_BLOCK: '-.-.-'; ID: ( LETTER SEPERATOR ) (LETTER SEPERATOR)+; fragment LETTER: L_A|L_K; fragment L_A: '.-'; fragment L_K: '-.-'; SEPERATOR: '!'; 我将以下输入传递给语法:-。- 我希望ANTLR能够识别START_块和分隔符。但
grammar Demo;
start: START_BLOCK SEPERATOR;
START_BLOCK: '-.-.-';
ID: ( LETTER SEPERATOR ) (LETTER SEPERATOR)+;
fragment LETTER: L_A|L_K;
fragment L_A: '.-';
fragment L_K: '-.-';
SEPERATOR: '!';
我将以下输入传递给语法:-。-代码>
我希望ANTLR能够识别START_块和分隔符。但是它会找到一个类型为ID
的标记
我想我可以通过删除lexer规则“ID”中的前两个括号来解决这个问题:
现在一切正常,但为什么?上面的括号对我的语法有什么影响?这是ANTLR 4中的一个错误,它已在4.0.1版本中修复。请参阅:这是针对4.0.1版本修复的ANTLR 4中的一个错误。请参阅:对我来说似乎是个bug:ID:(字母分隔符)(字母分隔符)+代码>和ID:LETTER separator(LETTER separator)+代码>应该会产生同样的结果。对我来说似乎是个bug:ID:(字母分隔符)(字母分隔符)+代码>和ID:LETTER separator(LETTER separator)+代码>应产生相同的结果。
ID: LETTER SEPERATOR (LETTER SEPERATOR)+;