編譯原理實(shí)驗(yàn)報(bào)告:實(shí)驗(yàn)二編寫遞歸下降語法分析程序_第1頁
編譯原理實(shí)驗(yàn)報(bào)告:實(shí)驗(yàn)二編寫遞歸下降語法分析程序_第2頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)名稱實(shí)驗(yàn)類型指導(dǎo)教師專業(yè)班級姓名學(xué)號電子郵箱實(shí)驗(yàn)地點(diǎn)實(shí)驗(yàn)成績編譯原理實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)二編寫遞歸下降語法分析器驗(yàn)證型實(shí)驗(yàn)何中勝13軟件四丁越13030504862245792秋白樓B720日期:2016年4月1日一、實(shí)驗(yàn)?zāi)康耐ㄟ^設(shè)計(jì)、編制、調(diào)試一個(gè)遞歸下降語法分析程序,實(shí)現(xiàn)對詞法分析程序所提供的單詞序列進(jìn)行語法檢查和結(jié)構(gòu)分析,掌握常用的語法分析方法。通過本實(shí)驗(yàn),應(yīng)達(dá)到以下目標(biāo):1、掌握從源程序文件中讀取有效字符的方法和產(chǎn)生源程序的內(nèi)部表示文件的方法。2、掌握詞法分析的實(shí)現(xiàn)方法。3、上機(jī)調(diào)試編出的語法分析程序。二、實(shí)驗(yàn)過程1、分析對象分析算術(shù)表達(dá)式的BNF定義如下:算術(shù)表達(dá)式一項(xiàng)|算術(shù)表達(dá)式+項(xiàng)|

2、算術(shù)表達(dá)式一項(xiàng)項(xiàng)一因式|項(xiàng)*因式|項(xiàng)/因式因式一變量丨(算術(shù)表達(dá)式)變量fi用符號表示如下:EfT|E+T|E-TTfF|T*F|T/FFT|(E)遞歸下降分析程序?qū)崿F(xiàn)思想簡單易懂。程序結(jié)構(gòu)和語法產(chǎn)生式有直接的對應(yīng)關(guān)系。因?yàn)槊總€(gè)過程表示一個(gè)非終結(jié)符號的處理,添加語義加工工作比較方便。遞歸下降分析程序的實(shí)現(xiàn)思想是:識別程序由一組子程序組成。每個(gè)子程序?qū)?yīng)于一個(gè)非終結(jié)符號。每一個(gè)子程序的功能是:選擇正確的右部,掃描完相應(yīng)的字。在右部中有非終結(jié)符號時(shí),調(diào)用該非終結(jié)符號對應(yīng)的子程序來完成。自上向下分析過程中,如果帶回溯,則分析過程是窮舉所有可能的推導(dǎo),看是否能推導(dǎo)出待檢查的符號串。分析速度慢。而無回溯

3、的自上向下分析技術(shù),當(dāng)選擇某非終結(jié)符的產(chǎn)生時(shí),可根據(jù)輸入串的當(dāng)前符號以及各產(chǎn)生式右部首符號而進(jìn)行,效率高,且不易出錯(cuò)。無回溯的自上向下分析技術(shù)可用的先決條件是:無左遞歸和無回溯。無左遞歸:既沒有直接左遞歸,也沒有間接左遞歸。無回溯:對于任一非終結(jié)符號U的產(chǎn)生式右部xl|x2»|xn,其對應(yīng)的字的首終結(jié)符號兩兩不相交。2.遞歸下降語法分析流程圖實(shí)驗(yàn)分為五個(gè)模塊,分別是:E()函數(shù),El()函數(shù),T()函數(shù),Tl()函數(shù),F()函數(shù)。用遞歸下降算法分析上述算術(shù)表達(dá)式的框圖,如下圖所示。ZC過程為總控程序。開E提E-INPUTSSIONH打印"RIGHTAGAIN5*TZ:-0犠

4、入字再川ifr是返回&回圖1-1ZC過程”L.-圖1-2E過程ADVANCE圖1-4F過程取ST的第一個(gè)字符-SYM廣圖1-5函數(shù)過程SYM十ykzrtIr、開始取ST首字符除去后的字符串STIJf*圖追6函數(shù)過程習(xí)dvance三、實(shí)驗(yàn)結(jié)果1. 測試數(shù)據(jù)測試數(shù)據(jù)時(shí)輸入要測試的串并以#結(jié)束數(shù)據(jù)共分為2組,分別如下:第一組數(shù)據(jù)i+i*i#第二組數(shù)據(jù)I*#2. 測試結(jié)果測試結(jié)果如下圖所示:第一組數(shù)據(jù)圖1-7測試結(jié)果1第二組數(shù)據(jù)圖1-8測試結(jié)果2四、討論與分析本次試驗(yàn)分為5個(gè)大步驟:ZC過程:開始,然后打印“INPUTEXPRESSION”,輸入字符串ST,執(zhí)行E過程,然后判斷SYM是否不等于

5、#或者TZ是否等于1,如果是,打印“ERRORAGAIN”,給TZ賦值為0,跳回到開始步驟繼續(xù);如果不是則打印“RIGHTAGAIN”,回到開始步驟繼續(xù)。E過程:開始,執(zhí)行T過程,判斷SYM是否等于“+”或“一”,如果不是,返回,如果是,執(zhí)行ADVANCE,跳回到開始步驟。T過程:開始,執(zhí)行F過程,判斷SYM是否等于“*”或者“/”,如果不是,返回,如果是,執(zhí)行ADVANCE,在跳回到開始過程。F過程:開始,判斷SYM是否不等于“A”或者SYM是否小于Z,如果不是,執(zhí)行ADVACE,然后執(zhí)行返回,如果不是,再判斷SYM是否不等于如果是,打印“ERROR”,TZ賦值1,返回;如果不是,執(zhí)行ADV

6、ANCE,在執(zhí)行E過程,接著繼續(xù)判斷SYM是否不等于“)”,如果是,打印ERROR,TZ賦值1,如果不是,執(zhí)行ADVANCE,返回。SYM:取字符串ST的第一個(gè)字符給SYM。ADVANCE:取字符串ST去除首字符后留下的字符串。五、附錄:關(guān)鍵代碼部分如下:(E()函數(shù)和El()函數(shù)構(gòu)成E過程,T()函數(shù)和Tl()函數(shù)構(gòu)成T過程,F(xiàn)()函數(shù)構(gòu)成F過程)/*E()函數(shù)*/voidE()if(x=0)output1(i);printf("E->TE1");output(i+1);T();E1();/*E1()函數(shù)*/voidE1()if(x=0)if(si='+&#

7、39;)output1(i);printf("E1->+TE1");output(i+1);advance();T();E1();elseif(si='-')output1(i);printf("E1->-TE1");output(i+1);advance();T();E1();elseif(si='#')output1(i-1);printf("El-£");output(i);elseoutput1(i);printf("El-£");output

8、(i+1);/*T()函數(shù)*/voidT()if(x=0)if(si!='#')output1(i);printf("T-FT1");output(i+1);F();T1();elseoutput1(i-1);printf("T->FT1");output(i);F();T1();/*T1()函數(shù)*/voidT1()if(x=0)if(si='*')output1(i);printf("T1->*FT1");output(i+1);advance();F();T1();elseif(si=&

9、#39;/')output1(i);printf("T1->/FT1");output(i+1);advance();T1();F();elseif(si='#')output1(i-1);printf("Tl-£");output(i);elseoutput1(i);printf("Tl-£");output(i+1);/*F()函數(shù)*/voidF()if(x=0)if(si='i')output1(i);printf("F-i");output(

10、i+1);advance();elseif(si='(')output1(i);printf("F-(E)");output(i+1);advance();E();if(x!=1)if(si=')')output1(i);printf("F->(E)");output(i+1);advance();elsex=1;elseif(si='#')x=1;elseif(si=')')x=1;六、實(shí)驗(yàn)者自評通過本次實(shí)驗(yàn),我對遞歸下降詞法分析器的結(jié)構(gòu),過程有了更進(jìn)一步的了解,通過學(xué)習(xí)書本和試驗(yàn)原理書上的內(nèi)容,對它的工作原理,具體實(shí)行步驟有了進(jìn)一步的掌握。這次實(shí)驗(yàn)讓我了解到如何設(shè)計(jì)、編制并調(diào)試遞歸下降語法分析程序,加深對遞歸下降語法分析原理的理

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論