Um analisador sintático preditivo sem recursão pode ser construído mantendo uma pilha explicitamente, em vez de implicitamente, via chamadas recursivas. O analisador é dirigido por um programa que considera X, o símbolo no topo da pilha, e a, o símbolo corrente da entrada. Se X é um não-terminal, o analisador escolhe uma produção-X consultando a entrada M[X, a] da tabela M de análise. Por outro lado, ele tenta fazer um casamento entre o terminal X no topo da pilha e o símbolo corrente a da entrada. Apresente a sequência de movimentos, com recuperação de erros em modo pânico, da entrada (a;(;a);), considerando a tabela M apresentada a seguir.
Tabela de análise preditiva| | a | ; | ( | ) | $ |
|---|
| A | A → a | sinc | A → (B) | sinc | sinc |
| B | B → aD | | B → (B)D | sinc | |
| C | | C → ;AD | | sinc | |
| D | | D → C | | D → ε | |
Movimentos do analisador preditivo tabular para (a;(;a);)| Pilha | Entrada | Derivação |
|---|
| $ A | ( a ; ( ; a ) ; ) $ | A → (B) |
| $ ) B ( | ( a ; ( ; a ) ; ) $ | |
| $ ) B | a ; ( ; a ) ; ) $ | B → aD |
| $ ) D a | a ; ( ; a ) ; ) $ | |
| $ ) D | ; ( ; a ) ; ) $ | D → C |
| $ ) C | ; ( ; a ) ; ) $ | C → ;AD |
| $ ) D A ; | ; ( ; a ) ; ) $ | |
| $ ) D A | ( ; a ) ; ) $ | A → (B) |
| $ ) D ) B ( | ( ; a ) ; ) $ | |
| $ ) D ) B | ; a ) ; ) $ | branco - descartar token |
| $ ) D ) B | a ) ; ) $ | B → aD |
| $ ) D ) D a | a ) ; ) $ | |
| $ ) D ) D | ) ; ) $ | D → ε |
| $ ) D ) | ) ; ) $ | |
| $ ) D | ; ) $ | D → C |
| $ ) C | ; ) $ | C → ;AD |
| $ ) D A ; | ; ) $ | |
| $ ) D A | ) $ | sinc - desempilhar |
| $ ) D | ) $ | D → ε |
| $ ) | ) $ | |
| $ | $ | aceita |