我正在用前缀表示法编写算术表达式的语法。但是,在解析负数或减法时我遇到了问题。语法示例是这样的:
precedence right +, -;
precedence right *, /;
precedence right uminus;
E ::= + E E
| - E E
| * E E
| / E E
| ( E )
| - E %prec uminus
| id
| digit
;
但是,如果我的输入是- 5 4,它会减少5为E,然后它会减少- E(负数),然后解析器会在 处给我一个语法错误4。正确的应该是5as E, next 4asE和- E Eas E。如何使用关联性解决这个问题?还是我需要重写我的语法?