1 / 28

CES-41 COMPILADORES

CES-41 COMPILADORES. Prof. Fábio Carneiro Mokarzel 2014 http://www.comp.ita.br/~mokarzel. CES-41 COMPILADORES. Capítulo Zero Apresentação. Capítulo Zero - Apresentação. 0.1 – Professor e alunos 0.2 – Objetivos da disciplina 0.3 – Comentários sobre a disciplina

alia
Download Presentation

CES-41 COMPILADORES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CES-41 COMPILADORES Prof. Fábio Carneiro Mokarzel 2014 http://www.comp.ita.br/~mokarzel

  2. CES-41 COMPILADORES Capítulo Zero Apresentação

  3. Capítulo Zero - Apresentação 0.1 – Professor e alunos 0.2 – Objetivos da disciplina 0.3 – Comentários sobre a disciplina 0.4 – Programa da disciplina 0.5 – Metodologia e carga horária 0.6 – Critérios de avaliação 0.7 – Bibliografia

  4. 0.1 - Professor e Alunos • Nome do Professor: Fábio Carneiro Mokarzel • Graduação: Engenharia Elétrica – UNIFEI – Itajubá, MG – 1973 • Mestrado: Ciência da Computação – ITA – São José dos Campos, SP – 1984 • Doutorado: Ciência da Computação – ITA – São José dos Campos, SP – 1995

  5. 0.1 - Professor e Alunos • Professor no ITA: desde 1979 – IEC • Área de Pesquisa: Compiladores para Processamento Paralelo • Sala: No 109 – Prédio da Computação do ITA • E-mail: mokarzel@ita.br, fabiomokarzel@gmail.com • Telefone no ITA: (12) 3947-5982 ou 3947-5899 • Celular: (12) 9-9714-7538

  6. 0.2 – Objetivos da Disciplina 0.2.1 – Objetivo Geral • Estudo teórico e prático de técnicas para a construção de compiladores de linguagens de programação

  7. 0.2.2 – Objetivos específicos • Conhecimento do contexto onde se insere um compilador • Estudo da organizaçãode compiladores • Estudo de princípios, técnicas e ferramentas para a implementação de cada componente de um compilador • Construção de um compilador para uma linguagem de programação simplificada

  8. 0.3 – Comentários sobre a Disciplina • O Engenheiro de Computação deve estar preparado para projetar novas linguagens de programação, bem como para disponibilizar linguagens conhecidas para novas máquinas • Compiladores e interpretadores dessas linguagens são importantes ferramentas para torná-las disponíveis • Na realidade, poucos especialistas em Computação executam tarefas de construir ou manter um compilador ou um interpretador de uma linguagem de programação

  9. No entanto o estudo do processo de compilação é valioso: • Aprimora muito os conhecimentos sobre linguagens de programação • Ajuda o programador alcançar eficiência em seus programas • Forma uma boa ponte entre os conhecimentos de hardware e de software

  10. E ainda: • Dá boas diretrizes para o projeto de novas linguagens, evitando construções difíceis de serem compiladas e geradoras de código ineficiente • Apresenta ao engenheiro de computação as ferramentas Lex e Yacc, importantes para o desenvolvimento de sistemas de software • Princípios sobre construção de compiladores são usados também em outras áreas da computação

  11. Exemplos de utilidade em outras áreas: • Análise léxica faz reconhecimento de cadeias, também usado em: • Editores de texto, sistemas de recuperação de informações e reconhecimento de padrões • Gramáticas livres de contexto e definições orientadas pela sintaxe são usadas na implementação de pequenas linguagens tais como: • Formatadores de texto, sistemas de computação gráfica, linguagens para banco de dados, linguagens para simulação, etc.

  12. Exemplos de utilidade em outras áreas: • Otimização de código é usada em validação de programas, transformação de programas desestruturados e paralelização de programas sequenciais • Análise sintática orienta a construção da árvore de controle de um programa, que é base para a otimização e paralelização de programas

  13. Nos anos 50, a construção de um compilador era uma tarefa extremamente difícil • Ao longo do tempo, foram desenvolvidas: • Técnicas bem engenhosas • Linguagens bem organizadas • Ambientes de programação • Ferramentas automáticas • Hoje, um pequeno compilador é projetado em disciplinas de um ano

  14. Um conjunto de técnicas básicas pode ser usado na construção de compiladores para várias linguagens e várias máquinas • Construção de compiladores abrange e integra conhecimentos de: • Linguagens de programação • Arquitetura de computadores • Teoria de autômatos • Estruturas de dados • Engenharia de software

  15. 0.4 – Programa da Disciplina Cap. I - Introdução - 1 sem Cap. II - Gramáticas e linguagens - 0.5 sem Cap. III - Diagramas de transições - 2 sem Cap. IV - Complementos de análise léxica - 0.5 sem Cap. V - Análise sintática - 4 sem Cap. VI - Análise semântica - 3 sem Cap. VII - Código intermediário - 2 sem Cap. VIII - Organização em tempo de execução - 1 sem Cap. IX - Geração de código - 1 sem Cap. X - Otimização de código - 1 sem

  16. 0.5 – Metodologia e Carga Horária • Pré-requisitos de CES-41: • CTC-34 Autômata e Linguagens Formais • CES-11 Algoritmos e Estruturas de Dados • Carga horária semanal: 3-0-2-5 • Aulas teóricas: expositivas e em sala comum • Aulas de laboratório: em sala com microcomputadores; ferramentas Lex e Yacc

  17. 0.6 – Critérios de Avaliação Os tipos de trabalhos a serem propostos são: • Séries de exercícios sobre a teoria da disciplina, sem necessidade de programação • As questões podem ser práticas ou até teóricas • Séries de exercícios envolvendo programação de algoritmos ou técnicas apresentadas • Laboratórios visando a implementação de um compilador, usando ferramentas automáticas • Não haverá provas bimestrais nem de Exame

  18. Os objetivos dos laboratórios poderão ser a implementação de: • Analisador léxico • Analisador sintático • Analisador semântico • Gerador de código intermediário • Gerador de código objeto • Interpretador do código intermediário

  19. A nota final da disciplina será uma média ponderada das notas dos trabalhos • Os pesos dos trabalhos dependem do esforço exigido e da importância do assunto abordado • Trabalhos individuais e em grupos: • As análises léxica e sintática são de caráter individual • Os outros laboratórios poderão ser feitos em grupos de no máximo dois alunos • As séries poderão ou não ser de caráter individual

  20. 0.7 – Bibliografia 0.7.1 – Bibliografia básica • A.V.Aho, M.S.Lam, R.Sethi e J.D.Ullman – Compiladores: Princípios, Técnicas e Ferramentas– 2a Edição – São Paulo – Pearson/Addison Wesley – 2008. É a 2ª edição, traduzida para Português, do conhecido livro do dragão

  21. 0.7 – Bibliografia 0.7.1 – Bibliografia básica • A.V.Aho, R.Sethi e J.D.Ullman – Compilers: Principles, Techniques and Tools– Reading – Addison Wesley – 1986. É a 1ª edição do livro do dragão

  22. 0.7 – Bibliografia 0.7.1 – Bibliografia básica • K.C.Louden – Compiladores: Princípios e Práticas –São Paulo – Thomson – 2004.

  23. 0.7 – Bibliografia 0.7.1 – Bibliografia básica • J.P.Tremblay e P.G.Sorenson – TheTheory and PracticeofCompilerWriting –Singapore – McGraw Hill – 1989.

  24. 0.7 – Bibliografia 0.7.1 – Bibliografia básica • Slides de CES-41 – Prof. Mokarzel, 2014

  25. 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar • A.I.Holub – Compiler Design in C– Englewood Cliffs – Prentice Hall – 1990.

  26. 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar • P.Rechenberg e H.Mössenböck – A Compiler Generator for Microcomputers – Englewood Cliffs – Prentice-Hall – 1989.

  27. 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar • I.Ricarte – Introdução à Compilação – Rio de Janeiro – Campus/Elsevier – 2008.

  28. 0.7 – Bibliografia 0.7.2 – Bibliografia suplementar • J.R. Levine, T. Mason e D. Brown – Lex & Yacc– 2ndEdition – Sebastopol – O’Reilly & Associates – 1992.

More Related