【问题标题】:Can an LL(1) parse table be valid if there is a column with no entries in its cells?如果有一列在其单元格中没有条目,则 LL(1) 解析表是否有效?
【发布时间】:2026-01-22 02:25:01
【问题描述】:

我正在为考试做复习考试题。其中一个问题是从第一个和后续问题中计算的集合构建一个 LL(1) 解析表。

现在我几乎可以肯定我已经正确构建了第一个和后续集合,并且表格的任何单元格中都没有任何重复的条目,所以我假设该语法是有效的 LL(1) 语法(我们是要求确定它是否有效,因此我需要构建表)。

然而下一个问题是将语法转换为有效的LL(1)语法,显然暗示它不是LL(1)

所以我的问题实际上是 2 个问题。

由于有一列没有任何条目,因此该语法不是 LL(1) 语法吗?

如果这在 LL(1) 解析表中是允许的,那么我很可能在创建第一个和后续集时出错了吗?

这是我解决的问题和框中的语法 http://imgur.com/UwmOAvX

【问题讨论】:

  • FIRST(D) 应包括 x,并且您应在 LA 表中包括 $ 列。但主要问题是LA(D, z)3,但D->3 不是语法中的产生式。此外,LA(F, z) 应该是 3。你没有公开计算 FIRST、FOLLOW 和 LA 的算法,所以我能提供的帮助就这些了。

标签: parsing grammar ll


【解决方案1】:

列没有符号是完全可以的——这只是意味着有问题的终端不在任何非终端的第一个集合中,这很容易发生在任何地方都没有出现在前导上下文中的符号(例如,) 通常就是这样的符号。)

在您的情况下,问题似乎是您忘记将规则 B -> B v 放入表中。您在 FIRST(D) 和 FOLLOW(B) 中也有错误——后者来自前者。

【讨论】:

  • 太棒了!至少我现在知道了。明天我将再次尝试解决同样的问题,看看我的进展如何。非常感谢
最近更新 更多