否定运算符的运算符优先级
Operator precedence for negate operator
更新:这不是 ANTLR 的问题
它是我正在使用的 antlr-kotlin 生成器中的 bug。
原问题
我想解析一些包含变量的数学表达式。这是我的语法:
expr
: '-' expr # Negate
| expr ( '*' | '/' ) expr # MultDiv
| expr ( '+' | '-' ) expr # AddSub
| '(' expr ')' # Paren
| ID # Var
| NUM # Num
;
但是当我尝试解析 -a + b
时,我总是得到 -(a + b)
而不是 (-a) + b
。我该如何解决这个问题?
正如 sepp2k 在评论中提到的,这是不可重现的:
更新:这不是 ANTLR 的问题
它是我正在使用的 antlr-kotlin 生成器中的 bug。
原问题
我想解析一些包含变量的数学表达式。这是我的语法:
expr
: '-' expr # Negate
| expr ( '*' | '/' ) expr # MultDiv
| expr ( '+' | '-' ) expr # AddSub
| '(' expr ')' # Paren
| ID # Var
| NUM # Num
;
但是当我尝试解析 -a + b
时,我总是得到 -(a + b)
而不是 (-a) + b
。我该如何解决这个问题?
正如 sepp2k 在评论中提到的,这是不可重现的: