Title: Normal Forms
1Normal Forms
- Chomsky Normal Form
- Griebach Normal Form
2- Language preserving transformations
- Improve parsing efficiency
- Prove properties about languages and derivations
Shorter derivations
3Elimination of l-rules
Reduces the length of the derivation
4- Aim Restrict the grammar such that
- Approach
- Introduce S
5- Add rules to capture the effect of l-rules to be
deleted. -
- (Ensures non-contracting rules)
6Example
7Determination of nullable non-terminals
Bottom-up flow of information
8Algorithm Nullable Nonterminals
- NULL A A-gtl e P
- repeat
- PREV NULL
- foreach A e V do
- if there is an A-rule A-gtw
- and w e PREV
- then NULL NULL U A
- until NULL PREV
9Proof of correctness
- Soundness
- If A e NULL(final) then Agt l.
- Induction on the number of iterations of the
loop. - Completeness
- If Agt l then A e NULL(final).
- Induction on the minimal derivation of the null
string from a non-terminal. - Termination
- Bounded by the number of non-terminals.
10Elimination of Chain rules
Removing renaming rules redundant procedure
calls.
Top-down flow of information
11Construction of Chain(A)
- Chain(A) A PREV f
- repeat
- NEW Chain(A) - PREV
- PREV Chain(A)
- foreach B e NEW do
- if there is a rule B-gtC
- then Chain(A) Chain(A) U C
- until Chain(A) PREV
12Examples
13Elimination of useless symbols
- A variable is useful if it occurs in a derivation
that begins with the start symbol and generates a
terminal string. - Reachable from S
- Derives terminal string
14- Construction of the set of variables that derive
terminal string. - Bottom-up flow of information
- Similar to the computation of nullable variables.
- Construction of the set of variables that are
reachable - Top-down flow of information
- Similar to the computation of chained variables.
15Examples
B does not derive terminal string C unreachable.
A unreachable.
Empty set of productions
Non-termination
16Chomsky Normal Form
- A CFG is in Chomsky Normal Form if each rule is
of the form - Theorem There is an algorithm to construct a
grammar G in CNF that is equivalent to a CFG G.
17Construction
- Obtain an equivalent grammar that does not
contain l-rules, chain rules, and useless
variables. - Apply following conversion on rules of the form
18Significance of CNF
- Length of derivation of a string of length n in
CNF (2n-1) - (Cf. Number of nodes of a strictly binary tree
with n-leaves) - Maximum depth of a parse tree n
- Minimum depth of a parse tree
19Removal of direct left recursion
- Causes infinite loop in top-down (depth-first)
parsers. - Approach Generate string from left to right.
20Note that absence of direct left recursion does
not imply absence of left recursion.
21(Cf. Gaussian Elimination)
22Griebach Normal Form
- ( Constructs terminal prefixes that
facilitates - discovery of dead-ends )
- A CFG is in Griebach Normal Form if each rule is
of the form - Theorem There is an algorithm to construct a
grammar G in GNF that is equivalent to a CFG G.
23Analogy solving linear simultaneous equations
What are the values of x,y, and z?
(Solving for z and then back substituiting.)
24Example conversion to GNF
Introducing terminals as first element on RHS
Eliminating left recursion
25- The size of the equivalent GNF can be large
compared to the original grammar. - Example CFG has 5 rules, but the corresponding
GNF has 24 rules!! - Length of the derivation in GNF
- Length of the string.
- GNF is useful in relating CFGs (generators) to
pushdown automata (recognizers/acceptors).