版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 編譯原理實驗報告實驗名稱:實驗二編寫遞歸下降語法分析器實驗類型:驗證型實驗指導(dǎo)教師:何 中 勝專業(yè)班級:13軟件四姓 名:丁越學(xué) 號:電子郵箱:實驗地點:秋白樓B720實驗成績: 日期:2016年 4 月 1 日一、實驗?zāi)康耐ㄟ^設(shè)計、編制、調(diào)試一個遞歸下降語法分析程序,實現(xiàn)對詞法分析程序所提供的單詞序列進(jìn)行語法檢查和結(jié)構(gòu)分析,掌握常用的語法分析方法。通過本實驗,應(yīng)達(dá)到以下目標(biāo):1、掌握從源程序文件中讀取有效字符的方法和產(chǎn)生源程序的內(nèi)部表示文件的方法。2、掌握詞法分析的實現(xiàn)方法。3、上機(jī)調(diào)試編出的語法分析程序。二、實驗過程1、分析對象 分析算術(shù)表達(dá)式的 BNF 定義如
2、下:算術(shù)表達(dá)式項|算術(shù)表達(dá)式項|算術(shù)表達(dá)式項項因式|項*因式|項因式因式變量(算術(shù)表達(dá)式)變量i用符號表示如下: ET|ET|E-T TF|T*F|TF Fi(E)遞歸下降分析程序?qū)崿F(xiàn)思想簡單易懂。程序結(jié)構(gòu)和語法產(chǎn)生式有直接的對應(yīng)關(guān)系。因 為每個過程表示一個非終結(jié)符號的處理,添加語義加工工作比較方便。遞歸下降分析程序的實現(xiàn)思想是:識別程序由一組子程序組成。每個子程序?qū)?yīng)于一 個非終結(jié)符號。每一個子程序的功能是:選擇正確的右部,掃描完相應(yīng)的字。在右部中有非終結(jié)符號 時,調(diào)用該非終結(jié)符號對應(yīng)的子程序來完成。自上向下分析過程中,如果帶回溯,則分析過程是窮舉所有可能的推導(dǎo),看是否能推 導(dǎo)出待檢查的符號
3、串。分析速度慢。而無回溯的自上向下分析技術(shù),當(dāng)選擇某非終結(jié)符的 產(chǎn)生時,可根據(jù)輸入串的當(dāng)前符號以及各產(chǎn)生式右部首符號而進(jìn)行,效率高,且不易出錯。無回溯的自上向下分析技術(shù)可用的先決條件是:無左遞歸和無回溯。 無左遞歸:既沒有直接左遞歸,也沒有間接左遞歸。無回溯:對于任一非終結(jié)符號 U 的產(chǎn)生式右部 x1|x2|xn,其對應(yīng)的字的首終結(jié)符號 兩兩不相交。2. 遞歸下降語法分析流程圖實驗分為五個模塊,分別是:E( )函數(shù),E1( )函數(shù),T( )函數(shù),T1( )函數(shù),F( )函數(shù)。用遞歸下降算法分析上述算術(shù)表達(dá)式的框圖,如下圖所示。ZC過程為總控程序。圖1-1 ZC過程圖1-2 E過程圖1-3 T過
4、程圖1-4 F過程圖1-5 函數(shù)過程SYM圖1-6 函數(shù)過程Advance3、 實驗結(jié)果1. 測試數(shù)據(jù)測試數(shù)據(jù)時輸入要測試的串并以#結(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é)果24、 討論與分析本次試驗分為5個大步驟:ZC過程:開始,然后打印“INPUT EXPRESSION”,輸入字符串ST,執(zhí)行E過程,然后判斷SYM是否不等于#或者TZ是否等于1,如果是,打印“ERROR AGAIN”,給TZ賦值為0,跳回到開始步驟繼續(xù);如果不是則打印“RIGHT AGAIN”,回到開始步驟
5、繼續(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í)行ADVANCE,在執(zhí)行E過程,接著繼續(xù)判斷SYM是否不等于“)”,如果是,打印"ERROR",TZ賦值1,如果不是,執(zhí)行ADVA
6、NCE,返回。SYM:取字符串ST的第一個字符給SYM。ADVANCE:取字符串ST去除首字符后留下的字符串。5、 附錄:關(guān)鍵代碼部分如下:(E()函數(shù)和E1()函數(shù)構(gòu)成E過程,T()函數(shù)和T1()函數(shù)構(gòu)成T過程,F(xiàn)()函數(shù)構(gòu)成F過程)/*E()函數(shù)*/void E()if(x=0)output1(i);printf("E->TE1");output(i+1);T();E1();/*E1()函數(shù)*/void E1()if(x=0)if(si='+')output1(i);printf("E1->+TE1");output(i+
7、1);advance();T();E1();else if(si='-')output1(i);printf("E1->-TE1");output(i+1);advance();T();E1();else if(si='#')output1(i-1);printf("E1->");output(i);elseoutput1(i);printf("E1->");output(i+1);/*T()函數(shù)*/void T() if(x=0)if(si!='#')output1(
8、i);printf("T->FT1");output(i+1);F();T1();elseoutput1(i-1);printf("T->FT1");output(i);F();T1();/*T1()函數(shù)*/void T1()if(x=0)if(si='*')output1(i);printf("T1->*FT1");output(i+1);advance();F();T1();else if(si='/')output1(i);printf("T1->/FT1&quo
9、t;);output(i+1);advance();T1();F();else if(si='#')output1(i-1);printf("T1->");output(i);elseoutput1(i);printf("T1->");output(i+1);/*F()函數(shù)*/void F()if(x=0)if(si='i')output1(i);printf("F->i");output(i+1);advance();else if(si='(')output1(i)
10、;printf("F->(E)");output(i+1);advance();E();if(x!=1)if(si=')')output1(i);printf("F->(E)");output(i+1);advance();elsex=1; else if(si='#')x=1; else if(si=')') x=1;六、實驗者自評通過本次實驗,我對遞歸下降詞法分析器的結(jié)構(gòu),過程有了更進(jìn)一步的了解,通過學(xué)習(xí)書本和試驗原理書上的內(nèi)容,對它的工作原理,具體實行步驟有了進(jìn)一步的掌握。這次實驗讓我了解到如何設(shè)計、編制并調(diào)試遞歸下降語法分析程序,加深對遞歸下降語法分析原理的理解;熟悉了構(gòu)造遞歸
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年具有獨(dú)立功能電氣設(shè)備及裝置項目申請報告范稿
- 爆破擠淤施工方案
- 澳斯麥特爐課程設(shè)計
- 泵站支護(hù)專項方案
- 泵蓋零件課程設(shè)計
- 棕、藤、草制品相關(guān)行業(yè)投資規(guī)劃報告范本
- 泵房專項施工方案
- 泵與水泵的課程設(shè)計
- 氨氣吸收塔設(shè)計課程設(shè)計
- 特種變壓器相關(guān)行業(yè)投資規(guī)劃報告
- 《觀察一棵植物》教案-2024-2025學(xué)年科學(xué)一年級上冊 教科版
- 消費(fèi)者畫像構(gòu)建與細(xì)分
- 2024北京市租房合同自行成交版下載
- 慶祝第75個國慶節(jié)共筑中國夢大國華誕繁盛共享課件
- 2024年江西省高考化學(xué)試卷(真題+答案)
- 人教版小學(xué)語文一年級單元測試題-全冊
- 2024-2030年中國拍賣行業(yè)市場深度調(diào)研及競爭格局與投資研究報告
- 2024秋人教版一年級數(shù)學(xué)上冊《11-20的認(rèn)識》教學(xué)設(shè)計
- 油漆作業(yè)風(fēng)險和隱患辨識、評估分級與控制措施一覽表
- 空氣栓塞培訓(xùn)課件
- 數(shù)據(jù)治理與數(shù)據(jù)中臺建設(shè)方案
評論
0/150
提交評論