編譯原理試題及參考答案
試題是學(xué)好編譯原理的重要依據(jù)。以下是陽光網(wǎng)小編要與大家分享的編譯原理試題,供大家參考!
編譯原理試題一、是非題
(請?jiān)诶ㄌ?hào)內(nèi),正確的劃√,錯(cuò)誤的劃×)(每個(gè)2分,共20分)
1.編譯程序是對高級語言程序的解釋執(zhí)行。(× )
2.一個(gè)有限狀態(tài)自動(dòng)機(jī)中,有且僅有一個(gè)唯一的終態(tài)。(×)
3.一個(gè)算符優(yōu)先文法可能不存在算符優(yōu)先函數(shù)與之對應(yīng)。 (√ )
4.語法分析時(shí)必須先消除文法中的左遞歸 。 (×)
5.LR分析法在自左至右掃描輸入串時(shí)就能發(fā)現(xiàn)錯(cuò)誤,但不能準(zhǔn)確地指出出錯(cuò)地點(diǎn)。 (√)
6.逆波蘭表示法表示表達(dá)式時(shí)無須使用括號(hào)。 (√ )
7.靜態(tài)數(shù)組的存儲(chǔ)空間可以在編譯時(shí)確定。 (×)
8.進(jìn)行代碼優(yōu)化時(shí)應(yīng)著重考慮循環(huán)的代碼優(yōu)化,這對提高目標(biāo)代碼的效率將起更大作用。 (×)
9.兩個(gè)正規(guī)集相等的必要條件是他們對應(yīng)的正規(guī)式等價(jià)。 (× )
10.一個(gè)語義子程序描述了一個(gè)文法所對應(yīng)的翻譯工作。 (×)
編譯原理試題二、選擇題
(請?jiān)谇袄ㄌ?hào)內(nèi)選擇最確切的一項(xiàng)作為答案劃一個(gè)勾,多劃按錯(cuò)論)(每個(gè)4分,共40分)
1.詞法分析器的輸出結(jié)果是_____。
A.( ) 單詞的種別編碼 B.( ) 單詞在符號(hào)表中的位置
C.( ) 單詞的種別編碼和自身值 D.( ) 單詞自身值
2. 正規(guī)式 M 1 和 M 2 等價(jià)是指_____。
A.( ) M1和M2的狀態(tài)數(shù)相等 B.( ) M1和M2的有向邊條數(shù)相等
C.( ) M1和M2所識(shí)別的語言集相等 D.( ) M1和M2狀態(tài)數(shù)和有向邊條數(shù)相等
3. 文法G:S→xSx|y所識(shí)別的語言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*
4.如果文法G是無二義的,則它的任何句子α_____。
A.( )最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹必定相同
B.( ) 最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹可能不同
C.( ) 最左推導(dǎo)和最右推導(dǎo)必定相同
D.( )可能存在兩個(gè)不同的最左推導(dǎo),但它們對應(yīng)的語法樹相同
5.構(gòu)造編譯程序應(yīng)掌握______。
A.( )源程序 B.( ) 目標(biāo)語言
C.( ) 編譯方法 D.( ) 以上三項(xiàng)都是
6.四元式之間的聯(lián)系是通過_____實(shí)現(xiàn)的。
A.( ) 指示器 B.( ) 臨時(shí)變量
C.( ) 符號(hào)表 D.( ) 程序變量
7.表達(dá)式(┐A∨B)∧(C∨D)的逆波蘭表示為_____。
A. ( ) ┐AB∨∧CD∨ B.( ) A┐B∨CD∨∧
C.( ) AB∨┐CD∨∧ D.( ) A┐B∨∧CD∨
8. 優(yōu)化可生成_____的目標(biāo)代碼。
A.( ) 運(yùn)行時(shí)間較短 B.( ) 占用存儲(chǔ)空間較小
C.( ) 運(yùn)行時(shí)間短但占用內(nèi)存空間大 D.( ) 運(yùn)行時(shí)間短且占用存儲(chǔ)空間小
9.下列______優(yōu)化方法不是針對循環(huán)優(yōu)化進(jìn)行的。
A. ( ) 強(qiáng)度削弱 B.( ) 刪除歸納變量
C.( ) 刪除多余運(yùn)算 D.( ) 代碼外提
10.編譯程序使用_____區(qū)別標(biāo)識(shí)符的作用域。
A. ( ) 說明標(biāo)識(shí)符的過程或函數(shù)名
B.( ) 說明標(biāo)識(shí)符的過程或函數(shù)的靜態(tài)層次
C.( ) 說明標(biāo)識(shí)符的過程或函數(shù)的動(dòng)態(tài)層次
D. ( ) 標(biāo)識(shí)符的行號(hào)
編譯原理試題三、填空題
(每空1分,共10分)
1.計(jì)算機(jī)執(zhí)行用高級語言編寫的程序主要有兩種途徑:___解釋__和__編譯___。
2.掃描器是__詞法分析器___,它接受輸入的__源程序___,對源程序進(jìn)行___詞法分析__并識(shí)別出一個(gè)個(gè)單詞符號(hào),其輸出結(jié)果是單詞符號(hào),供語法分析器使用。
3.自上而下分析法采用___移進(jìn)__、歸約、錯(cuò)誤處理、___接受__等四種操作。
4.一個(gè)LR分析器包括兩部分:一個(gè)總控程序和___一張分析表__。
5.后綴式abc-/所代表的表達(dá)式是___a/(b-c)__。
6.局部優(yōu)化是在__基本塊___范圍內(nèi)進(jìn)行的'一種優(yōu)化。
編譯原理試題四、簡答題
(20分)
1. 簡要說明語義分析的基本功能。
答:語義分析的基本功能包括: 確定類型、類型檢查、語義處理和某些靜態(tài)語義檢 查。
2. 考慮文法 G[S]:
S → (T) | a+S | a
T → T,S | S
消除文法的左遞歸及提取公共左因子。
解:消除文法G[S]的左遞歸:
S→(T) | a+S | a
T→ST′
T′→,ST′| ε
提取公共左因子:
S→(T) | aS′
S′→+S | ε
T→ST′
T′→,ST′| ε
3. 試為表達(dá)式 w+(a+b)*(c+d/(e-10)+8) 寫出相應(yīng)的逆波蘭表示。
解: w a b + c d e 10 - / + 8 + * +
4. 按照三種基本控制結(jié)構(gòu)文法將下面的語句翻譯成四元式序列:
while (A
{
if (A ≥ 1) C=C+1;
else while (A ≤ D)
A=A+2;
}。
解:該語句的四元式序列如下(其中E1、E2和E3分別對應(yīng)A
100 (j<,A,C,102)
101 (j,_,_,113)
102 (j<,B,D,104)
103 (j,_,_,113)
104 (j=,A,1,106)
105 (j,_,_,108)
106 (+, C, 1, C)
107 (j,_,_,112)
108 (j≤,A,D,110)
109 (j,_,_,112)
110 (+, A, 2, A)
111 (j,_,_,108)
112 (j,_,_,100)
113
5. 已知文法 G[S] 為 S → aSb|Sb|b ,試證明文法 G[S] 為二義文法。
證明:
由文法G[S]:S→aSb|Sb|b,對句子aabbbb對應(yīng)的兩棵語法樹為:
因此,文法G[S]為二義文法。
五.計(jì)算題(10分)
已知文法
A->aAd|aAb| ε
判斷該文法是否是 SLR(1) 文法,若是構(gòu)造相應(yīng)分析表,并對輸入串 ab# 給出分析過程。 解:增加一個(gè)非終結(jié)符S/后,產(chǎn)生原文法的增廣文法有:
S'->A
A->aAd|aAb|ε
下面構(gòu)造它的LR(0)項(xiàng)目集規(guī)范族
從上表可看出,狀態(tài)I0和I2存在移進(jìn)-歸約沖突,該文法不是LR(0)文法。對于I0來說有:FOLLOW(A)∩{a}={b,d,#}∩{a}=Φ,所以在I0狀態(tài)下面臨輸入符號(hào)為a時(shí)移進(jìn),為b,d,#時(shí)歸約,為其他時(shí)報(bào)錯(cuò)。對于I2來說有也有與I0完全相同的結(jié)論。這就是說,以上的移進(jìn)-歸約沖突是可以解決的,因此該文法是SLR(1)文法。
看過“編譯原理試題”的人還看了:
1.編譯原理答案
2.學(xué)生范文網(wǎng)大學(xué)期末試題及答案合集
【編譯原理試題及參考答案】相關(guān)文章: