「求解FOLLOW集的方法」
发布时间:2023-01-30 19:04:00
求解FOLLOW集的方法
刚刚学习FOLLOW集时总是容易忽略一些条件而造成错误,学会FOLLOW集的求解对于编译原理的学习很重要,一旦求错就容易造成分析SLR(1分析表时出现错误。
1、对文法中的每个A属于Vn,计算FOLLOW(A:
(1、对文法的开始符号S,将“$”加到FOLLOW(S中;
(2、若A->aBb是一条规则,则把FIRST(b中的非ε元素加到FOLLOW(B中;
(3、若A->aB或A->aBb是一条规则且b=>ε,则把FOLLOW(A加到FOLLOW(B)中;
(4、反复使用(2、(3),直到每个非终结符的FOLLOW集不再增大为止。
ﻫ
看完规则,难免觉得有些许枯燥,下面我将列举一个较复杂的例子,可以使用到上述的全部规则。
eg:设有文法G[A]:
A→BCc|gDBB→bCDE|εC→DaB|caD→dD|εE→gAf|c
计算该文法的每一个非终结符的FIRST集和FOLLOW集。
ﻫ
解:(1)、FIRST集的求解:
FIRST(A=FIRST(BCc)∪FIRST(gDB
=FIRST(B)∪FIRST(C∪{c}∪{g}
={b}∪FIRST(D∪{a}∪{c,,g}
={a,b,c,d,g}
同理