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 |