早教吧 育儿知识 作业答案 考试题库 百科 知识分享

证明下列文法是LL(1)文法但不是SLR(1)文法S->AaAb|BbBaA->ᵋ(空值)B->ᵋ(空值)

题目详情
证明下列文法是LL(1)文法但不是SLR(1)文法
S->AaAb|BbBa A->ᵋ(空值) B->ᵋ(空值)
▼优质解答
答案和解析
 (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)文法.