編譯原理實驗三.doc

編譯原理實驗三.doc

ID:56252021

大?。?06.00 KB

頁數(shù):12頁

時間:2020-03-25

編譯原理實驗三.doc_第1頁
編譯原理實驗三.doc_第2頁
編譯原理實驗三.doc_第3頁
編譯原理實驗三.doc_第4頁
編譯原理實驗三.doc_第5頁
資源描述:

《編譯原理實驗三.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、《編譯原理》實驗報告實驗序號: 實驗三        實驗項目名稱:語法分析(遞歸下降法)學  號姓  名專業(yè)、班軟件工程二班實驗地點實316指導教師實驗時間2011-3-10一、實驗?zāi)康募耙笸ㄟ^本次實驗的學習,學生需要掌握開發(fā)遞歸下降分析方法的基本流程和基本方法,并提交一個完整的應(yīng)用程序。二、實驗設(shè)備(環(huán)境)及要求VC++60.三、實驗內(nèi)容與步驟完成以下描述算術(shù)表達式的LL(1)文法的遞歸下降分析程序G[E]:E→TE′E′→ATE′

2、εT→FT′T′→MFT′

3、εF→(E)

4、iA→+

5、-M→*

6、/說明:終結(jié)符號i為用

7、戶定義的簡單變量,即標識符的定義。四、實驗結(jié)果與數(shù)據(jù)處理實驗代碼:#include12#include#include#include#includeusingnamespacestd;structNode1{charvn;charvt;chars[10];}MAP[20];//存儲分析預(yù)測表每個位置對應(yīng)的終結(jié)符,非終結(jié)符,產(chǎn)生式intk;//用R代表E',W代表T',e代表空charG[10][10]={"E->TR","R->+TR"

8、,"R->e","T->FW","W->*FW","W->e","F->(E)","F->i"};//存儲文法中的產(chǎn)生式charVN[6]={'E','R','T','W','F'};//存儲非終結(jié)符charVT[6]={'i','+','*','(',')','#'};//存儲終結(jié)符charSELECT[10][10]={"(,i","+","),#","(,i","*","+,),#","(","i"};//存儲文法中每個產(chǎn)生式對應(yīng)的SELECT集charRight[10][8]={"->TR","->+TR","->

9、e","->FW","->*FW","->e","->(E)","->i"};stackstak,stak1,stak2;boolcompare(char*a,char*b){inti,la=strlen(a),j,lb=strlen(b);for(i=0;i

10、].vt==vt)returnMAP[i].s;}return"error";}char*Analyse(char*word){12charp,action[10],output[10];inti=1,j,l=strlen(word),k=0,l_act,m;while(!stak.empty())stak.pop();stak.push('#');stak.push('E');printf("_________________________________________________________________

11、_______________");printf("對符號串%s的分析過程",word);printf("步驟棧頂元素剩余輸入串推到所用產(chǎn)生式或匹配");p=stak.top();while(p!='#'){printf("%7d",i++);p=stak.top();stak.pop();printf("%6c",p);for(j=k,m=0;j