




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章語法分析—自上而下分析
4.1語法分析器的功能4.2自上而下分析面臨的問題4.3LL(1)分析法4.4遞歸下降分析程序構造(略)4.5預測分析程序4.6LL(1)分析中的錯誤處理(略)1§4.1語法分析器的功能1、任務:在詞法分析識別出單詞符號串的 基礎上,分析并判定程序的語法 結構是否符合語法規則。2、語法分析器的地位:單詞符號取下一單詞符號語法分析樹符號表詞法分析器語法分析器編譯程序后續部分源程序2§4.1語法分析器的功能3、本質:按文法的產生式,識別輸入符 號串是否為一個句子。4、語法分析方法分類:
自上而下分析法 自下而上分析法 3§4.2自上而下面臨的問題一、基本思想:1、自上而下:從文法的開始符號出發,向下 推導,推出句子2、主旨:對任何輸入串,試圖用一切可能的 辦法,從開始符號出發,自上而下 地為輸入串建立一棵語法樹。4§4.2自上而下面臨的問題二、舉例: 自上而下方法的分析過程本質上是一種試探過程,是反復使用不同產生式謀求匹配輸入串的過程。5§4.2自上而下面臨的問題SxA
ySxAy**SxAy*例:文法SxAy A**|* 輸入串α:x*y6§4.2自上而下面臨的問題實現上述帶回溯試探發的簡單途徑: 讓每個非終結符對應一個遞歸子程序。每個這種子程序可作為一個布爾過程。一旦發現它的某個候選與輸入串相匹配,就用這個候選去擴展語法樹,并返回“真”值;否則,保持原來的語法樹和IP值不變,并返回“假”值。7§4.2自上而下面臨的問題三、困難和缺點1、文法的左遞歸性問題使自上而下的分析過程陷入無限循環2、回溯問題3、虛假匹配難以消除4、當最終報告分析不成功時,難于知道輸入串中出錯的確切位置5、采用了一種窮盡一切可能的試探法,效率很低,代價極高8§4.3LL(1)分析法一、左遞歸的消除:1、規則:(直接左遞歸消除)PPα|βPPα1|Pα2|…Pαm|β1|β2|…|βn PβP’ P’αP’|? Pβ1p’|β2P’|…|βnP’ P’α1P’|α2P’|…|αmP’|?9§4.3LL(1)分析法例題:已經文法:EE+T|T TT*F|F F(E)|iETE’E’+TE’|?TFT’T’*FT’|?F(E)|i10§4.3LL(1)分析法2、消除左遞歸:(1)把文法G的所有VN按任一種順序排列成P1,P2,…,Pn;按此順序執行;(2)FORi=1TonDo Begin Forj:=1Toi-1Do 把形如PiPjγ的規則改寫成 Piδ1γ|δ2γ|…|δkγ 其中Pjδ1|δ2|…|δk是關 于Pj的所有規則; 消除關于Pi規則的直接左遞歸性 End11§4.3LL(1)分析法(3)化簡由(2)所得的文法,即去除那些從開 始符號出發永遠無法到達的非終結符的產 生規則例題:(間接左遞歸)已知文法G:SQc|c QRb|b RSa|a 試消除其左遞歸?解答12二、消除回溯,提取左因子§4.3LL(1)分析法1、消除回溯必須保證:
對文法的任何非終結符,當要它去匹配輸入串時,能夠根據它所面臨的輸入符號準確地指派它的一個候選去執行任務,并且此候選的工作結果應是確信無疑的。即:
若此候選獲得成功匹配,那么,這種匹配決不會是虛假的; 若此候選無法完成匹配任務,則任何其它候選也肯定無法完成。13§4.3LL(1)分析法例:Aα1|α2|…|αn
設A所面臨的第一個輸入符號為a,若A能根據不同的輸入符號指派相應的候選αi作為全權代表去執行任務,那就肯定無需回溯。在這里A已不再是讓某個候選去試探性地執行任務,而是根據所面臨的輸入符號a準確地指派唯一的一個候選。14§4.3LL(1)分析法2、當不得回溯時,對文法有什么要求? ?非終結符A的各個候選的首符集的交集均為空。分析:Aαfirst(α)={a|α?a…,a∈VT} 若α??,則規定?∈first(α)即:first(α)是α的所有可能推導的開頭終結符或可能的?。此時,當要求A匹配輸入串時,A根據它所面臨的第一個輸入符號a,準確地指派某一個候選前去執行任務;這個候選就是那個終結首符集含a的α. **15§4.3LL(1)分析法3、A、事實上,許多文法均存在這樣的非終結符,其所有候選的終結首符集并非兩兩不相交。 例如:語句if條件then語句else語句 if條件then語句B、任何把一個文法改造成任何非終結符的所有 候選首符集兩兩不相交呢?提取公共左因子16§4.3LL(1)分析法代價:大量引進新的非終結符和?_產生式例:Aδβ1|δβ2|…|δβn|γ1|γ2|…|γm (其中,每個γ不以δ開頭)? AδA’|γ1|γ2|…|γm A’β1|β2|…|βn經過反復提取坐因子,就能把每個非終結符(包括新引進者)的所有候選首符集變成兩兩不相交.17§4.3LL(1)分析法三、分析條件1、當一個文法不含左遞歸,并且滿足每個非終結符的所有候選首符集兩兩不相交的條件,是不是就一定能進行有效的自上而下分析了呢?18§4.3LL(1)分析法例:文法 EE+T|T TT*F|F F(E)|i經消去直接左遞歸后變成 ETE’
E’+TE’|? TFT’ T’*FT’|? F(E)|iETE’FT’+E’ Ti ? ?
FT’
i?輸入串:i+i; 如右圖所示19§4.3LL(1)分析法2、由上分析是不是就意味著:當非終結符A面臨輸入符號a,且a不屬于A的任意候選首符集,但A的某個候選首符集包含?時,就一定可以使A自動匹配?分析:只有當a是在文法的某個句型中允許跟在A后的終結符時,才可能允許A自動匹配,否則,a在這里的出現是一種語法錯誤。20§4.3LL(1)分析法Follow(A)={a|A?…Aa…,a∈VT}若S?…A,則規定#∈follow(A)即:follow(A)是所有句型中出現在緊接A之后的終結符或“#”。當A面臨輸入符號a,且a?first(A),但?∈first(A),只有當a∈first(A)時,才可能允許A自動匹配。 **21§4.3LL(1)分析法3、構造不帶回溯的自上而下分析的文法的條件:(1)文法不含左遞歸(2)文法中每一個非終結符A的各個產生式 的候選首符集兩兩不相交即:若Aα1|α2|…αn 則first(αi)∩first(αj)=Φ (i≠j)(3)對文法中的每個非終結符A,若它存在某個候 選首符集包含?,則first(A)∩follow(A)=Φ若一個文法G滿足以上條件,則稱該文法G為LL(1)文法22§4.3LL(1)分析法4、對LL(1)文法,可對其輸入串進行有效的無回溯的自上而下分析:Aα1|α2|…|αn對非終結符A進行匹配,此時面臨的輸入符號為a(1)若a∈first(αi),則指派αi去執行匹配任務(2)若a不屬于任何一個候選首符計,則若?∈first(αi
),且a∈follow(A),則讓A與?自動匹配否則,a的出現是一種語法錯誤23§4.5預測分析程序——即LL(1)分析法介紹一、構造First和Follow1、構造First(x),x∈VT∪VN連續使用下述規則,直至每一個集合First不再增大為止。規則:(1)若X∈VT,則FIRST(X)={X}。(2)若X∈VN,且有產生式Xa…,則把a加入到FIRST(X)中;若X?也是一條產生式,則把?也加到FIRST(X)中。24§4.5預測分析程序——即LL(1)分析法介紹(3)若XY…是一個產生式且Y∈VN,則把FIRST(Y)中的所有非?—元素都加到FIRST(X)中;若XY1Y2…Yk是一個產生式,Y1,…Yi-1都是非終結符,而且,對于任何j,1≤j≤i-1,FIRST(Yj)都含有?(即Y1…Yi-1??),則FIRST(Yi)中的所有非?—元素都加到FIRST(X)中;特別是,若所有的FIRST(Yj)均含有?,j=1,2,…,k,則把?加到FIRST(X)中。*25§4.5預測分析程序——即LL(1)分析法介紹2、構造Follow(A),A∈VN連續使用下述規則,直至每一個集合Follow不再增大為止。規則:(1)對于文法的開始符號S,置#于FOLLOW(S)中;(2)若AαBβ是一個產生式,則把FIRST(β)\{?}加至FOLLOW(B)中;(3)若AαB是一個產生式,或AαBβ是一個產生式而β??(即?∈FIRST(β)),則把FOLLOW(A)加至FOLLOW(B)中。26§4.5預測分析程序——即LL(1)分析法介紹舉例:對于文法EE+T|T;TT*F|F;F(E)|i我們可構造出每個非終結符的FIRST和FOLLOW集合:FIRST(E)={(,i} FOLLOW(E)={),#}FIRST(E’)={+,?} FOLLOW(E’)={),#}FIRST(T)={(,i} FOLLOW(T)={+,),#}FIRST(T’)={*,?} FOLLOW(T’)={+,),#}FIRST(F)={(,i} FOLLOW(F)={*,+,),#}27§4.5預測分析程序——即LL(1)分析法介紹二、構造分析表構造分析表M的算法是:(1)對文法G的每個產生式A執行第2步和第3步;(2)對每個終結符a∈FIRST(α),把Aα加至M[A,a]中;(3)若?∈FIRST(α),則對任何Bfollow(A)把Aα加至M[A,b]中;(4)把所有無定義的M[A,a]標上“出錯標志”。28§4.5預測分析程序——即LL(1)分析法介紹舉例:文法EE+T|T;TT*F|F;F(E)|i的 LL(1)分析表如下所示i+*()#EETE’ETE’E’E’+TE’E’?E’?TTFT’TFT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業兼職勞動合同模板大全
- 2025《鋼材購銷合同》
- 2025新房購買委托協議樣本,新房購買合同范本
- 2025汽車租賃委托合同格式
- 《2025智能設備購銷合同書》
- 2025年文山客貨運從業資格證考試教材
- 2025年滄州貨運從業資格證模擬考試題目
- 2025年武威年貨運資格證考試題
- 連鎖店店長管理方法
- 第十五章含硫和含磷有機化合物
- 倉儲設備操作安全操作培訓
- 上海電機學院計算機C語言專升本題庫及答案
- 幼兒園公開課:大班語言《相反國》課件(優化版)
- 2023年寧波房地產市場年度報告
- 員工身心健康情況排查表
- 模擬小法庭劇本-校園欺凌
- 危險化學品經營企業安全評價細則
- 哈利波特與死亡圣器下雙語電影臺詞
- 10以內數字的分解和組成
- 課堂教學技能講座課件匯編
- 湖北2022年中國郵政儲蓄銀行湖北省分行社會招聘考試參考題庫含答案詳解
評論
0/150
提交評論