(1)若x 是終結符或ε,則first (x) = 。(2)若x 是非終結符,則對於每個產生式x→x1x2. . . xn ,first (x)都包含了first(x1) - 。
若對於某個i < n ,所有的集合first (x1), . . . , first (xi) 都包括了。則first (x) 也包括了first (x i + 1 ) -。若所有集合first (x1), . . . , first (xn)包括了ε,則first (x)也包括ε。
現在為任意串a = x1 x2 . . . xn (終結符和非終結符的串)定義first (a),如下所示:first (a)包括first (x1) 對於每個i = 2, . . . , n ,如果對於所有的k = 1, . . . ,i -1 ,first (xk) 包括了ε,則first (a)就包括了first (xi)。最後,如果對於所有的i =1, . . . , n ,first (xi) 都包括了ε,則first (a)也包括了ε。
例如:文法:s→abc
a→a|ε
b→b|ε
解:first(a)={a,ε}
first(b)=
first(s)={a,b,c}
first(a)=first(bcc)∪fisrt(gdb)first(b)=first(bcde)∪first(ε)=(first(b)-)∪first(cc)∪
=
=first( c)=first(dab)∪first(ca)
=first(ddab)∪first(ab)∪first(d)=first(dd)∪first(ε)==
first(e)=first(gaf)∪first( c )=
FIRST集和FOLLOW集的求法
follow集 若x a 則將終結符 加入first x 中 若x e 則將終結符e加入first x 中 e表示空集 若 x bc d,則將first b 所有元素 除了空集 加入first a 然後檢測first b 若first b 中不存在空集,則停止,若存在則向b的後面檢視,將first ...
複習 First集和Follow集的求法
參考 我的理解 比如求first a 1 如果產生式右部第乙個就是終結符,那麼這個終結符屬於first a 例子 a ab a c first a 分析 右部的第乙個產生式分別是a,c 2 如果產生式右部第乙個是非終結符,那麼就找以這個非終結符為產生式左部的產生式,直到找到產生式右部以終結符開頭,那...
編譯原理 First集合和Follow集合的求法
first集合的求法 first集合最終是對產生式右部的字串而言的,但其關鍵是求出非終結符的first集合,由於終結符的first集合就是它自己,所以求出非終結符的first集合後,就可很直觀地得到每個字串的first集合。1.直接收取 對形如u a 的產生式 其中a是終結符 把a收入到first ...