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