在规则中使用同名的非终结符
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)
}
如何使用两个同名的非终结符作为接收者? 例如,有这个规则:
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)
}