我的语法片段是:
potentialAttribute: DATA EQUAL LEFTPARENTH (data+ | REAL+) RIGHTPARENTH SEMICOLON;
然后,在访问者中,我应该询问potentialAttribute
text read 是data+
还是REAL+
. 由于它们都有+
符号,因此它们都必须是数组。尽管如此,onlyREAL()
是 a List<TerminalNode>
,whiledata()
仍然是TerminalNode
。
但是,如果我更改选择顺序,例如:
potentialAttribute: DATA EQUAL LEFTPARENTH (REAL+ | data+) RIGHTPARENTH SEMICOLON;
这是REAL
一个不起作用的。
什么会导致这种情况?
(如果需要,我可以发布整个可编译代码)