gpt4 book ai didi

Bison 提示 "conflicts: 1 shift/reduce"

转载 作者:行者123 更新时间:2023-12-01 04:35:06 25 4
gpt4 key购买 nike

Bison 提示“冲突:1 类/减少”。我看不出有什么问题。请帮忙。谢谢,

%token OR AND NUMBER
%%

search_condition:
| search_condition AND search_condition { printf(" AND "); }
| '(' search_condition ')'
| predicate
;

predicate:
NUMBER { printf("%d\n", $1); }
;

最佳答案

冲突意味着您提供给 bison 的语法不是 LALR(1),因此它无法决定在每种可能的情况下采取什么行动来正确解析语法。

在您的情况下,问题在于您的语法不明确。如果你给它一个像

这样的输入
NUMBER AND NUMBER AND NUMBER

它无法决定是否应该将其解析为等价于

( NUMBER AND NUMBER ) AND NUMBER

NUMBER AND ( NUMBER AND NUMBER )

有很多方法可以解决这个问题:

  • 您可以使用 %left AND%right AND 告诉 bison 它应该将 AND 视为左或右结合中缀运算符

  • 您可以重构 search_condition 规则以使其明确:

    search_condition : search_condition AND primary
    | primary
    ;
    primary : '( search_condition ')'
    | predicate
    ;

关于 Bison 提示 "conflicts: 1 shift/reduce",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com