编译原理(三)语法分析:7.LL(1)、LR(0)和SLR(1)


【编译原理博客列表】》》》》》》


一、LL(1)

1.意思

第一个L代表从左到右扫描输入序列,第二个L表示产生最左推导,1表示在确定分析器的每一步动作时向前看一个终结符。

2.判断

  • 有左递归和左因子的文法不是LL(1)文法。
  • 当且仅当为它构造的预测分析表中不含多重定义的条目(即每个非终结符的FIRST集和FOLLOW集没有交集),才是LL(1)文法。
Created with Raphaël 2.2.0 文法 有左递归和左因子? 不是LL(1)文法 每个非终结符的FIRST集 和FOLLOW集有交集? 是LL(1)文法 yes no yes no

例:在这里插入图片描述

有交集不是。

3.推论3.2

G是LL(1)的,当且仅当G的任何两个产生式A→α|β满足:

  • 对任何终结符a,α和β不能同时推导出以a开始的串;
  • α和β最多有一个可以推导出ε
  • β = > ε β=*>ε ,则α不能导出以FOLLOW(A)中终结符开始的任何串。

二、LR(0)和SLR(1)

1.判断

在这里插入图片描述

  • 二义文法不是SLR(1)文法