【发布时间】:2013-09-04 10:46:07
【问题描述】:
我正在用前缀符号编写算术表达式的语法。但是,在解析负数或减法时我遇到了问题。语法示例是这样的:
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 处给我一个语法错误。正确的应该是5 为E,下一个4 为E,然后- E E 为E。如何使用关联性解决这个问题?还是我需要重写我的语法?
【问题讨论】:
标签: parsing arithmetic-expressions compiler-construction cup