解决移位/减少错误

时间:2016-10-15 16:46:57

标签: bison yacc lex

expr    : expr relOps expr
        | expr logOps expr
        | OPENP expr CLOSEP
        | term addOps factor
        | term
        ;

term    : factor mulOps term
        | factor
        ;

factor  : IDENTIFIER
        | CONSTANT
        ;

addOps  : ADD
        | MINUS
        ;

mulOps  : MUL
        | DIV
        | MOD
        ;

relOps  : LT
        | EQ
        | GT
        ;

logOps  : AND
        | OR
        | NOT
        ;

这是我语法的一部分。当我编译并查看y.output时,我得到12个shift / reduce错误。错误来自expr relOps expr和expr logOps expr,每个logOp和relOp都有1个错误。

我理解这里的含糊不清,IE,声明a> b> c可以读作(a> b)> c和a> (b> c)。我已经尝试了一切我能想到的分配正确的优先权来解决这个问题。但是,我不能。

任何人都可以解决这个问题或者指出我的解决方案吗?

由于

0 个答案:

没有答案