Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução...

39
Compiladores Profª Katia C. Lage dos Santos Universidade Federal de Itajubá [email protected]

Transcript of Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução...

Page 1: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Compiladores

Profª Katia C. Lage dos Santos

Universidade Federal de Itajubá

[email protected]

Page 2: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Tópicos da disciplina

Introdução a CompiladoresAnálise LéxicaAnálise SintáticaFerramentas para construção de compiladoresAnálise SemânticaGeração de Código Intermediário

Page 3: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Sobre a disciplina

O material com todas as informações da disciplina serão postados em:

http://www.slideshare.net/katialageDatas importantes:

Prova 1: 26/04Entrega do trabalho individual: 26/04Entrega e apresentação do trabalho em grupo: 14/06Prova 2: 21/06

Page 4: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Bibliografia

Compiladores: Princípios, Técnicas e Ferramentas. A. V. Aho, R. Sethi e J. D. Ullman. Editora Livros Técnicos e Científicos, 2007.Implementação de Linguagens de Programação: Compiladores. Ana M. de A. Price & Simão S. Toscani. Série Livros Didáticos No. 9. Editora Sagra Luzzatto, 2000.Compiladores: Princípios e Práticas. Kenneth C. Louden. Pioneira Thomson Learning, 2004.

Page 5: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Interpretador x Compilador

O computador deve converter os comandos dados em linguagem de alto nível para linguagem de máquina (códigos binários)Existem dois métodos básicos de abordagem na tradução de linguagem de alto nível para linguagem de máquina:

INTERPRETADORCOMPILADOR

Page 6: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Interpretador

O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em linguagem de máquina e então ordena ao computador que execute esta instrução. Depois repete o processo para a segunda instrução, e assim sucessivamente, até a última instrução do programa fonte. Quando a segunda instrução é trabalhada, a primeira é perdida, isto é, apenas uma instrução fica na memória em cada instante.

Page 7: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Interpretador

Se este programa fonte for executado uma segunda vez, novamente haverá uma nova tradução, comando por comando, pois os comandos em linguagem de máquina não ficam armazenados para futuras execuções.

Page 8: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

O que é um compilador?

Page 9: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Principais Compiladores:Java

Page 10: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Principais Compiladores:C/C++

Page 11: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Diferenças entre Compiladores e Interpretadores

Page 12: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Definindo um compilador

Page 13: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Filtro (Conversor de Linguagem)

Page 14: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Pré-processador

Page 15: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Bibliotecas

Page 16: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Funções do Compilador

Page 17: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Diagrama da Compilação

Page 18: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Gerenciador da Tabela de Símbolos

Page 19: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Tratador de Erros

Page 20: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Fases da Compilação

Page 21: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Fases da Compilação

Page 22: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Front-end ou Análise

Page 23: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Léxica

Page 24: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Léxica

Page 25: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Sintática(Parsing)

Page 26: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Sintática

Page 27: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Semântica

Page 28: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Análise Semântica

Page 29: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Geração de Código Intermediário

Page 30: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Geração de Código Intermediário

Page 31: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Back-end ou síntese

Page 32: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Otimização de códigointermediário

Page 33: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Otimização de códigointermediário

Page 34: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Geração de Código Alvo

Page 35: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Geração de Código Alvo

Page 36: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Ferramentas para Construção de Compiladores

Page 37: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Ferramentas para Construção de Compiladores

Page 38: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Ferramentas para Construção de Compiladores

Page 39: Profª Katia C. Lage dos Santos · Interpretador O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita corretamente, converte-a em

Aplicações