【问题标题】:Does an empty column in an LL(1) parsing table mean that it is wrong?LL(1) 解析表中的空列是否意味着它是错误的?
【发布时间】:2021-05-31 23:24:08
【问题描述】:

我有一个语法,我被要求建立一个解析表并验证它是一个 LL(1) 语法。在构建解析表后,我注意到一些列是空的并且其中没有生产规则。这是否意味着它是错误建造的?或者它不是 LL(1)?或者可能缺少什么?

谢谢。

【问题讨论】:

    标签: parsing compiler-construction ll


    【解决方案1】:

    这没什么好担心的。空列表示有一个永远不会开始生产的终端符号(除其他外)。例如,以这个简单的 LL(1) 语法为例:

    S → abcdefg

    这里,在 S 的行中,b、c、d、e、f 和 g 的列都将为空,a 的列将是规则 S → abcdefg。更具体地说,增强语法如下所示:

    S' → S

    S → abcdefg

    解析表如下所示:

       |    a    | b | c | d | e | f | g
    ---+---------+---+---+---+---+---+---
     S'|    S    |   |   |   |   |   |
     S | abcdefg |   |   |   |   |   |
    

    请注意,大多数列都是空的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2020-03-09
      • 1970-01-01
      • 2022-08-15
      • 2013-01-05
      • 2013-02-04
      相关资源
      最近更新 更多