版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理課程設(shè)計報告SLR(1 )分析得實現(xiàn)計算機(jī)科學(xué)與技術(shù)計算機(jī)科學(xué)與技術(shù)指導(dǎo)教師姓名2015年12月 26日目錄1. 設(shè)計得目得與內(nèi)容?錯誤!未定義書簽。1、1課程設(shè)計得目得?錯誤!未定義書簽。1、2設(shè)計內(nèi)容錯誤!未定義書簽。1、3設(shè)計要求?錯誤!未定義書簽。1、4理論基礎(chǔ)錯誤!未定義書簽。2算法得基本思想錯誤!未定義書簽。2、1主要功能函數(shù)?錯誤!未定義書簽。2、2算法思想?錯誤!未定義書簽。錯誤!未定義書簽。S LR文法構(gòu)造分析表得主要思想解決沖突得方法:錯誤!未定義書簽。SLR語法分析表得構(gòu)造方法:?錯誤!未定義書簽。錯誤!未定義書簽。3主要功能模塊流程圖錯誤!未定義書簽。3、1主函
2、數(shù)功能流程圖4系統(tǒng)測試錯誤!未定義書簽。5結(jié)論?錯誤!未定義書簽。錯誤!未定義書簽。附錄程序源碼清單1. 設(shè)計得目得與內(nèi)容1、1課程設(shè)計得目得編譯原理課程設(shè)計就是計算機(jī)專業(yè)重要得教學(xué)環(huán)節(jié),它為學(xué)生提供了一個既動手又動腦課本上得理論知識與實際有機(jī)得結(jié)合起來,獨立分析與解決實際問題得機(jī)會。進(jìn)一步鞏固與復(fù)習(xí)編譯原理得基礎(chǔ)知識。培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計得方法與能力.提高學(xué)生對于編程語言原理得理解能力。加深學(xué)生對于編程語言實現(xiàn)手段得印象.1、2設(shè)計內(nèi)容構(gòu)造了解LR(K)分析方法就是嚴(yán)格得從左向右掃描,與自底向上得語法分析方法1、3設(shè)計要求1)SL R (1)分析表得生成可以選擇編程序生成,也可
3、選擇手動生成;2)程序要求要配合適當(dāng)?shù)缅e誤處理機(jī)制;3)要打印句子得文法分析過程1、4理論基礎(chǔ)由于大多數(shù)適用得程序設(shè)計語言得文法不能滿足LR( 0)文法得條件,即使就是描述一個實數(shù)LR (1)分析程序,利用它進(jìn)行語法分析 ,判斷給出得符號串就是否為該文法識別得句子變量說明這樣簡單得文法也不一定就是LR(0)文法。因此對于LR(0規(guī)范族中有沖突得項目集(狀態(tài))用向前查瞧一個符號得辦法進(jìn)行處理,以解決沖突。這種辦法將能滿足一些文法得需要,因為只對有沖突得狀態(tài)才向前查瞧一個符號,以確定做那種動作,因而稱這種分析方法為簡單得LR( 1)分析法,用 SLR(D 表示。2算法得基本思想2、1主要功能函數(shù)c
4、 1 ass W FWF( chars1 :,c ha r s2 : , int x , int y )W F (const string& s 1 ,conststri n g & s 2 ,i n tX ,inty)bo 0 l operator< (co n stWF & a) c 0 nstbool o p e r at orvoid prin t ()class C losu reV oid prb o ol o pV oidmake iteV oidvoidbo ov o idv oivo ivo ivoidvovo l(co n st WF&
5、 a )nt ( s tri ngs t r)era tor(coCl osurea)co nstd dfs ( const str ing & x )make fappendi rst ()(c o nst s trec k ( cons te f ollow ()mak e _set ()m a ke_ V ()mak e_cm p ( vectmake_go ()i d make table()i ng & stV e c torconstg& s tr2 )vin t>& id ,o nsstri ngst r)or WF >&mpl
6、 ,intc har c h)d pr l nt ( strin,strn g s2 ,st ring s 3, str in g s 4, stri ng s 5, stri ng s6s7 )stri ng get_ste ps(is t rin g get_st(vector < Tst k)st r in g g etshif t ( W F & temp )V oidan alys e( stri n g sr c )2算法思想S LR文法構(gòu)造分析表得主要思想許多沖突性得動作都可能通過考察有關(guān)非終結(jié)符得FOLLD W集而獲解決。解決沖突得方法:2、解決沖突得方法就是分析
7、所有含A與B得句型,考察集合FO LLOW(A)與FOLLOW(B),如果這兩個集合不相交,而且也不包含b,那么當(dāng)狀態(tài)I面臨輸入符號a時,我們可以使用如下策略: 若a= b,則移進(jìn).若a FOL LOW(A ),則用產(chǎn)生式Aa進(jìn)行歸約;若a FOL LOW(B),則用產(chǎn)生式 Ba進(jìn)行歸約; 此外,報錯* SL R得基本算法:假定L R (0)規(guī)范族得一個項目集I中含有m個移進(jìn)項目Alfa? a1 31, A2fa? a2 3 2,,Amfa? am3 m;同時含有n個歸約項目B la? ,B2a?,B3a?, 如果集合 al ,am ,FOLLO W(B1),,F(xiàn) OLLOW(B n)兩兩不相
8、交(包括不得有兩a 屬于上述個FO LLO W集合有#),則隱含在I中得動作沖突可以通過檢查現(xiàn)行輸入符號 n+1 個集合中得哪個集合而活得解決: 若a就是某個ai ,i=1 , 2,m,則移進(jìn).若a FOLL OW(Bi ), i=1, 2,m,則用產(chǎn)生式 Bifa進(jìn)行歸約; 此外,報錯這種沖突得解決方法叫做SLR( 1)解決辦法 。SLR語法分析表得構(gòu)造方法:首先把G拓廣為 G',對G'構(gòu)造LR(0 )項目集規(guī)范族C與活前綴識別自動機(jī)得狀態(tài)轉(zhuǎn)換函數(shù)GO。函數(shù)ACTI ON與GOTO可按如下方法構(gòu)造:若項目 Aa? b 3 屬于 Ik ,GO(I k,a )= I j,a為終結(jié)
9、符,置ACT IONk, a 為“把狀態(tài)j與符號 a 移進(jìn)?!?,簡記為“ sj”若項目Afa ?屬于I k,那么,對任何非終結(jié)符a,a FOLL OW (A),置 ACT IO N k ,a 為“用產(chǎn)生式Afa進(jìn)行歸約”,簡記為“ rj”;其中,假定Afa為文法G'得第 j個產(chǎn)生式若項目S'f S?屬于Ik,則置A CTIO Nk, #為可“接受”,簡記為“ ac c” 若 GO(Ik , A) = Ij,A 為非終結(jié)符 則置G OTOk , A: =j;分析表中凡不能用規(guī)則 1至4填入信息得空白格均填上“出錯標(biāo)志”。語法分析器得初始狀態(tài)就是包含S' 7 ? S得項目
10、集合得狀態(tài)SLR解決得沖突只就是移進(jìn)一規(guī)約沖突與規(guī)約-規(guī)約沖突3主要功能模塊流程圖3、1主函數(shù)功能流程圖圖3、1程序主要流程4系統(tǒng)測試S->E S->Ep->E+rE->T E->T r->T*K r->T*F- ?->F r->F r->CE) r->CE) r->i r->i圖4、1輸入I3->$E back;0 idzO3->E:$ back:0 id:lE->$E+TE->E1$+TE->E+$T E->E+T$back :1 back :1 back:l back:Lid
11、:2 id:3 icl:4 id:5E->$T back;2 id:6 £->?$ back:2 id;7 r->$T*K r->r$*F r->T$K r->w$back:3 back:3 back:3 back:3id:B id:9 id:10 id:llT-顒 back:4 id:12-丹$ back;4 id;13L$® fr->C$£) F-血) F->tE)$back:5back:5back:5back:5id:14 id:15 id:10 id:17P->$i bael?;6 Ld:lS F-)$
12、 back:6 id: 1Q圖4、2項目表卡素*北 *此*卩R y *盤北 *盤*?|7士*北 卡素*北FIRST® = C 11FIRST (?) = (,!kirstCITC 1FIR酊OK i圖 4、3FIRST集MLLE (E> ETOLLOl CK> FOLLOW CS> EOLLOW (T)fl J,十 花人記+ fl!爲(wèi)),啊十圖 4、4 FOLLD W 集"CLO SURE cI<jsure-IOE->$E+TE->$TF-$(E)S->$E T-$F T->$T+FcLosure-ILE->JE+TE-
13、>JTF-$(町F-$iF->($町T->$FT-$Tclosure-12E->E3+TS->E3clgure-I3T-F$closure-14E->T$T-T 豺 FcIcsuTQ-ISF-i$cksureTSE->E3+TF->(EJ)closure-I?E->E+$T F-$(叮 F-$i T-$FT->$T=rclosure-13F->$(E) F-$i T->T+?FcL<JSure-I9F->(E)$closure-IIOE->E+T$T-T$*Fclosure-111T->T+K$圖4
14、、5 CLOSU田表EDGE'IOE12IOK1310T1410I15ILCIlrir13ILi15riz1612 -1714 半一18IS一+17IO-) ISITCIlI?F13I?L15I?Tno13 CT113i1515 fTIll nora圖 4、6 EDGE表ft I0 11 n 1111311411 11SI 11161311412 i1 11ST1111 1511 1KI嗣1£1111 1411 1R£SS 11111 1511 1R6R6 1R61111 16 i1 1S&1E71111 17 11 £1 1111311 10 1
15、B 11 £1 1111 1111 1q 11 1K5RF 1KS111 110 11 1KISB 1Pl111 111 11 1ILSR3 1ES1111 1p圖 4、7 LR (0)表咒IIS5 IIIuIIMIIK2IIE6IRF I El IR3 IL吐-Stadkinput*i *jiezatirxn shiftIstjts-Et磯k10iCTlDKSIOTTO2壯shift|01s吁3it (Irediice1015Rb34?。縭eduice1613t4ishi I t|ei4we(HT+shiftllOHSS5HiirTPduc-*(F->T)11!HT*p+it
16、fT pckicF J101431113*&)+1 tfr(J - >T|01.4R2alU吃)+iffshiftlOLdILBCa)山陶t5312KFrsduc»(T->P)loat13(fTredust|Q4z14*lFshzi i|O2E7lb應(yīng)+sJiii t|02TIGITraducwQ >1)10275s17廳F聊ITro如燈-丹10273u10fltfF+TITrAtJdCfl fF-沖弋、loano319Accept|02acc圖4、8文法分析步驟5結(jié)論L R分析法就是一種自下而上進(jìn)行規(guī)范歸約得語法分析方法。這里L(fēng)就是指從左到右掃描輸入符號串
17、。R就是指構(gòu)造最右推倒得逆工程。這種分析法比遞歸下降分析法、預(yù)測分析法與算符優(yōu)先分析法對文法得限制要少得多。附錄程序源碼清單# i n cl ude <i ostream#i ncludcs t dio # inc 1 ude <alg orithm># inc 1u d ec s t ring#i n#i nc1 ud e<v ec tude < s tri ncct ype#i nc# inclde<map# i n c lu< set#in clude <s stea m>#d e fi nM AX 5 0 7q ue/ #de f
18、ine DEBUG us i ng nam esp ace st d ;#pr a gma w a r nin g ( d isa b le : 4 9 9 6 )c lass WFp ubli c :strin g left,rightWFint backint id(ch a r:,in t x , i n t yle f ts1 ;righs2 ;bac kWF ( co ns tstri ng& s1 ,co n sts tri ng & s2left=s 1;r i ght = s2;b ack =X ;id =y ;boolop e rat or<(const
19、WF&a ) constif(l eft=a、left)ret ur nright< a、r igh t ;r eturn1 eft< a、left ;b 0o 1 opera tor=:=(co n stW F& a )c onstreturn(l eft=a、left )&&(rightvoidp r int()=a、r i ght );i n t x, int y )c 1 assCIOpu blpri ntfs ur("%s >% sn " , leftc strvec tor< W F > e 1e m
20、ent ;V oid pri nt(st r ings t r)prin tf("%-15s%n”,"",:fo r(inti = 0;i e 1e ment、eleme nt : i 、pr in t ();1 cssize ();t r、 cb oolop erator=(constiffortru c tinstintCoCo(),re & a ) const(a、el(inte lsme nt、siontypnum ;0; it en tnt ent ()n tent (i n(eleme nte t u rnrn trut yp ef a lse
21、a , int b )pe ( a ) , num ( b)r i g h t 、 c_s!= el em en t、sizee lemen t、size ();str()=a、elem e nt i )();+ +)r etui + +)co n tinut r();n falsev e ct o r < WFwf;map<s t ring , vector < int> d i c;ma p < s tr i n g,vecto rintVNma p < str ing ,b oo lvi s;stri n g st art="S ” ;v e
22、 cto r < C losure>c o 1 lectio nJv e c t or WF > it ems;c h ar CH = ' $'.Jig o MAX MAX;nsetinto MAX;vector < c ha r > V ;boolu sed MAX;Conten ta ctio n MA X: MAXint Goto MAX MAX;m ap <str i n g , set < char>fo1 lowIvo id ma k e_item ()m emse t(to , - 1 ,sizeof(-1);f o
23、r ( inti =0;i< wf、siz e();i + +)V N _s et wf i 、left 、p u shba c k( i );for(inti=0 ; i<wf、siz e ();i+)for(intj=0 ;j < =wf:i 、r i gstr ing tempwf i :、rig ht ;firsmap sta r>begin ()t emin sert(t emp、P、h t 、 le nr i n g , set < c hgth (); j + + )ifsize ();+ J , CH );dic w f (j )to it e m
24、s、left、P ush b ack(i tems、size()it ep usms、 s ize()-1 :i tems、siz e();h _ba c k (WF ( w f : i、l e ft , tempi , item s、#if d ef DEBUGputs(“項目表一一(int i = 0; i item s、size();i +)print f (" % s->%sback: % d id:%dnms i 、leftc str (),、r ig h t、 C Str () , items、back,items i 、i d );p ut# e ndiV oid
25、fs ( c on st st r in gif(vis x ) re t urn ;1;e ctor<int(intn g&lestngrifor(intif(iset-”);VNS e t X;< i d、size (); i:i di >le f t ;g ht = wfsu p p er ( r igf s (right 、substrchar >&s e tvb o olf 1 agforitid i 、r igr ight 、length(j , 1 )ht();j +));:mp = fir i g h t、 s ubstr(j ,1);i
26、 te r atortr ue ;te m p、t em p、be gd ( ); it + +)' / )lagfalsei n();fi rs t left 、 in ser t ( * i t );elV oidm akeV is 、 clearmap sf or (;ifelseif ( f l ag ) brebreast ()t ri nit 2ak ;();r s t left 、e ctor <int =dic 、e nd ();(v is it2 first(it 2 >first)in sertit 2c ontiter+)1 nur ight j );
27、a t o r i t2i fde f D E B UGputs ("* * * F I RS T 集 * * *d ic、begin* * * *();*m ap <string , set <char > : iterator itf irst、be g in();for (; it!= first、 e nd ();it + +)printf("Fl RST(% s )=”,i t >first、c stset< c h ar& t e mpit-> s e c o nd ;se t <ch a ri t eratoi
28、t1te m p、be g in ();fool flag(flag!=temn d(); it1 + +)printf(”,”printf(”c",* it1 );flapu#en difvo id ap p endsetboolvoiegit <ch a rg = t ruet s (” ");(con>& fe tv cha r >&chforema(;(ininturnwhiln ();forSts tring& str1con st stri ngs tr2 )a r >: itera toins e rtfoloo
29、lfrom 、(*it );(c onstvec0;X 、righ1 se ;1 ow ()(tr u e)goonlsp <st r ing ,(;it2!=1 lo w str1 ;1 lo w s t r2 ;e n d()t or v if rom、begi n();nt & idc onststing str )=strect o r v ize ( ) ; i + +) r et ur n t ruent > >:i t erator itVN set 、 bVN_se t、 e nd () ; it2i +)fo1 )、size ()1):、siz e(
30、)+)(j ,ec t orbool<in t& id = it2 - >se c ond ;0; i < id 、s ize ();flagW F & ttst r incon stfor(iwf& lefttringfosuif:i d i ;=tt 、le f t ;=riP per(flifsei ght = ttg ht 、 le na g)intapp(tx1(_C hntser ightgt h()g ht j )t X = followe nd (le f t ,=follgooeckflag(iu pp(rightngiddc har
31、 & fr1; j >= 0; jr i g ht、subsi g h t、sub s tr (jw r ight 、substr”)t r (j ,1 );t rue;r ight 、length(); kk)t <c h ar& to = fos ubf irst1 lows tr ( k,1);id d ;righ t、subss et < c har >:itera t or it1e gin ();i nt t x=f o llo w r ig h tbstr1 )、si ze ();fo r (; it1fr o m、en d();+ +)i
32、 f (* i t1intsi z();ifsestr(j1 門、si z e();foin serti ght k )intto 、insert(* i t1 );tx1 = f o ll owright 、s ubstr(j,1)、f ( t x1 >Check (id ,break ;tx1ow rig=f o IIs i ze ();f (tx1 brea k ;if(! go o n)e lse1 agfa 1 se ;br e ak;x) goon = tr ue ;=f ollo w right、 su bht 、 subs tr ( j ,1)、o w right、s u
33、bstr(j , 1 門、#ifdef DEBUGputs(”* * * * * * * foll o w集* * *);#envoidmap< strin g, set ch a r >: : ite rat oritfoow、be gi n();for=folioend ()it +)printf (”FO LLOW(% s)=”it>firststr);setcha r & teite conteetins e r t< char lagi t1('#');iterait1e mp、be gin();fa 1se ;!= temp(f 1a
34、putsd ifmafo rC H)printff lag(”");e set()” c"=truehant:MAX:;i = 0;t em sit:i 、丨 etemp ;stri ng & strvector < WF>& e lnd()r intf1);;it1+)(”e ms、sizeft : 0=item s ie me nt();)s/:、rt e mpi +)&&ite m se le m ent ;e 1 e me nt、pu s h _ b a ck ( i tems i );:i 、right :0s iz e
35、t x = 0;1 );for (xstr 、length ();x +)if(s t r : xb r ea k ;C H)memset ( hash as i =0, size of ( has );(X ! = st r、lengt h()- 1)qu eue<strinq、p ush ( str 、subs t1 );while(! q、empt y0)colring ufro n、P o p();v e ctor intorin& idi c u;1 ection(size_tid 、 s i z e(); jtxi dj :iftemstx 、right0:= CH)
36、if(ha s txc ontinues txq 、 pushu pp e r (it em s t x 、ri(1 te m s tx 、rig ht、e l e me n t、push_back(items、pus h _back ( t emp);g ht 1 :)subs tr ( 1 ,:t x);(size_ti0; icollectio n、s ize (); i+ + )mapin t,cl 0s u retem p;f 0r ( size _t j=0 ; j< c0 llection i 、ele me n t、size ();st ringstr=colleicti
37、on i 、elemen t j :、right ;s ize_tX=0 ;for(;Xstr、leng th();x+ +)i f(str:X=CH)b r eaik ;i f(X-=str 、lengt h()1)c0 ntinue ;in ty :=st r X+ 1;i ntii5s tr、erase (s t r、beg in ()+X);str、inse r t ( st r、.beg in () +X +1, CH)5WZFcm p=W F(colle(ctioni 、 e1 e me nt : j :、lef t ,forj +)s tr , ,1 );fo r(siz<
38、 it ems、 s iz e0; k+ +)if(ite:k=cmp )x + ;re ak ;if (X != str、length ()me ms et (ha s,0,size0 f(h a s );ve c t 0 rWF>& element=temp y、el e mente le m ent、p u sh_b a ck (items ii);h as ii 1 ;m apint , C 1 osu r e> : : ite ra t or it=temp、begi n();for(;it !=t emp、end () ; it +)collecti on、pu
39、sh_back ( it -second);fo r(s i ze_ti= 0 ;i < co 11ection 、size();i +)s0 r t (c 0l 1 ection:i、e 1 ement、begin (),co11ectioni :n t、end ();f or(siz e _t i= C);i < c olle cti 0 1n、size ();i+)f 0 r (s ize_ t j=i+ 1 ; j< collect ion 、size();j+ +)e lem e1);qu e ue stringwh istrip ush ( str 、sule(!
40、 q、emptypop ();ve ctorf or (intb st r()ints izetxi f ( itemsh asif(X+ 1,1 );frontt X();0;dj :;、r ight(has tx )t x = 1;if ( isu p perq 、p us h (ie 1 ement 、c : u;0cont(itemsem s tpush_backd、si z e( ) ; jC H)nue ;tx 、right 1)X 、right 、s u bstr(itemstx :);+)i f (co 1 le c tion i = c olle c ti on j )# i
41、fdefDEBUGuts(”forc ol 1 ection、era s e( collec tion、b e gin ()+ j );LOSUREput# e ndifoirin gstrstrinsincollece am sin ;ze t i、cle ar();co1 lecti on、s i z e (); i + + )ngoutIIclosur e "iooutP rit (oud m ak e _ V ()m em s e t ( use d ,sizeof(usd);for(sizewf、size ();i + )strin g&s tr=wfleforfori ze.t js tr 、1 e ngth () ; j + )ifse(us eV、 push_bacng & str1(s i z e_tr j k ( strj J = 0;);co nght ;t in ue ;s t r 1、leng t h ( ) ; j + +)s ortif (us eu se d、push_bacV、 push_id m akeorJ + +)sizft ,trV oid str1 j ) c o ntinues tr1 j = 1;k (str1 : j );、be gin () ,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房屋買賣合同的還款合同違約3篇
- 學(xué)校與單位合作共建協(xié)議范本版3篇
- 國際會議贊助合同樣本3篇
- 農(nóng)村灌溉井承包協(xié)議書3篇
- 農(nóng)資平臺入住合同范例
- 健身房承包經(jīng)營管理合同范文3篇
- 農(nóng)用化肥買賣協(xié)議書3篇
- 合同補(bǔ)充協(xié)議書模板2篇
- 國際買賣合同模版3篇
- 個人租電腦合同范例
- 福建省莆田市2023-2024學(xué)年八年級上學(xué)期期末質(zhì)量監(jiān)測數(shù)學(xué)試卷(含解析)
- 2023-2024年人教版七年級上冊數(shù)學(xué)期末試題(含簡單答案)
- 人教版六年級上冊數(shù)學(xué)《圓》大單元作業(yè)設(shè)計
- 【培訓(xùn)課件】proe工程圖培訓(xùn)
- 國家集采藥品培訓(xùn)課件
- 鳥類的遷徙與繁殖方式教學(xué)教案
- 航空公司乘務(wù)長的述職報告
- 南京市玄武區(qū)2023-2024學(xué)年八年級上學(xué)期期末歷史試卷(含答案解析)
- 公司轉(zhuǎn)讓債權(quán)股東會決議
- 露天礦設(shè)備運(yùn)行分析報告
- 防高空墜物安全教育課件
評論
0/150
提交評論