当antlr中没有右侧时|意味着什么

当antlr中没有右侧时|意味着什么,antlr,antlr3,Antlr,Antlr3,我今天在antlr语法中看到了这一点,但不确定它的意思。我希望谷歌能让我搜索字符 结果列表:(STAR |属性列表|)->^(结果属性列表?STAR?) 注意第二个“|”字符没有右侧元素?这是什么意思 谢谢, 迪恩这只是意味着它与任何东西都不匹配。下面这条稍微详细一点的规则的作用完全相同: resultList : STAR -> ^(RESULT STAR) | attributeList -> ^(RESULT attributeList) | /* no

我今天在antlr语法中看到了这一点,但不确定它的意思。我希望谷歌能让我搜索字符

结果列表:(STAR |属性列表|)->^(结果属性列表?STAR?)

注意第二个“|”字符没有右侧元素?这是什么意思

谢谢,
迪恩

这只是意味着它与任何东西都不匹配。下面这条稍微详细一点的规则的作用完全相同:

resultList
 : STAR          -> ^(RESULT STAR)
 | attributeList -> ^(RESULT attributeList)
 | /* nothing */ -> RESULT
 ;
我认为上面的版本更清晰,而且以后也更容易评估,因为没有两个可选的子节点,
attributeList
STAR
,您需要检查它们是否存在