2013-06-12 17 views
0

我的语法的一个片段是:具有多个(+)量词选择左边的元素不会成为一个数组

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

这是什么原因造成的?

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

回答

相关问题