編譯原理實(shí)驗(yàn)報(bào)告-詞法分析_第1頁
編譯原理實(shí)驗(yàn)報(bào)告-詞法分析_第2頁
編譯原理實(shí)驗(yàn)報(bào)告-詞法分析_第3頁
編譯原理實(shí)驗(yàn)報(bào)告-詞法分析_第4頁
編譯原理實(shí)驗(yàn)報(bào)告-詞法分析_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

編譯原理課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)1:詞法分析姓名趙璐媛院系軟件學(xué)院學(xué)號(hào)1143710516任課教師陳鄞指導(dǎo)教師陳鄞實(shí)驗(yàn)地點(diǎn)軟件學(xué)院三樓機(jī)房實(shí)驗(yàn)時(shí)間10月23日下午78節(jié)實(shí)驗(yàn)課表現(xiàn)出勤、表現(xiàn)得分實(shí)驗(yàn)報(bào)告得分實(shí)驗(yàn)總分操作結(jié)果得分一、需求分析得分要求:闡述詞法分析系統(tǒng)所要完成的功能通過文件導(dǎo)入測試用例,可以通過用戶界面顯示并編輯測試用例。通過文件導(dǎo)入DFA轉(zhuǎn)換表,并在用戶界面中打印轉(zhuǎn)換表。識(shí)別代碼中的單詞,打印對(duì)應(yīng)的token序列。識(shí)別的單詞包括以下幾類:標(biāo)識(shí)符(由大小寫字母、數(shù)字以及下劃線組成,但必須以字母或者下劃線開頭)關(guān)鍵字(①類型關(guān)鍵字:整型、浮點(diǎn)型、布爾型、記錄型;②分支結(jié)構(gòu)中的if和else;③循環(huán)結(jié)構(gòu)中的do和while;④過程聲明和調(diào)用中的關(guān)鍵字)運(yùn)算符(①算術(shù)運(yùn)算符;②關(guān)系運(yùn)算符;③邏輯運(yùn)算)界符(①用于賦值語句的界符,如“=”;②用于句子結(jié)尾的界符,如“;”;③用于數(shù)組表示的界符,如“[”和“]”;④用于浮點(diǎn)數(shù)表示的界符“.”)常數(shù)(十進(jìn)制無符號(hào)整數(shù)和浮點(diǎn)數(shù),包括科學(xué)計(jì)數(shù)法;八進(jìn)制和十六進(jìn)制整數(shù);字符串常數(shù)和字符常數(shù)等)注釋(/*……*/形式)二、文法設(shè)計(jì)得分要求:對(duì)如下內(nèi)容展開描述給出各類單詞的詞法規(guī)則描述(正則文法或正則表達(dá)式)各類單詞的轉(zhuǎn)換圖標(biāo)識(shí)符和關(guān)鍵字(_|letter)(_|letter|digit)*運(yùn)算符以運(yùn)算符“+”,“+=”,“++”的識(shí)別為例,其他運(yùn)算符與此類似所有可以被識(shí)別的關(guān)系運(yùn)算符有:“!=”,“==”,“>”,“>=”,“<”,“<=”所有可以被識(shí)別的算術(shù)運(yùn)算符有:“+”,“+=”,“++”,“-”,“-=”,“--”,“*”,“*=”,“%”,“%=”,“/”,“/=”所有可以被識(shí)別的邏輯運(yùn)算符有:“|”,“&”,“^”(按位或、與、異或),“||”,“&&”,“!”界符界符的文法與轉(zhuǎn)換圖較為簡單,不再詳述所有可以被識(shí)別的界符:“=”,“;”,“[”,“]”,“(”,“)”,“{”,“}”,“,”,“;”常數(shù)浮點(diǎn)數(shù)((1-9)(0-9)*.(0-9)*)|(.(0-9)+)十進(jìn)制數(shù)0|((((1-9)(0-9)*.(0-9)*)|(.(0-9)+))(ε|(e(+|-|ε)(0-9)+)))下劃線部分為十進(jìn)制浮點(diǎn)數(shù)八進(jìn)制數(shù)0(1-7)+十六進(jìn)制數(shù)0x(1-9|a-f)+浮點(diǎn)數(shù)為終態(tài)2,十進(jìn)制數(shù)為終態(tài)1、5、6,八進(jìn)制數(shù)為終態(tài)7,十六進(jìn)制數(shù)為終態(tài)9。字符串常數(shù)“(ε|(letter*letter))”紅色letter代表除了\字符外的字符,因\”是轉(zhuǎn)義字符字符常數(shù)‘(\\(a|b|f|r|t|v|n|\\|’|”))|letter)’同時(shí)對(duì)轉(zhuǎn)義字符進(jìn)行識(shí)別注釋/\*letter*\*/三、系統(tǒng)設(shè)計(jì)得分要求:分為系統(tǒng)概要設(shè)計(jì)和系統(tǒng)詳細(xì)設(shè)計(jì)。(1)系統(tǒng)概要設(shè)計(jì):給出必要的系統(tǒng)宏觀層面設(shè)計(jì)圖,如系統(tǒng)框架圖、數(shù)據(jù)流圖、功能模塊圖等以及相應(yīng)的文字說明。(2)系統(tǒng)詳細(xì)設(shè)計(jì):對(duì)如下工作進(jìn)行展開描述核心數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)主要功能函數(shù)說明程序核心部分的程序流程圖系統(tǒng)概要設(shè)計(jì)系統(tǒng)的設(shè)計(jì)類圖如下:(建議放大查看)在選擇了DFA文件和代碼文件后,點(diǎn)擊分析按鈕,由DFAView生成DFA實(shí)例,調(diào)用DFA實(shí)例的doDFA方法對(duì)CodeView中的代碼進(jìn)行分析,分析結(jié)果傳遞給OutputView顯示。系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)的核心類為DFA類,DFA類中的table是DFA轉(zhuǎn)換表,map是字符集及每個(gè)字符在轉(zhuǎn)換表對(duì)應(yīng)列的下標(biāo)。doDFA方法對(duì)代碼進(jìn)行分析,每分析出一個(gè)單詞,則將該單詞在代碼中的起始下標(biāo)、終止下標(biāo)、對(duì)應(yīng)終態(tài)碼傳遞給getTokenDiscrible方法,獲取該單詞Token的字符串描述。Token類中記錄了總的狀態(tài)數(shù)和所有關(guān)鍵字,getToken方法判斷某一個(gè)狀態(tài)值是否是終態(tài),若是終態(tài)返回對(duì)應(yīng)的種別碼,若不是則返回null。doDFA方法的分析流程圖如下:(建議放大查看)四、系統(tǒng)實(shí)現(xiàn)及結(jié)果分析得分要求:對(duì)如下內(nèi)容展開描述。系統(tǒng)實(shí)現(xiàn)過程中遇到的問題;針對(duì)某測試程序輸出其詞法分析結(jié)果;輸出針對(duì)此測試程序?qū)?yīng)的詞法錯(cuò)誤報(bào)告;對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。注:其中的測試樣例自行產(chǎn)生。系統(tǒng)實(shí)現(xiàn)過程中遇到的問題剛開始時(shí),遇到了字符串和注釋中如果有空格,會(huì)將字符串和注釋分成多個(gè)單詞的問題。然后進(jìn)行改進(jìn),遇到空格等空白字符,判斷一下狀態(tài)碼,如果是在識(shí)別字符串或注釋的過程中,則不對(duì)其做處理,解決了這個(gè)問題。測試程序及測試結(jié)果測試程序:#include<stdio.h>intmain(){ /*number*/ intnum=10; intx=1,a=0,b=123,c=0123,d=0x123abc; floaty=2.2; doublee=1.2e-3; char_char1='c',_char2='\n',str[6]="hello"; x+=1; x-=1; x*=1; x/=1; printf("%f\n",x+y); printf("%f\n",x/y); if(x<=y&&x>0){ printf("%s\n","x<=y\n"); } else{ printf("%s\n","x>y\n"); } while(num!=100){num++;} /*errorcase*/ char_char3='ab',charstr~[10]=“ab\””; return0;}測試結(jié)果:錯(cuò)誤報(bào)告及結(jié)果分析char_char3='ab',charstr~[10]="ab\"";對(duì)于錯(cuò)誤的詞法’ab’,分析器報(bào)錯(cuò):ERROR

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論