版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
詞法分析程序的設(shè)計(jì)第一頁(yè),共十五頁(yè),編輯于2023年,星期五回顧:詞法分析的主要任務(wù)是:從左到右逐個(gè)字符地掃描源程序,產(chǎn)生一個(gè)個(gè)單詞(Token),同時(shí)檢查源程序中的詞法錯(cuò)誤。執(zhí)行詞法分析的程序稱為詞法分析程序或掃描程序(Scanner)。單詞是語(yǔ)言中具有獨(dú)立意義的最小單位,包括保留字、標(biāo)識(shí)符、運(yùn)算符、標(biāo)點(diǎn)符號(hào)和常量等。第二頁(yè),共十五頁(yè),編輯于2023年,星期五1.確定詞法分析器的接口 確定詞法分析器是作為語(yǔ)法分析的一個(gè)子程序還是作為獨(dú)立一遍詞法分析作為獨(dú)立一遍 將字符流的源程序變成單詞序列,輸出到一個(gè)中間文件上,做為語(yǔ)法分析的輸入。詞法分析作為語(yǔ)法分析的子程序 每當(dāng)語(yǔ)法分析程序需要一個(gè)單詞時(shí),則調(diào)用該子程序,從源程序中分析和返回一個(gè)單詞第三頁(yè),共十五頁(yè),編輯于2023年,星期五獨(dú)立詞法分析器語(yǔ)法分析Token序列源程序附屬詞法分析器語(yǔ)法分析調(diào)用Token源程序第四頁(yè),共十五頁(yè),編輯于2023年,星期五2.確定單詞分類和Token結(jié)構(gòu) 設(shè)計(jì)詞法分析器的首要任務(wù)是,對(duì)于源語(yǔ)言的單詞進(jìn)行仔細(xì)的分析,并列出所有可能的不同單詞,然后再確定單詞的內(nèi)部表示
程序設(shè)計(jì)語(yǔ)言中的大部分單詞,一般可分為以下幾類:1.基本字(關(guān)鍵字):如begin,end,if等2.標(biāo)識(shí)符:用來(lái)表示常量、變量、過(guò)程等名字3.常數(shù):各種類型的常數(shù),如15,3.14,TRUE4.運(yùn)算符:如+,—,*,/5.界符:如逗號(hào),分號(hào),括號(hào)等第五頁(yè),共十五頁(yè),編輯于2023年,星期五單詞的機(jī)內(nèi)表示二元式(單詞種別,單詞自身的值) 種別是語(yǔ)法分析需要的信息 自身值是編譯其他階段需要的信息種別編碼(常用整數(shù)編碼)
方法一:按單詞的5大種類每種一個(gè)碼,例如標(biāo)識(shí)符為l,常數(shù)為2,基本字為3,運(yùn)算符為4,界符為5。方法二:每個(gè)基本字一個(gè)編碼;所有標(biāo)識(shí)符為一個(gè)編碼;常數(shù)按類型分類,每類一個(gè)編碼;每個(gè)運(yùn)算符一個(gè)編碼;每個(gè)界符一個(gè)編碼。第六頁(yè),共十五頁(yè),編輯于2023年,星期五單詞自身值對(duì)常數(shù),基本字,運(yùn)算符,界符就是他們本身的值對(duì)標(biāo)識(shí)符,將標(biāo)識(shí)符的名字登記在符號(hào)表中,“自身值”是指向該標(biāo)識(shí)符所在符號(hào)表中位置的指針.第七頁(yè),共十五頁(yè),編輯于2023年,星期五例如源程序ifi=5thenx:=y;
種別編碼:標(biāo)識(shí)符為l,常數(shù)為2,基本字為3,運(yùn)算符為4,界符為5詞法分析后輸出的單詞序列是:(3,‘if’) (1,指向i的符號(hào)表入口)(4,‘=’)(2,‘5’)(3,‘then’)(1,指向x的符號(hào)表入口)(4,‘:=’)(1,指向y的符號(hào)表入口) (5,‘;’)第八頁(yè),共十五頁(yè),編輯于2023年,星期五3.特殊問(wèn)題的處理標(biāo)識(shí)符和保留字的區(qū)分 事先構(gòu)造保留字表,拼出的標(biāo)識(shí)符單詞先查保留字表,若有,則把它做為保留字處理空格符和制表符(Tab)以及換行符的處理無(wú)用的空格符和制表符要?jiǎng)h掉;字符串內(nèi)的空格不能刪;換行符不能刪,對(duì)于錯(cuò)誤處理起作用。復(fù)合型特殊符,如“:=”的處理 讀到“:”時(shí)不能判斷是否為冒號(hào),必須讀下一字符。第九頁(yè),共十五頁(yè),編輯于2023年,星期五括號(hào)類配對(duì):
“‘”和“’”、左注釋符和右注釋符的配對(duì)。也可以把begin…end,if…then,[],{},()等語(yǔ)法配對(duì)在詞法分析中進(jìn)行處理 處理方法:對(duì)每類括號(hào)設(shè)置一個(gè)計(jì)數(shù)器(初值=0)每當(dāng)遇到左括號(hào),則計(jì)數(shù)器加1每當(dāng)遇到右括號(hào)時(shí),計(jì)數(shù)器減1詞法分析結(jié)束時(shí),如果計(jì)數(shù)器0,則表明括號(hào)不匹配。第十頁(yè),共十五頁(yè),編輯于2023年,星期五 可通過(guò)狀態(tài)轉(zhuǎn)換圖來(lái)實(shí)現(xiàn)詞法分析程序的構(gòu)造,步驟:畫狀態(tài)轉(zhuǎn)換圖。由正規(guī)文法構(gòu)造狀態(tài)轉(zhuǎn)換圖由正規(guī)表達(dá)式構(gòu)造狀態(tài)轉(zhuǎn)換圖 將正規(guī)文法或正規(guī)表達(dá)式轉(zhuǎn)換成DFA(經(jīng)歷NFA的構(gòu)造,將NFA確定化,DFA最小化的過(guò)程),將DAF以狀態(tài)轉(zhuǎn)換圖的形式表現(xiàn)出來(lái)。4.用狀態(tài)轉(zhuǎn)換圖構(gòu)造詞法分析程序第十一頁(yè),共十五頁(yè),編輯于2023年,星期五按狀態(tài)轉(zhuǎn)換圖寫出詞法分析程序 對(duì)于狀態(tài)圖中的每一狀態(tài)構(gòu)造一段代碼具體構(gòu)造程序時(shí):第十二頁(yè),共十五頁(yè),編輯于2023年,星期五開始結(jié)點(diǎn) 開始結(jié)點(diǎn)是一個(gè)單詞識(shí)別的開始,單詞開始符是非空白字符,首先把非空白字符讀入ch,再按該字符的特征進(jìn)入不同種類單詞的識(shí)別
GetChar();/*從輸入串讀一個(gè)字符,放入 ch中*/
GetBC();/*檢查ch中字符是否空白,若是則調(diào)用GetChar,直至ch中為非空白字符*/If(ch=…)begin…endelseif(ch=…)begin…end
…
else錯(cuò)誤處理;第十三頁(yè),共十五頁(yè),編輯于2023年,星期五不含回路的分叉結(jié)點(diǎn),對(duì)應(yīng)switch語(yǔ)句或一組if…then…else語(yǔ)句ijk數(shù)字字母/l例:狀態(tài)結(jié)點(diǎn)i對(duì)應(yīng)的程序段
GetChar();
If(IsLetter()){狀態(tài)j的對(duì)應(yīng)程序段;}elseIf(IsDigit()){狀態(tài)k的對(duì)應(yīng)程序段;}elseIf(ch=‘/’){狀態(tài)l的對(duì)應(yīng)程序段;}else{錯(cuò)誤處理;}
其中:
IsLetter和IsDigit:布爾函數(shù),分別判別ch字符是否為字母或數(shù)字第十四頁(yè),共十五頁(yè),編輯于2023年,星期五終態(tài)結(jié)點(diǎn),一般對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度幕墻施工工程保修合同4篇
- 個(gè)人運(yùn)輸服務(wù)一年合同模板2024年
- 2025年木制裝飾條項(xiàng)目投資可行性研究分析報(bào)告
- 2025年塑料包裝編織品行業(yè)深度研究分析報(bào)告
- 2025年熱熔膠產(chǎn)品項(xiàng)目投資分析及可行性報(bào)告
- 2025年閱覽室設(shè)備行業(yè)深度研究分析報(bào)告
- 2025年食用菌產(chǎn)品冷鏈物流配送服務(wù)合同3篇
- 2025年度新型生物藥品全球獨(dú)家代理銷售合同模板4篇
- 2025年流量計(jì)項(xiàng)目調(diào)研報(bào)告
- 二零二五年度環(huán)保型生產(chǎn)線車間承包加工服務(wù)協(xié)議3篇
- 三角形與全等三角形復(fù)習(xí)教案 人教版
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”英語(yǔ) 試題(學(xué)生版+解析版)
- 《朝天子·詠喇叭-王磐》核心素養(yǎng)目標(biāo)教學(xué)設(shè)計(jì)、教材分析與教學(xué)反思-2023-2024學(xué)年初中語(yǔ)文統(tǒng)編版
- 成長(zhǎng)小說(shuō)智慧樹知到期末考試答案2024年
- 紅色革命故事《王二小的故事》
- 海洋工程用高性能建筑鋼材的研發(fā)
- 英語(yǔ)48個(gè)國(guó)際音標(biāo)課件(單詞帶聲、附有聲國(guó)際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫(kù)安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語(yǔ)考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
評(píng)論
0/150
提交評(píng)論