否定运算符的运算符优先级

发布于 2025-01-13 11:10:44 字数 573 浏览 1 评论 0原文

更新:这不是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反话 2025-01-20 11:10:44

正如 sepp2k 在评论中提到的,这是不可重现的:

在此处输入图像描述

As mentioned by sepp2k in the comments, this is not reproducible:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文