Grammars for regular languages
Download
Report
Transcript Grammars for regular languages
Linear Grammars
Grammars with
at most one variable at the right side
of a production
Examples:
S aSb
S Ab
S
A aAb
A
Prof. Busch - LSU
1
A Non-Linear Grammar
Grammar G :
S SS
S
S aSb
S bSa
L ( G ) { w : n a ( w ) n b ( w )}
Number of a in string w
Prof. Busch - LSU
2
Another Linear Grammar
Grammar G :
S A
A aB |
B Ab
n n
L ( G ) { a b : n 0}
Prof. Busch - LSU
3
Right-Linear Grammars
All productions have form:
A xB
or
A x
Example:
S abS
S a
Prof. Busch - LSU
string of
terminals
4
Left-Linear Grammars
All productions have form:
A Bx
or
A x
Example:
S Aab
A Aab | B
string of
terminals
B a
Prof. Busch - LSU
5
Regular Grammars
Prof. Busch - LSU
6
Regular Grammars
A regular grammar is any
right-linear or left-linear grammar
Examples:
G1
G2
S abS
S Aab
S a
A Aab | B
B a
Prof. Busch - LSU
7
Observation
Regular grammars generate regular languages
Examples:
G2
G1
S Aab
S abS
A Aab | B
S a
B a
L ( G1 ) ( ab ) * a
L ( G 2 ) aab ( ab ) *
Prof. Busch - LSU
8
Regular Grammars
Generate
Regular Languages
Prof. Busch - LSU
9
Theorem
Languages
Generated by
Regular Grammars
Prof. Busch - LSU
Regular
Languages
10
Theorem - Part 1
Languages
Generated by
Regular Grammars
Regular
Languages
Any regular grammar generates
a regular language
Prof. Busch - LSU
11
Theorem - Part 2
Languages
Generated by
Regular Grammars
Regular
Languages
Any regular language is generated
by a regular grammar
Prof. Busch - LSU
12
Proof – Part 1
Languages
Generated by
Regular Grammars
Regular
Languages
The language L (G ) generated by
any regular grammar G is regular
Prof. Busch - LSU
13
The case of Right-Linear Grammars
Let G be a right-linear grammar
We will prove: L (G ) is regular
Proof idea:
We will construct NFA M
with L ( M ) L ( G )
Prof. Busch - LSU
14
Grammar G is right-linear
Example:
S aA | B
A aa B
B b B|a
Prof. Busch - LSU
15
Construct NFA M such that
every state is a grammar variable:
A
S
S aA | B
VF
special
final state
B
A aa B
B b B|a
Prof. Busch - LSU
16
Add edges for each production:
a
A
S
VF
B
S aA
Prof. Busch - LSU
17
a
S
A
VF
B
S aA | B
Prof. Busch - LSU
18
A
a
a
S
a
VF
B
S aA | B
A aa B
Prof. Busch - LSU
19
A
a
a
S
VF
a
B
S aA | B
b
A aa B
B bB
Prof. Busch - LSU
20
A
a
a
S
S aA | B
a
VF
a
B
b
A aa B
B bB | a
Prof. Busch - LSU
21
A
a
a
S
a
VF
a
B
b
S aA aaaB aaabB aaaba
Prof. Busch - LSU
22
NFA M
Grammar
G
A
a
a
S
S aA | B
A aa B
a
VF
a
B bB | a
B
L ( M ) L (G )
b
Prof. Busch - LSU
aaab * a b * a
23
In General
A right-linear grammar G
has variables:
V 0 , V1 , V 2 ,
and productions:
V i a1 a 2 a m V j
or
V i a1 a 2 a m
Prof. Busch - LSU
24
We construct the NFA M
each variable V i
such that:
corresponds to a node:
V1
V3
V0
VF
V2
V4
Prof. Busch - LSU
special
final state
25
For each production: V i a1 a 2 a m V j
we add transitions and intermediate nodes
Vi
a1
a2
………
Prof. Busch - LSU
am
Vj
26
For each production: V i a1 a 2 a m
we add transitions and intermediate nodes
Vi
a1
a2
………
Prof. Busch - LSU
am
VF
27
Resulting NFA M looks like this:
a9
a1
V0
V1
a2
a4
a3
V3
a5
a4
a3
V2
a5
a8
a9
VF
V4
It holds that: L ( G ) L ( M )
Prof. Busch - LSU
28
The case of Left-Linear Grammars
Let G be a left-linear grammar
We will prove:
L (G ) is regular
Proof idea:
We will construct a right-linear
R
grammar G with L ( G ) L ( G )
Prof. Busch - LSU
29
Since G is left-linear grammar
the productions look like:
A Ba 1 a 2 a k
A a1 a 2 a k
Prof. Busch - LSU
30
Construct right-linear grammar G
Left
G
linear
Right
G
linear
A Ba 1 a 2 a k
A → Bv
A a k a 2 a1 B
R
A v B
Prof. Busch - LSU
31
Construct right-linear grammar G
Left
G
linear
A a1 a 2 a k
Right
G
linear
A a k a 2 a1
Av
A v
R
Prof. Busch - LSU
32
It is easy to see that:
L ( G ) L ( G )
R
Since G is right-linear, we have:
L (G )
L ( G )
Regular
Language
Regular
Language
R
Prof. Busch - LSU
L (G )
Regular
Language
33
Proof - Part 2
Languages
Generated by
Regular Grammars
Regular
Languages
Any regular language L is generated
by some regular grammar G
Prof. Busch - LSU
34
Any regular language L is generated
by some regular grammar G
Proof idea:
Let M
be the NFA with L L ( M ) .
Construct from M a regular grammar G
such that L ( M ) L ( G )
Prof. Busch - LSU
35
Since L is regular
there is an NFA M such that L L ( M )
b
Example:
M
q0
a
a
q1
q2
L ab * ab ( b * ab ) *
L L(M )
Prof. Busch - LSU
b
q3
36
Convert M
to a right-linear grammar
b
M
q0
a
a
q1
q2
q 0 aq 1
b
q3
Prof. Busch - LSU
37
b
M
q0
q 0 aq 1
a
a
q1
q2
q1 bq 1
b
q3
q1 aq 2
Prof. Busch - LSU
38
b
M
q 0 aq 1
q0
a
a
q1
q2
q1 bq 1
q1 aq 2
b
q3
q 2 bq 3
Prof. Busch - LSU
39
L (G ) L ( M ) L
b
G
q 0 aq 1
q1 bq 1
M
q0
a
a
q1
q2
q1 aq 2
q 2 bq 3
b
q3
q 3 q1
q3
Prof. Busch - LSU
40
In General
a
For any transition:
q
Add production:
q ap
variable
Prof. Busch - LSU
terminal
p
variable
41
For any final state:
Add production:
qf
qf
Prof. Busch - LSU
42
Since G
G
is right-linear grammar
is also a regular grammar
with
L (G ) L ( M ) L
Prof. Busch - LSU
43