基于这个问题,这个 Bison 代码中的移位/减少冲突来自哪里?我正在尝试为这样的语法创建语法:
-10 + 3 - 2
或+4 - 2 + 1
。第一个整数显然有符号。
这是我已经拥有的:
%token INT
...
Term: INT;
TermOps: "+" | "-";
SignedTerm: TermOps Term | Term;
reminder: /* EPS */ | TermOps TermList;
TermList: SignedTerm reminder;
我知道 for 的规则SignedTerm
显然是错误的,因为它会产生歧义,但我该如何解决呢?