一、上下文無關文法: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 如果語言是正則的,可...