正規文法和正規式

2021-08-27 11:55:20 字數 1569 閱讀 9076

乙個正規語言可以由正規文法定義,也可以由正規式定義,對任意乙個正規文法,存在乙個定義同乙個正規語言的正規式;反之,對每個正規式,存在乙個生成同一語言的正規文法,有些正規語言很容易用文法定義,有些語言更容易用正規式定義,現在介紹兩者間的轉換,從結構上建立它們的等價性。

1、將σ上的乙個正規式轉換成正規文法g=(vn,vt,p,s)。令其中的vt=σ,確定產生式和vn的元素的辦法在右頁描述。

對任何正規式r,選擇乙個非終結符s生成產生式s→r,為區別文法中的產生式,把這個產生式叫做正規產生式,並將s定為g的識別符號。

若x和y都是正規式,對形如a→xy的正規產生式,重寫成:a→xb,b→y兩個正規產生式,其中b是新選擇的非終結符,即b∈vn

對已形成的形如a→x*y的正規產生式,重寫為:

a→xb

a→yb→xb

b→y 其中b為一新非終結符。

對形如a→x|y的正規產生式,重寫為:

a→x,a→y

不斷利用上述規則做變換,直到每個產生式都符合三型文法的要求。  例4.9

將r=a(a|d)*轉換成相應的正規文法,令s是文法的開始符號,首先形成

s→a(a|d)*,然後形成s→aa和a→(a|d)*,再重寫第二條產生式形成

s→aa  a→(a|d)b,

a→ε  b→(a|d)b和

b→ε進而變換為

s→aa  b→ab

a→ab  b→db

a→db  b→ε  a→ε即為所求。

2、將正規文法轉換成正規式。基本上是上述過程的逆過程,最後只剩下乙個開始符號定義的產生式,並且該產生式的右部不含非終結符。

例4.10

文法g[s]

s→aa  s→a  a→aa  a→da  a→a  a→d

先有:s=aa|a

a=(aa|da)|(a|d)

再將a的正規式變換為a=(a|d)a|(a|d),據表中規則2變換為:a=(a|d)*|(a|d),再將a 右端代入s的正規式得:s=a(a|d)*|a(a|d)|a

再利用正規式的代數變換可依次得到

s=a((a|d)*|(a|d)|ε)

s=a(a|d)*

即a(a|d)*為所求。

總結:文法和語言

0型文法產生的語言稱為0型語言

1型文法或上下文有關文法(csg)產生的語言稱為1型語言或上下文有關語言(csl)

2型文法或上下文無關文法(cfg)產生的語言稱為2型語言或上下文無關語言(cfl)

3型文法或正則(正規)文法(rg)產生的語言稱為3型語言正則(正規)語言(rl)

四種文法之間的關係 是將產生式做進一步限制而定義的。

語言之間的關係依次:有不是上下文有關語言的0型語言,有不是上下文無關語言的1型語言,有不是正則語言的上下文無關語言。

總結:文法和識別系統的關係

0型文法(短語文法)的能力相當於圖靈機,可以表徵任何遞迴可列舉集,而且任何0型語言都是遞迴可列舉的。

圖靈機1型文法(上下文有關文法):相應識別系統是線性界限自動機。

2型文法(上下文無關文法):相應識別系統是不確定的下推自動機。

3型文法(正規文法、右線性文法):相應識別系統是有窮自動機。

正規文法與正規式

3型文法也叫作正規文法,它對應於有限狀態自動機,它是在2型文法的基礎上滿足 a a ab 右線性 或a a ba 左線性 如果有a a,a ab,b a,b cb則符合3型文法的要求。但是a ab,a ab,b a,b cb或a a,a ba,b a,b cb則不符合3型文法的要求。也就是說,不能夠...

10 16 正規文法與正規式

1.分別寫出描述以下語言的正規文法和正規式 1 l1 2 l2 3 l3 答 1 正規文法 s aa a ba a 正規式 s a b a 2 正規文法 s as s bs b 正規式 s a a b b 3 正規文法 s ab s ab 正規式 s ab ab 2.將以下正規文法轉換到正規式 1 ...

作業六 正規文法與正規式

1.分別寫出描述以下語言的正規文法和正規式 l1 l2 l2 答 l1正規文法 s aa a bna a ba b bn b bb l1正規式 s ab a l2正規文法 s aa a aa bb b b bb b l2正規式 a ab b l3正規文法 s aa a bb b aa l3正規式 s...