Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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

G = ({A, B, C}, {x, +, ., (, )}, P, A)
P = {A → (B) | x
BB+C | C
CC.A | A}

 

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