我正在使用antlr4和python2目标,
((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)
由于re = (...)
表达式出现零次或多次,
我需要分别访问每一个,然后计算最终值。
有什么想法吗?我尝试了以下内容,其中没有它们可以使用
op = (PLUS_OPERATOR | MINUS_OPERATOR)
和antlr说我无法为非集合ActiveSupport.to_time_preserves_timezone
等,但它始终指向表达式的最后一次出现答案 0 :(得分:1)
尝试这样的事情:
additive_expression returns [value]
@init{$value = 0;}
: e1=multiplicative_expression {$value = $e1.value;}
( PLUS_OPERATOR e2=multiplicative_expression {$value += $e2.value;}
| MINUS_OPERATOR e2=multiplicative_expression {$value -= $e2.value;}
)*
;
或者更好的是,使用访问者而不是在目标代码中嵌入目标代码 1 。