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}
+ | - | * | / | ^ | ( | ) | x | y | z | $ | |
---|---|---|---|---|---|---|---|---|---|---|---|
+ | > | > | < | < | < | < | > | < | < | < | > |
- | > | > | < | < | < | < | > | < | < | < | > |
* | > | > | > | > | < | < | > | < | < | < | > |
/ | > | > | > | > | < | < | > | < | < | < | > |
^ | > | > | > | > | < | < | > | < | < | < | > |
( | < | < | < | < | < | < | = | < | < | < | |
) | > | > | > | > | > | > | > | ||||
x | > | > | > | > | > | > | > | ||||
y | > | > | > | > | > | > | > | ||||
z | > | > | > | > | > | > | > | ||||
$ | < | < | < | < | < | < | < | < | < | aceita |
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 | $ |