




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
詞法分析——正則表達(dá)式授課:胡靜10/14/20232004年12月28日1編譯原理詞法分析——正則表達(dá)式10/9/20232004年12月28目錄編譯器的結(jié)構(gòu)編譯的例子什么是詞法分析如何編寫一個(gè)詞法分析器正則表達(dá)式——用來(lái)描述tokens編寫一個(gè)詞法分析器的生成器10/14/20232編譯原理目錄編譯器的結(jié)構(gòu)10/9/20232編譯原理編譯器的應(yīng)用模型出錯(cuò)處理語(yǔ)法分析程序語(yǔ)義分析程序目標(biāo)代碼生成程序詞法分析程序中間代碼生成程序代碼優(yōu)化程序表格管理編譯的前端(FrontEnd)編譯的后端(BackEnd)10/14/20233編譯原理編譯器的應(yīng)用模型出語(yǔ)法分析程序語(yǔ)義分析程序目標(biāo)代碼生成程序詞以語(yǔ)法分析器為核心的編譯器模型語(yǔ)法分析器詞法分析器中間代碼生成器語(yǔ)義分析器一部分中間代碼輸入字符串程序入口初始化工作10/14/20234編譯原理以語(yǔ)法分析器為核心的編譯器模型語(yǔ)法分析器詞法分析器中間代碼生一個(gè)簡(jiǎn)單的編譯器結(jié)構(gòu)10/14/20235編譯原理一個(gè)簡(jiǎn)單的編譯器結(jié)構(gòu)10/9/20235編譯原理這個(gè)結(jié)構(gòu)是如何進(jìn)行工作的10/14/20236編譯原理這個(gè)結(jié)構(gòu)是如何進(jìn)行工作的10/9/20236編譯原理這個(gè)結(jié)構(gòu)是如何進(jìn)行工作的10/14/20237編譯原理這個(gè)結(jié)構(gòu)是如何進(jìn)行工作的10/9/20237編譯原理第一步:詞法分析10/14/20238編譯原理第一步:詞法分析10/9/20238編譯原理tokensIdentifiers:xy11elsen_i00Integers:21000-5005LFloatingpoint:2.00.00020.021.1e50.e-10Strings:“x”“Hesaid,\“Areyou?\””Comments:/**don’tchangethis**/Keywords:ifelsewhilebreakSymbols:+*{}++<<<[]>=10/14/20239編譯原理tokensIdentifiers:x特別的詞法分析器手寫代碼來(lái)產(chǎn)生tokens如何讀取標(biāo)識(shí)符tokens?10/14/202310編譯原理特別的詞法分析器手寫代碼來(lái)產(chǎn)生tokens10/9/2023Look-aheadCharacter一次掃描一個(gè)字符使用向前看字符(next)的方法來(lái)決定將要讀到的是什么類型的token,以及當(dāng)前這個(gè)token的結(jié)尾在何處。10/14/202311編譯原理Look-aheadCharacter一次掃描一個(gè)字符10特別的詞法分析器:高層循環(huán)10/14/202312編譯原理特別的詞法分析器:高層循環(huán)10/9/202312編譯原理問(wèn)題的提出如果只向前看一個(gè)字符,不能夠確定我們將要讀入的是哪種類型的token如果token的開頭是“i”,那么它一定是標(biāo)識(shí)符么?如果token的開頭是“2”,那么它一定是一個(gè)整型的常數(shù)么?如果我們通過(guò)上面的類似“插入”式的方法來(lái)寫識(shí)別token的程序,這樣的程序不容易寫正確,而且也不容易維護(hù)因此需要一個(gè)更加有原理性的方法:詞法分析器的生成器,可以自動(dòng)產(chǎn)生有效的詞法分析器。(例如lex,flex,Jlex)一般說(shuō)來(lái),沒有限制的向前看是必要的10/14/202313編譯原理問(wèn)題的提出如果只向前看一個(gè)字符,不能夠確定我們將要讀入的是哪一些問(wèn)題如何明確的描述tokens2.e020.e-012.0000“”“x”“\\”“\”\’”如何將文本分割成tokensif(x==0)a=x<<1;if(x==0)a=x<1;10/14/202314編譯原理一些問(wèn)題如何明確的描述tokens10/9/202314編譯如何描述tokens我們可以使用正則表達(dá)式來(lái)描述程序設(shè)計(jì)語(yǔ)言中的tokens正則表達(dá)式(RE,RegularExpression)的定義如下:a ordinarycharacterstandsforitselfε theemptystringR|S eitherRorS(alternation),whereR,S=RERS RfollowedbyS(concatenation),whereR,S=RER* concatenationofaRERzeroormoretimes (R*=ε|R|RR|RRR|RRRR…)在實(shí)際形式中,會(huì)有優(yōu)先級(jí)的限制,因此可以加入一些括號(hào)。10/14/202315編譯原理如何描述tokens我們可以使用正則表達(dá)式來(lái)描述程序設(shè)計(jì)語(yǔ)言簡(jiǎn)單的例子正則表達(dá)式R描述的字符串的集合表示為L(zhǎng)(R)L(R)=由R定義的“語(yǔ)言”L(abc)={abc}L(hello|goodbye)={hello,goodbye}L(1(0|1)*)=所有的非零二進(jìn)制數(shù)我們可以用正則表達(dá)式來(lái)定義每種類型的token10/14/202316編譯原理簡(jiǎn)單的例子正則表達(dá)式R描述的字符串的集合表示為L(zhǎng)(R)10/一些RE的簡(jiǎn)寫R+
oneormorestringsfromL(R):R(R*)R?optionalR:(R|ε)[abce]oneofthelistedcharacters:(a|b|c|e)[a-z]onecharacterfromthisrange:(a|b|c|d|e|…|y|z)[^ab]anythingbutoneofthelistedchars[^a-z]onecharacternotfromthisrange10/14/202317編譯原理一些RE的簡(jiǎn)寫R+ 10/9/202317編譯原理簡(jiǎn)單的例子正則表達(dá)式digit=[0-9]posint=digit+int=-?posintreal=int(ε|(.posint)) =-?[0-9]+(ε|(.[0-9]+))[a-zA-Z_][a-zA-Z0-9_]*在L(R)中的字符串“0”“1”“2”“3”…“8”“412”…“-42”“1024”…“-1.56”“12”“1.0”Cidentifiers這種簡(jiǎn)寫方式不支持遞歸10/14/202318編譯原理簡(jiǎn)單的例子正則表達(dá)式在L(R)中的字符串這種簡(jiǎn)寫方式不支持遞如何切分文本只有RE是不夠的,還需要一些進(jìn)行選擇的規(guī)則大部分的語(yǔ)言,優(yōu)先選擇最長(zhǎng)的匹配當(dāng)最長(zhǎng)匹配長(zhǎng)度相同時(shí),由優(yōu)先級(jí)決定RE’s+優(yōu)先級(jí)+最長(zhǎng)匹配規(guī)則=詞法分析器的定義10/14/202319編譯原理如何切分文本只有RE是不夠的,還需要一些進(jìn)行選擇的規(guī)則10/小結(jié)詞法分析器將文本流轉(zhuǎn)換成tokens特殊的詞法分析器不容易寫的正確,而且不易維護(hù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《深度學(xué)習(xí)項(xiàng)目案例開發(fā)》課件-任務(wù)八:使用BERT預(yù)訓(xùn)練醫(yī)學(xué)語(yǔ)言模型
- 《跨境電商》課件-5.速賣通平臺(tái)發(fā)布產(chǎn)品
- 機(jī)械設(shè)備海運(yùn)合同參考模板
- 人力資源管理績(jī)效評(píng)估體系構(gòu)建與實(shí)踐操作要點(diǎn)
- 技術(shù)應(yīng)用案例表-技術(shù)應(yīng)用成果展示
- 建筑行業(yè)新材料技術(shù)應(yīng)用表格
- 消防隊(duì)消防安全知識(shí)手冊(cè)
- 智能家居安防系統(tǒng)
- 軟件技術(shù)網(wǎng)絡(luò)安全解決方案與應(yīng)用研究
- 跨境電商智慧服務(wù)平臺(tái)
- 【市占率證明權(quán)威指南】行業(yè)市占率展播-滾珠絲桿行業(yè)(智研咨詢)
- 2025中級(jí)工程機(jī)械維修工技能鑒定精練考試指導(dǎo)題庫(kù)及答案(濃縮300題)
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 年產(chǎn)25噸無(wú)菌化學(xué)原料藥美羅培南車間工藝設(shè)計(jì)
- 合規(guī)管理中的合規(guī)管理領(lǐng)導(dǎo)小組的成員與職責(zé)
- 三輥卷板機(jī)設(shè)計(jì)方案
- 個(gè)人勞動(dòng)仲裁申請(qǐng)書
- 特種設(shè)備現(xiàn)場(chǎng)安全監(jiān)督檢查記錄(共1頁(yè))
- 福德正神真經(jīng)
- 溢流堰穩(wěn)定計(jì)算
- 寶鋼的集中一貫管理體制考察
評(píng)論
0/150
提交評(píng)論