Apresente a Análise de Precedência de Operadores, da entrada w * (x + y) ^ z sobre a gramática a seguir.
G = ({A, B, C, D, E}, {-, +, /, *, ^, (, ), w, 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 → w | x | y | z}
+ | - | * | / | ^ | ( | ) | w | x | y | z | $ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
+ | > | > | < | < | < | < | > | < | < | < | < | > |
- | > | > | < | < | < | < | > | < | < | < | < | > |
* | > | > | > | > | < | < | > | < | < | < | < | > |
/ | > | > | > | > | < | < | > | < | < | < | < | > |
^ | > | > | > | > | < | < | > | < | < | < | < | > |
( | < | < | < | < | < | < | = | < | < | < | < | |
) | > | > | > | > | > | > | > | |||||
w | > | > | > | > | > | > | > | |||||
x | > | > | > | > | > | > | > | |||||
y | > | > | > | > | > | > | > | |||||
z | > | > | > | > | > | > | > | |||||
$ | < | < | < | < | < | < | < | < | < | < | aceita |
Pilha | Relação | Entrada | Ação | Handle |
---|---|---|---|---|
$ | < | w * (x + y) ^ z $ | empilha w | |
$ w | > | * (x + y) ^ z $ | reduz | E → w |
$ A | < | * (x + y) ^ z $ | empilha * | |
$ A * | < | (x + y) ^ z $ | empilha ( | |
$ A * ( | < | x + y) ^ z $ | empilha x | |
$ A * ( x | > | + y) ^ z $ | reduz | E → x |
$ A * ( A | < | + y) ^ z $ | empilha + | |
$ A * ( A + | < | y) ^ z $ | empilha y | |
$ A * ( A + y | > | ) ^ z $ | reduz | E → y |
$ A * ( A + A | > | ) ^ z $ | reduz | A → A+B |
$ A * ( A | = | ) ^ z $ | empilha ) | |
$ A * ( A ) | > | ^ z $ | reduz | D → (A) |
$ A * A | < | ^ z $ | empilha ^ | |
$ A * A ^ | < | z $ | empilha z | |
$ A * A ^ z | > | $ | reduz | E → z |
$ A * A ^ A | > | $ | reduz | C → C^D |
$ A * A | > | $ | reduz | B → B*C |
$ A | aceita | $ |