You are on page 1of 7

Context Free Grammar

- CFG is a super set of RE/FA


.....................................
RE to CFG
- every RE should has equivalent CFG
...................................
Example 1

Re a
CFG
S-->a
...........................

Example
Re a+

CFG
S-->a
|aS

Recursive Grammar
- left hand side non terminal also appears on RHS

......................................
Example
Re a*

CFG
S-->^
|aS

........................................

Example
Re a+b

CFG
S-->a
|b
..................................

Example
Re (a+b)+

CFG
S-->a
|b
|aS
|bS
....................................

Example
Re (a+b)*

CFG
S-->^
|aS
|bS
.......................................

Example
Re a(a+b)*

CFG
S-->aY
Y-->^
|aY
|bY
....................................

Example
Re a(a+b)+

CFG
S-->aY
Y-->a
|b
|aY
|bY
.....................................
Example even-even

Re(aa+bb+(ab+ba)(aa+bb)*(ab+ba))*

CFG

S-->^
|aaS
|bbS
|abY
|baY

Y-> baS
|abS
|aaY
|bbY
....................................

Example

c++ compound Ops

>(=|>)?

CFG
S--> >Y
Y--> =
| >
|^
.................................
Example
CGPA
[0123]/.([0-9]([0-9]?) | (4(/.0)?)

S--> R1
|R2
R1-->T.DY
Y--> D
|^
D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3

R2-->4Z
Z-->.0
|^
....................................
Practice
Write Cfg for the following REs

1) (a+b)*a(a+b)*

2) CNIC
\d\d\d\d\d\-\d\d\d\d\d\d\d\-\d

3) aa(a+b)bb(a+b)+

4) start and end with same letter

a(a+b)* a + b(a+b)* b

........................................
Solution

Write Cfg for the following REs

1) (a+b)*a(a+b)*
at least one a

S--> YaY
y-->^
|ay
|by

2) CNIC
\d\d\d\d\d\-\d\d\d\d\d\d\d\-\d

S-->ddddd-ddddddd-d

d->0|1|2|3|4|5|6|7|8|9

3) aa(a+b)bb(a+b)+

S->aaYbbZ
y->a|b
z->a|b|az|bz

4) start and end with same letter

a(a+b)* a + b(a+b)* b

S-> a Y a
| b Y b
y-> ^|aY|bY
...........................................
Grammar Civilization(minimization)

1- Killing NULL Production


2- Killing Unit production
3- convert to CNF(Chomsky Normal Form)

1- Killing NULL Production

......................
S-->aS
|^

S-->aS
|a
...................
Example
C++ dec Statement
int a;
int a,b,c;
float t;

DecStmt--> Type Ids;


ids--> id
|id,ids
id-->a|b|c

not a good example

...................................
Example
S-->^
|aS
|bS

S-->a
|b
|aS
|bS
both Grammmers are not Eqviualent
.....................................
Example
S-->aY
Y-->^
|aY
|bY

S-->aY
|a
Y-->|aY
|bY
|a
|b
...................................
Practice
Remove ^ production
1) S--> YaY
y-->^
|ay
|by
2) S-> a Y a
| b Y b
y-> ^|aY|bY
3) S--> R1
|R2
R1-->T.DY
Y--> D
|^
D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
R2-->4Z
Z-->.0
|^
.................................
Solution

Remove ^ production
1) S--> YaY
y-->^
|ay
|by

S--> Yay|ay|Ya|a
y--> aY|bY|a|b

2) S-> a Y a
| b Y b
y-> ^|aY|bY

S-->aYa |aa|bYb|bb
y-->aY|bY|a|b

3) S--> R1
|R2
R1-->T.DY
Y--> D
|^
D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
R2-->4Z
Z-->.0
|^

S--> R1
|R2
R1-->T.DY|T.D
Y--> D
D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
R2-->4Z |4
Z-->.0
............................................

2- Killing Unit production

S-->R1 |R2
R1->a
R2-->b

S-->a |b

...........................................
Example
S--> R1
|R2
R1-->T.DY
Y--> D
|^
D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
R2-->4Z
Z-->.0
|^

Step 1: Remove Null production

S--> R1
|R2
R1-->T.DY|T.D
Y--> D

D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
R2-->4Z |4
Z-->.0

Step 2: Remove Unit production

S--> T.DD|T.D
|4.0 |4

D->0|1|2|3|4|5|6|7|8|9
T->0|1|2|3
.........................................

3- convert to CNF(Chomsky Normal Form)

- CNF is a special type of CFG

- CNF decides within 2n+1 time


..............................................

You might also like