在规则中使用同名的非终结符

Using of nonterminals with same name in rule

如何使用两个同名的非终结符作为接收者? 例如,有这个规则:

expression returns [int value] : 'min' factor factor { 
    $expression.value = min($factor1.value, $factor2.value) //here
}

我需要从这两个因素中获取价值,但它们的名称相同。所以,如果我写 $factor.value 两次,我得到第一个因素的值。

我认为这是解决您问题的方法:

expression returns [int value] : 'min' f1=factor f2=factor { 
    $expression.value = min($f1.value, $f2.value)
}