Download - Context Free Grammars
Fall 2005 Costas Busch - RPI 1
Context-Free Languages
Fall 2005 Costas Busch - RPI 2
Regular Languages
}0:{ nba nn }{ Rww
**ba *)( ba
Fall 2005 Costas Busch - RPI 3
Regular Languages
}{ nnba }{ Rww
Context-Free Languages
Fall 2005 Costas Busch - RPI 4
Context-Free Languages
PushdownAutomata
Context-FreeGrammars
stack
automaton
Fall 2005 Costas Busch - RPI 5
Context-Free Grammars
Fall 2005 Costas Busch - RPI 6
GrammarsGrammars express languages
Example: the English language
verbpredicate
nounarticlephrasenoun
predicatephrasenounsentence
_
_
Fall 2005 Costas Busch - RPI 7
sleepsverb
runsverb
dognoun
catnoun
thearticle
aarticle
Fall 2005 Costas Busch - RPI 8
A derivation of “the dog walks”:
sleepsdogthe
verbdogthe
verbnounthe
verbnounarticle
verbphrasenoun
predicatephrasenounsentence
_
_
Fall 2005 Costas Busch - RPI 9
A derivation of “a cat runs”:
runscata
verbcata
verbnouna
verbnounarticle
verbphrasenoun
predicatephrasenounsentence
_
_
Fall 2005 Costas Busch - RPI 10
Language of the grammar:
L = { “a cat runs”, “a cat sleeps”, “the cat runs”, “the cat sleeps”, “a dog runs”, “a dog sleeps”, “the dog runs”, “the dog sleeps” }
Fall 2005 Costas Busch - RPI 11
Notation
dognoun
catnoun
Variable Terminal
Production Rules
Fall 2005 Costas Busch - RPI 12
Another ExampleGrammar:
Derivation of sentence :
S
aSbS
abaSbS
ab
aSbS S
Fall 2005 Costas Busch - RPI 13
Grammar:
Derivation of sentence :
aabbaaSbbaSbS
aSbS S
aabb
S
aSbS
Fall 2005 Costas Busch - RPI 14
aaabbbaaaSbbbaaSbbaSbS
aaaabbbbaaaaSbbbb
aaaSbbbaaSbbaSbS
Other derivations:
S
aSbSGrammar:
Fall 2005 Costas Busch - RPI 15
Language of the grammar
S
aSbS
}0:{ nbaL nn
Fall 2005 Costas Busch - RPI 16
More Notation
Grammar PSTVG ,,,
:V
:T
:S
:P
Set of variables
Set of terminal symbols
Start variable
Set of Production rules
Fall 2005 Costas Busch - RPI 17
Example
Grammar :
S
aSbSG
PSTVG ,,,
}{SV },{ baT
},{ SaSbSP
Fall 2005 Costas Busch - RPI 18
More NotationSentential Form: A sentence that contains variables and terminals
Example:
aaabbbaaaSbbbaaSbbaSbS
Sentential Forms sentence
Fall 2005 Costas Busch - RPI 19
We write:
Instead of:
aaabbbS*
aaabbbaaaSbbbaaSbbaSbS
Fall 2005 Costas Busch - RPI 20
nww*
1
nwwww 321
In zero or more steps
In general we write:
If:
ww*Trivially:
Fall 2005 Costas Busch - RPI 21
S
aSbS
aaabbbS
abS
S
*
*
*
Example Grammar Possible Derivations
baaaaaSbbbbaaSbb
aaSbbS
Fall 2005 Costas Busch - RPI 22
Another Grammar ExampleGrammar :
A
aAbA
AbS
Derivations:
aabbbaaAbbbaAbbAbS
abbaAbbAbS
bAbS
⇒⇒⇒⇒
⇒⇒⇒
⇒⇒
G
Fall 2005 Costas Busch - RPI 23
More Derivations
aaaabbbbbaaaaAbbbbb
aaaAbbbbaaAbbbaAbbAbS
bbaS
bbbaaaaaabbbbS
aaaabbbbbS
nn
A
aAbA
AbSGrammar
Fall 2005 Costas Busch - RPI 24
Language of a Grammar
For a grammar with start variable :
GS
}:{)( wSwGL
String of terminals
Fall 2005 Costas Busch - RPI 25
ExampleFor grammar :
A
aAbA
AbS
}0:{)( nbbaGL nn
Since: bbaS nn
G
Fall 2005 Costas Busch - RPI 26
A Convenient Notation
A
aAbA|aAbA
thearticle
aarticle
theaarticle |
Fall 2005 Costas Busch - RPI 27
Example
Context-free grammar : |aSbS
aabbaaSbbaSbS
G
Possible Derivations:
aaabbbaaaSbbbaaSbbaSbS
)(GL
(((( ))))
}0:{ nba nn
Describes parentheses:)b (, a
Fall 2005 Costas Busch - RPI 28
||bsbaSaS
abbaabSbaaSaS
Context-free grammar :G
Derivations:
Example
abaabaabaSabaabSbaaSaS
)(GL }*},{:{ bawwwR
Palindromes of even length
Fall 2005 Costas Busch - RPI 29
|| SSaSbS
ababSaSbSSSS
A context-free grammar :G
Derivations:
Example
abababaSbabSaSbSSSS
}prefixanyin
)()( and
),()(:{
v
vnvn
wnwnw
ba
ba
)(GL
() ((( ))) (( ))
Describes matched parentheses: )b (, a
Fall 2005 Costas Busch - RPI 30
Definition: Context-Free Grammars
Grammar
Productions of the form:
xAString of variables and terminals
),,,( PSTVG
Variables Terminalsymbols
Startvariable
Variable
Fall 2005 Costas Busch - RPI 31
*},:{)(*
TwwSwGL
),,,( PSTVG
The language of the grammar is:
Fall 2005 Costas Busch - RPI 32
Definition: Context-Free Languages
A language is context-free
if and only if
there is a context-free grammar with
L
G)(GLL
Fall 2005 Costas Busch - RPI 33
Derivation Orderand
Derivation Trees
Fall 2005 Costas Busch - RPI 34
Derivation Order ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
aabaaBbaaBaaABABS54321
Leftmost derivation:
aabaaAbAbABbABS32541
Rightmost derivation:
Fall 2005 Costas Busch - RPI 35
|AB
bBbA
aABS
Leftmost derivation:
abbbbabbbbB
abbBbbBabAbBabBbBaABS
Rightmost derivation:
abbbbabbBbb
abAbabBbaAaABS
Fall 2005 Costas Busch - RPI 36
ABS
ABS |aaAA |BbB
S
BA
Derivation Trees
Fall 2005 Costas Busch - RPI 37
ABS |aaAA |BbB
aaABABS
a a A
S
BA
Fall 2005 Costas Busch - RPI 38
ABS |aaAA |BbB
aaABbaaABABS S
BA
a a A B b
Fall 2005 Costas Busch - RPI 39
ABS |aaAA |BbB
aaBbaaABbaaABABS S
BA
a a A B b
Fall 2005 Costas Busch - RPI 40
ABS |aaAA |BbB
aabaaBbaaABbaaABABS S
BA
a a A B b
Derivation Tree
Fall 2005 Costas Busch - RPI 41
aabaaBbaaABbaaABABS
yield
aab
baa
S
BA
a a A B b
Derivation Tree
ABS |aaAA |BbB
Fall 2005 Costas Busch - RPI 42
Partial Derivation Trees
ABS
S
BA
Partial derivation tree
ABS |aaAA |BbB
Fall 2005 Costas Busch - RPI 43
aaABABS
S
BA
a a A
Partial derivation tree
Fall 2005 Costas Busch - RPI 44
aaABABS
S
BA
a a A
Partial derivation tree
sententialform
yield
aaAB
Fall 2005 Costas Busch - RPI 45
aabaaBbaaBaaABABS
aabaaAbAbABbABS S
BA
a a A B b
Same derivation tree
Sometimes, derivation order doesn’t matter
Leftmost:
Rightmost:
Fall 2005 Costas Busch - RPI 46
Ambiguity
Fall 2005 Costas Busch - RPI 47
aEEEEEE |)(|| aaa
E
EE
EE
a
a a
aaaEaa
EEaEaEEE
*
leftmost derivation
Fall 2005 Costas Busch - RPI 48
aEEEEEE |)(|| aaa
E
EE
a a
EE a
aaaEaa
EEaEEEEEE
leftmost derivation
Fall 2005 Costas Busch - RPI 49
aEEEEEE |)(|| aaa
E
EE
a a
EE a
E
EE
EE
a
a a
Two derivation trees
Fall 2005 Costas Busch - RPI 50
The grammar aEEEEEE |)(|| is ambiguous:
E
EE
a a
EE a
E
EE
EE
a
a a
string aaa has two derivation trees
Fall 2005 Costas Busch - RPI 51
string aaa has two leftmost derivations
aaaEaa
EEaEEEEEE
aaaEaa
EEaEaEEE
*
The grammar aEEEEEE |)(|| is ambiguous:
Fall 2005 Costas Busch - RPI 52
Definition:
A context-free grammar is ambiguous
if some string has:
two different derivation trees OR two leftmost derivations
G
)(GLw
Fall 2005 Costas Busch - RPI 53
Why do we care about ambiguity?
E
EE
a a
EE a
E
EE
EE
a
a a
aaa
take 2a
Fall 2005 Costas Busch - RPI 54
E
EE
EE
E
EE
EE
222
2
2 2 2 2
2
Fall 2005 Costas Busch - RPI 55
E
EE
EE
E
EE
EE
6222
2
2 2 2 2
2
8222
4
2 2
2
6
2 2
24
8
Good derivation Tree
Bad derivation Tree
Fall 2005 Costas Busch - RPI 56
• We want to remove ambiguity
• Ambiguity is bad for programming languages
Fall 2005 Costas Busch - RPI 57
We fix the ambiguous grammar:
aEEEEEE |)(||
New unambiguous grammar:
aEF
FFTT
TTEE
|)(
|
|
Fall 2005 Costas Busch - RPI 58
aaaFaaFFa
FTaTaTFTTTEE
E
E T
T F
F
a
T
F
a
a
aaa
aEF
FFTT
TTEE
|)(
|
|
Unique derivation tree
Fall 2005 Costas Busch - RPI 59
Another Ambiguous Grammar
IF_STMT if EXPR then STMT| if EXPR then STMT else STMT
Fall 2005 Costas Busch - RPI 60
If expr1 then if expr2 then stmt1 else stmt2
IF_STMT
expr1 then
elseif expr2 then
STMT
stmt1
if
IF_STMT
expr1 then else
if expr2 then
STMT stmt2if
stmt1
stmt2
Fall 2005 Costas Busch - RPI 61
Inherent Ambiguity
Some context free languageshave only ambiguous grammars
Example: }{}{ mmnmnn cbacbaL
||11
aAbA
AcSS
||22
bBcB
BaSS
21 | SSS
0, mn
Fall 2005 Costas Busch - RPI 62
The string nnn cbahas always two derivation trees(for any grammar)
S
1S
S
2S
1S c 2Sa
For example