著名的語言學家喬姆斯基(chomsky )將文法和語言分為 4 大類,即 0 型、1 型、 2 型和 3 型。劃分的依據是對文法中的規則施加不同的限制。
若文法 g = (v n , v t , p , s )中的每條規則 α → β 是這樣一種結構:
α ∈ ( v n ∪ v t )**且至少含乙個非終結符,而 β ∈ (v n ∪ vt )*,則稱 g是 0 型文法。0 型文法描述的語言是 0 型語言。
由定義可見,α 和 β 均是文法的終結符和非終結符組成的符號串,且 β 可能為空,而 α 不等於空,即允許 | α |>|β |。由於 0 型文法沒有加任何限制條件,故又稱為無限制性文法,相應的
語言稱為無限制性語言。
例如,有 0 型文法 g = (v n , v t , p , s ),其中
v n =
v t =
p =
其描述的 0 型語言為 l 0 ( g [ s ]) = {}。
2.1 型文法(上下文有關文法)
若文法 g = (v n , v t , p , s )中的每一條規則的形式為 αa β → αu β ,其中 a ∈ v n , α ,β ∈(v n ∪ v t )* ,u ∈ ( v n ∪ v t )+ ,則稱 g 是 1 型文法,1 型文法描述的語言是 1 型語言。
由定義可見,利用規則將 a 替換成 u 時,則必須考慮非終結符 a 只有在 α 和 β 這樣的乙個上下文環境中才可以把它替換為 u ,並且不允許替換成空串,也就是| αaβ |≤| αu β | ,故又稱 1型文法為上下文有關文法,相應的語言又稱為上下文有關語言。
例如,有 1 型文法 g = (v n , v t , p , s ),其中
v n =
v t =
p =
其描述的 1 型語言為 l 1 ( g [ s ]) = 。
3.2 型文法(上下文無關文法)
若文法 g = (v n , v t , p , s )中的每一條規則的形式為 a →β ,其中 a ∈ v n ,β ∈(v n ∪v t )* ,則稱 g 是 2 型文法,2 型文法描述的語言是 2 型語言。
由定義可見,利用規則將 a 替換成 β 時,與 a 的上下文無關,即無需考慮 a 在上下文**現的情況,故又稱 2 型文法是上下文無關文法,其產生的語言又稱為上下文無關語言。通常定義程式語言的文法是上下文無關文法,因此,上下文無關文法及相應語言是我們主要研究的物件。
例如,有 2 型文法 g = (v n , v t , p , s ),其中
v n =
v t =
p =
其描述的語言為 l 2 ( g [ s ]) = +且 x 中 a 和 b 的個數相同}。
4.3 型文法(正規文法)
若文法 g = (v n , v t , p , s )中的每一條規則的形式為 a → αb 或 a → α ,其中 a , b ∈ v n ,α ∈ v * t ,則稱 g 是右線性文法。
若文法 g = (v n , v t , p , s )中的每一條規則的形式為 a → bα 或 a → α ,其中 a , b ∈ v n ,α ∈ v * t ,則稱 g 是左線性文法。
右線性文法和左線性文法都稱為 3 型文法或正規文法,3 型文法描述的語言稱為 3 型語言或正規語言。
通常定義程式語言詞法規則的文法是正規文法。
例如,用左線性正規文法和右線性正規文法定義識別符號。用 i代表識別符號,l代表任意乙個字母,d 代表任意乙個數字,則定義識別符號的文法為
左線性文法:
p : i→ l | il | id
右線性文法:
p : i → l | lt
t → l | d | lt | dt
例如,用左線性正規文法和右線性正規文法定義無符號整數。
用 n 代表無符號整數,d 代表任意乙個數字,則定義的無符號整數文法為
左線性文法:
p : n → d | nd
右線性文法:
p : n → d | dn
由上述 4 類文法的定義可知,從 0 型文法到 3 型文法,是逐漸增加對規則的限制條件而得到的,因此每一種正規文法都是上下文無關的文法,每一種上下文無關的文法都是上下文有關的文法,而每一種上下文有關的文法都是 0 型文法,而由它們所定義的語言類是依次縮小的,即有 l 0 ⊃ l 1 ⊃ l 2 ⊃ l 3 。 2 文法和語言
字母表 字母表是元素的非空有窮集合,字母表中的元素稱為符號,因此字母表也稱為符號集。符號串 由字母表中的符號組成的任何有窮序列稱為符號串。在符號串中,符號的順序是非常重要的。如果某符號串x中有m個符號,則稱其長度為m,表示為 x m。允許空符號串,即不包含任何符號的字串,用 表示,其長度為0,即 0...
2 文法和語言
2.3文法和語言的形式定義 語法只定義什麼樣的符號串行是合法的,與這些符號的含義毫無關係,對pascal,乙個上下文無關文法可定義符號串a b c是合乎語法的,a b 不。若b實型,c布林,或b c中任何乙個沒事先說明,程式語言的語義分兩 靜態語義和動態語義 靜態語義是一系列限定規則 動態語義也稱執...
作業2 文法和語言
1.文法g z z azb ab定義的是什麼樣的語言?產生式有 z azb,z ab 因此有 z ab,z azb a b 重複使用產生式z azb,得 z azb a zb a zb a b 所以,文法所確定的語言為l g z 2.寫出教材22頁例2.2中識別符號的文法四元組形式。文法g vn,v...