添加skip
到规则并没有达到我的预期。这是一对用逗号和空格分隔的标记的语法。我制作了一个带有逗号标记的版本skip
,以及一个没有逗号的版本:
grammar Commas;
COMMA: ', ';
COMMASKIP: ', ' -> skip;
DATA: ~[, \n]+;
withoutSkip: data COMMA data '\n';
withSkip: data COMMASKIP data '\n';
data: DATA;
skip
在没有按预期工作的情况下测试规则:
$ echo 'a, b' | grun Commas withoutSkip -tree
(withoutSkip (data a) , (data b) \n)
Withskip
给了我一个错误:
$ echo 'a, b' | grun Commas withSkip -tree
line 1:1 mismatched input ', ' expecting COMMASKIP
(withSkip (data a) , b \n)
如果我注释掉COMMA
andwithoutSkip
规则,我会得到:
$ echo 'a, b' | grun Commas withSkip -tree
line 1:3 missing ', ' at 'b'
(withSkip (data a) <missing ', '> (data b) \n)
我正在尝试获取仅包含不带逗号的数据标记的输出,如下所示:
(withSkip (data a) (data b) \n)
我究竟做错了什么?