Escolar Documentos
Profissional Documentos
Cultura Documentos
http://www.dcc.ufrj.br/~fabiom/comp
Análise Descendente vs. Ascendente
• Mas é mais geral, o que quer dizer que impõe menos restrições à gramática
E -> E + T
E -> E – T
E -> T
T -> T * F
T -> F
F -> - F
F -> num
F -> ( E )
• Lembre-se que, para uma gramática não ambígua, cada entrada só pode ter
uma única derivação mais à direita
E -> E + T
E -> E – T
E -> T
T -> T * F
T -> F
F -> - F
F -> num
F -> ( E )
Análise shift-reduce
• Tomemos o passo da análise ascendente que leva a string uvw para uXw pela
redução usando uma regra X → v
• Isso implica que a cada passo da análise temos um sufixo que corresponde ao
resto da entrada que ainda não foi reduzido
Análise shift-reduce
• Acontece um erro sintático quando não se pode tomar nenhuma das duas
ações, e reconhecemos a entrada quando o chegamos a S |, onde S é o
símbolo inicial
Exercício
E -> E + T
E -> E – T
E -> T
T -> T * F
T -> F
F -> - F
F -> num
F -> ( E )
Implementação
• O que está à esquerda do foco pode ser implementado usando uma pilha
• A ação de reduce A → w:
• Empilha A