ATC Module 3
ATC Module 3
Part 2
Simplifying Context-free Grammar
S*S SSS S* Є
S Є
SSS SSS1 S*S
S(S) OR SSS1
S() SS1S SS1
S1(S)
S1()
Remove Ambiguity
Unambiguous
G= EE+E
EE+T|T
EE*E TT*F|F
E(E) F (E)|id
E(id)
E=E+T
=T+T
= F+T
= id + T
= id + T * F
= id + F * F
= id + id * F
= id + id * id
Normal Forms
1. Chomsky Normal Form (CNF)
Xa where a Є ∑
or
X BC where B and C are elements of V- ∑
{ BC- Only two non-terminals}
2. Greibach Normal Form (GNF)
Xaβ where a Є ∑ and β Є (V- ∑)*
Example: valid: Xa, XbY, XbAB
Invalid: X aa, X aYBa, XYZ
Steps to get CNF
1. Eliminate ‘Є’ (Epsilon) production A Є
2. Eliminate Unit production AB
3. Eliminate mixed production A->aB, ABaC
4. Eliminate long productions ABCDE
Eliminating Є production (Repeated
Finding Nullable Variables
slide)
Note: AB
A B | a Pass 1: {}
BC|c Pass 2: C ε ; Nullable variable: {C}
Pass 3: BC; B is nullable: {B, C}
C cC| ε
Pass 4: A B; A is nullable: {A, B, C}
Rewrite rule:
SaACa |aAa |aCa | aa
A B |a
B C|c
CcC |c
Step 2: Remove Unit Production
SaACa |aAa |aCa | aa
A B |a
B C|c
CcC |c
1. Remove AB; add A C |c, Remove AC; add A cC
2. Remove BC; Add BcC