自下而上的語法分析和算符優先分析法


自下而上的語法分析:(規約)

由葉節點到根節點,構造樹

規范規約:最左規約(對應於最右推導)

 

 

例:

對於文法:

SaABe

AAb|b

Bd

 

abbde的規約過程:

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子

 

 

 

對應的最右推導:

SaABeaAdeaAbdeabbde

 

 

 

存在的問題:遇到Ab的時候,有兩種可能AAbAb

解決:

 

短語的概念:

如果S=> αAw=>αβw,則稱β為相對於A的、句型αβ的短語

 

直接短語

     若A→ β為一產生式,則稱β為相對於A的、句型αβ的直接短語

例:

句型aAbde所包含的直接短語:

      Abd

 

句柄:

最左直接短語是句柄

例:句型aAbde所包含的句柄:Ab

 

素短語

 ①它首先是一個短語②至少含有一個終結符③除自身外,不再含有其它的素短語

最左素短語LPP ( leftmost Prime Phrase)

算符優先分析過程中歸約的是最左素短語

 

例:關於文法EE+T|T

          T→T*F|F

          F→(E)|id

對於句型F+F*id3

 

 

語法樹是:

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子
 

 

 

短語:F1,  F2,  id3,  F2*id3,  

            F1+F2*id3

直接短語: F1,  F2,  id3

句柄: F1

最左素短語: id3

 

 

 

 

 

用棧實現移進歸約分析

關於文法:

        EE+T|T

        TT*F|F

        F(E)|id

對於串 id1*id2+id3 的分析

方法:對於符號棧中的非終結符,能規約就規約,不能規約就從輸入串中移入符號

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子
 
 

 

 

 

 

 

算符優先分析法:

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子 表示 a b 的優先級相等
自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子 表示 a 的優先級不如 b
自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子 表示 a 的優先級比 b

注:

算術關系“<,=”和“>”與優先關系具有十分不同的性質。例如,a<·b並不一定意味着b·>a

例如:+ <·(,但(· >+不一定存在。 具體如:2+(3+5)

 

 

 

算符優先關系矩陣:

關於文法

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子
的優先關系矩陣:

 

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子
 

 

 

 

 

 

FIRSTVTLASTVT集:

FIRSTVT(P)={a|P=>a…或P=>Qa,

LASTVT(P)={a|P=> … aP=>aQ

 

 

上面文法的FIRSTVTLASTVT集:

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子

 

 

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子
 

 

 

 

關於上面文法對於串id+id*id$的分析:

方法:如果<· (表示當前優先級不夠)就移進,如果·或者=就規約

 

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM