Apresente a Análise de Precedência de Operadores, da entrada x * (x + (x ^ x) * x) sobre a gramática a seguir.
G = ({S, T, P, F}, {+, *, ^, (, ), x}, P, S)
P = {S → S+T | T
T → T*P | P
P → P^F | F
F → (S) | x}
+ | * | ^ | ( | ) | x | $ | |
---|---|---|---|---|---|---|---|
+ | > | < | < | < | > | < | > |
* | > | > | < | < | > | < | > |
^ | > | > | < | < | > | < | > |
( | < | < | < | < | = | < | |
) | > | > | > | > | > | ||
x | > | > | > | > | > | ||
$ | < | < | < | < | < | aceita |
Pilha | Relação | Entrada | Ação | Handle |
---|---|---|---|---|
$ | < | x * (x + (x ^ x) * x) $ | empilha x | |
$ x | > | * (x + (x ^ x) * x) $ | reduz | F → x |
$ S | < | * (x + (x ^ x) * x) $ | empilha * | |
$ S * | < | (x + (x ^ x) * x) $ | empilha ( | |
$ S * ( | < | x + (x ^ x) * x) $ | empilha x | |
$ S * ( x | > | + (x ^ x) * x) $ | reduz | F → x |
$ S * ( S | < | + (x ^ x) * x) $ | empilha + | |
$ S * ( S + | < | (x ^ x) * x) $ | empilha ( | |
$ S * ( S + ( | < | x ^ x) * x) $ | empilha x | |
$ S * ( S + ( x | > | ^ x) * x) $ | reduz | F → x |
$ S * ( S + ( S | < | ^ x) * x) $ | empilha ^ | |
$ S * ( S + ( S ^ | < | x) * x) $ | empilha x | |
$ S * ( S + ( S ^ x | > | ) * x) $ | reduz | F → x |
$ S * ( S + ( S ^ S | > | ) * x) $ | reduz | P → P^F |
$ S * ( S + ( S | = | ) * x) $ | empilha ) | |
$ S * ( S + ( S ) | > | * x) $ | reduz | F → (S) |
$ S * ( S + S | < | * x) $ | empilha * | |
$ S * ( S + S * | < | x) $ | empilha x | |
$ S * ( S + S * x | > | ) $ | reduz | F → x |
$ S * ( S + S * S | > | ) $ | reduz | T → T*P |
$ S * ( S + S | > | ) $ | reduz | S → S+T |
$ S * ( S | = | ) $ | empilha ) | |
$ S * ( S ) | > | $ | reduz | F → (S) |
$ S * S | > | $ | reduz | T → T*P |
$ S | aceita | $ |