Prof. Fábio Carneiro Mokarzel 2014

Slides:



Advertisements
Apresentações semelhantes
Profa. Sandra de Amo Mestrado em Ciência da Computação 2013 – 2
Advertisements

Compiladores Claudio Benossi
I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.
Linguagens Formais e Autómatos
1 Faculdade de Tecnologia de São Caetano do Sul Prof. Msc Adilson Ferreira da Silva Ferramentas de Engenharia de Software.
Seminários de Compiladores
Profa. M.Sc. Yáskara Menescal
Informática Aplicada Prof. Araken Medeiros
Teoria da Computação Profa. Sandra de Amo Mestrado em Ciência da Computação 2010 – 1.
Teoria da Computação Profa. Sandra de Amo Bacharelado em CC Mestrado em CC 2008 – 1.
Teoria dos Compiladores
Introdução à organização de computadores e sistemas operacionais
Lógica de Programação Módulo II
Teleprocessamento e Redes Programa da Disciplina
FÍSICA EXPERIMENTAL III – FEX3001 APRESENTAÇÃO DA DISCIPLINA
Banco de Dados (BAN-TSI)
Linguagens Formais e Autômatos
Sistemas Especialistas Aula 1 – Introdução
Tópico Avançados em Sistemas de Computação (Pesquisa Operacional)
Linguagens Formais e Tradutores
Engenharia e Gestão da Produção Teoria de Sistemas de Controlo Linear Copyright 2000, Jorge Lagoa Ano lectivo 2000/2001.
Arquitetura de Computadores
INF 1771 – Inteligência Artificial
Introdução a Engenharia de Software
Análise léxica e sintática
Programação Avançada Prof. Natalia Castro Fernandes
Modelagem de Software.
Prof. Guilherme Alexandre Monteiro Reinaldo Recife
Compiladores Prof. Claudio Benossi.
Análise léxica e sintática
TÉCNICAS DE PROGRAMAÇÃO
Prof. Leandro da Silva Taddeo
Trabalho em grupo.
Capítulo II Gramáticas e Linguagens
Geração de Código aula-12-geração-de-código.pdf.
Semântica de Ações Especificação Completa de Specimen, Actress, Projeto RAT, Considerações Finais.
Paulo Cesar Spigolon (Paulinho)
Analisador Léxico Prof. Alexandre Monteiro
Experimentação Algorítmica
Professor: Cecília de Azevedo Castro César Sala: No Prédio da Computação do ITA Ramal: 5898 Homepage:
Compiladores Prof. Claudio Benossi.
Apresentação da Disciplina Modelagem de Software
Professora: JAQUELINE RODRIGUES
Engenharia de Software
Introdução Eduardo Figueiredo 04 de Março de 2010 POOAula 01 ou
Engenharia de Software
Professora: JAQUELINE RODRIGUES
Campus de Caraguatatuba Aula 1: Orientações Gerais
Introdução a Engenharia de Alimentos
Back-End Compilação aula-11-back-end.pdf.
Análise e Especificação de Requisitos © 2001 Jaelson CastroInformações Gerais 1 Análise e Especificação de Requisitos - IF119 Centro de Informática Jaelson.
Algoritmos e Programação I
Gestão da Qualidade Prof. Paulo Castilho Apresentação do Curso.
Software Básico Apresentação do curso (2008/2) Prof.: Jussara Almeida.
Gerenciamento de Requisitos e Modelagem de sistemas
ADMINISTRAÇÃO DE EMPRESAS II Ciência da Computação Prof. Rose Grossi Fagen – UFU Fagen – UFU Aula Aula
Arquitetura de Computadores
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Mineração de Dados Profa. Sandra de Amo
SISTEMAS DE INFORMAÇÃO
INE5408 Estruturas de Dados Apresentação e Programa da Disciplina.
ENGENHARIA CIVIL COMPUTAÇÃO APLICADA Aula /08/2011 Professor Leomir J. Borba- –
Estrutura de Dados Aula 1 Apresentação
(Como resolver com bem menos esforço problema típico de profissional)
APS II Análise e Projeto de Sistemas de Informação II
UEZO - CURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro semestre de 2013_2.
PROGRAMAÇÃO DE COMPUTADORES Engenharia Unificado Prof. Leonardo Bacelar Lima Santos Departamento de Matemática
BC-1513 Redes de Computadores Aula 01 Apresentação Prof. João Henrique Kleinschmidt Santo André, fevereiro de 2016.
Prof. Edilton Santos – Centro Universitário Jorge Amado1 Curso: Sistemas de Informação Disciplina: Engenharia de Software Contato:
Transcrição da apresentação:

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

Capítulo Zero Apresentação 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 0.4 – Programa da disciplina 0.5 – Metodologia e carga horária 0.6 – Critérios de avaliação 0.7 – Bibliografia

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

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

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

0.2.2 – Objetivos específicos Conhecimento do contexto onde se insere um compilador Estudo da organização de 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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

0.7 – Bibliografia 0.7.1 – Bibliografia básica J.P.Tremblay e P.G.Sorenson – The Theory and Practice of Compiler Writing – Singapore – McGraw Hill – 1989.

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

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

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.

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

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