首页 > 其他 > 详细

编译原理 十一

时间:2019-11-20 10:49:07      阅读:78      评论:0      收藏:0      [点我收藏+]

1. 文法 G(S):

(1)S -> AB

(2)A ->Da|ε

(3)B -> cC

(4)C -> aADC |ε

(5)D -> b|ε

验证文法 G(S)是不是 LL(1)文法?

解:

SELECT(A->Da)=FIRST(Da)={b,a}
SELECT(A->ε)=(FIRST(A)-ε) ∪ FOLLOW(A)={c,b,a,#}
SELECT(A->Da) ∩ SELECT(A->ε) ={b,a} ≠ ∅
所以该文法不是LL(1)文法

2.(上次作业)消除左递归之后的表达式文法是否是LL(1)文法?

解:

SELECT(E->TE)=FIRST(TE)={(,i,*}
SELECT(E->ε)=(FIRST(E)-ε) ∪ FOLLOW(E)={#,)}
SELECT(E->TE) ∩ SELECT(E->ε) =∅
SELECT(T->*FT)=FIRST(*FT)={*}
SELECT(T->ε)=(FIRST(T)-ε) ∪ FOLLOW(T)={#,),+}
SELECT(T->*FT) ∩ SELECT(T->ε) =∅
SELECT(F->(E))=FIRST((E))={(}
SELECT(F->i)=FIRST(i)={i}
SELECT(F->(E)) ∩ SELECT(F->i) =∅
所以该文法是LL(1)文法

 

编译原理 十一

原文:https://www.cnblogs.com/huangwenshuo/p/11895657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!