parsing - LR(0)、LL(0)、LALR(1)等之间的关系?

标签 parsing compiler-construction ll lr

我真的很难理解以下之间的关系:

  • LR(0)
  • LL(0)
  • LALR(1)
  • 单反(1)
  • LR(1)
  • LL(1)

  • 我很确定 LALR(1) 和 SLR(1) 是 LR(1) 的子集,但我对其他人迷失了。它们都是独家的吗? LL(0) 是 LL(1) 的子集吗?

    谢谢

    最佳答案

    收容规则如下:

  • 每个 LR(0) 文法也是 SLR(1),但并非所有 SLR(1) 文法都是 LR(0)。
  • 每个 SLR(1) 文法也是 LALR(1),但并非所有 LALR(1) 文法都是 SLR(1)。
  • 每个 LALR(1) 文法也是 LR(1),但并非所有 LR(1) 文法都是 LALR(1)。
  • 每个 LL(1) 文法也是 LR(1),但并非所有 LR(1) 文法都是 LL(1)。
  • 每个 LL(0) 文法也是 LR(0)、SLR(1)、LALR(1)、LR(1) 和 LL(1)。 (LL(0) 语法基本上没用; see this question for details why )。

  • 同样的情况是,每种具有 LR(1) 语法的语言也具有 LR(0) 语法,前提是您对语法进行了结尾标记,尽管不能保证该语法非常漂亮。

    关于parsing - LR(0)、LL(0)、LALR(1)等之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36652221/

    相关文章:

    android - 在 Android 中解析 JSON 数据的最佳方式是什么?

    json - 将 Ghost 导出到 Wordpress

    parsing - 转换 Attoparsec 解析器以解析其他字符串类型

    parsing - Scala组合器解析器,>>是什么意思?

    C++ 和 GCC : How Does GCC's C++ Implementation Handle Division by Zero?

    compiler-construction - 如何将语法转换为自上而下的可解析语法

    parsing - 制作语法 LL

    c++ - 在 C++ 代码中使用 "umlauts"

    c# - DSL:从 DSL 规则到 C# 表达式

    parsing - LL-1 解析器 : Is the FOLLOW-Set really necessary?