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

下載本文檔

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

文檔簡介

1、第一章什么是編譯器?編譯程序的結(jié)構(gòu)分為幾個階段,各階段的任務(wù)是什么?遍、編譯前端及編譯后端的含義?編譯程序的生成方式有哪些?第二章1. 寫一文法,使其語言是偶正整數(shù)的集合。要求:(1)允許0打頭(2)不允許0打頭解:(1)允許0開頭的偶正整數(shù)集合的文法EtNT|DTtNT|DNtD|1|3|5|7|9Dt0|2|4|6|8(2)不允許0開頭的偶正整數(shù)集合的文法EtNT|DTtFT|GNtD|1|3|5|7|9Dt2|4|6|8FtN|0GtD|02. 證明下述文法G表達(dá)式是二義的。表達(dá)式:=a|(表達(dá)式)|表達(dá)式運(yùn)算符表達(dá)式運(yùn)算符:=+卜|*|/解:可為句子a+a*a構(gòu)造兩個不同的最右推導(dǎo):最

2、右推導(dǎo)1表達(dá)式=表達(dá)式運(yùn)算符表達(dá)式=表達(dá)式運(yùn)算符a.表達(dá)式*a.表達(dá)式運(yùn)算符表達(dá)式*a表達(dá)式運(yùn)算符a*a.表達(dá)式+a*aa+a*a最右推導(dǎo)2表達(dá)式=表達(dá)式運(yùn)算符表達(dá)式.表達(dá)式運(yùn)算符表達(dá)式運(yùn)算符表達(dá)式.表達(dá)式運(yùn)算符表達(dá)式運(yùn)算符a.表達(dá)式運(yùn)算符表達(dá)式*a表達(dá)式運(yùn)算符a*a.表達(dá)式+a*aa+a*a3.給出生成下述語言的上下文無關(guān)文法:(1) anbnambm|n,m>=0(2) 1n0m1m0n|n,m>=0解:(1)anbnambm|n,m>=0StAAAtaAb|e(2)1nOmlmOn|n,m>=041S0|A20A1|£第三章1、構(gòu)造一個DFA它接收刀=a

3、,b上所有滿足下述條件的字符串:字符串中的每個a都有至少一個b直接跟在其右邊。解:(b*abb*)*已知刀=a,b,根據(jù)題意得出相應(yīng)的的正規(guī)式為:根據(jù)正規(guī)式畫出相應(yīng)的DFAM如下圖所示用子集法將其確定化b*abb*IIaIbX,1,2,3,Y42,345,6,1,2,3,Y2,342,35,6,1,2,3,Y46,1,2,3,Y6,1,2,3,Y46,1,2,3,YIIaIb0121一3212314414由DFA得狀態(tài)圖順序重新命名DFAM第四章練習(xí)1:文法GV:VtN|NEEtV|V+E是否為LL(1)文法,如不是,如何將其改造成LL(1)文法。解:LL(1)文法的基本條件是不含左遞歸和回溯

4、(公共左因子),而GV中含有回溯,所以先消V't£|E't£|+E除回溯得到文法GV:G'V:VtNVEtVE'ENti由LL(1)文法的充要條件可證GV是LL(1)文法練習(xí)2:有文法Gs:StbaAtBS|dBtaA|bS|c(1) 證明文法G是LL(1)文法。構(gòu)造LL(1)分析表。A的任何兩個不同產(chǎn)生式Ata|(3)寫出句子adccd的分析過程解:(1)一個LL(1)文法的充要條件是:對每一個非終結(jié)符3,有下面的條件成立: FIRST(a)nFIRST(3)=; 若3*=£,則有FIRST(a)nFOLLOW(A)對于文法Gs:

5、StbaatBS|dBtaA|bS|c其FIRST集如下:FIRST(B)=a,b,c;FIRST(A)=a,b,c,d;FIRST(S)=a,b,c。其FOLLOW如下:首先,F(xiàn)OLLOW(S)=#;對StBA有:FIRST(A)£加入FOLLOW(B),即FOLLOW(B)=a,b,c,d;對AtBS有:FIRST(S)s加入FOLLOW(B),即FOLLOW(B)=a,b,c,d;對BtaA有:FOLLOW(B加入FOLLOW(A),即FOLLOW(A)=a,b,c,d;對BtbS有:FOLLOW(B加入FOLLOW(S),即FOLLOW(S)=#,a,b,c,d;由AtBS|

6、d得:FIRST(BS)nFIRST(d)=a,b,cnd=;由BtaA|bS|c得:FIRST(aA)nFIRST(bS)nFIRST(c)=anbnc=。由于文法Gs不存在形如3tS的產(chǎn)生式,故無需求解形如FIRST(a)nFOLLOW(A的值。也即,文法GS是一個LL(1)文法。(2) 由Gs:StBAAtBS|dBtaA|bS|c的FIRST(B)=a,b,c;FOLLOW(B)=a,b,c,d;FIRST(A)=a,b,c,d;FOLLOW(A)=a,b,c,d;FIRST(S)=a,b,c。FOLLOW(S)=#,a,b,c,d可構(gòu)造LL(1)預(yù)測分析表如下:abcd#SStBAS

7、tBAStBAAAtBSAtBSAtBSAtdBBtaABtbSBtcSStBAStBAStBAAAtBSAtBSAtBSAtdBBtaABtbSBtc(3)在分析表的控制下,句子adccd的分析過程如下:棧當(dāng)前輸入符號輸入串說明#Sadccd#Stba#ABadccd#BtaA#AAaadccd#AAdccd#ATd#Addccd#Accd#AtBS#SBccd#Btc#Scccd#Scd#StBA#ABcd#Btc#Accd#Ad#ATd#dd#分析成功第五章1已知文法GS為:Sta|A|(T)T,S|S(1) 計算GS的FIRSTVT和LASTVT(2) 構(gòu)造GS的算符優(yōu)先關(guān)系表并說明G

8、S是否為算符優(yōu)先文法。(3) 給出輸入串(a,(a,a)#的算符優(yōu)先分析過程。解:文法:Sta|A|(T)TtT,S|S展開為:StaStASt(T)TtT,STts(1)FIRSTVT-LASTVT表非終結(jié)符FIRSTVT集LASTVT集SaA(aA)TaA(,aA),(2)算符優(yōu)先關(guān)系表如下:表中無多重入口所以是算符優(yōu)先(OPG文法。aA()5#a>>>>A><>>t<<<><<<>><<<>(3)輸入串(a,(a,a)#的算符優(yōu)先分析過程為:棧當(dāng)前字符剩余輸入串動

9、作#(a,(a,a)#Movein#(a,(a,a)#Movein#(aJ(a,a)#Reduce:Sta#(NJ(a,a)#Movein#(N,(a,a)#Movein#(N,(a,a)#Movein#(N,(aJa)#Reduce:Sta#(N,(NJa)#Movein#(N,(N,a)#Movein#(N,(N,a)#Reduce:Sta#(N,(N,N)#Reduce:TtT,S#(N,(N)#Movein#(N,(N)#Reduce:St(T)#(N,N)#Reduce:TtT,S#(N)#Movein#(N)#Reduce:St(T)#N#第八早例1有文法:St(L)|aLtL,S

10、|S(或者說為此文法寫一個語法制導(dǎo)定義),它輸出配對括號輸出是2。S'tS,設(shè)num為綜合屬性,代表值屬性,則語法制導(dǎo)定給此文法配上語義動作子程序的個數(shù)。如對于句子(a,(a,a),解:加入新開始符號S'和產(chǎn)生式義如下:產(chǎn)生式語義規(guī)則S'tSprint(S.num)St(L)S.num:=L.num+1StaS.num:=0LtL1,SL.num:=L1.num+S.numLTSL.num:=S.num例2:構(gòu)造屬性文法,能對下面的文法,只利用綜合屬性獲得類型信息。DtL,id|LLttidTtint|real解:屬性文法(語法制導(dǎo))定義:產(chǎn)生式語義規(guī)則DtL,idD.

11、type:=L.typeaddtype(id.entry,L.type)DtlD.type:=L.typeLttidL.type:=T.typeaddtype(id.entry,T.type)TtintT.type:=integerTtrealT.type:=real第七章例1:給出下面表達(dá)式的逆波蘭表示(后綴式):(1) a*(-b+c)(2) if(x+y)*z=Othens:=(a+b)*celses:=a*b*c解:(1)ab-c+*(2)xy+z*0=sab+c*:=sab*c*:=¥(注:Y表示if-then-else運(yùn)算)例2:請將表達(dá)式-(a+b)*(c+d)-(a+

12、b)分別表示成三元式、間接三元式和四元式序列。解:三元式間接三兀式(1)(+a,b)間接三兀式序列間接碼表(2)(+c,d)(1)(+a,b)(1)(3)(*(1),(2)(+c,d)(2)(4)(-(3),/)(3)(*(1),(2)(3)(5)(+a,b)(-(3),/)(4)(6)(-(4),(5)(5)(-(4),(1)(1)(5)四兀式(1)(+,a,b,t1)(2)(+,c,d,t2)(3)(*,t1,t2,t3)(4)(-,t3,/,t4)(5)(+,a,b,t5)(6)(-,t4,t5,t6)例3:請將下列語句while(A<B)doif(C>D)thenX:=Y+

13、Z翻譯成四元式解:假定翻譯的四元式序列從(100)開始:(100) ifA<Bgoto(102)(101) goto(107)(102) ifC>Dgoto(104)(103) goto(100)(104) T:=Y+Z(105) X:=T(106) goto(100)(107)例4:寫出for語句的翻譯方案解:產(chǎn)生式動作StforEdoS1S.begin:=newlabelS.first:=newtempS.last:=newtemp“:=”E.init)E.final)S.curr:=newtempS.code:=gen(S.first|gen(S.lastgoto”S.nex

14、t)goto”S.next)|gen(“if”S.first“>”S.last|gen(S.curr“:=”S.first)|gen(S.begin“:”)|gen(“if”S.curr“>”S.Last|S1.code|gen(S.curr:=succ(S.curr)|gen(“goto”S.begin)Etv:=initialtofinalE.init:=initial.placeE.final:=final.place第八章例1:C語言中規(guī)定變量標(biāo)識符的定義可分為extern,externstatic,auto,localstatic和register五種存儲類:(1) 對五

15、種存儲類所定義的每種變量,分別說明其作用域。(2) 試給出適合上述存儲類變量的內(nèi)存分配方式。(3) 符號表中登記的存儲類屬性,在編譯過程中支持什么樣的語義檢查。解:(1) extern定義的變量,其作用域是整個C語言程序。externstatic定義的變量,其作用域是該定義所在的C程序文件。auto定義的變量,其作用域是該定義所在的例程。localstatic定義的變量,其作用域是該定義所在的例程。且在退出該例程時,該變量的值仍保留。register定義的變量,其作用域與auto定義的變量一樣。這種變量的值,在寄存器有條件時,可存放在寄存器中,以提高運(yùn)行效率。(2) 對extern變量,設(shè)置一

16、個全局的靜態(tài)公共區(qū)進(jìn)行分配。對externstatic變量,為每個C程序文件,分別設(shè)置一個局部靜態(tài)公共區(qū)進(jìn)行分配。對auto和register變量,設(shè)定它們在該例程的動態(tài)區(qū)中的相對區(qū)頭的位移量。而例程動態(tài)區(qū)在運(yùn)行時再做動態(tài)分配。對localstatic變量,為每個具有這類定義的例程,分別設(shè)置一個內(nèi)部靜態(tài)區(qū)進(jìn)行分配。(3) 實施標(biāo)識符變量重復(fù)定義合法性檢查,及引用變量的作用域范圍的合法性檢查。第九章例1:下面的程序執(zhí)行時,輸出的a分別是什么?若參數(shù)的傳遞辦法分別為(1)傳名;(2)傳地址;(3)得結(jié)果;4)傳值。programmain(input,output);procedurep(x,y,z

17、);beginy:=y+1;z:=z+x;end;begina:=2;b:=3;p(a+b,a,a);printaend.解:(1) 參數(shù)的傳遞辦法為"傳名”時,a為9。(2) 參數(shù)的傳遞辦法為"傳地址”,a為8。(3) 參數(shù)的傳遞辦法為"得結(jié)果”,a為7。(4) 參數(shù)的傳遞辦法為“傳值”,a為2。例2:過程參數(shù)的傳遞方式有幾種?簡述“傳地址”和“傳值”的實現(xiàn)原理。解:參數(shù)的傳遞方式有下述幾種:傳值,傳地址,傳名,得結(jié)果“傳值”方式,這是最簡單的參數(shù)傳遞方法。即將實參計算出它的值,然后把它傳給被調(diào)過程。具體來講是這樣的:1. 形式參數(shù)當(dāng)作過程的局部變量處理,即在被

18、調(diào)過程的活動記錄中開辟了形參的存儲空間,這些存儲位置即是我們所說的實參或形式單元。2. 調(diào)用過程計算實參的值,并將它們的右值(r-value)放在為形式單元開辟的空間中。3. 被調(diào)用過程執(zhí)行時,就像使用局部變量一樣使用這些形式單元?!皞鞯刂贰狈绞?,也稱作傳地址,或引用調(diào)用。調(diào)用過程傳給被調(diào)過程的是指針,指向?qū)崊⒋鎯ξ恢玫闹羔槨?. 如實參是一個名字或是具有左值的表達(dá)式,則左值本身傳遞過去。2. 如實參是一個表達(dá)式,比方a+b或2,而沒有左值,則表達(dá)式先求值,并存入某一位置,然后該位置的地址傳遞過去。3. 被調(diào)過程中對形式參數(shù)的任何引用和賦值都通過傳遞到被調(diào)過程的指針被處理成間接訪問。例3:下面

19、是一個Pascal程序programPP(input,output)varK:integer;functionF(N:integer):integerbeginifN<=0thenF:=1elseF:=N*F(N-1);end;beginK:=F(10);end;當(dāng)?shù)诙?遞歸地)進(jìn)入F后,DISPLAY的內(nèi)容是什么?當(dāng)時整個運(yùn)行棧的內(nèi)容是什么?解:運(yùn)行橫布局:第十章例1何謂代碼優(yōu)化?進(jìn)行優(yōu)化所需要的基礎(chǔ)是什么?解:而運(yùn)對代碼進(jìn)行等價變換,使得變換后的代碼運(yùn)行結(jié)果與變換前代碼運(yùn)行結(jié)果相同,行速度加快或占用存儲空間減少,或兩者都有。優(yōu)化所需要的基礎(chǔ)是在中間代碼生成之后或目標(biāo)代碼生成之后。例

20、2:編譯過程中可進(jìn)行的優(yōu)化如何分類?最常用的代碼優(yōu)化技術(shù)有哪些?解:依據(jù)優(yōu)化所涉及的程序范圍,可以分為:局部優(yōu)化、循環(huán)優(yōu)化和全局優(yōu)化。最常用的代碼優(yōu)化技術(shù)有1.刪除多余運(yùn)算2.代碼外提3.強(qiáng)度削弱4.變換循環(huán)控制條件5.合并已知量與復(fù)寫傳播6.刪除無用賦值例3:試對以下基本塊B2:B:=3D:=A+CE:=A*CF:=D+EG:=B*FH:=A+CI:=A*CJ:=H+IK:=B*5L:=K+JM=L應(yīng)用DAG對它們進(jìn)行優(yōu)化,并就以下兩種情況分別寫出優(yōu)化后的四元式序列:(1)假設(shè)只有GL、M在基本塊后面還要被引用。(2)假設(shè)只有L在基本塊后面還要被引用。解:基本塊對應(yīng)的DAG如下:B:=3D:

21、=A+CE:=A*CF:=D+EG:=B*FH:=A+CI:=A*CJ:=H+IK:=B*5L:=K+JM=L例1一個編譯程序的代碼生成要著重考慮些問題?解:代碼生成器的設(shè)計要著重考慮目標(biāo)代碼的質(zhì)量問題,而衡量目標(biāo)代碼的質(zhì)量主要從占用空間和執(zhí)行效率兩個方面綜合考慮。課后習(xí)題答案:P36-6(1)(GJ是組成的數(shù)字串(2)最左推導(dǎo):N二ND=NDD二NDDD二DDDD二ODDD二01DD=012D=0127N=ND=DD=3D=34N=ND=NDD二DDD二5DD二56D=568最右推導(dǎo):N二ND=N7=ND7=N27二ND27=N127二D127=0127N=ND二N4二D4=34N=ND=N

22、8=ND8=N68=D68=568P36-8文法:EtTE+T|ETTtFT*F|T/FF>(E)|i最左推導(dǎo):E=ET=TT=FT二iT二iT*F二iF*F=ii*F二ii*iE=T=T*F=F*F=i*F=i*(E)二i*(ET)二i*(TT)二i*(FT)=i*(iT)=i*(iF)=i*(ii)最右推導(dǎo):EETET*FET*iEF*iEi*iTi*iFi*i_ii*iE=T=F*T=F*F=F*(E)=F*(ET)=F*(EF)=F*(E-i)F*(Ti)二F*(Fi)=F*(ii)=i*(ii)語法樹:E/E+T/IE+TFTFiFiii+i+iE/、E+TFFiiiEE-T/

23、IE-TFTFiFiii+i*iP36-9句子iiiei有兩個語法樹:S二iSeS二iSei二iiSei二iiieiS=iS二iiSeS二iiSei二iiieiP64-7(1)1(01)*101011確定化:01X01,2,30001,2,32,32,3,42,32,32,3,42,3,42,3,52,3,42,3,52,32,3,4,Y2,3,4,Y2,3,52,3,4最小化:0,1,2,3,4,5,60,1,234,5。1,3,50,1,2,3,4,51二1,2,4,60,1,2,3,4,5,60,1,2,3,401,3,50,1,2,3,4,5,60,1,2,30二1,30,1,2,3a

24、=1,2,40,1,2,34,5,60,10=10,1廠1,22,30=32,31=40,1,2,3,4,5,60012P64-12確定化:ab00,110,10,11100000給狀態(tài)編號:ab0121122033330,1,2,20,1a二10,1b二2,3a二0,32,3b二30,1,2,32b(b)最小化:0,1,2,3,4,50,1a=10,1b=2,42,3,4,5人1,3,0,52,3,4,5幾二2,3,4,52,4a=1,02,4b=3,53,5a二3,53,5打二2,40,1,2,4,3,50,1a=12,4a=1,03,5a二3,50,1b二2,42,4b3,53,5打二2

25、,4P811(1)按照T,S的順序消除左遞歸G(S)S>aF|仃)T>STTJ,ST|;遞歸子程序:procedureS;beginifsym='a'orsym='人'thenabvaneeelseifsym='('thenbeginadvance;T;ifsym=')'thenadvanee;elseerror;endelseerrorend;procedureT;beginS;Tend;procedureT;beginifsym=','thenbeginadvanee;S;Tendend;其中:sy

26、m:是輸入串指針I(yè)P所指的符號advanee:是把IP調(diào)至下一個輸入符號error:是出錯診察程序FIRST(S)=a,(FIRST(T)=af,(FIRST(T)=,;FOLLOW(S)=),#FOLLOW(T)=)FOLLOW)=)預(yù)測分析表aA()5#SStaStaSt(T)TTtSTTtstTtSTTJ,ST是LL(1)文法P81-2文法:E>TEEr:E|;T>FT'TT|;FPFF*F'|;P(E)|a|b|AFIRST(E)=(,a,bfFIRST(E')=+,£FIRST(T)=(,a,bFIRST(T')=(,a,b,A,

27、£FIRST(F)=(,a,b,AFIRST(F')=*,£FIRST(P)=(,a,bfFOLLOW(E)=#,)FOLLOW(E')=#,)FOLLOW(T)=+,),#FOLLOW(T')=+,),#FOLLOW(F)=(,a,b,A,+,),#FOLLOW(F')=(,a,b,A,+,),#FOLLOW(P)=*,(,a,b,A,+,),#考慮下列產(chǎn)生式:EE|;T>T|;F*F;P>(E)|A|a|bFIRST(+E)AFIRST(£)=+n£=$FIRST(+E)AFOLLOW(E')=+A

28、#,)=$FIRST(T)AFIRST(£)=(,a,b,AA£=$FIRST(T)AFOLLOW(T')=(,a,b,AA+,),#=$FIRST(*F')AFIRST(£)=*A£=$FIRST(*F')AFOLLOW(F')=*A(,a,b,A,+,),#=$FIRST(E)AFIRST(a)AFIRST(b)AFIRST(A)=$所以,該文法式LL(1)文法.+*()abA#EEtTE'EtTE'EtTE'EtTE'E'EEEJ£EJ壬TTtTtFTtFTtFTT&

29、#39;TJeTJTTJetTTJTTJTTJsFFtPF'FtPF'FtPF'FtPFhF'FJ&F't*FF"t名FJ名F"t名FJ名FJ名FJzPPT(E)PtaPtbPtaprocedureE;beginifsym='('orsym='a'orsym='b'orsym='人'thenbeginT;E'endelseerrorendprocedureE:beginifsym='+'thenbeginadvanee;Eendelseif

30、sym<>')'andsym<>'#'thenerrorendprocedureT;beginifsym='('orsym='a'orsym='b'orsym='人'thenbeginF;T'endelseerrorendprocedureT'beginifsym='('orsym='a'orsym='b'orsym='人'thenTelseifsym='*'thenerroren

31、dprocedureF;beginifsym='('orsym='a'orsym='b'orsym='人'thenbeginP;F'endelseerrorendprocedureF'beginifsym='*'thenbeginadvanee;F'endendprocedureP;beginifsym='a'orsym='b'orsym='A'thenadvaneeelseifsym='('thenbeginadvanee;E

32、;ifsym=')'thenadvaneeelseerrorendelseerrorend;P133-1E二ET=ET*F短語:E+T*F,T*F,直接短語:T*F句柄:T*FP133-2文法:S>afl(T)T>T,S|S(1)最左推導(dǎo):S=(T)二(T,S)=(S,S)二(a,S)=(a,(T)=(a,(T,S)=(a,(S,S)=(a,(a,S)二(a,(a,a)S=(T,S)=(S,S)二(T),S)=(T,S),S)=(T,S,S),S)二(S,S,S),S)=(T),S,S),S)=(T,S),S,S),S)=(S,S),S,S),S)=(a,S),S,

33、S),S)=(a,a),S,S),S)=(a,a),A,S),S)=(a,a),A,(T),S)=(a,a),A,(S),S)=(a,a),A,(a),S)=(a,a)f,(a),a)最右推導(dǎo):S二(T)=(T,S)=(T,(T)=(T,(T,S)二(T,(T,a)=(T,(S,a)二(T,(a,a)二(S,(a,a)二(a,(a,a)S二(T,S)二(T,a)二(S,a)二(T),a)二(T,S),a)二(T,(T),a)二(T,(S),a)二(T,(a),a)二(T,S,(a),a)二(T,(a),a)二(S,A,(a),a)二(T)f,(a),a)二(T,S)f,(a),a)二(T,a)

34、,(a),a)二(S,a),A,(a),a)二(a,a),A,(a),a)(a,a),A,(a),a)(S),A,(a),a)(T,ar,(a),a)(TS),A,(a),a)(IL,A,(a),a)(S,A,(a),a)(T,A,(a),a)(TS,(a),a)(T,(a),a)(T,(S),a)(T,(T),a)(TS),a)(d,a)(§,a)(TS)(T)_S“移進(jìn)-歸約”過程:步驟棧輸入串動作0#(a,a),A,(a),a)#預(yù)備1#(a,a),A,(a),a)#進(jìn)2#(a,a),A,(a),a)#進(jìn)3#(a,a),A,(a),a)#進(jìn)4#(a,a),A,(a),a)#進(jìn)5

35、#(S,a),A,(a),a)#歸6#(T,a),A,(a),a)#歸7#(a),A,(a),a)#進(jìn)8#(a),A,(a),a)#進(jìn)9#(T,S),A,(a),a)#歸10#(T),A,(a),a)#歸11#(T),A,(a),a)#進(jìn)12#(S,A,(a),a)#歸13#(T,A,(a),a)#歸14#(T,A,(a),a)#進(jìn)15#(T,A,(a),a)#進(jìn)16#(T,S,(a),a)#歸17#(T,(a),a)#歸18#(T,(a),a)#進(jìn)19#(T,(a),a)#進(jìn)20#(T,(a),a)#進(jìn)21#(T,(S),a)#歸22#(T,(T),a)#歸23#(T,(T),a)#進(jìn)24#

36、(T,S),a)#歸25#(T),a)#歸26#(T),a)#進(jìn)27#(S,a)#歸28#(T,a)#歸29#(T,a)#進(jìn)30#(T,a)#進(jìn)31#(T,S)#歸32#(T)#歸33#(T)#進(jìn)34#S#歸P133-3(1)FIRSTVT(S)=a,(FIRSTVT(T)=,a】,(LASTVT(S)=af,)LASTVT(T)=,a,)aA()Ja>>A>>(<<<=<)>><<<>>G6是算符文法,并且是算符優(yōu)先文法(3)優(yōu)先函數(shù)aA()5f44244g55523(4)棧輸入字符串動作#(a,(a,a)#預(yù)備#(a,(a,a)#進(jìn)#(a,(a,a)#進(jìn)#(s,(a,a)#歸#(t,(a,a)#歸#(t,(a,a)#進(jìn)#(t,(a,a)#進(jìn)#(t,(a,a)#進(jìn)#(t,(s,a)#歸#(t,(t,a)#歸#(t,(t,a)#進(jìn)#(t,(t,a)#進(jìn)#(t,(t,s)#歸#(t,(t)#歸#(t,(t))#進(jìn)#(t,s)#歸# (t# (t)# sP164-1答:表達(dá)式4*7+1)*2的附注語法樹如下圖:歸T.val=58digit.lexval=2F.val=29)T.val=1F.val=1F.val=4digit.lexval=7digit.lexv

溫馨提示

  • 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

提交評論