Compiladores - Bruno Morenobrunomoreno.com/wordpress/wp-content/uploads/2012/… ·  ·...

Post on 15-Apr-2018

227 views 4 download

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 - 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