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、如果語言是正則的,可以構造它的dfa,再由dfa轉換成cfg。轉換方法如下:
1)對於dfa的每個狀態qi,設乙個變元ri。如果δ(qi,a)=qj是dfa中的乙個轉移,則把規則ri->arj加入到cfg中。
2)如果qi是dfa的接受(終止)狀態,則把規則ri->ε加入到dfg中。
3)設q0為dfa的起始狀態,r0為cfg的起始變元。
4、如果cfg中的字串,有兩個相對應的子串,則可使用r->urv之類的,u對應於v
5、如果字串有種結構,該結構遞迴地作為另一種結構的一部分出現,則將生成這種結構的變元放在規則中對應的可能遞迴出現這種結構的地方。
上下文無關文法是乙個4元組(v,∑,r,s),其中:
1)v是乙個有窮集合,稱為變元集
2)∑是乙個與v不相交的有窮集合,稱為終結符集
3)r是乙個有窮的規則集,每一條規則由乙個變元、乙個箭頭、乙個由變元和終結符組成的字串。
4)s∈v是起始變元。
如g=(,,r,s),其中r為
s->asb|ss|ε
該文法產生abab,aaabbb,aababb等字串。
上下文無關文法
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...
上下文無關文法(CFG)
一 上下文無關文法 g v,sigma,r,s 1 v 有窮變元集 2 sigma 有窮終結符集 3 r 有窮規則集 4 s v 初始變元 二 定理 正則語言都是上下文無關語言。證明方法 可以為每個正則語言設計上下文無關文法。其中cfg的v等於dfa的狀態集 轉移 qi,a qj對應規則 ri ar...