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*+b)c*d, considerando a tabela M apresentada a seguir.
Tabela de análise preditiva| | ( | ) | * | + | a ... d | $ |
|---|
| A | A → CB | sinc | | | A → CB | sinc |
|---|
| B | | B → ε | | B → +CB | | B → ε |
|---|
| C | C → ED | sinc | | sinc | C → ED | sinc |
|---|
| D | | D → ε | D → *ED | D → ε | | D → ε |
|---|
| E | E → (A) | sinc | sinc | sinc | E → a | ... | d | sinc |
|---|
Movimentos do analisador preditivo tabular para a entrada (a*+b)c*d| # | Pilha | Entrada | Derivação |
|---|
| 0 | $ A | (a*+b)c*d$ | A → CB |
|---|
| 1 | $ B C | (a*+b)c*d$ | C → ED |
|---|
| 2 | $ B D E | (a*+b)c*d$ | E → (A) |
|---|
| 3 | $ B D ) A ( | (a*+b)c*d$ | |
|---|
| 4 | $ B D ) A | a*+b)c*d$ | A → CB |
|---|
| 5 | $ B D ) B C | a*+b)c*d$ | C → ED |
|---|
| 6 | $ B D ) B D E | a*+b)c*d$ | E → a |
|---|
| 7 | $ B D ) B D a | a*+b)c*d$ | |
|---|
| 8 | $ B D ) B D | *+b)c*d$ | D → *ED |
|---|
| 9 | $ B D ) B D E * | *+b)c*d$ | |
|---|
| 10 | $ B D ) B D E | +b)c*d$ | sinc - desempilhar |
|---|
| 11 | $ B D ) B D | +b)c*d$ | D → ε |
|---|
| 12 | $ B D ) B | +b)c*d$ | B → +CB |
|---|
| 13 | $ B D ) B C + | +b)c*d$ | |
|---|
| 14 | $ B D ) B C | b)c*d$ | C → ED |
|---|
| 15 | $ B D ) B D E | b)c*d$ | E → b |
|---|
| 16 | $ B D ) B D b | b)c*d$ | |
|---|
| 17 | $ B D ) B D | )c*d$ | D → ε |
|---|
| 18 | $ B D ) B | )c*d$ | B → ε |
|---|
| 19 | $ B D ) | )c*d$ | |
|---|
| 20 | $ B D | c*d$ | branco - descartar token |
|---|
| 21 | $ B D | *d$ | D → *ED |
|---|
| 22 | $ B D E * | *d$ | |
|---|
| 23 | $ B D E | d$ | E → d |
|---|
| 24 | $ B D d | d$ | |
|---|
| 25 | $ B D | $ | D → ε |
|---|
| 26 | $ B | $ | B → ε |
|---|
| 27 | $ | $ | aceita |
|---|