访问括号中定义的属性
Access properties defined with in parentheses
我正在使用 antlr4 和 python2 目标,
additive_expression returns [value] @init{$value = 0;}
: multiplicative_expression ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)*
由于 ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)
表达式出现零次或多次,
我需要分别访问每一个然后计算最终值。
有什么想法吗?我尝试了以下方法,但没有一个有效
- 使用
re = (...)
antlr 说我不能为非集合定义它
- 使用
op = (PLUS_OPERATOR | MINUS_OPERATOR)
等,但它总是指向表达式的最后一次出现
尝试这样的事情:
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
我正在使用 antlr4 和 python2 目标,
additive_expression returns [value] @init{$value = 0;}
: multiplicative_expression ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)*
由于 ((PLUS_OPERATOR | MINUS_OPERATOR) multiplicative_expression)
表达式出现零次或多次,
我需要分别访问每一个然后计算最终值。
有什么想法吗?我尝试了以下方法,但没有一个有效
- 使用
re = (...)
antlr 说我不能为非集合定义它 - 使用
op = (PLUS_OPERATOR | MINUS_OPERATOR)
等,但它总是指向表达式的最后一次出现
尝试这样的事情:
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