




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、輔導(dǎo)教師 成績 實驗日期實驗時間1實驗名稱 語法分析器的設(shè)計與實現(xiàn)2、實驗?zāi)康恼莆兆陨隙抡Z法分析方法、自下而上語法分析方法3、實驗要求(1)實驗內(nèi)容:四選一 設(shè)計及實現(xiàn)能夠識別表達(dá)式的預(yù)測分析程序。文法如下:GE:E-E+T|T T-T*F|F F-(E)|i 設(shè)計及實現(xiàn)能夠識別表達(dá)式的LR分析程序。 文法如下:GE:E-E+T|T T-T*F|F F-(E)|i 設(shè)計及實現(xiàn)能夠識別表達(dá)式的算符優(yōu)先分析程序。 文法如下:GE:E-E+T|T T-T*F|F F-PF|P P-(E)|i 設(shè)計及實現(xiàn)計算表達(dá)式的計算器。 表達(dá)式中可包含+、-、*、/、(、)運(yùn)算符。(2)實驗要求:對已給的一個二
2、元式形式表達(dá)式,能夠檢查有無語法錯誤。并指定出錯位置。將表達(dá)式的語法樹輸出(或?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)生式右端逆序進(jì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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省稽陽聯(lián)誼學(xué)校2025年4月高三聯(lián)考數(shù)學(xué)試卷(含答案)
- 《人生的意義在于奉獻(xiàn)》課件
- 《演講的藝術(shù)》課件
- 受彎構(gòu)件的其他構(gòu)造要求鋼筋混凝土結(jié)構(gòu)課件
- 短期合同續(xù)簽建議
- 鐵路班組管理S班組凝聚力訓(xùn)練課件
- 討論照明電路能否采用三相三線制供電方式不加零線會不會出現(xiàn)問
- 網(wǎng)格橋架安裝施工方案
- 鐵路客運(yùn)站車無線交互系統(tǒng)客運(yùn)管理部分課件
- 大學(xué)生職業(yè)規(guī)劃大賽《視覺傳達(dá)設(shè)計專業(yè)》生涯發(fā)展展示
- 光伏工程施工安全方案
- 聲樂課課件教學(xué)
- 保密法實施條例培訓(xùn)
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報書
- GB/T 44395-2024激光雷達(dá)測風(fēng)數(shù)據(jù)可靠性評價技術(shù)規(guī)范
- 2024年四川成都市成華區(qū)“蓉漂人才薈”事業(yè)單位招聘高層次人才歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 2024年浙江省金華市東陽市橫店鎮(zhèn)三校中考二模道德與法治試題(原卷版)
- 杭州市上城區(qū)政務(wù)服務(wù)中心招聘筆試真題2022
- 中華聯(lián)合保險集團(tuán)股份有限公司行測筆試題庫2024
- 幼兒園中班社會活動《城市美容師》課件
- 地球的形狀與內(nèi)部結(jié)構(gòu)30張省公開課一等獎新名師比賽一等獎?wù)n件
評論
0/150
提交評論