编译原理:正规文法与正规式

1.分别写出描述以下语言的正规文法和正规式:

L1={abna|n≥0}。

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

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


 

解析:

(1)设文法G(S)={abna|n≥0}

正规文法:

S → aA

A → Ba

B → bn

B → bB|ε

正规式:

B = ε + bB = b*

A = Ba = b*a

S = ab*a

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

正规文法:

S → AB

A → aA|a

B → bB|b

正规式:

A = aA + a = a*a

B = bB + b = b*b

S = AB = aa*bb*

(3)设文法G(S)={(ab)n|n≥1}

正规文法:

S → ab|abS

正规式:

S = ab + abS = ab(1+ S) = ab(ab)*

2.将以下正规文法转换到正规式

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


 

 (1)解析:

正规式:

A  = 0A|0B = 0A + 0B

    = 0A +0(1A + ε)

    = 0A+01A+0ε

    = 0A + 01A +0

    = (0 + 01) A + 0

    = (0101)*0

z = 0A = 0(0|01)*0

 

Z → U0|V1
U → Z1|1
V → Z0|0


 

(2)解析:

正规式:

  Z=U0+V1,U=Z1+1,V=Z0+0

  Z=(Z1+1)0+(Z0+0)1

    =Z10+10+Z01+01

    =Z(10+01)+10+01

    =(10|01)*(10|01)

S → aA
A → bA|aB|b
B → aA

 


 

(3)解析:

正规式:

  S=aA,A=bA+aB+b,B=aA

  A=bA+aaA+b

     =(b+aa)A+b

  S=a(b|aa)*b

I → l|Il|Id


(4)解析:

正规式:

  I=l+Il+Id

   =I(l+d)+l

   =(l|d)*l

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/zhif97/p/11683910.html