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