Antlr坚持认为令牌丢失了,尽管它似乎没有丢失

时间:2018-10-03 19:52:48

标签: antlr

尝试一下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'

我很想知道为什么会收到此消息,我一直在阅读有关最大词法匹配规则的文档,但是我似乎无法在这里发现我的问题。任何输入都将受到欢迎。

1 个答案:

答案 0 :(得分:2)

您已经用DASH标记了skip规则,因此DASH令牌不会显示在令牌流中。如果您希望能够在语法中使用DASH,则不要跳过它。