Apresente a Análise Preditiva Tabular da entrada ((x + y) ^ (z * y)) / (x - y) sobre a gramática a seguir.
G = ({A, B, C, D, E}, {+, -, *, /, ^, (, ), x, y, z}, P, A)
P = {A → A+B | A-B | B
B → B*C | B/C | C
C → C^D | D
D → (A) | E
E → x | y | z}
Eliminação de Recursividade à Esquerda:
G = ({A, A₁, B, B₁, C, B₁, D, E}, {+, -, *, /, ^, (, ), x, y, z}, P, A)
P = {A → BA₁
A₁ → +BA₁ | -BA₁ | ε
B → CB₁
B₁ → *CB₁ | /CB₁ | ε
C → DC₁
C₁ → ^DC₁ | ε
D → (A) | E
E → x | y | z}
Fatoração à Esquerda:
G = ({A, A₁, B, B₁, C, B₁, D, E}, {+, -, *, /, ^, (, ), x, y, z}, P, A)
P = {A → BA₁
A₁ → +BA₁ | -BA₁ | ε
B → CB₁
B₁ → *CB₁ | /CB₁ | ε
C → DC₁
C₁ → ^DC₁ | ε
D → (A) | E
E → x | y | z}
Conjuntos FIRST(α) e FOLLOW(A):
FIRST(A) = {(, x, y, z}
FIRST(A₁) = {+, -, ε}
FIRST(B) = {(, x, y, z}
FIRST(B₁) = {*, /, ε}
FIRST(C) = {(, x, y, z}
FIRST(C₁) = {^, ε}
FIRST(D) = {(, x, y, z}
FIRST(E) = {x, y, z}
FOLLOW(A) = {), $}
FOLLOW(A₁) = {), $}
FOLLOW(B) = {+, -, ), $}
FOLLOW(B₁) = {+, -, ), $}
FOLLOW(C) = {+, -, *, /, ), $}
FOLLOW(C₁) = {+, -, *, /, ), $}
FOLLOW(D) = {+, -, *, /, ^, ), $}
FOLLOW(E) = {+, -, *, /, ^, ), $}
Tabela de Análise Preditiva:
x | y | z | + | - | * | / | ^ | ( | ) | $ | |
---|---|---|---|---|---|---|---|---|---|---|---|
A | A → BA₁ | A → BA₁ | A → BA₁ | A → BA₁ | |||||||
A₁ | A₁ → +BA₁ | A₁ → -BA₁ | A₁ → ε | A₁ → ε | |||||||
B | B → CB₁ | B → CB₁ | B → CB₁ | B → CB₁ | |||||||
B₁ | B₁ → ε | B₁ → ε | B₁ → *CB₁ | B₁ → /CB₁ | B₁ → ε | B₁ → ε | |||||
C | C → DC₁ | C → DC₁ | C → DC₁ | C → DC₁ | |||||||
C₁ | C₁ → ε | C₁ → ε | C₁ → ε | C₁ → ε | C₁ → ^DC₁ | C₁ → ε | C₁ → ε | ||||
D | D → E | D → E | D → E | D → (A) | |||||||
E | E → x | E → y | E → z |
Analisador Preditivo Tabular:
Pilha | Entrada | Derivação |
---|---|---|
$ A | ((x + y) ^ (z * y)) / (x - y) $ | A → BA₁ |
$ A₁ B | ((x + y) ^ (z * y)) / (x - y) $ | B → CB₁ |
$ A₁ B₁ C | ((x + y) ^ (z * y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ D | ((x + y) ^ (z * y)) / (x - y) $ | D → (A) |
$ A₁ B₁ C₁ ) A ( | ((x + y) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A | (x + y) ^ (z * y)) / (x - y) $ | A → BA₁ |
$ A₁ B₁ C₁ ) A₁ B | (x + y) ^ (z * y)) / (x - y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C | (x + y) ^ (z * y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ D | (x + y) ^ (z * y)) / (x - y) $ | D → (A) |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A ( | (x + y) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A | x + y) ^ (z * y)) / (x - y) $ | A → BA₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B | x + y) ^ (z * y)) / (x - y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C | x + y) ^ (z * y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ D | x + y) ^ (z * y)) / (x - y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ E | x + y) ^ (z * y)) / (x - y) $ | E → x |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ x | x + y) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ | + y) ^ (z * y)) / (x - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ | + y) ^ (z * y)) / (x - y) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ | + y) ^ (z * y)) / (x - y) $ | A₁ → +BA₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B + | + y) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B | y) ^ (z * y)) / (x - y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C | y) ^ (z * y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ D | y) ^ (z * y)) / (x - y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ E | y) ^ (z * y)) / (x - y) $ | E → y |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ y | y) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ | ) ^ (z * y)) / (x - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ | ) ^ (z * y)) / (x - y) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ | ) ^ (z * y)) / (x - y) $ | A₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) | ) ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ | ^ (z * y)) / (x - y) $ | C₁ → ^DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ D ^ | ^ (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ D | (z * y)) / (x - y) $ | D → (A) |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A ( | (z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A | z * y)) / (x - y) $ | A → BA₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B | z * y)) / (x - y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C | z * y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ D | z * y)) / (x - y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ E | z * y)) / (x - y) $ | E → z |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ z | z * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ | * y)) / (x - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ | * y)) / (x - y) $ | B₁ → *CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C * | * y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C | y)) / (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ D | y)) / (x - y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ E | y)) / (x - y) $ | E → y |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ y | y)) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ C₁ | )) / (x - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ B₁ | )) / (x - y) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) A₁ | )) / (x - y) $ | A₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ ) | )) / (x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ | ) / (x - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ | ) / (x - y) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ | ) / (x - y) $ | A₁ → ε |
$ A₁ B₁ C₁ ) | ) / (x - y) $ | |
$ A₁ B₁ C₁ | / (x - y) $ | C₁ → ε |
$ A₁ B₁ | / (x - y) $ | B₁ → /CB₁ |
$ A₁ B₁ C / | / (x - y) $ | |
$ A₁ B₁ C | (x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ D | (x - y) $ | D → (A) |
$ A₁ B₁ C₁ ) A ( | (x - y) $ | |
$ A₁ B₁ C₁ ) A | x - y) $ | A → BA₁ |
$ A₁ B₁ C₁ ) A₁ B | x - y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C | x - y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ D | x - y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ E | x - y) $ | E → x |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ x | x - y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ | - y) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ | - y) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ | - y) $ | A₁ → -BA₁ |
$ A₁ B₁ C₁ ) A₁ B - | - y) $ | |
$ A₁ B₁ C₁ ) A₁ B | y) $ | B → CB₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C | y) $ | C → DC₁ |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ D | y) $ | D → E |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ E | y) $ | E → y |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ y | y) $ | |
$ A₁ B₁ C₁ ) A₁ B₁ C₁ | ) $ | C₁ → ε |
$ A₁ B₁ C₁ ) A₁ B₁ | ) $ | B₁ → ε |
$ A₁ B₁ C₁ ) A₁ | ) $ | A₁ → ε |
$ A₁ B₁ C₁ ) | ) $ | |
$ A₁ B₁ C₁ | $ | C₁ → ε |
$ A₁ B₁ | $ | B₁ → ε |
$ A₁ | $ | A₁ → ε |
$ | $ | aceita |