Apresente a Análise de Precedência de Operadores, da entrada (a + (b . c) + d) sobre a gramática a seguir.
G = ({A, B, C, D}, {a, b, c, d, +, ., (, )}, P, A)
P = {A → (B)
B → B+C | C
C → C.D | D
D → a | b | c | d | A}
a | b | c | d | + | . | ( | ) | $ | |
---|---|---|---|---|---|---|---|---|---|
a | > | > | > | > | |||||
b | > | > | > | > | |||||
c | > | > | > | > | |||||
d | > | > | > | > | |||||
+ | < | < | < | < | > | < | < | > | > |
. | < | < | < | < | > | > | < | > | > |
( | < | < | < | < | < | < | < | = | |
) | > | > | > | > | |||||
$ | < | < | < | < | < | < | < | aceita |
Pilha | Relação | Entrada | Ação | Handle |
---|---|---|---|---|
$ | < | (a + (b . c) + d) $ | empilha ( | |
$ ( | < | a + (b . c) + d) $ | empilha a | |
$ ( a | > | + (b . c) + d) $ | reduz | D → a |
$ ( A | < | + (b . c) + d) $ | empilha + | |
$ ( A + | < | (b . c) + d) $ | empilha ( | |
$ ( A + ( | < | b . c) + d) $ | empilha b | |
$ ( A + ( b | > | . c) + d) $ | reduz | D → b |
$ ( A + ( A | < | . c) + d) $ | empilha . | |
$ ( A + ( A . | < | c) + d) $ | empilha c | |
$ ( A + ( A . c | > | ) + d) $ | reduz | D → c |
$ ( A + ( A . A | > | ) + d) $ | reduz | C → C.D |
$ ( A + ( A | = | ) + d) $ | empilha ) | |
$ ( A + ( A ) | > | + d) $ | reduz | A → (B) |
$ ( A + A | > | + d) $ | reduz | B → B+C |
$ ( A | < | + d) $ | empilha + | |
$ ( A + | < | d) $ | empilha d | |
$ ( A + d | > | ) $ | reduz | D → d |
$ ( A + A | > | ) $ | reduz | B → B+C |
$ ( A | = | ) $ | empilha ) | |
$ ( A ) | > | $ | reduz | A → (B) |
$ A | aceita | $ |