作業六——正規文法與正規式


知識點總結:

1 正規文法產生式的形式為A→aB或則A→a
2 ‘|’為或等同於算數里的加,‘.’為連接等同於算數里的乘,‘*’為閉包等同於算數里的冪
3 標識符的正規式為‘l(l|d)*’,常整數的正規為‘dd*’
4 正規文法和正規式可以互相轉換
5

三個重要的規則:A→xB B→y 正規式為A=xy

                       A→xA|y 正規式為A=x*y

                       A→x A→y 正規式為A=x|y

 

 

 

 

 

 

 

 

 

 

 

 

1.分別寫出描述以下語言的正規文法和正規式:

L1={abna|n≥0}

L2={ambn|n≥1,m ≥1}

L2={(ab)n|n≥1}

∵正規文法的每一個產生式的形式都是A→aB或者是A→a

①設文法G(S)={abna|n≥0}

∴S->aA

A->Ba

B->bn

B->bB|ε

正規式

ab*a

②設文法G(S)={ambn|n≥1,m ≥1}

∴S->AB

A->aA|a

B->bB|b

正規式

aa*bb*

③設文法G(S)={(ab)n|n≥1}

∴S->(A)A|(A)

A->(ab)

正規式

(ab)(ab)*

 2.將以下正規文法轉換到正規式

(1)Z→0A
A→0A|0B
B→1A|ε

 ①答:

由題可知:

A=0A+0(1A+ε)

A=0A+01A+0ε=0A+01A+0=(0+01)A+0

令x=(0+01),y=0,根據規則A→xA|y轉換為正規式為A=x*y

∴A=x*y=(0+01)*0

Z=0(0+01)*0=0(0|01)*0

 

(2)Z→U0|V1
U→Z1|1
V→Z0|0

 答:

∵V→Z0|0

∴V=00*

∵U→Z1|1

∴U=11*

∴Z=11*0+00*1=1(1*0+00*)=1(1*0|00*)

∴Z=1(1*0|00*)

 

(3)S→aA
A→bA|aB|b
B→aA

 答:

由題可得:

A=bA+aaA+b=(b+aa)A+b

相當於A->xB|y,轉換為規則式為A=x*y

∴A=(b+aa)*b

∵S->aA

∴S=a(b+aa)*b=a(b|aa)*b

 

(4)I→l|Il|Id

答:

I=l+Il+Id=I(l+d)+l

相當於I->Ix|y,轉換為規則式為I=yx*

∴I=l(l+d)*=l(l|d)*

∴I=l(l|d)*

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM