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