gpt4 book ai didi

bison - 用 Bison 解决悬空其他问题

转载 作者:行者123 更新时间:2023-12-03 20:22:05 36 4
gpt4 key购买 nike

我的语法有这两个标记声明:

%token RP
%token ELSE

而这两条规则:
Statement  : IF LP Exp RP Statement;

Statement : IF LP Exp RP Statement ELSE Statement;

据我了解,规则的优先级由其最后一个非终结符的优先级决定。因此,第一条规则是 RP优先级和第二条规则有 ELSE优先级高于 RP .以下是野牛的输出:
state 73

11 Statement: IF LP Exp RP Statement .
12 | IF LP Exp RP Statement . ELSE Statement

ELSE shift, and go to state 76

ELSE [reduce using rule 11 (Statement)]
$default reduce using rule 11 (Statement)

ELSE 以来,这种冲突不应该通过转移来解决吗?有更高的优先级?

最佳答案

不,因为 %token不设置 token 的优先级(您称之为优先级)——它声明 token 不存在优先级。如果要声明 token 的优先级,则需要使用 %left , %right%nonassoc所有这些都声明 token 并设置其优先级。如果您将代码更改为

%nonassoc RP
%nonassoc ELSE

然后 RPELSE将设置它们的优先级,并且 ELSE将有更高的优先级,shift/reduce 冲突将通过优先级解决。

关于bison - 用 Bison 解决悬空其他问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010362/

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