




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學院(系)名稱:計算機工程系姓名學號10070045專業(yè)計算機科學與技術專業(yè)班級2010級 班實驗項目實驗二:語法分析課程名稱編譯原理課程代碼0310243實驗時間 年 月 日 第 、 節(jié) 年 月 日 第 、 節(jié)實驗地點第一教學樓1508批改意見成績教師簽字: 實驗內容: 可選擇LL1分析法、算符優(yōu)先分析法、LR分析法之一,實現(xiàn)如下表達式文法的語法分析器:(1)EE+T | E-T | T(2)TT*F | T/F | F(3)FPF | P(4)P(E) | i實驗目的:1掌握語法分析的基本概念和基本方法;2正確理解LL1分析法、算符優(yōu)先分析法、LR分析法的設計與使用方法。實驗要求:1按要求
2、設計實現(xiàn)能識別上述文法所表示語言的語法分析器,并要求輸出全部分析過程;2要求詳細描述所選分析方法針對上述文法的分析表構造過程;3完成對所設計語法分析器的功能測試,并給出測試數(shù)據(jù)和實驗結果;4為增加程序可讀性,請在程序中進行適當注釋說明;5整理上機步驟,總結經驗和體會;6認真完成并按時提交實驗報告。實驗環(huán)境:Windows XP實驗分析:(1)定義部分:定義常量、變量、數(shù)據(jù)結構。(2)初始化:設立LL(1)分析表、初始化變量空間(包括堆棧、結構體、數(shù)組、臨時變量等);(3)控制部分:從鍵盤輸入一個表達式符號串;(4)利用LL(1)分析算法進行表達式處理:根據(jù)LL(1)分析表對表達式符號串進行堆棧
3、(或其他)操作,輸出分實驗分析表:i*()#EE->TE'E->TE'E'E'->+TE'E'->E'->TT->FT'T->FT'T'T'->T'->*FT'T'->T'->FF->iF->(E)實驗程序:#include<iostream>#include<stack>using namespace std;stack<char> symbol;stack&l
4、t;int> state;char sen50;char sym126=/符號表 's','e','e','s','e','e', 'e','s','e','e','e','a', 'r','r','s','r','r','r', 'r','r','r',&
5、#39;r','r','r', 's','e','e','s','e','e', 'r','r','r','r','r','r', 's','e','e','s','e','e', 's','e','e','s
6、9;,'e','e', 'e','s','e','e','s','e', 'r','r','s','r','r','r', 'r','r','r','r','r','r', 'r','r','r','r','
7、r','r'char snum126=/數(shù)字表5,1,1,4,2,1,3,6,5,3,2,0,2,2,7,2,2,2,4,4,4,4,4,4,5,1,1,4,2,1,6,6,6,6,6,6,5,1,1,4,2,1,5,1,1,4,2,1,3,6,5,3,11,4,1,1,7,1,1,1,3,3,3,3,3,3,5,5,5,5,5,5;int go2123=/goto表1,2,3,0,0,0,0,0,0,0,0,0,8,2,3,0,0,0,0,9,3,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0;void action(int i,char *&a
8、,char &how,int &num,char &A,int &b)/action函數(shù)i,aint j;switch(*a)case 'i': j=0;break;case '+': j=1;break;case '*': j=2;break;case '(': j=3;break;case ')': j=4;break;case '#': j=5;break;default: j=-1;break;if(j!=-1) how=symij; num=snumij;
9、if(how='r') switch(num) case 1: A='E',b=3; cout<<"按E->E+T規(guī)約"<<endl; break; case 2: A='E',b=1; cout<<"按E->T規(guī)約"<<endl; break; case 3: A='T',b=3; cout<<"按T->T*F規(guī)約"<<endl; break; case 4: A='T
10、39;,b=1; cout<<"按T->F規(guī)約"<<endl; break; case 5: A='F',b=3; cout<<"按F->(E)規(guī)約"<<endl; break; case 6: A='F',b=1; cout<<"按F->id規(guī)約"<<endl; break; default: break; int go(int t,char A)/gotot,Aswitch(A)case 'E'
11、: return go2t0;break;case 'T': return go2t1;break;case 'F': return go2t2;break;void error(int i,int j,char *&a)/error處理函數(shù)cout<<"error"<<endl;switch(j)case 1:/期望輸入id或左括號,但是碰到+,*,或$,就假設已經輸入id了,轉到狀態(tài)5 state.push(5); symbol.push('i');/必須有這個,如果假設輸入id的話,符號棧
12、里必須有. cout<<"缺少運算對象id"<<endl; break;case 2:/從輸入中刪除右括號 a+; cout<<"不配對的右括號"<<endl; break;case 3:/期望碰到+,但是輸入id或左括號,假設已經輸入算符+,轉到狀態(tài)6 state.push(6); symbol.push('+'); cout<<"缺少運算符"<<endl; break;case 4:/缺少右括號,假設已經輸入右括號,轉到狀態(tài)11 state.p
13、ush(11); symbol.push(')'); cout<<"缺少右括號"<<endl; break;case 5: a+; cout<<"*號無效,應該輸入+號!"<<endl;case 6: a+;int main()int s;char *a;char how;int num;int b;char A;while(1) cin>>sen; a=sen; state.push(0);/先輸入0狀態(tài) while(*a!='0') b=0;num=0;how
14、='0'A='0' s=state.top(); action(s,a,how,num,A,b); if(how='s')/移進 cout<<"移進"<<endl; symbol.push(*a); state.push(num); / if(*a='i') / a+;/在這里忽略i后面的d a+; else if(how='r')/規(guī)約 for(int i=0;i<b;i+) if(!state.empty() state.pop(); if(!symbol.empty() symbol.pop(); int t=state.top(); symbol.push(A); state.push(go(t,A); else if(how='a')/接受 break; else error(s,num,a);/錯誤處理 cout<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津機電職業(yè)技術學院《產品創(chuàng)意設計2》2023-2024學年第二學期期末試卷
- 內蒙古科技職業(yè)學院《產品設計二維構成基礎》2023-2024學年第二學期期末試卷
- 高中語文AR課件
- 立春養(yǎng)生知識
- 《消費者行為分析》課件
- 2025至2031年中國刮柄行業(yè)投資前景及策略咨詢研究報告
- 2025培訓機構轉讓合同范本
- 2024初三60天中考沖刺動員會上,校長講話既然我們都是追夢人,那就讓我們仗劍走天涯,沖刺做英雄
- 2025至2030年中國花蝶深藍數(shù)據(jù)監(jiān)測研究報告
- 重慶城市減震施工方案
- 2025年上海楊浦城市建設投資集團有限公司招聘筆試參考題庫附帶答案詳解
- 國家義務教育質量監(jiān)測八年級美術樣卷
- 上海市閔行區(qū)2024屆高三下學期二模試題 化學 含答案
- DB34T 4827-2024 低溫環(huán)保瀝青路面技術規(guī)程
- 植物拓染非物質文化遺產傳承拓花草之印染自然之美課件
- (正式版)JTT 1499-2024 公路水運工程臨時用電技術規(guī)程
- 馬克思主義與社會科學方法論(研究生政治課程)復習重點
- 冠狀動脈CT解剖詳解
- 檔案學概論重點知識梳理
- 地下連續(xù)墻鋼筋籠起重吊裝專項施工方案
- 單值和移動極差X-MR控制圖
評論
0/150
提交評論