0% found this document useful (0 votes)
14 views

CNF Conversion Flowchart

Uploaded by

Khadija Shaikh
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

CNF Conversion Flowchart

Uploaded by

Khadija Shaikh
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 62

Conversion Flowchart

Removal of all
null-productions
Conversion to
CNF
Removal of all
unit-productions

CFG → CNF
Removal of non- ↓
generating symbols
Conversion to
Removal of non- GNF
reachable symbols

Simplification of CFG GNF


1
Removal of Useless Symbols
• Useless symbols are of two types:

1. Non-generating symbols are those symbols


which do not produce any terminal string.
2. Non-reachable symbols are those symbols which
cannot be reached at any time starting from the
start symbol.

• If any symbol is found guilty, remove all the


productions that contain that symbol on either
side of →.
• Remember that if the start symbol is
found non-generating, we will not remove
it.
2
Example
• Remove the useless symbols from the
given CFG:
S → AC A generates a.
S → BA B generates b.
C → CB C always calls
C → AC itself.
A→a
B → aC
B→b

3
Example
• Remove the useless symbols from the
given CFG:
S → AC C is found guilty.
S → BA
C → CB
C → AC
A→a
B → aC
B→b

4
Example
• Remove the useless symbols from the
given CFG:
S → BA No symbol is non-
A→a reachable
B→b
This is the required
simplified CFG.

5
Task 1
• Remove the useless symbols from the
given CFG:
S → aAa A generates babab.
A → bBB B generates ab.
B → ab C generates aab.
C → aB

6
Task 1
• Remove the useless symbols from the
given CFG:
S → aAa None is found
A → bBB guilty.
B → ab
C → aB

7
Task 1
• Remove the useless symbols from the
given CFG:
S → aAa A is reachable.
A → bBB B is reachable.
B → ab C is not reachable.
C → aB

8
Task 1
• Remove the useless symbols from the
given CFG:
S → aAa C is found guilty.
A → bBB
B → ab
C → aB

9
Task 1
• Remove the useless symbols from the
given CFG:
S → aAa
A → bBB
B → ab

This is the required


simplified CFG.

10
Task 2
• Remove the useless symbols from the
given CFG:
S → aC A generates ad.
S → SB B always calls B.
A → bSCa C generates ad.
A → ad
B → aSB
B → bBC
C → aBC
C → ad
11
Task 2
• Remove the useless symbols from the
given CFG:
S → aC B is found guilty.
S → SB
A → bSCa
A → ad
B → aSB
B → bBC
C → aBC
C → ad
12
Task 2
• Remove the useless symbols from the
given CFG:
S → aC A is not reachable.
A → bSCa C is reachable.
A → ad
C → ad

13
Task 2
• Remove the useless symbols from the
given CFG:
S → aC A is found guilty.
A → bSCa
A → ad
C → ad

14
Task 2
• Remove the useless symbols from the
given CFG:
S → aC
C → ad

This is the required


simplified CFG.

15
Removal of Unit Productions
• A production is called a unit-production if it
is in the following format:

Non-terminal → single non-terminal

• Unit productions increase the number of


steps as well as the time complexity at the
time of generating language.

16
Removal of Unit Productions
• Let the CFG be:

S → AB S ⇒ AB
A→E ⇒ EB
B→C ⇒ aB
C→D ⇒ aC
D→b ⇒ aD
E→a ⇒ ab

6 steps
17
Removal of Unit Productions
• Let the CFG be:

S → AB S ⇒ AB
A→E ⇒ EB
Unit
productions B→C ⇒ aB
C→D ⇒ aC
D→b ⇒ aD
E→a ⇒ ab

6 steps
18
Removal of Unit Productions
• After removing the unit-productions, CFG
is:
S → AB S ⇒ AB
A→a ⇒ aB
B→b ⇒ ab

3 steps

19
Removal of Unit Productions
While (unit-production exists)
do
{
select a unit production, say A→B
for(every non-unit production B→xi)
{
add production A→xi to CFG
}
remove A→B from CFG
}
20
Example
• Let the CFG:

S → AB A→E E→a
A→E
B→C
C→D A→a
D→b
E→a

21
Example
• CFG:

S → AB C→D D→b
B→C
C→D
D→b C→b
E→a
A→a

22
Example
• CFG:

S → AB B→C C→b
B→C
D→b
E→a B→b
A→a
C→b

23
Example
• CFG:

S → AB Every Symbol is generating.


D→b D, E & C are non-reachable.
E→a
A→a
C→b
B→b

24
Example
• CFG:

S → AB
A→a
B→b

This is the required


simplified CFG.

25
Example
• Let the CFG:

S → AB C→D D→b
A→a
B→C
C→D C→b
D→b

26
Example
• CFG:

S → AB B→C C→b
A→a
B→C
D→b B→b
C→b

27
Example
• CFG:

S → AB Every Symbol is generating.


A→a D & C are non-reachable.
D→b
C→b
B→b

28
Example
• CFG:

S → AB
A→a
B→b

This is the required


simplified CFG.

29
Chomsky Normal Form (CNF)
• A CFG is said to be in CNF if all the
productions of the grammar are in the
following format:

Non-terminal → two non-terminals

Non-terminal → single terminal

30
Chomsky Normal Form (CNF)
STEP I: Simplification of CFG
1. Eliminate -Productions.
2. Eliminate Unit-Productions.
3. Eliminate Useless Productions.
STEP II: Substitution on RHS
4. Substitute the terminals on the RHS of
length two or more and add new rules.
STEP III: Restriction of RHS
5. Restrict the number of variables on the
RHS to two.
31
Example
 Let the CFG:

S → bA
S → aB
A → bAA
There are no Null productions
A → aS
There are no Unit productions
A→a
Every symbol is generating
B → aBB Every symbol is reachable
B → bS
B→a
32
Example
 CFG:

S → bA
S → aB
A → bAA
A → aS
A→a C→b
B → aBB D→a
B → bS
B→a
33
Example
 CFG:

S → bA
S → aB
A → bAA
A → aS
A→a C→b
B → aBB D→a
B → bS
B→a
34
Example
 CFG:

S → CA
S → DB
A → CAA
A → DS
A→a C→b
B → DBB D→a
B → CS
B→a
35
Example
 CFG:

S → CA
S → DB
A → CAA
C→b
A → DS
D→a
A→a
B → DBB
B → CS
B→a
36
Example
 CFG:

S → CA
S → DB
A → CAA
C→b
A → DS
D→a
A→a
E → AA
B → DBB
F → BB
B → CS
B→a
37
Example
 CFG:

S → CA
S → DB
A → CAA
C→b
A → DS
D→a
A→a
E → AA
B → DBB
F → BB
B → CS
B→a
38
Example
 CFG:

S → CA
S → DB
A → CE
C→b
A → DS
D→a
A→a
E → AA
B → DF
F → BB
B → CS
B→a This is the required CNF
39
Example
 CFG:

S → CA|DB
A → CE|DS
A→a
B → DF|CS
B→a
C→b
D→a
E → AA This is the required CNF
F → BB 40
Example
 Let the CFG:

S → ABa
A → aab
B → Ac
There are no Null productions
There are no Unit productions
Every symbol is generating
Every symbol is reachable

41
Example
 CFG:

S → ABa
A → aab
B → Ac

C→a
D→b
E →c

42
Example
 CFG:

S → ABa
A → aab
B → Ac

C→a
D→b
E →c

43
Example
 CFG:

S → ABC
A → CCD
B → AE

C→a
D→b
E →c

44
Example
 CFG:

S → ABC
A → CCD
B → AE
C→a
D→b
E →c

45
Example
 CFG:

S → ABC
A → CCD
B → AE
C→a
D→b
E →c
F → BC
G → CC

46
Example
 CFG:

S → ABC
A → CCD
B → AE
C→a
D→b
E →c
F → BC
G → CC

47
Example
 CFG:

S → AF
A → GD
B → AE
C→a
D→b
E →c
F → BC
G → CC
This is the required CNF
48
Example
 CFG:

S → AF
A → GD
B → AE
C→a
D→b
E →c
F → BC
G → CC
This is the required CNF
49
Example
 Let the CFG:

E→E+E
E→E*E
E → id
There are no Null productions
There are no Unit productions
Every symbol is generating
Every symbol is reachable

50
Example
 CFG:

E→E+E
E→E*E
E → id

P →+
M→ *

51
Example
 CFG:

E→E+E
E→E*E
E → id

P →+
M→*

52
Example
 CFG:

E → EPE
E → EME
E → id

P →+
M→*

53
Example
 CFG:

E → EPE
E → EME
E → id
P →+
M→*

54
Example
 CFG:

E → EPE
E → EME
E → id
P →+
M→*
C1 → EP
C2 → EM

55
Example
 CFG:

E → EPE
E → EME
E → id
P →+
M→*
C1 → EP
C2 → EM

56
Example
 CFG:

E → C1E
E → C2E
E → id P →+
M→*
C1 → EP
C2 → EM

This is the required CNF


57
Example
 CFG:

E → C1E
E → C2E
E → id
P →+
M→*
C1 → EP
C2 → EM
This is the required CNF
58
Practice Question
• Convert the following CFG into CNF.

S → abAB
A → bAB|
B → BAa|

59
Greibach Normal Form (GNF)
• A CFG is said to be in GNF if all the
productions of the grammar are in the
following format:

Non-terminal → <single terminal> <some


variables>

Non-terminal → single terminal

60
Greibach Normal Form (GNF)
STEP I: Prerequisite Conversion
1. Convert CFG to CNF.
STEP II: Greibach Conversion
2. Rename all the Variables in ascending order
as Ai.
3. Make sure that LHS variable subscript is
always less than the leftmost variable
subscript on RHS.
1. If needed, make proper substitutions.
2. Remove Left Recursion, if any.
4. Make proper substitutions until we get GNF.
61
Assignment
• Convert the following two CFGs into GNF.

S → XY S → AB | BC
X → YS | b A → aB | bA | a
Y → SX | a B → bB | cC | b
C→c

62

You might also like