我的语法片段是:
potentialAttribute: DATA EQUAL LEFTPARENTH (data+ | REAL+) RIGHTPARENTH SEMICOLON;
然后,在访问者中,我应该询问potentialAttribute
阅读的文字是data+
还是REAL+
。由于它们都有+
符号,因此两者都必须是数组。不过,只有REAL()
是List<TerminalNode>
,而data()
仍为TerminalNode
。
但如果我更改选择顺序,例如:
potentialAttribute: DATA EQUAL LEFTPARENTH (REAL+ | data+) RIGHTPARENTH SEMICOLON;
REAL
不起作用的那个。
导致这种情况的原因是什么?
(如果需要,我可以发布整个可编辑的代码)