compiladores - bruno morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · ·...
TRANSCRIPT
![Page 1: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/1.jpg)
Compiladores
Prof. Bruno Moreno
![Page 2: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/2.jpg)
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
![Page 3: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/3.jpg)
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
![Page 5: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/5.jpg)
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
![Page 6: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/6.jpg)
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
![Page 7: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/7.jpg)
O que é um
compilador?
![Page 8: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/8.jpg)
Como o computador entende...
Em binário
01100111000
Linguagem de baixo nível
Linguagem de máquina
![Page 9: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/9.jpg)
Como o programador
escreve...
Java, C, Pascal, Fortran...
Linguagens de Alto nível
Abstração do homem para se comunicar com
o computador
![Page 10: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/10.jpg)
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
![Page 11: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/11.jpg)
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
![Page 12: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/12.jpg)
Visão simplificada de um
compilador...
![Page 13: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/13.jpg)
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
![Page 14: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/14.jpg)
Compilando um programa
simples...
![Page 15: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/15.jpg)
Compilando um programa
simples...
Como o compilador vê o código fonte...
![Page 16: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/16.jpg)
O que a Análise Léxica faz...
![Page 17: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/17.jpg)
O que a Análise Sintática faz...
![Page 18: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/18.jpg)
Análise semântica
Checagem de tipos
![Page 19: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/19.jpg)
Geração de código
![Page 20: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/20.jpg)
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
![Page 21: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/21.jpg)
Conteúdo
Programático
![Page 22: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/22.jpg)
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
![Page 23: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/23.jpg)
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
![Page 24: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/24.jpg)
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
![Page 25: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/25.jpg)
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
![Page 26: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/26.jpg)
Unidade VIII
Análise Semântica
Gramáticas de Atributos
Grafos de dependência e tratamento de ciclos
Tabela de Símbolos
![Page 27: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/27.jpg)
Unidade IX
Ambientes de Execução
Organização da Memória
Ambientes de Execução
Passagem de parâmetro
![Page 28: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/28.jpg)
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
![Page 29: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/29.jpg)
Unidade XII
Assemblers, linkeditores e carregadores
Montadores
Carregadores e ligadores
![Page 30: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/30.jpg)
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
![Page 31: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/31.jpg)
Seminários
27/05/2011
Todos deverão elaborar
Apresentação será por sorteio
2 seminários
Maiores informações no decorrer do curso
![Page 32: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/32.jpg)
Projeto
Três participantes
Será definido no decorrer das aulas
![Page 33: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/33.jpg)
Contagem das avaliações
NP1
80% Prova escrita
10% Freqüência e participação
10% Exercícios
![Page 34: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/34.jpg)
Contagem das avaliações
NP2
50% Prova escrita ou seminário
40% Projeto
10% Frequência, participação e exercícios
![Page 35: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/35.jpg)
Bibliografia
Disponíveis na Internet!
![Page 36: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/36.jpg)
![Page 37: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/37.jpg)
Dúvidas?
![Page 38: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/38.jpg)
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?
![Page 39: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/39.jpg)
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
![Page 40: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/40.jpg)
Próxima aula – 18/02
Unidade I
![Page 41: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… · · 2012-05-01Conceitos básicos sobre compiladores e interpretadores](https://reader034.vdocuments.site/reader034/viewer/2022052313/5ad33cba7f8b9a05208db8f3/html5/thumbnails/41.jpg)
Para pensar...
“Não é o que você faz, mas quanto amor você
dedica no que faz que realmente importa.”Madre Tereza