Compiladores. Prof. Bruno Moreno

Documentos relacionados
Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Conceitos de Linguagens de Programação

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Compiladores. Introdução

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Linguagens de Programação Aula 3

Compiladores. Conceitos Básicos

PROGRAMAÇÃO I. Introdução

Compiladores. Introdução à Compiladores

Compiladores I Prof. Ricardo Santos (cap 1)

Introdução à Programação

Compiladores Aula 1. Celso Olivete Júnior.

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Introdução aos Compiladores

Projeto de Compiladores

Projeto de Compiladores

Compiladores. Análise Léxica

Autômatos e Linguagens

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Noções de compilação

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Introdução a Ciência da Computação

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

Linguagens e Compiladores

Paradigmas de Programação

As fases de um compilador

EA876 - Introdução a Software de Sistema

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

As fases de um compilador

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Como construir um compilador utilizando ferramentas Java

INE5622 INTRODUÇÃO A COMPILADORES

COMPILAÇÃO. Ricardo José Cabeça de Souza

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Como construir um compilador utilizando ferramentas Java

Compiladores. Análise Semântica

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

Programação de Computadores

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Compiladores. Fabio Mascarenhas

Programação de Computadores

IBM1088 Linguagens Formais e Teoria da Computação

Capítulo 1 Linguagens e processadores

Prof. Adriano Maranhão COMPILADORES

Introdução à Computação

Aula 2 - Programação de Computadores - CI208 1/21

PLANO DE UNIDADE DIDÁTICA- PUD

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Compiladores e Computabilidade

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Paradigmas de Linguagem de Programação. Aspectos Básicos

Linguagem de Programação

Lembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1)

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Introdução à Computação

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Transcrição:

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