實驗二----遞歸下降語法分析程序設(shè)計_第1頁
實驗二----遞歸下降語法分析程序設(shè)計_第2頁
實驗二----遞歸下降語法分析程序設(shè)計_第3頁
實驗二----遞歸下降語法分析程序設(shè)計_第4頁
實驗二----遞歸下降語法分析程序設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗二 遞歸下降語法分析程序設(shè)計實驗?zāi)康模? 了解語法分析的主要任務(wù)。2 熟悉編譯程序的編制。實驗內(nèi)容:根據(jù)某文法,構(gòu)造一基本遞歸下降語法分析程序。給出分析過程中所用的產(chǎn)生式序列。實驗要求:1. 構(gòu)造一個小語言的文法,例如,Pascal語言子集的文法,考慮其中的算術(shù)表達(dá)式文法:G: GE:+|-| EE+T|T*|/| TT*F|F|() Fi|(E)2. 設(shè)計語法樹的輸出形式,例如:產(chǎn)生式3. 編寫遞歸下降語法分析程序?qū)崿F(xiàn)基本的遞歸下降分析器,能夠分析任給的符號串是否為該文法所定義的合法算術(shù)表達(dá)式。實驗報告中要說明分析使用的方法。4. 生成并輸出分析過程中所用的產(chǎn)生式序列:1 產(chǎn)生式12 產(chǎn)

2、生式2實驗步驟:1. 寫出一個小語言的算術(shù)表達(dá)式文法。2. 寫出該小語言的算術(shù)表達(dá)式等價的LL(1)文法。例如: GE: 其中ETG G為EE+TG| 為TFS S為TT*FS| Fi|(E)3. 編寫遞歸下降語法分析程序。4. 調(diào)試運行程序。5. 結(jié)果分析。6. 撰寫實驗報告。實驗報告:每位同學(xué)撰寫一份試驗報告,并提交電子版。1. 源程序。2. 畫出流程圖。3. 實驗設(shè)計過程中出現(xiàn)的問題及解決的方法。4. 實驗設(shè)計過程中的體會。5. 給出程序清單。6. 給出測試結(jié)果。實驗報告命名規(guī)則:個人:2013-14(1)醫(yī)智(1)蔡菲菲實驗二交各班課代表匯總后,由課代表打包后,發(fā)送至老師的郵箱班級命名

3、規(guī)則:2013-14醫(yī)智(1)實驗二截止日期:第14周周五晚11點30分 測試的結(jié)果舉例源代碼:#include #include #include #include char a50,b50,d200,e10,ch;/*數(shù)組a存輸入串,數(shù)組d存推導(dǎo)式*/int n1,i1=0,flag=1,n=5; /*flag=1處理非終結(jié)符,flag=0處理終結(jié)符*/ int total=0; /*步驟計數(shù)器*/int E(),E1(),T();int G();/*E*/int S();/*T*/int F();void input();void input1();void output();void

4、main() /*遞歸分析*/int f,p,j=0;char x;d0=E;d1=;d2=;d3=T;d4=G;d5=#;printf(請輸入字符串(長度TGt,total);total+;flag=1;input();input1();f=T();if (f=0)return(0);t=G();if (t=0)return(0);else return(1);int E() int f,t;printf(%dtE-TGt,total);total+;e0=E;e1=;e2=;e3=T;e4=G;e5=#;output();flag=1;input();input1();f=T();if (

5、f=0)return(0);t=G();if (t=0)return(0);elsereturn(1);int T() int f,t;printf(%dtT-FSt,total); total+;e0=T;e1=;e2=;e3=F;e4=S;e5=#;output();flag=1;input();input1();f=F();if (f=0)return(0);t=S();if (t=0)return(0);elsereturn(1);int G() int f;if(ch=+) bi1=ch;printf(%dtG-+TGt,total);total+;e0=G;e1=;e2=;e3=+

6、;e4=T;e5=G;e6=#;output();flag=0;input();input1();ch=a+i1;f=T();if (f=0)return(0);G();return(1);printf(%dtG-t,total);total+;e0=G;e1=;e2=;e3=;e4=#;output();flag=1;input();input1();return(1);int S()int f,t;if(ch=*) bi1=ch;printf(%dtS-*FSt,total); total+;e0=S;e1=;e2=;e3=*;e4=F;e5=S;e6=#;output();flag=0;

7、input();input1();ch=a+i1;f=F();if (f=0)return(0);t=S();if (t=0)return(0);elsereturn(1);printf(%dtS-t,total); total+;e0=S;e1=;e2=;e3=;e4=#;output();flag=1;ai1=ch;input();input1();return(1);int F() int f;if(ch=() bi1=ch;printf(%dtF-(E)t,total); total+;e0=F;e1=;e2=;e3=(;e4=E;e5=);e6=#;output();flag=0;i

8、nput();input1();ch=a+i1;f=E();if (f=0)return(0);if(ch=) bi1=ch;printf(%dtF-(E)t,total); total+;flag=0;input();input1();ch=a+i1;else printf(errorn);return(0);elseif(ch=i) bi1=ch;printf(%dtF-it,total); total+;e0=F;e1=;e2=;e3=i;e4=#;output();flag=0;input();input1();ch=a+i1;else printf(errorn);return(0)

9、;return(1);void input() int j=0;for (;j=i1-flag;j+)printf(%c,bj); /*輸出分析串*/printf(tt);printf(%ctt,ch); /*輸出分析字符*/void input1() int j;for (j=i1+1-flag;j;dn+2=#;n=n+2;i=n;i=i-2;while(di!=&i!=0)i=i-1;i=i+1;while(di!=e0)i=i+1;q=i;m=q;k=q;while(dm!=)m=m-1;m=m+1;while(m!=q) dn=dm;m=m+1;n=n+1;dn=#;for(j=3;

10、ej!=#;j+)dn=ej;n=n+1;k=k+1;while(dk!=) dn=dk;n=n+1; k=k+1;dn=#; 流程圖:開始輸入符號串(#結(jié)束)調(diào)用函數(shù)E1當(dāng)前字符為#?匹配成功accept,輸出最左推導(dǎo)過程結(jié)束匹配失敗errorYNE、E1INPUTSYM=”i”?TINPUTSYM=”(“?GError出口YYNNTINPUTSYM=”i”?FINPUTSYM=”(“?SError出口YYNNINPUTSYM=”i”?TINPUTSYM=”(“?GError出口YYNNGINPUTSYM=”+”?NYINPUTSYM=下一個符號YYNNNYINPUTSYM=”i”?FINPUTSYM=”(“?SError出口SINPUTSYM=”*”?INPUTSYM=下一個符號FINPUTSYM=”i”?INPUTSYM=”(“?ErrorYYNNEYNINPUTSYM=下一個符號INPUTSYM=”)“?出口運行結(jié)果:驗證i*i+i驗證ik5實驗設(shè)計過程中出現(xiàn)的問題及解決的方法: 本次實驗最難的問題就是畫流程圖,解決方法就是通過問同學(xué)和通過goog

溫馨提示

  • 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

提交評論