尝试检测语法中的空格和制表符时的奇怪行为

Strange behaviour when trying to detect spaces and tabs in grammar

我无法检测语法中的 space 和制表符。我的 space 和制表符 隐藏在我的语法中。

我有语法:

Model: defs+=Def*;

Def:
    'actor' WS ID NEWLINE
;

还有一个终端:

terminal WS : (' '|'\t')+;

但我似乎无法正确注意到白色space。我可以在'actor'和ID之间输入任何space和制表符的组合,只要有多个space即可。如果我在它们之间只输入一个 space,我就会遇到问题。例如,这有效:

Actor                          Bob

但是当我只尝试一个 space:

Actor Bob

我收到这样的错误:

- extraneous input 'Bob' expecting RULE_NEWLINE
- mismatched input ' ' expecting RULE_WS

错误消息表明您在语法中某处有一个白色-space用作关键字。你必须删除那个。