Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · ·...
-
Upload
vuongquynh -
Category
Documents
-
view
227 -
download
4
Transcript of Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · ·...
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 - 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