0

我收到来自 yacc 的消息,说存在转移/减少冲突。我认为它来自 yacc 文件的这一部分。

statement : expression_stmt
          | compound_stmt
          | selection_stmt
          | iteration_stmt
          | return_stmt ;

selection_stmt : IF '(' expression ')' statement
               | IF '(' expression ')' statement ELSE statement ;

expression : var '=' expression | simple_expression ;

你能看出冲突吗?如何修复?

4

1 回答 1

1

是的,我看到了冲突。该selection_statement规则匹配表达式,如

IF(<expression 1>)
THEN
    IF(<expression 2>)
    THEN <expression statement 1>
    ELSE <expression statement 2>

但这是模棱两可的。它也可能是

IF(<expression 1>)
THEN
    IF(<expression 2>)
    THEN <expression statement 1>
ELSE <expression statement 2>
于 2009-11-18T10:35:52.717 回答