編譯原理:第四章 詞法分析_第1頁
編譯原理:第四章 詞法分析_第2頁
編譯原理:第四章 詞法分析_第3頁
編譯原理:第四章 詞法分析_第4頁
編譯原理:第四章 詞法分析_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 4 章 詞法分析4.1 詞法分析的基本概念4.2 詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)4.3 算術(shù)常數(shù)處理機(jī)的設(shè)計(jì)【內(nèi)容提要】 詞法分析程序又稱掃描器,任務(wù)有二:(1) 識(shí)別單詞 從用戶的源程序中把單詞分離出來;(2) 翻譯單詞 把單詞轉(zhuǎn)換成機(jī)內(nèi)表示,便于后續(xù)處理。4.1.1 單詞的分類與識(shí)別 1. 單詞的分類 標(biāo)識(shí)符 用戶給一些變量起的名字; 常數(shù) 以自身形態(tài)面對(duì)用戶和系統(tǒng); 關(guān)鍵字系統(tǒng)內(nèi)部定義,具有固定的意義, 界符單字符界符 + - * / , ; : = 雙字符界符 := = = = /* */ 按單詞的語法功能可分為:如:算數(shù)常數(shù),邏輯常數(shù),字符串常數(shù), 通常用來區(qū)分語法單元; 2. 單詞的

2、識(shí)別問題:字母開頭關(guān)鍵字或標(biāo)識(shí)符;數(shù)字開頭數(shù)值型常量; 或 “ 開頭字符型常量或字符串常量;其它多數(shù)以自身形態(tài)識(shí)別之,如 + ,- , = , ;= , != ,= , 如何區(qū)別關(guān)鍵字和標(biāo)識(shí)符? 現(xiàn)在,大多數(shù)編譯程序使用“保留字”,即標(biāo)識(shí)符不能用作關(guān)鍵字。系統(tǒng)預(yù)先造好關(guān)鍵字表,拼好的字符串,先查“關(guān)鍵字”表,查到了,視為關(guān)鍵字,否則,視為標(biāo)識(shí)符。簡單識(shí)別方法 程序設(shè)計(jì)語言的單詞不但類別不同,而且長短不一,機(jī)內(nèi)表示可以使: 語法信息,即單詞的分類碼。語義信息,如:數(shù)組維數(shù), 上下界,類型等;TOKEN: 目前,大多數(shù)采用如下 二元式 形式: 長短統(tǒng)一; 語法、語義信息分開。 4.1.2 單詞的機(jī)

3、內(nèi)表示 類 值i 名字 c 123k whilep 數(shù)值型。 算術(shù)常數(shù)處理機(jī)的功能: 識(shí)別器(有限自動(dòng)機(jī)主機(jī)) 翻譯器(在自動(dòng)機(jī)的狀態(tài)節(jié)點(diǎn)處,插入 算術(shù)常數(shù)的基本形式:尾數(shù) 指數(shù)ddd.ddd e(+|-)ddd;4.3.1 識(shí)別器設(shè)計(jì) 帶有翻譯功能的自動(dòng)機(jī)稱為處理機(jī);其結(jié)構(gòu)可分為兩個(gè)部分: 翻譯子程序)+dd-ddddd.e+|-整數(shù)小數(shù)e指數(shù)e 一個(gè)算數(shù)常數(shù)識(shí)別器的設(shè)計(jì):其中 d(數(shù)字)節(jié)點(diǎn),識(shí)別整數(shù);(泛指單詞的后繼符);,節(jié)點(diǎn),識(shí)別小數(shù);節(jié)點(diǎn),識(shí)別e指數(shù);4.3.2 翻譯器設(shè)計(jì)1. 算法設(shè)計(jì):設(shè)置參數(shù)如下: n:拼尾數(shù)值變量; 每當(dāng)讀入尾數(shù)數(shù)字d時(shí): n:=10*n+val(d);【注

4、】 參數(shù)初值,分別為:n=p=m=t=0; e=1num = n*10e*P-m結(jié)果變量:Val(d)字符轉(zhuǎn)數(shù)值函數(shù)p:拼指數(shù)值變量; 每當(dāng)讀入指數(shù)數(shù)字d時(shí): p:=10*p+val(d); m:小數(shù)位數(shù)變量; 每當(dāng)讀入小數(shù)數(shù)字d時(shí): m:=m+1;e:指數(shù)的符號(hào)變量(+:為1,-:為-1);t:類型變量(整型:為0,實(shí)型:為1);【注】 val(d) 字符型轉(zhuǎn)數(shù)值型函數(shù)。 設(shè):在狀態(tài)i結(jié)點(diǎn)處的語義動(dòng)作為qi; q1:初始化,n:=p:=m:=t:=0;e:=1;num:=0; 2. 狀態(tài)節(jié)點(diǎn)處動(dòng)作函數(shù)設(shè)計(jì): q2:n:=10*n+val(d); q3:t:=1; q4:n:=10*n+val

5、(d); m:=m+1; q5:t:=1;q6:if - then e:=-1;q7:p:=10*p+val(d); 開始結(jié)束state:=1getchar(ch)查變換表: (state,ch)= ? = =ok回答:noynystate:= nSemfun(state)計(jì)算:num= n*10e*P-m執(zhí)行翻譯子程序常數(shù)的轉(zhuǎn)換結(jié)果常數(shù)處理機(jī)程序框圖: 算術(shù)常數(shù)處理過程示例:例如:8.67e-12# 的翻譯過程:【結(jié)果】 num=n*10e*p-m=867*10-1*12-2=867*10-14符號(hào)變換nmpet翻譯狀態(tài)#21e76.8ok7754432867868210121000-1-1-111111111100001086720q(6)6q(4)48672q(7)78001q(3)3q(4)48672q(7)7q(2)2q(1)1-68672011q(5)5常數(shù)處理機(jī)常數(shù)識(shí)別器翻譯函數(shù)習(xí)題: 4.1 敘述詞法分析的任務(wù); 4.2 程序設(shè)計(jì)語言單詞是怎樣分類的? 4.3 敘述單詞的機(jī)內(nèi)表示的結(jié)構(gòu)和意義; 4.4 在單詞識(shí)別中,如何區(qū)分關(guān)鍵字和

溫馨提示

  • 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)論