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