You are on page 1of 69

PDAs Accept

Context-Free Languages

Fall 2004 Costas Busch - RPI 1


Theorem:


Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Fall 2004 Costas Busch - RPI 2


Proof - Step 1:


Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Convert any context-free grammar G


to a PDA M with: L(G )  L( M )

Fall 2004 Costas Busch - RPI 3


Proof - Step 2:


Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Convert any PDA M to a context-free


grammar G with: L(G )  L( M )

Fall 2004 Costas Busch - RPI 4


Proof - step 1
Converting

Context-Free Grammars
to
PDAs

Fall 2004 Costas Busch - RPI 5



Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Convert any context-free grammar G


to a PDA M with: L(G )  L( M )

Fall 2004 Costas Busch - RPI 6


We will convert grammar G

to a PDA M such that:

M simulates leftmost derivations of G

Fall 2004 Costas Busch - RPI 7


Convert grammar G to PDA M

Production in G Terminal in G
Aw a

, A  w a, a  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 8
Grammar PDA computation
Simulates grammar
leftmost
leftmost derivations
derivation
(q0 ,  1  k k 1  n ,$)
S  (q1 ,  1  k k 1  n , S $)
 
  1  k X 1  X m  (q1 ,  k 1  n , X 1  X m $)
 
  1  k k 1  n  (q2 ,  ,$)

Leftmost
variable
Fall 2004 Costas Busch - RPI 9
Example
Grammar
S  aSTb
S b PDA

T  Ta  , S  aSTb
T  , S  b
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 10
Grammar PDA computation
derivation
(q0 , abab,$)
S  (q1 , abab, S $)
 aSTb  (q1 , bab, STb$)
 (q1 , bab, bTb$)
 abTb
 (q1 , ab, Tb$)
 abTab  (q1 , ab, Tab $)
 abab  (q1 , ab, ab$)
 (q1 , b, b$)
 (q1 ,  ,$)
 (q2 ,  ,$)

Fall 2004 Costas Busch - RPI 11


Derivation:

Input a b a b

 , S  aSTb $
Time 0
, S  b Stack
 , T  Ta a, a  
, T   b, b  

,   S , $  $
q0 q1 q2
Fall 2004 Costas Busch - RPI 12
Derivation: S

Input a b a b
S
 , S  aSTb $
Time 0
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 13
Derivation: S  aSTb a
S
Input a b a b
T
b
 , S  aSTb $
Time 1
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 14
Derivation: S  aSTb a
S
Input a b a b
T
b
 , S  aSTb $
Time 2
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 15
Derivation: S  aSTb  abTb
b
Input a b a b
T
b
 , S  aSTb $
Time 3
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 16
Derivation: S  aSTb  abTb
b
Input a b a b
T
b
 , S  aSTb $
Time 4
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 17
Derivation: S  aSTb  abTb  abTab
T
Input a b a b a
b
 , S  aSTb $
Time 5
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 18
Derivation: S  aSTb  abTb  abTab  abab
T
Input a b a b a
b
 , S  aSTb $
Time 6
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 19
Derivation: S  aSTb  abTb  abTab  abab

Input a b a b a
b
 , S  aSTb $
Time 7
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 20
Derivation: S  aSTb  abTb  abTab  abab

Input a b a b
b
 , S  aSTb $
Time 8
, S  b Stack
 , T  Ta a, a  
, T   b, b  

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 21
Derivation: S  aSTb  abTb  abTab  abab

Input a b a b

 , S  aSTb $
Time 9
, S  b Stack
 , T  Ta a, a  
, T   b, b  
accept

q0 ,   S q1 , $  $ q2
Fall 2004 Costas Busch - RPI 22
In general, it can be shown that:

Grammar G
generates PDA M
If and accepts w
string w
Only if
* (q0 , w,$)  (q2 ,  ,$)
Sw

Therefore L(G )  L( M )
Fall 2004 Costas Busch - RPI 23
Therefore:

For any context-free language L


there is a PDA that accepts L


Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Fall 2004 Costas Busch - RPI 24


Proof - step 2
Converting

PDAs
to
Context-Free Grammars

Fall 2004 Costas Busch - RPI 25



Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Convert any PDA M to a context-free


grammar G with: L(G )  L( M )

Fall 2004 Costas Busch - RPI 26


We will convert PDA M to
a context-free grammar G such that:

G simulates computations of M
with leftmost derivations

Fall 2004 Costas Busch - RPI 27


Some Necessary Modifications

If necessary, modify the PDA so that:

1. The stack is never empty during computation

2. It has a single accept state


and empties the stack when it accepts a string

3. Has transitions without popping 

Fall 2004 Costas Busch - RPI 28


1. Modify the PDA so that
the stack is never empty
during computation

Stack

a
$ $
OK OK NOT OK

Fall 2004 Costas Busch - RPI 29


Introduce the new symbol # to mark
the bottom of the stack

a
$ $

a
$ $
# # #
Fall 2004 Costas Busch - RPI 30
At the beginning insert # into the stack
Original PDA
new
initial state
 ,$  $#

original
initial state
Fall 2004 Costas Busch - RPI 31
Convert all transitions so that
after popping $ the automaton halts

pop $ ,  s q
qi j

x    {# }
pop $ qi
, x  x ,  s qj
,
#
#
halting state
Fall 2004 Costas Busch - RPI 32
2. Modify the PDA so that at end
it empties stack and
has a unique accept state
Empty stack
PDA x    {# }
,  , x  


,   
, #   q
f
  
, New
accept
Old accept states state
Fall 2004 Costas Busch - RPI 33
3. Modify the PDA so that it has no
transitions popping  :

,   y
qi qj

 ,   y
qi qj
    {# }
Fall 2004 Costas Busch - RPI 34
Example of a PDA in correct form:
(modifications are not necessary)

L( M )  {w  {a, b} : na ( w)  nb ( w)}
*

a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0
Fall 2004 Costas Busch - RPI 35
Grammar Construction

In grammar G:
Variables: A PDA stack symbols

Terminals: a PDA input symbols

Start Variable: $ or # Stack bottom symbol

Fall 2004 Costas Busch - RPI 36


PDA transition q a, A   q1

Grammar production Aa

Fall 2004 Costas Busch - RPI 37


q a , A  B B  Bm q1
PDA transition 1 2

Grammar production A  aB1 B2  Bm

Fall 2004 Costas Busch - RPI 38


Grammar
leftmost
PDA computation
derivation
S  (q1 ,  1  k k 1  n ,$)
 
  1  k X 1  X m  (q1 ,  k 1  n , X 1  X m )
 
  1  k k 1  n  ( q2 ,  ,  )

Leftmost
variable
Fall 2004 Costas Busch - RPI 39
Example PDA:
a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0

Grammar: $  a 0$ $  b1$
0  a 00 1  b11
1 a 0b $
Fall 2004 Costas Busch - RPI 40
Grammar
PDA
Leftmost
Computation:
derivation:
$ (q0 , abba,$)
 a 0$  (q0 , bba,0$)
 ab$  (q0 , ba,$)
 abb1$  (q0 , a,1$)
 abba$  (q0 ,  ,$)
 abba (q f ,  ,  )
Fall 2004 Costas Busch - RPI 41
Derivation: $

a b b a Time 0

a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0
Fall 2004 Costas Busch - RPI 42
Derivation: $  a 0$

a b b a Time 1

0
a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 43
Derivation: $  a0$  ab$

a b b a Time 2

a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 44
Derivation: $  a0$  ab$  abb1$

a b b a Time 3

1
a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 45
Derivation: $  a0$  ab$  abb1$
abba$

a b b a Time 4

a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 46
Derivation: $  a0$  ab$  abb1$
abba$  abba

a b b a Time 5

a, $  0$ b, $  1$ empty
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 47
However, this grammar conversion
does not work for all PDAs:

a, $  A$
a, A  A$ b, A  

q0
b, A   , $   qf
q1

L( M )  {a b : n  1}
n n

Fall 2004 Costas Busch - RPI 48


a, $  A$
a, A  A$ b, A  

q0
b, A   , $   qf
q1

Grammar:
$  aA$ A  aA$
$ Ab

Fall 2004 Costas Busch - RPI 49


Bad Derivation:

S  aA$  aaA$  aab$  aab  L( M )

Grammar:
$  aA$ A  aA$
$ Ab

Fall 2004 Costas Busch - RPI 50


The Correct Grammar Construction

In grammar G :
PDA stack symbol

Variables: (qi Aq j )

PDA states

Terminals: Input symbols of PDA


Fall 2004 Costas Busch - RPI 51
PDA transition q a, A   q1

Grammar production (qAq1 )  a

Fall 2004 Costas Busch - RPI 52


PDA transition
a, A  B1 B2  Bm q1
q

Grammar production
(qAqm )  a (q1 B1q2 )(q2 B2 q3 )  (qm Bm qm 1 )

For all possible states q2 ,  , qm 1 in PDA

Fall 2004 Costas Busch - RPI 53


Stack bottom symbol
$ or #

Start Variable: (qo Zq f )

Start state accept state

Fall 2004 Costas Busch - RPI 54


Example:
a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0

Grammar production: (q01q0 )  a


Fall 2004 Costas Busch - RPI 55
Example:
a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0
Grammar productions:
(q0 $q0 )  b(q01q0 )(q0 $q0 ) | b(q01q f )(q f $q0 )
(q0 $q f )  b( q01q0 )(q0 $q f ) | b(q01q f )(q f $q f )
Fall 2004 Costas Busch - RPI 56
Example:
a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0

Grammar production: ( q0 $q f )  

Fall 2004 Costas Busch - RPI 57


Resulting Grammar: (q0 $q f ) : start variable

(q0 $q0 )  b(q01q0 )(q0 $q0 ) | b(q01q f )(q f $q0 )


(q0 $q f )  b(q01q0 )(q0 $q f ) | b(q01q f )(q f $q f )

(q01q0 )  b(q01q0 )(q01q0 ) | b(q01q f )(q f 1q0 )


(q01q f )  b(q01q0 )(q01q f ) | b(q01q f )(q f 1q f )

(q0 $q0 )  a (q0 0q0 )(q0 $q0 ) | a (q0 0q f )(q f $q0 )


(q0 $q f )  a (q0 0q0 )(q0 $q f ) | a (q0 0q f )(q f $q f )
Fall 2004 Costas Busch - RPI 58
( q0 0q0 )  a (q0 0q0 )(q0 0q0 ) | a (q0 0q f )(q f 0q0 )
( q0 0q f )  a (q0 0q0 )(q0 0q f ) | a (q0 0q f )(q f 0q f )

(q01q0 )  a
(q0 0q0 )  b

(q0 $q f )  

Fall 2004 Costas Busch - RPI 59


Grammar
PDA
Leftmost
computation
derivation
( q0 $ q f ) (q0 , abba,$)
 a (q0 0q0 )(q0 $q f )  (q0 , bba,0$)
 ab(q0 $q f )  (q0 , ba,$)
 abb(q01q0 )(q0 $q f )  (q0 , a,1$)
 abba(q0 $q f )  (q0 ,  ,$)
 abba (q f ,  ,  )
Fall 2004 Costas Busch - RPI 60
Derivation: ( q0 $ q f )

a b b a Time 0

a, $  0$ b, $  1$
a, 0  00 b, 1  11
a, 1   b, 0  

, $   qf
q0
Fall 2004 Costas Busch - RPI 61
Derivation: (q0 $q f )  a (q0 0q0 )(q0 $q f )

a b b a Time 1

0
a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 62
Derivation: (q0 $q f )  a (q0 0q0 )(q0 $q f )  ab(q0 $q f )

a b b a Time 2

a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 63
Derivation: (q0 $q f )  a (q0 0q0 )(q0 $q f )  ab(q0 $q f )
 abb(q01q0 )(q0 $q f )

a b b a Time 3

1
a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 64
Derivation: (q0 $q f )  a (q0 0q0 )(q0 $q f )  ab(q0 $q f )
 abb(q01q0 )(q0 $q f )  abba(q0 $q f )

a b b a Time 4

a, $  0$ b, $  1$
$
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 65
Derivation: (q0 $q f )  a (q0 0q0 )(q0 $q f )  ab(q0 $q f )
 abb(q01q0 )(q0 $q f )  abba(q0 $q f )  abba

a b b a Time 5

a, $  0$ b, $  1$ empty
a, 0  00 b, 1  11
a, 1   b, 0   Stack

, $   qf
q0
Fall 2004 Costas Busch - RPI 66
In general:

Grammar
PDA

If and

(qi Aq j )  wB Only if (qi , w, A) (q j ,  , B )

Fall 2004 Costas Busch - RPI 67


Thus:

Grammar
generates w PDA accepts w
If and

 Only if (q0 , w,$) (q f ,  ,  )
( q0 $ q f )  w

Fall 2004 Costas Busch - RPI 68


Therefore:

For any PDA


there is a context-free grammar
that accepts the same language


Context-Free Languages
Languages Accepted by
(Grammars) PDAs

Fall 2004 Costas Busch - RPI 69

You might also like