版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 1. 什麼是LL(1)分析法? 5.3.1 LL(1)分析法基本概念 5.3 LL(1)分析法 LL(1) 分析法的基本要點(diǎn)有三: 利用一個(gè)分析表,登記如何選擇產(chǎn)生式的知識(shí); 利用一個(gè)分析棧,記錄分析過(guò)程; 此分析法要求文法必須是 LL(1)文法。 LL(1)分析法是指從左到右掃描、最左推導(dǎo)(LL)和只查看一個(gè)當(dāng)前符號(hào)(括號(hào)中的 1)之意; LL(1)分析法又稱預(yù)測(cè)分析法,與遞歸子程序法同屬于自頂向下確定性語(yǔ)法分析方法; 2. LL(1)分析過(guò)程示例 G(Z):Z-dAZ | bAc A-aA | 棧 當(dāng)前符號(hào) 剩余序列 棧操作 選擇推導(dǎo)產(chǎn)生式后,為什麼要逆序壓棧? 當(dāng)棧頂為A,當(dāng)前單詞為c
2、時(shí),為什么選擇 A ?討論逆序壓棧# c A# c# c A# c# c A b A aba c # 選擇 ZbAcba c #匹配 bac # 選擇AaAac #匹配 a c# 選擇A c#匹配 c#正確結(jié)束 Z查分析表 對(duì)符號(hào)串: = bac # 的分析過(guò)程: d A Z # c b a分析表: 設(shè)有文法G(Z), # 棧底標(biāo)記和結(jié)束標(biāo)記;#棧結(jié)束: 若 棧頂符=a 且 當(dāng)前符為a; 則 pop,NEXT(w);# Z 開(kāi)始:棧 ; NEXT(w);當(dāng)前符 w= # 重復(fù)執(zhí)行 、 ,直到棧中只剩 # 為止: 即:棧調(diào)整:# a# 即:棧調(diào)整:# A# a 3. LL(1)分析法算法概要 若
3、 棧頂符=A 且 當(dāng)前符 w=a 且 有產(chǎn)生式: Aa, 則 POP,PUSH(a)R ; 逆序壓棧! 否則,錯(cuò)誤處理!5.3.2 LL(1)文法及其判定1. 首符號(hào)集合、后繼符集合與選擇符集合 設(shè) G(Z)=(VN, VT, Z, P),A- P,則 first() , first()follow(A), select(A-)=*【注】 (可空), (不可空); 若 = 則 first()= ; 設(shè) #為輸入串的結(jié)束符,則 #follow(Z); =*first()= t| t,tVT =*follow(A)= t| Z At,tVT =*【注】 求 follow(A) 要點(diǎn): 查所有右部含
4、有A的產(chǎn)生式: B - A 若 不空時(shí) , 則 first()follow(A) ; 若 取空時(shí) , 則 follow(B)follow(A) ; 若 = 時(shí) , 則 follow(B)follow(A)。select()= first(dAZ)=d select()= first(bcA)=bselect()= first(aA)=a select()= first()follow(A)= b,d,# 即: B - AG(Z): Z - dAZ | bcA A - aA | 【例5.4】 求文法產(chǎn)生式的選擇集合:則有: 產(chǎn)生式序號(hào) 【定義】 LL(1)文法是指文法中,具有相同左部的各產(chǎn)生式,
5、其選擇集合不相交。 select()= d ;2. LL(1)文法及其判定 LL(1)文法可確保 遞歸子程序法 和 LL(1)分析法 的正確運(yùn)用?!纠?.5】 G(Z): Z - dAZ | bcA A - aA | select()= bselect()= a ;即: db= 又 ab,d,#= select()= b,d,# G(Z) 是 LL(1)文法。 LL(1)分析法示例:【例5.6】 G(Z):Z - Z b | a 【注】上述文法可進(jìn)行等價(jià)變換,消除左遞歸得: select()= a select()= a 選擇集合相交 具有左遞歸的文法,一定不是LL(1)文法! G(Z)是LL
6、(1)文法,可以用 LL(1)分析法。 select()= b select()= # 選擇集合不相交G(Z): Z - aA , A - bA | 列: 終結(jié)符 | #5.3.3 LL(1)分析器設(shè)計(jì)(實(shí)現(xiàn)) 應(yīng)用時(shí),可用下列函數(shù)查表,獲取相應(yīng)產(chǎn)生式: L(棧頂符,當(dāng)前符)= 產(chǎn)生式序號(hào)【結(jié)構(gòu)設(shè)計(jì)】. LL(1)分析表的構(gòu)造: LL(1)控制程序+LL(1)分析表LL(1)分析表是存儲(chǔ)文法選擇集合的知識(shí)表。 行: 非終結(jié)符表項(xiàng):產(chǎn)生式序號(hào) Z # a A d A Z # c b a如 G(Z):Z - aAb | AcA select()=a; 【算法設(shè)計(jì)】 A - dA | i則 L( A
7、 , a ):=A - i 求文法選擇集合,確認(rèn) LL(1)文法; 依次取產(chǎn)生式:select()=d;select()=c,d ; select()= b,c,#;是 LL(1)文法,LL(1)分析表:不相交不相交若 a select( ) i NEXT(w)ynerrnynnerr PUSH(#),PUSH(Z) POP(x)y開(kāi)始結(jié)束xVTnerryxVNw = #x = wy查L(zhǎng)L(1)分析表: L( x ,w )= ? 空?. LL(1)分析法控制程序:PUSH ( iR )把產(chǎn)生式 i 右部逆序壓棧把棧頂符彈入到變量x中! LL(1)分析法綜合示例:【例5.7】 G(E): E -
8、 T | E 1 T T - F | T 2 F F - i | ( E ) 此文法含左遞歸,不是LL(1)文法;經(jīng)文法變換(消除左遞歸)后可得:G(E): E - T E E- 1 T E | T - F T T- 2 F T | F - i | ( E ) 其中: 1( + ,- ) , 2 ( * ,/ ) 這是LL(1)文法嗎?select()=first(TE)= i,( 1.求G(E) 的選擇集合: 三對(duì)選擇集合兩兩不相交,G(E): E - T E E- 1 T E | T - F T T- 2 F T | F - i | ( E ) E -E-T -T-F -select()=
9、first(1TE)= 1 select()=follow(E)= ),# select()=first(FT)= i,( select()=first(2FT)= 2 select()=follow(T)= 1 ,),# select()=first(i)= i select()=first(E)= ( G(E)是 LL(1) 文法。(接上頁(yè)) 2.構(gòu)造 LL(1) 分析表: 花括號(hào)內(nèi)是求得的選擇集合! F T T E E ) ( # 2 1 iT- 2 FT 2 | 1,),# F - i i | (E) ( E - TE i,( E- 1 TE 1| ),# T - FT i,( G(E
10、):(接上頁(yè)) 符號(hào)串 a+b# 的LL(1)分析過(guò)程:查分析表: 操 作剩余序列 w x 分析棧# ( + 匹配成功 ) b # + 1# E T 1 : PUSH(ET1) b # + E# E : PUSH ( ) + b # + T# E T : PUSH(i) + b # a F T F ( a 匹配成功 ) + b # a i i : PUSH(TF) + b # a T E T :PUSH(ET) a + b # a E# E : PUSH(TF) b # b T# E T ok # # : PUSH ( ) # # T # E T : PUSH ( ) # E# E ( b 匹配成功) # b i i : PUSH(i) # b F T F# E# E T# E # E T練習(xí)題:【
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《生物安全管理要求》課件
- 《生物質(zhì)碳化技術(shù)》課件
- 2025年宇宙生命之謎
- 2024-2025學(xué)年浙江省麗水市“五校高中發(fā)展共同體”高一上學(xué)期10月聯(lián)考?xì)v史試題(解析版)
- 單位管理制度集粹匯編【員工管理篇】
- 2025年高考數(shù)學(xué)一輪復(fù)習(xí)之常用邏輯用語(yǔ)
- 單位管理制度匯編大合集【員工管理】十篇
- 單位管理制度合并匯編職工管理十篇
- 2024春節(jié)放假安全風(fēng)險(xiǎn)應(yīng)急預(yù)案范文(32篇)
- 《穴盤(pán)育苗技術(shù)》課件
- 針灸推拿學(xué)100512練習(xí)題庫(kù)與參考答案
- 常用截面慣性矩與截面系數(shù)的計(jì)算
- 行車工考試試題
- 小兒頭皮靜脈輸液課件
- 電力電纜高頻局放試驗(yàn)報(bào)告
- 肺病科主任年度述職匯報(bào)
- 2023年福建省晉江市數(shù)學(xué)七年級(jí)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 水利水電工程基礎(chǔ)坑隱蔽工程驗(yàn)收證書(shū)
- 余熱發(fā)電工程總施工組織設(shè)計(jì)方案
- 建設(shè)工程監(jiān)理費(fèi)計(jì)算器(免費(fèi))
- 希望點(diǎn)-列舉法
評(píng)論
0/150
提交評(píng)論