



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、遞歸下降語法分析設(shè)計(jì)原理與實(shí)現(xiàn)技術(shù)實(shí)驗(yàn)報(bào)告精選文檔變更說明日期版本變更位置變更說明作者2014/4/161.0初稿生成房皓2精選文檔一、 實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)的目的在于在教師的引導(dǎo)下以問題回朔與思維啟發(fā)的方式, 使學(xué)生在不斷的探究過程中掌握編譯程序設(shè)計(jì)和構(gòu)造的基本原理和實(shí)現(xiàn)技術(shù), 啟迪學(xué)生的抽象思維、激發(fā)學(xué)生的學(xué)習(xí)興趣、 培養(yǎng)學(xué)生的探究精神和專業(yè)素養(yǎng), 從而提高學(xué)生發(fā)現(xiàn)問題、分析問題和解決問題的能力。二、實(shí)驗(yàn)內(nèi)容: 實(shí)驗(yàn)項(xiàng)目 完成以下描述算術(shù)表達(dá)式的 LL(1) 文法的遞歸下降分析程序 GE: E TEE ATE| T FTT MFT| F (E)|iA +|-M *|/ 設(shè)計(jì)說明 終結(jié)符號(hào) i為
2、用戶定義的簡單變量 , 即標(biāo)識(shí)符的定義。 設(shè)計(jì)要求 (1)輸入串應(yīng)是詞法分析的輸出二元式序列,即某算術(shù)表達(dá)式“實(shí)驗(yàn)項(xiàng)目一”的輸出結(jié)果,輸出為輸入串是否為該文法定義的算術(shù)表達(dá)式的判斷結(jié)果;(2)遞歸下降分析程序應(yīng)能發(fā)現(xiàn)輸入串出錯(cuò);(3)設(shè)計(jì)兩個(gè)測試用例(盡可能完備,正確和出錯(cuò)),并給出測試結(jié)果。三、實(shí)驗(yàn)環(huán)境:操作系統(tǒng): Windows 7軟件:VC+6.0四、程序功能描述:提供了兩種輸入方式:鍵盤和文件,有文件輸入時(shí)需為二元式序列;能夠?qū)斎氲淖址龀稣_的遞歸下降分析判斷,并給出判斷結(jié)果;能發(fā)現(xiàn)輸入串中的錯(cuò)誤,包含非法字符,輸入不匹配等;能夠處理一些可預(yù)見性的錯(cuò)誤,如文件不存在,用戶輸入非法
3、等。五、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):全局:3精選文檔局部( main()中):六、程序結(jié)構(gòu)描述:設(shè)計(jì)方法:本程序采用從鍵盤輸入或文件讀取兩種輸入方式,其中文件的內(nèi)容需為二元式序列,然后按照遞歸下降分析的方法對輸入的字符串進(jìn)行分析判斷,并輸出判斷結(jié)果,程序通過對輸入串的檢查能夠發(fā)現(xiàn)輸入串中的錯(cuò)誤。程序規(guī)定的單詞符號(hào)及其種別碼見下表:單詞符號(hào)及其種別碼表單詞符號(hào)種別碼單詞符號(hào)種別碼(1*5)2/6+3i7-4#8主要函數(shù)說明:advance():將下一個(gè)字符送入current;error():輸出錯(cuò)誤,表示不是該文法的句子;4精選文檔error1();輸出錯(cuò)誤,輸入內(nèi)容不合法;init() :初始化函數(shù);jus
4、tify() :判斷文件讀取內(nèi)容是否合法,包括檢查非法字符和不匹配現(xiàn)象main():主函數(shù)函數(shù)調(diào)用關(guān)系說明:main()調(diào)用 justify() 、 init() 、E()、error1();justify() 調(diào)用 error1();A() 、 E()、 E1()、F() 、M() 、 F()、 T()、 T1() 根據(jù)輸入串可互相調(diào)用或遞歸調(diào)用,這些函數(shù)均可調(diào)用 error()函數(shù);A() 、 F()、 M() 調(diào)用 advance()函數(shù)。執(zhí)行框圖:1) 總體結(jié)構(gòu)圖:5精選文檔開始鍵盤鍵盤 /文件文件從鍵盤輸入從文件讀取token= 輸入串init()遞歸下降分析是否為文否ERROR法句
5、子是SUCCESS2)遞歸下降分析構(gòu)框圖:E():6精選文檔E1():T():7精選文檔T()1:8精選文檔M():A():9精選文檔F():七、 實(shí)驗(yàn)過程結(jié)果截圖:測試用例一: i+i*i/i#鍵盤:文件:10精選文檔測試用例二: i+i*i/#鍵盤:文件:八、 實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)心得:通過本次實(shí)驗(yàn)我鍛煉了自己的上機(jī)操作能力及編程能力, 并對理論知識(shí)有了進(jìn)一步的了解。 老師提供的相對應(yīng)于非終結(jié)符號(hào)的函數(shù)的流程圖給了我很大的幫助,使得本實(shí)驗(yàn)基本思路變得很清晰,用較為簡單的算法就能實(shí)現(xiàn);解決實(shí)驗(yàn)中遇到的問題也花費(fèi)了一部分時(shí)間, 我增長了處理關(guān)于文件錯(cuò)誤的能力;實(shí)驗(yàn)中遇到的問題:問題主要有在調(diào)用某個(gè)函
6、數(shù)時(shí)沒有在之前聲明或定義過此函數(shù);還有在當(dāng)用11精選文檔戶輸入的選擇方式非法時(shí),提示錯(cuò)誤并要求重新輸入,這用一個(gè)while 循環(huán)實(shí)現(xiàn)。程序的自我評價(jià):此程序?qū)崿F(xiàn)了要求中的所有功能,并增加了對用戶操作錯(cuò)誤、輸入串錯(cuò)誤檢測的功能,但因編程能力的欠缺,其中有的地方不免有些繁雜,還有一些潛藏的問題,需要進(jìn)一步測試來時(shí)程序變得更加具有健壯性。九、 程序清單:/*課題名稱:遞歸下降語法分析設(shè)計(jì)原理與實(shí)現(xiàn)技術(shù)作者:房皓進(jìn)修生13410801最后修改時(shí)間:*/*單詞符號(hào)及其分類編碼單詞符號(hào)種別碼(1)2+3-4*5/6i7#8/文法GE:E TEE ATE |T FTT MFT |F (E)|i A +|-M
7、 *|/ /*/ #include<iostream>#include<conio.h> using namespace std; #define MAX 50 char tokenMAX;char token2MAX;char current;int i=0;12精選文檔/*函數(shù)聲明*/void E();void E1();void T();void A();void F();void T1();void M();void error();void error1();void init()/ 初始化current=tokeni;void justify(char ch
8、,int i)/判斷文件讀取內(nèi)容是否合法,包括檢查非法字符和不匹配現(xiàn)象switch(ch)case '1':if(tokeni!='(')error1();break;case '2':if(tokeni!=')')error1();break;case '3':if(tokeni!='+')error1();break;case '4':if(tokeni!='-')error1();break;case '5':if(tokeni!='*&
9、#39;)error1();break;case '6':13精選文檔if(tokeni!='/')error1();break;case '7':if(tokeni!='i')error1();break;case '8':if(tokeni!='#')error1();break;default:error1();break;void advance()/讀取下一個(gè)字符if(i=MAX)exit(0);current=token+i;void E()if(current='i'
10、| current='(')T();E1();elseerror();void E1()if(current='+' | current='-')A();T();E1();14精選文檔elseif(!(current=')' | current='#')error();void T()if(current='i' | current='(')F();T1();elseerror();void T1()if(current='*' | current='/
11、9;)M();F();T1();elseif(!(current=')'|current='#'|current='+'|current='-')error();void M()if(current='*')advance();elseif(current='/')advance();elseerror();void A()if(current='+')advance();15精選文檔elseif(current='-')advance();elseerror();v
12、oid F()if(current='(')advance();E();if(current=')')advance();elseif(current='i')advance();elseerror();void error()cout<<"ERROR!"<<endl;exit(0);void error1()cout<<" 輸入錯(cuò)誤! "<<endl;exit(0);int main()int flag;/提供輸入和文件兩種方式int j=1;int i=0
13、;char token1MAX;/用于檢測文件輸入是否匹配FILE *fp;cout<<" 輸入方式:鍵盤(1)/文件 (2):"while(!(cin>>flag) | (flag!=1 && flag!=2)16精選文檔cout<<"nError!Re-enter:"cin.clear();cin.ignore(200,'n');if(flag=1)cout<<" 請輸入長度不超過 50 且以 #結(jié)束的字符串: "<<endl; cin>>token;elseif(fp=fopen("input.txt","r")=NULL)cout<<" 文件打開失敗!"<<endl;exit(0);token10=fgetc(fp);while(!feof(fp)token1j+=fgetc(fp);if(j%5)=0)token2i=token1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文具企業(yè)競爭力分析與提升策略考核試卷
- 搬家行業(yè)節(jié)能減排與綠色物流考核試卷
- 期貨市場交易風(fēng)險(xiǎn)監(jiān)測與預(yù)警考核試卷
- 小學(xué)生抗旱主題班會(huì)課件
- 客廳家具批發(fā)考核試卷
- 工業(yè)氣體批發(fā)考核試卷
- 2023視頻監(jiān)控及火災(zāi)報(bào)警系統(tǒng)施工作業(yè)指導(dǎo)書
- 上海建房合同范本
- 空調(diào)技術(shù)入股合同范本
- 汽修門頭合作合同范本
- 2025年山東青島自貿(mào)發(fā)展有限公司招聘筆試參考題庫含答案解析
- 液化氣罐的使用和安全防范
- 2025年中考物理總復(fù)習(xí)《內(nèi)能》專項(xiàng)測試卷含有答案
- 會(huì)計(jì)法律法規(guī)答題答案
- 2024年無錫工藝職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 劇本殺范本完整版
- 北師大版一年級(jí)語文下冊第一單元元宵節(jié)《1元宵節(jié)》
- 2024年全球協(xié)作機(jī)器人產(chǎn)業(yè)發(fā)展白皮書
- 消防設(shè)施維保過程風(fēng)險(xiǎn)及保障措施
- 智能交通系統(tǒng)概論 課件全套 朱文興 第1-10章 緒論 - 城市交通子區(qū)控制系統(tǒng)
- 一鍵自動(dòng)生成spccpkmsappk數(shù)據(jù)工具
評論
0/150
提交評論