資源描述:
《2001級編譯原理試題(B)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、2001級編譯原理試題(B)2003.12一、簡答題(60分)1.編譯程序在邏輯上由哪幾部分組成?六個階段:詞法分析,語法分析,語義分析,中間代碼生成,中間代碼優(yōu)化和目標代碼生成。2.編譯程序和解釋程序有哪些區(qū)別?解釋程序是源程序的一個執(zhí)行系統(tǒng),而編譯程序是源程序的一個轉(zhuǎn)換系統(tǒng);解釋器直接由源程序得到運行結(jié)果,而編譯器是生成等價于源程序的某種目標機程序。3.給出能被3整除的二進制數(shù)表示形式的正則定義。Sà0A
2、1BAà0A
3、1B
4、0Bà0C
5、1A
6、1Cà0B
7、1C4.給出識別正則表達式((a
8、bc)*
9、d)+的NFA。5.已知文法G[S]:S→S;G│GG→G(T)│HH→a│(S)T→T+S│S找出句型:a(T+S);H;(S)的短語、簡單短語和句柄。短語:a,T+S,a(T+S),H,a(T+S);H,(S)簡單短語:a,T+S,H,(S)句柄是a.6.已知文法G[S]為:S→AB
10、bCA→b
11、λB→aD
12、λC→AD
13、bD→aS
14、c對其每一個非終級符求First集和Follow集。First(S)={b,a,λ}First(A)={b,λ}First(B)={a,λ}First(C)={b,a,
15、c}First(D)={a,c}Follow(S)={#}Follow(A)={a,c,#}Follow(B)={#}Follow(C)={#}Follow(D)={#}7.什么是過程的活動記錄?過程活動記錄存儲哪些信息?過程的活動記錄也就是過程的一個現(xiàn)場記錄。每當調(diào)用一個過程時,因為當前過程被中斷,需要保存現(xiàn)場,以便返回時執(zhí)行被中斷了的過程,為此要保存一些信息,這些信息就是放在過程的活動記錄內(nèi)。過程活動記錄存儲的信息:過程控制信息:包括返回地址、先行活動記錄的動態(tài)鏈指針、層數(shù)和長度等。機器控制信息:
16、包括寄存器狀態(tài)等過程中斷時的機器狀態(tài)。全局變量信息:包括有關(guān)訪問非局部變量的信息。局部變量值:包括形參變量、局部變量、和臨時變量的值。8.設(shè)對偶表(L,N)分別表示程序在當前位置的層數(shù)和偏移量,確定下面程序段中括號部分的內(nèi)容。假設(shè)系統(tǒng)規(guī)定整型(int)變量占2個單元,實型(real)變量占4個單元。(L,N)Typeat=arrayof[1..10]ofint;()varx:real;()functionf((?,M)vara:at,()b:at,()varx:real):int()(L,N)()(L
17、,N+4)()(L+1,M+1)()(L+1,M+21)9.設(shè)有語言L(G)={WaWR
18、W∈{a,c}*,WR為W之逆},試構(gòu)造產(chǎn)生此語言的上下文無關(guān)文法G。G:SàaSa
19、cSc
20、a10.對下面文法S?(L)L?L,SS?aL?S給出一個翻譯方案,它輸出每個a的嵌套深度。如句子(a,(a,a)),輸出是122。Sà(L)SàaLàL,SLàS:k:=0;:k:=k+1;:k:=k-1;:print(k);11.什么
21、是Display表?它的作用是什么?Display表用來表示變量訪問環(huán)境,對于每一個AR,求出其變量訪問環(huán)境,并把它以地址表的形式(Display表)保存在AR中,這樣通過查詢Display表就可以找到變量。12.如下是當前執(zhí)行某個過程時的活動記錄,設(shè)變量x的層數(shù)和偏移量分別為L和Off,說明如何訪問變量x。局部Display表sp.............spDAdd(x)=[sp+D+L]+Off13.當實參為變量,形參分別為變參和值參時,傳參的區(qū)別。形參為變參時,AR中保存實參變量的地址,改變形
22、參即改變實參變量;形參為值參時,AR中保存形參變量,其初始值為實參的值,此后形參與實參沒有聯(lián)系。14.寄存器的使用準則有哪些?寄存器先行準則、寄存器活躍準則、寄存器多在準則。15.設(shè)有下面基本塊,試寫出各臨時變量的活動區(qū)間。(+,X,1,T1)[1](-,A,T1,T2)[2](*,Y,T2,T3)[3](-,T3,T1,T4)[4](T,T3,Y)[5](*,T3,T4,T5)[6](T,T5,Z)[7]各臨時變量的活動區(qū)間:T1:[1]~[4],T2:[2]~[3],T3:[3]~[6],T4:[
23、4]~[6],T5:[6]~[7]二、(10分)設(shè)有文法G[A]:A?iB*eB?SB
24、eS?[eC]
25、.iC?eC
26、e判定該文法是否為LL(1)文法?若是則給出它的LL(1)分析表,否則說明理由。先計算各個產(chǎn)生式的Predict集:Predict(A->iB*e)={i};Predict(B->SB)={[,.}Predict(B->e)={*}Predict(S->[eC])={[}Predict(S->.i)={.}Predict(C->eC)={