问题描述
我有这个解析器规则:
multiplication
: pow (operator = (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
我正在使用ctx.pow()
遍历 pow ,但是我也想知道那里有什么运算符。不幸的是,ctx.operator
仅给出了遇到的最后一个,而ctx.TIMES()
仅给出了带有加号'*'的哑列表。
我真的必须为此做一个子规则吗?
解决方法
您可以执行operator +=
:
multiplication
: pow (operator += (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
这将导致运算符被放置在List
中。