⑴ 編譯原理關於FIRST,FLLOW的問題。
求FIRST,FLLOW集合的過程是一個遞歸過程..描述出來很繁瑣的,
我打字慢......
編譯原理書上有演算法的描述的..你自己理解一下,不難的...
不懂的地方最好問身邊的同學或老師...當面講解比較清楚一點.
給你個例子吧:
文法:
E->E+T|T
T->T*F|F
F->(E)|i
按照求文法FIRST,FLLOW的演算法,FIRST(E)過程大概是:
1.FIRST(E)=FIRST(E) U FIRST(T) //E,T都是非終結符,所以
繼續求First
2.FIRST(T)=FIRST(T) U FIRST(F)//F,T都是非終結符,所以
繼續求First
3.FIRST(F)={(,i} //(,i是終結符,得出最後結果.
FIRST(E)={(,i}..
FIRST懂了的話,看FLLOW的演算法也就好懂了...
還有什麼問題的話...可以發消息給我..
⑵ 編譯原理:FIRST(A) 集合與FOLLOW(A)集合
1.設計一個演示窗口,包括幾本的操作按鈕和顯示窗口; 2.設計first集合和follow集合生成演算法 3.輸入文法,按要求顯示first集合和follow集合
⑶ 怎麼求編譯原理中的first集,follow集和selec集
由於終結符的first集合就是它自己,所以求出非終結符的first集合後,就可很直觀地得到每個字元串的first集合三,first集求法
first集合最終是對產生式右部的字元串而言的,但其關鍵是求出非終結符的first集合
⑷ 怎麼求編譯原理中的first集,follow集和selec集
如果題目是單純求first、follow集合,不需要消除左遞歸。但是,如果求first、follow集合是為了判斷文法是否為LL(1)文法的話,可以直接得出否定的結論(因為含有左遞歸的文法絕對不是LL(1)文法)。可以先對文法進行改寫,一般是消除左遞歸和提取左公共因子,然後再判斷。
⑸ 編譯原理 aBbG+Y=)的 first集 怎麼求
設I->aBbG+Y=)
first(I)={a}
⑹ 編譯原理計算first 集和follow集的簡單方法 S->bBS' S'->aAS'|ε A->aB|c B->dB' B'->bB'|ε 求計算過程
first : S'=a,ε
S=b
A=a,c
B=d
B'=b,ε
follow: S'=#
S=#
A=a
B=a
B'=a
⑺ 編譯原理first,follow集怎麼求
三,FIRST集求法 First集合最終是對產生式右部的字元串而言的,但其關鍵是求出非終結符的First集合,由於終結符的First集合就是它自己,所以求出非終結符的First集合後,就可很直觀地得到每個字元串的First集合。
⑻ 怎樣求First集和Follow集
First集:是首字母所構成的集合。
Follow集:是這個字母後緊接著的字母集合,如果這個字母包含空,則Follow集包含First集的全部。
⑼ 關於編譯原理first follow 和select
首先要明白這三個集的作用和用途,知道了他們是用來做什麼的之後,理解起來就簡單一些
First(A)集的作用是標示在替換非終結符A的時候,替換後的文法的首字母集合,語法分析程序根據這個來判斷給定的語言是否是合法的,是符合規則的。
Follow(A)的作用是標示那些可以出現在A之後的字元,語法分析程序根據這個,在A可以被替換為e(空)的時候來進行判斷,看當前的文法是否是合法的。
這里簡單說明下,比如A->b,A->e(空) 當給定的語言是 bXXXXX的時候,根據第一句文法就可以判定句子合法,但是如果給的語言是cXXXXX的時候,因為A->可以替換為空,這時候就需要一句A的follow集來進行判斷,若A的follow集裡面含有c 則語言是合法的
Select集的作用是將first集和follow集進行合並,如果兩個文法的左端都是A,若他們的select集交集為空,表明他們是兩個無關的,不會產生不確定性的文法,反之,則表明文法不是LL(1)文法
計算的公式很繁雜,理解了意思之後,看就能看出來。。。。
⑽ 編譯原理 怎麼求FOLLOW啊。。。
只要follow額,這樣,follow(E),把所有包含你要求的符號的產生式都找出來,有F -> (E)|id,那E後面就是),其他包含E的都沒有,所以follow(E)={),#},E『,包含E』的產生式有E -> TE',再由F -> (E)|id推出F -> (TE『)|id,則E』後面也有),則follow(E』)={),#};T,包含T的產生式有E -> TE'、E' -> +TE'|ε,T後面是E『(+TE'|ε),則T有+,,再根據F -> (E)|id,(TE')|id,E『又可以是空(ε),則T後面有),則follow(T)={+,),#}。 T『同理,包含T』的有T -> FT'、T' -> *FT'|ε,F -> (E)|id,推出F -> (TE『)|id,再推出F -> (FT'E')|id,E'可以推出ε,則T'後面有),由E -> TE'推出E -> FT『E',則T』後面是E『,E' -> +TE'|ε,則follw(T』)含有+,所以follow(T『)={+,),#}。
F嘛,自己推推,都是這樣做得