詞法分析的程序?qū)崿F(xiàn)_第1頁(yè)
詞法分析的程序?qū)崿F(xiàn)_第2頁(yè)
詞法分析的程序?qū)崿F(xiàn)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、詞法分析的程序?qū)崿F(xiàn)1. 問題分析詞法分析程序完成的是編譯第一階段的工作。詞法分析工作可以是獨(dú)立的一遍,把字符流的源程序變?yōu)閱卧~序列。一般的情況,是將詞法分析程序設(shè)計(jì)成一個(gè)子程序,每當(dāng)語(yǔ)法分析程序需要一個(gè)單詞時(shí),則調(diào)用該子程序。詞法分析程序每得到一次調(diào)用,便從源程序文件中讀入一些字符,直到識(shí)別出一個(gè)單詞,或說(shuō)直到下一單詞的第一個(gè)字符為止。這種設(shè)計(jì)方案中,詞法分析程序和語(yǔ)法分析程序是放在同一遍里,而省掉了中間文件。本程序作為獨(dú)立的程序來(lái)對(duì)輸入的程序(字符串)進(jìn)行詞法分析:用戶輸入一個(gè)字符串,詞法分析程序從左至右掃描源程序的字符串,按照詞法規(guī)則(正規(guī)文法規(guī)則)識(shí)別出一個(gè)個(gè)正確的單詞,并轉(zhuǎn)換成該單詞相

2、應(yīng)的二元式(類號(hào),類碼)從屏幕上顯示輸出,輸出的類型包括關(guān)鍵字、運(yùn)算符、標(biāo)志符及數(shù)字。2. 關(guān)鍵字及算符定義程序當(dāng)中設(shè)了如下關(guān)鍵字和運(yùn)算符:關(guān)鍵字:"void","char","main", "if","else","end","print","scan","then","read","write"運(yùn)算符:" + "," - ",&quo

3、t; * "," / "," < "," > "標(biāo)志符就是以字母開頭,由任意個(gè)字母或數(shù)字連接組成,除了關(guān)鍵字以外的所有字符串此外,為了方便,程序中設(shè)定了幾個(gè)布爾型函數(shù)來(lái)判斷輸入的字符串時(shí)關(guān)鍵字、運(yùn)算符、數(shù)字還是標(biāo)志符,每次在需要的時(shí)刻有主函數(shù)調(diào)用。3. 程序狀態(tài)轉(zhuǎn)換圖詞法分析程序?qū)嶋H上是一張狀態(tài)轉(zhuǎn)換矩陣(狀態(tài)轉(zhuǎn)換圖)和一個(gè)控制程序。控制程序很簡(jiǎn)單,關(guān)鍵是構(gòu)造狀態(tài)轉(zhuǎn)換矩陣及其相應(yīng)的語(yǔ)義動(dòng)作。構(gòu)造狀態(tài)轉(zhuǎn)換矩陣是根據(jù)每類單詞的正規(guī)式,構(gòu)造相應(yīng)的確定有限自動(dòng)機(jī)(DFA),然后綜合成一張識(shí)別所有單詞的DFA,其中映射函數(shù)就

4、是狀態(tài)轉(zhuǎn)換矩陣。在轉(zhuǎn)換矩陣中配上適當(dāng)?shù)恼Z(yǔ)義動(dòng)作(本程序是在屏幕上將字符串中各單詞的類型顯示輸出),便完成了詞法分析程序的任務(wù)。利用狀態(tài)矩陣,可編制出一個(gè)掃描器的算法,從輸入緩沖區(qū)讀取一個(gè)字符并轉(zhuǎn)換成相應(yīng)序號(hào),查狀態(tài)矩陣執(zhí)行相應(yīng)語(yǔ)義動(dòng)作,決定轉(zhuǎn)向的下一狀態(tài)。若已識(shí)別一單詞便結(jié)束,否則繼續(xù)上述動(dòng)作。由此可發(fā)現(xiàn),狀態(tài)轉(zhuǎn)換圖對(duì)編寫詞法分析程序有很強(qiáng)的指導(dǎo)作用。本程序的狀態(tài)轉(zhuǎn)換圖如下:主程序的流程圖4. 運(yùn)行結(jié)果演示本程序利用VC編寫,在Visual Studio .NET環(huán)境中調(diào)試通過(guò)。運(yùn)行程序,將會(huì)提示輸入待分析的程序(即待分析的字符串)。程序的運(yùn)行過(guò)程及運(yùn)行結(jié)果如下:測(cè)試數(shù)據(jù)1如下: good a

5、sdflj 1+532 a987=x end運(yùn)行結(jié)果如下:請(qǐng)輸入帶分析的程序:good asdflj 1+532 a987=x end 對(duì)此語(yǔ)句進(jìn)行詞法分析如下: good - 標(biāo)識(shí)符 asdflj - 標(biāo)識(shí)符 1 - 數(shù)字 + - 算符 532 - 數(shù)字 a987 - 標(biāo)識(shí)符 = - 算符 x - 標(biāo)識(shí)符 end - 關(guān)鍵字 分析完畢.測(cè)試數(shù)據(jù)2如下:if a5<20 then print OK else end234=b9 end運(yùn)行結(jié)果如下:請(qǐng)輸入帶分析的程序:if a5<20 then print OK else end234=b9 end 對(duì)此語(yǔ)句進(jìn)行詞法分析如下: if - 關(guān)鍵字 a5 - 標(biāo)識(shí)符 < - 算符 20 - 數(shù)字 then -

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論