遞歸下降語(yǔ)法分析器實(shí)驗(yàn)報(bào)告_第1頁(yè)
遞歸下降語(yǔ)法分析器實(shí)驗(yàn)報(bào)告_第2頁(yè)
遞歸下降語(yǔ)法分析器實(shí)驗(yàn)報(bào)告_第3頁(yè)
遞歸下降語(yǔ)法分析器實(shí)驗(yàn)報(bào)告_第4頁(yè)
遞歸下降語(yǔ)法分析器實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、裝訂線 編譯原理實(shí)驗(yàn)報(bào)告 題目: 遞歸下降語(yǔ)法分析器 學(xué) 院 計(jì)算機(jī)科學(xué)與技術(shù) 專 業(yè) xxxxxxxxxxxxxxxx 學(xué) 號(hào) xxxxxxxxxxxx 姓 名 寧劍 指導(dǎo)教師 xx 20xx年xx月xx日遞歸下降語(yǔ)法分析器一、實(shí)驗(yàn)?zāi)康?了解語(yǔ)法分析器的內(nèi)部工作原理,通過(guò)在本次實(shí)驗(yàn)中運(yùn)用一定的編程技巧,掌握對(duì)表達(dá)式進(jìn)行處理的一種方法。二、實(shí)驗(yàn)原理 算術(shù)表達(dá)式的文法可以是(可以根據(jù)需要適當(dāng)改變):EE+E|E-E|E*E|E/E|(E)|i 根據(jù)遞歸下降分析法或預(yù)測(cè)分析法 ,對(duì)表達(dá)式進(jìn)行語(yǔ)法分析 ,判斷一個(gè)表達(dá)式是否正確 。三、實(shí)驗(yàn)步驟(1) 準(zhǔn)備:1. 閱讀課本有關(guān)章節(jié),確定算術(shù)表達(dá)式的文法

2、;(設(shè)計(jì)出預(yù)測(cè)分析表);2. 考慮好設(shè)計(jì)方案;3. 設(shè)計(jì)出模塊結(jié)構(gòu) 、測(cè)試數(shù)據(jù),初步編制好程序。(2) 上機(jī)調(diào)試,發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,再修改完善。教師根據(jù)學(xué)生的設(shè)計(jì)方案與學(xué)生進(jìn)行探討,以修改方案和代碼 。(3)改造后的文法:EE+T|E-T|TTT*F|T/F|FFF|PPc |id| (E)四、實(shí)驗(yàn)環(huán)境計(jì)算機(jī) VC+軟件五、實(shí)驗(yàn)程序#include#include #include#include#includevoid error();void terror();void Scanner();char sym= ;int i=0;char strToken30=;FILE *in;void

3、 E();void E1();void F();void Retract(char str30)for(int j=0;j30;j+)strj=0;void Scanner()sym=fgetc(in);if (isspace(sym)while(1)if(isspace(sym)sym=fgetc(in); else break;if(isdigit(sym)while(1)if (isdigit(sym)strTokeni=sym;i+;sym=fgetc(in);elseprintf(%s,strToken);i=0;Retract(strToken);fseek(in,-2,1);sy

4、m=fgetc(in);break;elseif(sym=+)printf(+);else if(sym=-)printf(-);else if(sym=*)printf(*);else if(sym=/)printf(/);else if(sym=)printf();else if(sym=()printf();else if(sym=)printf();void F()if(isdigit(sym)Scanner();else if (sym=()Scanner();E();if(sym=)Scanner();else error(); else terror();void T1()if(

5、sym=*|sym=/|sym=)Scanner();F();T1();void T()F();T1();void E1()if (sym=+|sym=-)Scanner();T();E1();void E()T();E1();void error()printf(nThis is a wrong phrase!n);exit(0);void terror()printf(nthis is a wrong parase2!n);exit(0);int main()if(in=fopen(input.txt,r)=NULL)printf(File cant open.);exit(0);Scan

6、ner();E();if (sym!=#)printf(nSuccess.);elseprintf(nFail.);fclose(in);return 0;六、實(shí)驗(yàn)結(jié)果及分析程序輸入/輸出示例 : 如參考 C 語(yǔ)言的運(yùn)算符。輸入如下表達(dá)式 (以分號(hào)為結(jié)束)和輸出結(jié)果 :(a) 10;輸出:正確 此時(shí)程序運(yùn)行結(jié)果如下圖:(b) 1+2;輸出:正確 此時(shí)程序運(yùn)行結(jié)果如下圖:(c) (1+2) / 3+4- (5+6/7);輸出:正確 此時(shí)程序運(yùn)行結(jié)果如下圖:(d) ( (1-2) /3+4;輸出:錯(cuò)誤 此時(shí)程序運(yùn)行結(jié)果如下圖:(e) 1+2-3+(*;輸出:錯(cuò)誤此時(shí)程序運(yùn)行結(jié)果如下圖:(f) (1+2) / 3+4- (5+6/7) -23;輸出:正確此時(shí)程序運(yùn)行結(jié)果如下圖:(g) (1+2) / 3+4- (5+6/7) -;輸出:錯(cuò)誤此時(shí)程序運(yùn)行結(jié)果如下圖:總結(jié):通過(guò)該實(shí)驗(yàn)的操作 ,我了解了語(yǔ)法分析器的內(nèi)部工作原理,通過(guò)在本次實(shí)驗(yàn)中運(yùn)用一定的編程技巧

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論