編譯原理復(fù)習(xí)題-給學(xué)生(2014).doc_第1頁
編譯原理復(fù)習(xí)題-給學(xué)生(2014).doc_第2頁
編譯原理復(fù)習(xí)題-給學(xué)生(2014).doc_第3頁
編譯原理復(fù)習(xí)題-給學(xué)生(2014).doc_第4頁
編譯原理復(fù)習(xí)題-給學(xué)生(2014).doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

編譯原理復(fù)習(xí)題一、單項選擇題概述部分1構(gòu)造編譯程序應(yīng)掌握 。D A. 源程序 B. 目標(biāo)語言 C. 編譯方法 D. 以上三項都是2編譯程序絕大多數(shù)時間花在 上。DA. 出錯處理 B. 詞法分析 C. 目標(biāo)代碼生成 D. 表格管理3編譯程序是對 。DA. 匯編程序的翻譯 B. 高級語言程序的解釋執(zhí)行C. 機(jī)器語言的執(zhí)行 D. 高級語言的翻譯4. 將編譯程序分成若干“遍”,是為了 。BA. 提高程序的執(zhí)行效率 B. 使程序的結(jié)構(gòu)更為清晰C 利用有限的機(jī)器內(nèi)存并提高機(jī)器的執(zhí)行效率D. 利用有限的機(jī)器內(nèi)存但降低了機(jī)器的執(zhí)行效率詞法分析部分1DFA M(見圖1-1)接受的字集為 。D 圖1-1XY0011A. 以0開頭的二進(jìn)制數(shù)組成的集合 B. 以0結(jié)尾的二進(jìn)制數(shù)組成的集合 C. 含奇數(shù)個0的二進(jìn)制數(shù)組成的集合 D. 含偶數(shù)個0的二進(jìn)制數(shù)組成的集合 2詞法分析器的輸出結(jié)果是 。CA. 單詞的種別編碼 B. 單詞在符號表中的位置C. 單詞的種別編碼和自身值 D. 單詞自身值3正規(guī)式M1和M2等價是指 。CA. M1和M2的狀態(tài)數(shù)相等 B. M1和M2的有向邊條數(shù)相等C. M1和M2所識別的語言集相等 D. M1和M2狀態(tài)數(shù)和有向邊條數(shù)相等4詞法分析器的加工對象是 。 C A中間代碼 B單詞 C源程序 D元程序5同正規(guī)式(a|b)*等價的正規(guī)式為 。D A(a|b)+ Ba*|b* C(ab)* D(a*|b*)+6. 兩個DFA等價是指: 。 DA. 這兩個DFA的狀態(tài)數(shù)相同B. 這兩個DFA的狀態(tài)數(shù)和有向弧條數(shù)都相等C. 這兩個DFA的有向弧條數(shù)相等D. 這兩個DFA接受的語言相同7. 下列符號串不可以由符號集Sa,b上的正閉包運(yùn)算產(chǎn)生的是:(A)A. B.a C.aa D.ab8稱有限自動機(jī)A1和A2等價是指_。DAA1和A2都是定義在一個字母表上的有限自動機(jī)BA1和A2狀態(tài)數(shù)和有向邊數(shù)相等CA1和A2狀態(tài)數(shù)或有向邊數(shù)相等DA1和A2所能識別的字符串集合相等9同正規(guī)式(a|b)+等價的正規(guī)式是_。BA(a|b)* B(a|b)(a|b)* C(ab)*(ab) D(a|b)|(a|b)*語法分析1在規(guī)范歸約中,用 來刻畫可歸約串。 BA. 直接短語 B. 句柄 C. 最左素短語 D. 素短語2若B為非終結(jié)符,則AB為 項目。DA. 歸約 B. 移進(jìn) C. 接受 D. 待約3如果文法G是無二義的,則它的任何句子 。 AA. 最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹必定相同B. 最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹可能不同C. 最左推導(dǎo)和最右推導(dǎo)必定相同D. 可能存在兩個不同的最左推導(dǎo),但它們對應(yīng)的語法樹相同4下列動作中,不是自下而上分析動作的是: 。BA. 移進(jìn) B. 展開C. 接受 D. 報錯6若a為終結(jié)符,則Aa為 項目。BA. 歸約 B. 移進(jìn) C. 接受 D. 待約7語法分析時所依據(jù)的是 。AA. 語法規(guī)則 B. 詞法規(guī)則 C. 語義規(guī)則 D. 等價變換規(guī)則8文法G:SxSx|y所識別的語言是 。C A. xyx B. (xyx)* C. xnyxn (n0) D. x*yx*9下列動作中,不是自上而下分析動作的是: 。CA. 匹配 B. 展開C. 移進(jìn) D. 報錯10若A為非終結(jié)符,則A 為 項目。AA. 歸約 B. 移進(jìn) C. 接受 D. 待約11文法G:SxSx| xS|y所識別的語言是 。 A A. xmyxn(mn0) B. (xyx)* C. xnyxn(n0) D. x*yx*13由文法的開始符號出發(fā)經(jīng)過若干步(包括0步)推導(dǎo)產(chǎn)生的文法符號序列稱為_。BA語言 B句型 C句子 D句柄14在自上而下的語法分析中,應(yīng)從 開始分析。CA句型 B句子 C文法開始符號D句柄15一個文法G,若_,則稱它是LL(1)文法。CAG中不含左遞歸 BG無二義性 CG的LL(1)分析表中不含多重定義的條目 DG中產(chǎn)生式不含左公因子16項目SS. 為 。DA.歸約項目 B.移進(jìn)項目C.待約項目 D.接受項目17. 語法分析器的輸入是: 。AA. Token序列 B. 源程序C. 目標(biāo)程序 D. 符號表18. 在LR(0)的Action表中,如果某行中存在標(biāo)記為“rj”的欄,則: 。 AA. 該行必定填滿“rj” B. 該行未必填滿“rj”C. 其他行可能也有“rj” D. goto表中也可能有“rj”19. LR分析過程中棧內(nèi)存儲的是 。 AA. 活前綴 B. 前綴C. 歸約活前綴 D. 項目20.文法G:S x xS | y 所識別的語言是 。 DAxxyn B(xxy) n Cxxnyx D(xx)ny21.若狀態(tài)k含有項目“A.”,對任意非終結(jié)符a,都用規(guī)則“A ”歸約的語法分析方法是 。BALALR分析法 BLR(0)分析法 CLR(1)分析法 DSLR(1)分析法22. 在SLR(1)的Action表中,如果某行中存在標(biāo)記為“rj”的欄,則: 。BA. 該行必定填滿“rj” B. 該行未必填滿“rj”C. 其他行可能也有“rj” D. goto表中也可能有“rj”23. 一個 指明了在LR分析過程中的某個時刻所能看到產(chǎn)生式多大一部分。DA. 活前綴 B. 前綴C. 歸約活前綴 D. 項目24.若狀態(tài)k含有項目“A.”,且僅當(dāng)輸入符號aFOLLOW(A)時,才用規(guī)則“A ”歸約的語法分析方法是 。DALALR分析法 BLR(0)分析法 CLR(1)分析法 DSLR(1)分析法25設(shè)有文法GT:TT*F|FFFP|PP(T)|a該文法句型T*P(T*F)的句柄是下列符號串 。C A.(T*F) B. T*F C. P D. P(T*F)26LR分析表中的轉(zhuǎn)移表(goto)是以 作為列標(biāo)題的。BA終結(jié)符 B非終結(jié)符 C終結(jié)符或非終結(jié)符 D表示狀態(tài)的整形數(shù)27編譯程序的語法分析器必須輸出的信息是 。 A A語法錯誤信息 B語法規(guī)則信息C語法分析過程 D語句序列28下列項目中為可移進(jìn)項目的是 。C AEE . BL. CL.-L DFL*F.29LR分析表中的動作表(action)是以 作為列標(biāo)題的。DA終結(jié)符 B非終結(jié)符C終結(jié)符或非終結(jié)符 D終結(jié)符和結(jié)束符#30下列項目中為可歸約項目的是 。BAE.E BL. CL-.L DFL*.F33LR分析器的核心部分是一張分析表,該表由_組成。DAACTION表 BGOTO表C預(yù)測分析表 DACTION表和GOTO表 34在遞歸下降子程序方法中,若文法存在左遞歸,則會使分析過程產(chǎn)生_ _。DA回溯 B非法調(diào)用 C有限次調(diào)用 D無限循環(huán) 35最左簡單子樹的葉結(jié)點,自左至右排列組成句型的_。CA短語 B句型 C句柄 D間接短語36由文法的開始符號出發(fā)經(jīng)過若干步(包括0步)推導(dǎo)產(chǎn)生的文法符號序列中,如果只含有終結(jié)符,則文法符號序列稱為_。CA語言 B句型 C句子 D句柄37LL(1)分析法中“1”的含義是在輸入串中查看一個輸入符號,其目的是_。CA確定最左推導(dǎo) B確定句柄 C確定使用哪一個產(chǎn)生式進(jìn)行展開 D確定是否推導(dǎo)語義分析1.表達(dá)式(ab)(ef)的逆波蘭表示為 。BAabef BabefCabef Dabef2中間代碼生成時所依據(jù)的是 。CA詞法規(guī)則 B語法規(guī)則 C語義規(guī)則 D等價變換規(guī)則3 -a-(b*c/(c-d)+(-b)*a)的逆波蘭表示是 。(代表后綴式中的求負(fù)運(yùn)算符) CA. abc*cd-ba*+/- B. abc*cd-ba*+/-C. abc*cd-/ba*+- D. abc*/cd-ba*+-4有文法G及其語法制導(dǎo)翻譯如下所示(語義規(guī)則中的*和+分別是常規(guī)意義下的算術(shù)運(yùn)算符): EE(1) T E.val = E(1).val * T.val ET E.val = T.val TT(1)# n T.val = T(1).val + n.val T n T.val = n.val則分析句子1 2 3 # 4其值為 。 C A. 10 B. 34 C. 14 D.545有文法G及其語法制導(dǎo)翻譯如下所示(語義規(guī)則中的*和+分別是常規(guī)意義下的算術(shù)運(yùn)算符): EE(1) T E.val = E(1).val * T.val ET E.val = T.val TT(1)# n T.val = T(1).val + n.val T n T.val = n.val 則分析句子2 3 # 4其值為 。 C A. 10 B. 21 C. 14 D. 246間接三元式表示法的優(yōu)點為 。 AA. 采用間接碼表,便于優(yōu)化處理 B. 節(jié)省存儲空間,不便于表的修改C. 便于優(yōu)化處理,節(jié)省存儲空間 D. 節(jié)省存儲空間,不便于優(yōu)化處理7文法GS及其語法制導(dǎo)翻譯定義如下: 產(chǎn)生式語義動作 S Sprint(S.num) S (L)S.num = L.num +1S aS.num = 0 L L(1), SL.num = L(1).num + S.numL S L.num = S.num若輸入為(a,(a),且采用自底向上的分析方法,則輸出為 。CA0B1C2D48四元式之間的聯(lián)系是通過 _實現(xiàn)的。BA指示器 B臨時變量 C符號表 D程序變量9表達(dá)式(ab)(cd)的逆波蘭表示為 。BAabcd BabcdCabcd Dabcd10表達(dá)式a+b+c+d的逆波蘭表示為 。BAa+bc+d+ Bab+c+d+Cab+cd+ Dabc+d+11.有文法G及其語法制導(dǎo)翻譯如下所示(語義規(guī)則中的*和+分別是常規(guī)意義下的算術(shù)運(yùn)算符): EE(1) T E.val = E(1).val * T.val ET E.val = T.val TT(1)# n T.val = T(1).val + n.val T n T.val = n.val則分析句子3 3 # 4其值為 。B A. 10 B. 21 C. 14 D. 2412表達(dá)式a+b+c的逆波蘭表示為 。BAa+bc+ Bab+c+C+abc+ Dabc+13. 文法GS及其語法制導(dǎo)翻譯定義如下: 產(chǎn)生式語義動作 S Sprint(S.num) S (L)S.num = L.num +1S a S.num = 0 L L(1), SL.num = L(1).num + S.numL S L.num = S.num若輸入為(a, a),且采用自底向上的分析方法,則輸出為 。BA0 B1C2 D414有一語法制導(dǎo)翻譯定義如下:SbAb print “1”A(B print “2”Aa print “3”BaA) print “4”若輸入序列為b(a(a(aa)b,且采用自底向上的分析方法,則輸出序列為 。BA32224441 B34242421C12424243 D3444221215賦值語句X:=-(a+b)/(c-d)-(a+b*c)的逆波蘭表示是 。CA. Xab+cd-/-bc*a+-:=B. Xab+/cd-bc*a+-:=C. Xab+-cd-/ a bc* +-:=D. Xab+cd-/abc* +-:=16有一語法制導(dǎo)翻譯定義如下,其中+表示符號連接運(yùn)算:SB print B.versBa B.vers=aBb B.vers=bBBa B.vers=a+B.versBBb B.vers=b+B.vers若輸入序列為abab,且采用自底向上的分析方法,則輸出序列為 。DAaabb Babab Cbbaa Dbaba17編譯程序不能檢查、處理的錯誤是程序中的_。BA靜態(tài)語義檢查 B動態(tài)語義檢查 C語法錯誤 D詞法錯誤(優(yōu)化、存儲、錯誤管理)1.在編譯過程中,如果遇到錯誤應(yīng)該 。CA. 把錯誤理解成局部的錯誤 B. 對錯誤在局部范圍內(nèi)進(jìn)行糾正,繼續(xù)向下分析C. 當(dāng)發(fā)現(xiàn)錯誤時,跳過錯誤所在的語法單位繼續(xù)分析下去D. 當(dāng)發(fā)現(xiàn)錯誤時立即停止編譯,待用戶改正錯誤后再繼續(xù)編譯二、填空題概述部分:1編譯程序的開發(fā)常常采用自編譯、 交叉編譯 、 自展 和移植等技術(shù)實現(xiàn)。2解釋程序和編譯程序的區(qū)別在于 是否生成目標(biāo)程序 。3如果編譯程序生成的目標(biāo)程序是匯編語言程序,則源程序的執(zhí)行分為3個階段: 編譯階段 、 匯編階段 和 運(yùn)行階段 。4編譯程序工作過程中,第一階段輸入是 源程序 ,最后階段的輸出為 目標(biāo)程序 。5編譯過程通??煞譃?個階段 詞法分析階段 、 語法分析階段 、 語義分析和中間代碼生成階段 、優(yōu)化階段和目標(biāo)代碼生成階段。6如果編譯階段生成的目標(biāo)程序是某特定計算機(jī)系統(tǒng)的機(jī)器代碼程序,則源程序的執(zhí)行分為兩大階段: 編譯階段 和 運(yùn)行階段 。7對編譯程序而言,輸入數(shù)據(jù)是 源程序 ,輸出結(jié)果是 目標(biāo)程序 。8貫穿于編譯程始終的工作有 符號表處理 和出錯處理。詞法分析部分:1詞法分析的工作是將源程序中的 字符串 變換成 單詞符號流 的過程,所遵循的是語言的 構(gòu)詞規(guī)則 。2若兩個正規(guī)式所表示的 正規(guī)集 相同,則認(rèn)為二者是等價的。3若兩個正規(guī)式所表示的正規(guī)集相同,則認(rèn)為二者是 等價 的。4正規(guī)式R1和R2等價是指_表示相同的正規(guī)集 。5詞法分析器的輸入是源程序字符串,輸出結(jié)構(gòu)是 二元式(單詞種別, 單詞自身的值) 。詞法分析所遵循的是語言的 構(gòu)詞 規(guī)則。6確定的有限自動機(jī)是一個五元組,包含的五個元分別是:狀態(tài)集合、 字母表、初態(tài)、終態(tài)集、狀態(tài)轉(zhuǎn)換函數(shù)集合 。7有限自動機(jī)是更一般化的狀態(tài)轉(zhuǎn)換圖,它分為 確定的有限自動機(jī)DFA 和 非確定的有限自動機(jī)NFA 兩種。8NFA和DFA的區(qū)別主要有兩點:其一是 NFA可以有若干個初始狀態(tài),而DFA僅有一個初始狀態(tài) ;其二是 NFA的狀態(tài)轉(zhuǎn)換函數(shù)f不是單值函數(shù),而是一個多值函數(shù) 。語法分析部分:(基本概念、LL(1)、LR(0)、SLR(1)、遞歸下降子程序)1 語法分析的方法通常分為兩類: 自上而下分析方法 和 自下而上分析方法 。2文法中的終結(jié)符集和非終結(jié)符集的交集是 空集 。3一個句型的最左直接短語稱為該句型的_句柄_。4規(guī)范歸約是 最右推導(dǎo) 的逆過程。5自下而上語法分析中分析器的動作有_移進(jìn) 、_歸約 、_接受_ 、_報錯 _。6自上而下語法分析中分析器的動作有_匹配終結(jié)符_、_展開非終結(jié)符_、_分析成功、報錯_。7常用的自上而下語法分析方法有遞歸下降子程序方法和預(yù)測分析表方法(LL(1)方法)。8常用的自下而上語法分析方法有算符優(yōu)先分析法和LR分析法。9一個LL(1)分析器由 一張LL(1)分析表(預(yù)測分析表) 、 一個先進(jìn)后出分析棧 和一個 控制程序(表驅(qū)動程序)組成。10一個LR分析器由 分析棧 、 分析表 和總控程序三個部分組成。11LR(0)分析法的名字中,“L”表示 自左至右分析輸入串 ,“R”表示 采用最右推導(dǎo)的逆過程即最左歸約 。“0”表示 向右查看0個字符 。12LL(1)分析法中,第一個L的含義是 從左到右掃描輸入串 ;第二個L的含義是 分析過程中采用最左推導(dǎo) ;“1”的含義是 只需向右查看一個符號就可以決定如何推導(dǎo) 。13LR(1)文法的含義是:L表明_自左至右掃描輸入串_,R表明_采用最右推導(dǎo)的逆過程(最左歸約)方法進(jìn)行分析_。14一個上下文無關(guān)文法是LL(1)文法的充分必要條件是:對每一個非終結(jié)符A的任何兩個不同產(chǎn)生式A|,有下面的條件成立:(1) FIRST()FIRST() = ;(2)假若,則有 FIRST() FOLLOW(A) = 。15對于LL(1)文法中的任何產(chǎn)生式A|,則需要滿足_First(_)First()= 、_若_=*,則_ First(_) _Follow(A)=_ _。16LR分析器的核心部分是一張分析表,該表包括 動作(ACTION)表 和 狀態(tài)轉(zhuǎn)換(GOTO)表 等兩個子表。17關(guān)于非終結(jié)符A的直接左遞歸產(chǎn)生式:AA|,其中、是任意的符號串且不以A開頭,則可以將A的產(chǎn)生式改寫為右遞歸的形式為: AA , AA| 。18在消除回溯,提取公共左因子時,關(guān)于A的產(chǎn)生式A 1 | 2 | | i | i+1 | | j,可以改寫為: A A | i+1 | | j , A 1 | |i 。19設(shè)GS 是一文法,如果符號串x是從識別符號推導(dǎo)出來的,即有x,則稱x是文法GS的_句型_,若x僅由終結(jié)符號組成,即,則稱x為文法GS的_句子 。20已知文法GS:SeT|RT TDR| RdR| Da|bd求FIRST(S)=e,d,a,b,_;FOLLOW(D)=_d,# 。語義處理部分:1文法符號的屬性有兩種,一種稱為 繼承屬性 ,另一種稱為 綜合屬性 。2編譯過程中,常見的中間語言形式有 逆波蘭表示法 、 抽象語法樹 、 三元式 、 四元式 。3語法制導(dǎo)翻譯的方法就是為每個產(chǎn)生式配上一個 翻譯子程序(語義動作或語義子程序) ,并在語法分析的同時執(zhí)行它們。4編譯過程中,常見的中間語言形式有 逆波蘭表示法 、 抽象語法樹 、 三元式 、 四元式 。6文法符號的屬性有兩種,一種稱為 繼承屬性 ,另一種稱為 綜合屬性 。7四元式之間的聯(lián)系是通過 臨時變量 實現(xiàn)的。8在屬性文法中,終結(jié)符只有_綜合 屬性。10語法制導(dǎo)翻譯的方法就是為每個產(chǎn)生式配上一個 翻譯子程序(語義動作或語義子程序) ,并在語法分析的同時執(zhí)行它們。11目前較常見的語言語義的描述形式是_屬性文法_,并使用_語法制導(dǎo)翻譯 方法完成對語法成分的翻譯。(優(yōu)化、存儲、錯誤管理)1.代碼優(yōu)化的含義是:對代碼進(jìn)行 等價變換 ,使得變換后的代碼具有更高的 時間效率 和 空間效率。2.按照優(yōu)化對象所涉及的程序范圍,優(yōu)化分為 局部優(yōu)化 、 循環(huán)優(yōu)化 和 全局優(yōu)化 。3.基本塊,是指程序中 順序執(zhí)行的語句序列 ,其中只有一個 入口 和一個 出口 。4.從編譯角度看,分配目標(biāo)程序數(shù)據(jù)空間的基本策略有: 靜態(tài)分配策略 、 棧式動態(tài)分配策略 和堆式動態(tài)分配策略 。三、判斷題1設(shè)r和s分別為正規(guī)式,則有L(r|s) = L(r) | L(s).。( )2一個文法的所有句型的集合形成該文法所能接受的語言。( )3語法分析之所以采用上下文無關(guān)文法是因為它的描述能力最強(qiáng)。( )4由于LR(0)分析表構(gòu)造簡單,所以它的描述能力強(qiáng),適用面寬;LR(1)分析表因構(gòu)造復(fù)雜而描述能力弱,適用面窄。( )5逆波蘭表示法表示表達(dá)式時無需使用括號。( )6自動機(jī)M和M的狀態(tài)個數(shù)不同,則二者必不等價。( )7LL(1)文法一定不含左遞歸和二義性。( )8所有LR分析器的總控程序都是一樣的,只是分析表各有不同。( )9無論是三元式表示還是間接三元式表示的中間代碼,其三元式在三元式表中的位置一旦確定就很難改變。( )10三地址語句類似于匯編語言代碼,可以看成中間代碼的一種抽象形式。( )11最左推導(dǎo)也被稱為規(guī)范推導(dǎo)。( )12運(yùn)算對象排列的先后順序在后綴式和中綴式中不同。( )13出現(xiàn)在移進(jìn)-歸約分析器棧中的內(nèi)容被稱為文法G的活前綴。( )14LR方法可以分析含有左遞歸的文法。( )15三元式的編號具有雙重含義,既代表此三元式,又代表三元式存放的結(jié)果。( )16語義規(guī)則中的屬性有兩種:綜合屬性與繼承屬性。( )17移進(jìn)-歸約分析器的格局中棧的內(nèi)容一般是文法符號與狀態(tài)。( )18由于遞歸下降子程序方法較LL(1)方法簡單,因此它要求文法不必是LL(1)文法。( )19四元式的編號具有雙重含義,既代表此四元式,又代表四元式存放的結(jié)果。( )20用高級語言編寫的源程序必須經(jīng)過編譯,產(chǎn)生目標(biāo)程序后才能運(yùn)行。( )21源程序到目標(biāo)程序的變換是等價變換,即兩者結(jié)構(gòu)不同,但語義是一致的。( )22對于任何一個正規(guī)式e,都存在一個DFA A,使得L(e)=L(A)。( )23最小化的DFA,它的狀態(tài)數(shù)最小。( )24NFA的確定化算法具有消除邊的功能。( )25每個非終結(jié)符產(chǎn)生的終結(jié)符號串都是該語言的子集。( )26一個語言的文法是不唯一的。( )27語法錯誤校正的目的是為了把錯誤改正過來。( )28源程序和目標(biāo)程序是等價關(guān)系。( )29編譯程序中錯誤處理的任務(wù)是對檢查出的錯誤進(jìn)行修改。( )30使用有限自動機(jī)可以實現(xiàn)單詞的識別。( )31一個非確定的有限自動機(jī)NFA可以通過多條路徑識別同一個符號串。( )32最小化的DFA所識別接受的正規(guī)集最小。( )33一個語言(如C語言)的句子是有窮的。( )34LL(1)方法又稱為預(yù)測分析方法。( )35一個LL(1)文法是無二義和無回溯方法。( )36語法分析器可以檢查出程序中的所有錯誤。( )37LR分析法是自上而下的語法分析方法。( )三、多項選擇題1. 編譯器的各個階段的工作都涉及到(AE)A. 表格處理 B. 詞法分析C. 語法分析 D. 語義分析 E. 出錯處理2. 令Sa,b,則S上的符號串的全體可用下面的正規(guī)式表示。(ABE)A. (a|b)* B. (a*|b*)*C. (a|b)+ D. (ab)* E. (a*b*)*3. 自上而下的分析方法有:(AD)A. 遞歸下降分析法 B. LR(0)分析法C. LALR(1)分析法 D. LL(1)分析法E. SLR(1)分析法4.文法G:GS:SCDAbbA CaCABaaB CbCBBbbB ADaDC BDbDD AabD是(A)。A. 0型文法 B. 1型文法C. 2型文法 D. 3型文法 E. 上下文有關(guān)文法5. 對LR分析表的構(gòu)造,有可能存在的動作沖突有:(AD)A. 移進(jìn)/歸約沖突 B. 移進(jìn)/移進(jìn)沖突C. 歸約沖突 D. 歸約/歸約沖突E. 移進(jìn)沖突6. 一個編譯器可能有的階段為(ABCDE)A. 詞法分析 B. 語法分析C. 語義分析 D. 中間代碼生成E. 目標(biāo)代碼生成7 令Sa,b,則S上的所有以b開頭,后跟若干個(可為0個)ab的符號串的全體可用下面的正規(guī)式表示。(AB)A.b (ab)* B. (ba)*b C. b(a|b)+ D. (ba)+b E. b (a|b)*8. 自下而上的分析方法有:(BCE)A. 遞歸下降分析法 B. LR(0)分析法C. LALR(1)分析法 D. LL(1)分析法E. SLR(1)分析法9. 一般來說,編譯器可分為前端和后端,下列編譯階段可被劃分為編譯的前端的有:(ABCDE)A. 詞法分析 B. 語法分析C. 語義分析 D. 中間代碼生成 E. 中間代碼優(yōu)化10令Sa,b,則S上的符號串的全體可用下面的正規(guī)式表示。(ABE)A. (a|b)* B. (a*|b*)*C. (a|b)+ D. (ab)* E. (a*b*)*11下列符號串是符號集Sa,b上的正規(guī)式的有:(ABCDE)A. B.a C.ab D.(aba) (aba)E.abab12正規(guī)式服從的代數(shù)規(guī)律有:(ABDE)A. “或”運(yùn)算服從交換律 B. “或”運(yùn)算服從結(jié)合律C. “連接”運(yùn)算服從交換律 D. “連接”運(yùn)算服從結(jié)合律E. “連接”運(yùn)算可對“或”運(yùn)算進(jìn)行分配13 令Sa,b,則S上的所有以b開頭,后跟若干個(可為0個)ab的符號串的全體可用下面的正規(guī)式表示。(AB)A.b (ab)* B. (ba)*b C. b(a|b)+D. (ba)+b E. b (a|b)*14 一個LR分析器包括:(ADE)A. 一個總控程序 B.一個項目集C.一個活前綴 D.一個分析棧E.一張分析表15 LR分析器的核心部分是一張分析表,該表包括(DE)等子表。A. LL(1)分析表 B. LR(1)分析表C. SLR(1)分析表 D. Action表E. goto表16 Action表中的每一項ActionS,a所表示的動作可能為:(ABCD)A. 移進(jìn) B. 接受 C. 歸約D. 出錯 E. 待約五簡答題1構(gòu)造正規(guī)表達(dá)式(a|b)*|aa)*b的NFA。解:2設(shè)M=(x,y, a,b, f, x, y)為一非確定的有限自動機(jī),其中f定義如下: f(x,a)=x,y fx,b=y f(y,a)= fy,b=x,y試構(gòu)造相應(yīng)的確定有限自動機(jī)M。解:對照自動機(jī)的定義M=(S,f,So,Z),由f的定義可知f(x,a)、f(y,b)均為多值函數(shù),因此M是一非確定有限自動機(jī)。先畫出NFA M相應(yīng)的狀態(tài)圖,如下圖所示。用子集法構(gòu)造狀態(tài)轉(zhuǎn)換矩陣,如下表所示。 將轉(zhuǎn)換矩陣中的所有子集重新命名,形成下表所示的狀態(tài)轉(zhuǎn)換矩陣,即得到M=(0,1,2,a,b,f,0,1,2),M狀態(tài)轉(zhuǎn)換圖如下圖所示。(注意:本題由于集合的命名和先后順序不同,可能最終結(jié)果不同。)3畫出編譯程序的總體結(jié)構(gòu)圖,簡述各部分的主要功能。解:編譯程序的總體框圖如下所示: (1)詞法分析器,又稱掃描器,它接受輸入的源程序,對源程序進(jìn)行詞法分析,識別出一個個單詞符號,其輸出結(jié)果是二元式(單詞種別,單詞自身的值)流。(2)語法分析器,對單詞符號串進(jìn)行語法分析(根據(jù)語法規(guī)則進(jìn)行推導(dǎo)或歸約),識別出程序中的各類語法單位,最終判斷輸入串是否構(gòu)成語法上正確的句子。(3)語義分析及中間代碼生成器,按照語義規(guī)則對語法分析器歸約出(或推導(dǎo)出)的語法單位進(jìn)行語義分析并把它們翻譯成一定形式的中間代碼。編譯程序可以根據(jù)不同的需要選擇不同的中間代碼形式,有的編譯程序甚至沒有中間代碼形式,而直接生成目標(biāo)代碼。(4)優(yōu)化器對中間代碼進(jìn)行優(yōu)化處理。一般最初生成的中間代碼執(zhí)行效率都比較低,因此要做中間代碼的優(yōu)化,其過程實際上是對中間代碼進(jìn)行等價替換,使程序在執(zhí)行時能更快,并占用更小的空間。(5)目標(biāo)代碼生成器,把中間代碼翻譯成目標(biāo)程序。中間代碼一般是一種與機(jī)器無關(guān)的表示形式,只有把它再翻譯成與機(jī)器硬件直接相關(guān)的機(jī)器能識別的語言,即目標(biāo)程序,才能在機(jī)器上運(yùn)行。(6)表格管理模塊保持一系列的表格,登記源程序的各類信息和編譯各階段的進(jìn)展?fàn)顩r。編譯程序各個階段所產(chǎn)生的中間結(jié)果都記錄在表格中,所需要的信息也大多從表格中獲取,整個編譯過程都在不斷和表格打交道。(7)出錯處理程序?qū)Τ霈F(xiàn)在源程序中的錯誤進(jìn)行處理。如果源程序有錯誤,編譯程序應(yīng)設(shè)法發(fā)現(xiàn)錯誤,把有關(guān)錯誤信息報告給用戶。編譯程序的各個階段都有可能發(fā)現(xiàn)錯誤,出錯處理程序要對發(fā)現(xiàn)的錯誤進(jìn)行處理、記錄,并反映給用戶。4構(gòu)造一個DFA,它接受 = 0, 1上所有滿足如下條件的字符串:每個1后面都有0直接跟在右邊。解:(1)0*(0|10)*0* 或者 (0|10)* (2)NFA (2分)X0Y01020103子集法確定化 II0I1X, 0, 1, 3, Y0, 1, 3, Y20, 1, 3, Y0, 1, 3, Y221, 3, Y-1, 3, Y1, 3, Y2重新命名狀態(tài),即得:S0112322334-443 最小化 首先分為終態(tài)集和非終態(tài)集 3 1, 2, 4 因為10 = 2 20 = 2 40 = 4 狀態(tài)均屬于集合1, 2, 4,所以對于輸入符號0不能區(qū)分開1,2,4三個狀態(tài);11 = 3 21 = 3 41 = 3狀態(tài)均屬于集合3,所以對于輸入符號1也不能區(qū)分開1,2,4三個狀態(tài);因此最終的狀態(tài)劃分即為: 3 1, 2, 4,其對應(yīng)的DFA如下圖所示:001105寫出C語言標(biāo)識符集(字母或下劃線開頭的由字母、數(shù)字、下劃線構(gòu)成的串)的正規(guī)式。解答:用D表示數(shù)字0-9,用L表示字母a-z|A-Z,則C語言標(biāo)識符的正規(guī)式為: (L|_)(L|D|_)*語法分析部分:6構(gòu)造一文法,使其描述的語言L = | (a, b)*,且中含有相同個數(shù)的a和b。解:S | aA|bBA b| bS| aAAB a| aS| bBB7對于文法G(S):S (L) | aS | aL L, S | S(1) 畫出句型(S, (a)的語法樹。(2) 寫出上述句型的所有短語、直接短語和句柄。解:(1) 句型(S, (a)的語法樹如下圖所示: (2) 從語法樹中可以找到(3分)短語:a; (a); S; S,(a); (S, (a)直接短語: a; S 句柄: S8令文法GN為 GN: ND|ND D0|1|2|3|4|5|6|7|8|9給出句子568的最左、最右推導(dǎo)。解:最左推導(dǎo):N ND NDD DDD 5DD 56D 568最右推導(dǎo):N ND N8 ND8 N68 D68 5688已知文法GA: AaABl|aBBb|d試給出與GA等價的LL(1)文法GA;解:GA:AaAAABl | BdBBbB| 9試構(gòu)造下述文法的SLR(1)分析表。GA: AaABl|aBBb|d解:拓廣文法 (0)SA(1)AaABl(2)Aa(3)BBb(4)BdFirst(A)=afollow(A)=#,dFirst(B)=dfollow(B)=lSLR(1)分析表如下:abdl#AB0S211ACC2S2R2R233S454R45S7S66R1R17R310. 試構(gòu)造下述文法的LL(1)分析表。GS: S(L)|aLL,S|S解:消除左遞歸:G(S): S (L) | aL SLL , SL| 構(gòu)造FIRST集,如下:(1)FIRST(S) = (, a(2)FIRST(L) = (, a(3)FIRST(L) = , 構(gòu)造FOLLOW集如下:(1)FOLLOW(S) = #, , )(2)FOLLOW(L) = )(3)FOLLOW(L) = )LL(1)分析表()a,#SS (L)S aLL SLL SLLL L ,SL11已知文法GS: SaSbS|bSaS|試證明GS是二義文法證明: 該文法產(chǎn)生的語言是a的個數(shù)和b的個數(shù)相等的串的集合。該文法二義,例如句子abab有兩種不同的最左推導(dǎo)。 SaSbSabSabaSbSababSabab SaSbSabSaSbSabaSbSababSabab12已知文法:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論