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

Antlr坚持认为一个令牌丢失了,尽管它似乎没有丢失,antlr,Antlr,只是尝试一下Antlr,我遇到了一个我不太理解的错误 grammar Input; start : cityLink*; cityLink : CityName DASH CityName (NEWLINE | EOF); CityName : [A-Z] Word?; Word : [a-z]+; DASH : WS '-' WS -> skip; WS : ' '+ ->

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

我一直在阅读关于最大词法匹配规则的文档,但我似乎无法在这里发现我的问题。欢迎任何输入。

您已将
破折号
规则标记为
跳过
,因此
破折号
令牌不会显示在令牌流中。如果您希望能够在语法中使用破折号,则不应跳过它。

您已将
破折号
规则标记为
跳过
,因此
破折号
令牌不会显示在令牌流中。如果你想在语法中使用破折号,你不应该跳过它。

就是这样,我想我只是在抑制破折号,因为它是毫无价值的数据。非常感谢你。就是这样,我以为我只是在抑制我的城市链接中的破折号,因为它是一个毫无价值的数据。非常感谢你。