版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
編譯原理第四章語法分析和語法分析程序本章內(nèi)容自頂向下分析和自底向上分析圍繞分析器的自動(dòng)生成展開難重點(diǎn)語法分析是編譯程序的核心部分。語法分析的作用是識(shí)別由詞法分析給出的單詞符號序列是否是給定文法的正確句子(程序)目前語法分析常用的方法有自頂向下(自上而下)分析和自底向上(自下而上)分析兩大類。自頂向下分析法:
從文法的開始符號出發(fā),反復(fù)使用文法的產(chǎn)生式,尋找與輸入符號串匹配的推導(dǎo)。自底向上分析法:
從輸入符號串開始,逐步進(jìn)行歸約,直至歸約到文法的開始符號。自底向上的語法分析例:文法G:S→cAd
A→ab
A→a
識(shí)別輸入串w=cabd是否是該文法的句子
S A A cabd cabd cabd關(guān)?。壕浔拇_定自頂向下分析的語法分析例:文法 SaCb Ccd|c
為輸入串w=acb建立分析樹SSSaCbaaCCbbcdc試探的過程問題:會(huì)產(chǎn)生回溯–導(dǎo)致效率低自頂向下分析法的另一問題若有文法G6[S]:
(1)S→Sa
(2)S→b
推導(dǎo)baa#
問題:左遞歸—可能導(dǎo)致死循環(huán)SbSSaSSabSSaSaSSaSab自頂向下分析法需要解決的問題左遞歸對文法進(jìn)行改造回溯如何唯一地確定所采用的產(chǎn)生式?-LL(1)文法當(dāng)拒絕w時(shí),只能知道w不是句子,不知出何錯(cuò)及出在何處本節(jié)將主要介紹確定的自頂向下分析思想和對文法的要求。確定的自頂向下分析要求文法滿足LL(1)文法。
本節(jié)主要介紹內(nèi)容為:
LL(1)文法的定義和判別
非LL(1)文法的等價(jià)變換
確定的自頂向下分析方法
遞歸子程序法
預(yù)測分析方法4.1自頂向下的語法分析消除文法的左遞歸帶回溯的遞歸子程序回溯的消除及LL(1)文法4.1.1消除文法的左遞歸例:AA|A的解是:*引入新的非終結(jié)符A’,令其產(chǎn)生*,則有:AA’ A’A’|4.1.2帶回溯的遞歸子程序?qū)τ谖姆ǖ拿總€(gè)非終結(jié)符,根據(jù)其各候選式的結(jié)構(gòu),為其建立一個(gè)遞歸的子程序(函數(shù)),用于識(shí)別該非終結(jié)符所表示的語法范疇例如,產(chǎn)生式E’+TE’,相應(yīng)的子程序(函數(shù))為expr_prime(){ if(match(PLUS)){ advance(); term(); expr_prime(); } }4.1.3回溯的消除及LL(1)文法基本原理First集及Follow集的構(gòu)造分析器的構(gòu)造例:ETE’E’ATE’|ε TFT’T’MFT’|ε
F(E)|iA+|-M*|/(4.1)’對i+ii進(jìn)行預(yù)測分析的過程4.1.4某些非LL(1)文法的改造方法:消除左遞歸反復(fù)提取左因子例:EE+T|T T(E)|a(E)|a
經(jīng)改造后可得文法:
ETE’ E’+TE’| TaT’|(E) T’(E)|
這是一個(gè)LL(1)文法關(guān)于LL(1)的一些結(jié)論能由LL(1)文法產(chǎn)生的語言稱為LL(1)語言。它們已被證明具有許多重要特性,主要有:(1)任何LL(1)文法都是無二義性的;(2)左遞歸文法是非LL(1)的;(3)存在一種算法,它能判定任意文法是否為LL(1)的;(4)存在一種算法,它能判定任意兩個(gè)LL(1)文法是否等價(jià);(5)CFL是否是LL(1)語言是不可判定的;(6)非LL(1)語言是存在的。若在分析過程中,每步向前掃描k個(gè)符號來確定選用的產(chǎn)生式,此分析方法稱為是LL(k)分析。此法極少用,故從略。習(xí)題判斷下列文法是否是LL(1)文法,如果是,請寫出LL(1)分析表;如果不是,請改造成LL(1)文法。SaFA|+aFAA+aFA|+B|F*aBBF|4.2自底向上的語法分析優(yōu)先分析法及LR分析法問題:如何確定句型的句柄如何正確地選擇產(chǎn)生式進(jìn)行歸約建立語法樹4.2.1優(yōu)先文法 簡介4.2.2LR分析法LR分析:自左至右掃描的自底向上的分析LR分析對文法要求很少,效率極高,且能及時(shí)發(fā)現(xiàn)錯(cuò)誤,是目前最廣泛使用的方法;一般用CFG描述的語言均可用LR分析法先介紹LR分析器的邏輯結(jié)構(gòu)及工作原理,再分別介紹幾種LR分析器(即LR(0),SLR(1)和LR(1))的構(gòu)造(一)LR分析器的邏輯結(jié)構(gòu)及工作原理LR分析器=輸入符號串+分析棧+總控程序+分析表例:文法G[L]:1.LE,L 2.LE 3.Ea 4.Eb分析表狀態(tài)ACTIONGOTOab,#LE0s3s4
121
acc
2
s5r2
3
r3r3
4
r4r4
5s3s4
626
r1
例:對符號串“a,b,a”的分析過程四個(gè)分析動(dòng)作:移進(jìn)、歸約、接受、報(bào)錯(cuò)對符號串“a,b,a”的分析過程步驟狀態(tài)棧中符號余留符號分析動(dòng)作下一狀態(tài)10#a,b,a#s33203#a,b,a#r3GOTO[0,E]=2302#E,b,a#s554025#E,b,a#s4450254#E,b,a#r4GOTO[5,E]=260252#E,E,a#s55702525#E,E,a#s338025253#E,E,a#r3GOTO[5,E]=29025252#E,E,E#r2GOTO[5,L]=610025256#E,E,L#r1GOTO[5,L]=6110256#E,L#r1GOTO[0,L]=11201#E#
(二)LR(0)分析表的構(gòu)造一些術(shù)語規(guī)范句型的活前綴將棧內(nèi)符號與未掃描的輸入串拼接起來,可得一規(guī)范句型.即棧內(nèi)符號串總是規(guī)范句型的前綴,且不含句柄右側(cè)的符號.把具有上述性質(zhì)的符號串稱為規(guī)范句型的活前綴LR(0)項(xiàng)目(看詳細(xì)內(nèi)容)LR(0)項(xiàng)目活前綴:包含全部句柄,則:進(jìn)行歸約:A,記為A;句柄中,則:應(yīng)移進(jìn)(句柄的后半部分),A12不含句柄,則:期望移進(jìn)一產(chǎn)生式的右部:A我們把右部添加了一個(gè)“”的產(chǎn)生式,稱為LR(0)項(xiàng)目LR(0)項(xiàng)目:歸約項(xiàng)目:A→接受項(xiàng)目:S’→S移進(jìn)項(xiàng)目:AX,(XVT,可以是空串)待約項(xiàng)目:AX,(XVN,可以是空串)識(shí)別所有規(guī)范句型全部活前綴的DFA例:文法G[S]:
S→A|BA→aAb|c,B→aBb|dLR(0)分析表的構(gòu)造I0:S’→·SS→·AS→·BA→·aAbA→·cB→·aBbB→·dI1:S’→S·SI2:S→A·AI3:S→B·BI4:A→a·AbA→·aAbA→·cB→a·BbB→·aBbB→·daI5:A→c·ccI6:A→d·ddaI7:A→aA·bI9:B→aB·bI8:A→aAb·I10:B→aBb·BAbb識(shí)別G[S]全部活前綴的DFAG[S]的LR(0)分析表
ACTIONGOTOabcd#SAB0s4
s5s6
1231
acc
2r1r1r1r1r1
3r2r2r2r2r2
4s4
s5s6
795r4r4r4r4r4
6r6r6r6r6r6
7
s8
8r3r3r3r3r3
9
s10
10r5r5r5r5r5
習(xí)題文法G[B]是否是LR(0)文法?如果是,請畫出LR(0)分析表;如果不是,請說明原理:B→bD;Se D→D;d|d S→s;S|sSLR(1)分析表的構(gòu)造習(xí)題文法G[S]是否是LR(0)文法?如果是,請畫出LR(0)分析表;如果不是,請說明原理:S→CbBAA→Aab|abB→C|DbC→aD→aLR(1)分析表的構(gòu)造I0:S’→·S,#S→·CbBA,#C→·a,bI1:S’→S·,#SI3:C→a·,baI2:S→C·bBA,#CI4:S→Cb·BA,#B→·C,aB→·Db,aC→·a,aD→·a,bbI5:S→CbB·A,#A→·Aab,#/aA→·ab,#/aI6:B→C·,aBCI8:C→a·,aD→a·,baI7:B→D·b,aI9:B→Db·,aDbI11:A→a·b,#/aI12:A→ab·,#/aabI10:S→CbBA·,#A→A·ab#/aAI13:A→Aa·b,#/aI14:A→Aab·,#/aab文法G[S]的LR(1)項(xiàng)目集及DFA分析表實(shí)例狀態(tài)ACTIONGOTOabcSABCD0s3
1
2
1
acc
2
s4
3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育學(xué)題庫練習(xí)試卷B卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)綜合練習(xí)試卷B卷附答案
- 2023年眼鏡類產(chǎn)品及其零部件和眼鏡盒資金需求報(bào)告
- 第41章 氨基甙類抗生素課件
- 社區(qū)消防安全集中除患攻堅(jiān)大整治工作總結(jié)
- 運(yùn)動(dòng)會(huì)入場式方案
- 2024年拍賣交易協(xié)議模板集錦
- 2024年設(shè)計(jì)師服務(wù)結(jié)束協(xié)議模板
- 2024年度防洪排水項(xiàng)目施工協(xié)議
- 2024年勞動(dòng)協(xié)議格式與條款匯編
- 《2023級學(xué)生手冊》獎(jiǎng)、懲資助、文明部分學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 第15課 兩次鴉片戰(zhàn)爭 教學(xué)設(shè)計(jì) 高中歷史統(tǒng)編版(2019)必修中外歷史綱要上冊+
- 期末知識(shí)點(diǎn)復(fù)習(xí) 2024-2025學(xué)年統(tǒng)編版語文九年級上冊
- 《江蘇省一年級上學(xué)期數(shù)學(xué)第二單元試卷》
- 上海市普通高中學(xué)業(yè)水平合格性考試地理基礎(chǔ)知識(shí)點(diǎn)復(fù)習(xí)提綱
- 廢舊風(fēng)機(jī)葉片循環(huán)利用項(xiàng)目可行性研究報(bào)告-積極穩(wěn)妥推進(jìn)碳達(dá)峰碳中和
- 中醫(yī)腦病科缺血性中風(fēng)(腦梗死恢復(fù)期)中醫(yī)診療方案臨床療效分析總結(jié)
- 中國人工智能系列白皮書一元宇宙技術(shù)(2024 版)
- 《甘肅省中醫(yī)康復(fù)中心建設(shè)標(biāo)準(zhǔn)(2021版)》
- 高中英語外刊-小貓釣魚50篇
- PowerPoint培訓(xùn)教程課件
評論
0/150
提交評論