antlr 生成的解析器中输入不匹配

mismatched input in antlr generated parser

我有一个简短的 ANTLR 语法:

query : word (WS word)+;
word : simpleword | compoundword;
compoundword : simpleword (NONWORD+ simpleword)+ | NONWORD+ simpleword (NONWORD+ simpleword)* NONWORD*;
simpleword : SIMPLEWORD;

SIMPLEWORD: [0-9a-zA-Z]+;
NONWORD: [-_];
WS  : (' ' | '\r' | '\n');

但是生成的解析器无法解析带有消息 "mismatched input '-' expecting WS" 的字符串 "abc-def qwe qaz"。

有什么解决办法吗?为什么 "abc-def" 不匹配复合词产生式(第一个备选方案)?

实际上,问题出在问题中发布的代码之外 - 我还有一些其他作品,但我的印象是,如果我的最高作品无法访问它们,它们应该不会影响我的解析器。他们做到了。