LR(0),LL(0),LALR(1)等之间的关系?

时间:2016-04-15 16:19:24

标签: parsing compiler-construction ll lr

我真的在努力解决之间的关系:

  • LR(0)
  • LL(0)
  • LALR(1)
  • SLR(1)
  • LR(1)
  • LL(1)

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

由于

1 个答案:

答案 0 :(得分:6)

遏制规则如下:

  • 每个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)语法,前提是您对语法进行了标记,尽管语法不能保证很好。