否定运算符的运算符优先级
更新:这不是 ANTLR 的问题,
这是 antlr 中的一个 bug -我正在使用的 kotlin 生成器。
原始问题
我想解析一些包含变量的数学表达式。这是我的语法:
expr
: '-' expr # Negate
| expr ( '*' | '/' ) expr # MultDiv
| expr ( '+' | '-' ) expr # AddSub
| '(' expr ')' # Paren
| ID # Var
| NUM # Num
;
但是当我尝试解析 -a + b
时,我总是得到 -(a + b)
而不是 (-a) + b< /代码>。我该如何解决这个问题?
Update: This is not an issue with ANTLR
It is a bug in the antlr-kotlin generator that I'm using.
Original Question
I want to parse some mathematical expressions that contain variables. Here's my grammar:
expr
: '-' expr # Negate
| expr ( '*' | '/' ) expr # MultDiv
| expr ( '+' | '-' ) expr # AddSub
| '(' expr ')' # Paren
| ID # Var
| NUM # Num
;
But when I try to parse -a + b
, I always get -(a + b)
and not (-a) + b
. How can I fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如 sepp2k 在评论中提到的,这是不可重现的:
As mentioned by sepp2k in the comments, this is not reproducible: