gpt4 book ai didi

compiler-construction - LL(1) 悬挂 else 语法

转载 作者:行者123 更新时间:2023-12-04 08:24:21 25 4
gpt4 key购买 nike

在编译器构造中,主要的歧义问题之一是dangling else。正如 Aho、Lam、Sethi 和 Ullman 在《编译器:原理、技术和工具》一书中提到的,悬空 else 的语法不能与 LL(1) 解析器一起使用。

真的不能处理成LL(1)吗?

最佳答案

是的,它不能被 LL(k) 或 LALR(k) 的纯形式解析。问题是悬垂的 else 有两种可能的解释;这是一个歧义问题(“else”属于最近的“if”,或者不属于)。

通常通过坚持两种解释中的一种来治愈,例如,“else belongs to nearest if”。

许多解析器生成器可以“偶然地”得到这个; LL 的解决方案是接受第一个有效的解析并首先尝试“其他附加到最近”。 LR 的解决方案是“shift on else”,这很容易导致,只需在“reduce”操作之前检查“shift”操作即可。

它只会成为一个解析器的问题,它会真正提取不明确的解析,例如 GLR。这里可以提供额外的语法提示,例如,“shift on else”。

关于compiler-construction - LL(1) 悬挂 else 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149493/

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