compiladores - bruno morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  ·...

41
Compiladores Prof. Bruno Moreno

Upload: vuongquynh

Post on 15-Apr-2018

227 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

Compiladores

Prof. Bruno Moreno

Page 2: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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 4: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

Apresentação - Professor

Contato

Site: http://brunomoreno.com

Email: [email protected]

Page 5: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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

O que é um

compilador?

Page 8: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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

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

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

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

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

Compilando um programa

simples...

Page 15: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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

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

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

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

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

Conteúdo

Programático

Page 22: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 37: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

Dúvidas?

Page 38: Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  · 2012-05-01Conceitos básicos sobre compiladores e interpretadores

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

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

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

Para pensar...

“Não é o que você faz, mas quanto amor você

dedica no que faz que realmente importa.”Madre Tereza