Fall 2006 Costas Busch - RPI 1
Context-Free Languages
Fall 2006 Costas Busch - RPI 2
Regular Languages
}0:{ nba nn }{ Rww
**ba *)( ba
Context-Free Languages
Fall 2006 Costas Busch - RPI 3
Context-Free Languages
PushdownAutomata
Context-FreeGrammars
stack
automaton
Fall 2006 Costas Busch - RPI 4
Context-Free Grammars
Fall 2006 Costas Busch - RPI 5
GrammarsGrammars express languages
Example: the English language grammar
verbpredicate
nounarticlephrasenoun
predicatephrasenounsentence
_
_
Fall 2006 Costas Busch - RPI 6
sleepsverb
runsverb
dognoun
catnoun
thearticle
aarticle
Fall 2006 Costas Busch - RPI 7
Derivation of string “the dog walks”:
sleepsdogthe
verbdogthe
verbnounthe
verbnounarticle
verbphrasenoun
predicatephrasenounsentence
_
_
Fall 2006 Costas Busch - RPI 8
Derivation of string “a cat runs”:
runscata
verbcata
verbnouna
verbnounarticle
verbphrasenoun
predicatephrasenounsentence
_
_
Fall 2006 Costas Busch - RPI 9
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 2006 Costas Busch - RPI 10
catnoun
Variables
Sequence of Terminals (symbols)
Productions
predicatephrasenounsentence _
Sequence of Variables
Fall 2006 Costas Busch - RPI 11
Another Example
S
aSbSGrammar:
Variable
Sequence of terminals and variables
The right side may be
Fall 2006 Costas Busch - RPI 12
Grammar:
Derivation of string :
S
aSbS
abaSbS
ab
aSbS S
Fall 2006 Costas Busch - RPI 13
Grammar:
Derivation of string :
aabbaaSbbaSbS
aSbS S
aabb
S
aSbS
Fall 2006 Costas Busch - RPI 14
aaabbbaaaSbbbaaSbbaSbS
aaaabbbbaaaaSbbbb
aaaSbbbaaSbbaSbS
Other derivations:
S
aSbSGrammar:
Fall 2006 Costas Busch - RPI 15
S
aSbS
}0:{ nbaL nn
Grammar:
Language of the grammar:
Fall 2006 Costas Busch - RPI 16
We write:
Instead of:
aaabbbS*
aaabbbaaaSbbbaaSbbaSbS
for zero or more derivation steps
A Convenient Notation
Fall 2006 Costas Busch - RPI 17
nww*
1
nwwww 321
in zero or more derivation steps
In general we write:
If:
ww*Trivially:
Fall 2006 Costas Busch - RPI 18
S
aSbS
aaabbbS
abS
S
*
*
*
Example Grammar Possible Derivations
baaaaaSbbbbaaSbbS
Fall 2006 Costas Busch - RPI 19
S
aSbS|aSbS
thearticle
aarticle
theaarticle |
Another convenient notation:
Fall 2006 Costas Busch - RPI 20
Formal Definitions
PSTVG ,,,
Set of variables
Set of terminal symbols
Start variable
Set of productions
Grammar:
Fall 2006 Costas Busch - RPI 21
Context-Free Grammar:
All productions in are of the form
sA
String of variables and terminals
),,,( PSTVG
P
Variable
Fall 2006 Costas Busch - RPI 22
|aSbS
PSTVG ,,,
}{SV },{ baT
},{ SaSbSP
variablesterminals
productions
start variable
Example of Context-Free Grammar
Fall 2006 Costas Busch - RPI 23
For a grammar with start variable G S
String of terminals or
*},:{)(*
TwwSwGL
Language of a Grammar:
Fall 2006 Costas Busch - RPI 24
context-free grammar :
}0:{)( nbaGL nn
nnbaS
G
Example:
Since, there is derivation
for any 0n
|aSbS
Fall 2006 Costas Busch - RPI 25
A language is context-freeif there is a context-free grammar
with
LG
)(GLL
Context-Free Language:
Fall 2006 Costas Busch - RPI 26
since context-free grammar :
}0:{ nbaL nn
G
Example:
is a context-free language
generates LGL )(
|aSbS
Fall 2006 Costas Busch - RPI 27
|| bSbaSaS
abbaabSbaaSaS
Context-free grammar :G
Example derivations:
abaabaabaSabaabSbaaSaS
)(GL }*},{:{ bawwwR
Palindromes of even length
Another Example
Fall 2006 Costas Busch - RPI 28
|| SSaSbS
ababSaSbSSSS
Context-free grammar :G
Example derivations:
abababaSbabSaSbSSSS
}prefixanyin
)()( and
),()(:{
v
vnvn
wnwnw
ba
ba
)(GL
() ((( ))) (( ))
Describes matched parentheses: )b (, a
Another Example
Fall 2006 Costas Busch - RPI 29
Derivation Orderand
Derivation Trees
Fall 2006 Costas Busch - RPI 30
Derivation Order
Consider the following example grammar with 5 productions:
ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
Fall 2006 Costas Busch - RPI 31
aabaaBbaaBaaABABS54321
Leftmost derivation order of string :aab
At each step, we substitute the leftmost variable
ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
Fall 2006 Costas Busch - RPI 32
aabaaAbAbABbABS32541
Rightmost derivation order of string :aab
At each step, we substitute the rightmost variable
ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
Fall 2006 Costas Busch - RPI 33
aabaaAbAbABbABS32541
Rightmost derivation of :aab
aabaaBbaaBaaABABS54321
Leftmost derivation of :aab
ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
Fall 2006 Costas Busch - RPI 34
Derivation Trees
Consider the same example grammar:
aabaaBbaaABbaaABABS
And a derivation of :aab
ABS |aaAA |BbB
Fall 2006 Costas Busch - RPI 35
ABS S
BA
ABS |aaAA |BbB
yield AB
Fall 2006 Costas Busch - RPI 36
aaABABS
a a A
S
BA
ABS |aaAA |BbB
yield aaAB
Fall 2006 Costas Busch - RPI 37
aaABbaaABABS S
BA
a a A B b
ABS |aaAA |BbB
yield aaABb
Fall 2006 Costas Busch - RPI 38
aaBbaaABbaaABABS S
BA
a a A B b
ABS |aaAA |BbB
yieldaaBbBbaa
Fall 2006 Costas Busch - RPI 39
aabaaBbaaABbaaABABS
yieldaabbaa
S
BA
a a A B b
Derivation Tree
ABS |aaAA |BbB
(parse tree)
Fall 2006 Costas Busch - RPI 40
aabaaBbaaBaaABABS
aabaaAbAbABbABS S
BA
a a A B b
Give same derivation tree
Sometimes, derivation order doesn’t matter
Leftmost derivation:
Rightmost derivation:
Fall 2006 Costas Busch - RPI 41
Ambiguity
Fall 2006 Costas Busch - RPI 42
Grammar for mathematical expressions
))(()( aaaaaaa
Example strings:
Denotes any number
aEEEEEE |)(||
Fall 2006 Costas Busch - RPI 43
A leftmost derivationfor aaa
E
EE
EE
a
a a
aaaEaa
EEaEaEEE
*
aEEEEEE |)(||
Fall 2006 Costas Busch - RPI 44
E
EE
a a
EE a
aaaEaa
EEaEEEEEE
Another leftmost derivationfor
aEEEEEE |)(||
aaa
Fall 2006 Costas Busch - RPI 45
aaa E
EE
a a
EE a
E
EE
EE
a
a a
Two derivation treesfor
aEEEEEE |)(||
Fall 2006 Costas Busch - RPI 46
E
EE
EE
E
EE
EE
2
2 2 2 2
2
222 aaa
take 2a
Fall 2006 Costas Busch - RPI 47
E
EE
EE
E
EE
EE
6222
2
2 2 2 2
2
8222
4
2 2
2
6
2 2
24
8
Good Tree Bad Tree
Compute expression result using the tree
Fall 2006 Costas Busch - RPI 48
Two different derivation treesmay cause problems in applications whichuse the derivation trees:
• Evaluating expressions
• In general, in compilers for programming languages
Fall 2006 Costas Busch - RPI 49
Ambiguous Grammar:
A context-free grammar is ambiguousif there is a string which has:
two different derivation trees or two leftmost derivations
G)(GLw
(Two different derivation trees give two different leftmost derivations and vice-versa)
Fall 2006 Costas Busch - RPI 50
E
EE
a a
EE a
E
EE
EE
a
a a
string aaa has two derivation trees
aEEEEEE |)(||
this grammar is ambiguous since
Example:
Fall 2006 Costas Busch - RPI 51
string aaa has two leftmost derivations
aaaEaa
EEaEEEEEE
aaaEaa
EEaEaEEE
*
aEEEEEE |)(||
this grammar is ambiguous also because
Fall 2006 Costas Busch - RPI 52
IF_STMT if EXPR then STMT| if EXPR then STMT else STMT
Another ambiguous grammar:
Variables Terminals
Very common piece of grammar in programming languages
Fall 2006 Costas Busch - RPI 53
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
Two derivation trees
Fall 2006 Costas Busch - RPI 54
In general, ambiguity is bad and we want to remove it
Sometimes it is possible to find a non-ambiguous grammar for a language
But, in general we cannot do so
Fall 2006 Costas Busch - RPI 55
aE
EE
EEE
EEE
)(aEF
FFTT
TTEE
|)(
|
|
Ambiguous Grammar
Non-AmbiguousGrammar
Equivalent
generates the same language
A successful example:
Fall 2006 Costas Busch - RPI 56
aaaFaaFFa
FTaTaTFTTTEE
E
E T
T F
F
a
T
F
a
a
aEF
FFTT
TTEE
|)(
|
|
Unique derivation treefor aaa
Fall 2006 Costas Busch - RPI 57
}{}{ mmnmnn cbacbaL
0, mn
An un-successful example:
every grammar that generates this language is ambiguous
L is inherently ambiguous:
Fall 2006 Costas Busch - RPI 58
}{}{ mmnmnn cbacbaL
||11
aAbA
AcSS
||22
bBcB
BaSS
21 | SSS
Example (ambiguous) grammar for :L
Fall 2006 Costas Busch - RPI 59
The string Lcba nnn has always two different derivation trees(for any grammar)
S
1S
S
2S
1S c 2Sa
For example
Top Related