Ybadoo - Soluções em Software Livre
Turmas
2º Semestre de 2026

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$
AACBsinc  ACBsinc
B B → ε B → +CB B → ε
CCEDsinc sincCEDsinc
D D → εD → *EDD → ε D → ε
EE → (A)sincsincsincE → a | ... | dsinc
Movimentos do analisador preditivo tabular para a entrada (a*+b)c*d
#PilhaEntradaDerivação
0$ A(a*+b)c*d$ACB
1$ B C(a*+b)c*d$CED
2$ B D E(a*+b)c*d$E → (A)
3$ B D ) A ((a*+b)c*d$ 
4$ B D ) Aa*+b)c*d$ACB
5$ B D ) B Ca*+b)c*d$CED
6$ B D ) B D Ea*+b)c*d$E → a
7$ B D ) B D aa*+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 Cb)c*d$CED
15$ B D ) B D Eb)c*d$E → b
16$ B D ) B D bb)c*d$ 
17$ B D ) B D)c*d$D → ε
18$ B D ) B)c*d$B → ε
19$ B D ))c*d$ 
20$ B Dc*d$branco - descartar token
21$ B D*d$D → *ED
22$ B D E **d$ 
23$ B D Ed$E → d
24$ B D dd$ 
25$ B D$D → ε
26$ B$B → ε
27$$aceita