前置知識
- 句型:若文法 G 的開始符號爲 S,則從開始符號 S 能推導出的符號串稱爲文法的一個句型
- 句子:若 X 是文法 G 的一個句型,且 ,則稱 X 是文法 G 的一個句子,即僅含終結符的句型是一個句子
例如,有下列文法:
- S→AB
- A→aA|a
- B→bB|b
用上述文法推導字符串aaabbb過程如下:
S→AB→aAB→aaAB→aaaB→aaabB→aaabbB→aaabbb
AB、aAB、aaAB、aaaB、aaabB、aaabbB 和 aaabbb 都是上述文法的一個句型,但只有 aaabbb 爲一個句子,因爲其只含有終結符。
推導
推導:用產生式的右部替換產生式的左部
主要分爲以下幾種推導:
- 直接推導:對於每一個產生式來說,右部都是它左部的直接推導,記爲 α⇒β。
- 0步或多步推導:符號爲 (話說這個推導符號也是真難打出來。。。),表示至少推導0次
- 1步或多步推導:符號爲 ,表示至少推導一次
- 最左推導:總是選擇每個句型的最左非終結符進行替換
- 最右推導:也稱爲規範推導,總是選擇每個句型的最右非終結符進行替換
對每一個句型,該句型一定有一個推導過程(可能不唯一),推導過程一定對應一顆語法樹(推導過程可能不唯一,當然語法樹也可能不唯一)。
歸約
歸約是推導的逆過程。
- 直接歸約:若文法 G 中有一個直接推導 α⇒β,則稱 β 可直接歸約爲 α,或 α 是 β 的一個直接歸約
- 歸約:若文法 G 中有一個推導 α β,則稱 β 可歸約成 α,或 α 是 β的一個歸約
- 最左歸約:也稱爲規範歸約,最右推導的逆過程稱爲最左歸約
- 最右歸約:最左推導的逆過程稱爲最右歸約
下面以兩幅圖片作爲示例說明推導與歸約的過程。