Modo Pânico

722
-1

Published on

Compiladores são programas que realizam a tradução de um código fonte escrito em uma linguagem para um programa equivalente em outra linguagem (linguagem objeto). Um compilador pode ser dividido em duas etapas: Análise, também chamada de front end, composta pelas análises léxica, sintática e semântica e pela geração de código intermediário; e Síntese (back end), composta pela geração do código objeto. No front end podem ocorrer diferentes tipos de erros e, para cada um desses, existem técnicas adequadas para sua recuperação. Neste seminário, será abordada uma técnica de recuperação de erros sintáticos chamada de modalidade do desespero ou modo pânico.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
722
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Modo Pânico

  1. 1. Modo Pânico Uma técnica de recuperação de erros sintáticos em compiladores Demontiê Junior Izabela Melodemontie@dsc.ufcg.edu.br izabela@dsc.ufcg.edu.br
  2. 2. Agenda• O que é um Compilador?• Fases de um Compilador• Análise Sintática o Análise Sintática Preditiva• Recuperação de Erros• Modo Pânico o Exemplo prático• Considerações finais Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 2
  3. 3. INTRODUÇÃO MODO PÂNICO EXEMPLOCONSIDERAÇÕES FINAIS
  4. 4. O que é um compilador? Fonte Compilador Destino_________ __________________ __________________ __________________ ______________ _____ Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 4
  5. 5. Outros processadores de linguagens• Interpretadores Fonte _______ _______ ______ Entrada RESULTADOS Interpretador Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 5
  6. 6. Outros processadores de linguagens• Compiladores JITs Aplicação Java Bytecode Máquina Virtual Compilador JIT Código de Máquina Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 6
  7. 7. Fases de um compilador Fluxo de caracteres Analisador Léxico Fluxo de tokensEx.: Meu nome é Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 7
  8. 8. Fases de um compilador Fluxo de caracteres Analisador Léxico Fluxo de tokens Analisador Sintático Árvore SintáticaEx.: Hoje, não pagarei-te o almoço! Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 8
  9. 9. Fases de um compilador Fluxo de caracteres Analisador Léxico Fluxo de tokens Analisador Sintático Árvore Sintática Analisador Semântico Árvore SintáticaEx.: cachorroVocê quer ir para casa ou cachorro? Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 9
  10. 10. Fases de um compilador Fluxo de caracteres Analisador Léxico Fluxo de tokens Analisador Sintático Árvore Sintática Analisador Semântico Árvore Sintática Tabela Gerador de Código de Intermediário Símbolos Representação Intermediária Otimizador de Código Independente de Máquina Representação Intermediária Gerador de Código Código de máquina destinoNotas de aula do Prof. Franklin Ramalho Otimizador de Código Código de máquina (UFCG/CEEI/DSC) Dependente de Máquina destino Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 10
  11. 11. Análise Sintática• Analisa a estrutura gramatical dos tokens no programa fonte• Produz uma estrutura intermediária – Árvore Sintática Notas de aula do Prof. Franklin Ramalho (UFCG/CEEI/DSC) Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 11
  12. 12. Análise Sintática• Gramáticas Livre de Contexto (BNF) – Elementos terminais – Elementos não terminais• Ex.: E E + E E E - E E (E) E T T 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ((9 – 3) + 2 + 5) é uma derivação válida? Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 12
  13. 13. Análise Sintática• Tipos de algoritmos – Análise Sintática Descendente • Recursiva • Preditiva (LL) – Análise Sintática Ascendente (Shift-Reduce) • SLR • LR Canônico Mais complexos • LALR Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 13
  14. 14. Análise Sintática Preditiva• Utiliza as funções FIRST e FOLLOW para determinar de forma não ambígua a regra de produção a ser analisada• FIRST(α) é o conjunto de terminais que podem iniciar as cadeias derivadas de α• FOLLOW(A) é o conjunto de terminais que podem aparecer à direita de A numa forma sentencial Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 14
  15. 15. Análise Sintática Preditiva• A partir das funções FIRST e FOLLOW, é construída uma tabela – As linhas representam os não terminais – As colunas representam os terminais – Cada célula é preenchida com a regra de produção que deve ser analisada para o não terminal A e o terminal a – Se não houver uma regra de produção, a célula indica um erro Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 15
  16. 16. Análise Sintática Preditiva Notas de aula do Prof. Franklin Ramalho (UFCG/CEEI/DSC) Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 16
  17. 17. Recuperação de Erros Sintáticos• Um bom compilador deve informar todos os erros à medida em que aparecem• O compilador precisa voltar a um estado do qual ele possa prosseguir• Ex.: int a = 0; while (x > 0){ a = a x; x--; } Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 17
  18. 18. Recuperação de Erros Sintáticos• Existem várias estratégias – Recuperação em Nível de Frase – Produções de Erro – Correção Global – e... Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 18
  19. 19. INTRODUÇÃO MODO PÂNICO EXEMPLOCONSIDERAÇÕES FINAIS
  20. 20. Ideia Central• Conhecido também por “Modalidade do Desespero”• Define um conjunto de tokens de sincronização• Ao encontrar um erro, descarta os símbolos da entrada até encontrar um token de sincronização Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 20
  21. 21. Definindo os Tokens de Sincronização• Cada não terminal possui um conjunto desses tokens• Um bom conjunto pode definir a qualidade do algoritmo de recuperação de erros• Heurística: podemos incluir todos os tokens em FOLLOW(A) no conjunto de tokens de sincronização do não terminal A Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 21
  22. 22. Abordagem• Ao encontrar um token inesperado – Se for um token de erro, o analisador sintático ignora o símbolo da entrada – Se for um token de sincronização, o analisador desempilha o não terminal no topo da pilha – Se o terminal no topo da pilha não casar com a entrada, ele é desempilhado Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 22
  23. 23. INTRODUÇÃO MODO PÂNICO EXEMPLOCONSIDERAÇÕES FINAIS
  24. 24. GramáticaE T E | єT id AA = F;F id | num Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 24
  25. 25. Realizando Análise Preditiva• Cálculo das funções FIRST e FOLLOW FIRST(id) = {id} FIRST(=) = {=} FIRST(;) = {;} FIRST(num) = {num} FIRST(E) = {id, є} FIRST(T) = {id} FIRST(A) = {=} FIRST(F) = {id, num} FOLLOW(E) = {$} FOLLOW(T) = {id, $} FOLLOW(A) = {id, $} FOLLOW(F) = {;} Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 25
  26. 26. Realizando Análise Preditiva• Construindo a tabela para o analisador id ; = num $ E E TE E Є T T id A sinc A A = F; sinc F F id sinc F num Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 26
  27. 27. Realizando Análise Preditiva• Ex.: a=; b = 3; Pilha Entrada Ação $E a = ; b = 3; E TE $ET a = ; b = 3; T id A $ E A id a = ; b = 3; Desempilha id $EA = ; b = 3; A = F; $E;F= = ; b = 3; Desempilha = $E;F ; b = 3; Desempilha F $E; ; b = 3; Desempilha ; $E b = 3; E TE ... Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 27
  28. 28. INTRODUÇÃO MODO PÂNICO EXEMPLOCONSIDERAÇÕES FINAIS
  29. 29. Considerações Finais• Vantagens – Simplicidade – Garantia de não entrar num laço infinito• Desvantagens – Não captura erros múltiplos num mesmo enunciado Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 29
  30. 30. ReferênciasAHO, A.V.; SETHI, R.; ULLMAN, J.D. Compiladores:Princípios, Técnicas e Ferramentas. 2ª edição. Ed. LTC,2006.Notas de aula do Prof. Franklin Ramalho (UFCG/CEEI/DSC) http://www.dsc.ufcg.edu.br/~franklin/pp/http://www.ybadoo.com.br/ead/cmp/04/CMP_slides.pdf. Útimo acesso em 11/06/2011. Ciclo de Seminários Técnicos - Modo Pânico Demontiê Junior e Izabela Melo 30
  31. 31. Modo Pânico Uma técnica de recuperação de erros sintáticos em compiladores Demontiê Junior Izabela Melodemontie@dsc.ufcg.edu.br izabela@dsc.ufcg.edu.br
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×