上下文無關文法(CFG)

2021-06-28 23:50:18 字數 667 閱讀 2426

一、上下文無關文法:g=(v,sigma,r,s),

1) v: 有窮變元集

2) sigma: 有窮終結符集

3) r: 有窮規則集

4) s∈v: 初始變元

二、定理:正則語言都是上下文無關語言。證明方法:可以為每個正則語言設計上下文無關文法。其中cfg的v等於dfa的狀態集;轉移(qi,a)=qj對應規則:ri := arj;終結符qi∈f對應規則:ri := 空。

三、幾個例子:0n1n,wwt(t表示轉置),非ww都是上下文無關,而ww不是上下文無關(是上下文有關的)。

四、最左派生: 每一步都替換最左邊的變元。歧義地產生: 有兩個不同的最左派生。歧義文法:文法歧義的產生某個串。

五、喬姆斯基正規化(cnf): 只允許如下形式的規則: 1、s := 空;2、a := bc;3、a := a。其中a,b,c是任意變元;b,c不是初始變元(即初始變元不能在右方出現) ;a是任意終結符

六、定理:任何cfg都是cnf。通過將每個cfg都能夠轉化成cnf的演算法來進行證明。其中要逐步處理5種情況:

1) 新增新的初始變元

2) 處理a := 空 (空規則)

3) 處理a := b (單一規則)

4) 處理a := u1u2…uk (k≥3)

5) 處理a := aiaj, a := aib, a := bai

上下文無關文法

1 上下文無關文法又稱cfg。許多cfg由幾個較簡單的cfg合併起來。可以先構造每個部分的cfg,比如 s1,s2,s3.sk。然後加入新的規則s s1 s2 sk 2 例如 構造語言 的cfg,1 構造 s1 0 s1 1 2 s2 1 s2 0 3 整合 s s1 s2 3 如果語言是正則的,可...

上下文無關文法

上下文無關文法 context free gammar 指文法的前後 上下 沒有關係,如文法 statement name is name s friend.是上下文無關文法,因為文中出現的兩個 name 可以不同 也可以相同,假設自己可以是自己的朋友 而文法 statement name like...

上下文無關文法

1 上下文無關文法又稱cfg。許多cfg由幾個較簡單的cfg合併起來。可以先構造每個部分的cfg,比如 s1,s2,s3.sk。然後加入新的規則s s1 s2 sk 2 例如 構造語言 的cfg,1 構造 s1 0 s1 1 2 s2 1 s2 0 3 整合 s s1 s2 3 如果語言是正則的,可...