Compiladores Prof. Bruno Moreno
Apresentação - Professor Bruno Neiva Moreno Graduado em Ciência da Computação (UFPB) 2004 a 2009 Bolsista PIBIC/CNPq LARHENA - Laboratório de Recursos Hídricos e Engenharia Ambiental Mestre em Ciência da Computação 2009-2011 Defesa: 07/03 Áreas Trajetórias de Objetos Móveis Banco de Dados Geográficos Spatial Temporal Data Mining
Apresentação - Professor Doutorado UFPE Início: Março de 2011 Aulas FATECJP e ASPER Cursos de Capacitação CODATA REHISA Consultoria em empresas Sistemas de Informação Consultoria em Projetos de Pesquisa GeoCISA http://www.hidro.ufcg.edu.br/twiki/bin/view/cisa/geocisa GeoBEER
Apresentação - Professor Contato Site: http://brunomoreno.com Email: bneivamoreno@gmail.com
Apresentação - Disciplina Nome: Compiladores e Computabilidade Carga Horária: 33h Horário das Aulas Sexta-feira 19:15 a 20:30 Site http://brunomoreno.com/ensino/asper/compiladores.html Ementa, trabalhos, notas, avisos, etc. Comunicação https://groups.google.com/group/comiladores-asper
Ementa Conceitos básicos sobre compiladores e interpretadores Tipos de compiladores Análise léxica Tabela de símbolo Análise Sintática Tratamento de Erros Sintáticos Análise Semântica Geração de Código Intermediário Otimização Geração de código objeto Ambientes de Execução
O que é um compilador?
Como o computador entende... Em binário 01100111000 Linguagem de baixo nível Linguagem de máquina
Como o programador escreve... Java, C, Pascal, Fortran... Linguagens de Alto nível Abstração do homem para se comunicar com o computador
Compilador Programa que lê um programa escrito em uma linguagem de alto nível (Linguagem Fonte) Traduz para uma linguagem alvo capaz de ser lida pelo computador Relatar erros no programa fonte
Por quê estudar Compiladores? Melhor compreensão das linguagens de programação Aspectos semânticos, sintáticos Entender melhor os erros de desenvolvimento Otimizar o código Experiência prática no desenvolvimento de uma LP
Visão simplificada de um compilador...
Fases de compilação Análise Léxica Divide código em tokens Análise sintática Verifica estrutura de frases Cria Árvore sintática Análise Semântica Entende as frases Relaciona escopos, valores de variáveis Encontra erros semânticos Geração de Código Otimização, análise de fluxo de dados
Compilando um programa simples...
Compilando um programa simples... Como o compilador vê o código fonte...
O que a Análise Léxica faz...
O que a Análise Sintática faz...
Análise semântica Checagem de tipos
Geração de código
Compilador Programa que lê um programa escrito em uma linguagem de alto nível (Linguagem Fonte) Traduz para uma linguagem alvo capaz de ser lida pelo computador Relatar erros no programa fonte
Conteúdo Programático
Conteúdo Programático I a III - Introdução à Compilação IV, V - Análise Léxica VI, VII - Análise Sintática VIII - Análise Semântica IX - Ambientes de Execução X, XI - Geração de Código XII - Assemblers, linkeditores e carregadores
Unidades I a III Introdução à Compilação Motivações Descrição do processo de compilação O conceito de semântica Caracterização de linguagens quanto a nivel de abstração Identificação e diferenciação de elementos Etapas de transformação de código
Unidades IV e V Análise Léxica Transformação do código em tokens Autômatos finitos para reconhecimento e classificação de tokens Identificação de erros léxicos Geradores de analisadores léxicos
Unidades VI e VII Análise Sintática Descrição da tarefa de verificação da estrutura sintática do programa Gramáticas livres de contexto Precedência de operadores Técnicas de análise Tratamento e recuperação de erros Geradores e analisadores sintáticos
Unidade VIII Análise Semântica Gramáticas de Atributos Grafos de dependência e tratamento de ciclos Tabela de Símbolos
Unidade IX Ambientes de Execução Organização da Memória Ambientes de Execução Passagem de parâmetro
Unidades X e XI Geração de Código Geração de código intermediário Notações pré e pós fixadas Código de três endereços Blocos básicos e grafos de fluxo Otimização Geração de linguagem simbólica
Unidade XII Assemblers, linkeditores e carregadores Montadores Carregadores e ligadores
Avaliações (1) 08/04/2011 Unidades I a V Introdução e Análise Léxica (2) 03/06/2011 Unidades VI a VIII Análise Sintática e Semântica Unidades IX a XII Seminários
Seminários 27/05/2011 Todos deverão elaborar Apresentação será por sorteio 2 seminários Maiores informações no decorrer do curso
Projeto Três participantes Será definido no decorrer das aulas
Contagem das avaliações NP1 80% Prova escrita 10% Freqüência e participação 10% Exercícios
Contagem das avaliações NP2 50% Prova escrita ou seminário 40% Projeto 10% Frequência, participação e exercícios
Bibliografia Disponíveis na Internet!
Dúvidas?
Exercício Nº 1 Nome e email Onde trabalha? O que faz no seu trabalho? Quais suas áreas de interesse? Possíveis respostas... Desenvolvimento de sites? Desenvolvimento de sistemas? Meio empresarial? Pós-graduação?
Exercício Nº 1 Qual sua motivação para o curso de Ciência da Computação? Possíveis respostas Realização profissional Se inserir no mercado
Próxima aula 18/02 Unidade I
Para pensar... Não é o que você faz, mas quanto amor você dedica no que faz que realmente importa. Madre Tereza