上下文無關文法(context-free gammar):
指文法的前後(上下)沒有關係,如文法:
_statement ::= _name is _name's friend.
是上下文無關文法,因為文中出現的兩個 name 可以不同(也可以相同,假設自己可以是自己的朋友)。而文法:
_statement ::= _name likes _name, and _name likes _name too.
是上下文相關文法,文中的兩個_name必須有同樣的擴充套件,兩個_name也必須有同樣的擴充套件。如:tom likes june, and june likes tom too. 即後文中所使用的擴充套件必須與前文中的擴充套件相同(或者相關)。同樣下文也是上下文相關文法:
_statement ::= _fullname 's last name is _lastname
_fullname ::= _firstname _lastname
_firstname ::= richard | tom | bill
_lastname ::= stevens | hanks | gates
在編譯原理中一般把上下文相關的驗證放在語義分析中,而不是語法分析。
上下文無關文法
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 如果語言是正則的,可...
上下文無關文法
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 如果語言是正則的,可...
上下文無關文法(CFG)
一 上下文無關文法 g v,sigma,r,s 1 v 有窮變元集 2 sigma 有窮終結符集 3 r 有窮規則集 4 s v 初始變元 二 定理 正則語言都是上下文無關語言。證明方法 可以為每個正則語言設計上下文無關文法。其中cfg的v等於dfa的狀態集 轉移 qi,a qj對應規則 ri ar...
正則文法和上下文無關文法
對於文法g v,t,s,p 如果產生式的形式如下 a xb a x 其中a,b屬於v,x屬於t 則稱為右線性文法 相似的,如果產生式的形式如下 a bx a x 則稱為左線性文法。右線性文法和左線性文法統稱為正則文法。正規表示式的表達能力等價於正則文法,正規表示式的定義如下 字母表中的任意字母是正規...
編譯原理 上下文無關文法
學完了詞法分析,我們知道詞法分析器將正規表示式轉換成詞法單元流,但對於這個記號流我們不知道是否能由正確的文法產生,因此我們需要通過語法分析器來檢測其合法性。語法分析器的輸出是一棵語法分析樹 無論顯性還是隱性 並且進行一些語法糾錯處理。語法分析的整個過程大概就是我們先定義一個語法,再用相應的演算法來檢...