Potenziamo l’automa non deterministico a stati finiti (NFA) in modo da ottenere un automa equivalente alla CFG. Sarà non deterministico, ma avrà in aggiunta una pila, in cui può fare:
- push e pop di simboli in modalità LIFO;
- sovrascrizione del simbolo in cima.

La notazione vuol dire: “se l’input è e sulla cima della pila c’è , allora fai pop e pusha “.
Definizioni
Definizione formale: un automa a pila (PDA), anche detto pushdown automaton, è una sestupla dove:
- è un insieme finito di stati;
- è un insieme finito dei simboli dell’alfabeto che compongono tutti gli input possibili;
- è l’alfabeto finito di pila;
- è la funzione di transizione;
- è lo stato iniziale;
- è l’insieme degli stati finali.
Definizione di come computa: Sia . accetta se e stringhe :
( è la pila, è la sua vecchia cima, è la sua nuova cima)
Se le seguenti condizioni sono vere:
Allora , cioè accetta .
Al posto di definirlo come abbiamo fatto, cioè con gli stati intermedi, si può definirlo più facilmente con le configurazioni.
N.B.: Sarà utile semplificare (senza perdita di generalità) che un PDA svuota sempre la pila prima di accettare: .
Esempio: PDA per .
Idea:
- fino a che leggo ‘0’, push ‘0’.
- quando inizio a leggere ‘1’, pop ‘0’.
- accetto se e solo se ho finito con la pila vuota. Una tecnica comune per poter capire se è vuota è mettere un “simbolo marcatore”, che segna l’inizio ($ nell’esempio).
