




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四部分解析,教學(xué):胡靜,解析器的作用,以解析器為核心的編譯模型,解析器的作用,接收詞法分析器提供的標(biāo)記串,檢查標(biāo)記串是否可以由源語言的語法生成,以易于理解的方式提示語法錯誤信息,并從常見錯誤中恢復(fù),解析器的位置,解析的例子,解析的類比,自然語言的解析:識別一個句子是否符合語法規(guī)范BEGIN T,而SYM=DO BEGIN Advanced;測試結(jié)束結(jié)束,程序測試;開始。而SYM=*開始前進(jìn);預(yù)測分析程序,預(yù)測分析程序工作過程,實現(xiàn)LL(1)分析的另一個有效方法是使用一個分析表和一個堆棧進(jìn)行聯(lián)合控制。下面介紹的預(yù)測分析程序是屬于這種類型的L1(1)分析儀。預(yù)測分析表和預(yù)測分析以ma和a的形式表
2、示MA,其中a是非終止符,a是終止符或#。矩陣元素Ma和A存儲關(guān)于A的產(chǎn)生式,其指示當(dāng)A面對輸入符號A時應(yīng)該采用的候選。MA和A還可以存儲“錯誤標(biāo)志”,指示A根本不應(yīng)該面對輸入符號A。預(yù)測分析過程概述,預(yù)測分析程序的通用控制程序總是根據(jù)STACK頂部的符號X和當(dāng)前輸入符號a進(jìn)行操作。如下圖所示,對于任何(X,a),主控制程序每次都執(zhí)行以下三種可能的操作之一:如果X=a=#,則分析被宣布成功,分析過程停止。如果X=a #,X將從STACK的頂部彈出,a將指向下一個輸入符號。如果X是非終止符,則檢查分析表m。如果MX中存儲有關(guān)于X的生產(chǎn)公式,則首先從堆棧頂部彈出X,然后將生產(chǎn)公式的右符號串以相反的
3、順序一個接一個地推入堆棧(如果右符號為,則表示不會將任何東西推入堆棧)。與產(chǎn)品相對應(yīng)的語義動作應(yīng)該在產(chǎn)品的正確符號被放回堆棧的同時完成(暫時)。如果“錯誤標(biāo)志”存儲在MX、A和A中,則調(diào)用錯誤診斷程序“錯誤”。預(yù)測分析過程示例,i1*i2 i3,步驟,符號堆棧,輸入字符串,使用的生產(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也是一個產(chǎn)品
4、,將其添加到第一個(X)。如果XY是生產(chǎn)和YVN,則第一個(Y)中的所有非元素都添加到第一個(X)中;如果XY1Y2Yk是一個生產(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ù)測分析表的構(gòu)造,F(xiàn)OUND集合#在F
5、OUND(S)中的構(gòu)造用于語法的開始符號S。如果AB是一個產(chǎn)品,則在跟隨(B)中添加第一個()。如果AB是一個產(chǎn)品或AB是一個產(chǎn)品并且=(即,第一個(),則在FOLLOW(A)之后加上FOLLOW(B)。構(gòu)造分析表m的算法如下:對語法g的每個產(chǎn)生a執(zhí)行步驟2和步驟3;向MA添加一個,每個終結(jié)器一個(第一個);如果是第一個,則在主協(xié)議中增加一個,在任何后續(xù)協(xié)議中增加一個。用“錯誤標(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)錯誤處理在分析、錯誤發(fā)生和基本實踐中,堆棧頂部的終止符與當(dāng)前輸入符號不匹配。非終結(jié)符a位于堆棧頂部,它所面對的輸入符號是a,但分析表m中的MA、a和a為空?;痉椒ㄊ翘^輸入字符串中的一些符號,直到遇到“同步符號”。這種方法的效果取決于同步符號集的選擇。選擇同步符號集,并將跟隨(A)中的所有符號放入非終止符A的同步符號集中。如果我們跳過一些輸入符號,直到跟隨(A)中的同步符號出現(xiàn),我們將彈出堆棧中的A,以便繼續(xù)分析。對于非終結(jié)符A,僅使用跟隨(A)作為其同步符號集是不夠的。例如,如果使用分號作為語句的終止符,則用
7、作語句開頭的關(guān)鍵字可能不在生成表達(dá)式的非終止符的FOUND集合中。這樣,賦值語句后缺少分號可能會導(dǎo)致跳過下一條語句開頭的關(guān)鍵字。如果第一個(A)中的符號被添加到非終止符A的同步符號集,當(dāng)?shù)谝粋€(A)中的符號出現(xiàn)在輸入中時,可以根據(jù)A恢復(fù)語法分析以選擇同步符號集。如果非終止符產(chǎn)生空字符串,派生表達(dá)式可以用作默認(rèn)情況,這可能會延遲一些錯誤檢查。這種方法減少了錯誤恢復(fù)過程中必須考慮的非終結(jié)符的數(shù)量。如果堆棧頂部的終端符號不匹配,一個簡單的方法是在堆棧頂部彈出終端符號,并發(fā)送一條消息指示終端符號已被插入,然后繼續(xù)解析。因此,該方法使得一個單詞符號的同步符號集包含所有其他單詞符號。對于修改后的分析表,如果遇到MA,則A為空,輸入符號A被跳過。如果項目是“同步的”,堆棧頂部的非終止符會彈出;如果是初始狀態(tài),則有必要繼續(xù)讀入下一個輸入符號,直到該項不為空或“同步”;如果堆棧頂部的終端符號與輸入符號不匹配,則會彈出堆棧頂部的終端符號。錯誤處理示例),i* i,step,符號堆棧,輸入字符串,note,0,#E),i* i#,1,#E,i* 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海海事職業(yè)技術(shù)學(xué)院《能源生產(chǎn)解決方案》2023-2024學(xué)年第二學(xué)期期末試卷
- 彭水雙拼別墅施工方案
- 威海鋼質(zhì)潔凈門施工方案
- 2025簡化版企業(yè)抵押借款合同范本
- 2025至2030年中國錦一氫絕緣紙數(shù)據(jù)監(jiān)測研究報告
- 2025我愛我家房屋買賣合同范本
- 2025至2030年中國離子選擇電極數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國電離子魔術(shù)球數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國靈是雕塑數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國植絨吸塑盤數(shù)據(jù)監(jiān)測研究報告
- 菏澤學(xué)院無機(jī)化學(xué)(專升本)復(fù)習(xí)題
- 虛實互動:人機(jī)協(xié)同探秘知到智慧樹章節(jié)答案
- 員工違紀(jì)扣款細(xì)則
- 2024年度融資合同:科技公司與投資公司之間的融資協(xié)議
- 2023年云上貴州大數(shù)據(jù)有限公司社會招聘筆試真題
- 國家安全教育大學(xué)生第十章-爭做總體國家安全觀堅定踐行者
- 工業(yè)自動化設(shè)備安裝調(diào)試方案
- 2024年四川省公務(wù)員考試《行測》真題及答案解析
- 改性磷石膏施工方案
- 小學(xué)項目式學(xué)習(xí)培訓(xùn)
- 2024年教師資格考試初級中學(xué)面試音樂試題與參考答案
評論
0/150
提交評論