编译原理陈意云3-20 (a) 证明下面文法 S→AaAb|BbBa A→ε B→ε 是LL(1)文法,但不是SLR(1)文法。

思路:依次判断是否为LL(1)文法和SLR文法即可
证明:
 (1)首先该文法无左递归存在,没有公共左因子.
  其次:对于S→AaAb|BbBa FIRST(AaAb)={a} FIRST(BbBa)={b}
  FIRST(AaAb)∩FIRST(BbBa)=Φ
  所以该文法是LL(1)文法.
  (2)证明该文法不是SLR的.
  文法的LR(0)项目集规范族为:
  I0={S’→.S S→.AaAb S→.BbBa A→. B→.}
  I1={ S’→ S. }
  I2={ S→A.aAb }
  I3={ S→B.bBa }
  I4={ S→Aa.Ab A→. }
  I5={ S→Bb.Ba B→. }
  I6={ S→AaA.b }
  I7={ S→BbB.a }
  I8={ S→AaAb. }
  I9={ S→BbBa. }
  考察I0:
  FOLLOW(A)={a,b} FOLLOW(B)={a,b} FOLLOW(A)∩FOLLOW(B)= {a,b}
  产生规约-规约冲突.
  所以该文法不是SLR(1)文法.


发布了97 篇原创文章 · 获赞 104 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43899069/article/details/105754697