導航:首頁 > 源碼編譯 > 編譯原理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集合代碼相關的資料

熱點內容
格力三匹壓縮機電流測哪根線 瀏覽:72
編程知識大全女孩 瀏覽:62
aut命令 瀏覽:429
什麼兒童編程好 瀏覽:646
產品經理的第一本書pdf 瀏覽:430
app源在哪裡 瀏覽:25
excel中命令按鈕 瀏覽:91
記錄儀安卓起動優化是怎麼回事 瀏覽:659
java1970毫秒 瀏覽:445
程序員發家前景 瀏覽:750
linux伺服器類型 瀏覽:410
php免殺大馬在線 瀏覽:35
程序員珠海6000元工資 瀏覽:209
中國出名殘疾程序員 瀏覽:830
數控機床編程例子帶說明 瀏覽:447
我是女王pdf 瀏覽:651
python編程怎麼接私單 瀏覽:789
linux線程限制 瀏覽:762
課程app怎麼設計 瀏覽:113
javaxml序列化反序列化 瀏覽:859