2001編譯原理試卷

2001編譯原理試卷

ID:18471206

大?。?93.08 KB

頁數(shù):35頁

時(shí)間:2018-09-18

2001編譯原理試卷_第1頁
2001編譯原理試卷_第2頁
2001編譯原理試卷_第3頁
2001編譯原理試卷_第4頁
2001編譯原理試卷_第5頁
資源描述:

《2001編譯原理試卷》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、2001年編譯原理試題1.(10分)處于/*和*/之間的串構(gòu)成注解,注解中間沒有*/。畫出接受這種注解的DFA的狀態(tài)轉(zhuǎn)換圖。2.(10分)為語言L={ambn

2、0£m£2n}(即a的個(gè)數(shù)不超過b的個(gè)數(shù)的兩倍)寫一個(gè)LR(1)文法,不準(zhǔn)超過6個(gè)產(chǎn)生式。(若超過6個(gè)產(chǎn)生式,不給分。若所寫文法不是LR(1)文法,最多給5分。)3.(10分)構(gòu)造下面文法的LL(1)分析表。D?TLT?int

3、realL?idRR?,idR

4、e4.(15分)就下面文法S?(L)

5、aL?L,S

6、S·給出一個(gè)語法制導(dǎo)定義,它輸出配對(duì)括號(hào)的個(gè)數(shù)?!そo出一個(gè)翻譯方案

7、,它輸出每個(gè)a的嵌套深度。如句子(a,(a,a)),第一小題的輸出是2,第二小題的輸出是122。5.(10分)Pascal語言for語句的含義見教材第222頁習(xí)題7.13。請(qǐng)為該語句設(shè)計(jì)一種合理的中間代碼結(jié)構(gòu)。你可以按第215頁圖7.17的方式或者第219頁圖7.19的方式寫出你的設(shè)計(jì),不需要寫產(chǎn)生中間代碼的語法制導(dǎo)定義。6.(5分)一個(gè)C語言程序如下:func(i1,i2,i3)longi1,i2,i3;{longj1,j2,j3;printf("Addressesofi1,i2,i3=%o,%o,%o",&i1,&i2,&i

8、3);printf("Addressesofj1,j2,j3=%o,%o,%o",&j1,&j2,&j3);}main(){longi1,i2,i3;func(i1,i2,i3);}該程序在某種機(jī)器的Linux上的運(yùn)行結(jié)果如下:Addressesofi1,i2,i3=27777775460,27777775464,27777775470Addressesofj1,j2,j3=27777775444,27777775440,27777775434從上面的結(jié)果可以看出,func函數(shù)的3個(gè)形式參數(shù)的地址依次升高,而3個(gè)局部變量的地址依

9、次降低。試說明為什么會(huì)有這個(gè)區(qū)別。7.(15分)一個(gè)C語言程序及其在某種機(jī)器linux操作系統(tǒng)上的編譯結(jié)果如下。根據(jù)所生成的匯編程序來解釋程序中四個(gè)變量的作用域、生存期和置初值方式等方面的區(qū)別。staticlongaa=10;shortbb=20;func(){staticlongcc=30;shortdd=40;}.file"static.c".version"01.01"gcc2_compiled.:.data.align4.typeaa,@object.sizeaa,4aa:.long10.globlbb.align2.typ

10、ebb,@object.sizebb,2bb:.value20.align4.typecc.2,@object.sizecc.2,4cc.2:.long30.text.align4.globlfunc.typefunc,@functionfunc:pushl%ebpmovl%esp,%ebpsubl$4,%espmovw$40,-2(%ebp).L1:leaveret.Lfe1:.sizefunc,.Lfe1-func.ident"GCC:(GNU)egcs-2.91.6619990314/Linux(egcs-1.1.2relea

11、se)"8.(10分)C語言是一種類型語言,但它不是強(qiáng)類型語言,因?yàn)榫幾g時(shí)的類型檢查不能保證所接受的程序沒有運(yùn)行時(shí)的類型錯(cuò)誤。例如,編譯時(shí)的類型檢查一般不能保證運(yùn)行時(shí)沒有數(shù)組越界。請(qǐng)你再舉一個(gè)這樣的例子說明C語言不是強(qiáng)類型語言。9.(10分)如果在A機(jī)器上我們有C語言編譯器CCA,也有它的源碼SA(用C語言寫成)。如何利用它通過盡量少的工作來得到B機(jī)器的C語言編譯器CCB。10.(5分)表達(dá)式(lx.(lyz.(x+y)+z)3)45和(lx.(lyz.(x+y)+z)35)4有同樣的結(jié)果。在抽象機(jī)FAM上,哪一個(gè)表達(dá)式對(duì)應(yīng)的目標(biāo)代

12、碼的執(zhí)行效率高?為什么?2001年編譯原理試題參考答案1.124start52othersothers/***/2.LR(1)文法LR(1)文法二義文法S?AB

13、aABbS?ABS?AASb

14、eA?aaAb

15、eA?aaAb

16、ab

17、eA?a

18、eB?Bb

19、eB?Bb

20、e3.intrealid,$DD?TLD?TLTT?intT?realLL?idRRR?,idRR?e4.S¢?Sprint(S.num)S?(L)S.num:=L.num+1S?aS.num:=0L?L1,SL.num:=L1.num+S.numL?SL.num:=S.n

21、umS¢?{S.depth:=0}SS?{L.depth:=S.depth+1}(L)S?a{print(S.depth)}L?{L1.depth:=L.depth}L1,{S.depth:=L.depth}SL?{S.depth:=

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。