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

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

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

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


例:

對於文法:

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 的分析

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

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


 

算符優先分析法:

自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子表示ab的優先級相等
自下而上的語法分析和算符優先分析法 - 小鏡子~ - 菜園子表示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$的分析:

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

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


發佈了61 篇原創文章 · 獲贊 23 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章