




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 4 章 詞法分析4.1 詞法分析的基本概念4.2 詞法分析程序的設(shè)計與實現(xiàn)4.3 算術(shù)常數(shù)處理機的設(shè)計【內(nèi)容提要】 詞法分析程序又稱掃描器,任務(wù)有二:(1) 識別單詞 從用戶的源程序中把單詞分離出來;(2) 翻譯單詞 把單詞轉(zhuǎn)換成機內(nèi)表示,便于后續(xù)處理。4.1.1 單詞的分類與識別 1. 單詞的分類 標識符 用戶給一些變量起的名字; 常數(shù) 以自身形態(tài)面對用戶和系統(tǒng); 關(guān)鍵字系統(tǒng)內(nèi)部定義,具有固定的意義, 界符單字符界符 + - * / , ; : = 雙字符界符 := = = = /* */ 按單詞的語法功能可分為:如:算數(shù)常數(shù),邏輯常數(shù),字符串常數(shù), 通常用來區(qū)分語法單元; 2. 單詞的
2、識別問題:字母開頭關(guān)鍵字或標識符;數(shù)字開頭數(shù)值型常量; 或 “ 開頭字符型常量或字符串常量;其它多數(shù)以自身形態(tài)識別之,如 + ,- , = , ;= , != ,= , 如何區(qū)別關(guān)鍵字和標識符? 現(xiàn)在,大多數(shù)編譯程序使用“保留字”,即標識符不能用作關(guān)鍵字。系統(tǒng)預(yù)先造好關(guān)鍵字表,拼好的字符串,先查“關(guān)鍵字”表,查到了,視為關(guān)鍵字,否則,視為標識符。簡單識別方法 程序設(shè)計語言的單詞不但類別不同,而且長短不一,機內(nèi)表示可以使: 語法信息,即單詞的分類碼。語義信息,如:數(shù)組維數(shù), 上下界,類型等;TOKEN: 目前,大多數(shù)采用如下 二元式 形式: 長短統(tǒng)一; 語法、語義信息分開。 4.1.2 單詞的機
3、內(nèi)表示 類 值i 名字 c 123k whilep 數(shù)值型。 算術(shù)常數(shù)處理機的功能: 識別器(有限自動機主機) 翻譯器(在自動機的狀態(tài)節(jié)點處,插入 算術(shù)常數(shù)的基本形式:尾數(shù) 指數(shù)ddd.ddd e(+|-)ddd;4.3.1 識別器設(shè)計 帶有翻譯功能的自動機稱為處理機;其結(jié)構(gòu)可分為兩個部分: 翻譯子程序)+dd-ddddd.e+|-整數(shù)小數(shù)e指數(shù)e 一個算數(shù)常數(shù)識別器的設(shè)計:其中 d(數(shù)字)節(jié)點,識別整數(shù);(泛指單詞的后繼符);,節(jié)點,識別小數(shù);節(jié)點,識別e指數(shù);4.3.2 翻譯器設(shè)計1. 算法設(shè)計:設(shè)置參數(shù)如下: n:拼尾數(shù)值變量; 每當讀入尾數(shù)數(shù)字d時: 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ù)值變量; 每當讀入指數(shù)數(shù)字d時: p:=10*p+val(d); m:小數(shù)位數(shù)變量; 每當讀入小數(shù)數(shù)字d時: m:=m+1;e:指數(shù)的符號變量(+:為1,-:為-1);t:類型變量(整型:為0,實型:為1);【注】 val(d) 字符型轉(zhuǎn)數(shù)值型函數(shù)。 設(shè):在狀態(tài)i結(jié)點處的語義動作為qi; q1:初始化,n:=p:=m:=t:=0;e:=1;num:=0; 2. 狀態(tài)節(jié)點處動作函數(shù)設(shè)計: 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)計算:num= n*10e*P-m執(zhí)行翻譯子程序常數(shù)的轉(zhuǎn)換結(jié)果常數(shù)處理機程序框圖: 算術(shù)常數(shù)處理過程示例:例如:8.67e-12# 的翻譯過程:【結(jié)果】 num=n*10e*p-m=867*10-1*12-2=867*10-14符號變換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ù)處理機常數(shù)識別器翻譯函數(shù)習題: 4.1 敘述詞法分析的任務(wù); 4.2 程序設(shè)計語言單詞是怎樣分類的? 4.3 敘述單詞的機內(nèi)表示的結(jié)構(gòu)和意義; 4.4 在單詞識別中,如何區(qū)分關(guān)鍵字和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雇傭提成合同協(xié)議書范本
- 餐廳經(jīng)營合伙合同協(xié)議書
- 餐飲公司合同協(xié)議書范本
- 餐飲合租店面的協(xié)議合同
- 餐飲服務(wù)員合同協(xié)議模板
- 餐館保潔小時工合同范本
- 餓了么店鋪轉(zhuǎn)讓協(xié)議合同
- 《合同后評價管理辦法》
- 昆山市考古前置管理辦法
- 銀行總行大樓管理辦法
- 《中學心理危機干預(yù)體系構(gòu)建》
- 《我國稅制結(jié)構(gòu)分析》課件
- 智慧農(nóng)業(yè)項目建設(shè)方案
- 人工智能模擬題
- 2024年下半年江蘇南通啟東市部分事業(yè)單位選調(diào)工作人員14人易考易錯模擬試題(共500題)試卷后附參考答案
- 教師資格考試小學美術(shù)面試試題及答案指導(2025年)
- 污水處理工藝培訓課件
- 住家保姆合同協(xié)議書模板
- AI如何賦能藝術(shù)教育-筆記
- 2024-2030年中國抗菌陶瓷市場經(jīng)營效益與供需前景預(yù)測報告
- 礦泉水買賣合同樣本
評論
0/150
提交評論