欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2024/2/28 编程问答 55 豆豆

思路:依次判断是否为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)文法.


总结

以上是生活随笔为你收集整理的编译原理陈意云3-20 (a) 证明下面文法 S→AaAb|BbBa A→ε B→ε 是LL(1)文法,但不是SLR(1)文法。的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。