當前位置:首頁 » 編程軟體 » 編譯原理follow集概念

編譯原理follow集概念

發布時間: 2022-06-24 13:59:20

Ⅰ 關於編譯原理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集

因為有:
T→ F T』
T』→ *F T』
所以FIRST(T')是FOLLOW(F)的子集。所以 * 是FOLLOW(F)中的元素。
因為有:
T→ F T』
T』→ε
所以FOLLOW(T)是FOLLOW(F)的子集。
因為有:
E』→ +TE』
所以FIRST(E『)是FOLLOW(T)中的子集。所以FIRST(E『)是FOLLOW(F) 中的子集。
因為有:
E』→ +TE』
所以+是FIRST(E』)中的元素,所以+是FOLLOW(F)中的元素。
因為有:
E』→ ε
E → TE』
所以有:
FOLLOW(E)是FOLLOW(T)子集。前面有所以FOLLOW(T)是FOLLOW(F)的子集。所以有
FOLLOW(E)是FOLLOW(F)的子集,
由F → (E)|id
知 ) 是FOLLOW(E)的元素。所以 ) 是FOLLOW (F)的元素。
因為E是開始符號,所以有 $ 是FOLLOW(E)中的元素,所以 $ 是FOLLOW(F)中的元素。
綜上所述:
FOLLOW(F)= {*,+,),$}

Ⅲ 編譯原理follow集怎麼求例:s->xSNy|Nx;N->zN|空 答案:follow(S)={y,z,#},follw(N)={x,y}什麼時候有#

  1. 求某一非終結符的follow集,主要看產生式右端(含有該非終結符的右端)。

  2. 因為S是該文法的開始符,所以#在follow(S)中。在產生式S->xSNy的右端,S的後跟符號是first(Ny),即z和y。這樣follow(S)={y,z,#}

  3. 求follw(N)時,看產生式S->xSNy和S->Nx,在它們的右端都含有N,根據S->xSNy可知,y在follw(N)中;根據S->Nx可知,x在follw(N)中;這樣follw(N)={x,y}

    雖然產生式N->zN的右端也含有N,但根據follow集合的定義,將follw(N)加入follw(N)中沒有意義,所以不用計算。

  4. 對於不是開始符的其他非終結符,其follow集合有沒有#,要看產生式的結構(產生式右端)。

Ⅳ 編譯原理:FIRST(A) 集合與FOLLOW(A)集合

1.設計一個演示窗口,包括幾本的操作按鈕和顯示窗口; 2.設計first集合和follow集合生成演算法 3.輸入文法,按要求顯示first集合和follow集合

Ⅳ 編譯原理求解答案

編譯原理是計算機軟體專業中的非常重要一門課程。例如:如何把我們編寫的高級語言源程序,翻譯成機器可執行的目標程序,這個就需要用到編譯原理技術。

但是學習編譯原理這門課程時,是需要頭腦中對編譯原理課程中涉及到的所有概念必須是相當清楚的,別人才能夠對你的這些問題進行准確的回答。而不是看到這些似曾親切的內容就敢於回答你的內容的。
故我個人的建議還是:你可以向專門講授編譯原理的老師請教你的問題。
以上就是我很多年前學習編譯原理的親身體會。

Ⅵ 編譯原理 跟隨集

先求FIRST集:
first(S)={a,b}
first(A)={b,ε}

再求FOLLOW集:
follow(S)={#}
follow(A)=first(S)Ufollow(A)={a,b}

Ⅶ 急求!怎麼求編譯原理的FOLLOW集合在線等~

follow集合是針對非終結符而言的;follow(U)所表達的是句型中非終結符U的所有可能的後隨終結符號的集合,特別注意一點:「#」是識別符號的後隨附。
直接收取:形如「……Ua」的組合,直接把啊收入到follow(U)中
直接收取:形如「……UP……」的組合,(P是非終態符);把firth(P)除去ε直接收入到follow(U)中。
反復傳遞:形如「P-……U」的產生式,
follow(P)的全部內容傳遞到follow(U)中,或者說是P-……UB且first(B)包含ε,則把first(B)除去ε直接收入到follow(U)中,同時吧follow(P)的全部內容傳送到follow(U)中...

Ⅷ 編譯原理中,在文法G中,E'的follow集為什麼會含有右括弧,題和答案如圖,求解答

這個問題中的一個產生式E』→+TE』| e,應該是E->+TE』 |ε這樣吧!否則不可能獲得如此結果.
關於求follow集合,龍書中說得很清楚,依據三條規則即可:
1、任何FOLLOW(S)都包含輸入終止符號,其中S是開始符號.
適用該條,因此FOLLOW(E』)中包含終止符號#.
2、如果存在產生式,A->αBβ,則將FIRST(β)中除ε以外的符號都放入FOLLOW(B)中.
該條不適用,因為在上述所有產生式中不存在形如E『->αE』β這樣的產生式.
3、如果存在產生式,A->αB,或A->αBβ,其中FIRST(β)中包含ε,則將FOLLOW(A)中的所有符號都放入FOLLOW(B)中.
適用該條,因為存在這樣的產生式E->+TE』,使得FOLLOW(E』)=FOLLOW(E)成立.而FOLLOW(E)適用上述第二條,根據產生式F→(E)可求得為FOLLOW(E)={#,)}.
綜上,FOLLOW(E』)=FOLLOW(E)={#,)}.

Ⅸ 編譯原理的follow集怎麼求

希望你最好能給幾個例子了,看所有右部產生式有與你要求的非終結符的式子,與你要求的非終結符後面的那個如果是終結符的話那麼它就應該屬於你要求的FLLOW集了,如果是非終結符的話,求那個非終結符的FIRST集也屬於你要求的。以後最好給個例子哈,不能的話很難回答你的。

熱點內容
javajson後台 發布:2022-07-05 15:00:38 瀏覽:463
redis配置外網訪問 發布:2022-07-05 15:00:12 瀏覽:416
沒連上伺服器是什麼意思打卡機 發布:2022-07-05 14:57:35 瀏覽:759
compassandroid 發布:2022-07-05 14:57:11 瀏覽:823
acm離線文本編譯器 發布:2022-07-05 14:56:02 瀏覽:448
壓縮模具孔 發布:2022-07-05 14:55:47 瀏覽:725
開頭腳本 發布:2022-07-05 14:53:50 瀏覽:999
我的世界基岩版有多少個伺服器 發布:2022-07-05 14:53:43 瀏覽:682
vbnet資料庫開發 發布:2022-07-05 14:50:55 瀏覽:293
leu存儲 發布:2022-07-05 14:48:09 瀏覽:364