版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、電子科技大學(xué)實(shí)驗(yàn)報(bào)告學(xué)生名稱:父親學(xué)號(hào): 2222222222222指導(dǎo)教師:陳昆實(shí)驗(yàn)地點(diǎn):科研樓A-506實(shí)驗(yàn)時(shí)間: 2017-04-28一、實(shí)驗(yàn)項(xiàng)目名稱:字句分析器的設(shè)計(jì)與實(shí)現(xiàn)二、實(shí)驗(yàn)學(xué)時(shí): 4學(xué)時(shí)三、實(shí)驗(yàn)原理1 .編譯器要求分析和合成用高級(jí)語言寫的源程序,生成目標(biāo)程序。 字句解析是第一次解析源程序,實(shí)現(xiàn)字句解析的程序是字句解析程序或字句解析器,也稱為掃描儀。2 .詞法分析的功能是從左到右逐個(gè)掃描源程序的字符串,根據(jù)詞法規(guī)則識(shí)別和輸出單詞符號(hào),并針對(duì)在識(shí)別過程中發(fā)現(xiàn)的詞法錯(cuò)誤輸出相關(guān)錯(cuò)誤信息。3 .識(shí)別的單詞采用某種中間表現(xiàn)形式,通常一個(gè)單詞用一個(gè)二項(xiàng)式表示:(單詞類別,單詞的屬性)。4
2、.狀態(tài)遷移圖簡稱遷移圖,是有限有向圖,是設(shè)計(jì)詞法分析器的有效工具。四、實(shí)驗(yàn)?zāi)康耐ㄟ^這個(gè)實(shí)驗(yàn),學(xué)生們自己設(shè)計(jì)字句分析器,使學(xué)生們能更好地掌握字句分析程序的設(shè)計(jì)原理和相應(yīng)的程序設(shè)計(jì)方法,在對(duì)編譯該課程也能更深入地理解的同時(shí),也能訓(xùn)練編程能力。5、實(shí)驗(yàn)內(nèi)容實(shí)現(xiàn)n! 的極小語言詞法分析程序,作為輸出返回二項(xiàng)式。六、實(shí)驗(yàn)器材(設(shè)備、零件)1 .操作系統(tǒng): windows XP2 .開發(fā)工具: VS2013七、實(shí)驗(yàn)程序(在VS2013中創(chuàng)建工程(2)制作輸入輸出、初始化、錯(cuò)誤處理等函數(shù)(3)制作對(duì)應(yīng)的單詞符號(hào)和種類對(duì)照表,根據(jù)狀態(tài)遷移圖制作對(duì)應(yīng)的處理函數(shù)(4)執(zhí)行代碼進(jìn)行調(diào)試(5)制作測(cè)試所需的輸入文件。
3、 pas文件(6)生成dyd文件。8 .實(shí)驗(yàn)數(shù)據(jù)和結(jié)果分析編碼完成后,將測(cè)試程序放置在debug文件夾中,如下圖所示如果代碼成功運(yùn)行,則生成與調(diào)試文件夾相對(duì)應(yīng)的exe,在cmd上運(yùn)行時(shí),調(diào)試文件夾生成后綴為dyd和err的文件,dyd如下圖所示打開由于沒有錯(cuò)誤,對(duì)應(yīng)的test1.err文件為空對(duì)源程序進(jìn)行詞法分析,如果錯(cuò)誤信息和行數(shù)錯(cuò)誤,可以生成二項(xiàng)式文件。九、實(shí)驗(yàn)結(jié)論詞法分析器的功能是,從左到右逐個(gè)掃描源程序的字符串,根據(jù)詞法規(guī)則識(shí)別和輸出單詞符號(hào),針對(duì)在識(shí)別過程中發(fā)現(xiàn)的詞法錯(cuò)誤,輸出相關(guān)的錯(cuò)誤信息。十、總結(jié)和體會(huì)通過這次實(shí)驗(yàn),詞法分析程序的設(shè)計(jì)在鍛煉自己的編程能力的同時(shí),加深了對(duì)詞法分析器
4、的理解、把握和編譯這一課的理解,提高了自己的本領(lǐng),在編碼過程中也遇到了很多問題。 例如,如何解決發(fā)生的文件的后端定位等,我的編碼能力在這次實(shí)驗(yàn)中取得了一定的提高。十一、本實(shí)驗(yàn)過程、方法和手段的改進(jìn)建議首先理解字句分析器的功能和輸入輸出形式,熟練地掌握狀態(tài)遷移圖。報(bào)告分?jǐn)?shù):指導(dǎo)教師簽名:實(shí)驗(yàn)的參考源代碼如下所示#include#include#include#define MAX_COUNT 2048#define ILLEGAL_CHAR_ERR 1#define UNKNOWN_OPERATOR_ERR 2char getnbc ()舉止char ch;ch=getchar ();while
5、 (1)舉止if (ch=r | ch=t | ch=)舉止ch=getchar ();以下else舉止break;以下以下返回信道;以下布爾萊特(char character )舉止if (字符=ar acter=z )| (字符=ar acter=z ) )返回真;else返回假;以下布爾數(shù)字(char character )舉止if (字符=0字符=9)返回真;else返回假;以下void retract(char character )舉止ungetc (字符,stdin )角色=空值;以下int reserve(char* token )舉止if (strcmp (令牌, begin
6、)=0)返回1;else if (strcmp (令牌,結(jié)束 )=0)返回2;else if (strcmp (令牌, integer)=0)返回3;else if (strcmp (令牌, if)=0)返回4;else if (strcmp ( then )=0)返回5;else if (strcmp (令牌, else)=0)返回6;else if (strcmp (令牌, function)=0)返回7;else if (strcmp (令牌, read)=0)返回8;else if (strcmp (令牌, write)=0)返回9;else返回0;以下int symbol ()舉止返
7、回10;以下int constant ()舉止返回11;以下void輸出(const char * token,int kindNum )舉止打印( s- n ,令牌,kindNum );以下bool error(int lineNum,int errNum )舉止char* errInfo;交換機(jī)(錯(cuò)誤)舉止case ILLEGAL_CHAR_ERR:errInfo=非字母字符;break;case UNKNOWN_OPERATOR_ERR:errInfo=未知運(yùn)算符;break;默認(rèn):errInfo=未知錯(cuò)誤;以下PS (PS, *line:%d%sn ,lineNum,errInfo)=
8、0)返回真;else返回假;以下bool LexAnalyze ()舉止靜態(tài)線性=1;char character;char token17=;character=getnbc ();交換機(jī)(字符)。舉止case n:輸出( eoln ,24 );線性數(shù);break;case EOF:輸出( eof ,25 );返回假;case a:case b:case c:case d:case e:case f:case g:case h:case i:case j:case k:case l:case m:case n:case o:case p:case q:case r:case s:case t
9、:case u:case v:case w:case x:case y:case z:case A:case B:case C:case D:case E:case F:case G:case H:case I:case J:case K:case L:case M:case N:case O:case P:case Q:case R:case S:case T:case U:case V:case W:case X:case Y:case Z:while (letter (character )| digit (character ) )舉止char s2= character ;strca
10、t (令牌,s )character=getchar ();以下retract (字符)int num;num=reserve(token )PS (PS!=0)輸出(令牌,數(shù)字)else舉止PPS;val=symbol ();輸出(令牌,val )以下break;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:while (數(shù)字(字符) )舉止char s2= character ;strcat (令牌,s )character=getchar ();以下retract (字符)PPS;val=con
11、stant ();輸出(令牌,val )break;case=:輸出(=,12 );break;case :character=getchar ();if (字符=)輸出( ,13 );else if (字符=)輸出(=, 14 );else舉止retract (字符)output ( , 15 )以下break;case :character=getchar ();if (字符=)輸出(=, 16 );else舉止retract (字符)輸出( ,17 );以下break;case -:輸出(-,18 );break;case *:輸出( * ,19 );break;case :charac
12、ter=getchar ();if (字符=)輸出( 3360= 20 );elseerror(lineNum,2) /輸出“未知運(yùn)算符”錯(cuò)誤break;case (: )輸出( (,21 );break;case ):output ( )、22;break;case :output (; ),23 )break;default:error(lineNum,1 )以下返回真;以下void getPath(char* in,char* out )舉止char* namename=strrchr(in, );PS (名字!=NULL )strncpy (輸出,輸入,輸入)-strlen (名稱) 1;elsestrcpy (輸出, );以下void getFilename(char* in,char* out )舉止char* fullName;char *擴(kuò)展;全名=strrchr (in, );擴(kuò)展=strrchr (in,);PS (全名!=NULL )strncpy(out,fullName 1,strlen (full name )-1-strlen (extension ) );elsestrncpy (輸出,輸入,輸入)-strlen (擴(kuò)展);以下bool ini
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 飛機(jī)結(jié)合測(cè)量工崗前創(chuàng)新應(yīng)用考核試卷含答案
- 2026年楊凌職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題帶答案解析
- 榆林市2024陜西榆林靖邊縣招聘駐礦安監(jiān)員(9人)筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)試卷2套
- 開平市2024廣東江門市開平市人力資源和社會(huì)保障局所屬事業(yè)單位招聘2人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)試卷2套
- 宜賓市2024四川宜賓市屏山縣審計(jì)局第一次招聘編外聘用人員1人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)試卷2套
- 南京市2024江蘇省保安協(xié)會(huì)招聘人員1人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)試卷2套
- 2026中國電子科技集團(tuán)公司校園招聘(北京)筆試歷年典型考點(diǎn)題庫附帶答案詳解
- 2025湖南衡陽市市屬國有企業(yè)急需緊缺專業(yè)技術(shù)人才現(xiàn)場確認(rèn)與考試考核筆試歷年??键c(diǎn)試題專練附帶答案詳解
- 2025江西吉湖礦業(yè)發(fā)展有限公司面向社會(huì)招聘1名采礦專業(yè)技術(shù)員筆試歷年??键c(diǎn)試題專練附帶答案詳解
- 2025年四川攀枝花三維紅坭礦業(yè)有限責(zé)任公司招聘工作人員擬聘人員筆試歷年常考點(diǎn)試題專練附帶答案詳解
- 關(guān)于安吉物流市場的調(diào)查報(bào)告
- 抑郁病診斷證明書
- 歷史時(shí)空觀念的教學(xué)與評(píng)價(jià)
- 維克多高中英語3500詞匯
- 病理生理學(xué)復(fù)習(xí)重點(diǎn)縮印
- 第五屆全國輔導(dǎo)員職業(yè)能力大賽案例分析與談心談話試題(附答案)
- 《大數(shù)的認(rèn)識(shí)》復(fù)習(xí)教學(xué)設(shè)計(jì)
- GB/T 3513-2018硫化橡膠與單根鋼絲粘合力的測(cè)定抽出法
- GB/T 34590.3-2017道路車輛功能安全第3部分:概念階段
- 統(tǒng)編教材部編人教版小學(xué)語文習(xí)作單元教材解讀培訓(xùn)課件:統(tǒng)編小語四-六年級(jí)習(xí)作梳理解讀及教學(xué)建議
- 國家開放大學(xué)電大《公共部門人力資源管理》期末考試題庫及答案
評(píng)論
0/150
提交評(píng)論