《編譯原理》求短語,直接短語,句柄,素短語,最左素短語 - 例題解析


《編譯原理》求短語,直接短語,句柄,素短語,最左素短語 - 例題解析

筆記

(一)明確概念:

名稱 概念
短語 定義: 若 S 為文法 G 的開始符號,αβδ 是該文法的一個句型,即 S ⇒* αβδ,且有 A ⇒+ β,則稱 β 是句型 αβδ 相對於非終結符 A 的短語。語法樹: 在語法樹中表示所有分支結點對應子樹,短語即子樹葉子對應的符號。注: 子樹包括語法樹本身,及句型本身也可以稱為短語。
直接短語 定義: 若 S ⇒* αβδ,且文法中包含產生式 A → β,則稱 β 是句型 αβδ 相對於非終結符 A 的直接短語。語法樹: 在語法樹中表示為該短語只有上下相鄰父子兩代
句柄 “可規約串”,句柄對應某個產生式的右部,是某個,但不是任意一個。作為一種規約對象,句柄表示最左直接短語語法樹: 在語法樹上,則表示為最左邊的只包含相鄰父子節點的短語(最左直接短語)
素短語 定義: 是指一個短語至少包含一個終結符,並且除它自身之外不再包含其他素短語
最左素短語 定義: 最左素短語就是句型最左邊的素短語,是算符優先分析法的規約對象。語法樹: 通過語法樹分析時,要注意先判斷是否為素短語,再找相對最左端的素短語。

例題1:求短語,直接短語,句柄

給定句型:

T*P↑(T*F)

給定文法:

G[T]:
T → T*F|F
F → F↑P|P
P → (T)|i

解析:

推導步驟為:

T ⇒ T*F
⇒ T*F↑P
⇒ T*P↑P
⇒ T*P↑(T)
⇒ T*P↑(T*F)

畫出語法樹為:

該語法樹的 5 個子樹及 5 個短語為:

求直接短語方法: 該句型的語法樹有兩顆直接子樹(最左邊的兩顆子樹),由這兩顆直接子樹的葉子結點組成的符號串(或者說只包含兩層的子樹葉子結點對應的),就是句型的兩個直接短語,直接短語 P 和 T*F。

求句柄: 因為 P 相對 T*F,在語法樹上的左側,所以句柄是 P

最終結果:

類型 內容
短語 5 個 P,T*F,(T*F),P↑(T*F),T*P↑(T*F)
直接短語 2 個 P,T*F
句柄 P

例題二:求素短語,最左素短語

給定句型:

FF↑*a*

給定文法:

G[T]:
T → T*F|F
F → F↑P|P
P → (T)|i

解析:

推導步驟為:

T ⇒ TF*
⇒ TF*F*
⇒ TF↑\F*
⇒ TF↑
a*

畫出語法樹:

最終結果:

根據定義可以找出素短語有:

類型 內容
素短語 2 個 F↑,a
最左素短語 F↑


免責聲明!

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



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