Python 访问用括号中的定义的属性

Python 访问用括号中的定义的属性,python,antlr,antlr4,Python,Antlr,Antlr4,我正在使用antlr4和python2目标 additive_expression returns [value] @init{$value = 0;} : multiplicative_expression ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)* 由于((加减运算符)乘法表达式)表达式出现零次或多次 我需要分别访问每一个,然后计算最终值 有什么想法吗?我试过以下方法,但没有一种有效 使用re=(…),an

我正在使用antlr4和python2目标

additive_expression returns [value] @init{$value = 0;}
  : multiplicative_expression ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)*
由于
((加减运算符)乘法表达式)
表达式出现零次或多次

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

有什么想法吗?我试过以下方法,但没有一种有效

  • 使用
    re=(…)
    ,antlr说我不能为非集合定义它
  • 使用
    op=(加减运算符)
    等,但它总是指向表达式的最后一次出现

  • 试着这样做:

    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;}
       )*
     ;
    
    或者更好的方法是使用访问者,而不是在grammar1中嵌入目标代码

    一,