編譯原理期末總復(fù)習(xí)題_第1頁
編譯原理期末總復(fù)習(xí)題_第2頁
編譯原理期末總復(fù)習(xí)題_第3頁
編譯原理期末總復(fù)習(xí)題_第4頁
編譯原理期末總復(fù)習(xí)題_第5頁
免費預(yù)覽已結(jié)束,剩余20頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第八節(jié)習(xí)題-、 單項選擇題1、將編譯程序分成若干個“遍”是為了 ba .提高程序的執(zhí)行效率b .使程序的結(jié)構(gòu)更加清晰c .利用有限的機器內(nèi)存并提高機器的執(zhí)行效率d .利用有限的機器內(nèi)存但降低了機器的執(zhí)行效率2、構(gòu)造編譯程序應(yīng)掌握 d。a .源程序b.目標(biāo)語言c .編譯方法d.以上三項都是3、變量應(yīng)當(dāng)c 。a .持有左而b.持有右值c .既持有左值又持有右值d.既不持有左值也不持有右值4、編譯程序絕大多數(shù)時間花在 b 上。a .出錯處理b.詞法分析c .目標(biāo)代碼生成d.管理表格5、d 不可能是目標(biāo)代碼。a .匯編指令代碼b.可重定位指令代碼c .絕對指令代碼d.中間代碼6、使用 a可以定義一個程

2、序的意義。b.詞法規(guī)則d.詞法規(guī)則a oa .語義規(guī)則c .產(chǎn)生規(guī)則7、詞法分析器的輸入是a .單詞符號串c .語法單位8、中間代碼生成時所遵循的是a .語法規(guī)則c.語義規(guī)則9、編譯程序是對 d。a .匯編程序的翻譯c .機器語言的執(zhí)行10、語法分析應(yīng)遵循 ba .語義規(guī)則c.構(gòu)詞規(guī)則解答b.源程序d.目標(biāo)程序-d。b.詞法規(guī)則d.等價變換規(guī)則b.高級語言程序的解釋執(zhí)行d.高級語言的翻譯b.語法規(guī)則d.等價變換規(guī)則1、將編譯程序分成若干個“遍”是為了使編譯程序的結(jié)構(gòu)更加清晰,故選bo2、構(gòu)造編譯程序應(yīng)掌握源程序、目標(biāo)語言及編譯方法等三方面的知識,故選do3、對編譯而言,變量既持有左值又持有右值

3、,故選c。4、編譯程序打交道最多的就是各種表格,因此選do3種,因此不是目標(biāo)代碼5、目標(biāo)代碼包括匯編指令代碼、可重定位指令代碼和絕對指令代碼 的只能選doa。6、詞法分析遵循的是構(gòu)詞規(guī)則,語法分析遵循的是語法規(guī)則,中間代碼生成遵循的是語義規(guī) 則,并且語義規(guī)則可以定義一個程序的意義。因此選7 、b 8 、c 9 、d 10 、c、多項選擇題1、編譯程序各階段的工作都涉及到bca .語法分析b.表格管理d .語義分析e.詞法分析2、編譯程序工作時,通常有 abcec.出錯處理d解答1. b、c.詞法分析.語義檢查2. a 、b、c、階段。b.語法分析語義分析? c.中間代碼生成e.目標(biāo)代碼生成中間

4、代碼優(yōu)化三、填空題解釋不產(chǎn)生目標(biāo)程序,邊翻譯邊執(zhí)1 、解釋程序和編譯程序的區(qū)別在于是否生成目標(biāo)程序( 行。、語法分析語義分析中間代碼生2、編譯過程通常可分為 5個階段,分別是 詞法分析、代碼優(yōu)化和目標(biāo)代碼生成。3、編譯程序工作過程中,第一段輸入是源程序,最后階段的輸出為目標(biāo)程序 程序。4、編譯程序是指將 解答 是否生成目標(biāo)程序2、源程序詞法分析程序翻譯成目標(biāo)程序程序的程序。中間代碼生成3、源程序標(biāo)語言目標(biāo)代碼生成4、源程序、單項選擇題1、文法G: SH>xSx|y所識別的語言是a. xyxb. (xyx)*c. xOyx n(n > 0)d. x*yx*(是指多個x)2、文法G描述

5、的語言L(G)是指aba. L(G)= a|S?c. L(G)= a |S?3、有限狀態(tài)自動機能識別a. 上下文無關(guān)文法c.正規(guī)文法4、設(shè)G為算符優(yōu)先文法,a.若 f(a)>g(b),則c. ab都不一定成立a £ Vt*a 6 (VtU Vn*)_ _ _ * b. L(G)= a |S ? d. L(G)= a |S +V* (VtU Vn*)Ob.上下文有關(guān)文法d.短語文法G的任意終結(jié)符對a、b有以下關(guān)系成立a>b b.若 f(a)<g(b),貝U a<bd. ab 一定成立5、如果文法 G是無二義的,則它的任何句子aa.b.c.d.最左推導(dǎo)和最右推導(dǎo)對

6、應(yīng)的語法樹必定相同最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹可能不同最左推導(dǎo)和最右推導(dǎo)必定相同可能存在兩個不同的最左推導(dǎo),但它們對應(yīng)的語法樹相同6、由文法的開始符經(jīng)0步或多步推導(dǎo)產(chǎn)生的文法符號序列是a.短語b.句柄c.句型d.句子7、文法 G:E+T|T T- T*P|P A (E)|I則句型P+T+i的句柄和最左素短語為+T 和 i b. P 和 P+T c. i 和 P+T+i8 、設(shè)文法為:S- SA|Aaba, a. S卜囹SA是規(guī)范推導(dǎo)。abaSAA AAAaAA abAb. SSASAA AAAAAa Abaabac. SSASAA SAaSba Abaabad. SSASa SAaSba A

7、baabaAf a|b則對句子9、文法G:Sf b| A (T) T一 T,S|S貝U FIRSTVT(T)a. b, A,( b. b, A ,)c.b, A,(, , d.b, A ,), , 10、產(chǎn)生正規(guī)語言的文法為a. 0型b.1型11、采用自上而下分析,必須 。a.消除左遞歸b.消除布1歸12、在規(guī)范歸約中,用 來刻畫可歸約串。a.直接短語b.句柄13、有文法 G: E- E*T|TT- T+i|i句子1+2*8+6按該文法 G歸約,其值為 。a. 23 B. 42 c. 30 d. 1714、規(guī)范歸約指。a.最左推導(dǎo)的逆過可c.規(guī)范推導(dǎo)d.c. 2型c.消除回溯c.最左素短語d.

8、 3型d.提取公共左因子d.素短語b.最右推導(dǎo)的逆過程最左歸約的逆過程解答1 、選 c。2、選 a。3、選 Co4、雖然a與b沒有優(yōu)先關(guān)系,但構(gòu)造優(yōu)先函數(shù)后,a與b就一定存在優(yōu)先關(guān)系了。所以,由f(a)>g)(b) 或f(a)<g(b)并不能判定原來的 a與b之間是否存在優(yōu)先關(guān)系:故選c。5、如果文法G無二義性,則最左推導(dǎo)是先生長右邊的枝葉:對于 d,如果有兩個不同的是了左 推導(dǎo),則必然有二義性。故選 a。6、選 Co7、由圖2-8-1的語法樹和優(yōu)先關(guān)系可以看出應(yīng)選boE + F/Tx iE + T PIIT iIP#<- + - >+< i >#圖2-8-

9、1句型P+T+I的語法及優(yōu)先關(guān)系8、規(guī)范推導(dǎo)是最左推導(dǎo),故選 do9、由 T-T,和 T一( 得 FIRSTVT(T)=(, , );由 T一 S 得 FIRSTVT(S)? FIRSTVT(T),而 FIRSTVT(S)=b, A ,(;即因此選c。14 、bb.狀態(tài)轉(zhuǎn)換圖是一個有向圖 可以用狀態(tài)轉(zhuǎn)換圖表示FIRSTVT(T尸b, A ,(, , ;10、d 11、c 12 、b 13 、b二、多項選擇題1、下面哪些說法是錯誤的 。 a.有向圖是一個狀態(tài)轉(zhuǎn)換圖 c.有向圖是一個 DFA2、對無二義性文法來說,一棵語法樹往往代表了 。a.多種推導(dǎo)過程b.多種最左推導(dǎo)過程c. 一種最左推導(dǎo)過程d

10、.僅一種推導(dǎo)過程e. 一種最左推導(dǎo)過程3、如果文法G存在一個句子,滿足下列條件 之一時,則稱該文法是二義文法。a.該句子的最左推導(dǎo)與最右推導(dǎo)相同b.該句子有兩個不同的最左推導(dǎo) c.該句子有兩棵不同的最右推導(dǎo) d.該句子有兩棵不同的語法樹 e.該句子的語法樹只有一個4、有一文法G: SfABA 一aAb| £Bf cBd| £它不產(chǎn)生下面 集合。a. a nbmcndm|n,m >0b. ac. a nbmcmdn|n,m >0d. ae. a nbncndnln >05、自下而上的語法分析中,應(yīng)從 nbncmdmjn,m>0nbncmdmn,m>

11、;0開始分析。c.以單詞為單位的程序d.文法的開始符 e.句柄6、對正規(guī)文法描述的語言,以下型文法 型文法 c.解答 1、e、a、c 2、a、c、e 3、有能力描述它。上下文無關(guān)文法d.右線性文法b、c、d 4 、a、c 5 、b、 c 6e.左線性文法a、b、c、d、 ea.句型b.句子三、填空題O詞法分析器交給語法分析器的文法符號一定非終結(jié)符進行擴展。1、文法中的終結(jié)符和非終結(jié)符的交集是是,它一定只出現(xiàn)在產(chǎn)生式的 部。2T最左推導(dǎo)是指每次都對句型中的3、在語法分析中,最常見的兩種方法一定是 分析法,另一是 分析法。4、采用 語法分析時,必須消除文法的左遞歸。5、FF代表推導(dǎo)過程, 樹代表歸

12、約過程。6、自下而上分析法采用 、歸約、錯誤處理、 等四種操作。7、Chomsky把文法分為 種類型,編譯器構(gòu)造中采用 和 文法,它們分別產(chǎn)一答 生解.語言,并分別用 和 自動機識別所產(chǎn)生的語言。1IHX42終結(jié)符 右自下而上分析接受型3型上下文無關(guān)語言正規(guī)語言下推自動機有限四、判斷題1、文法SfaS|bR| e描述的語言是 (a|bc)*()RH c S2、在自下而上的語法分析中,語法樹與分析樹一定相同。()3、二義文法不是上下文無關(guān)文法。()4、語法分析時必須先消除文法中的左遞歸。()5、規(guī)范歸約和規(guī)范推導(dǎo)是互逆的兩個過程。()6、一個文法所有句型的集合形成該文法所能接受的語言。()解答1

13、 、對 2 、錯 3 、錯 4 、錯 5 、錯 6 、錯五、簡答題1、句柄2、素短語3、語法樹4、歸約5、推導(dǎo) 解答1 、句柄:一個句型的最左直接短語稱為該句型的句柄。2、素短語:至少含有一個終結(jié)符的素短語,并且除它自身之外不再含任何更小的素短語。3、語法樹:滿足下面 4個條件的樹稱之為文法 GS的一棵語法樹。每一終結(jié)均有一標(biāo)記,此標(biāo)記為VnU Vt中的一個符號;樹的根結(jié)點以文法 GS的開始符S標(biāo)記;若一結(jié)點至少有一個直接后繼,則此結(jié)點上的標(biāo)記為中的一個符號;若一個以A為標(biāo)記的結(jié)點有 K個直接后繼,且按從左至右的順序,這些結(jié)點的標(biāo)記分別為K,X2,,Xk,則 ZX1,X2,,Xk,必然是 G的

14、一個產(chǎn)生式。4、歸約:我們稱“ 丫 3直接歸約出aA3,僅當(dāng)A-丫 是一個產(chǎn)生式,且a、3 C (VnU Vt)*歸約過程就是從輸入串開始,反復(fù)用產(chǎn)生式右部的符號替換成產(chǎn)生式左部符號,直至文法開始符。5、推導(dǎo):我們稱a A 3直接推出“丫3, 即aAB 口丫3,僅當(dāng)A一 丫是一個產(chǎn)生式,且a、 3 C (VnU Vt)*。如果a i “2 an,則我們稱這個序列是從a1至a 2的一個推導(dǎo)。若存在一個從a ian的推導(dǎo),則稱a 1可推導(dǎo)出a n。推導(dǎo)是歸約的逆過程。六、問答題1、給出上下文無關(guān)文法的定義。解答一個上下文無關(guān)文法 G是一個四元式(Vt,Vn,S, P ),其中: VT是一個非空有限

15、集,它的每個元素稱為終結(jié)符號; VN是一個非空有限集,它的每個元素稱為非終結(jié)符號,VtAVn=; S是一個非終結(jié)符號,稱為開始符號; P是一個產(chǎn)生式集合(有限),每個產(chǎn)生式的形式是 P-a ,其中,PC X, a C (VtU Vn)*。開始符號S至少必須在某個產(chǎn)生式的左部出現(xiàn)一次。2、文法 GS:S 一 aSPQ|abQQA PQ bP- bb bQ 一 bc cCH cc(1)它是Chomsky哪一型文法?(2)它生成的語言是什么?解答(1)由于產(chǎn)生式左部存在終結(jié)符號,且所有產(chǎn)生式左部符號的長度均小于等于產(chǎn)生式右部的符號長度,所以文法 GS是Chomsky1型文法,即上下文有關(guān)文法。(2)

16、按產(chǎn)生式出現(xiàn)的順序規(guī)定優(yōu)先級由高到低(否則無法推出句子),我們可以得到:S abQ abcS aSPQ aabQPQ aabPQQ aabbQQ aabbcQ aabbccS aSPQ aaSPQPQ aaabQPQPQ aaabPQQPQ aaabPQPQQ aaaPPQQQ aaabbPqqq aaabbQQQ aaabbbcQQ aaabbbccQ aaabbbccc于是得到文法 GS生成的語言L=anbncn|n >13、按指定類型,給出語言的文法。L=a1 bj |j > i > 1的上下文無關(guān)文法?!窘獯稹?1)由L=aibj|j >i>1知,所求該語

17、言對應(yīng)的上下文無關(guān)文法首先應(yīng)有S 一 aSb型產(chǎn)生式,以保證b的個數(shù)不少于a的個數(shù);其次,還需有S-Sb或S-bS型的產(chǎn)生式,用以保證b的個數(shù)多于a的個數(shù);也即所求上下文無關(guān)文法GS為:GS : Sf aSb|Sb|b4、有文法 G: SfaAcB|BdZ AaB|cBf bScA|b(1)試求句型 aAaBcbbdcc和aAcbBdcc的句柄;(2)寫出句子 acabcbbdcc的最左推導(dǎo)過程?!窘獯稹?1)分別畫出對應(yīng)兩句型的語法樹,如圖 2-8-2所示句柄:AaB BdSA c BA/八 /7(b)圖2-8-2 語法樹(2)句子acabcbbdcc的最左推導(dǎo)如下:S aAcB aAaBc

18、B acaBcB acabcB acabcbScA acabcbBdcAacabcbbdcA5、對于文法GS:acabcbbdccS(1) 語?!窘獯稹?1)一 (L) |aS|a畫出句型(S,句型(S, (a)(2)L, S|S(a)的語法樹。(2)寫出上述句型的所有短語、直接短語、句柄和素短的語法樹如圖由圖2-8-3可知:S2-8-3 所示 /|(L )/ 短語:S、a、(a)、S,(a)、(S,(a);直接短語:a、S;句柄:S;a圖2-8-3 句型(S, (a)的語法樹素短語:素短語可由圖2-8-3中相鄰終結(jié)符之間的優(yōu)先關(guān)系求得,即;# <(<; < (< a&

19、gt; )> ) A #因此素短語為a。6、考慮文法GT:T-T*F|F FfFT P|P P-( T) |i證明t*pT(t*f)是該文法的一個句型,并指出直接短 【解答】語和句柄。首先構(gòu)造T*PT (T*F)的語法樹如圖2-8-4所示。由圖2-8-4 可知,T*PT (T*F)是文法 GT直接短語有兩個,即 P和T*F;句柄為P。的一個句型。I /l P )P2-8-4句型T*P T (T*F)的語法樹、單項選擇題1、詞法分析所依據(jù)的是 a.語義規(guī)則b.構(gòu)詞規(guī)則c.語法規(guī)則d.等價變換規(guī)則2、詞法分析器的輸出結(jié)果是 a.單詞的種別編碼c.單詞的種別編碼和自身值 3、正規(guī)式M1和M等價

20、是指b.單詞在符號表中的位置 d.單詞自身值a. M 1和M2的狀態(tài)數(shù)相等c. M 1和M2所識別的語言集相等b. M 1和M的有向弧條數(shù)相等d. M 1和M狀態(tài)數(shù)和有向弧條數(shù)相等Oa.以0開頭的二進制數(shù)組成的集合c.含奇數(shù)個0的二進制數(shù)組成的集合b.d.以0結(jié)尾的二進制數(shù)組成的集合 含偶數(shù)個0的二進制數(shù)組成的集合5、詞法分析器作為獨立的階段使整個編譯程序結(jié)構(gòu)更加簡潔、a.詞法分析器應(yīng)作為獨立的一遍b.明確,因此,詞法分析器作為子程序較好c.詞法分析器分解為多個過程,由語法分析器選擇使用d.詞法分析器并不作為一個獨立的階段4、狀態(tài)轉(zhuǎn)換圖(見圖 3-6-1 )接受的字集為用子集法構(gòu)造狀態(tài)轉(zhuǎn)換矩陣

21、表3-6-3所示。解答 1 、 b 2 、 c二、多項選擇題1、 a. d.2、在詞法分析中, 基本字 逆波蘭式 令匯=a,b,能識別出b.e.四元式 常數(shù)c.運算符則匯上所有以b開頭,后跟若干個a. b(ab)*d. (ba) +bb. b(ab)e. b(a|b)ab的字的全體對應(yīng)的正規(guī)式為 c.(ba)*b解答1、 a、c、e 2a、b、d、填空題1、確定有限自動機DFA是2、若二個正規(guī)式所表示的_的一個特例。相同,則認為二者是等價的。3、一個字集是正規(guī)的,當(dāng)且僅當(dāng)它可由解答1 四、判斷題、NFA 2、正規(guī)集 3、DFA (NFA)所識別1、一個有限狀態(tài)自動機中,有且僅有一個唯一終態(tài)。2

22、、設(shè)r和s分別是正規(guī)式,則有 L (r|s ) =L(r)|L(s)3、自動機M和M'的狀態(tài)數(shù)不同,則二者必不等價。4、確定的自動機以及不確定的自動機都能正確地識別正規(guī)集。5、對任意一個右線性文法6、對任意一個右線性文法7、對任何正規(guī)表達式8、對任何正規(guī)表達式e,e,解答1、2、3、錯4五、基本題G,都存在一個 NFA M,滿足L(G尸L(M)。G,都存在一個 DFA M 滿足L(G尸L(M)。 都存在一個 NFA M滿足L(G)=L(e)。 都存在一個 DFA M滿足L(G)=L(e)。、5、6、7、8、正確() ( ) ) ) )1、設(shè) M= (x,y, a,b, f,x,y f

23、(x,a ) f (y,a )為一非確定的有限自動機,其中定義如下:=x,y=4f (x,b) =yf (y,b ) = x,y試構(gòu)造相應(yīng)的確定有限自動機解答:對照自動機的定義M=(S, N,f,S o,Z),由f的定義可知f(x,a)、f(y,b)均為多值函數(shù),所以是一非確定有限自動機,先畫出NFA M相應(yīng)的狀態(tài)圖,如圖 3-6-2所示。II aI bxx,yyy一x,yx,yx,yx,y將轉(zhuǎn)換矩陣中的所有子集重新命名而形成表3-6-4所示的狀態(tài)轉(zhuǎn)換矩陣。表3-6-4 狀態(tài)轉(zhuǎn)換矩陣ab0211一2222即得到M, *,10, 如f,0, 1,2),其狀態(tài)轉(zhuǎn)換圖如圖3-6-5所示。1,2:令狀

24、態(tài)1代表1,2,即把原來到達2的弧都導(dǎo)向 所示化簡DFA M'。ab圖3-6-6 化簡后的DFA M'2、對給定正規(guī)式 b* (d|ad ) ( b|ab ) +,構(gòu)造其 NFA M; 解答:首先用 A+=AA改造正規(guī)式得:b*(d|ad)(b|ab)(b|ab) 3-6-7所示。 *b(d|ad)(b|ab)(baqb* C)(d|ad.1 2)(b|ab.( 甘d 口 hwQt:4c1XI£j; adab& MEL aMfe1,并刪除狀態(tài)2。最后,得到如圖3-6-6;其次,構(gòu)造該正規(guī)式的 NFA M,如圖01-b二 M d X 0a將圖3-6-5的DFA

25、M最小化。首先,將M'的狀態(tài)分成終態(tài)組1 , 2與非終態(tài)組0;其次,考察1,2。由于1,2a=1,2b=2? 1,2,所以不再將其劃分了,也即整個劃分只有兩組0,圖 3-6-7 的 NFA M1、構(gòu)造下面文法的LL (1)分析表。A TLT一 int | realL 一 id RRH , id R |£解答:LL (1)分析表見表4-3-1分析 雖然這個文法很簡單,我們還是從求開始符號集合和后繼符號集合開始。FIRST (D) =FIRST (T) =int, real FOLLOW D =FOLLOW L) =#FIRST (L) =idFOLLOW T =idFIRST

26、( R = , , s FOLLOW R) =#有了上面每個非終結(jié)符的FIRST集合,填分析表時要計算一個產(chǎn)生式右部”的FIRST (a)就不是件難事了。填表時唯一要小心的時,£ 是產(chǎn)生式 Ae右部的一個開始符號,而 # FOLLOW R)中,所 以 -e填在輸入符號#的欄目中。表4-3-1 LL (1)分析表非終結(jié)符輸入符號intrealid#DA TLA TLTT- intT一 realLLfid RRRf ,id RR- £2、 下面文法GS是否為LL (1)文法?說明理由。S 一 A B | P Q xA 一 x y B 一 b cP 一 d P | eQ 一 a

27、Q | e解答:該文法不是LL (1)文法,見下面分析中的說明。分析只有三個非終結(jié)符有兩個選擇。1 、P的兩個右部d P和e的開始符號肯定不相交。2、Q的兩個右部a Q和e的開始符號肯定不相交。3、對S來說,由于 x C FIRST(A B),同時也有 x C FIRST(P Q x)(因為P和Q都可能為空) 所以該文法不是 LL (1)文法。3、 設(shè)有以下文法:GS : Sf aAbDe|dA 一 BSD|e B f SAc| cD| £ D 一 Se| e(1)求出該文法的每一個非終結(jié)符U的FOLLOW!。(2)該文法是 LL(1)文法嗎?(3)構(gòu)造CS的LL (1)分析表。解答

28、: (1)求文法的每一個非終結(jié)符U的FOLLOW!的過程如下:因為:S是識別符號,且有 Z BSD BfSAc、Df Se,所以FOLLOW S)應(yīng)包含 FIRST(D) U FIRST(Ac) U FIRST(e) U # =a,d Ua,d,c,e U e U # =a,c,d,e#又因為A-BSD和 Ae,所以 FOLLOW還包含 FOLLOW(A) 因為S- aAbDe和B-SAc,所以 FOLLOW A) =FIRST (bDe) U FIRST ( c) =b,c綜合、得 FOLLOWS) =a,d,c,e,# U a,b,c,d,e,# 因為 A- BSQ 所以 FOLLOW (

29、 B) =FIRST (SD)=a,d 因為 S- aAbDe | d、A- BSD| e 和 B- SAc | cD ,所以FOLLOW D) =FIRST (e) U FOLLOW A) U FOLLOWS B)=e U b,c U a,d=a,b,c,d,e(2) GS不是 LL (1)文法。因為產(chǎn)生式Bf SAc|cD| £中FIRST(SAc) n FOLLOWS B) =a,d w?(3)構(gòu)造GS的LL (1)分析表。按照LL (1)分析表的構(gòu)造算法構(gòu)造方法GS的LL (1)分析表如表4-3-2所示。表4-3-2 GS 的LL (1)分析表abcde#SaAbDedABS

30、DBSDBSDeBSac/ ecDSac/ eDSe/ e££Se/ e£4、 將文法GV改造成為LL(1)的。GV : " N|NEE一 V|V+EN一 i解答: 對文法GV提取公共左因子后得到文法:G ' V : V- NA2 £ |EVBBf s |+ENR i求出文法 G V中每一個非終結(jié)符號的FIRST集:FIRST(V)=iFIRST(A)=,£ FIRST(E)=iFIRST(B尸+,£ FIRST(N)=i求出文法G V中每一個非終結(jié)符號的FOLLOW!:FOLLOW(V)=# U FIRST(B)

31、£ U FOLLOW(E尸#,+,FOLLOW(A)= FOLLOW(V尸+,#FOLLOW(E尸 FIRST() £ U FOLLOW(B)= FIRST() £ U FOLLOW(E)=FOLLOW(B)= FOLLOW(E尸 FOLLOW(N)= FIRST(A) £ U FOLLOW(V尸,+,#可以看到,對文法 G' V的產(chǎn)生式A- s |E,有 FIRST(E) A FOLLOW(A)= n +,#=?對產(chǎn)生式B- e |+E ,有FIRST(+E) A FOLLOW(B尸+ A = ?而文法的其他產(chǎn)生式都只有一個不為£的右

32、部,所以文法G' V是LL(1)文法。5、已知文法:GA :A- aAa| £(1)該文法是LL (1)文法嗎?為什么?(2)若采用LL (1)方法進行語法分析,如何得到該文法的LL (1)分析表?(3)若輸入符號串“ aaaa”,請給出語法分析過程。解答:(1)因為產(chǎn)生式 A- aAa| £有空產(chǎn)生式右部,而 FOLLOW(A)=# U FIRST(a尸a, #造成 FIRST(A) n FOLLOW(A尸A,£ n a, # w?所以該文法不是 LL (1)文法。(2)若采用LL (1)方法進行語法分析,必須修改該文法。因該文法產(chǎn)生偶數(shù)(可以為0)個a

33、,所以得到文法G A :Z aaA| £此時對產(chǎn)生式 A- aaA| s , 有 FOLLOW(A尸# U FOLLOW(A)=#,因而 FIRST(A) n FOLLOW(A尸a,£ n #= ?所以文法G A是LL (1)文法,按LL (1)分析表構(gòu)造算法構(gòu)造該文法的LL (1)分析表如表4-3-3所示。表4-3-3文法G A的LL(1)分析表A#AA一 aaAA- £(3)若采用LL(1)方法進行語法分析,對符號串“aaaa”的分析過程如表 4-3-4所示。表4-3-4對符號串“ aaaa”的分析過程步驟分析棧輸入串產(chǎn)生式/動作1#Aa a a a #Z a

34、aA2#A a aa a a a #匹配3#A aa a a #匹配4#Aa a #Z aaA5#A a aa a #匹配6#A aa#匹配7#A#Ar> £8#接受第七節(jié)習(xí)題設(shè)有義法GS為:Sf a|b|(A)ab()d#a?b?(?)?d#?5-7-1 ,并判斷GS是否為算符優(yōu)先文法。算符優(yōu)先關(guān)系表2 SdA|S完成下列算符優(yōu)先關(guān)系表,見表表 5-7-1(2)給出句型(SdSdS)的短語、簡單短語、句柄、素短語和最左素短語。(3)給出輸入串(adb) #的分析過程。(1)解答:(1)先求文法 G網(wǎng)的FIRSTVT集和LASTVT集:由 S-a|b|(A)得:FIRSTVT(

35、S尸a,b,();由 A一 Sd 得:FIRSTVT(A)=d;又由 A一 S 得:FIRSTVT(S) ? FIRSTVT(A),即 FIRSTVT(A尸d,a,b,(;由 S-a|b|(A)得;LASTVT(S)=a,b,;由 A 一 dA 得:LASTVT(A)=d,又由 A - S 得:LASTVT(S) ? LASTVT(A),即 LASTVT(A)=d,a,b,)。構(gòu)造優(yōu)先關(guān)系表方法如下:對ab,或4aQb,有a? b;對aR,而 bC FIRSTVT(R),有 a? b;對Rt> -,而 aC FIRSTVT(R),有 a? b。由此得到:由 S一 (A)得:(?); 由

36、S一(A得:(? FIRSTVT(A),即:(? d,( ? a ,( ? b,( ?(;由 A一dA得:d? FIRSTVT(A), 即:d? d,d ? a,d ? b,d ?(; 由 Sf A)得,LASTVT(A)?),即:d? ),a ? ),b ? ),) ?);由 A-Sd得:LASTVT(S)? d,即:a ? d,b ? d,) ? d;此外,由 #S#W: #? #;由#? FIRSTVT(S)得:#? a,# ? b,# ?(;脂由 LASTVT(S)? #得:d? #,a ? #,b ? #,) ? #。最后得到算符優(yōu)先關(guān)系表,見表5-7-2 。表5-7-2算符優(yōu)先關(guān)系

37、表ab()d#a?b?(?)?d?#?由表5-7-2可以看出,任何兩個終結(jié)符之間至少只滿足?、?、?三種優(yōu)先關(guān)系之一,故 GS為算符優(yōu)先文法。(2)為求出句型(SdSdS)的短語、簡單短語、句柄,我們先畫出該句型對應(yīng)的語法樹,如圖 5-7-3所示。由圖5-7-3得到:短語:S, SdS, SdSdS (SdSdS)簡單短語(即直接短語):S句柄(即最左直接短語):S素短語:SdS,它同時也是該句型的最左素短語。(3)輸入串(adb) #的分析過程見表 5-7-4表5-7-4 輸入串(adb) #的分析過程符號棧輸入串說明#(adb)#移進# (adb)#移進# (adb)#用Sfa歸約# (S

38、db)#移進# (Sdb)#移進# (Sdb)#用Sfb歸約# (SdS)#用A-S歸約# (SdA)#用SdA歸約# (A)#移進# (A)#用S-( A)歸約#S#分析成功第四節(jié) 習(xí)題一、單項選擇題1、若a為終結(jié)符,則A-“ ap為 項目a. 歸約b.移進c.接受d.待約2、若項目集Ik含有A-a ,則在狀態(tài)k時,僅當(dāng)面臨的輸入符號 aCFOLLOW(A時,才采取“A 一 a ”動作的一定是。文法 (0)文法 (1)文法 (1)文法3、就文法的描述能力來說,有 一。a. SLR (1) ? LR (0) b. LR (1) ? LR (0) c. SLR (1) ? LR (1) d.無二

39、義文法? LR ( 1)4、在LR (0)的ACTION子表中,如果某一行中存在標(biāo)記“ 門”的欄,則 。a.該行必定填滿口b.該行未填滿rjc.其他行也有口子表中也有rj5、一個 指明了在分析過程中的某時刻所能看到產(chǎn)生式多大一部分。a.活前綴b.前綴c.項目d.項目集解答:1 、Aa 稱為歸約項目,對文法開始符 S'的歸約項目,如S' a 稱為接受項目,A- a a 3(a為終結(jié)符)稱為移進項目。在此選 b.2、當(dāng)用產(chǎn)生式 A-a歸約時,LR (0)無論面臨什么輸入符號都進行歸約;SLR (1)則僅當(dāng)面臨的輸入符號aCFOLLOW(A時進行歸約;LR (1)則當(dāng)在把 “歸約為A

40、的規(guī)范句型的前綴 3 Aa前 提下,當(dāng)“后跟終結(jié)符a時,才進行歸約;因此選 do3、由于 LR (0) ? SLR (1) ? LR (1) ?無二義文法,故選 c。4、選 a。5、選 Co 二、多項選擇題1、一個LR分析器包括。a. 一個總控程序 b. 一個項目集c. 一個活前綴d. 一張分析表 e. 一個分析棧2、LR分析器核心部分是一張分析表,該表包括等子表。分析 b.優(yōu)先關(guān)系3、每一項ACTIONS a所規(guī)定的動作包括。a.移進 b.比襄 c.接受 d.歸約 e.報錯4、對LR分析表的構(gòu)造,有可能存在 動作沖突。a.移進 b.歸約c.移進/歸約d.移進/移進e.歸約/歸約5、就文法的描

41、述能力來說,有 。a. SLR (1) ? LR (1) b. LR (1) ? SLR (1)c. LR (0) ? LR (1)d. LR (1) ?無二義文法 e. SLR (1) ?無二義文法6、對LR分析器來說,存在 等分析表的構(gòu)造方法。(0)(1)(0)(1)7、自上而下的語法分析方法有 。a.算符優(yōu)先分析法(1)分析法(1)分析法(0)分析法(1)分析法解答:1 、一個LR分析器包括一個總控程序和一張分析表,選 a、d。2、選 c、 e。3、選 a、c、d、e。4、在LR分析表的構(gòu)造中有可能存在“移進”/“歸約”和“歸約” / “歸約”沖突;故選 c、e。5、選 a、b、c、d、

42、e。6、選 a、b、c、e。7、選 a、c、d、e。三、填空題1、對于一個文法,如果能夠構(gòu)造。使得它的均是唯一確定的,則稱該文法為LR文法。2、字的前綴是指該字的 。3、活前綴是指 的一個前綴,這種前綴不含 之后的任何符號。4、在LR分析過程中,只要 的已掃描部分保持可歸約成一個 ,則掃描過的部分正確。5、將識別 的NFA確定化,使其成為以 為狀態(tài)的DFA這個DFA就是建立 的基礎(chǔ)。6、A-> a ,稱為項目;對文法開始符 S' -> a 為項目;若a為終結(jié)符,則稱A- a , a 3為 項目;若B為誣結(jié)符,則稱 A-a ap為 而:7 、LR (0)分析法的名字中“ L”

43、表示, "R'表示, “0”表示 解答:1 、一張分析表每個入口2、任意首部3、規(guī)范句型句柄4、輸入串 活前綴5、活前綴 項目集合LR分析算法6、歸約接受移進待約7、自左至右分析采用最右推導(dǎo)的逆過程即最左歸約向右查看0個字符四、綜合題1、對于文法 GS : SfAS|bAf SA|a(1)列出所有LR (0)項目(2)列出構(gòu)成文法 LR (0)項目集規(guī)范族。解答:首先將文法G拓廣為GS':S' 一 S項目是:5、S一 AS ,6、Sf b9、2 S - A10、A-SA-Sf AS|b Z SA|a (1)文法 GS'的 LR (0)1、S'

44、一 - S2、S' 一 S 3、S一 , AS7、S一 b ,11、Af a8、Af SA2、列出構(gòu)成文法 LR (0)項目集規(guī)范族。用e -CLOSURE閉包)辦法構(gòu)造文法 G'白L LR (0)項目集規(guī)范族如下:0:1、S' 一 - SI 3: 9、Af S - A16: 12、Aa3、Sf AS8、Af SA17: 7、Sf b -8、Af SA3、Sf AS11、A一 a6、S 一 - b6、Sf , b11、2 . a1:2、S' -S-I 4: 10、ZSA-9、Af S - A4、SfA - S8、Z - SA3、Sf - AS11、A一 a6、S

45、 一 - b3、Sf AS8、Af SA6、Sf b11、Z . a2:4、Sf A- SI 5 :5、S-AS-3、Sf AS9、Af S - A6、Sf b8、Af SA8、Af SA11、Z . a11 、A一 a3、Sf - AS6、S 一 , b注意:Il中的S' -S 和A一 SA是由狀態(tài)I。中的1和3讀入一個S字符后得到的下一個項目;, 而I4中的A- SA和A- A- S則是由I3中的9和3讀入一個A字符后得到的下一個項目;、中的S 一AS和A- S- A 則是由I4中的4和8讀入一個S字符后得到的下一個項目。狀態(tài)全體構(gòu)成了文法 G'白L LR (0)規(guī)范族。第

46、八節(jié) 習(xí)題、單項選擇題d.等價變換規(guī)則d.程序變量+b+c/d1、中間代碼生成所依據(jù)的是。a.語法規(guī)則b.詞法規(guī)則c.語義規(guī)則2、四元式之間的聯(lián)系是通過 實現(xiàn)的。a.指示器b.臨時變量c.符號表3、后綴式ab+cd+/可用表達式 來表示。+b/c+db.(a+b)/(c+d)+b/(c+d)4、表達式 3 AV B) A ( CV D)的逆波蘭表示為 。a. r ABV A CDMb. A n BV CDV Ac. AB Vr CDV Ad. A r BV A CDV5、中間代碼的樹型表示A B C D所對應(yīng)的表達式為+B+C+D +(B+C)+Dc.(A+B)+C+Dd.(A+B)+(C+D

47、)6、四元式表示法的優(yōu)點為 。a.不便于優(yōu)化處理,但便于表的更動c.便于優(yōu)化處理,也便于表的更動7、終結(jié)符具有 屬性。a.傳遞b.繼承解答1 、選 c。b.不便于優(yōu)化處理,但節(jié)省存儲空間 d.便于表的更動,也節(jié)省存儲空間c.抽象d.綜合2、四元式之間的聯(lián)系是通過臨時變量實現(xiàn)的,故選bo3、選 bo4、選 bo5、選d6、四元式表示法的優(yōu)點與間接三元式相同,故選c。7、選 do、多頂選擇題1、中間代碼主要有a.四元式d.后綴式e.間接三元式2、下面中間代碼形式中,能正確表示算術(shù)表達式a+b+c的有a. ab+c+b. abc+ c.+/ + c / a b+a + /.a+b+c3、在下面的a.

48、賦值語句語法制導(dǎo)翻譯中,采用拉鏈b c-回填技術(shù)。b. goto語句 c .條件語句4、下列中間代碼形式有益于優(yōu)化處理。a.三元式b.四元式 c.間接三元式d.逆波蘭表示法e.樹形表示法5、在編譯程序中安排中間代碼生成的目的是。b.利于目標(biāo)代碼的優(yōu)化d.利于目標(biāo)代碼的移植能正確表示算術(shù)表達式a+b*c。題)a.便于進行存儲空間的組織c.利于編譯程序的移植e.利于提高目標(biāo)代碼的質(zhì)量a. ab+c*b. abc*+6、下面的中間代碼形式中, 7、三地址代碼語句具體實現(xiàn)通常有 表示方法。a.逆波蘭表示b.三元式 c.間接三元式d.樹形表示e.四元式解答1、選 a、c、d、e。2、b、d的中間代碼不能

49、正確表示 a+b+c,而e不是中間代碼:故選 a、c。3、凡涉及到跳轉(zhuǎn)的語句都需要采用拉鏈一一回填技術(shù),故選 b、c、do4、選 b、c5、選 b、do6、選 b、 e。7、選 b、c、e。三、填空題1、中間代碼有 等形式,生成中間代碼主要是為了使 。2、語法制導(dǎo)翻譯既可以用來產(chǎn)生 代碼,也可以用來產(chǎn)生 指令,甚至可用來對輸 入串進行。3、當(dāng)源程序中的標(biāo)號出現(xiàn)“先引用后定義”時,中間代碼的轉(zhuǎn)移地址須持 時才能確定, 因而要進行。4、文法符號的屬性有兩種,一種稱為 ,另一種稱為 。5、后綴式abc-/所代表的表達式是 ,表達式(a-b)*c 可用后綴式 表示。6、用一張 輔以 的辦法來表示中間代

50、碼,這種表示法稱為間接三元式。解答1、逆波蘭記號、樹形表示、三元式、四元式目標(biāo)代碼的優(yōu)化容易實現(xiàn)2、中間3、標(biāo)號定義4、繼承屬性5、a/(b-c)6、間接碼表 四、綜合題目標(biāo)解釋執(zhí)行回填綜合屬性ab-c*三兀式表1、給出下列表達式的逆波蘭表示(后綴式) a*(-b+c)(A V B) A (CVrDA E)2、寫出算術(shù)表達式: A+B*(C-D)+E/(C-D) TN的四元式序列;三元式序列;間接三元式序列 解答1、 abc+*; AB V CD EA V A2、表達式的四元式序列:(1) (-,C,D,T i) (*,B,T i,T2) (3) (+,A,T 2,T3) (4) (-,C,D,T 4) (5) ( T ,T4,N,T 5)(/,E,(4)(6) (/,E,T5,T6)(+,(3),(5)第三節(jié)一、單項選擇題1、編譯程序使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論