




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、-1-階段二 詞法分析器開發(fā)-2-項(xiàng)目需求讀入源語言編寫的程序;對源程序進(jìn)行詞法分析生成詞法正確的單詞序列并輸出;能夠指出詞法錯(cuò)誤所在位置。-3-一、軟件開發(fā)過程-4-三個(gè)階段:面向?qū)ο蠓治龆x問題域;面向?qū)ο笤O(shè)計(jì)構(gòu)建系統(tǒng)結(jié)構(gòu);編碼與測試編寫和測試代碼; 軟件生命周期模型 :瀑布型、迭代型,和增量型。-5-分析、設(shè)計(jì)與編程關(guān)系 -6-二、編譯原理部分內(nèi)容-7-詞法分析程序的功能-8-單詞的分類 1保留字(也稱關(guān)鍵字,基本字等):保留字一般是由語言系統(tǒng)自身定義的,通常是由字母組成的字符串。如C語言中的main,break,switch,char等。2標(biāo)識符:用來標(biāo)識程序中各個(gè)對象的名稱。如變量名
2、,常量名,過程名,數(shù)組名等。3常數(shù):用來表示各類常數(shù)。如整型常數(shù),實(shí)型常數(shù),布爾常數(shù),字符常數(shù)等。4運(yùn)算符:表示程序中算術(shù)運(yùn)算、邏輯運(yùn)算、字符運(yùn)算的確定的字符或字符串。如各類語言通用的,/,等。還有一些是某種語言特有的運(yùn)算符,如C語言中的+,?:,&等。5界限符:如逗號,分號,括號,單引號等。-9-單詞的Token表示 Token域名(成分)類 型含 義Lineshowint記錄該單詞在源程序中的行數(shù)LexLexType記錄該單詞的詞法信息,其中LexType為單詞的類型枚舉SemChar*記錄該單詞的語義信息-10-Formal Definition of DFA(,SS, S0, , TS
3、)(alphabet),set of allowed characters, each character can be called as input symbol;SS = S0, S1, S2, ,a finite set, each element is called state;S0 SS, start state :SS SS , transforming functionTSSS, set of terminal (accept) statesNote: is a function which accepts a state and a symbol and returns ei
4、ther one unique state or (no definition) ;-11-Two ways of RepresentationsTableConvenient for implementation Graph easy to read and understand-12-Two ways of Representations (graph)Graphstart state:terminal state:StateEdge: S0SSa-13-Relating DFA to Lexical Structure of a Programming language A DFA ca
5、n be defined for the lexical structure of all the words in a programming language; The set of strings defined by the DFA is the set of allowed words in the programming language; The implementation of the DFA can be used as a scanner for the programming language;-14-正整數(shù)的DFA ,其中D表示數(shù)字,other表示D以外的字符。DFA
6、的構(gòu)造1-15-標(biāo)識符的DFA ,其中L表示字母,D表示數(shù)字,other表示L,D以外的字符。 DFA的構(gòu)造2-16-DFA的構(gòu)造3經(jīng)合并和調(diào)整后,得到識別標(biāo)識符和正整數(shù)的DFA -17-enum state(s0,s1,s2,s3,s4,s5); /*DFA的所有狀態(tài)*/enum letter(a. z); /*字母的定義*/enum digit(0. 9);/*數(shù)字的定義*/enum outkind(id,num,error);/*輸入單詞的類別*/char ch;/*用于讀入字符*/state = s0;/*狀態(tài)初始為s0*/ch = getChar();/*讀取當(dāng)前字符*/switch
7、 (state)/*根據(jù)當(dāng)前狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)換*/case s0:switch (ch) case a. z: state = s1;break; case 0. 9: state = s3;break; default: state = s5;break; break;/*狀態(tài)s0的分情況轉(zhuǎn)向程序*/case s1:while (ch = letter)&(ch = digit) ch = getChar(); state =s2; break;/*狀態(tài)s1的分情況轉(zhuǎn)向程序*/case s2:ungetChar(); outkind = id; break;/*當(dāng)前單詞是標(biāo)識符*/case s
8、3: while (ch = digit) ch = getChar(); state =s4; break;/*狀態(tài)s3的分情況轉(zhuǎn)向程序*/case s4: ungetChar(); outkind = num; break;/*當(dāng)前單詞是常數(shù)*/case s5: outkind = error; break;/*出錯(cuò)*/return outkind;/*返回識別出的單詞的種類*/-18-15*4/other/2*3*otherstate := 1; start while state = 1,2,3 or 4 do case state of 1: case input character
9、 of / : advance the input; state := 2; else state := . error or other ; end case; 2: case input character of * : advance the input; state :=3; else state := . error or other ; end case;3: case input character of * : advance the input; state := 4; else advance the input and stay in state 3 end case;4
10、: case input character of / : advance the input;state := 5; * : advance the input; and stay in state 4 else advance the input;state :=3; end case; end case;end while;if state = 5 then accept else error;DFA實(shí)現(xiàn) -19-實(shí)現(xiàn)詞法分析器的注意事項(xiàng) 保留字和標(biāo)識符名字的區(qū)分 由于保留字的詞法規(guī)則符合標(biāo)識符的詞法規(guī)則,故在處理時(shí)應(yīng)加以區(qū)分。詞法分析器在掃描過程中只要遇到符合標(biāo)識符詞法規(guī)則的單詞,如果
11、沒有出錯(cuò),則統(tǒng)一標(biāo)記ID。當(dāng)掃描完一個(gè)單詞時(shí),調(diào)用函數(shù)reservedLookup(char * s),查保留字表,以確定是否是保留字, -20-復(fù)合單詞的處理 在程序設(shè)計(jì)語言中,有一類單詞是由兩個(gè)或兩個(gè)以上符號組成,這類單詞的前部分也可以是一個(gè)獨(dú)立的單詞,如:=等,在處理到“:”時(shí),我們還不能斷定這個(gè)單詞是“:”還是“:=”,這取決于“:”的下一個(gè)字符,如果下一個(gè)字符是“=”,則為“:=”,否則該單詞為“:”。在處理這類單詞時(shí)要加以注意。-21-向前搜索及回退 在詞法分析過程中,為了準(zhǔn)確的判定一個(gè)單詞的最右端符號,經(jīng)常需要向前多讀一個(gè)有時(shí)甚至是兩個(gè)字符。超前讀的字符如不匹配的話,還需要回退。-22-數(shù)字的轉(zhuǎn)換 詞法分析程序應(yīng)該把字符串轉(zhuǎn)換成數(shù),如123應(yīng)轉(zhuǎn)換成123。-23-輸入時(shí)邊界的處理 詞法分析器的輸入采用的是緩沖輸入方法。但是不管輸入緩沖區(qū)有多大,都不能保證單詞符號不會被它的邊界所打斷。所以必須防止超前讀字符進(jìn)行分析時(shí)將當(dāng)前單詞符號中未處理的字符沖掉。將當(dāng)前單詞中未處理的字符保存在變量tokenString中,直到一個(gè)完整的單詞符號錄入完成后,將變量tokenString作為單詞的語義信息提供給語法分析程序,存入TOKEN結(jié)構(gòu)中的SEM部分。這樣就解決了單詞的邊界丟失問題。-24-注釋的處理詞法分析程序?qū)⒆⑨屩械膬?nèi)容略過不
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路橋梁工程建設(shè)合同書
- 做鋼筋合同范本
- 出售梅園小區(qū)物業(yè)合同范本
- 勞務(wù)分包合同范本木工
- 會所拆除服務(wù)合同范本
- 企業(yè)用房交易合同范本
- 合同范例可以為正式合同
- 分包項(xiàng)目檢測合同范本
- 個(gè)人新房交易合同范本
- 上海合伙買房合同范本
- 家校共育之道
- DeepSeek入門寶典培訓(xùn)課件
- 西安2025年陜西西安音樂學(xué)院專職輔導(dǎo)員招聘2人筆試歷年參考題庫附帶答案詳解
- 《作文中間技巧》課件
- 廣東省2025年中考物理仿真模擬卷(深圳)附答案
- 2025屆八省聯(lián)考 新高考適應(yīng)性聯(lián)考英語試題(原卷版)
- 新蘇教版一年級下冊數(shù)學(xué)第1單元第3課時(shí)《8、7加幾》作業(yè)
- 2024年山東電力高等??茖W(xué)校高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年電力交易員(高級工)職業(yè)鑒定理論考試題庫(單選題、多選題、判斷題)
- 《平面廣告賞析》課件
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級下冊+
評論
0/150
提交評論