Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Apresente a Análise de Precedência de Operadores, da entrada (a + (b . c) + d) sobre a gramática a seguir.

G = ({A, B, C, D}, {a, b, c, d, +, ., (, )}, P, A)
P = {A → (B)
BB+C | C
CC.D | D
D → a | b | c | d | A}

 

Tabela de precedência de operadores da gramática G
 abcd+.()$
a    >> >>
b    >> >>
c    >> >>
d    >> >>
+<<<<><<>>
.<<<<>><>>
(<<<<<<<= 
)    >> >>
$<<<<<<< aceita
Movimentos do analisador de precedência de operadores para (a + (b . c) + d)
PilhaRelaçãoEntradaAçãoHandle
$<(a + (b . c) + d) $empilha ( 
$ (<a + (b . c) + d) $empilha a 
$ ( a>+ (b . c) + d) $reduzD → a
$ ( A<+ (b . c) + d) $empilha + 
$ ( A +<(b . c) + d) $empilha ( 
$ ( A + (<b . c) + d) $empilha b 
$ ( A + ( b>. c) + d) $reduzD → b
$ ( A + ( A<. c) + d) $empilha . 
$ ( A + ( A .<c) + d) $empilha c 
$ ( A + ( A . c>) + d) $reduzD → c
$ ( A + ( A . A>) + d) $reduzCC.D
$ ( A + ( A=) + d) $empilha ) 
$ ( A + ( A )>+ d) $reduzA → (B)
$ ( A + A>+ d) $reduzBB+C
$ ( A<+ d) $empilha + 
$ ( A +<d) $empilha d 
$ ( A + d>) $reduzD → d
$ ( A + A>) $reduzBB+C
$ ( A=) $empilha ) 
$ ( A )>$reduzA → (B)
$ Aaceita$