100% found this document useful (1 vote)
305 views

Theory of Computation

1. The document discusses context-free languages and context-free grammars. It defines them and provides examples. 2. Context-free grammars can generate derivation trees to show the parsing of strings. They may be ambiguous if a string has more than one derivation tree. 3. Removing ambiguity from grammars is important for applications like programming languages by having each string parse to a single structure. However, some languages inherently require ambiguous grammars.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
305 views

Theory of Computation

1. The document discusses context-free languages and context-free grammars. It defines them and provides examples. 2. Context-free grammars can generate derivation trees to show the parsing of strings. They may be ambiguous if a string has more than one derivation tree. 3. Removing ambiguity from grammars is important for applications like programming languages by having each string parse to a single structure. However, some languages inherently require ambiguous grammars.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 48

1

Context-Free Languages

2

Regular Languages
} {
n n
b a
} {
R
ww
3

Regular Languages
} {
n n
b a
} {
R
ww
Context-Free Languages
4
Context-Free Languages
Pushdown
Automata
Context-Free
Grammars
stack
automaton
5
Context-Free Grammars

6
Example

A context-free grammar :

S
aSb S
aabb aaSbb aSb S
G
A derivation:
7

A context-free grammar :

S
aSb S
aaabbb aaaSbbb aaSbb aSb S
G
Another derivation:
8

S
aSb S
= ) (G L
(((( ))))
} 0 : { > n b a
n n
9

S
bSb S
aSa S
abba abSba aSa S
A context-free grammar : G
A derivation:
Example
10

S
bSb S
aSa S
abaaba abaSaba abSba aSa S
A context-free grammar : G
Another derivation:
11

S
bSb S
aSa S
= ) (G L
}*} , { : { b a w ww
R
e
12

S
SS S
aSb S
ab abS aSbS SS S
A context-free grammar : G
A derivation:
Example
13

S
SS S
aSb S
abab abaSb abS aSbS SS S
A context-free grammar : G
A derivation:
14

S
SS S
aSb S
} prefix any in
) ( ) ( and
), ( ) ( : {
v
v n v n
w n w n w
b a
b a
>
=
() ((( ))) (( ))
= ) (G L
15
Definition: Context-Free Grammars
Grammar
Productions of the form:
x A
x
is string of variables and terminals
) , , , ( P S T V G =
Variables Terminal
symbols
Start
variables
16
Definition: Context-Free Languages

A language is context-free

if and only if

there is a grammar with
L
G ) (G L L =
17
Derivation Order

AB S . 1

A
aaA A
. 3
. 2

B
Bb B
. 5
. 4
aab aaBb aaB aaAB AB S
5 4 3 2 1

Leftmost derivation:
aab aaAb Ab ABb AB S
3 2 5 4 1

Rightmost derivation:
18
| A B
bBb A
aAB S

Leftmost derivation:
abbbb abbbbB
abbBbbB abAbB abBbB aAB S


Rightmost derivation:
abbbb abbBbb
abAb abBb aA aAB S


19
Derivation Trees

20

AB S
AB S
| aaA A | Bb B
S
B A
21
AB S
| aaA A | Bb B
aaAB AB S
a a
A
S
B A
22
AB S
| aaA A | Bb B
aaABb aaAB AB S
S
B A
a a
A B b
23
AB S
| aaA A | Bb B
aaBb aaABb aaAB AB S
S
B A
a a
A B b

24
AB S
| aaA A | Bb B
aab aaBb aaABb aaAB AB S
S
B A
a a
A B b

Derivation Tree
25
aab aaBb aaABb aaAB AB S
yield
aab
b aa
=

S
B A
a a
A B b

Derivation Tree
AB S
| aaA A | Bb B
26
Partial Derivation Trees

AB S
S
B A
Partial derivation tree
AB S | aaA A
| Bb B
27

aaAB AB S
S
B A
a a
A
Partial derivation tree
28

aaAB AB S
S
B A
a a
A
Partial derivation tree
sentential
form
yield
aaAB
29

aab aaBb aaB aaAB AB S
aab aaAb Ab ABb AB S
S
B A
a a
A B b

Same derivation tree
Sometimes, derivation order doesnt matter
Leftmost:
Rightmost:
30
Ambiguity

31
a E E E E E E | ) ( | | - +
a a a - +
E
E E
E E
+
a
a
a
-
a a a E a a
E E a E a E E E
* + - +
- + + +
leftmost derivation
32
a E E E E E E | ) ( | | - +
a a a - +
E
E E
+
a
a
-
E E
a
a a a E a a
E E a E E E E E E
- + - +
- + - + -
leftmost derivation
33
a E E E E E E | ) ( | | - +
a a a - +
E
E E
+
a
a
-
E E
a
E
E E
E E
+
a
a
a
-
Two derivation trees
34
The grammar
a E E E E E E | ) ( | | - +
is ambiguous:
E
E E
+
a
a
-
E E
a
E
E E
E E
+
a
a
a
-
string a a a - + has two derivation trees
35
string a a a - + has two leftmost derivations
a a a E a a
E E a E E E E E E
- + - +
- + - + -
a a a E a a
E E a E a E E E
* + - +
- + + +
The grammar
a E E E E E E | ) ( | | - +
is ambiguous:
36
Definition:
A context-free grammar is ambiguous

if some string has:

two or more derivation trees
G
) (G L we
37
In other words:
A context-free grammar is ambiguous

if some string has:

two or more leftmost derivations
G
) (G L we
(or rightmost)
38
Why do we care about ambiguity?
E
E E
+
a
a
-
E E
a
E
E E
E E
+
a
a
a
-
a a a - +
take 2 = a
39
E
E E
+
-
E E
E
E E
E E
+
-
2 2 2 - +
2
2 2 2 2
2
40
E
E E
+
-
E E
E
E E
E E
+
-
6 2 2 2 = - +
2
2 2 2 2
2
8 2 2 2 = - +
4
2 2
2
6
2 2
2 4
8
41
E
E E
E E
+
-
6 2 2 2 = - +
2
2 2
4
2 2
2
6
Correct result:
42
We want to remove ambiguity
Ambiguity is bad for programming languages
43
We fix the ambiguous grammar:
a E E E E E E | ) ( | | - +
New non-ambiguous grammar:
a F
E F
F T
F T T
T E
T E E

+
) (
44
a F
E F
F T
F T T
T E
T E E

+
) (
a a a F a a F F a
F T a T a T F T T T E E
- + - + - +
- + + + + +
E
E T +
T
-
F
F
a
T
F
a
a
a a a - +
45
E
E T +
T
-
F
F
a
T
F
a
a
a a a - +
Unique derivation tree
46
The grammar :
a F
E F
F T
F T T
T E
T E E

+
) (
is non-ambiguous:
Every string has
a unique derivation tree
G
) (G L we
47
Inherent Ambiguity

Some context free languages
have only ambiguous grammars
Example:
} { } {
m m n m n n
c b a c b a L =
|
|
1 1
aAb A
A c S S

|
|
2 2
bBc B
B aS S

2 1
| S S S
48
The string
n n n
c b a
has two derivation trees
S
1
S
S
2
S
1
S
c
2
S
a

You might also like