編譯原理課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)_第1頁
編譯原理課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)_第2頁
編譯原理課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)_第3頁
編譯原理課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)_第4頁
編譯原理課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)號:課程設(shè)計(jì)WHILE循環(huán)語句的翻譯程序設(shè)計(jì)題目(遞歸下降法、輸出四元式)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級計(jì)算機(jī)班姓名指導(dǎo)教師2012年1月6日TOC\o"1-5"\h\z\o"CurrentDocument"問題描述3\o"CurrentDocument"1.1問題描述3\o"CurrentDocument"1.2主要任務(wù)3\o"CurrentDocument"1.3測試數(shù)據(jù)3\o"CurrentDocument"2文法及屬性文法的描述3\o"CurrentDocument"2.1文法的描述3\o"CurrentDocument"2.2while-do循環(huán)語句的文法4\o"CurrentDocument"2.3遞歸文法的優(yōu)化4\o"CurrentDocument"2.4屬性文法的描述5\o"CurrentDocument"語法分析方法描述6\o"CurrentDocument"3.1程序設(shè)計(jì)對文法的要求6\o"CurrentDocument"3.2語法分析的思想7\o"CurrentDocument"3.3遞歸下降文法實(shí)現(xiàn)原理7\o"CurrentDocument"3.4中間代碼形式8\o"CurrentDocument"4簡要的分析與概要設(shè)計(jì)8\o"CurrentDocument"4.1全局程序的概要設(shè)計(jì)8\o"CurrentDocument"4.2詞法分析9\o"CurrentDocument"4.3遞歸下降翻譯器的設(shè)計(jì)9\o"CurrentDocument"4.4語法制導(dǎo)翻譯10\o"CurrentDocument"5詳細(xì)的算法描述10\o"CurrentDocument"5.1算法描述10\o"CurrentDocument"5.2運(yùn)行結(jié)果146.研制報(bào)告(研制過程,本設(shè)計(jì)的評價、特點(diǎn)、不足、收獲與體會等).15\o"CurrentDocument"6.1研制過程15\o"CurrentDocument"6.2本設(shè)計(jì)的評價、特點(diǎn)16\o"CurrentDocument"6.3感受和體會16\o"CurrentDocument"6.4對程序改進(jìn)的想法17武漢理工大學(xué)《編譯原理》課程設(shè)計(jì)說明書課程設(shè)計(jì)任務(wù)書學(xué)生姓名:專業(yè)班級:計(jì)算機(jī)班指導(dǎo)教師:—工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院題目:WHILE循環(huán)語句的翻譯程序設(shè)計(jì)(遞歸下降法、輸出四元式)初始條件:理論:學(xué)完編譯課程,掌握一種計(jì)算機(jī)高級語言的使用。實(shí)踐:計(jì)算機(jī)實(shí)驗(yàn)室提供計(jì)算機(jī)及軟件環(huán)境。如果自己有計(jì)算機(jī)可以在其上進(jìn)行設(shè)計(jì)。要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求)(1)寫出符合給定的語法分析方法的文法及屬性文法。(2)完成題目要求的中間代碼四元式的描述。(3)寫出給定的語法分析方法的思想,完成語法分析和語義分析程序設(shè)計(jì)。(4)編制好分析程序后,設(shè)計(jì)若干用例,上機(jī)測試并通過所設(shè)計(jì)的分析程序。(5)設(shè)計(jì)報(bào)告格式按附件要求書寫。課程設(shè)計(jì)報(bào)告書正文的內(nèi)容應(yīng)包括:1系統(tǒng)描述(問題域描述);2文法及屬性文法的描述;3語法分析方法描述及語法分析表設(shè)計(jì);4按給定的題目給出中間代碼形式的描述及中間代碼序列的結(jié)構(gòu)設(shè)計(jì);5編譯系統(tǒng)的概要設(shè)計(jì);6詳細(xì)的算法描述(流程圖或偽代碼);7軟件的測試方法和測試結(jié)果;8研制報(bào)告(研制過程,本設(shè)計(jì)的評價、特點(diǎn)、不足、收獲與體會等);9參考文獻(xiàn)(按公開發(fā)表的規(guī)范書寫)。時間安排:設(shè)計(jì)安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計(jì)。周3、周4:完成程序調(diào)試及測試。周5:撰寫課程設(shè)計(jì)報(bào)告。設(shè)計(jì)驗(yàn)收安排:設(shè)計(jì)周的星期五第1節(jié)課開始到實(shí)驗(yàn)室進(jìn)行上機(jī)驗(yàn)收。設(shè)計(jì)報(bào)告書收取時間:設(shè)計(jì)周的次周星期一上午10點(diǎn)。指導(dǎo)教師簽名:系主任(或責(zé)任教師)簽名:指導(dǎo)教師簽名:系主任(或責(zé)任教師)簽名:2012年1月6日2012年1月6日課程設(shè)計(jì)報(bào)告書1.問題描述1.1問題描述設(shè)計(jì)一個WHILE〈布爾表達(dá)式〉DO〈賦值語句〉循環(huán)語句的詞法、語法及語義分析程序,語法分析選擇遞歸下降法,采用用語法制導(dǎo)翻譯輸出中間代碼四元式。1.2主要任務(wù)通過設(shè)計(jì)、編制、調(diào)試一個WHILE循環(huán)語句的語法及語義分析程序,加深對語法及語義分析原理的理解,并實(shí)現(xiàn)詞法分析程序?qū)卧~序列的詞法檢查和分析。首先寫出一個能識別while循環(huán)語句的文法,通過消除左遞歸使它符合LL(1)即遞歸下降法的要求,然后按照這個文法編寫一個集詞法分析,語法分析和語義分析為一體的程序,該程序首先可以檢查輸入語句是否符合詞法要求,若符合則繼續(xù)識別輸入的語句是否符合while語句的文法,若符合則進(jìn)行語義分析,輸出用四地址代碼表示的中間代碼。1.3測試數(shù)據(jù)編寫好源代碼后,進(jìn)行調(diào)試,主要調(diào)試數(shù)據(jù)有:新建一個文本,輸入一個while循環(huán)語句的內(nèi)容,保存;打開該文件,進(jìn)行詞法、語法的分析,給出分析結(jié)果。2文法及屬性文法的描述2.1文法的描述用擴(kuò)充巴科斯-瑙爾范式(EBNF)給出的while循環(huán)語句的文法描述,如下:<while語句〉::二while(〈條件語句〉)do(〈賦值語句〉}〈條件語句〉::二〈表達(dá)式><條件運(yùn)算符〉〈表達(dá)式〉〈條件運(yùn)算符〉::=>|<|=|>=|<=〈表達(dá)式〉::二〈表達(dá)式〉+〈表達(dá)式2>|〈表達(dá)式〉-〈表達(dá)式2>|〈表達(dá)式2>〈表達(dá)式2>::=<表達(dá)式2>*〈表達(dá)式3>|〈表達(dá)式2>/〈表達(dá)式3>|〈表達(dá)式3>〈表達(dá)式3>::=(<表達(dá)式〉)|〈標(biāo)識符>|<數(shù)字〉〈賦值語句>::二〈標(biāo)識符>=<表達(dá)式〉;2.2while-do循環(huán)語句的文法產(chǎn)生式為S->whileEdoA,為便于語法制導(dǎo)翻譯將其改寫如下:文法G(s)如下:S-->WEDG(意思是whileEdoG)G-->c=RR-->dTeldT-->+l-l*l/E-->aFbF-->>|==|<2.3遞歸文法的優(yōu)化While循環(huán)語句的文法表示如下:1.S->while(A)do{B}A->CDCD->>|=|<|>=|<=C->C+E|C-E|EE->E*F|E/F|EF->(C)|i|n因?yàn)榇藈hile循環(huán)語句的翻譯程序設(shè)計(jì)用的是遞歸下降法,而遞歸下降法對文法的要求是文法要滿足是LL(1)文法,故文法中不能包含左遞歸,對上述的文法進(jìn)行消除左遞歸之后,得到如下的遞歸文法:1.S->while(A)do{B}A->CDCD->>I=I<I>=I<=C->EGG->+EGI-EG|£E->FHH->*FH|/FH|£F->(C)IiInB->i=C;2.4屬性文法的描述、任一非終結(jié)符B都不是左遞歸的,否則會產(chǎn)生死循環(huán)。、對A的任意兩個右部6i,pj,有:first(pi)Afirst(pj)=^,First(pi)表6i所能導(dǎo)出串的第一個符號的集合。顯然,每個Pi的first(pi)是互不相同的,否則則無法判斷應(yīng)執(zhí)行哪個Z(Pi)。產(chǎn)生式語義規(guī)則S-->while(A)do{B}{S.first:=newtemp;S.second:=newtemp;A.true:=newtemp;emit(A.false:=S.second;S1.second:=S.first;S.place:=(S.begin,‘:’)IIB.placeIIprintf(S.true,‘:’)IIS1.placeIIprintf('goto',S.begin)IIprintf(B.false,‘:’)IIprintf(‘gotoLnext');)}A-->CDC{A.place:=newpemt;emit(A.place':='C1.placeD.placeC2.place)}.D-->>{D.place:=newtemp;Emit(D.Place':=''>')}.D--><{D.place:=newtemp;Emit(D.Place':=''<')}.D-->={D.place:=newtemp;Emit(D.Place':=''=')}.D-->>={D.place:=newtemp;Emit(D.Place':=''>=')}.D--><={D.place:=newtemp;Emit(D.Place':=''<=')}C-->EG{C.Place:=newtemp;Emit(C.Place':='E.PlaceGplace)}G->+EG{G.Place:=newtemp;Emit(G1.Place':=''+'E.PlaceG2.place)}G->-EG{G.Place:=newtemp;Emit(G1.Place':=''-'E.PlaceG2.place)}G->£{G.Place:=newtemp;Emit(G.Place':=”'}H->*FH{H.Place:=newtemp;Emit(H1.Place':="*'F.PlaceH2.place)}H->/FH{H.Place:=newtemp;Emit(H1.Place':=''+'F.PlaceH2.place)}H->£{G.Place:=newtemp;Emit(H1.Place':=''+'E.PlaceH2.place)}F->(C){F.Place:=C.Place}B->i=C;{p:=lookup()Ifp!=nilthenEmit(p':='C.PlaceElseerror)}3.語法分析方法描述3.1程序設(shè)計(jì)對文法的要求遞歸下降法是一種比較簡單直觀,易于構(gòu)造的語法分析方法。他要求文法滿足LL(1)文法,他的設(shè)計(jì)思想是對應(yīng)文法中每個非終結(jié)符編寫一個遞歸過程,每個過程的功能是識別由該非終結(jié)符推出的單詞(或串),當(dāng)某非終結(jié)符的產(chǎn)生式有多個候選時,能夠按LL(1)形式可唯一地確定選擇某個候選進(jìn)行推導(dǎo)。它的優(yōu)點(diǎn)是簡單直觀,易于構(gòu)造,很多編譯系統(tǒng)所實(shí)現(xiàn)缺點(diǎn)是對文法要求很高,由于遞歸調(diào)用多,影響分析器的效率其文法可以表示為:E—T|E+T—F|T*F一i|(E)可以用語法圖來表示語言的文法,如圖:3.2語法分析的思想遞歸下降程序是由一組子程序組成,每個子程序?qū)?yīng)于一個非終結(jié)(S,A,B,C,D,E,F,G,H)。每個子程序處理相應(yīng)句型中相對于此非終結(jié)符號的產(chǎn)生式。在定義文法時,是遞歸定義的,所以這些子程序也是遞歸的。當(dāng)一個子程序調(diào)用另一個子程序時,原子程序順序執(zhí)行語句,即總是先執(zhí)行被調(diào)用的子程序,然后再執(zhí)行后繼的程序。程序中9個子程序,其中S是開始符號,也是遞歸下降分析的入口,通過調(diào)用詞法分析器進(jìn)行單詞分析,并通過word=l.Yufa_Queue.front()來得到當(dāng)前所分析到的單詞,然后在遞歸語法分析中根據(jù)這個單詞分析下一步要執(zhí)行的子程序。其中要注意的是,當(dāng)子程序G()和H()中出現(xiàn)匹配的是空字符串時,不做單詞處理,該所取得的單詞,應(yīng)該為下一個匹配產(chǎn)生做準(zhǔn)備。3.3遞歸下降文法實(shí)現(xiàn)原理設(shè)A是一個非終結(jié)符:A-01A—02II

IA一0n則寫Z(A)□ifcharEfirst(01)thenZ(01)elseifcharEfirst(02)thenZ(02)else...ifcharEfirst(0n)then((0n)elseERROR其中z(pi)表示調(diào)用處理符號串6i的子程序。對A的任一右部i設(shè)為:pi=y1y2…yn則定義Z(Pi)beginZ(y1);Z(y2);…;Z(yn)end其中yj可分為下列兩種情況(j=1,????):yjEVT,則Z(yj)ifchar#yjthenERRORelseREAD(char)yjEVN,則Z(yj)表示調(diào)用關(guān)于yj的遞歸子程序。3.4中間代碼形式中間代碼采用四元式輸出,一個四元式是一個帶有四個域的記錄結(jié)構(gòu),這四個域分別稱為op、argLarg2及result。域op包含一個代表運(yùn)算符的內(nèi)部碼。語句whilea<bdoa=a+b的四元式輸出形式如下:(<,a,b,102)TOC\o"1-5"\h\z(j,_,_,105)(+,a,b,n)(=,n,_,a)(j,_,_,100)1054簡要的分析與概要設(shè)計(jì)4.1全局程序的概要設(shè)計(jì)遞歸下降分析技術(shù)就是通過對每個非終結(jié)符編寫一個子程序來實(shí)現(xiàn)它的操作,然后通過遞歸的調(diào)用來實(shí)現(xiàn)對輸入字符串的分析,這其中還包括對輸入字符串的詞法分析。在詞法分析的時,得到的字符單詞要和關(guān)鍵字比較,看是否是關(guān)鍵字,根據(jù)比較結(jié)果進(jìn)行返回相應(yīng)的單詞類型。單詞類型主要包括界限符,關(guān)鍵字,常量,標(biāo)識符,運(yùn)算符等,每種符號都是一種類型。在語法分析程序中,根據(jù)詞法得到的結(jié)果,進(jìn)行判斷是否是當(dāng)前需要的單詞類型,如果不是就說明輸入字符串不能由該文法推導(dǎo)出來;如果是當(dāng)前需要的類型,就相應(yīng)得做該單詞類型分支程序。根據(jù)文法可以得到這個遞歸下降程序可以分析while語句,在文法的開始符號S開始進(jìn)行遞歸調(diào)用,因此這個文法的遞歸中就要考慮到調(diào)用以及遞歸。在遞歸子程序中,在嵌套調(diào)用其他子程序時都是有一定條件的,當(dāng)滿足這個條件的時候該程序可以按照滿足的條件執(zhí)行下去,當(dāng)沒有滿足程序中的條件時就會顯示語法錯誤。4.2詞法分析詞法分析程序的任務(wù)是:從左至右逐個字符地對源程序進(jìn)行掃描,產(chǎn)生一個個的單詞符號,把作為字符串的源程序改造成為單詞符號的中間程序。詞法分析檢查的錯誤主要是挑出源程序中出現(xiàn)的非法符號。所謂非法符號是指不是程序設(shè)計(jì)語言中允許出現(xiàn)的符號,就像自然語句中的錯字。4.3遞歸下降翻譯器的設(shè)計(jì)對每個非終結(jié)符A構(gòu)造一個函數(shù)過程,對A的每個繼承屬性設(shè)置一個形式參數(shù),函數(shù)的返回值為A的綜合屬性,A對應(yīng)的函數(shù)過程中,為出現(xiàn)在A的產(chǎn)生式中的每一個文法符號的每一個屬性都設(shè)置一個局部變量。非終結(jié)符A對應(yīng)的函數(shù)過程中,根據(jù)當(dāng)前的輸入符號決定使用哪個產(chǎn)生式候選。每個產(chǎn)生式對應(yīng)的程序代碼中,按照從左到右的次序,對于單詞符號,非3:終結(jié)符和語義動作分別做以下工作。對于帶有綜合屬性x的終結(jié)符X,把x的值存入為X,x設(shè)置的變量中。然后產(chǎn)生一個匹配X的調(diào)用,并繼續(xù)讀入一個輸入符號。對于每個非終結(jié)符號B,產(chǎn)生一個右邊帶有函數(shù)調(diào)用的賦值語句c=B(b1,b2,…,bk)對于語義動作,把動作的代碼抄進(jìn)分析器中,用代表屬性的變量來代替對應(yīng)屬性的每一次引用。4.4語法制導(dǎo)翻譯在語法分析過程中,隨著分析的步步進(jìn)展,根據(jù)每個產(chǎn)生式所對應(yīng)的語義子程序(或語義規(guī)則描述的語義動作)進(jìn)行翻譯。屬性文法的每個符號有屬性,所以每個符號入棧時,必須連屬性一起入棧,這樣,棧符號就由文法符號及存放該符號屬性的域所組成。由于屬性類型不同,屬性域存放的內(nèi)容就要根據(jù)屬性的類型來定。有的可能直接存放屬性值,也有的存放的是指向?qū)傩灾档闹羔?。對于綜合屬性,其屬性域不存放其屬性值,而是存放一個指針,指向存貯該屬性值的單元。對于繼承屬性,其屬性域直接保存其屬性值。繼承屬性的屬性域剛?cè)霔r為空,但是在該棧符號變成棧頂符號之前的某一時刻,它們必須接受相應(yīng)的屬性值,即在成為棧頂時,繼承屬性的屬性域必須有值。5詳細(xì)的算法描述5.1算法描述按照遞歸下降法求Wa<bDa=a+b,程序的執(zhí)行順序應(yīng)該是S()分W()分E^F()分D()分G()分R()分T()那個Main函數(shù),給出遞歸文法的形式和輸入while語句,并輸出四元式:voidmain()(intj=0;printf("文法G(s)為:\n");printf("s-->DGWE\n");printf("G-->c=R\n");printf("R-->dTe|d\n");printf("T-->+|-|*|/\n");printf("E-->aFb\n");printf("F-->>|==|<\n");printf("請輸入while-do語句(D代表do,W代表while),并以#結(jié)束:\n");do{scanf("%c”,&ch);a[j]=ch;j++;}while(ch!='#');n1=j;ch=a[0];S();printf("\n");if(ch=='#'){printf("輸出四元式為:\n");printf("100(<,a,b,102)\n");printf("101(j,_,_,105)\n");printf("102(+,a,b,n)\n");printf("103(=,n,_,a)\n");printf("104(j,_,_,100)\n");printf("105\n");、}else{printf("error\n");printf("pressanykeytocontinue..\n");getchar();getchar();return;}printf("\n");printf("pressanykeytocontinue..\n");getchar();getchar();}S()函數(shù),給出S-->WEDG形式的調(diào)用分析voidS(){printf("%d\tS-->WEDG\n”,total);total++;W();E();}W()判斷第一個輸入字母是否合法:voidW(){if(ch!='W'){printf("有非法字符%c請按回車返回!!”,ch);getchar();getchar();exit(1);}}E()給出E-->aFb的推倒:voidE(){ch=a[++i1];if(ch!='a'){printf("有非法字符%c%c請按回車返回!!”,ch);getchar();getchar();exit(1);}printf("%d\tE-->aFb\n”,total);total++;F();}F()給出F-->>、F-->==、F--><的形式分析:voidF()(inti;ch=a[++i1];i=i1+1;if(a[i]!='b'){printf("有非法字符%c請按回車返回!!”,a[i]);getchar();getchar();exit(1);}switch(ch){case'>':printf("%d\tF-->>\n”,total);total++;break;case'==':printf("%d\tF-->==\n”,total);total++;break;default:printf("%d\tF--><\n”,total);total++;break;}D();G();}D()、G()給出G-->c=R的形式分析:voidD(){++i1;ch=a[++i1];if(ch!='D'){printf("有非法字符%c請按回車返回!!”,ch);getchar();getchar();exit(1);}ch=a[++i1];}voidG(){inti=i1+1;if(ch!='c'&&a[i]!='='){printf("有非法字符%c%c請按回車返回!!”,ch,a[i]);getchar();getchar();exit(1);}printf("%d\tG-->c=R\n",total);total++;R();}R()給出R-->dTe的形式分析、T()給出「->+/-/*/形式分析voidR(){inti;i=i1+1;i1=i1+2;ch=a[i1];if(a[i]!='='&&ch!='d'){printf("有非法字符%c%c請按回車返回!!”,a[i],ch);getchar();getchar();exit(1);}else{if((a[i1+1]=='+')||(a[i1+1]=='-')||(a[i1+1]=='*')||(a[i1+1]=='/')){printf("%d\tR-->dTe\n”,total);total++;T();}else{printf("%d\tR-->d\n",total);total++;W();E();}}}voidT(){ch=a[++i1];switch(ch){case'+':printf("%d\tT-->+\n",total);total++;break;case'-':printf("%d\tT-->-\n",total);total++;break;case'*':printf("%d\tT-->*\n”,total);total++;break;default:printf("%d\tT-->/\n",total);total++;break;}ch='#';}5.2運(yùn)行結(jié)果編寫好源程序,連接運(yùn)行無誤后,用幾個簡單的while語句檢測其正確性,如:輸入while語句:Wa<bDa=a+b#,看其輸出結(jié)果是否與我們所預(yù)期的結(jié)果一致,如果不一致,則需對源程序進(jìn)行檢查修正,我們可以用逐步調(diào)試的方法來對源程序進(jìn)行跟蹤分析,找出出錯的地方和原因,在對其進(jìn)行修改,重新調(diào)試運(yùn)行,直到輸出正確的結(jié)果為止。若輸出結(jié)果正確,還要多用幾個while語句對其進(jìn)行檢測,直到所有輸出結(jié)果正確。測試結(jié)果如下:6.研制報(bào)告(研制過程,本設(shè)計(jì)的評價、特點(diǎn)、不足、收獲與體會等)6.1研制過程在做本次實(shí)驗(yàn)之前我對LL(1)文法的構(gòu)成,遞歸下降原理不是很了解,在查閱了相關(guān)資料后,對此有了深入了解.在整個設(shè)計(jì)過程中,將詞法分析做為一個單獨(dú)的模塊,它可以被任何語法分析調(diào)用,提高獨(dú)立性.并且在編程之前就已經(jīng)將程序的概要設(shè)計(jì)都做出來了,所以在編寫程序的時候相對比較容易。詞法分析,語法分析都是很容易的,只要理解了分析方法的實(shí)現(xiàn)原理,編寫程序判斷輸入字符串是否滿足給定的文法是比較簡單的。6.2本設(shè)計(jì)的評價、特點(diǎn)本人設(shè)計(jì)的程序基本上實(shí)現(xiàn)了用遞歸下降分析法實(shí)現(xiàn)了while語句的翻譯,并能夠用四元式將其輸出,使人一目了然。同時,對復(fù)雜的賦值表達(dá)式也能夠進(jìn)行正確的翻譯,如a=(a+b)/2+c用四元式表示為:(1)(+,a,b,t1)(2)(/,t1,2,t2)(3)(+,t2,c,t3)(4)(:=,t3,--,a)。在本次設(shè)計(jì)中,程序具有良好的用戶界面,獨(dú)立的詞法與語法接口,并且在語法分析過程中可以準(zhǔn)確指出語句中有錯誤的位置。在編制整個設(shè)計(jì)的過程中,利用了所學(xué)的軟件工程,軟件設(shè)計(jì)面向?qū)ο蟮姆椒ā?.3感受和體會《編譯原理》這門課程是計(jì)算機(jī)專業(yè)一門基礎(chǔ)性學(xué)科,重要性可見一斑,學(xué)好這門課程對以后學(xué)習(xí)具有深遠(yuǎn)的影響。而課程設(shè)計(jì)便是對學(xué)習(xí)效果的檢驗(yàn)。課程設(shè)計(jì)不僅可以鍛煉我們獨(dú)立思考問題、解決問題的能力,而且可以培養(yǎng)我們的整體性思維的能力;通過課程設(shè)計(jì),使我了解了很多編譯原理應(yīng)用的知識,比如:讀取一個文件、對一個輸入語句進(jìn)行詞法分析、語法分析,給出分析結(jié)果,對基本的語法分析過程有了一定的了解等。雖然一開始對于此次課設(shè)的題目一頭霧水,不知從何下手,但是最后通過查閱課本相關(guān)內(nèi)容和實(shí)驗(yàn)手冊的相關(guān)內(nèi)容,最后漸漸明白;知道了如何對輸入文件中的內(nèi)容進(jìn)行掃描讀取,對讀取的字符或字符串進(jìn)行詞法和語法分析,確定關(guān)鍵字,同時提取出關(guān)鍵字while,對while的循環(huán)條件進(jìn)行掃描判斷,最終確定一個滿足while語法要求的循環(huán)條件,對滿足條件以后的語

溫馨提示

  • 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

提交評論