1

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

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

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

谢谢,院长

4

1 回答 1

2

它只是意味着它不匹配任何内容。以下稍微详细一点的规则完全相同:

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

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

于 2012-07-07T05:19:58.100 回答