什么做的意味着当antlr没有右侧时

时间:2012-07-06 21:26:53

标签: antlr antlr3

我今天在antlr语法中看到了这一点,但我不确定它是什么意思。我希望谷歌让我搜索角色......

resultList:(STAR | attributeList |) - > ^(RESULT attributeList?STAR?);

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

感谢, 迪安

1 个答案:

答案 0 :(得分:2)

它只是意味着它什么都不匹配。以下更详细的规则完全相同:

resultList
 : STAR          -> ^(RESULT STAR)
 | attributeList -> ^(RESULT attributeList)
 | /* nothing */ -> RESULT
 ;

我认为上面的版本更清晰,以后也更容易评估,因为没有两个可选子节点attributeListSTAR,您需要检查它们的存在。