作业帮 > 数学 > 作业

编译原理 FOLLOW集

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/06 17:58:50
编译原理 FOLLOW集
方法:
E → TE’
E’→ +TE’|ε
T→ F T’
T’→ *F T’|ε
F → (E)|id
——————————————
为什么:
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' 不是可以看成完全不同的字母吗?
再答: 我们来看FOLLOW集的定义:很明显T→ F T’
T’→ε
满足第3点中的所以FOLLOW(A)中的所有符号放入FOLLOW(B)中,对照一下,FOLLOW(T)中的所有符号放到FOLLOW(F)中。即FOLLOW(T)是FOLLOW(F)的子集。