下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、輔導(dǎo)教師 成績 實驗日期實驗時間1實驗名稱 語法分析器的設(shè)計與實現(xiàn)2、實驗?zāi)康恼莆兆陨隙抡Z法分析方法、自下而上語法分析方法3、實驗要求(1)實驗內(nèi)容:四選一 設(shè)計及實現(xiàn)能夠識別表達式的預(yù)測分析程序。文法如下:GE:E-E+T|T T-T*F|F F-(E)|i 設(shè)計及實現(xiàn)能夠識別表達式的LR分析程序。 文法如下:GE:E-E+T|T T-T*F|F F-(E)|i 設(shè)計及實現(xiàn)能夠識別表達式的算符優(yōu)先分析程序。 文法如下:GE:E-E+T|T T-T*F|F F-PF|P P-(E)|i 設(shè)計及實現(xiàn)計算表達式的計算器。 表達式中可包含+、-、*、/、(、)運算符。(2)實驗要求:對已給的一個二
2、元式形式表達式,能夠檢查有無語法錯誤。并指定出錯位置。將表達式的語法樹輸出(或?qū)⒄Z法分析過程輸出)。4、實驗原理根據(jù)自上而下和自下而上的語法分析思想實現(xiàn)語法分析程序。5、實驗步驟(1)根據(jù)文法構(gòu)造語法分析表。(2)編寫總控程序?qū)崿F(xiàn)語法分析。6、狀態(tài)轉(zhuǎn)換圖及詞法分析程序#include#include#include #include using namespace std;char Vn=E,e,T,t,F; /定義文法的非終結(jié)符,小寫字母e表示Echar Vt=i,+,*,(,),#; /定義文法的終結(jié)符int LENVt=sizeof(Vt);void showstack(stack st
3、) /從棧底開始顯示棧中的內(nèi)容 int i,j; char ch100; j=st.size(); for(i=0;i=0;i-) coutchi; st.push(chi); int find(char c,char array,int n) /查找函數(shù),返回布爾值 int i; int flag=0; for(i=0;in;i+) if(c=arrayi) flag=1; return flag;int location(char c,char array) /定位函數(shù),指出字符所在位置,即將字母轉(zhuǎn)換為數(shù)組下標(biāo)值 int i; for(i=0;c!=arrayi;i+); return i
4、;void error() cout 出錯!endl;void analyse(char Vn,char Vt,string M56,string str) int i,j,p,q,h,flag=1; char a,X; stack st; /定義堆棧 st.push(#); st.push(Vn0); /#與識別符號入棧 j=0; /j指向輸入串的指針 h=1; a=strj; cout步驟 分析棧 剩余輸入串 所用產(chǎn)生式endl; while(flag=1) couth ; /顯示步驟 h+; showstack(st); /顯示分析棧中內(nèi)容 cout ; for(i=j;istr.siz
5、e();i+) coutstri; /顯示剩余字符串 X=st.top(); /取棧頂符號放入X if(find(X,Vt,LENVt)=1) /X是終結(jié)符 if(X=a) /分析棧的棧頂元素和剩余輸入串的第一個元素相比較 if (X!=#) cout X匹配endl; st.pop(); a=str+j; /讀入輸入串的下一字符 else cout 接受!endlendl; flag=0; elseerror();break;elsep=location(X,Vn); /實現(xiàn)下標(biāo)的轉(zhuǎn)換(非終結(jié)符轉(zhuǎn)換為行下標(biāo))q=location(a,Vt); /實現(xiàn)下標(biāo)的轉(zhuǎn)換(終結(jié)符轉(zhuǎn)換為列下標(biāo))strin
6、g S1(NULL),S2(null);if(Mpq=S1 | Mpq=S2) /查找二維數(shù)組中的產(chǎn)生式error();break; /對應(yīng)項為空,則出錯elsestring str0=Mpq; cout Xstr0=0;i-) st.push(str0i);/產(chǎn)生式右端逆序進棧 main() string M56=Te ,NULL,NULL,Te, NULL,NULL, NULL,+Te ,NULL,NULL,$, $,Ft, NULL,NULL,Ft, NULL,NULL,NULL,$, *Ft, NULL,$, $,i, NULL,NULL,(E), NULL,NULL; /預(yù)測分析表j string str; int errflag,i; coutE+T|T T-T*F|F F-(E)|iendl; cout請輸入分析串(以#結(jié)束):str; for(i=0;istr.size();i+) if(!find(stri,Vt,LENVt) cout輸入串中包含有非終結(jié)符stri(輸入錯誤)!endl; errflag=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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 村鎮(zhèn)鄉(xiāng)垃圾清運合同
- 房屋裝修工程合同范本
- 互聯(lián)網(wǎng)居間合同
- 婚紗攝影館裝修合同管理費
- 紡織品出口合同
- 醫(yī)藥研發(fā)項目授權(quán)合同
- 電子商行業(yè)平臺建設(shè)及推廣合作合同
- 2025年度新型環(huán)保材料廠房場地租賃合同
- 2025年度物流保密協(xié)議合同(電商倉儲配送)
- 2025年度體育公園球場租賃與賽事推廣合同
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 國旗班指揮刀訓(xùn)練動作要領(lǐng)
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2021-2022學(xué)年遼寧省重點高中協(xié)作校高一上學(xué)期期末語文試題
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計算100道及答案
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標(biāo)全國Ⅰ卷語文高考真題試卷(含答案)
評論
0/150
提交評論