Module 7
Properties of contextfree languages
How porous are the boundaries of being context free?
CS 360: Introduction to the Theory of Computing
Daniel G. Brown, modified by Margareta Ackerman, University of Waterloo
7.1
Topics for this module
•
Normal forms for contextfree grammars
•
The pumping lemma for contextfree languages, and proving languages are not context free
•
Closure properties for contextfree languages
•
Decision algorithms for contextfree languages
It is a somewhat surprising fact that contextfree languages don’t have all of the same closure prop
erties as regular languages.
7.2
1
Normal forms for contextfree grammars
Normal forms
•
In this case,
normal
isn’t a value statement, it more means that the grammar satisfies a very
simple form.
•
Theorem
: For any contextfree grammar
G
, there is a grammar
G
0
that generates exactly the
same words as
G
(with the exception of
ε
), where all rules of the grammar
G
0
are of one of the
following two forms:
–
A
→
BC
where
A
,
B
and
C
are variables
–
A
→
a
, where
A
is a variable and
a
is a terminal
•
Grammars in this form are in
Chomsky Normal Form
, or CNF.
7.3
Who cares?
Who cares?
•
Suppose we want to bound the number of production steps a word.
•
This is very hard when derivations can be of arbitrary length!
•
Also, can make ambiguity obvious (though not always).
Idea
:
•
Each step: either number of terminals or string length increases at each step.
•
All derivations for a word have the
same
length.
7.4
1
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
What has to be forbidden?
We need to get rid of a bunch of kinds of forbidden rules:
•
A
→
B
•
A
→
ab
•
A
→
Ab
•
A
→
ABC
•
A
→
ε
Some of these simplifications are easier than others, but none is especially hard.
7.5
First, removing
ε
rules
A variable
A
in a grammar
G
is
nullable
if
A
*
⇒
G
ε
.
If the variable
A
is nullable, and there is a rule in the grammar
B
→
AC
, then we could add a rule
B
→
C
to the grammar, and the language of the grammar would not change.
•
We previously would have had the derivation
B
⇒
AC
*
⇒
C
...
•
Now, we just have the new derivation
B
⇒
C
...
We can do this for
any
nullable variable.
•
The only word lost from the language of the grammar is
ε
, if the start symbol for the grammar
is nullable.
7.6
Identifying nullable variables
There’s a simple rule for identifying nullable variables:
•
If there exists a rule
A
→
ε
, then
A
is nullable.
•
If there exists a rule
A
→
B
1
B
2
...
B
k
, and all of the
B
i
are nullable, then
A
is nullable.
•
No other variables are nullable.
Any variable found to be nullable by this method is certainly nullable, because the method gives
the derivation of
ε
.
To show that any nullable variable
A
is found, we can do induction on
k
, the length of the deriva
tion
A
k
⇒
ε
.
This is the end of the preview.
Sign up
to
access the rest of the document.
 Winter '08
 JohnWatrous
 Grammar, Formal language, Formal languages, Contextfree grammar, contextfree language

Click to edit the document details