導航:首頁 > 源碼編譯 > 編譯原理中怎麼求first集合

編譯原理中怎麼求first集合

發布時間:2022-09-21 00:05:23

編譯原理關於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嘛,自己推推,都是這樣做得

閱讀全文

與編譯原理中怎麼求first集合相關的資料

熱點內容
代理伺服器被禁用怎麼上網 瀏覽:411
隱私加密怎麼設置密碼 瀏覽:940
馬丁靴補色解壓 瀏覽:565
在設置app上怎麼找到個人熱點 瀏覽:754
按照檔案號生成文件夾 瀏覽:1000
程序員轉方向 瀏覽:111
lol敏捷加密 瀏覽:882
傳統公司眼中的加密貨幣 瀏覽:430
電腦圖標又出現文件夾怎麼去掉 瀏覽:964
排序演算法c和a 瀏覽:418
手機拍照上傳android 瀏覽:343
linux壓縮率 瀏覽:614
電腦瀏覽器加密埠 瀏覽:536
單片機線性電源 瀏覽:268
韓國雲伺服器評測 瀏覽:740
python輸出hello 瀏覽:594
如何在最左側添加文件夾 瀏覽:500
python實現https請求 瀏覽:472
一端無支座端梁要加密嗎 瀏覽:248
雲伺服器能做什麼兼職 瀏覽:972