Apresente a Análise Preditiva Tabular, com recuperação de erros em modo pânico, da entrada (id ~id) v id sobre a gramática a seguir.
G = ({E, T, F}, {id, &, v, ~, (, )}, P, E)
P = {E → EvT | T
T → T&F | F
F → (E) | ~F | id}Eliminação de Recursividade à Esquerda:
G = ({E, E₁, T, T₁, F}, {id, &, v, ~, (, )}, P, E)
P = {E → TE₁
E₁ → vTE₁ | ε
T → FT₁
T₁ → &FT₁ | ε
F → (E) | ~F | id}Fatoração à Esquerda:
G = ({E, E₁, T, T₁, F}, {id, &, v, ~, (, )}, P, E)
P = {E → TE₁
E₁ → vTE₁ | ε
T → FT₁
T₁ → &FT₁ | ε
F → (E) | ~F | id}Conjuntos FIRST(α) e FOLLOW(A):
FIRST(E) = {id, ~, (}
FIRST(E₁) = {v, ε}
FIRST(T) = {id, ~, (}
FIRST(T₁) = {&, ε}
FIRST(F) = {id, ~, (}FOLLOW(E) = {), $}
FOLLOW(E₁) = {), $}
FOLLOW(T) = {v, ), $}
FOLLOW(T₁) = {v, ), $}
FOLLOW(F) = {&, v, ), $}Tabela de Análise Preditiva:
| id | v | & | ~ | ( | ) | $ | |
|---|---|---|---|---|---|---|---|
| E | E → TE₁ | E → TE₁ | E → TE₁ | sinc | sinc | ||
| E₁ | E₁ → vTE₁ | E₁ → ε | E₁ → ε | ||||
| T | T → FT₁ | sinc | T → FT₁ | T → FT₁ | sinc | sinc | |
| T₁ | T₁ → ε | T₁ → &FT₁ | T₁ → ε | T₁ → ε | |||
| F | F → id | sinc | sinc | F → ~F | F → (E) | sinc | sinc |
Analisador Preditivo Tabular:
| Pilha | Entrada | Derivação |
|---|---|---|
| $ E | (id ~id) v id $ | E → TE₁ |
| $ E₁ T | (id ~id) v id $ | T → FT₁ |
| $ E₁ T₁ F | (id ~id) v id $ | F → (E) |
| $ E₁ T₁ ) E ( | (id ~id) v id $ | |
| $ E₁ T₁ ) E | id ~id) v id $ | E → TE₁ |
| $ E₁ T₁ ) E₁ T | id ~id) v id $ | T → FT₁ |
| $ E₁ T₁ ) E₁ T₁ F | id ~id) v id $ | F → id |
| $ E₁ T₁ ) E₁ T₁ id | id ~id) v id $ | |
| $ E₁ T₁ ) E₁ T₁ | ~id) v id $ | erro |
| $ E₁ T₁ ) E₁ T₁ | id) v id $ | erro |
| $ E₁ T₁ ) E₁ T₁ | ) v id $ | T₁ → ε |
| $ E₁ T₁ ) E₁ | ) v id $ | E₁ → ε |
| $ E₁ T₁ ) | ) v id $ | |
| $ E₁ T₁ | v id $ | T₁ → ε |
| $ E₁ | v id $ | E₁ → vTE₁ |
| $ E₁ T v | v id $ | |
| $ E₁ T | id $ | T → FT₁ |
| $ E₁ T₁ F | id $ | F → id |
| $ E₁ T₁ id | id $ | |
| $ E₁ T₁ | $ | T₁ → ε |
| $ E₁ | $ | E₁ → ε |
| $ | $ | aceita |