


下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工廠基建安全管理制度
- 危險(xiǎn)化學(xué)品購(gòu)銷管理制度
- 云木香生產(chǎn)經(jīng)營(yíng)管理制度
- 地下停車場(chǎng)漏水管理制度
- 公司輿情引導(dǎo)與管理制度
- 景區(qū)露天酒店管理制度
- 安全制度與流程管理制度
- 景區(qū)廣播服務(wù)管理制度
- 智慧閱讀空間管理制度
- 搞笑課件自我介紹
- 做課件教學(xué)視頻
- 2025年特種設(shè)備安全考試題庫(kù)特種設(shè)備安全管理人員法規(guī)應(yīng)用試卷
- 普法試題及答案初中
- 中控崗位考試題及答案
- 商鋪退押金協(xié)議書
- 碘對(duì)比劑護(hù)理應(yīng)用與安全管理
- 2025-2030年中國(guó)航空密封件行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 知識(shí)產(chǎn)權(quán)租賃協(xié)議書
- GB 45673-2025危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化通用規(guī)范
- 未注公差的直徑尺寸公差I(lǐng)T
- 上海市高級(jí)人民法院關(guān)于供應(yīng)商與超市之間合同糾紛案件若干問題的解答
評(píng)論
0/150
提交評(píng)論