使用括号定义的访问属性

时间:2016-09-06 07:14:19

标签: python antlr antlr4

我正在使用antlr4和python2目标,

((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)

由于re = (...)表达式出现零次或多次,

我需要分别访问每一个,然后计算最终值。

有什么想法吗?我尝试了以下内容,其中没有它们可以使用

  1. 使用op = (PLUS_OPERATOR | MINUS_OPERATOR)和antlr说我无法为非集合
  2. 定义它
  3. 使用ActiveSupport.to_time_preserves_timezone等,但它始终指向表达式的最后一次出现

1 个答案:

答案 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

1 ANTLR4 visitor pattern on simple arithmetic example