0

我的语法片段是:

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一个不起作用的。

什么会导致这种情况?

(如果需要,我可以发布整个可编译代码)

4

1 回答 1

1

这将是 ANTLR 4 中的一个错误。您可以向 GitHub 上的项目问题跟踪器报告问题:

https://github.com/antlr/antlr4/issues

于 2013-06-12T14:18:19.060 回答