編譯原理習(xí)題_第1頁
編譯原理習(xí)題_第2頁
編譯原理習(xí)題_第3頁
編譯原理習(xí)題_第4頁
編譯原理習(xí)題_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、填空題:1-01.編譯程序的工作過程一般可以劃分為詞法分析,語法分析,語義分析,之間代碼生成,代碼優(yōu)化等幾個(gè)基本階段,同時(shí)還會伴有表格處理和出錯(cuò)處理.1-02.若源程序是用高級語言編寫的,目標(biāo)程序是機(jī)器語言程序或匯編程序,則其翻譯程序稱為編譯程序.1-03.編譯方式與解釋方式的根本區(qū)別在于是否生成目標(biāo)代碼.1-04.翻譯程序是這樣一種程序,它能夠?qū)⒂眉渍Z言書寫的程序轉(zhuǎn)換成與其等價(jià)的用乙語言書寫的程序.1-05.對編譯程序而言,輸入數(shù)據(jù)是源程序,輸出結(jié)果是目標(biāo)程序.1-06.如果編譯程序生成的目標(biāo)程序是機(jī)器代碼程序,則源程序的執(zhí)行分為兩大階段:編譯階段和運(yùn)行階段.如果編譯程序生成的目標(biāo)程序是匯編語言程序,則源程序的執(zhí)行分為三個(gè)階段:編譯階段,匯編階段和運(yùn)行階段.1-07.若源程序是用高級語言編寫的,目標(biāo)程序是機(jī)器語言程序或匯編程序,則其翻譯程序稱為編譯程序。1-08.一個(gè)典型的編譯程序中,不僅包括詞法分析、語法分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成等五個(gè)部分,還應(yīng)包括表格處理和出錯(cuò)處理。其中,詞法分析器用于識別單詞。1-09.編譯方式與解釋方式的根本區(qū)別為是否生成目標(biāo)代碼。2-01.所謂最右推導(dǎo)是指:任何一步αβ都是對α中最右非終結(jié)符進(jìn)行替換的。2-02.一個(gè)上下文無關(guān)文法所含四個(gè)組成部分是一組終結(jié)符號、一組非終結(jié)符號、一個(gè)開始符號、一組產(chǎn)生式。2-03.產(chǎn)生式是用于定義語法成分的一種書寫規(guī)則。2-04.設(shè)G[S]是給定文法,則由文法G所定義的語言L(G)可描述為:L(G)={x│Sx,x∈VT*}。2-05.設(shè)G是一個(gè)給定的文法,S是文法的開始符號,如果Sx(其中x∈V*),則稱x是文法的一個(gè)句型。2-06.設(shè)G是一個(gè)給定的文法,S是文法的開始符號,如果Sx(其中x∈VT*),則稱x是文法的一個(gè)句子。3-01.掃描器的任務(wù)是從源程序中識別出一個(gè)個(gè)單詞符號。4-01.語法分析最常用的兩類方法是自上而下和自下而上分析法。4-02.語法分析的任務(wù)是識別給定的終極符串是否為給定文法的句子。4-03.遞歸下降法不允許任一非終極符是直接左遞歸的。4-04.自頂向下的語法分析方法的關(guān)鍵是如何選擇候選式的問題。4-05.遞歸下降分析法是自頂向上分析方法。4-06.自頂向下的語法分析方法的基本思想是:從文法的開始符號開始,根據(jù)給定的輸入串并按照文法的產(chǎn)生式一步一步的向下進(jìn)行直接推導(dǎo),試圖推導(dǎo)出文法的句子,使之與給定的輸入串匹配。5-01.自底向上的語法分析方法的基本思想是:從給定的終極符串開始,根據(jù)文法的規(guī)則一步一步的向上進(jìn)行直接歸約,試圖歸約到文法的開始符號。5-02.自底向上的語法分析方法的基本思想是:從輸入串入手,利用文法的產(chǎn)生式一步一步地向上進(jìn)行直接歸約,力求歸約到文法的開始符號。5-03.簡單優(yōu)先方法每次歸約當(dāng)前句型的句柄,算符優(yōu)先方法每次歸約當(dāng)前句型的最左素短語,二者都是不斷移進(jìn)輸入符號,直到符號棧頂出現(xiàn)可歸約串的尾,再向前找到可歸約串的頭,然后歸約。5-04.在LR(0)分析法的名稱中,L的含義是自左向右的掃描輸入串,R的含義是最左歸約,0的含義是向貌似句柄的符號串后查看0個(gè)輸入符號。5-05.在SLR(1)分析法的名稱中,S的含義是簡單的。6-01.所謂屬性文法是一個(gè)屬性文法是一個(gè)三元組:A=(G,V,F(xiàn)),一個(gè)上下文無關(guān)文法G;一個(gè)屬性的有窮集V和關(guān)于屬性的斷言或謂詞的有窮集F。每個(gè)斷言與文法的某產(chǎn)生式相聯(lián)。6-02.綜合屬性是用于“自下而上”傳遞信息。6-03.繼承屬性是用于“自上而下”傳遞信息。6-04.終結(jié)符只有綜合屬性,它們由詞法分析器提供。7-01.在使用高級語言編程時(shí),首先可通過編譯程序發(fā)現(xiàn)源程序的全部A錯(cuò)誤和B部分錯(cuò)誤.a.語法

b.語義

c.語用

d.運(yùn)行8-01.符號表中的信息欄中登記了每個(gè)名字的屬性和特征等有關(guān)信息,如類型、種屬、所占單元大小、地址等等。8-02.一個(gè)過程相應(yīng)的DISPLAY表的內(nèi)容為現(xiàn)行活動記錄地址和所有外層最新活動記錄的地址。9-01.一個(gè)過程相應(yīng)的DISPLAY表的內(nèi)容為現(xiàn)行活動記錄地址和所有外層最新活動記錄的地址。9-02.常用的兩種動態(tài)存貯分配辦法是棧式動態(tài)分配和堆式動態(tài)分配。9-03.常用的參數(shù)傳遞方式有傳地址,傳值和傳名。10-01.局部優(yōu)化是局限于一個(gè)基本塊范圍內(nèi)的一種優(yōu)化。10-02.代碼優(yōu)化的主要目標(biāo)是如何提高目標(biāo)程序的運(yùn)行速度和如何減少目標(biāo)程序運(yùn)行時(shí)所需的空間。二、單選題:1-10.一個(gè)編譯程序中,不僅包含詞法分析,語法分析,中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成等五個(gè)部分,還應(yīng)包括(1)c表格處理和出錯(cuò)處理.其中,(2)b中間代碼生成和代碼優(yōu)化部分不是每個(gè)編譯程序都必需的.詞法分析器用于識別(3)c單詞

,語法分析器則可以發(fā)現(xiàn)源程序中的(4)d語法錯(cuò)誤.1-11.程序語言的語言處理程序是一種(1)a系統(tǒng)軟件.(2)b解釋程序和編譯程序是兩類程序語言處理程序,他們的主要區(qū)別在于(3)d是否生成目標(biāo)代碼.1-12.匯編程序是將a匯編語言程序翻譯成b機(jī)器語言程序,編譯程序是將c高級語言程序翻譯成da或者b.1-13.下面關(guān)于解釋程序的描述正確的是b解釋程序的特點(diǎn)是處理程序時(shí)不產(chǎn)生目標(biāo)代碼.1-14.高級語言的語言處理程序分為解釋程序和編譯程序兩種.編譯程序有五個(gè)階段,而解釋程序通常缺少(1)e代碼優(yōu)化和(1)b目標(biāo)代碼生成

.其中,(1)e代碼優(yōu)化的目的是使最后階段產(chǎn)生的目標(biāo)代碼更為高效.與編譯系統(tǒng)相比,解釋系統(tǒng)(2)d比較簡單,可移植性好,執(zhí)行速度慢解釋程序處理語言時(shí),大多數(shù)采用的是(3)b先將源程序轉(zhuǎn)化為之間代碼,再解釋執(zhí)行方法.(4)aBASIC就是一種典型的解釋型語言.1-15.用高級語言編寫的程序經(jīng)編譯后產(chǎn)生的程序叫b目標(biāo)程序.用不同語言編寫的程序產(chǎn)生b目標(biāo)程序后,可用g連接程序連接在一起生成機(jī)器可執(zhí)行的程序.在機(jī)器中真正執(zhí)行的是e機(jī)器指令代碼.1-16.要在某一臺機(jī)器上為某種語言構(gòu)造一個(gè)編譯程序,必須掌握下述三方面的內(nèi)容:c源語言

,d目標(biāo)語言,f編譯方法.1-17.由于受到具體機(jī)器主存容量的限制,編譯程序幾個(gè)不同階段的工作往往被組合成(1)d遍,諸階段的工作往往是(2)d穿插進(jìn)行的.1-18.編譯程序與具體的機(jī)器a有關(guān),與具體的語言a有關(guān).1-19.使用解釋程序時(shí),在程序未執(zhí)行完的情況下,a也能重新執(zhí)行已執(zhí)行過的部分.1-20.編譯過程中,語法分析器的任務(wù)就是b(2)分析單詞串是如何構(gòu)成語句和說明的(3)分析語句和說明是如何構(gòu)成程序的(4)分析程序的結(jié)構(gòu)

.1-21.編譯程序是一種常用的b系統(tǒng)軟件.1-22.編寫一個(gè)計(jì)算機(jī)高級語言的源程序后,到正式上機(jī)運(yùn)行之前,一般要經(jīng)過b(1)編輯(2)編譯(3)連接這幾步.1-23.編譯程序必須完成的工作有a(1)詞法分析(2)語法分析(3)語義分析(4)代碼生成.1-24.“用高級語言書寫的源程序都必須通過編譯,產(chǎn)生目標(biāo)代碼后才能投入運(yùn)行”這種說法a不正確.1-25.把匯編語言程序翻譯成機(jī)器可執(zhí)行的目標(biāo)程序的工作是由b匯編器完成的.1-26.編譯程序生成的目標(biāo)程序b不一定是機(jī)器語言的程序.1-27.編譯程序生成的目標(biāo)程序b不一定是可執(zhí)行的程序.1-28.編譯程序是一種B翻譯程序。1-29.按邏輯上劃分,編譯程序第二步工作是C語法分析。1-30.通常一個(gè)編譯程序中,不僅包含詞法分析,語法分析,中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成等五個(gè)部分,還應(yīng)包括C表格處理和出錯(cuò)處理。2-07.文法G所描述的語言是C由文法的開始符號推出的所有終極符串的集合。2-08.喬姆斯基(Chomsky)把文法分為四種類型,即0型、1型、2型、3型。其中3型文法是B正則文法。2-09.文法G[N]=(,{N,B},N,{N→b│bB,B→bN}),該文法所描述的語言是CL(G[N])={b2i+1│i≥0}。2-10.一個(gè)句型中的最左B簡單短語稱為該句型的句柄。2-11.設(shè)G是一個(gè)給定的文法,S是文法的開始符號,如果Sx(其中x∈V*),則稱x是文法G的一個(gè)B句型。2-12.一個(gè)上下文無關(guān)文法G包括四個(gè)組成部分,它們是:一組非終結(jié)符號,一組終結(jié)符號,一個(gè)開始符號,以及一組D產(chǎn)生式。2-13.文法G[E]:E→T∣E+TT→F∣T﹡FF→a∣(E)該文法句型E+F﹡(E+T)的簡單短語是下列符號串中的B②E+T和③F。2-14.若一個(gè)文法是遞歸的,則它所產(chǎn)生的語言的句子A是無窮多個(gè)。3-02.詞法分析器用于識別C單詞。4-07.在語法分析處理中,F(xiàn)IRST集合、FOLLOW集合、SELECT集合均是B終極符集。4-08.編譯程序中語法分析器接收以A單詞為單位的輸入。5-06.在自底向上的語法分析方法中,分析的關(guān)鍵是D選擇候選式。5-07.在LR分析法中,分析棧中存放的狀態(tài)是識別規(guī)范句型C活前綴的DFA狀態(tài)。三、是非題(下列各題,你認(rèn)為正確的,請?jiān)陬}干的括號內(nèi)打“√”,錯(cuò)的打“×”。)1-31.計(jì)算機(jī)高級語言翻譯成低級語言只有解釋一種方式。(×)1-32.在編譯中進(jìn)行語法檢查的目的是為了發(fā)現(xiàn)程序中所有錯(cuò)誤。(×)1-34.甲機(jī)上的某編譯程序在乙機(jī)上能直接使用的必要條件是甲機(jī)和乙機(jī)的操作系統(tǒng)功能完全相同。(×)2-15.正則文法其產(chǎn)生式為Aa,ABb,A,B∈VN,a、b∈VT。(√)4-09.每個(gè)文法都能改寫為LL(1)文法。(×)4-10.遞歸下降法允許任一非終極符是直接左遞歸的。(√)5-08.算符優(yōu)先關(guān)系表不一定存在對應(yīng)的優(yōu)先函數(shù)。(√)5-09.自底而上語法分析方法的主要問題是候選式的選擇。(×)5-10.LR法是自頂向下語法分析方法。(×)5-11.簡單優(yōu)先文法允許任意兩個(gè)產(chǎn)生式具有相同右部。(×)5-12.若一個(gè)句型中出現(xiàn)了某產(chǎn)生式的右部,則此右部一定是該句型的句柄。(×)5-13.一個(gè)句型的句柄一定是文法某產(chǎn)生式的右部。(√)7-02.數(shù)組元素的地址計(jì)算與數(shù)組的存儲方式有關(guān)。(√)8-03.在程序中標(biāo)識符的出現(xiàn)僅為使用性的。(×)9-04.對于數(shù)據(jù)空間的存貯分配,F(xiàn)ORTRAN采用動態(tài)貯存分配策略。(×)9-05.在程序中標(biāo)識符的出現(xiàn)僅為使用性的。(×)10-03.僅考慮一個(gè)基本塊,不能確定一個(gè)賦值是否真是無用的。(√)10-04.削減運(yùn)算強(qiáng)度破壞了臨時(shí)變量在一基本塊內(nèi)僅被定義一次的特性。(×)10-05.在中間代碼優(yōu)化中循環(huán)上的優(yōu)化主要有不變表達(dá)式外提和削減運(yùn)算強(qiáng)度。(√)四、名詞解釋1-35.掃描遍____指編譯程序?qū)υ闯绦蚧蛑虚g代碼程序從頭到尾掃描一次。2-16.短語——設(shè)G[Z]是給定文法,w=xuy∈V+,為該文法的句型,如果滿足下面兩個(gè)條件:①ZxUy;②Uu;則稱句型xuy中的子串u是句型xuy的短語。2-17.簡單短語——設(shè)G[Z]是給定文法,w=xuy∈V+,為該文法的句型,如果滿足下面兩個(gè)條件:①ZxUy;②Uu;則稱句型xuy中的子串u是句型xuy的簡單短語(或直接短語)。2-18.句柄——一個(gè)句型中的最左簡單短語稱為該句型的句柄。4-11.語法分析--按文法的產(chǎn)生式識別輸入的符號串是否為一個(gè)句子的分析過程。4-12.選擇符集合SELECT--給定上下文無關(guān)文法的產(chǎn)生式A→α,A∈VN,α∈V*,若αε,則SELECT(A→α)=FIRST(α),其中如果αε,則SELECT(A→α)=FIRST(α\ε)∪FOLLOW(A),FIRST(α\ε)表示FIRST(α)的非{ε}元素。RR5-14.活前綴——若S′αAωαβω是文法G′中的一個(gè)規(guī)范推導(dǎo),G′是G的拓廣文法,符號串γ是αβ的前綴,則稱γ是G的,也是G′的一個(gè)活前綴。其中S'為文法開始符號。或:可歸前綴的任意首部。RR5-15.可歸前綴——是指規(guī)范句型的一個(gè)前綴,這種前綴不含句柄之后的任何符號。5-16.LR(0)項(xiàng)目——把產(chǎn)生式右部某位置上標(biāo)有圓點(diǎn)的產(chǎn)生式稱為相應(yīng)文法的一個(gè)LR(0)項(xiàng)目。5-17.算符優(yōu)先文法——設(shè)有一不含ε產(chǎn)生式的算符文法G,如果對任意兩個(gè)終結(jié)符對a,b之間至多只有、和三種關(guān)系中的一種成立,則稱G是一個(gè)算符優(yōu)先文法。5-18.最左素短語——設(shè)有文法G[S],其句型的素短語是一個(gè)短語,它至少包含一個(gè)終結(jié)符,并除自身外不包含其它素短語,最左邊的素短語稱最左素短語。6-05.語義規(guī)則——對于文法的每個(gè)產(chǎn)生式都配備了一組屬性的計(jì)算規(guī)則,稱為語義規(guī)則。6-06.翻譯方案——將屬性文法中的語義規(guī)則用花括號{}括起來,插在產(chǎn)生式右部的合適地方,指明語義規(guī)則的計(jì)算次序,陳述一些細(xì)節(jié),得到一種語義動作與語法分析交錯(cuò)的表示方法,以表述語義動作在語法分析過程中的執(zhí)行時(shí)刻,稱之為翻譯方案。7-03.后綴式——一種把運(yùn)算量(操作數(shù))寫在前面把算符寫在后面(后綴)的表示法。即一個(gè)表達(dá)式E的后綴形式可以如下定義:如果E是一個(gè)變量或常量,則E的后綴式是E自身。如果E是E1opE2形式的表達(dá)式,這里op是任何二元操作符,則E的后綴式為E1’E2’op,這里E1’和E2’分別為E1和E2的后綴式。如果E是(E1)形式的表達(dá)式,則E1的后綴式就是E的后綴式。7-04.四元式——一個(gè)四元式是一個(gè)帶有四個(gè)域的記錄結(jié)構(gòu),這四個(gè)域分別稱為op、arg1、arg2及result。域op包含一個(gè)代表運(yùn)算符的內(nèi)部碼。9-06.活動答:一個(gè)過程的活動指的是該過程的一次執(zhí)行。就是說,每次執(zhí)行一個(gè)過程體,產(chǎn)生該過程體的一個(gè)活動。9-07.活動記錄答:為了管理過程在一次執(zhí)行中所需要的信息,使用一個(gè)連續(xù)的存儲塊,這樣一個(gè)連續(xù)的存儲塊稱為活動記錄。9-08.活動的生存期答:指的是從執(zhí)行某過程體第一步操作到最后一步操作之間的操作序,包括執(zhí)行過程時(shí)調(diào)用其它過程花費(fèi)的時(shí)間。10-06.基本塊的DAG。答:一個(gè)基本塊的DAG是一種其結(jié)點(diǎn)帶有下述標(biāo)記或附加信息的DAG。

(1)圖的葉結(jié)點(diǎn)(沒有后繼的結(jié)點(diǎn))以一標(biāo)識符(變量名)或常數(shù)作為標(biāo)記,表示該結(jié)點(diǎn)代表該變量或常數(shù)的值。如果葉結(jié)點(diǎn)用來代表某變量A的地址,則用addr(A)作為該結(jié)點(diǎn)的標(biāo)記。通常把葉結(jié)點(diǎn)上作為標(biāo)記的標(biāo)識符加上下標(biāo)0,以表示它是該變量的初值。(2)圖的內(nèi)部結(jié)點(diǎn)(有后繼的結(jié)點(diǎn))以一運(yùn)算符作為標(biāo)記,表示該結(jié)點(diǎn)代表應(yīng)用該運(yùn)算符對其后繼結(jié)點(diǎn)所代表的值進(jìn)行運(yùn)算的結(jié)果。(3)圖中各個(gè)結(jié)點(diǎn)上可能附加一個(gè)或多個(gè)標(biāo)識符,表示這些變量具有該結(jié)點(diǎn)所代表的值。五、簡答題:2-19什么是句子?什么是語言?答:設(shè)G是一個(gè)給定的文法,S是文法的開始符號,如果Sx(其中x∈VT*),則稱x是文法的一個(gè)句子。設(shè)G[S]是給定文法,則由文法G所定義的語言L(G)可描述為:L(G)={x│Sx,x∈VT*}。2-20.已知文法G[E]為:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i①該文法的開始符號(識別符號)是什么?②請給出該文法的終結(jié)符號集合VT和非終結(jié)符號集合VN。③找出句型T+T*F+i的所有短語、簡單短語和句柄。解:①該文法的開始符號(識別符號)是E。②該文法的終結(jié)符號集合VT={+、-、*、/、(、)、i}。非終結(jié)符號集合VN={E、T、F}。③句型T+T*F+I的短語為i、T*F、第一個(gè)T、T+T*F+i;簡單短語為i、T*F、第一個(gè)T;句柄為第一個(gè)T。2-21.已知文法G[S]為:S→dABA→aA|aB→Bb|ε①G[S]產(chǎn)生的語言是什么?②G[S]能否改寫為等價(jià)的正規(guī)文法?解:①G[S]產(chǎn)生的語言是L(G[S])={danbm│n≥1,m≥0}。②G[S]能改寫為等價(jià)的正規(guī)文法,其改寫后的等價(jià)的正規(guī)文法G[Sˊ]為:Sˊ→dAA→aA|aB|aB→bB|b2-22.設(shè)有語言L(G)={adaR|a∈(a,b)*,aR為a之逆},試構(gòu)造產(chǎn)生此語言的上下文無關(guān)文法G。解:根據(jù)題義,可知aR為a之逆的含義就是句子中的符號a、b以d為中心呈左右對稱出現(xiàn);由于a∈(a,b)*,所以a、b的個(gè)數(shù)可以為零。所以可構(gòu)造產(chǎn)生此語言的上下文無關(guān)文法G[S]為:S→aSa|bSb|d3-03.簡述DFA與NFA有何區(qū)別?答:DFA與NFA的區(qū)別表現(xiàn)為兩個(gè)方面:一是NFA可以若干個(gè)開始狀態(tài),而DFA僅只一個(gè)開始狀態(tài)。另一方面,DFA的映象M是從K×∑到K,而NFA的映象M是從K×∑到K的子集,即映象M將產(chǎn)生一個(gè)狀態(tài)集合(可能為空集),而不是單個(gè)狀態(tài)。3-04.試給出非確定自動機(jī)的定義。答:一個(gè)非確定的有窮自動機(jī)(NFA)M是一個(gè)五元組:M=(K,Σ,f,S,Z)。其中:1.K是一個(gè)有窮集,它的每個(gè)元素稱為一個(gè)狀態(tài);2.Σ是一個(gè)有窮字母表,它的每個(gè)元素稱為一個(gè)輸入符號,所以也稱Σ為輸入符號表;3.f是狀態(tài)轉(zhuǎn)換函數(shù),是在K×Σ*→K的子集的映射,即,f:K×Σ*→2K;表明在某狀態(tài)下對于某輸入符號可能有多個(gè)后繼狀態(tài);4.S﹙K是一個(gè)非空初態(tài)集;5.Z﹙K是一個(gè)終態(tài)集(可空)。3-05.為正規(guī)式(a|b)*a(a|b)構(gòu)造一個(gè)等價(jià)的確定的有限自動機(jī)。解答:a,baaba,baab012ddεd··ddεd··dddd+startd―εSADBCEGH注:帶+號的結(jié)點(diǎn)為初始狀態(tài);帶―號的結(jié)點(diǎn)為終止?fàn)顟B(tài)―――+―+――+――ddddd··dddd+―ddd·+SADBCEGH注:帶+號的結(jié)點(diǎn)為初始狀態(tài);帶―號的結(jié)點(diǎn)為終止?fàn)顟B(tài)+―d·+―d·SABCDEGHAABCEBCEBCDEHHGDG+[SA][A][BCE][G][DG][H][DH][A][A][BCE][BCE][BCE][H][DH][H][DH][G][G][DG]――――ddd·ddd+―d··+SAAAHBCEADGADHA注:帶+號的結(jié)點(diǎn)為初始狀態(tài);帶―號的結(jié)點(diǎn)為終止?fàn)顟B(tài)G3-07.給定下列自動機(jī):其中:開始狀態(tài):0終止?fàn)顟B(tài):2a其中:開始狀態(tài):0終止?fàn)顟B(tài):2aaa0bbb12(2)給出此DFA的正則表達(dá)式。解答:(1):有狀態(tài)矩陣如圖:abab001201012-21212ab00,1212-212-02aaba101bbb極小化后:02b-02aaba101bbb極小化后:02babb1a4-13.消除下列文法G[E]的左遞歸。E→E-T∣TT→T/F∣FF→(E)∣i解答:消除文法G[E]的左遞歸后得到:E→TE’E’→-TE’∣εT→FT’T’→/FT’∣εF→(E)∣i4-14.在LL(1)分析法中,LL分別代表什么含義?答:第一個(gè)L代表從左到右的掃描,第二個(gè)L代表每次進(jìn)行最左推導(dǎo)。4-15.自頂向下分析思想是什么?答:從開始符出發(fā)導(dǎo)出句型并一個(gè)符號一個(gè)符號地與給定終結(jié)符串進(jìn)行匹配。如果全部匹配成功,則表示開始符號可推導(dǎo)出給定的終結(jié)符串。因此判定給定終結(jié)符號串是正確句子。4-16.自頂向下的缺點(diǎn)是什么?答:在推導(dǎo)過程中,如果對文法不做限制。那么產(chǎn)生式的選擇成為無根據(jù)的,只好一一去試所有可能的產(chǎn)生式,直至成功為止。這種方法的致命弱點(diǎn)是不斷地回溯,大大影響速度。4-17.LL(1)文法的定義是什么?答:一個(gè)上下文無關(guān)文法是LL(1)文法的充分必要條件是每個(gè)非終結(jié)符A的兩個(gè)不同產(chǎn)生式,A→α,A→β;滿足SELECT(A→α)∩SELECT(A→β)=Ф。其中,α、β不能同時(shí)ε。4-18.什么是文法的左遞歸?答:一個(gè)文法含有下列形式的產(chǎn)生式之一時(shí):1)A→Aβ,A∈VN,β∈V*2)A→Bβ,B→Aα,A、B∈VN,α、β∈V*則稱該文法是左遞歸的。4-19.遞歸下降法的主要思想是什么?答:對每個(gè)非終結(jié)符按其產(chǎn)生式結(jié)構(gòu)寫出相應(yīng)語法分析子程序。因?yàn)槲姆ㄟf歸相應(yīng)子程序也遞歸,子程序的結(jié)構(gòu)與產(chǎn)生式結(jié)構(gòu)幾乎一致。所以稱此種方法稱為遞歸子程序法或遞歸下降法。5-19.自底向上分析法的原理是什么?答:在采用自左向右掃描,自底向上分析的前提下,該類分析方法是從輸入符號串入手,通過反復(fù)查找當(dāng)前句型的句柄(最左簡單短語),并使用文法的產(chǎn)生式把句柄歸約成相應(yīng)的非終極符來一步步地進(jìn)行分析的。最終把輸入串歸約成文法的開始符號,表明分析成功。5-20.簡單優(yōu)先方法基本思想是什么?答:簡單優(yōu)先方法基本思想是首先規(guī)定文法符號之間的優(yōu)先關(guān)系和結(jié)合性質(zhì),然后在利用這種關(guān)系,通過比較兩個(gè)相鄰的符號之間的優(yōu)先順序來確定句型的“句柄”并進(jìn)行歸約。5-21.三種優(yōu)先關(guān)系的定義是什么?答:三種優(yōu)先關(guān)系的定義是:1.sisj當(dāng)且僅當(dāng)存在形如下面的產(chǎn)生式U→…SiSj…2.sisj當(dāng)且僅當(dāng)存在形如下面的產(chǎn)生式U→…SiW…的生產(chǎn)式,且有WSj3.sisj當(dāng)且僅當(dāng)存在形如下面的產(chǎn)生式U→…VW…的生產(chǎn)式,且有VSi和WSj5-22.如何確定簡單優(yōu)先文法的句柄?答:設(shè)S1S2…Sn是簡單優(yōu)先文法的規(guī)范句型,其子串SiSi+1…Sj是滿足下列條件的最左子串:Si-1Si

SiSi+1……Sj-1Sj

SjSj+1則SiSi+1…Sj定是S1S2…Sn的句柄。Z→CZ→CSC→ifEthenS→A=EE→E∨AE→AA→i其中:Z、C、S、A、E∈VN;if、then、=、∨、i∈VT構(gòu)造此文法的LR(0)項(xiàng)目集規(guī)范族,并給出識別活前綴的DFA。構(gòu)造其SLR(1)分析表。I0:Z′→.ZZ→.CI0:Z′→.ZZ→.CSC→.ifEthenI1:Z′→Z.I2:Z→C.SS→.A=EA→.iI3:C→if.EthenE→.E∨AE→.AA→.iI4:Z→CS.I5:S→A.=EI6:A→i.I7:C→ifE.thenE→E.∨AI8:E→A.I9:S→A=.EE→.E∨AE→.AA→.iI10:C→ifEthen.I11:E→E∨.AA→.iI12:S→A=E.E→E.∨AI13:E→E∨A.CSiAiCSiAi=iEAZI0I1I6I5I2I3I7I9I12I13I11I10I8I4A∨then∨iifEAFollow(C)={i}Follow(S)={#}Follow(E)={#,∨,then}Follow(A)={=,#,∨,then}則可構(gòu)造SLR(1)分析表為:ACTIONGOTO0ifthen=∨i#ZCSEA0S3121OK2S6453S6784r15S96r6r6r6r67S10S118r5r5r59S612810r211S61312S11r313r4r4r4I1I1:S′→S.I0:S′→.SS→.aAI2:S→a.AA→.AbA→.baI3:S→aA.A→A.bAI4:A→Ab.A→b.bbS5-24.設(shè)有文法G[S]:S→S→aAA→AbA→b解答:(1).首先拓廣文法:在G中加入產(chǎn)生式0.S′→S,然后得到新的文法G′:0.S′→S0.S′→S1.S→aA2.A→Ab3.A→b6-07.語法制導(dǎo)翻譯方法的基本思想是什么?答:在語法分析過程中,每當(dāng)使用一條產(chǎn)生式進(jìn)行推導(dǎo)或歸約時(shí),就執(zhí)行該產(chǎn)生式所對應(yīng)的語義動作進(jìn)行屬性計(jì)算,完成對輸入符號串的翻譯。6-08.何謂“語法制導(dǎo)翻譯”?答:在語法分析過程中,隨著分析的步步進(jìn)展,根據(jù)每個(gè)產(chǎn)生式所對應(yīng)的語義子程序(或語義規(guī)則描述的語義動作)進(jìn)行翻譯的辦法稱作語法制導(dǎo)翻譯。6-09.在一個(gè)屬性文法中,對應(yīng)于每個(gè)產(chǎn)生式A→a都有一套與之相關(guān)聯(lián)的語義規(guī)則,每條規(guī)則的形式為b:=f(c1,c2…,ck),其中對于b的要求是什么?答:語義規(guī)則中的左部屬性變量b被規(guī)定為只能是下述兩種變量:對應(yīng)產(chǎn)生式左部符號的綜合屬性變量;對應(yīng)產(chǎn)生式右部符號的繼承屬性變量。6-10.給定文法及相應(yīng)的翻譯方案:S→bTc{print(“0”)}SS→bTc{print(“0”)}S→a{print(“1”)}T→R{print(“2”)}R→R/S{print(“3”)}R→S{print(“4”)}SbcRSbcRRS/SaRSRSRbcT//TbcT則對于句型bR/bTc/bSc/ac,處理完該句型后輸出是:4245130341246-10.給定文法及相應(yīng)的翻譯方案:)E→E+E→E+T{print(“5”)}E→T{print(“4”)}T→T*F{print(“3”)}T→F{print(“2”)}F→(E){print(“1”)}F→i{print(“0”)}EETFEETF()ETiTTFFTFT()+**EET+則對于句型T+(T*(F+T)*i),處理完該句型后輸出是:4245130341247-05.常用的中間語言種類有哪幾種?答:有逆波蘭式、三地址代碼、抽象語法樹和DAG。7-06.給定下列中綴式,分別寫出等價(jià)的逆波蘭表示(運(yùn)算符優(yōu)先級按常規(guī)理解)。(1)―a≤b∧a>0∨b<0解答:逆波蘭表示為:a―b≤a0>∧b0<∨。(2)a―(a*b―d)*(a―b*d)/d解答:逆波蘭表示為:aab*d―abd*―*d/―。(3)―a+b≤0∨a<0∧(a―b)>2解答:逆波蘭表示為:a―b+0≤a0<ab―2>∧∨。(4)a*(b*c―a)≤b+c∧d解答:逆波蘭表示為:abc*a―*bc+≤d∧。7-07給定下列中綴式,分別寫出等價(jià)的后綴式和四元式(運(yùn)算符優(yōu)先級按常規(guī)理解)。(1)(a+b*c)/(a+b)-d解:后綴式:abc*+ab+/d-四元式:①(*,b,c,t1)②(+,a,t1,t2)③(+,a,b,t3④(/,t2,t3,t4)⑤(-,t4,d,t5)(2)x+y≤z∨a>0解:后綴式:xy+z≤a0>∨四元式:①(+,x,y,t1)②(≤,t1,z,t2)③(>,a,0,t3④(∨,t2,t3,t4)(3)x+y≤0∨(x―y)>2解:后綴式:xy+0≤xy-2>∨四元式:①(+,x,y,t1)②(≤,t1,0,t2)③(-,x,y,t3④(>,t3,2,t4)⑤(∨,t2,t4,t5)(4)a:=(b*c―a)*a解:后綴式:abc*a-a*:=四元式:①(*,b,c,t1)②(-,t1,a,t2)③(*,t2,a,t3④(:=,t3,,a)8-04.符號表的組織方式有哪幾種?答:一個(gè)編譯程序?qū)Ψ柋淼目傮w組織可有三種選擇:第一種:把屬性種類完全相同的那些符號組織在一起,構(gòu)造出表項(xiàng)是分別為等長的多個(gè)符號表。這樣組織的最大優(yōu)點(diǎn)是每個(gè)符號表的屬性個(gè)數(shù)和結(jié)構(gòu)完全相同。則表項(xiàng)是等長的,并且表項(xiàng)中的每個(gè)屬性欄都是有效的,對于單個(gè)符號表示來說,這樣使得管理方便一致,空間效率高。但這樣組織的主要缺點(diǎn)是一個(gè)編譯程序?qū)⑼瑫r(shí)管理若干個(gè)符號表,增加了總體管理的工作量和復(fù)雜度。而且對各類符號共同屬性的管理必須設(shè)置重復(fù)的運(yùn)行機(jī)制。使得符號表的管理顯得臃腫。

第二種:把所有語言中的符號都組織在一張符號表中。組成一張包括了所有屬性的龐大的符號表。這樣組織方式的最大優(yōu)點(diǎn)是總體管理非常集中單一,且不同種類符號的共同屬性可一致地管理和處理。這樣組織所帶來的缺點(diǎn)是,由于屬性的不同,為完整表達(dá)各類符號的全部屬性必將出現(xiàn)不等長的表項(xiàng),以及表項(xiàng)中屬性位置的交錯(cuò)重疊的復(fù)雜情況,這就極大地增加了符號表管理的復(fù)雜度。為使表項(xiàng)等長且實(shí)現(xiàn)屬性位置的唯一性,可以把所有符號的可能屬性作為符號表項(xiàng)屬性。這種組織方法可能有助于降低符號表管理復(fù)雜性,但對某個(gè)具體符號,可能增加了無用的屬性空間,從而增加了空間開銷。第三種:折衷方式是根據(jù)符號屬性相似程度分類組織成若干張表,每張表中記錄的符號都有比較多的相同屬性。這種折衷的組織方式在管理復(fù)雜性及時(shí)空效率方面都取得折衷的效果,并且對復(fù)雜性和效率的取舍可由設(shè)計(jì)者根據(jù)自己的經(jīng)驗(yàn)和要求及目標(biāo)系統(tǒng)的客觀環(huán)境和需求進(jìn)行選擇和調(diào)整。8-05.在整個(gè)編譯期間,對于符號表的操作有哪些?答:在整個(gè)編譯期間,對于符號表的操作大致可歸納為五類:·對給定名字,查詢此名是否已在表中;·往表中填入一個(gè)新的名字;·對給定名字,訪問它的某些信息;·對給定名字,往表中填寫或更新它的某些信息;·刪除一個(gè)或一組無用的項(xiàng)。8-06.符號表的作用有哪些?答:在編譯程序中符號表用來存放語言程序中出現(xiàn)的有關(guān)標(biāo)識符的屬性信息,這些信息集中反映了標(biāo)識符的語義特征屬性。起主要作用是:①收集符號屬性;②上下文語義的合法性檢查的依據(jù);③作為目標(biāo)代碼生成階段地址分配的依據(jù)。9-09.運(yùn)行時(shí)存儲器的劃分是怎樣的?答:運(yùn)行時(shí)存儲器的劃分如下圖所示。目標(biāo)代碼靜態(tài)數(shù)據(jù)棧目標(biāo)代碼靜態(tài)數(shù)據(jù)棧堆答:編譯程序提供的對代碼優(yōu)化必須遵循的原則是:等價(jià)原則。經(jīng)過優(yōu)化后不應(yīng)改變程序運(yùn)行的結(jié)果。有效原則。使優(yōu)化后所產(chǎn)生的目標(biāo)代碼運(yùn)行時(shí)間較短,占用的存儲空間較小。合算原則。應(yīng)盡可能以較低的代價(jià)取得較好的

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論