

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券質(zhì)押典當(dāng)業(yè)務(wù)合同書
- 工業(yè)廠房租賃安全合同范本
- 銷售合同專業(yè)模板
- 機(jī)電安裝工程合同標(biāo)準(zhǔn)格式
- 房地產(chǎn)開發(fā)合同糾紛案例分析
- 兼職臨時(shí)工雇傭合同
- 農(nóng)村合作社租賃合同糾紛解決策略
- 煤炭購銷長期合同范本參考
- 年度合作協(xié)議范文:標(biāo)識標(biāo)牌制作合同
- 綠化養(yǎng)護(hù)合同模板
- 六年級上冊心理健康教育課件-健康上網(wǎng)快樂多 北師大版
- 情報(bào)信息收集報(bào)知
- 簡約國潮行業(yè)通用中國風(fēng)鎏金PPT模板
- 靜電防護(hù)(ESD)培訓(xùn)教材課件
- 湘少版四年級下冊英語教案
- 橋梁高墩施工技術(shù)培訓(xùn)PPT(翻模、滑模、爬膜等)
- 中外戲劇史第五章文藝復(fù)興到19世紀(jì)的歐洲戲劇課件
- 維修電工日巡檢、修維記錄表
- 大學(xué)生的人格發(fā)展課件
- 長春中醫(yī)大《中藥化學(xué)》教案
評論
0/150
提交評論