Pushdown Automaton
Pushdown Automaton
A Pushdown Automaton is a nondeterministic finite state automaton (NFA) that permits transitions and a stack.
S 0 S 0 | 1S1 |
One PDA for Lwwr is given on the following slide...
P = ( Q , , , , q0 , 0 , F )
3)
4)
5) 6)
( q1 ,0,0) ( q1 , ) ( q1 ,1,1) ( q1 , )
( q1 , , 0 ) ( q2 , 0 )
( q2 , Read_Past_ End_Of_Inp ut , 0 ) ( q3 , 0 )
The nodes correspond to the states of the PDA. An arrow labeled Start indicates the unique start state. Doubly circled states are accepting states. Edges correspond to transitions in the PDA as follows: An edge labeled (ai, m)/n from state q to state p means that (q, ai, m) contains the pair (p, n), perhaps among other pairs.
(, 0) / 0 (, 0) / 0 (, 1) / 1 All possibilities that do not have explicit edges, have implicit edges that go to an implicit reject state.
q0
q1
q2
(EOF, 0) / 0
q3
This is a nondeterministic machine. Think of the machine as following all possible paths. Kill a path if it leads to a reject state. If any path leads to an accept state, then the machine accepts.
Exercise 1
Design a PDA that recognizes legal sequences of if and else statements in a C program. In the PDA, let i stands for if and e stands for else. Hint: There is a problem whenever the number of else statements in any prefix exceeds the number of if statements in that prefix.
Exercise 2
Design a PDA to accept the language:
{a b c | i = j or j = k }
i j k