Apresente a Análise de Precedência de Operadores, 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}Tabela de precedência de operadores da gramática G| | + | - | * | / | ^ | ( | ) | x | y | z | $ |
|---|
| + | > | > | < | < | < | < | > | < | < | < | > |
| - | > | > | < | < | < | < | > | < | < | < | > |
| * | > | > | > | > | < | < | > | < | < | < | > |
| / | > | > | > | > | < | < | > | < | < | < | > |
| ^ | > | > | > | > | < | < | > | < | < | < | > |
| ( | < | < | < | < | < | < | = | < | < | < | |
| ) | > | > | > | > | > | | > | | | | > |
| x | > | > | > | > | > | | > | | | | > |
| y | > | > | > | > | > | | > | | | | > |
| z | > | > | > | > | > | | > | | | | > |
| $ | < | < | < | < | < | < | | < | < | < | aceita |
Movimentos do analisador de precedência de operadores para ((x + y) ^ (z * y)) / (x - y)| Pilha | Relação | Entrada | Ação | Handle |
|---|
| $ | < | ((x + y) ^ (z * y)) / (x - y) $ | empilha ( | |
| $ ( | < | (x + y) ^ (z * y)) / (x - y) $ | empilha ( | |
| $ ( ( | < | x + y) ^ (z * y)) / (x - y) $ | empilha x | |
| $ ( ( x | > | + y) ^ (z * y)) / (x - y) $ | reduz | E → x |
| $ ( ( A | < | + y) ^ (z * y)) / (x - y) $ | empilha + | |
| $ ( ( A + | < | y) ^ (z * y)) / (x - y) $ | empilha y | |
| $ ( ( A + y | > | ) ^ (z * y)) / (x - y) $ | reduz | E → y |
| $ ( ( A + A | > | ) ^ (z * y)) / (x - y) $ | reduz | A → A+B |
| $ ( ( A | = | ) ^ (z * y)) / (x - y) $ | empilha ) | |
| $ ( ( A ) | > | ^ (z * y)) / (x - y) $ | reduz | D → (A) |
| $ ( A | < | ^ (z * y)) / (x - y) $ | empilha ^ | |
| $ ( A ^ | < | (z * y)) / (x - y) $ | empilha ( | |
| $ ( A ^ ( | < | z * y)) / (x - y) $ | empilha z | |
| $ ( A ^ ( z | > | * y)) / (x - y) $ | reduz | E → z |
| $ ( A ^ ( A | < | * y)) / (x - y) $ | empilha * | |
| $ ( A ^ ( A * | < | y)) / (x - y) $ | empilha y | |
| $ ( A ^ ( A * y | > | )) / (x - y) $ | reduz | E → y |
| $ ( A ^ ( A * A | > | )) / (x - y) $ | reduz | B → B*C |
| $ ( A ^ ( A | = | )) / (x - y) $ | empilha ) | |
| $ ( A ^ ( A ) | > | ) / (x - y) $ | reduz | D → (A) |
| $ ( A ^ A | > | ) / (x - y) $ | reduz | C → C^D |
| $ ( A | = | ) / (x - y) $ | empilha ) | |
| $ ( A ) | > | / (x - y) $ | reduz | D → (A) |
| $ A | < | / (x - y) $ | empilha / | |
| $ A / | < | (x - y) $ | empilha ( | |
| $ A / ( | < | x - y) $ | empilha x | |
| $ A / ( x | > | - y) $ | reduz | E → x |
| $ A / ( A | < | - y) $ | empilha - | |
| $ A / ( A - | < | y) $ | empilha y | |
| $ A / ( A - y | > | ) $ | reduz | E → y |
| $ A / ( A - A | > | ) $ | reduz | A → A-B |
| $ A / ( A | = | ) $ | empilha ) | |
| $ A / ( A ) | > | $ | reduz | D → (A) |
| $ A / A | > | $ | reduz | B → B/C |
| $ A | aceita | $ | | |