




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理考試題及答案匯總一、選擇1將編譯程序分成若干個“遍”是為了_B_。A . 提高程序的執(zhí)行效率B.使程序的結(jié)構(gòu)更加清晰C. 利用有限的機器內(nèi)存并提高機器的執(zhí)行效率D.利用有限的機器內(nèi)存但降低了機器的執(zhí)行效率2正規(guī)式 MI 和 M2 等價是指_C_。A . MI 和 M2 的狀態(tài)數(shù)相等B.Ml 和 M2 的有向弧條數(shù)相等。C .M1 和 M2 所識別的語言集相等 D. Ml 和 M2 狀態(tài)數(shù)和有向弧條數(shù)相等3中間代碼生成時所依據(jù)的是 _C_。A語法規(guī)則 B詞法規(guī)則 C語義規(guī)則 D等價變換規(guī)則4后綴式 ab+cd+/可用表達(dá)式_B_來表示。A a+b/c+d B(a+b)/(c+d) C a
2、+b/(c+d) D a+b+c/d 6 一個編譯程序中,不僅包含詞法分析,_A_,中間代碼生成,代碼優(yōu)化, 目標(biāo)代碼生成等五個部分。A( ) 語法分析 B( )文法分析 C( )語言分析 D( )解釋分析 7 詞法分析器用于識別_C_。A( ) 字符串 B( )語句 C( )單詞 D( )標(biāo)識符8 語法分析器則可以發(fā)現(xiàn)源程序中的_D_。A( ) 語義錯誤 B( ) 語法和語義錯誤C( ) 錯誤并校正 D( ) 語法錯誤9 下面關(guān)于解釋程序的描述正確的是_B_。(1)解釋程序的特點是處理程序時不產(chǎn)生目標(biāo)代碼 (2)解釋程序適用于 COBOL 和 FORTRAN 語言 (3)解釋程序是為打開編譯
3、程序技術(shù)的僵局而開發(fā)的 A( ) (1)(2) B( ) (1) C( ) (1)(2)(3) D( ) (2)(3)10 解釋程序處理語言時 , 大多數(shù)采用的是_B_方法。A( ) 源程序命令被逐個直接解釋執(zhí)行B( ) 先將源程序轉(zhuǎn)化為中間代碼 , 再解釋執(zhí)行C( ) 先將源程序解釋轉(zhuǎn)化為目標(biāo)程序 , 再執(zhí)行D( ) 以上方法都可以11 編譯過程中 , 語法分析器的任務(wù)就是_B_。(1) 分析單詞是怎樣構(gòu)成的 (2) 分析單詞串是如何構(gòu)成語句和說明的(3) 分析語句和說明是如何構(gòu)成程序的 (4) 分析程序的結(jié)構(gòu)A( ) (2)(3) B( ) (2)(3)(4)C( ) (1)(2)(3)
4、D( ) (1)(2)(3)(4) 12 編譯程序是一種_C_。A. ( ) 匯編程序 B( ) 翻譯程序 C( ) 解釋程序 D( ) 目標(biāo)程序13 文法 G 所描述的語言是_C_的集合。A. ( ) 文法 G 的字母表 V 中所有符號組成的符號串B( ) 文法 G 的字母表 V 的閉包 V* 中的所有符號串C( ) 由文法的開始符號推出的所有終極符串D. ( ) 由文法的開始符號推出的所有符號串14 文法分為四種類型,即 0 型、1 型、2 型、3 型。其中 3 型文法是_B_。 A. ( ) 短語文法 B( ) 正則文法 C( ) 上下文有關(guān)文法 D( ) 上下文無關(guān)文法15 一個上下文
5、無關(guān)文法 G 包括四個組成部分,它們是:一組非終結(jié)符號,一 組終結(jié)符號,一個開始符號,以及一組 _D_。A( ) 句子 B( ) 句型 C( ) 單詞 D( ) 產(chǎn)生式16 通常一個編譯程序中,不僅包含詞法分析,語法分析,中間代碼生成,代碼優(yōu)化,目 標(biāo)代碼生成等五個部分,還應(yīng)包括_C_。A( ) 模擬執(zhí)行器 B ( ) 解釋器C( ) 表格處理和出錯處理 D( ) 符號執(zhí)行器17 文法 GN= ( b , N , B , N , Nb bB , BbN ),該文法所描述 的語言是CA( ) L(GN)=bi i 0 B( ) L(GN)=b2i i 0C( ) L(GN)=b2i+1 i 0D
6、( ) L(GN)=b2i+1 i 118 一個句型中的最左_B_稱為該句型的句柄。A( ) 短語 B( ) 簡單短語 C( ) 素短語 D( ) 終結(jié)符號19設(shè) G 是一個給定的文法,S 是文法的開始符號,如果 S-x( 其中 xV*), 則稱 x 是文法 G 的一個_B_。A( ) 候選式 B ( ) 句型 C( ) 單詞 D( ) 產(chǎn)生式20 文法 GE :E TE TT FT FF a ( E )該文法句型 E F (E T) 的簡單短語是下列符號串中的_。 ( E T ) E T F F (E T)A( ) 和 B( ) 和 C( ) 和 D( ) 21 若一個文法是遞歸的,則它所產(chǎn)
7、生的語言的句子_A_。A( ) 是無窮多個 B ( ) 是有窮多個C( ) 是可枚舉的 D( ) 個數(shù)是常量22 詞法分析器用于識別_C_。A( ) 句子 B ( ) 句型 C( ) 單詞 D( ) 產(chǎn)生式23 在語法分析處理中, FIRST 集合、 FOLLOW 集合、 SELECT 集合均是_B_。A . ( ) 非終極符集 B ( ) 終極符集 C( ) 字母表 D . ( ) 狀態(tài)集24 在自底向上的語法分析方法中,分析的關(guān)鍵是_A_。A .( ) 尋找句柄 B .( ) 尋找句型 C .( ) 消除遞歸 D .( ) 選擇候選式25 在 LR 分析法中,分析棧中存放的狀態(tài)是識別規(guī)范句
8、型_C_的 DFA 狀態(tài)。A .( ) 句柄 B .( ) 前綴 C .( ) 活前綴 D .( ) LR(0) 項目26 文法 G 產(chǎn)生的_D_的全體是該文法描述的語言。A( ) 句型 B( ) 終結(jié)符集 C( ) 非終結(jié)符集 D( ) 句子27 若文法 G 定義的語言是無限集,則文法必然是 _A_A( ) 遞歸的 B ( ) 前后文無關(guān)的C ( ) 二義性的 D( ) 無二義性的28 四種形式語言文法中,1 型文法又稱為 _A_文法。A( ) 短語結(jié)構(gòu)文法 B ( ) 前后文無關(guān)文法C( ) 前后文有關(guān)文法 D( ) 正規(guī)文法29 一個文法所描述的語言是_A_。A( ) 唯一的B( ) 不
9、唯一的C( ) 可能唯一,好可能不唯一 D( ) 都不對30 _B_和代碼優(yōu)化部分不是每個編譯程序都必需的。 A( ) 語法分析 B ( ) 中間代碼生成C( ) 詞法分析 D( ) 目標(biāo)代碼生成31_B_是兩類程序語言處理程序。A( ) 高級語言程序和低級語言程序 B ( ) 解釋程序和編譯程序C( ) 編譯程序和操作系統(tǒng)D( ) 系統(tǒng)程序和應(yīng)用程序32 數(shù)組的內(nèi)情向量中肯定不含有數(shù)組的_A_的信息。A . ( ) 維數(shù) B( ) 類型 C( ) 維上下界 D( ) 各維的界差33. 一個上下文無關(guān)文法 G 包括四個組成部分,它們是:一組非終結(jié)符號,一組終結(jié)符號, 一個開始符號,以及一組 _
10、D_。A( ) 句子 B( ) 句型C( ) 單詞 D( ) 產(chǎn)生式34 文法分為四種類型,即 0 型、1 型、2 型、3 型。其中 2 型文法是_D_。A . ( ) 短語文法 B ( ) 正則文法C( ) 上下文有關(guān)文法 D( ) 上下文無關(guān)文法35一個上下文無關(guān)文法 G 包括四個組成部分,它們是:一組非終結(jié)符號,一組終結(jié)符號, 一個開始符號,以及一組 _D_。A( ) 句子 B( ) 句型 C( ) 單詞 D( ) 產(chǎn)生式36_A_是一種典型的解釋型語言。A( ) BASIC B( ) C C( ) FORTRAN D( ) PASCAL 37與編譯系統(tǒng)相比,解釋系統(tǒng)_D_。A( ) 比
11、較簡單 , 可移植性好 , 執(zhí)行速度快B( ) 比較復(fù)雜 , 可移植性好 , 執(zhí)行速度快C ( ) 比較簡單 , 可移植性差 , 執(zhí)行速度慢D( ) 比較簡單 , 可移植性好 , 執(zhí)行速度慢38用高級語言編寫的程序經(jīng)編譯后產(chǎn)生的程序叫_B_。A( ) 源程序 B ( ) 目標(biāo)程序 C( ) 連接程序 D( ) 解釋程序 39編寫一個計算機高級語言的源程序后 , 到正式上機運行之前,一般要經(jīng)過_B_這幾步:(1) 編輯 (2) 編譯 (3) 連接 (4) 運行A . ( ) (1)(2)(3)(4) B( ) (1)(2)(3) C( ) (1)(3) D( ) (1)(4) 40把匯編語言程序
12、翻譯成機器可執(zhí)行的目標(biāo)程序的工作是由_A_完成的。A( ) 編譯器 B( ) 匯編器C( ) 解釋器 D( ) 預(yù)處理器 41詞法分析器的輸出結(jié)果是_C_。A( ) 單詞的種別編碼B( ) 單詞在符號表中的位置C( ) 單詞的種別編碼和自身值 D( ) 單詞自身值42 文法 G :SxSx|y 所識別的語言是_C_。A( ) xyx B( ) (xyx)* C ( ) xnyxn(n0) D( ) x*yx* 43如果文法 G 是無二義的,則它的任何句子_A_。A( ) 最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹必定相同 B( ) 最左推導(dǎo)和最右推導(dǎo)對應(yīng)的語法樹可能不同 C( ) 最左推導(dǎo)和最右推導(dǎo)必定相
13、同D( ) 可能存在兩個不同的最左推導(dǎo),但它們對應(yīng)的語法樹相同 44構(gòu)造編譯程序應(yīng)掌握_D_。A( ) 源程序 B ( ) 目標(biāo)語言C( ) 編譯方法 D( ) 以上三項都是45四元式之間的聯(lián)系是通過_B_實現(xiàn)的。A( ) 指示器 B ( ) 臨時變量C( ) 符號表 D( ) 程序變量46表達(dá)式( A B)(CD)的逆波蘭表示為_B_。A . ( ) ABCD B ( ) A BCDC( ) AB CD D( ) A B CD47. 優(yōu)化可生成_D_的目標(biāo)代碼。A( ) 運行時間較短B( ) 占用存儲空間較小C( ) 運行時間短但占用內(nèi)存空間大 D( ) 運行時間短且占用存儲空間小48下列_
14、C_優(yōu)化方法不是針對循環(huán)優(yōu)化進(jìn)行的。A . ( ) 強度削弱 B ( ) 刪除歸納變量C( ) 刪除多余運算 D( ) 代碼外提49編譯程序使用_B_區(qū)別標(biāo)識符的作用域。 A . ( ) 說明標(biāo)識符的過程或函數(shù)名B( ) 說明標(biāo)識符的過程或函數(shù)的靜態(tài)層次C( ) 說明標(biāo)識符的過程或函數(shù)的動態(tài)層次 D . ( ) 標(biāo)識符的行號50編譯程序絕大多數(shù)時間花在_D_ 上。 A( ) 出錯處理 B( ) 詞法分析 C( ) 目標(biāo)代碼生成 D( ) 表格管理51 編譯程序是對_D_。A( ) 匯編程序的翻譯 B ( ) 高級語言程序的解釋執(zhí)行C( ) 機器語言的執(zhí)行 D( ) 高級語言的翻譯52 采用自上
15、而下分析,必須_C_。A( ) 消除左遞歸B ( ) 消除右遞歸C( ) 消除回溯D( ) 提取公共左因子53在規(guī)范歸約中,用_B_來刻畫可歸約串。A( ) 直接短語B( ) 句柄C( ) 最左素短語D( ) 素短語54 若 a 為終結(jié)符,則 A - a 為_B_項目。A( ) 歸約 B ( ) 移進(jìn) C( ) 接受 D( ) 待約55間接三元式表示法的優(yōu)點為_A_。A( ) 采用間接碼表,便于優(yōu)化處理 B ( ) 節(jié)省存儲空間,不便于表的修改C( ) 便于優(yōu)化處理,節(jié)省存儲空間 D( ) 節(jié)省存儲空間,不便于優(yōu)化處理56基本塊內(nèi)的優(yōu)化為_B_。A . ( ) 代碼外提,刪除歸納變量 B( )
16、 刪除多余運算,刪除無用賦值C( ) 強度削弱,代碼外提 D( ) 循環(huán)展開,循環(huán)合并57 在目標(biāo)代碼生成階段,符號表用_D_。 A( ) 目標(biāo)代碼生成 B( ) 語義檢查 C( ) 語法檢查 D( ) 地址分配58若項目集 Ik 含有 A - ,則在狀態(tài) k 時,僅當(dāng)面臨的輸入符號 aFOLLOW(A)時,才采取“A - ”動作的一定是_D_。A . ( ) LALR 文法 B( ) LR(0)文法C( ) LR(1)文法 D( ) SLR(1)文法59堆式動態(tài)分配申請和釋放存儲空間遵守_D_原則。A . ( ) 先請先放 B( ) 先請后放C( ) 后請先放 D . ( ) 任意二、判斷1
17、計算機高級語言翻譯成低級語言只有解釋一種方式。() 2在編譯中進(jìn)行語法檢查的目的是為了發(fā)現(xiàn)程序中所有錯誤。()3甲機上的某編譯程序在乙機上能直接使用的必要條件是甲機和乙機的操作系 統(tǒng)功能完全相同。 ( )4正則文法其產(chǎn)生式為 A-a , A-Bb, A,BVN , a 、 bVT 。 ()5每個文法都能改寫為 LL(1) 文法。 () 6遞歸下降法不允許任一非終極符是直接左遞歸的。 () 7算符優(yōu)先關(guān)系表不一定存在對應(yīng)的優(yōu)先函數(shù)。 () 8自底而上語法分析方法的主要問題是候選式的選擇。 ()9LR 法是自頂向下語法分析方法。 ()10簡單優(yōu)先文法允許任意兩個產(chǎn)生式具有相同右部。 () 11“
18、用高級語言書寫的源程序都必須通過編譯, 產(chǎn)生目標(biāo)代碼后才能投入運行 ”這種說法。( )12若一個句型中出現(xiàn)了某產(chǎn)生式的右部,則此右部一定是該句型的句柄。( )13一個句型的句柄一定是文法某產(chǎn)生式的右部。 ( )14在程序中標(biāo)識符的出現(xiàn)僅為使用性的。 ( )15僅考慮一個基本塊,不能確定一個賦值是否真是無用的。 ( )16削減運算強度破壞了臨時變量在一基本塊內(nèi)僅被定義一次的特性。 ( )17在中間代碼優(yōu)化中循環(huán)上的優(yōu)化主要有不變表達(dá)式外提和削減運算強度。 ( )18數(shù)組元素的地址計算與數(shù)組的存儲方式有關(guān)。 ( )19編譯程序與具體的機器有關(guān),與具體的語言無關(guān)。 ( ) 20遞歸下降分析法是自頂向
19、上分析方法。( )21產(chǎn)生式是用于定義詞法成分 的一種書寫規(guī)則。 ( )22LR 法是自頂向下語法分析方法。 ()23在 SLR ( 1 )分析法的名稱中,S 的含義是簡單的。( ) 24綜合屬性是用于 “ 自上而下 ” 傳遞信息。( )25符號表中的信息欄中登記了每個名字的 屬性和特征等有關(guān)信息 ,如類型、種屬、所占 單元大小、地址等等。 ( )26程序語言的語言處理程序是一種應(yīng)用軟件。 ( ) 27一個 LL(l)文法一定是無二義的。 ( ) 28正規(guī)文法產(chǎn)生的語言都可以用上下文無關(guān)文法來描述。 ( )29一張轉(zhuǎn)換圖只包含有限個狀態(tài),其中有一個被認(rèn)為是初態(tài),最多只有一個終態(tài)。 ( ) 30
20、目標(biāo)代碼生成時,應(yīng)考慮如何充分利用計算機的寄存器的問題。 ( )31逆波蘭法表示的表達(dá)式亦稱后綴式 。 ( )32如果一個文法存在某個句子對應(yīng)兩棵不同的語法樹,則稱這個文法是二義的。 ( )33數(shù)組元素的地址計算與數(shù)組的存儲方式有關(guān)。( )34對于數(shù)據(jù)空間的存貯分配, FORTRAN 采用動態(tài)貯存分配策略。 ( )35編譯程序是對高級語言程序的解釋執(zhí)行。( ) 36一個有限狀態(tài)自動機中,有且僅有一個唯一的終態(tài)。( ) 37語法分析時必須先消除文法中的左遞歸 。 ( )38LR 分析法在自左至右掃描輸入串時就能發(fā)現(xiàn)錯誤,但不能準(zhǔn)確地指出出錯地點。 ( ) 39逆波蘭表示法表示表達(dá)式時無須使用括號
21、。 ( ) 40靜態(tài)數(shù)組的存儲空間可以在編譯時確定。 ( ) 41進(jìn)行代碼優(yōu)化時應(yīng)著重考慮循環(huán)的代碼優(yōu)化,這對提高目標(biāo)代碼的效率將起更大作用。( ) 42兩個正規(guī)集相等的必要條件是他們對應(yīng)的正規(guī)式等價。( ) 43一個語義子程序描述了一個文法所對應(yīng)的翻譯工作。 ( )44r 和 s 分別是正規(guī)式,則有 L(r|s)=L(r)L(s)。( ) 45確定的的自動機以及不確定的自動機都能正確地識別正集()46分析作為單獨的一遍來處理較好。 ( )47 LR 分析器的任務(wù)就是產(chǎn)生 LR 分析表。 ( ) 48歸約和規(guī)范推導(dǎo)是互逆的兩個過程。 ( )49同心集的合并有可能產(chǎn)生新的“移進(jìn)”/ “歸約” 沖
22、突 ()50.lR 分析技術(shù)無法適用二義文法。 ( )51樹形表示和四元式不便于優(yōu)化,而三元式和間接三元式則便于優(yōu)化。 ( )52序中的表達(dá)式語句在語義翻譯時不需要回填技術(shù)。 ( ) 三、填空1編譯程序的工作過程一般可以劃分為詞法分析,語法分析,語義分析,中間代碼 生成,代碼優(yōu)化等幾個基本階段,同時還會伴有_表格處理_和 _出錯處理_。 2若源程序是用高級語言編寫的,_目標(biāo)程序_是機器語言程序或匯編程序, 則其翻譯程序稱為 _編譯程序_ 。 3編譯方式與解釋方式的根本區(qū)別在于_是否生成目標(biāo)代碼_。 4對編譯程序而言,輸入數(shù)據(jù)是_源程序_, 輸出結(jié)果是_目標(biāo)程序_。 5產(chǎn)生式是用于定義_語法成分
23、_的一種書寫規(guī)則。 6語法分析最常用的兩類方法是_自上而下_和_自下而上_分析法7設(shè) G 是一個給定的文法,S 是文法的開始符號,如果 S-x( 其中 xVT*), 則稱 x 是文 法的一個_句子_。8遞歸下降法不允許任一非終極符是直接_左_遞歸的。 9自頂向下的語法分析方法的基本思想是:從文法的_開始符號_開始,根據(jù)給定的輸 入串并按照文法的產(chǎn)生式一步一步的向下進(jìn)行_直接推導(dǎo)_,試圖推導(dǎo)出文法的_句子_,使之與給定的輸入串_匹配_。 10自底向上的語法分析方法的基本思想是:從輸入串入手,利用文法的產(chǎn)生式一步一步地 向上進(jìn)行_直接歸約_ ,力求歸約到文法的_開始符號_。 11常用的參數(shù)傳遞方式
24、有_傳地址_,傳值和傳名。 12在使用高級語言編程時,首先可通過編譯程序發(fā)現(xiàn)源程序的全部_語法_錯誤和語義的部分錯誤。13一個句型中的最左簡單短語稱為該句型的_句柄_。14對于文法的每個產(chǎn)生式都配備了一組屬性的計算規(guī)則,稱為 _語義規(guī)則_ 。 15一個典型的編譯程序中,不僅包括_詞法分析_、_語法分析_、_中間代碼生成_、 代碼優(yōu)化、目標(biāo)代碼生成等五個部分,還應(yīng)包括表格處理和出錯處理。16 從功能上說,程序語言的語句大體可分為_執(zhí)行性_語句和_說明性_語句兩大類。 17 產(chǎn)生式是用于定義_語法范疇_的一種書寫規(guī)則。18語法分析是依據(jù)語言的_語法_規(guī)則進(jìn)行的,中間代碼產(chǎn)生是依據(jù)語言的_語義_規(guī)
25、進(jìn)行的。19語法分析器的輸入是_單詞符號串_,其輸出是_語法單位_。20產(chǎn)生式是用于定義_語法成分_的一種書寫規(guī)則。21逆波蘭式 ab+c+ d*e- 所表達(dá)的表達(dá)式為_(a+b+c)*d-e_ 。 22語法分析最常用的兩類方法是_自上而下_和_自下而上_分析法。23計算機執(zhí)行用高級語言編寫的程序主要有兩種途徑:_解釋_和_編譯_。24掃描器是_詞法分析器_,它接受輸入的_源程序_,對源程序進(jìn)行_詞法分析_ 并識別出一個個單詞符號,其輸出結(jié)果是單詞符號,供語法分析器使用。 25自上而下分析法采用_移進(jìn)_、歸約、錯誤處理、_接受_等四種操作。26一個 LR 分析器包括兩部分:一個總控程序和_一張
26、分析表_。27后綴式 abc-/所代表的表達(dá)式是_a/(b-c)_。 28局部優(yōu)化是在_基本塊_范圍內(nèi)進(jìn)行的一種優(yōu)化。29詞法分析基于_正則_文法進(jìn)行,即識別的單詞是該類文法的句子。 30語法分析基于_上下文無關(guān)_文法進(jìn)行,即識別的是該類文法的句子。語法分析的有效 工具是_語法樹_。 31分析句型時,應(yīng)用算符優(yōu)先分析技術(shù)時,每步被直接歸約的是_最左素短語_,而應(yīng)用 LR 分析技術(shù)時,每步被直接歸約的是_句柄_。 32語義分析階段所生成的與源程序等價的中間表示形式可以有_逆波蘭_、_三元式表示_與_四元式表示_等。33按 Chomsky 分類法,文法按照_規(guī)則定義的形式_進(jìn)行分類。34一個文法能
27、用有窮多個規(guī)則描述無窮的符號串集合(語言)是因為文法中存在有_遞歸 _定義的規(guī)則。35一個名字的屬性包括_類型_和_作用域_。四、綜合題1. 已知文法 G(E)E T|ETTF|T *FF (E)|i(1)給出句型(T *Fi)的最右推導(dǎo);(2)給出句型(T *Fi)的短語、簡單短語、句柄、素短語、最左素短語。解: (1) 最右推導(dǎo):E -T-F-(E)-(E T)-(E F)-(E i)-(Ti)-(T*Fi)(2) 短語:(T*Fi) ,T*Fi ,T*F,i簡單短語:T*F,i句柄:T*F素短語:T*F,i最左素短語:T*F2. 構(gòu)造正規(guī)式 1(0|1)*101 相應(yīng)的 DFA 。解:先
28、構(gòu)造 NFA :確定化:重新命名,令 AB 為 B、AC 為 C、ABY 為 D 得:所以,可得 DFA 為:3. 文法:S-MH|aH -LSo| K -dML| L -eHfM-K|bLM判斷 G 是否為 LL(1) 文法,如果是,構(gòu)造 LL(1) 分析表。 解:各符號的 FIRST 集和 FOLLOW集為:各產(chǎn)生式SELECT集為:SELECTS-MHd,b,e,#,oS-aaH -LSoeH -#,f,oK -dMLdK -e,#,oL -eHfeM-Kd,e,#,oM- bLMb預(yù)測分析表由于預(yù)測分析表中無多重入口,所以可判定文法是 LL(1)的。4. 對下面的文法 G :E -TE
29、E-+E| T -FTT -T| F- PFF- *F| P-(E)|a|b|(1)計算這個文法的每個非終結(jié)符的 FIRST 集和 FOLLOW 集。 (4 分)(2)證明這個方法是 LL(1) 的。(4 分) (3)構(gòu)造它的預(yù)測分析表。(2 分) 解:(1)計算這個文法的每個非終結(jié)符的 FIRST 集和 FOLLOW集。FIRST 集合有:FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,;FIRST(E)=+, FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,;FIRST(T)=FIRST(T)U=(,a,b, ;FIRST(F)=FIR
30、ST(P)=(,a,b,;FIRST(F)=FIRST(P)=*, ;FIRST(P)=(,a,b,;FOLLOW 集合有:FOLLOW(E)=),#;FOLLOW(E)=FOLLOW(E)=),#; FOLLOW(T)=FIRST(E)UFOLLOW(E)=+,),#;/不包含F(xiàn)OLLOW(T)=FOLLOW(T)=FIRST(E)UFOLLOW(E)=+,),#; FOLLOW(F)=FIRST(T)UFOLLOW(T)=(,a,b,+,),#;/不包含F(xiàn)OLLOW(F)=FOLLOW(F)=FIRST(T)UFOLLOW(T)=(,a,b,+,),#; FOLLOW(P)=FIRST(F
31、)UFOLLOW(F)=*,(,a,b,+,),#;/不包含(2)證明這個方法是 LL(1)的。各產(chǎn)生式的 SELECT 集合有:SELECT(E-TE)=FIRST(T)=(,a,b,;SELECT(E-+E)=+;SELECT(E-)=FOLLOW(E/)=),#SELECT(T-FT)=FIRST(F)=(,a,b,;SELECT(T-T)=FIRST(T)=(,a,b,;SELECT(T-)=FOLLOW(T/)=+,),#;SELECT(F-PF)=FIRST(P)=(,a,b,;SELECT(F-*F)=*;SELECT(F- )=FOLLOW(F)=(,a,b,+,),#;SEL
32、ECT(P-(E)=(SELECT(P-a)=aSELECT(P-b)=bSELECT(P-)=可見,相同左部產(chǎn)生式的 SELECT 集的交集均為空,所以文法 GE是 LL(1)文法。(3)構(gòu)造它的預(yù)測分析表。 文法 GE的預(yù)測分析表如下:5.已知文法 GS 為:S-a|(T)T- T,S|S(1)計算 GS 的 FIRSTVT 和 LASTVT 。 (2)構(gòu)造 GS 的算符優(yōu)先關(guān)系表并說明 GS 是否未算符優(yōu)先文法。 (3)給出輸入串 (a,a)# 的算符優(yōu)先分析過程。解:(1)各符號的 FIRSTVT 和 LASTVT:(2)算符優(yōu)先關(guān)系表:(3)句子(a,a)#分析過程如下:6.已知文法
33、為:S-a|(T)T-T,S|S構(gòu)造它的 LR(0)分析表。解:加入非終結(jié)符 S ,方法的增廣文法為:S-SS-aS-S-(T)T -T,ST -S 下面構(gòu)造它的 LR(0)項目集規(guī)范族為:從上表可看出,不存在移進(jìn)- 歸約沖突以及歸約歸約沖突,該文法是 LR(0)文法。 從而有下面的 LR(0)分析表:7.已知文法為: A -aAd|aAb| 判斷該文法是否是 SLR(1) 文法,若是構(gòu)造相應(yīng)分析表,并對輸入串 ab# 給出分析過程。 解:增加一個非終結(jié)符 S/后,產(chǎn)生原文法的增廣文法有: S-A A -aAd|aAb| 下面構(gòu)造它的 LR(0)項目集規(guī)范族為:從上表可看出, 狀態(tài) I0 和
34、I2 存在移進(jìn)- 歸約沖突,該文法不是 LR(0)文法。對于 I0 來說有:FOLLOW(A)a=b,d,#a= ,所以在 I0 狀態(tài)下面臨輸入符號為 a 時移進(jìn),為 b,d,#時歸約,為其他時報錯。對于 I2 來說有也有與 I0 完全相同的結(jié)論。這就是說,以上的移進(jìn) - 歸約沖突是可以解決的,因此該文法是 SLR(1)文法。其 SLR(1)分析表為:對輸入串 ab#給出分析過程為:編譯原理歷年試題及答案 一 (每項選擇2分,共20分)選擇題 1將編譯程序分成若干個“遍”是為了_b_。 a.提高程序的執(zhí)行效率 b.使程序的結(jié)構(gòu)更加清晰 c.利用有限的機器內(nèi)存并提高機器的執(zhí)行效率 d.利用有限的
35、機器內(nèi)存但降低了機器的執(zhí)行效率 2構(gòu)造編譯程序應(yīng)掌握_d_。 a.源程序 b.目標(biāo)語言 c.編譯方法 d.以上三項都是 3變量應(yīng)當(dāng)c。 a.持有左值 b.持有右值 c.既持有左值又持有右值 d.既不持有左值也不持有右值 4編譯程序絕大多數(shù)時間花在_d_上。 a.出錯處理 b.詞法分析 c.目標(biāo)代碼生成 d.管理表格 5詞法分析器的輸出結(jié)果是_c_。 a.單詞的種別編碼 b.單詞在符號表中的位置 c.單詞的種別編碼和自身值 d.單詞自身值 6正規(guī)式MI和M2等價是指_c_。 a. MI和M2的狀態(tài)數(shù)相等 b.Ml和M2的有向弧條數(shù)相等。 C.M1和M2所識別的語言集相等 d. Ml和M2狀態(tài)數(shù)和
36、有向弧條數(shù)相等 7中間代碼生成時所依據(jù)的是c。 a語法規(guī)則 b詞法規(guī)則 c語義規(guī)則 d等價變換規(guī)則 8后綴式ab+cd+/可用表達(dá)式_b_來表示。 a a+b/c+d b (a+b)/(c+d) c a+b/(c+d) d a+b+c/d 9程序所需的數(shù)據(jù)空間在程序運行前就可確定,稱為_c_管理技術(shù)。 a.動態(tài)存儲 b.棧式存儲 c.靜態(tài)存儲 d.堆式存儲 10.堆式動態(tài)分配申請和釋放存儲空間遵守_d_原則。 a.先請先放 b.先請后放 c.后請先放 d.任意 二(每小題10分,共80分)簡答題 1.畫出編譯程序的總體結(jié)構(gòu)圖,簡述各部分的主要功能。 2. 已知文法GE: EET+|T TTF*
37、 | F FF | a 試證:FF*是文法的句型,指出該句型的短語、簡單短語和句柄. 3為正規(guī)式(a|b) *a(a|b)構(gòu)造一個確定的有限自動機。 4 設(shè)文法G(S): S(L)|a S|a LL,S|S (1) 消除左遞歸和回溯; (2) 計算每個非終結(jié)符的FIRST和FOLLOW; (3) 構(gòu)造預(yù)測分析表。 5 已知文法 A-aAd| aAb| 判斷該文法是否SLR(1)文法,若是構(gòu)造相應(yīng)分析表,并對輸入串a(chǎn)b#給出分析過程。 6 構(gòu)造算符文法GH的算符優(yōu)先關(guān)系(含)。 GH:HH;M|M Md|aHb 7已構(gòu)造出文法G(S) (1)S BB (2)B aB (3)B b 1)。給出DF
38、A圖 2).給出LR分析表 3)假定輸入串為abaab,請給出LR分析過程(即狀態(tài),符號,輸入串的變化過程)。 8 將下面的語句翻譯成四元式序列: while ACBA (1) A-aAd (2)A- aAb (3)A- (2)構(gòu)造識別活前綴的DFA FOLLOW(A)=d,b,# 對于狀態(tài)I0:FOLLOW(A)a= 對于狀態(tài)I1:FOLLOW(A)a= 因為,在DFA中無沖突的現(xiàn)象,所以該文法是SLR(1)文法。 (3)SLR(1)分析表 狀態(tài) ACTION GOTO a B d # A 0 S2 r3 r3 r3 1 1 acc 2 S2 r3 r3 r3 3 3 S5 S4 4 r1
39、r1 r1 5 r2 r2 r2 (4)串a(chǎn)b#的分析過程 步驟 狀態(tài)棧 符號棧 當(dāng)前字符 剩余字符串 動作 1 0 # a b# 移進(jìn) 2 02 #a b # 歸約A- 3 023 #aA b # 移進(jìn) 4 0235 #aAb # 歸約A- aAb 5 01 #A # 接受 6 【解答】 由Md和Ma得:FIRSTVT(M)=d,a; 由H-H;得:FIRSTVT(H)=; 由HM得:FIRSTVT(M) cFIRSTVT(H),即FIRSTVT(H)=;,d,a 由Md和Mb得:LASTVT(M)=d,b; 由H-,;m得:LASTVT(H)=; 由HM得:LASTVT(M)cLASTVT
40、(H),即LASTVT(H)=;,d,b 對文法開始符H,有#H#存在,即有=,#,也即;,#d. #, b#。 對形如Pab,或PaQb,有a=b,由Ma|b得:a=b; 對形如PaR,而bFIRSTVT(R),有ab。 由H;M得:;FIRSTVT(M),即:d,:a 由MaH得:aFIRSTVT(H),即:a;,a;,即:;,d;,b; 由MHb得:LASTVT(H)b,即:;b,db,bb 由此得到算符優(yōu)先關(guān)系表,見表3.5。 7 【解答】 (1)LR分析表如下: (2)分析表 狀態(tài) ACTION GOTO a b # S B 0 s3 s4 1 2 1 acc 2 S3 S4 5 3
41、 s3 s4 6 4 r3 r3 5 R1 R1 r1 6 R2 R2 R2 (3) 句子abaab的分析過程 表:句子abaab的分析過程 步驟 狀態(tài) 符號棧 輸入串 所得產(chǎn)生式 0 #0 # abaad# 1 #03 #a baad# 2 #034 #ab aab# Bb 3 #036 #aB aab# BaB 4 #02 #B aab# 5 #023 #Ba ab# 6 #0233 #Baa b# 7 #02334 #Baab # 8 #02336 #BaaB # 9 #0236 #BaB ad# 10 #025 #BB ad# 11 #01 #S d# 12 # # d# 13 識別成
42、功 8 【解答】 該語句的四元式序列如下(其中E1、E2和E3分別對應(yīng):ACBD, A=1和AD并且關(guān)系運算符優(yōu)先級高): 100 (j,A,C,102) 101(j,_,_,113) /*E1為F*/ 102 (j2,4-3 (3)求出流圖中的循環(huán): 回邊5-2對應(yīng)的循環(huán):2、5、3、4; 回邊4-3對應(yīng)的循環(huán):3、4 編譯原理模擬試題一 一、是非題(請在括號內(nèi),正確的劃,錯誤的劃)(每個2分,共20分) 1計算機高級語言翻譯成低級語言只有解釋一種方式。() 2在編譯中進(jìn)行語法檢查的目的是為了發(fā)現(xiàn)程序中所有錯誤。() 3甲機上的某編譯程序在乙機上能直接使用的必要條件是甲機和乙機的操作系統(tǒng)功能
43、完全相同。 ( ) 4正則文法其產(chǎn)生式為 A-a , A-Bb, A,BVN , a 、 bVT 。 () 5每個文法都能改寫為 LL(1) 文法。 () 6遞歸下降法允許任一非終極符是直接左遞歸的。 () 7算符優(yōu)先關(guān)系表不一定存在對應(yīng)的優(yōu)先函數(shù)。 () 8自底而上語法分析方法的主要問題是候選式的選擇。 () 9LR 法是自頂向下語法分析方法。 () 10簡單優(yōu)先文法允許任意兩個產(chǎn)生式具有相同右部。 () 二、選擇題(請在前括號內(nèi)選擇最確切的一項作為答案劃一個勾,多劃按錯論)(每個4分,共40分) 1 一個編譯程序中,不僅包含詞法分析,_,中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成等五個部分。 A
44、( ) 語法分析 B( )文法分析 C( )語言分析 D( )解釋分析 2 詞法分析器用于識別_。 A( ) 字符串B( )語句C( )單詞 D( )標(biāo)識符 3 語法分析器則可以發(fā)現(xiàn)源程序中的_。 A( ) 語義錯誤 B( ) 語法和語義錯誤 C( ) 錯誤并校正 D( ) 語法錯誤 4 下面關(guān)于解釋程序的描述正確的是_。 (1) 解釋程序的特點是處理程序時不產(chǎn)生目標(biāo)代碼 (2) 解釋程序適用于 COBOL 和 FORTRAN 語言 (3) 解釋程序是為打開編譯程序技術(shù)的僵局而開發(fā)的 A( ) (1)(2) B( ) (1) C( ) (1)(2)(3) D( ) (2)(3) 5 解釋程序處理語言時
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國彈簧椅數(shù)據(jù)監(jiān)測研究報告
- 二零二五年度代持股東權(quán)益保障及股權(quán)激勵計劃合同
- 2025年度礦山開采承包與礦產(chǎn)資源勘查合同
- 二零二五年度帶車司機勞務(wù)輸出合作合同
- 2025年度消費者權(quán)益保護糾紛調(diào)解協(xié)議范本集
- 2025年度新能源項目土地使用權(quán)及發(fā)電廠房轉(zhuǎn)讓合同
- 2025年度消防維保服務(wù)合同及安全責(zé)任承諾書
- 2025年度跨行業(yè)公司整體收購專項協(xié)議
- 二零二五年度綠色物流運輸協(xié)議的目的與可持續(xù)發(fā)展戰(zhàn)略
- 2025年度股東變更協(xié)議書:XX智能硬件企業(yè)股權(quán)變更及市場推廣合作協(xié)議
- Unit5 What day is it today?(教學(xué)設(shè)計)-2023-2024學(xué)年教科版(廣州)英語四年級下冊
- 法院生活費申請書
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南工藝美術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 【課件】學(xué)校后勤管理工作
- 2025-2030年中國聚丙烯酰胺(PAM)市場發(fā)展?fàn)顩r及未來投資戰(zhàn)略決策報告新版
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 課題申報書:產(chǎn)教融合背景下護理專業(yè)技能人才“崗課賽證”融通路徑研究
- 住宅小區(qū)消防設(shè)施檢查方案
評論
0/150
提交評論