转变减少冲突

发布于 2024-10-31 08:25:42 字数 77 浏览 1 评论 0原文

我无法理解 YACC 的移位/归约冲突问题。有人可以分解这个问题并使用 dangling-else 示例向我解释吗?

谢谢!

I am having trouble understanding the shift/reduce conflict problem with YACC. Could someone please break this problem down and explain it to me using the dangling-else example?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你与昨日 2024-11-07 08:25:42

悬挂的 else 问题基本上意味着类似的东西:

if (x) then if (y) then a; else b;

可以被解析为任一

if (x) then { 
    if (y)  {
        then a;
        else b;
    }
}

或作为

 if (x) then { 
     if (y) 
         then a; 
 } 
 else b;

大多数语言需要第一个 - 这正是 yacc 所做的,所以它很少是一个真正的问题(事实上,来自 yacc 的 S/R 冲突很少非常令人担忧)。

The dangling else problem basically means that something like:

if (x) then if (y) then a; else b;

can be parsed as either

if (x) then { 
    if (y)  {
        then a;
        else b;
    }
}

or as

 if (x) then { 
     if (y) 
         then a; 
 } 
 else b;

Most languages require the first -- and that's exactly what yacc does, so it's rarely a real issue (in fact, S/R conflicts from yacc are only rarely much of a concern).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文