




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四部分解析,教學(xué):胡靜,解析器的作用,以解析器為核心的編譯模型,解析器的作用,接收詞法分析器提供的標(biāo)記串,檢查標(biāo)記串是否可以由源語(yǔ)言的語(yǔ)法生成,以易于理解的方式提示語(yǔ)法錯(cuò)誤信息,并從常見錯(cuò)誤中恢復(fù),解析器的位置,解析的例子,解析的類比,自然語(yǔ)言的解析:識(shí)別一個(gè)句子是否符合語(yǔ)法規(guī)范BEGIN T,而SYM=DO BEGIN Advanced;測(cè)試結(jié)束結(jié)束,程序測(cè)試;開始。而SYM=*開始前進(jìn);預(yù)測(cè)分析程序,預(yù)測(cè)分析程序工作過(guò)程,實(shí)現(xiàn)LL(1)分析的另一個(gè)有效方法是使用一個(gè)分析表和一個(gè)堆棧進(jìn)行聯(lián)合控制。下面介紹的預(yù)測(cè)分析程序是屬于這種類型的L1(1)分析儀。預(yù)測(cè)分析表和預(yù)測(cè)分析以ma和a的形式表
2、示MA,其中a是非終止符,a是終止符或#。矩陣元素Ma和A存儲(chǔ)關(guān)于A的產(chǎn)生式,其指示當(dāng)A面對(duì)輸入符號(hào)A時(shí)應(yīng)該采用的候選。MA和A還可以存儲(chǔ)“錯(cuò)誤標(biāo)志”,指示A根本不應(yīng)該面對(duì)輸入符號(hào)A。預(yù)測(cè)分析過(guò)程概述,預(yù)測(cè)分析程序的通用控制程序總是根據(jù)STACK頂部的符號(hào)X和當(dāng)前輸入符號(hào)a進(jìn)行操作。如下圖所示,對(duì)于任何(X,a),主控制程序每次都執(zhí)行以下三種可能的操作之一:如果X=a=#,則分析被宣布成功,分析過(guò)程停止。如果X=a #,X將從STACK的頂部彈出,a將指向下一個(gè)輸入符號(hào)。如果X是非終止符,則檢查分析表m。如果MX中存儲(chǔ)有關(guān)于X的生產(chǎn)公式,則首先從堆棧頂部彈出X,然后將生產(chǎn)公式的右符號(hào)串以相反的
3、順序一個(gè)接一個(gè)地推入堆棧(如果右符號(hào)為,則表示不會(huì)將任何東西推入堆棧)。與產(chǎn)品相對(duì)應(yīng)的語(yǔ)義動(dòng)作應(yīng)該在產(chǎn)品的正確符號(hào)被放回堆棧的同時(shí)完成(暫時(shí))。如果“錯(cuò)誤標(biāo)志”存儲(chǔ)在MX、A和A中,則調(diào)用錯(cuò)誤診斷程序“錯(cuò)誤”。預(yù)測(cè)分析過(guò)程示例,i1*i2 i3,步驟,符號(hào)堆棧,輸入字符串,使用的生產(chǎn)公式,0,# e,I * ii #,1,# et,I * ii #,ete,2,# ETF,I * ii #,tft,3,# ETI,I * i #,fi,8,# et,i #,9,# e,i #,t,10,# et,I #,e te,11,# et,I #,12,# ETF,I #,tft,13如果X也是一個(gè)產(chǎn)品
4、,將其添加到第一個(gè)(X)。如果XY是生產(chǎn)和YVN,則第一個(gè)(Y)中的所有非元素都添加到第一個(gè)(X)中;如果XY1Y2Yk是一個(gè)生產(chǎn)公式,y1,yi-1是非終止符,并且FIRST(Yj)包含任何j,1ji-1,那么FIRST(Yi)中的所有非元素都被放入FIRSt(X);特別地,如果所有的FIRST(Yj)包含,j=1,2,k,它將被添加到FIRST(X),并且FIRST集合構(gòu)造的例子是first (e)=,first (t)=*,first (f)=(,ifrst(T)=(,if FIRSt(E)ETE E TE | TFT * FT | F(E)| I,預(yù)測(cè)分析表的構(gòu)造,F(xiàn)OUND集合#在F
5、OUND(S)中的構(gòu)造用于語(yǔ)法的開始符號(hào)S。如果AB是一個(gè)產(chǎn)品,則在跟隨(B)中添加第一個(gè)()。如果AB是一個(gè)產(chǎn)品或AB是一個(gè)產(chǎn)品并且=(即,第一個(gè)(),則在FOLLOW(A)之后加上FOLLOW(B)。構(gòu)造分析表m的算法如下:對(duì)語(yǔ)法g的每個(gè)產(chǎn)生a執(zhí)行步驟2和步驟3;向MA添加一個(gè),每個(gè)終結(jié)器一個(gè)(第一個(gè));如果是第一個(gè),則在主協(xié)議中增加一個(gè),在任何后續(xù)協(xié)議中增加一個(gè)。用“錯(cuò)誤標(biāo)志”標(biāo)記所有未定義的ma和a。FOUND集合的構(gòu)造示例,F(xiàn)OUND(e)=,# FOUND(e)=,# FOUND(t)=,# FOUND(t)=,# FOUND(f)=*,#,et e | t * ft | f Fi
6、rst(f)=(,if rst(t)=(,if rst(e)=(,I,ll (1)錯(cuò)誤處理在分析、錯(cuò)誤發(fā)生和基本實(shí)踐中,堆棧頂部的終止符與當(dāng)前輸入符號(hào)不匹配。非終結(jié)符a位于堆棧頂部,它所面對(duì)的輸入符號(hào)是a,但分析表m中的MA、a和a為空?;痉椒ㄊ翘^(guò)輸入字符串中的一些符號(hào),直到遇到“同步符號(hào)”。這種方法的效果取決于同步符號(hào)集的選擇。選擇同步符號(hào)集,并將跟隨(A)中的所有符號(hào)放入非終止符A的同步符號(hào)集中。如果我們跳過(guò)一些輸入符號(hào),直到跟隨(A)中的同步符號(hào)出現(xiàn),我們將彈出堆棧中的A,以便繼續(xù)分析。對(duì)于非終結(jié)符A,僅使用跟隨(A)作為其同步符號(hào)集是不夠的。例如,如果使用分號(hào)作為語(yǔ)句的終止符,則用
7、作語(yǔ)句開頭的關(guān)鍵字可能不在生成表達(dá)式的非終止符的FOUND集合中。這樣,賦值語(yǔ)句后缺少分號(hào)可能會(huì)導(dǎo)致跳過(guò)下一條語(yǔ)句開頭的關(guān)鍵字。如果第一個(gè)(A)中的符號(hào)被添加到非終止符A的同步符號(hào)集,當(dāng)?shù)谝粋€(gè)(A)中的符號(hào)出現(xiàn)在輸入中時(shí),可以根據(jù)A恢復(fù)語(yǔ)法分析以選擇同步符號(hào)集。如果非終止符產(chǎn)生空字符串,派生表達(dá)式可以用作默認(rèn)情況,這可能會(huì)延遲一些錯(cuò)誤檢查。這種方法減少了錯(cuò)誤恢復(fù)過(guò)程中必須考慮的非終結(jié)符的數(shù)量。如果堆棧頂部的終端符號(hào)不匹配,一個(gè)簡(jiǎn)單的方法是在堆棧頂部彈出終端符號(hào),并發(fā)送一條消息指示終端符號(hào)已被插入,然后繼續(xù)解析。因此,該方法使得一個(gè)單詞符號(hào)的同步符號(hào)集包含所有其他單詞符號(hào)。對(duì)于修改后的分析表,如果遇到MA,則A為空,輸入符號(hào)A被跳過(guò)。如果項(xiàng)目是“同步的”,堆棧頂部的非終止符會(huì)彈出;如果是初始狀態(tài),則有必要繼續(xù)讀入下一個(gè)輸入符號(hào),直到該項(xiàng)不為空或“同步”;如果堆棧頂部的終端符號(hào)與輸入符號(hào)不匹配,則會(huì)彈出堆棧頂部的終端符號(hào)。錯(cuò)誤處理示例),i* i,step,符號(hào)堆棧,輸入字符串,note,0,#E),i* i#,1,#E,i* i#
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 巾幗徒步活動(dòng)方案
- 小學(xué)生網(wǎng)上公益活動(dòng)方案
- 常州插花活動(dòng)方案
- 工會(huì)親情活動(dòng)方案
- 帶狗露營(yíng)活動(dòng)方案
- 小班餐點(diǎn)活動(dòng)方案
- 少先隊(duì)進(jìn)耕地活動(dòng)方案
- 工會(huì)春聯(lián)比賽活動(dòng)方案
- 小班游戲識(shí)字活動(dòng)方案
- 岱山公司拓展活動(dòng)方案
- 資產(chǎn)管理數(shù)字化解決方案
- 護(hù)理安全意識(shí)
- 鋼筋內(nèi)部比對(duì)作業(yè)指導(dǎo)書
- 幼兒園中班社會(huì)《美麗的黃山》課件
- 法社會(huì)學(xué)教程(第三版)教學(xué)
- 6綜合與實(shí)踐(北京五日游)(教案)-六年級(jí)下冊(cè)數(shù)學(xué)人教版
- 專題22 桃花源記(含答案與解析)-備戰(zhàn)2024年中考語(yǔ)文之文言文對(duì)比閱讀(全國(guó)版)
- GB/T 44150-2024金屬及其他無(wú)機(jī)覆蓋層鋅與鎳、鈷或鐵合金電鍍層
- AQ6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范
- 重慶市大足縣2023-2024學(xué)年四年級(jí)數(shù)學(xué)第二學(xué)期期末聯(lián)考試題含解析
- 2024年安徽省縣鄉(xiāng)教師選調(diào)考試《教育心理學(xué)》真題匯編帶解析附參考答案(模擬題)
評(píng)論
0/150
提交評(píng)論