導航:首頁 > 源碼編譯 > 編譯原理first集合代碼

編譯原理first集合代碼

發布時間:2022-08-24 06:16:57

1. 編譯原理first,follow集怎麼求

三,FIRST集求法 First集合最終是對產生式右部的字元串而言的,但其關鍵是求出非終結符的First集合,由於終結符的First集合就是它自己,所以求出非終結符的First集合後,就可很直觀地得到每個字元串的First集合。

2. 關於編譯原理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)文法
計算的公式很繁雜,理解了意思之後,看就能看出來。。。。

3. 編譯原理 跟隨集

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

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

4. 怎麼求編譯原理中的first集,follow集和selec集

由於終結符的First集合就是它自己,所以求出非終結符的First集合後,就可很直觀地得到每個字元串的First集合三,FIRST集求法 First集合最終是對產生式右部的字元串而言的,但其關鍵是求出非終結符的First集合

5. 編譯原理文法FIRST和FOLLOW

FLLOW(X)就是直接出現在非終結符X後面的終結符集合例如FOLLOW(T)={int,real,$}

6. 急求一編譯原理演算法:要求用C寫:設計一個演算法,求出任一上下無關文法中所有非終極符的First集合,並輸出

這個要寫不少啊。我那裡有課程設計的代碼。不過明天才能給你。分數太少啦

7. 一個編譯原理的問題

First(α) 是符號串α的開始符號集合。
也就是說,用推導的方法對α進行推導,一次次地使用產生式,用產生式右部的符號串替換一個非終結符,所有那些可能出現在第一個符號位置的終結符,就構成了開始符號集。
比如,在C語言中,對於符號串「語句」來說,標識符(賦值語句)、if(條件語句)、printf(輸出函數)這些單詞(終結符)都是它開始符號集合中的元素,而+(加號)、}(右花括弧)不可能出現在「語句」的開頭,所以不是它的開始符號集合中的元素。

Follow(A)是非終結符A的後跟符號集合。
它是指在所有可能的句型中,一切可能出現在非終結符A後面的一個終結符。
這里要特別注意是在「句型」中。

你可以自己舉例,比如分析一下C語言中「表達式」後面可能跟哪些單詞,它們就是非終結符「表達式」後跟符號集合中的元素。

你說的這兩個集合的交集問題不存在。
因為它們針對的是不同類型的對象(一個是符號串,另一個是某個非終結符)。
實際上,在選擇集合問題中,考慮的不是它們的交集,而是一個產生式右部符號串的First集跟這個產生式左端非終結符的Follow集的並集。

考慮交集的,發生在相同左部的不同產生式的選擇集合之間。

8. 編譯原理

FIRST(begin d ;X end)={begin}
FIRST(d ; X)={d}
FIRST(sY)={s}
FIRST(ε)={ε}

FOLLOW(P)={#}
FOLLOW(X)={end}
FOLLOW(Y)={end}

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

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

10. 編譯原理關於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集合代碼相關的資料

熱點內容
什麼app零粉分發視頻有收益 瀏覽:162
肯亞程序員 瀏覽:638
新科源碼 瀏覽:659
如何判斷伺服器有沒有帶寬 瀏覽:41
天正建築批量刪除命令 瀏覽:94
cad最下面的一排命令都什麼意思 瀏覽:456
pythonimportcpp 瀏覽:850
W10的系統怎麼給U盤加密 瀏覽:370
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:428
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:229
python中的雙色球 瀏覽:168