基礎概念
- 短語: S 爲文法 G 的開始符號,αβδ 是該文法的一個句型。若 ,,則稱 β 是句型 αβδ 相對於非終結符 A 的短語。在語法樹中,相當於子樹的末端結點形成的符號串
- 直接短語:又稱簡單短語。若,且有產生式,則稱 β 是句型 αβδ 相對於非終結符 A 的直接短語。在語法樹中,相當於簡單子樹(只有一層分支的子樹) 的末端結點形成的符號串.
- 句柄:也稱爲最左直接短語,即直接短語中在語法樹中位於最左邊的爲該句型的句柄
- 素短語:是指一個短語至少包含一個終結符,並且除它自身之外不再包含其他素短語
- 最左素短語:語法樹最左邊的素短語稱爲最左素短語
語法樹
語法樹,也稱語法分析樹,是針對上下文無關文法,用來表示一個句型的生成過程的一種描述手段,是推導的圖形表示形式。
例如,對於產生式A→XYZ,在語法樹中就可以這樣表示:
-
給定句型:T * i ↑ (T * F)
-
給定文法G[T]:
T → T * F | F
F → F ↑ P | P
P → (T) | i
語法樹如下:
- 短語
- i
- T ↑ F
- (T ↑ F)
- i ↑ (T ↑ F)
- T * i ↑ (T * F)
- 直接短語
- i
- T * F
- 句柄
- i
- 素短語
- i
- 最左素短語
- i
文法二義性
如果一個文法存在某個句子對應兩顆不同的語法樹,則說這個文法是二義的。
不存在一個算法,能在有限步驟內,確切判定任給的一個文法是否爲二義的。只要找到一個句子,該句子對應兩個不同的語法樹,即證明該文法是二義的。
例如,證明文法G(S)是二義的:
S→aB | Ad
A→ab
B→bd
對於句子abc,存在下列兩個不同的語法樹:
所以該文法G(S)具有二義性。