编译原理 FOLLOW集
方法:E→TE’E’→+TE’|εT→FT’T’→*FT’|εF→(E)|id——————————————为什么:FOLLOW(F)={+,*,),$}??不是应该中有{...
方法:
E → TE’
E’→ +TE’|ε
T→ F T’
T’→ *F T’|ε
F → (E)|id
——————————————
为什么:
FOLLOW(F)= {+,*,),$}
??
不是应该中有{*,$}吗?? 展开
E → TE’
E’→ +TE’|ε
T→ F T’
T’→ *F T’|ε
F → (E)|id
——————————————
为什么:
FOLLOW(F)= {+,*,),$}
??
不是应该中有{*,$}吗?? 展开
1个回答
展开全部
因为有:
T→ F T’
T’→ *F T’
所以FIRST(T')是FOLLOW(F)的子集。所以 * 是FOLLOW(F)中的元素。
因为有:
T→ F T’
T’→ε
所以FOLLOW(T)是FOLLOW(F)的子集。
因为有:
E’→ +TE’
所以FIRST(E‘)是FOLLOW(T)中的子集。所以FIRST(E‘)是FOLLOW(F) 中的子集。
因为有:
E’→ +TE’
所以+是FIRST(E’)中的元素,所以+是FOLLOW(F)中的元素。
因为有:
E’→ ε
E → TE’
所以有:
FOLLOW(E)是FOLLOW(T)子集。前面有所以FOLLOW(T)是FOLLOW(F)的子集。所以有
FOLLOW(E)是FOLLOW(F)的子集,
由F → (E)|id
知 ) 是FOLLOW(E)的元素。所以 ) 是FOLLOW (F)的元素。
因为E是开始符号,所以有 $ 是FOLLOW(E)中的元素,所以 $ 是FOLLOW(F)中的元素。
综上所述:
FOLLOW(F)= {*,+,),$}
T→ F T’
T’→ *F T’
所以FIRST(T')是FOLLOW(F)的子集。所以 * 是FOLLOW(F)中的元素。
因为有:
T→ F T’
T’→ε
所以FOLLOW(T)是FOLLOW(F)的子集。
因为有:
E’→ +TE’
所以FIRST(E‘)是FOLLOW(T)中的子集。所以FIRST(E‘)是FOLLOW(F) 中的子集。
因为有:
E’→ +TE’
所以+是FIRST(E’)中的元素,所以+是FOLLOW(F)中的元素。
因为有:
E’→ ε
E → TE’
所以有:
FOLLOW(E)是FOLLOW(T)子集。前面有所以FOLLOW(T)是FOLLOW(F)的子集。所以有
FOLLOW(E)是FOLLOW(F)的子集,
由F → (E)|id
知 ) 是FOLLOW(E)的元素。所以 ) 是FOLLOW (F)的元素。
因为E是开始符号,所以有 $ 是FOLLOW(E)中的元素,所以 $ 是FOLLOW(F)中的元素。
综上所述:
FOLLOW(F)= {*,+,),$}
追问
嗯,你回答得好认真啊。
有一点不太明白:
————————
因为有:
T→ F T’
T’→ε
所以FOLLOW(T)是FOLLOW(F)的子集。
————————
为什么呢? 还有T 和 T'有什么关系呢,T 和T' 不是可以看成完全不同的字母吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询