語法分析--自上而下分析_第1頁
語法分析--自上而下分析_第2頁
語法分析--自上而下分析_第3頁
語法分析--自上而下分析_第4頁
語法分析--自上而下分析_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第四章語法分析-由上而下分析、第四章語法分析-由上而下分析、高級語言語法結(jié)構(gòu)適合上下無關(guān)語法說明,因此我將作為上下文無關(guān)文法語法分析的基礎(chǔ)。牙齒章節(jié)和下一章介紹了編譯器配置的幾種茄子常見語法分析方法4.1語法分析器功能語法分析是編譯過程的關(guān)鍵部分。其任務(wù)是根據(jù)詞法分析識別單詞符號字符串分析和判斷程序的語法結(jié)構(gòu)是否符合語法規(guī)則。下圖顯示了語法分析器在編譯器中的位置。第4章語法分析-自上而下分析、源節(jié)目、編譯前端、中間、代碼、代碼最優(yōu)化、中間、代碼、代碼生成器、目標(biāo)節(jié)目、符號表、代碼生成器位置、第4章語法4.2自上而下分析面臨的問題主要是通過示例進行自上而下分析回溯的不確定性要求推翻我們已經(jīng)完成的

2、工作,為了解決這些問題,必須去掉左遞歸,去掉回溯。4.3 LL(1)分析4.3.1左遞歸刪除一般來說,假設(shè)對P的所有生產(chǎn)式都是PP1| P2| P1m| 1| 2 | | n,如果每個都不相等,并且不是以P開頭,那么P就會被刪除,在這里,我們將渡邊杏受到形式描述消除左遞歸的算法威脅,最好再舉幾個茄子例子,然后再理解。范例4 .3:考慮語法:刪除SQc|c Q Rb|b R Sa|a左側(cè)遞歸。解決方案:將終結(jié)器與r、q、s對齊。對于r,沒有直接左遞歸。在Q中獲取R的相關(guān)候選人:Q Sab|ab|b將當(dāng)前Q也作為S的相關(guān)候選人導(dǎo)入,而不直接包含左側(cè)遞歸。S Sabc|abc|bc|c刪除S的直接左

3、遞歸后,對整個語法S ABCS | BCS | CS ABCS |第4章進行語法分析-自上而下分析,結(jié)果:S ABCS | BCS | CS ABCS | 4 . 3 . 2回溯如上所述,要進行由上而下的分析,語法中包括左遞歸是渡邊杏的。g是沒有左遞歸的語法,對于g的所有未結(jié)束符號的每個候選項,將結(jié)束前綴集FIRST()定義為FIRST()=a| *a,aVT,特別是*的FIRST()。也就是說,F(xiàn)IRST()可以是任何可以派生的開始終結(jié)器。如果不是終結(jié)點A的所有候選前綴集2不相交(即,A的兩個其他候選I和j FIRST(i) FIRST(j)=a請求與輸入字符串匹配),則A可以根據(jù)第一個輸入

4、符號A正確分配要執(zhí)行操作的候選。牙齒候選人就是在那個結(jié)束的第一集里含有A。如何將語法換成某個結(jié)束超集的所有候選超集2,2,2不相交的?方法是提取共同的左系數(shù)。例如,假設(shè)a的規(guī)則是A1| 2|。|n| 1| 2| |m(不要單獨啟動),然后A A| 1| 2| |m A | 1 | 2 | | n,第4章語法分析-由上而下分析例如,生成式bBcA|b是FIRST也就是說,B bC C BcA| 4.3.3 LL(1)分析條件假設(shè)S是語法G的起始符號。S* A需要# FOLLOW(A)。也就是說,F(xiàn)OLLOW(A)是出現(xiàn)在A之后的所有終結(jié)點活動#。判斷給定語法是否LL(1)語法的條件是(1)語法不

5、包括左遞歸。(2)語法中每個非終止子A的每個生成式的候選2 2不相交。也就是說,如果A 1 | 2 |。| n規(guī)則:FIRST(i) FIRST(j)=(i j) (3)語法中的每個終結(jié)器A,如果包含候選標(biāo)頭集,則為FIRST(A) FLLOW(A)=(a)牙齒分析程序由第一個分組過程組成,每個過程對應(yīng)于語法的非終止符。這種分析程序稱為遞歸下降分析器。在牙齒部分中,可以使用巴科斯范式(1)閉包顯示為大括號* (2) 0n隨機重復(fù)0到N次,00=。(3)在方括號中顯示01。也就是說,是否顯示是可選的。4.5預(yù)測分析程序使用高級語言遞歸過程描述遞歸下降分析器。只有存在實現(xiàn)牙齒過程的編譯系統(tǒng)時才有意

6、義。實施LL(1)分析的另一有效方法是使用分析表和堆棧進行協(xié)作控制。我們現(xiàn)在介紹的預(yù)測分析程序就是這種類型的LL(1)分析器。在牙齒部分,對于給定的語法,必須掌握構(gòu)成每個非終結(jié)器的FIRST和FOLLOW集合。第四章語法分析-由上而下分析,要了解LL(1)預(yù)測分析表的結(jié)構(gòu),請參閱4。5.1預(yù)測分析程序工作流程(P76)和4。5.2預(yù)測分析表結(jié)構(gòu)(P78)?,F(xiàn)在,為了讓同學(xué)理解,我舉幾個茄子的例子。范例4 .7對于語法,ete te | T ft * ft | F(E)| I我們不是終結(jié)點,而是每個FIRST和FOLLOW集合解決方案(first (e)=(,I follow (e)=),# i

7、ii(3)如果是FIRST(),則對所有b FOLLOW(A)將A添加到Ma,b。(4)將所有未定義的MA,a“顯示錯誤”4.6 LL(1)在分析中處理錯誤,第4章語法分析-自上而下分析GS: SSa|Nb|c (1) N Sd|Ne|f (2)S NbS |cS 1 S aS| 2 s替換(2)n ne P begin d 3360 x end x d : x | sy 3360 sy |語法LL(1)創(chuàng)建分析表。解決方案:如果鄭智薰終結(jié)器僅包含P,X,Y FIRST(Y),則需要FOLLOW(Y),如果FOLLOW(Y)=FOLLOE(X)=end,則有LL(1)表。begind3360 end s # p .解決方案:觀察句子可以分為發(fā)現(xiàn)兩部分。1na0n和1ma0m兩部分中的符號數(shù)N和M沒有約束關(guān)系。S AB A 1A0 |1a0 B 1B0 |a生產(chǎn)式A 1A0 |1a0的兩個候選FIRST(1A0)FIRST(1a0)=1,因此上述語法不是LL(1)語法,第4章語法分析-自上而下分析,示例4中有GS: SaBc | bAB AaAb | b Bb |配置LL(1)

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論