cse211slides03contextfreelanguages
cse211slides03contextfreelanguages
Professor
Department of Computer Science and Engineering
Bangladesh University of Engineering and Technology
January 2023
Grammar, G1 .
A → 0A1
A→B
B→#
Grammar, G1 .
A → 0A1
A→B
B→#
A → 0A1
A→B
B→#
A → 0A1
A→B
B→#
A→0A1
A ====⇒ 0A1
A→0A1
====⇒ 00A11
A→0A1
====⇒ 000A111
A→B
===⇒ 000B111
B→#
===⇒ 000#111
A→0A1
A ====⇒ 0A1
A→0A1
====⇒ 00A11
A→0A1
====⇒ 000A111
A→B
===⇒ 000B111
B→#
===⇒ 000#111
P → ϵ
P → 0
P → 1
P → 0P0
P → 1P1
P → ϵ
P → 0 Base cases
P → 1
P → 0P0
Recursive cases
P → 1P1
P → ϵ
P → 0 Base cases
P → 1
P → 0P0
Recursive cases
P → 1P1
P → ϵ | 0 | 1 | 0P0 | 1P1
Definition 2.2
A context-free grammar is a 4-tuple (V, Σ, R, S), where
1. V is a finite set called the variables,
2. Σ is a finite set, disjoint from V, called the terminals,
3. R is a finite set of rules, with each rule being a variable
and a string of variables and terminals, and
4. S ∈ V is the start variable.
∗
⇒ v, if u = v or if a sequence
Say that u derives v, written u =
u1 , u2 , . . . , uk exists for k ≥ 0 and
u ⇒ u1 ⇒ u2 ⇒ · · · ⇒ uk ⇒ v.
n o
∗
The language of the grammar is w ∈ Σ∗ | S =
⇒w .
G4 = (V, Σ, R, <EXPR>).
V is {<EXPR>, <TERM>, <FACTOR>},
and Σ is {a, +, ×, (, )}.
The rules are,
L = {0n 1n | n ≥ 0} ∪ {1n 0n | n ≥ 0}
S → S1 | S2
S1 → 0S1 1 | ϵ
S2 → 1S2 0 | ϵ.
L = 0n 12n | n ≥ 0
L = 0n 12n | n ≥ 0
L = 0n 12n | n ≥ 0
L = 0n 12n | n ≥ 0
S → 0S11 | ϵ
L = {0n 1m | m, n ≥ 0, 2n ≤ m ≤ 3n}
L = {0n 1m | m, n ≥ 0, 2n ≤ m ≤ 3n}
L = {0n 1m | m, n ≥ 0, 2n ≤ m ≤ 3n}
The grammar forces every 0 to match to 11 or 111.
L = {0n 1m | m, n ≥ 0, 2n ≤ m ≤ 3n}
The grammar forces every 0 to match to 11 or 111.
The context-free grammar for L is n=1
2<=m <=3
S → 0S11 | 0S111 | ϵ now think pair
L = {0n 1m | m, n ≥ 0, n ̸= m}
L = {0n 1m | m, n ≥ 0, n ̸= m}
L = {0n 1m | m, n ≥ 0, n ̸= m}
Let L1 = {0n 1m | m, n ≥ 0, n > m}
Let L2 = {0n 1m | m, n ≥ 0, n < m}
L = {0n 1m | m, n ≥ 0, n ̸= m}
Let L1 = {0n 1m | m, n ≥ 0, n > m}
Let L2 = {0n 1m | m, n ≥ 0, n < m}
Then, if S1 generates L1 , and S2 generates L2 , our grammar
will be,
S → S1 | S2
S1 → 0S1 | 0E
E → 0E1 | ϵ
S1 → 0S1 | 0E
E → 0E1 | ϵ
S2 → S2 1 | E1
E → 0E1 | ϵ
L = {0n 1m | m, n ≥ 0, n ̸= m}
S → S1 | S2
S1 → 0S1 | 0E
S2 → S2 1 | E1
E → 0E1 | ϵ
L = an bm ck | n, m, k ≥ 0 and n = m + k
L = an bm ck | n, m, k ≥ 0 and n = m + k
L = an bm ck | n, m, k ≥ 0 and n = m + k
L = an bm ck | n, m, k ≥ 0 and n = m + k
L = an bm ck | n, m, k ≥ 0 and n = m + k
S → aSc | B
B → aBb | ϵ
S → {S} S | ϵ
Examples:
ϵ∈L a ̸∈ L
|
a bb ∈ L b ̸∈ L
b | ab ∈ L |
ab abab ̸∈ L
aa | baba ∈ L |
aab aaaaaa ̸∈ L
bb | bbbb ∈ L bbbb ̸∈ L
aaa bab
abb bbb
aaabab bbabbb
aababa bbbaaaaaa
aaaaaaaaa bbbbbabaa
aaa bab
abb bbb
aaabab bbabbb
aababa bbbaaaaaa
aaaaaaaaa bbbbbabaa
aaa bab
abb bbb
aaabab bbabbb
aababa bbbaaaaaa
aaaaaaaaa bbbbbabaa
A → aAXX | ϵ
X→a|b
aaa bab
abb bbb
aaabab bbabbb
aababa bbbaaaaaa
aaaaaaaaa bbbbbabaa
B → bBXX | ϵ
X→a|b
aaa bab
abb bbb
aaabab bbabbb
aababa bbbaaaaaa
aaaaaaaaa bbbbbabaa
S→A|B
A → aAXX | ϵ
B → bBXX | ϵ
X→a|b
S→A|B|ϵ
A → aAXX
B → bBXX
X→a|b
P → 0Q R → 0R
P → 1P R → 1S
S→ϵ
Q → 0R S → 0S
Q → 1P S → 1S
E →E+T |T
T →T ×F |F
F → (E) | a
E →E+T |T
T →T ×F |F
F → (E) | a
A leftmost derivation.
E ⇒ E∗E
⇒ I∗E
⇒ a∗E
⇒ a ∗ (E)
⇒ a ∗ (E + E)
⇒ a ∗ (I + E)
⇒ a ∗ (a + E)
⇒ a ∗ (a + I)
⇒ a ∗ (a + I0)
⇒ a ∗ (a + I00)
⇒ a ∗ (a + b00)
E =⇒ E ∗ E =⇒ I ∗ E =⇒ a ∗ E =⇒
lm lm lm lm
a ∗ (E) =⇒ a ∗ (E + E) =⇒ a ∗ (I + E) =⇒
lm lm lm
a ∗ (a + E) =⇒ a ∗ (a + I) =⇒ a ∗ (a + I0) =⇒
lm lm lm
a ∗ (a + I00) =⇒ a ∗ (a + b00)
lm
E =⇒ E ∗ E =⇒ I ∗ E =⇒ a ∗ E =⇒
lm lm lm lm
a ∗ (E) =⇒ a ∗ (E + E) =⇒ a ∗ (I + E) =⇒
lm lm lm
a ∗ (a + E) =⇒ a ∗ (a + I) =⇒ a ∗ (a + I0) =⇒
lm lm lm
a ∗ (a + I00) =⇒ a ∗ (a + b00)
lm
∗
If S =⇒ α, then α is a left-sentential form.
lm
∗
If S =⇒ α, then α is a left-sentential form.
lm
∗
And if S =⇒ α, then α is a right-sentential form.
rm
∗
If S =⇒ α, then α is a left-sentential form.
lm
∗
And if S =⇒ α, then α is a right-sentential form.
rm
Note that the language L(G) is those sentential forms that
are in T ∗ ; i.e., they consist solely of terminals.
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
E =⇒ E ∗ E =⇒ I ∗ E =⇒ α ∗ E.
lm lm lm
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
E =⇒ E ∗ E =⇒ E ∗ (E) =⇒ E ∗ (E + E)
rm rm rm
X1 , X2 , . . . , Xk
1 E→I 5 I→a
2 E → E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E → E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
P → ϵ
P → 0
P → 1
P → 0P0
P → 1P1
P → ϵ
P → 0
P → 1
P → 0P0
P → 1P1
P → ϵ
P → 0
P → 1
P → 0P0
P → 1P1
These are the parse trees whose yields are strings in the
language of the underlying grammar.
These are the parse trees whose yields are strings in the
language of the underlying grammar.
Expression grammar of
figure lets us generate
expressions with any 1 E→I 5 I→a
sequence of ∗ and + 2 E →E+E 6 I→b
operators. 3 E →E∗E 7 I → Ia
The productions 4 E → (E) 8 I → Ib
E → E + E | E ∗ E allow
9 I → I0
us to generate these
expressions in any 10 I → I1
order we choose.
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
3 + 4 ∗ 5 = 23?
3 + 4 ∗ 5 = 35?
1. E ⇒E+E ⇒E+E∗E
2. E ⇒E∗E ⇒E+E∗E
1 E→I 5 I→a
2 E→ 6 I→b
E+E 7 I → Ia
3 E → E∗E 8 I → Ib
4 E → (E) 9 I → I0
10 I → I1
1 E→I 5 I→a
2 E→ 6 I→b
E+E 7 I → Ia
3 E → E∗E 8 I → Ib
4 E → (E) 9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
They each say that a and b are identifiers, and that their
values are to be added.
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
1 E→I 5 I→a
2 E →E+E 6 I→b
3 E →E∗E 7 I → Ia
4 E → (E) 8 I → Ib
9 I → I0
10 I → I1
Grammar, G5 .
Definition 2.7
A string w is derived ambiguously in context-free
grammar G if it has two or more different leftmost
derivations.
Grammar G is ambiguous if it generates some string
ambiguously.
ambiguous.