版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化藝術(shù)活動(dòng)專用服裝租賃合同范本3篇
- 2024期貨市場委托交易顧問服務(wù)合同范本3篇
- 2024校園景觀設(shè)計(jì)與物業(yè)管理服務(wù)合同
- 2024年餐飲企業(yè)食堂加盟經(jīng)營合同3篇
- 2025年度生態(tài)園區(qū)安全隱患樹木排查與緊急處理合同3篇
- 2024年裝修施工包工包料協(xié)議樣本版
- 2025年度冷鏈物流一體化解決方案采購合同范本3篇
- 第八章《浮力》單元測試(含解析)2024-2025學(xué)年魯科版物理八年級(jí)下學(xué)期
- 2024招投標(biāo)工程廉潔服務(wù)承諾協(xié)議3篇
- 2024版廣告宣傳服務(wù)銷售合同
- 慶鈴國五新車型概況課件
- 缺血性腦卒中靜脈溶栓護(hù)理
- GB/T 7025.1-2023電梯主參數(shù)及轎廂、井道、機(jī)房的型式與尺寸第1部分:Ⅰ、Ⅱ、Ⅲ、Ⅵ類電梯
- 設(shè)計(jì)開發(fā)(更改)評(píng)審記錄
- 2023年消費(fèi)者咨詢業(yè)務(wù)試題及答案
- 常用樂高零件清單36364
- 新譽(yù)杯(行車調(diào)度員)理論考試復(fù)習(xí)題庫(含答案)
- 恩華藥業(yè)管理診斷報(bào)告書
- 2.2區(qū)間的概念優(yōu)秀課件
- 安徽省蚌埠市2023屆高三上學(xué)期第一次教學(xué)質(zhì)量檢查試題+數(shù)學(xué)+含答案
- 2023-2024學(xué)年浙江省奉化市小學(xué)語文三年級(jí)上冊(cè)期末自測預(yù)測題
評(píng)論
0/150
提交評(píng)論