編譯原理之First集合,Follow集合

2021-10-06 09:07:11 字數 959 閱讀 9426

對於first集合,follow集合的構造方法,我引用的是國防科技大學王挺老師的方法,我覺得這個講的比較詳細易懂;

下面用一道例題進行應用;

e->t|e+t t->f|t*f f->i |(e)的所有產生式的follow集合,所有產生式右部的first集合。

第一步,消除左遞迴;

上式轉化為:

(1)e->te』

(2)e』->+te』

(3)e』->ε

(4)t->ft』

(5) t』->*ft』

(6)t』->ε

(7)f->(e)

(8)f->i

first(e)=first(t)=first(f)=//由於t推導不出ε,所以後面的first(e』)不加入first(e),同理,(4)中的first(t』)不加入first(t)。

first(e』)=//由於e』的推導中第乙個字元就是+,為終結符,掃瞄後,first停止。(個人想法)

first(t)=first(f)=

first(t』)=

first(f)=

follow集合:

follow(e)= ,//e為開始符號,加入#,(7)式中first( ))加入了follow(e)

follow(e』)= follow(e)= //follow集合第三條規則,第乙個產生式中e』是最後乙個符號,所以follow(e』)中加入follow(e)。

follow(t)=}∪follow(e)∪follow(e』) = //(2)式由follow規則2,first(e』)\ε加入follow(t)

(1)式可構成e->ate』,a為ε,這樣,follow(e)加入follow(t),同理,(2)中的follow(e』)加入follow(t)

follow(t』)= follow(t)=

follow(f)=})∪follow(t)∪follow(t』) =

編譯原理 First集合和Follow集合的求法

first集合的求法 first集合最終是對產生式右部的字串而言的,但其關鍵是求出非終結符的first集合,由於終結符的first集合就是它自己,所以求出非終結符的first集合後,就可很直觀地得到每個字串的first集合。1.直接收取 對形如u a 的產生式 其中a是終結符 把a收入到first ...

編譯原理first集合和follow集合

2011.06.4 文法 s abc a a b b first集合求法 能 由非終結符號推出的所有的開頭符號或可能的 但要求這個開頭符號是終結符號。如此題a可以推導出a和 所以first a a,同理 first b s可以推導出abc,還可以推導出bc,還可以推導出c,所以first s a,b...

編譯原理 First集合和Follow集合的求法

first集合的求法 first集合最終是對產生式右部的字串而言的,但其關鍵是求出非終結符的first集合,由於終結符的first集合就是它自己,所以求出非終結符的first集合後,就可很直觀地得到每個字串的first集合。1.直接收取 對形如u a 的產生式 其中a是終結符 把a收入到first ...