




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)編號(hào):語(yǔ)法分析(2)一、實(shí)驗(yàn)?zāi)康募耙缶幹埔粋€(gè)遞歸下降分析程序,實(shí)現(xiàn)對(duì)詞法分析程序所提供的單詞序列的語(yǔ)法檢查和結(jié)構(gòu)分 析。利用c語(yǔ)言編制遞歸下降分析程序,并對(duì)簡(jiǎn)單語(yǔ)言進(jìn)行語(yǔ)法分析。1待分析的簡(jiǎn)單語(yǔ)言的語(yǔ)法用擴(kuò)充的bnf表示如下:(1) 程序::=begin 語(yǔ)句串end(2) 語(yǔ)句串=語(yǔ)句; 語(yǔ)句(3) 語(yǔ)句::= 賦值語(yǔ)句(4) 賦值語(yǔ)句=id:=表達(dá)式(5) 表達(dá)式= 項(xiàng)+ 項(xiàng):|- 項(xiàng)(6) 項(xiàng)::=因子*因子|/因子因子:=id | num | (表達(dá)式)2實(shí)驗(yàn)要求說明輸入單詞串,以“#”結(jié)束,如果是文法正確的句子,則輸出成功信息,打印“success”, 否則輸出“error”。
2、例如:輸入 begin a:=9; x:=2*3; b:=a+x end # 輸山 success!輸入 x:=a+b*c end #輸山 error二、實(shí)驗(yàn)環(huán)境microsoft visual studio vc6. 0三、算法描述(1) 主程序示意圖如圖2-1所示。晉初俏調(diào)用scaner讀下一個(gè)單詞符號(hào)調(diào)用 lrparser圖2-1語(yǔ)法分析主程序示意圖(2) 遞歸下降分析程序示意圖如圖2-2所示。(3) 語(yǔ)句串分析過程示意圖如圖2-3所示。打印分析成功出錯(cuò)處理圖2-2遞歸下降分析程序示意圖(4) statement語(yǔ)句|分析程序流程如圖2-4、2-5、2-6、2-7所示。調(diào)用express
3、ion函數(shù)調(diào) mj scaner調(diào)用term閑數(shù)山錯(cuò)處理圖2-4 statement語(yǔ)句分析困奴不思囡、出錯(cuò)處理圖2-5 expression表達(dá)式刀n幽似小思圖調(diào)用scaner圖2-6 term分析函數(shù)示意圖調(diào)川expression函數(shù)vj是v岀錯(cuò)處理調(diào)用scaner 調(diào)用scaner圖2-7 factor分析過程示意圖四、源程序清單#include"stdio. h"include "string, h”char prog100, tokcn8, ch;char *rwtab6 = z/bcgin,z, "if",then”,"w
4、hile”,do,end;int syn, p, m, n, sum;int kk;factor() ;/因子expression() ;/表達(dá)式 judgueo ;/判斷語(yǔ)句、下一條語(yǔ)句 tcrmo ;/項(xiàng)statement () ;/賦值語(yǔ)句 lrparser() ;/判斷、輸出函數(shù) scancr () ;/讀下一個(gè)字符 yucu();void main()p=0;printf ("本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本本;printf ("請(qǐng)輸入源程序:n"); doscanf("%c", &ch);
5、progp+=ch;while (ch!= #);p=0;scancr (); lrparser ();printf ("語(yǔ)法分析結(jié)束! n");ilrparscr ()if (syn=l) /beginscancr0; yucuo ;if (syn=6) /endscancr ();if (syn=o && kk=o) printf (success n);elseif(kk!=l)printf ("error, lose end ! n"); kk=l;elseprintf (error, lose begin ! n) kk=l;r
6、eturn 0;yucu()statement (); while(syn=26) /; scancr (); statement ();return 0;statement ()if (syn=10)scancr (); if (syn=18)scancr (); expression();elseprintf cerror! ); kk=l;elseprintf cerror! ); kk=l;return 0;expression ()term();while(syn=13 | syn=14)scancr ();tcrm();return 0;tcrm()factor (); while
7、(syn=15syn=16)scancr (); factor ();return 0;factor ()if(syn=10 | syn=ll)scanero; /為標(biāo)識(shí)符或整常數(shù)時(shí),讀下一個(gè)單詞符號(hào) else if(syn=27)scancr ();expression();if (syn=28)scancr ();elseprintf( ) 錯(cuò)誤n") ; kk=l;elseprintf (表達(dá)式錯(cuò)誤11); kk=l;return 0;scancr () sum=0;for (m=0;m<8; m+) token m =null; /數(shù)組清空 m=0;ch=progp+;
8、while(ch=, )ch=progp+;if( (ch<= zj)&& (ch>= a )| |( (ch<= zj)&& (ch>= a) while(ch= z)&&(ch>= a)| | (ch= z)&&(ch>= a)tokenm+=ch;ch=progp+;p 一一;syn=10;token m+ = 0 ; for (n=0;n<6;n+)if (strcmp(token, rwtabn) =0) /判斷是否為關(guān)鍵字 syn=n+l;break;else if (ch&g
9、t;=0)&&(ch=9) while(ch>=0,)&&(ch=9) sum=sum氺 10+ch0 ;ch=progp+;p;syn=ll;else switch(ch) case :m=0;ch=progp+; if (ch=, / ) syn=21;else if (ch=,=,)syn=22;elsesyn=20;p;break;case :m=0; ch=progp+; if (ch=,=,) syn=24;else syn=23;p;break;ease :, :m=0; ch=progp+; if (ch=,=,) syn=18;else
10、syn=17;p;break;case ':syn=13; break;ease:syn二14; break;ease,*:syn=15;break;ease:syn=16;break;ease,(:syn二27;break;ease:syn=28;break;ease:syn=25;break;easet:syn=26;break;ease:syn=o;break;efau:t:syn=l;break;return 0;五、運(yùn)行結(jié)果及分析輸入 begin a:=9;x:=2*3;b:=a+x end # 輸出 successi,«35l、f t1、才 ft"支-t- wlmlmlmlmlmlmlmlmlmlmlmlmlml.prrrrrrrrrrrtrrrrrrrr i n < ! j i i j i ei i i 請(qǐng)輸入源程序:begin a:=9;x:=2*3;b:=a+x end 林 success法分析結(jié)束!press any key to conti
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝備線行業(yè)深度研究報(bào)告
- 農(nóng)村招上門女婿合同范例
- 入?yún)f(xié)會(huì)合同范本
- 科技創(chuàng)新中專利權(quán)申請(qǐng)的法律要點(diǎn)
- 2024-2030年中國(guó)生物制藥工業(yè)行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資潛力預(yù)測(cè)報(bào)告
- 供熱項(xiàng)目投資合同范本
- 供貨違約合同范本
- 農(nóng)村辦養(yǎng)殖場(chǎng)合同范本
- 電商物流配送中的智能調(diào)度與優(yōu)化算法
- 公司出讓合同范本
- 護(hù)理核心制度測(cè)試題+參考答案
- 《2023版CSCO卵巢癌診療指南》解讀課件
- XX小學(xué)學(xué)生心理健康檔案(一生一案)
- 螺旋體病梅毒課件
- (小學(xué)組)全國(guó)版圖知識(shí)競(jìng)賽考試題含答案
- 人教版一年級(jí)道德與法治下冊(cè)全冊(cè)教案
- 類風(fēng)濕關(guān)節(jié)炎前狀態(tài)診療專家共識(shí)(2024)解讀
- 2024-2030年中國(guó)化妝鏡行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- Project項(xiàng)目管理(從菜鳥到實(shí)戰(zhàn)高手)
- 食品加工機(jī)械與設(shè)備操作技能測(cè)試考核試卷
- SNT 1961.11-2013 出口食品過敏原成分檢測(cè) 第11部分:實(shí)時(shí)熒光PCR方法檢測(cè)麩質(zhì)成分
評(píng)論
0/150
提交評(píng)論