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)*
;

这将导致操作员被放置在CCD_ 5中。

最新更新