Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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 = {AA+B | A-B | B
BB*C | B/C | C
CC^D | D
D → (A) | E
E → w | x | y | z}

 

Tabela de precedência de operadores da gramática G
 +-*/^()wxyz$
+>><<<<><<<<>
->><<<<><<<<>
*>>>><<><<<<>
/>>>><<><<<<>
^>>>><<><<<<>
(<<<<<<=<<<< 
)>>>>> >    >
w>>>>> >    >
x>>>>> >    >
y>>>>> >    >
z>>>>> >    >
$<<<<<< <<<<aceita
Movimentos do analisador de precedência de operadores para w * (x + y) ^ z
PilhaRelaçãoEntradaAçãoHandle
$<w * (x + y) ^ z $empilha w 
$ w>* (x + y) ^ z $reduzE → w
$ A<* (x + y) ^ z $empilha * 
$ A *<(x + y) ^ z $empilha ( 
$ A * (<x + y) ^ z $empilha x 
$ A * ( x>+ y) ^ z $reduzE → x
$ A * ( A<+ y) ^ z $empilha + 
$ A * ( A +<y) ^ z $empilha y 
$ A * ( A + y>) ^ z $reduzE → y
$ A * ( A + A>) ^ z $reduzAA+B
$ A * ( A=) ^ z $empilha ) 
$ A * ( A )>^ z $reduzD → (A)
$ A * A<^ z $empilha ^ 
$ A * A ^<z $empilha z 
$ A * A ^ z>$reduzE → z
$ A * A ^ A>$reduzCC^D
$ A * A>$reduzBB*C
$ Aaceita$