You are on page 1of 44

Hector Miguel Chavez

Western Michigan University


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final steps
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 2


Introduction

Grammar: G = (V, T, P, S)

Terminals TT == {{ a,
a, bb }}

Variables VV == A,
A, B,
B, CC

Start Symbol SS

Production PP == SS →
→ AA

May 27, 2009 3


Introduction

Grammar example

S → aBSc
S → abc
LL == {{ aannbbnnccnn || nn ≥≥ 11 }}
Ba → aB
Bb → bb

S aBSc aBabcc aaBbcc aabbcc

May 27, 2009 4


Introduction

Context free grammar

The head of any production contains only one


non-terminal symbol

S→P
P → aPb LL == {{ aannbbnn || nn ≥≥ 00 }}
P→ε

May 27, 2009 5


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final simplification
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 6


Chomsky Normal Form

A context free grammar is said to be in Chomsky


Normal Form if all productions are in the following
form:
A → BC
A→α

• A, B and C are non terminal symbols


• α is a terminal symbol

May 27, 2009 7


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final steps
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 8


Preliminary Simplifications

There are three preliminary simplifications

1 Eliminate
Eliminate Useless
Useless Symbols
Symbols

2 Eliminate
Eliminate εε productions
productions

3 Eliminate
Eliminate unit
unit productions
productions

May 27, 2009 9


Preliminary Simplifications

Eliminate Useless Symbols


We need to determine if the symbol is useful by
identifying if a symbol is generating and is reachable

• X is generating if X 
* ω for some terminal string ω.
• X is reachable if there is a derivation X 
* αXβ
for some α and β

May 27, 2009 10


Preliminary Simplifications

Example: Removing non-generating symbols

SS →
→ AB
AB || aa
AA → Initial CFL grammar
→ bb

SS →
→ AB
AB || aa Identify generating symbols
AA →
→ bb

SS →
→ aa Remove non-generating
AA →
→ bb

May 27, 2009 11


Preliminary Simplifications

Example: Removing non-reachable symbols

SS →
→ aa Identify reachable symbols
AA →
→ bb

SS →
→ aa Eliminate non-reachable

May 27, 2009 12


Preliminary Simplifications

The order is important.

Looking first for non-reachable symbols and then


for non-generating symbols can still leave some
useless symbols.

SS →
→ AB
AB || aa SS →
→ aa
AA →
→ bb AA →
→ bb

May 27, 2009 13


Preliminary Simplifications

Finding generating symbols

If there is a production A → α, and every symbol


of α is already known to be generating. Then A is
generating

We cannot use S → AB
SS →
→ AB
AB || aa because B has not been
AA →
→ bb established to be generating

May 27, 2009 14


Preliminary Simplifications

Finding reachable symbols

S is surely reachable. All symbols in the body of a


production with S in the head are reachable.

SS →
→ AB
AB || aa In this example the symbols
AA →
→ bb {S, A, B, a, b} are reachable.

May 27, 2009 15


Preliminary Simplifications

There are three preliminary simplifications

1 Eliminate
Eliminate Useless
Useless Symbols
Symbols

2 Eliminate
Eliminate εε productions
productions

3 Eliminate
Eliminate unit
unit productions
productions

May 27, 2009 16


Preliminary Simplifications

Eliminate ε Productions

• In a grammar ε productions are convenient but


not essential
• If L has a CFG, then L – {ε} has a CFG

AA 
* εε

Nullable variable

May 27, 2009 17


Preliminary Simplifications

If A is a nullable variable

• Whenever A appears on the body of a production


A might or might not derive ε

S → ASA | aB
A→B|S Nullable: {A, B}
B→b|ε

May 27, 2009 18


Preliminary Simplifications

Eliminate ε Productions

• Create two version of the production, one with


the nullable variable and one without it
• Eliminate productions with ε bodies

S → ASA | aB S → ASA | aB | AS | SA | S | a
A→B|S A→B|S
B→b|ε B→b

May 27, 2009 19


Preliminary Simplifications

Eliminate ε Productions

• Create two version of the production, one with


the nullable variable and one without it
• Eliminate productions with ε bodies

S → ASA | aB S → ASA | aB | AS | SA | S | a
A→B|S A→B|S
B→b|ε B→b

May 27, 2009 20


Preliminary Simplifications

Eliminate ε Productions

• Create two version of the production, one with


the nullable variable and one without it
• Eliminate productions with ε bodies

S → ASA | aB S → ASA | aB | AS | SA | S | a
A→B|S A→B|S
B→b|ε B→b

May 27, 2009 21


Preliminary Simplifications

There are three preliminary simplifications

1 Eliminate
Eliminate Useless
Useless Symbols
Symbols

2 Eliminate
Eliminate εε productions
productions

3 Eliminate
Eliminate unit
unit productions
productions

May 27, 2009 22


Preliminary Simplifications

Eliminate unit productions

A unit production is one of the form A → B where both


A and B are variables

Identify unit pairs

AA 
* BB

A → B, B → ω, then A → ω

May 27, 2009 23


Preliminary Simplifications

Example:
T = {*, +, (, ), a, b, 0, 1} Pairs Productions
( E, E ) E→E+T
I → a | b | Ia | Ib | I0 | I1 ( E, T ) E→T*F
F → I | (E) ( E, F ) E → (E)
T→F|T*F ( E, I ) E → a | b | Ia | Ib | I0 | I1

E→T|E+T ( T, T ) T→T*F
( T, F ) T → (E)
( T, I ) T → a | b | Ia |Ib | I0 | I1
Basis: (A, A) is a unit pair ( F, F ) F → (E)
of any variable A, if ( F, I ) F → a | b | Ia | Ib | I0 | I1
A  * A by 0 steps. ( I, I ) I → a | b | Ia | Ib | I0 | I1

May 27, 2009 24


Preliminary Simplifications

Example:
Pairs Productions
… …
( T, T ) T→T*F
( T, F ) T → (E)
( T, I ) T → a | b | Ia |Ib | I0 | I1
… …

I → a | b | Ia | Ib | I0 | I1
E → E + T | T * F | (E ) | a | b | la | lb | l0 | l1
T → T * F | (E) | a | b | Ia | Ib | I0 | I1
F → (E) | a | b | Ia | Ib | I0 | I1

May 27, 2009 25


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final steps
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 26


Final Simplification

Chomsky Normal Form (CNF)

Starting with a CFL grammar with the preliminary


simplifications performed

1. Arrange that all bodies of length 2 or more to


consists only of variables.
2. Break bodies of length 3 or more into a cascade of
productions, each with a body consisting of two
variables.

May 27, 2009 27


Final Simplification

Step 1: For every terminal α that appears in a body


of length 2 or more create a new variable that has
only one production.
E → E + T | T * F | (E ) | a | b | la | lb | l0 | l1
T → T * F | (E) | a | b | Ia | Ib | I0 | I1
F → (E) | a | b | Ia | Ib | I0 | I1
I → a | b | Ia | Ib | I0 | I1
E → EPT | TMF | LER | a | b | lA | lB | lZ | lO
T → TMF | LER | a | b | IA | IB | IZ | IO
F → LER | a | b | IA | IB | IZ | IO
I → a | b | IA | IB | IZ | IO
A→a B→b Z→0 O→1
P→+ M→* L→( R→)

May 27, 2009 28


Final Simplification

Step 2: Break bodies of length 3 or more adding


more variables

E → EPT | TMF | LER | a | b | lA | lB | lZ | lO


T → TMF | LER | a | b | IA | IB | IZ | IO
C1 → PT
F → LER | a | b | IA | IB | IZ | IO
I → a | b | IA | IB | IZ | IO C2 → MF
A→a B→b Z→0 O→1 C3 → ER
P→+ M→* L→( R→)

May 27, 2009 29


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final steps
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 30


Greibach Normal Form

A context free grammar is said to be in Greibach


Normal Form if all productions are in the following
form:

A → αX

• A is a non terminal symbols


• α is a terminal symbol
• X is a sequence of non terminal symbols.
It may be empty.

May 27, 2009 31


Presentation Outline

• Introduction
• Chomsky normal form
• Preliminary simplifications
• Final steps
• Greibach Normal Form
• Algorithm (Example)
• Summary

May 27, 2009 32


Greibach Normal Form

Example:

S → XA | BB S = A1 A1 → A2A3 | A4A4
B → b | SB X = A2 A4 → b | A1A4
X→b A = A3 A2 → b
A→a
B = A4 A3 → a

CNF
CNF New
New Labels
Labels Updated
Updated CNF
CNF

May 27, 2009 33


Greibach Normal Form

Example:

A1 → A2A3 | A4A4 First Step AAii →


→ AAjjXXkk jj >> ii
A4 → b | A1A4
A2 → b Xk is a string of zero
A3 → a
or more variables

A4 → A1A4

May 27, 2009 34


Greibach Normal Form

Example:

First Step AAii →


→ AAjjXXkk jj >> ii

A4 → A1A4 A1 → A2A3 | A4A4


A4 → A2A3A4 | A4A4A4 | b A4 → b | A1A4
A4 → bA3A4 | A4A4A4 | b A2 → b
A3 → a

May 27, 2009 35


Greibach Normal Form

Example:

A1 → A2A3 | A4A4 Second Step


A4 → bA3A4 | A4A4A4 | b
Eliminate
Eliminate Left
Left
A2 → b Recursions
Recursions
A3 → a

A4 → A4A4A4

May 27, 2009 36


Greibach Normal Form

Example:
Second Step
Eliminate
Eliminate Left
Left
Recursions
Recursions

A4 → bA3A4 | b | bA3A4Z | bZ A1 → A2A3 | A4A4


Z → A4A4 | A4A4Z A4 → bA3A4 | A4A4A4 | b
A2 → b
A3 → a

May 27, 2009 37


Greibach Normal Form

Example:

A1 → A2A3 | A4A4
A4 → bA3A4 | b | bA3A4Z | bZ AA →
→ αX
αX
Z → A4A4 | A4A4 Z
A2 → b GNF
A3 → a

May 27, 2009 38


Greibach Normal Form

Example:
A1 → A2A3 | A4A4
A4 → bA3A4 | b | bA3A4Z | bZ
Z → A4A4 | A4A4 Z
A2 → b
A3 → a

A1 → bA3 | bA3A4A4 | bA4 | bA3A4ZA4 | bZA4


Z → bA3A4A4 | bA4 | bA3A4ZA4 | bZA4 | bA3A4A4 | bA4 | bA3A4ZA4 | bZA4

May 27, 2009 39


Greibach Normal Form

Example:

A1 → bA3 | bA3A4A4 | bA4 | bA3A4ZA4 | bZA4


A4 → bA3A4 | b | bA3A4Z | bZ
Z → bA3A4A4 | bA4 | bA3A4ZA4 | bZA4 | bA3A4A4 | bA4 | bA3A4ZA4 | bZA4
A2 → b
A3 → a

Grammar in Greibach Normal Form

May 27, 2009 40


Presentation Outline

Summary (Some properties)


• Every CFG that doesn’t generate the empty string
can be simplified to the Chomsky Normal Form and
Greibach Normal Form
• The derivation tree in a grammar in CNF is a binary
tree
• In the GNF, a string of length n has a derivation of
exactly n steps
• Grammars in normal form can facilitate proofs
• CNF is used as starting point in the algorithm CYK

May 27, 2009 41


Presentation Outline

References
[1] Introduction to Automata Theory, Languages and Computation, John E.
Hopcroft, Rajeev Motwani and Jeffrey D. Ullman, 2nd edition, Addison
Wesley 2001 (ISBN: 0-201-44124-1)

[2] CS-311 HANDOUT, Greibach Normal Form (GNF), Humaira Kamal,


http://suraj.lums.edu.pk/~cs311w02/GNF-handout.pdf

[3] Conversion of a Chomsky Normal Form Grammar to Greibach Normal


Form, Arup Guha,
http://www.cs.ucf.edu/courses/cot4210/spring05/lectures/Lec14Greiba
ch.ppt

May 27, 2009 42


Test Questions

1. Convert the following grammar to the Chomsky Normal Form.


S→P
P → aPb | ε
2. Is the following grammar context-free?
S → aBSc | abc
Ba → aB
Bb → bb
3. Prove that the language L = { anbncn | n ≥ 1 } is not context-free.
4. Convert the following grammar to the Greibach Normal Form.
S -> a | CD | CS
A -> a | b | SS
C -> a
D -> AS

May 27, 2009 43


Presentation Outline

May 27, 2009 44

You might also like