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}Tabela de precedência de operadores da gramática G| | + | * | ^ | ( | ) | x | $ |
|---|
| + | > | < | < | < | > | < | > |
| * | > | > | < | < | > | < | > |
| ^ | > | > | < | < | > | < | > |
| ( | < | < | < | < | = | < | |
| ) | > | > | > | | > | | > |
| x | > | > | > | | > | | > |
| $ | < | < | < | < | | < | aceita |
Movimentos do analisador de precedência de operadores para x * (x + (x ^ x) * x)| 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 | $ | | |