Antlr4:获取令牌的有序列表?

问题描述

我有这个解析器规则:

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中。