英文:
Antlr4: getting an ordered list of tokens?
问题
我有这个解析规则:
multiplication
: pow (operator = (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
我正在使用ctx.pow()
迭代* pow*,但我也想知道那里是什么运算符。不幸的是,ctx.operator
只会给出最后遇到的运算符,而ctx.TIMES()
只会给出一个带有重复的'*'的愚蠢列表。
我真的需要为此做一个子规则吗?
英文:
I have this parser rule:
multiplication
: pow (operator = (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
And I'm iterating over the pows using ctx.pow()
, but I would like to know too what operator there was. Unfortunately, ctx.operator
just gives the last one encountered and ctx.TIMES()
just gives a dumb list with a reapeted '*'.
Do I really have to do a sub-rule for that?
答案1
得分: 2
你可以使用 operator +=
进行操作:
multiplication
: pow (operator += (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
这将会将操作符放入一个 List
中。
英文:
You can do operator +=
:
multiplication
: pow (operator += (TIMES | DIVIDE | FLOOR_DIVIDE | MODULO) pow)*
;
which will cause the operators to be placed in a List
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论