Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 61

Formal Languages & Finite

Theory of Automata
BS Course

Slide # : 05
Muhammad Faizan Tahir
Context-Free Languages

2
Context-Free Languages

n n R
{a b : n  0} {ww }

Regular Languages
a *b * ( a  b) *

3
Context-Free Languages

Context-Free Pushdown
Grammars Automata

stack

automaton

4
Context-Free Grammars

5
Grammars
Grammars express languages

Example: the English language grammar

sentence  noun _ phrase predicate

noun _ phrase  article noun

predicate  verb
6
article  a
article  the

noun  cat
noun  dog

verb  runs
verb  sleeps
7
Derivation of string “the dog walks”:

sentence  noun _ phrase predicate


 noun _ phrase verb
 article noun verb
 the noun verb
 the dog verb
 the dog sleeps

8
Derivation of string “a cat runs”:

sentence  noun _ phrase predicate


 noun _ phrase verb
 article noun verb
 a noun verb
 a cat verb
 a cat runs

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” }
10
Productions Sequence of
Terminals (symbols)

noun  cat

sentence  noun _ phrase predicate

Variables Sequence of Variables

11
Backus Naur Form

{A string consist of at least one non-


terminal}  {A string of terminals / non-
terminals / terminals & non-terminals}

E.g.
<number> = <digit> | <number> <digit>
<digit> = 0, 1, 2, …, 9

12
Another Example

Sequence of
terminals and variables

Grammar: S  aSb
S 

Variable The right side


may be 

13
Grammar: S  aSb
S 

Derivation of string ab :
S  aSb  ab

S  aSb S 
14
Grammar: S  aSb
S 

Derivation of string aabb :


S  aSb  aaSbb  aabb

S  aSb S 
15
Grammar: S  aSb
S 

Other derivations:

S  aSb  aaSbb  aaaSbbb  aaabbb

S  aSb  aaSbb  aaaSbbb


 aaaaSbbbb  aaaabbbb
16
Grammar: S  aSb
S 

Language of the grammar:

n n
L  {a b : n  0}

17
A Convenient Notation
*
We write: S  aaabbb
for zero or more derivation steps

Instead of:

S  aSb  aaSbb  aaaSbbb  aaabbb

18
*
In general we write: w1  wn

If: w1  w2  w3    wn

in zero or more derivation steps

*
Trivially: w  w
19
Example Grammar Possible Derivations
S  aSb *
S 
S  *
S  ab
*
S  aaabbb

 
S  aaSbb  aaaaaSbbbbb

20
Another convenient notation:

S  aSb
S  aSb | 
S 

article  a
article  a | the
article  the
21
Formal Definitions

Grammar: G   V , T , S , P 

Set of
variables
Set of Start Set of
terminal variable productions
symbols

22
Context-Free Grammar: G  (V , T , S , P )

All productions in P are of the form

A s
Variable String of
variables and
terminals

23
Example of Context-Free Grammar
S  aSb | 
productions
P  {S  aSb, S  }

G   N ,T , S, P

N  {S} S

Non-Terminals T  {a, b} start variable


Terminals

24
Language of a Grammar:

For a grammar G with start variable S


*
L(G )  {w : S  w, w  T *}

String of terminals or 

25
Example:

context-free grammar G : S  aSb | 

L(G )  {a b : n  0}
n n

Since, there is derivation



S a b n n
for any n 0
26
Context-Free Language:
A language L is context-free
if there is a context-free grammar G
with L  L(G )

27
Example:

L  {a b : n  0 }
n n

is a context-free language
since context-free grammar G :
S  aSb | 

generates L(G )  L

28
Another Example

Context-free grammar G :
S  aSa | bSb | 
Example derivations:
S  aSa  abSba  abba
S  aSa  abSba  abaSaba  abaaba

R
L(G )  {ww : w  {a, b}*}
Palindromes of even length
29
Another Example
Context-free grammar G:
S  aSb | SS | 
Example 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 )
30
Derivation Order
and
Derivation Trees

31
Derivation Order

Consider the following example grammar


with 5 productions:

1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

32
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Leftmost derivation order of string aab :

1 2 3 4 5
S  AB  aaAB  aaB  aaBb  aab

At each step, we substitute the


leftmost variable
33
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Rightmost derivation order of string aab :

1 4 5 2 3
S  AB  ABb  Ab  aaAb  aab
At each step, we substitute the
rightmost variable
34
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Leftmost derivation of aab :


1 2 3 4 5
S  AB  aaAB  aaB  aaBb  aab

Rightmost derivation of aab :


1 4 5 2 3
S  AB  ABb  Ab  aaAb  aab
35
Derivation Trees
Consider the same example grammar:

S  AB A  aaA |  B  Bb | 

And a derivation of aab :

S  AB  aaAB  aaABb  aaBb  aab

36
S  AB A  aaA |  B  Bb | 

S  AB
S

A B

yield AB

37
S  AB A  aaA |  B  Bb | 

S  AB  aaAB
S

A B

yield aaAB
a a A

38
S  AB A  aaA |  B  Bb | 

S  AB  aaAB  aaABb
S

A B

a a A B b

yield aaABb
39
S  AB A  aaA |  B  Bb | 
S  AB  aaAB  aaABb  aaBb
S

A B

a a A B b

yield
 aaBb  aaBb
40
S  AB A  aaA |  B  Bb | 
S  AB  aaAB  aaABb  aaBb  aab
Derivation Tree S
(parse tree)
A B

a a A B b
yield
  aab  aab
41
Sometimes, derivation order doesn’t matter
Leftmost derivation:
S  AB  aaAB  aaB  aaBb  aab
Rightmost derivation:
S  AB  ABb  Ab  aaAb  aab
S

Give same A B
derivation tree
a a A B b

  42
Ambiguity

43
Grammar for mathematical expressions

E  E  E | E  E | (E) | a

Example strings:
(a  a )  a  (a  a  (a  a ))

Denotes any number

44
E  E  E | E  E | (E) | a

E  E  E  a E  a EE
E
 a  a E  a  a*a
E  E
A leftmost derivation
for a  a  a
a E  E

a a
45
E  E  E | E  E | (E) | a

E  EE  E  EE  a EE


E
 a  aE  a  aa
E  E
Another
leftmost derivation
for a  a  a E  E a

a a
46
E  E  E | E  E | (E) | a

Two derivation trees


for a  a  a
E E

E  E E  E

a E  E E  E a

a a a a
47
take a2

a  a a  2  22
E E

E  E E  E

2 E  E E  E 2

2 2 2 2
48
Good Tree Bad Tree
2  22  6 2  22  8
6 Compute expression result 8
E using the tree E
2 4 4 2
E  E E  E
2 2 2 2
2 E  E E  E 2

2 2 2 2
49
Two different derivation trees
may cause problems in applications which
use the derivation trees:

• Evaluating expressions

• In general, in compilers
for programming languages

50
Ambiguous Grammar:
A context-free grammar G is ambiguous
if there is a string w L(G ) which has:

two different derivation trees


or
two leftmost derivations

(Two different derivation trees give two


different leftmost derivations and vice-versa)
51
Example: E  E  E | E  E | (E) | a

this grammar is ambiguous since


string a  a  a has two derivation trees
E E

E  E E  E

a E  E E  E a

a a a a
52
E  E  E | E  E | (E) | a
this grammar is ambiguous also because
string a  a  a has two leftmost derivations
E  E  E  a E  a EE
 a  a E  a  a*a

E  EE  E  EE  a EE


 a  aE  a  aa
53
Another ambiguous grammar:

IF_STMT  if EXPR then STMT


| if EXPR then STMT else STMT

Variables Terminals

Very common piece of grammar


in programming languages
54
If expr1 then if expr2 then stmt1 else stmt2
IF_STMT

if expr1 then STMT

if expr2 then stmt1 else stmt2

Two derivation trees


IF_STMT

if expr1 then STMT else stmt2

if expr2 then stmt1


55
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

56
A successful example:
Equivalent
Ambiguous
Non-Ambiguous
Grammar
Grammar
E E E
E  E T |T
E  E E
T T  F | F
E  (E )
E a F  (E ) | a
generates the same
language
57
E  E T T T  F T  a T  a T F
 a  F F  a  aF  a  aa
E
E  E T |T
E  T
T T F | F
F  (E) | a T T  F

F F a
Unique
derivation tree
for a  a  a a a
58
An un-successful example:

n n m n m m
L  {a b c }  {a b c }
n, m  0

L is inherently ambiguous:

every grammar that generates this


language is ambiguous

59
Example (ambiguous) grammar for L:

n n m n m m
L  {a b c }  {a b c }

S  S1 | S 2 S1  S1c | A S 2  aS2 | B
A  aAb |  B  bBc | 

60
The string a n b n c n  L
has always two different derivation trees
(for any grammar)

For example
S S

S1 S2

S1 c a S2

61

You might also like