Title: Simplifications of Context-Free Grammars
1Simplifications of Context-Free Grammars
2A Substitution Rule
Equivalent grammar
Substitute
3A Substitution Rule
Substitute
Equivalent grammar
4In general
Substitute
equivalent grammar
5Nullable Variables
Nullable Variable
6Removing Nullable Variables
Example Grammar
Nullable variable
7Final Grammar
Substitute
8Unit-Productions
Unit Production
(a single variable in both sides)
9Removing Unit Productions
Observation
Is removed immediately
10Example Grammar
11Substitute
12Remove
13Substitute
14Remove repeated productions
Final grammar
15Useless Productions
16Another grammar
Not reachable from S
17contains only terminals
In general
if
then variable is useful
otherwise, variable is useless
18A production is useless if any of
its variables is useless
19Removing Useless Productions
Example Grammar
20First
find all variables that can produce strings with
only terminals
Round 1
Round 2
21Keep only the variables that produce terminal
symbols
(the rest variables are useless)
Remove useless productions
22Second
Find all variables reachable from
Use a Dependency Graph
not reachable
23Keep only the variables reachable from S
(the rest variables are useless)
Final Grammar
Remove useless productions
24Removing All
- Step 1 Remove ?-productions
- Step 2 Remove Unit-productions
- Step 3 Remove Useless productions
25Normal FormsforContext-free Grammars
26Chomsky Normal Form
Each productions has form
or
variable
variable
terminal
27Examples
Chomsky Normal Form
Not Chomsky Normal Form
28Conversion to Chomsky Normal Form
Not Chomsky Normal Form
29Introduce variables for terminals
30 Introduce intermediate variable
31Introduce intermediate variable
32Final grammar in Chomsky Normal Form
Initial grammar
33In general
From any context-free grammar (which doesnt
produce ) not in Chomsky Normal Form
we can obtain An equivalent grammar
in Chomsky Normal Form
34The Procedure
First remove Nullable variables Unit
productions
35Then, for every symbol
Add production
In productions replace with
New variable
36Replace any production
with
New intermediate variables
37Theorem
For any context-free grammar (which doesnt
produce ) there is an equivalent grammar in
Chomsky Normal Form
38Observations
- Chomsky normal forms are good
- for parsing and proving theorems
- It is very easy to find the Chomsky normal
- form for any context-free grammar
39Greibach Normal Form
All productions have form
symbol
variables
40Examples
Greibach Normal Form
Not Greibach Normal Form
41Conversion to Greibach Normal Form
Greibach Normal Form
42Theorem
For any context-free grammar (which doesnt
produce ) there is an equivalent grammar in
Greibach Normal Form
43Observations
- Greibach normal forms are very good
- for parsing
- It is hard to find the Greibach normal
- form of any context-free grammar
44The CYK Parser
45The CYK Membership Algorithm
Input
- Grammar in Chomsky Normal Form
Output
find if
46The Algorithm
Input example
47(No Transcript)
48(No Transcript)
49(No Transcript)
50(No Transcript)
51Therefore
Time Complexity
Observation
The CYK algorithm can be easily converted to a
parser (bottom up parser)