資源描述:
《04-05編譯原理及實(shí)踐(a)卷》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、該函數(shù)調(diào)用結(jié)束時(shí)的返回地址(00401353)四、(8分)文法G[S]的產(chǎn)生式如下:S->SaA
2、AA->AbB
3、BB->cSd
4、e1.證明AacAbcBaAdbed是文法G的一個(gè)句型;2.給出該句型的短語、直接短語和句柄。五、(10分)考慮文法G[S]:主調(diào)函數(shù)的控制鏈c:3V棧頂一、填空題(每空1分,共22分)1.編譯器的編譯過程一般包括了6個(gè)邏輯階段,它們分別是詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成。2.正規(guī)表達(dá)式是單詞的描述工具,用來定義描述單詞結(jié)構(gòu)(定義單詞)。有窮自動(dòng)機(jī)是單詞的識(shí)別系統(tǒng),作為
5、一種識(shí)別裝置,它能準(zhǔn)確地識(shí)別正規(guī)集,即識(shí)別正規(guī)式所表示的集合。3.Chomsky把文法及語言分為塵類,上下文無關(guān)文法是描述程序設(shè)計(jì)語言語法結(jié)構(gòu)的形式工具。4.給定文法A->bA
6、cc,則符號(hào)串①cc②bcbc③bcbcc④bccbcc⑤bbbcc中,①⑤是該文法所定義的句子。5.編譯過程中,語法分析器的任務(wù)是以詞法分析程序輸出的記號(hào)序列為輸入,分析源程序的語法結(jié)構(gòu),判斷它是否為相應(yīng)程序設(shè)計(jì)語言的合法程序,語法分析的結(jié)果表示為分析樹(parsetree)或語法樹(syntaxtree)。6.文法G只有遞規(guī)定義定義,L(G)中句子才是
7、無窮的。兩個(gè)文法等價(jià),當(dāng)且僅當(dāng)L(G1)=L(G2)o7.語法分析算法可分為自上而下分析法和自下而上分析法兩大類。(16)是從文法的開始符號(hào)出發(fā),反復(fù)使用文法的產(chǎn)生式,尋找與輸入符號(hào)串匹配的推導(dǎo)。仃7)是從輸入符號(hào)串開始,逐步進(jìn)行歸約,直至歸約到文法的開始符號(hào)。&規(guī)范句型每次規(guī)約的是句型的旬柄。9.文法符號(hào)的屬性有軽和繼承兩種。10.我們可以將包含了正規(guī)表達(dá)式的文本文件作為輸入,利用工具lex為我們自動(dòng)生成詞法分析程序。Yacc是一個(gè)語法分析器自動(dòng)生成器。11.語法分析算法可分為自上而下分析法和自下而上分析法兩大類。(16)是從文
8、法的開始符號(hào)出發(fā),反復(fù)使用文法的產(chǎn)生式,尋找與輸入符號(hào)串匹配的推導(dǎo)。(17)是從輸入符號(hào)串開始,逐步進(jìn)行歸約,直至歸約到文法的開始符號(hào)。二、(10)現(xiàn)給你一個(gè)程序設(shè)計(jì)語言的詞法和語法,要求你編寫詞法分析器和語法分析器,請(qǐng)分別試述你著手編寫詞法分析器和語法分析器的基本步驟。詞法分析器的構(gòu)造:正規(guī)式一NFA—DFA—最小DFA—編寫程序一測(cè)試三、(10)目標(biāo)代碼運(yùn)行吋,系統(tǒng)為日標(biāo)程序分配的存儲(chǔ)空間按用途可劃分為幾個(gè)部分?什么是活動(dòng)記錄?請(qǐng)給出C語言活動(dòng)記錄的內(nèi)容。系統(tǒng)為目標(biāo)程序分配的存儲(chǔ)空間按用途可劃分為:代碼區(qū)域,全程/靜態(tài)區(qū)域,棧
9、,自由空間,堆?;顒?dòng)記錄是:一段連續(xù)的存儲(chǔ)區(qū),用以存放過程的一次執(zhí)行所需要棧底的信息。C語言所調(diào)用函數(shù)的活動(dòng)記錄示例(函數(shù)調(diào)用分析中的舉例)S->AIBA->b
10、cB->(C)C->CS
11、S1.消除該文法的左遞歸。2.為消除左遞歸后的文法的非終結(jié)符構(gòu)造First集合和Follow集合。六、(6分)試述編譯程序過程中引入中間代碼的優(yōu)點(diǎn)。1.屮間代碼使編譯器更容易重定向:不同機(jī)器上的編譯器可以在已有前端的基礎(chǔ)上附加一個(gè)適合這這臺(tái)新機(jī)器的后端來生成。2.可以在中間代碼上進(jìn)行與機(jī)器無關(guān)的代碼優(yōu)化。七、(6分)通過下面文法給出的數(shù)的整數(shù)值(
12、它1屬性),寫出一個(gè)屬性文法:number-*numberdigit
13、digitdigit->0
14、l
15、2
16、3
17、4
18、5
19、6
20、7
21、8
22、9七、(6分)通過下面文法給出的十進(jìn)制數(shù)的浮點(diǎn)數(shù)值,寫出一個(gè)屬性文法(提示:使用一個(gè)屬性count計(jì)算小數(shù)點(diǎn)右面數(shù)字的個(gè)數(shù)):dnum->num.numnum->numdigit
23、digitdigit->0
24、l
25、2
26、3
27、4
28、5
29、6
30、7
31、8
32、9八、(每題5分,共20分)給定文法G[A]:A->(A)
33、a1.構(gòu)造文法G[S]的識(shí)別所有活前綴LR(1)項(xiàng)目的DFA。2.構(gòu)造相應(yīng)的LR(1)分析表。3.合并同
34、心集,構(gòu)造LALR(l)分析表4.寫出句子((a))的分析過程。九、(8分)假設(shè)if語句if-stmt—if(E)SIIif(E)SIelseS2生成下面的三地址碼模式:if_falsetlgotoLIgotoL2labelLIlabelL2while語句while-stmt-^while(E)S生成下面的三地址碼模式:labelLIif_fa.lsetlgotoL2gotoLIlab
35、elL2試寫出語句if(true)while(true)if(true)breakelseother生成的三地址碼序列:(注:對(duì)于other語句其對(duì)應(yīng)的三地址碼可直接翻譯成other,if-else語句滿足最近嵌套規(guī)則)二、(10)寫出一個(gè)生成與下