2 6 文 法 和 語 言 的 分 類

2021-10-08 21:19:23 字數 2347 閱讀 3338

著名的語言學家喬姆斯基(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...