Algoritmo de parsing:
pilha_símbolos <- ['$', símbolo_inicial]
pilha_entrada <- entrada invertida (sem espaços) + ['$']
enquanto pilha_entrada não está vazia:
topSymbol <- topo de pilha_símbolos
topInput <- topo de pilha_entrada
se topSymbol é não-terminal:
produção <- ação de tabela para topSymbol e topInput
se produção é inválida:
retorna falso
remove topSymbol de pilha_símbolos
se produção não é vazia (ε):
adiciona símbolos da produção invertidos a pilha_símbolos
senão:
se topSymbol ≠ topInput:
retorna falso
remove topSymbol de pilha_símbolos
remove topInput de pilha_entrada
retorna pilha_símbolos e pilha_entrada estão vazias