




免費預覽已結束,剩余3頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
LL(1)語法分析程序2010211306班 趙雪瑩(10211310)語法分析程序:該語法分析程序實現對算術表達式的語法分析,并且在對輸入表達式進行分析的過程中,輸出所采用的產生式。該程序使用的是LL(1)語法分析程序,為給定文法構造預測分析表,并通過預測分析表對輸入的表達式進行預測分析,并將棧頂狀態和預測分析過程詳細輸出,如果匹配成功則接受,如果匹配不成功則返回錯誤信息。給定文法的產生式: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;/存儲分析預測表每個位置對應的終結符,非終結符,產生式 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;/存儲文法中的產生式 ,用R代表E,W代表T,e代表空char VN6=E,R,T,W,F;/存儲非終結符 char VT9=i,n,+,-,*,/,(,),#;/存儲終結符 char FOLLOW1212=(,i,n,+,-,),#,(,i,n,*,/,+,-,),#,(,i,n;/存儲文法中每個產生式對應的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+)/把用字母數字表示的輸入串轉換為token序列的表示方法 c=wordx; if(c=a)|(c=A) wordx=i; else if(c=0&c=9) wordx=n; else wordx=c; while(!stak.empty()/判斷棧中是否為空,若不空就將棧頂元素與分析表匹配進行相應操作 stak.pop(); stak.push(#);/棧底標志 stak.push(E);/起始符號先入棧 printf( 步驟 棧頂元素 輸入串 推到所用產生式或匹配n); p=stak.top(); while(p!=#)/查預測分析表將棧頂元素進行匹配,若棧頂元素與輸入串匹配成功則向前匹配,否則生成式反序入棧 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(算術表達式對應的文法產生式如下: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+)/通過集合生成預測分析表 l=strlen(FOLLOWi); for(j=0;jl;j+=2) MAPk.vn=Gi0; MAPk.vt=FOLLOWij; strcpy(MAPk.s,Righti); k+; printf(n表達式文法的預測分析表如下: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)/輸入源文件串進行預測分析 printf(n分析結果:%snn,Analyse(source); while(1); return 0;將其改寫LL(1)文法:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級數學上冊(人教版)習題課件-第1課時 小數乘整數
- Module5-Writing-公開課教學設計
- 化學專業指導性教學計劃及其進程表(精)-
- 浙江省湖州市2023-2024學年高二下學期6月期末調研測試數學試卷(解析版)
- Unit5-Reading-and-Thinking-名師課件-陶江英
- 2025XX展覽館裝修合同
- 2025年高考語文真題全國二卷《儒林外史》節選評注鑒賞??
- 2024年杭州市教育局所屬事業單位次招聘真題
- 元旦故事銀行幼兒的淡藍夢想
- 2025安全文明施工安全防護用品租賃費用支付協議
- 國開電大 管理概論 形考任務一(畫組織結構圖)
- 2023年高三新高考英語復習備考策略及方法指導(深度課件)
- 【課件】草原上的小木屋
- DB63-T 241-2021草地毒害草綜合治理技術規范
- 高層建筑施工基坑工程勘察及支護結構選型培訓
- 四年級上冊音樂課件-活動 歡騰的那達慕 人教版(簡譜) (共17張PPT)
- 四年級下冊綜合實踐活動教案-我的時間我做主 全國通用
- 預拌混凝土及原材料檢測理論考試題庫(含答案)
- 3~6歲兒童早期運動游戲干預課程設計研究-基于SKIP的研究證據
- 《植物生理學》課件第三章+植物的光合作用
- 游泳館網架翻新施工組織方案設計
評論
0/150
提交評論