假设以下语法:
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_BLOCK和SEPERATOR。但它找到了ID
类型的单个令牌。
我想我可以通过删除词法分析器规则“ID”中的前几个括号来解决问题:
ID: LETTER SEPERATOR (LETTER SEPERATOR)+;
现在一切正常,但为什么呢?上面的括号对我的语法做了什么?