尝试一下Antlr,我遇到了一个我不太明白的错误
grammar Input;
start : cityLink*;
cityLink : CityName DASH CityName (NEWLINE | EOF);
CityName : [A-Z] Word?;
Word : [a-z]+;
DASH : WS '-' WS -> skip;
WS : ' '+ -> skip;
NEWLINE : '\r'? '\n' -> skip;
我正在尝试解析
Chicago - Naperville
这似乎应该可以工作,输出正确,并显示错误消息:
line 1:10 missing DASH at 'Naperville'
我很想知道为什么会收到此消息,我一直在阅读有关最大词法匹配规则的文档,但是我似乎无法在这里发现我的问题。任何输入都将受到欢迎。
答案 0 :(得分:2)
您已经用DASH
标记了skip
规则,因此DASH
令牌不会显示在令牌流中。如果您希望能够在语法中使用DASH
,则不要跳过它。