




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
LL(1)語法分析程序2010211306班 趙雪瑩(10211310)語法分析程序:該語法分析程序?qū)崿F(xiàn)對算術(shù)表達式的語法分析,并且在對輸入表達式進行分析的過程中,輸出所采用的產(chǎn)生式。該程序使用的是LL(1)語法分析程序,為給定文法構(gòu)造預(yù)測分析表,并通過預(yù)測分析表對輸入的表達式進行預(yù)測分析,并將棧頂狀態(tài)和預(yù)測分析過程詳細輸出,如果匹配成功則接受,如果匹配不成功則返回錯誤信息。給定文法的產(chǎn)生式:E-E+T | E-T | TT-T*F | T/F | FF- id | (E) | num源代碼:#include #include #include #include #include using namespace std;struct Node1 char vn; char vt; char s12;MAP22;/存儲分析預(yù)測表每個位置對應(yīng)的終結(jié)符,非終結(jié)符,產(chǎn)生式 int k;char G1212=E-TR,R-+TR,R-TR,R-e,T-FW,W-*FW,W-/FW,W-e,F-(E),F-i,F-n;/存儲文法中的產(chǎn)生式 ,用R代表E,W代表T,e代表空char VN6=E,R,T,W,F;/存儲非終結(jié)符 char VT9=i,n,+,-,*,/,(,),#;/存儲終結(jié)符 char FOLLOW1212=(,i,n,+,-,),#,(,i,n,*,/,+,-,),#,(,i,n;/存儲文法中每個產(chǎn)生式對應(yīng)的FOLLOW集合 char Right128=-TR,-+TR,-TR,-e,-FW,-*FW,-/FW,-e,-(E),-i,-n;stack stak,stak1,stak2;bool compare(char *a,char *b) int i,la=strlen(a),j,lb=strlen(b); for(i=0;ila;i+) for(j=0;jlb;j+) if(ai=bj) return 1; return 0;char *Find(char vn,char vt) int i; for(i=0;ik;i+) if(MAPi.vn=vn & MAPi.vt=vt) return MAPi.s; return error;char * Analyse(char * word) char p,c,action10,output10; int i=1,l=strlen(word),j,k=0,l_act,m,x; printf(_n); printf(n 對符號串%s的分析過程n,word); for(x=0;xl;x+)/把用字母數(shù)字表示的輸入串轉(zhuǎn)換為token序列的表示方法 c=wordx; if(c=a)|(c=A) wordx=i; else if(c=0&c=9) wordx=n; else wordx=c; while(!stak.empty()/判斷棧中是否為空,若不空就將棧頂元素與分析表匹配進行相應(yīng)操作 stak.pop(); stak.push(#);/棧底標志 stak.push(E);/起始符號先入棧 printf( 步驟 棧頂元素 輸入串 推到所用產(chǎn)生式或匹配n); p=stak.top(); while(p!=#)/查預(yù)測分析表將棧頂元素進行匹配,若棧頂元素與輸入串匹配成功則向前匹配,否則生成式反序入棧 printf(%7d ,i+); p=stak.top();/從棧中彈出一個棧頂符號,由p記錄并輸出 stak.pop(); printf(%6c ,p); for(j=k,m=0;j1;j-) stak.push(actionj); if(strcmp(output,#)!=0)/匹配不成功 return ERROR; int main () freopen(in.txt,r,stdin); char source100; int i,j,flag,l,m; printf(n*R代表E,W代表T,e代表空*nn); printf(算術(shù)表達式對應(yīng)的文法產(chǎn)生式如下:n); for(i=0;i8;i+) printf( %sn,Gi); printf(_n); printf(n該文法的FOLLOW集如下:n); /手動生成集合 for(i=0;i8;i+) printf( FOLLOW(%s) = %s n,Gi,FOLLOWi); printf(_n); for(i=0,k=0;i11;i+)/通過集合生成預(yù)測分析表 l=strlen(FOLLOWi); for(j=0;jl;j+=2) MAPk.vn=Gi0; MAPk.vt=FOLLOWij; strcpy(MAPk.s,Righti); k+; printf(n表達式文法的預(yù)測分析表如下:nn); printf( ); for(i=0;i9;i+) printf(%7c,VTi); printf(n); for(i=0;i5;i+) printf( -n); printf(%7c,VNi); for(j=0;j9;j+) for(m=0;msource)/輸入源文件串進行預(yù)測分析 printf(n分析結(jié)果:%snn,Analyse(source); while(1); return 0;將其改寫LL(1)文法:
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度金融機構(gòu)勞動合同管理規(guī)范與合規(guī)操作指南
- 二零二五年度教育信息化供應(yīng)商合同保密協(xié)議與資源整合
- 二零二五年度口腔護理團隊聘用協(xié)議
- 2025年度酒店與高端會所商務(wù)合作服務(wù)合同
- 二零二五年度旅游度假區(qū)酒店租賃合同解除及設(shè)施移交協(xié)議
- 工程項目水電施工協(xié)議
- 廣告屏幕投放合同
- 建筑法律顧問合同
- 垂釣魚塘租賃合同
- 復(fù)方芩蘭口服液項目風(fēng)險識別與評估綜合報告
- 2024年國家公務(wù)員考試公共法律知識考試題庫及答案(共530題)
- 數(shù)字出版概論 課件 第一章 數(shù)字出版及其發(fā)展歷程
- 英語語言與文化智慧樹知到答案2024年華僑大學(xué)
- 2024年江蘇教師資格證中學(xué)綜合素質(zhì)試卷及解答
- Wonderware InTouch:報警與事件處理機制技術(shù)教程.Tex.header
- 北京2024年北京服裝學(xué)院第一批人才招聘筆試歷年典型考題及考點附答案解析
- 田園風(fēng)光(教案)2023-2024學(xué)年美術(shù)二年級下冊
- 特種設(shè)備管理和作業(yè)人員崗位職責(zé)
- 部編版語文四年級下冊第三單元教材解讀大單元集體備課
- 2024-2029年中國數(shù)字能源行業(yè)市場發(fā)展分析及前景趨勢與投融資研究報告
- 《繪本教學(xué)》課件
評論
0/150
提交評論