Beruflich Dokumente
Kultur Dokumente
Regular Languages
a *b * ( a b) *
Regular Languages
Context-Free Pushdown
Grammars Automata
stack
automaton
predicate verb
Fall 2005 Costas Busch - RPI 6
article a
article the
noun cat
noun dog
verb runs
verb sleeps
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 10
Notation
Production Rules
noun cat
noun dog
Variable Terminal
Derivation of sentence ab :
S aSb ab
S aSb S
Fall 2005 Costas Busch - RPI 12
Grammar: S aSb
S
S aSb S
Fall 2005 Costas Busch - RPI 13
Grammar: S aSb
S
Other derivations:
S aSb
S
n n
L {a b : n 0}
Grammar G V ,T , S , P
V : Set of variables
Grammar G: S aSb
S
G V ,T , S , P
V {S } T {a, b}
P {S aSb, S }
Fall 2005 Costas Busch - RPI 17
More Notation
Sentential Form:
A sentence that contains
variables and terminals
Example:
Instead of:
If: w1 w2 w3 wn
*
Trivially: w w
Fall 2005 Costas Busch - RPI 20
Example Grammar Possible Derivations
S aSb S
*
S *
S ab
*
S aaabbb
S aaSbb
aaSbb aaaaaSbbbbb
Derivations:
S ⇒ Ab ⇒ b
S ⇒ Ab ⇒ aAbb ⇒ abb
S ⇒ Ab ⇒ aAbb ⇒ aaAbbb ⇒ aabbb
Fall 2005 Costas Busch - RPI 22
More Derivations
S Ab aAbb aaAbbb aaaAbbbb
aaaaAbbbbb aaaabbbbb
Grammar
S aaaabbbbb S Ab
A aAb
S aaaaaabbbbbbb A
n n
S a b b
Fall 2005 Costas Busch - RPI 23
Language of a Grammar
For a grammar G
with start variable S:
L(G ) {w : S w}
String of terminals
Fall 2005 Costas Busch - RPI 24
Example
For grammar G: S Ab
A aAb
A
n n
L(G ) {a b b : n 0}
n n
Since: S a b b
Fall 2005 Costas Busch - RPI 25
A Convenient Notation
A aAb
A aAb |
A
article a
article a | the
article the
Fall 2005 Costas Busch - RPI 26
Example
Context-free grammar G: S aSb |
Possible Derivations:
S aSb aaSbb aabb
S aSb aaSbb aaaSbbb aaabbb
n n
L(G ) {a b : n 0}
R
L(G ) {ww : w {a, b}*}
Palindromes of even length
Fall 2005 Costas Busch - RPI 28
Example
A context-free grammar G:
S aSb | SS |
Derivations:
S SS aSbS abS ab
S SS aSbS abS abaSb abab
L(G ) {w : na ( w) nb ( w),
and na (v) nb (v)
Describes
in any prefix v}
matched
parentheses: () ((( ))) (( )) a (, b )
Fall 2005 Costas Busch - RPI 29
Definition: Context-Free Grammars
Grammar G (V , T , S , P)
A language L is context-free
if and only if
Rightmost derivation:
1 4 5 2 3
S AB ABb Ab aaAb aab
Fall 2005 Costas Busch - RPI 34
S aAB
A bBb
B A|
Leftmost derivation:
S aAB abBbB abAbB abbBbbB
abbbbB abbbb
Rightmost derivation:
S aAB aA abBb abAb
abbBbb abbbb
Fall 2005 Costas Busch - RPI 35
Derivation Trees
S AB A aaA | B Bb |
S AB
S
A B
S AB aaAB
S
A B
a a A
S AB aaAB aaABb
S
A B
a a A B b
A B
a a A B b
Fall 2005 Costas Busch - RPI 39
S AB A aaA | B Bb |
A B
a a A B b
Fall 2005 Costas Busch - RPI 40
S AB A aaA | B Bb |
A B
yield
a a A B b aab
aab
Fall 2005 Costas Busch - RPI 41
Partial Derivation Trees
S AB A aaA | B Bb |
S AB
Partial derivation tree S
A B
A B
a a A
A B
yield
a a A
aaAB
Fall 2005 Costas Busch - RPI 44
Sometimes, derivation order doesn’t matter
Leftmost:
S AB aaAB aaB aaBb aab
Rightmost:
S AB ABb Ab aaAb aab
S
Same derivation tree
A B
a a A B b
E E E E a E a EE
a a E a a*a
E E
leftmost derivation
a E E
a a
Fall 2005 Costas Busch - RPI 47
E E E | E E | (E) | a
a aa
E E a
a a
Fall 2005 Costas Busch - RPI 48
E E E | E E | (E) | a
a aa
Two derivation trees
E E
E E E E
a E E E E a
a a a a
Fall 2005 Costas Busch - RPI 49
The grammar E E E | E E | (E) | a
is ambiguous:
E E
E E E E
a E E E E a
a a a a
Fall 2005 Costas Busch - RPI 50
The grammar E E E | E E | (E) | a
is ambiguous:
E E E a E a EE
a a E a a*a
a aa
take a2
E E
E E E E
a E E E E a
a a a a
Fall 2005 Costas Busch - RPI 53
2 22
E E
E E E E
2 E E E E 2
2 2 2 2
Fall 2005 Costas Busch - RPI 54
Good Bad
derivation Tree derivation Tree
2 22 6 2 22 8
6 8
E E
2 4 4 2
E E E E
2 2 2 2
2 E E E E 2
2 2 2 2
Fall 2005 Costas Busch - RPI 55
• Ambiguity is bad for programming languages
E E T |T
T T F | F
F (E) | a
F F a
Unique
derivation tree
a a
Fall 2005 Costas Busch - RPI 58
Another Ambiguous Grammar
IF_STMT
S S1 | S 2 S1 S1c | A S2 aS2 | B
A aAb | B bBc |
Fall 2005 Costas Busch - RPI 61
n n n
The string a b c
has always two derivation trees
(for any grammar)
For example
S S
S1 S2
S1 c a S2