Académique Documents
Professionnel Documents
Culture Documents
Instituto de Matemática
Departamento de Ciência da Computação
Disciplina: MATA61 – Compiladores
Salvador, Ago/2019
Cliquez pour modifier le style du titre
3
Arquitetura Geral de um Compilador
4
Objetivos
6
Plano do Curso
7
Metodologia e Dinâmica das Aulas
8
Bibliografia
10
Cliquez pour modifier le style du titre
Tradução de Linguagens
Grande parte dos slides a seguir foram adaptados a partir dos cursos
dos professores: Lais Salvador, UFBA e André Santos, UFPE.
O que é uma Linguagem de Programação?
12
Evolução das LP’s quanto ao
Nível de Abstração
A area de um triângulo
Linguagem Natural
é igual a b*h/2
class Triangle {
Linguagem de Alto Nivel ...
float surface()
return b*h/2;
}
LOAD r1,b
Linguagem Simbolica LOAD r2,h
MUL r1,r2
DIV r1,#2
RET
00010010010001010010010
Linguagem de Maquina
01110110010101101001...
13
Alguns conceitos suportados por
linguagens de alto nível
§ Uso de expressões, usando notação semelhante à
matemática;
§ tipos de dados primitivos e compostos;
§ estruturas de controle como if-then-else, while,
for etc.;
§ declarações de variáveis, tipos, funções,
procedimentos etc.;
§ abstração: o que é feito X como é feito;
§ encapsulamento (ou abstração de dados):
classes, pacotes, módulos (orientação a objetos).
14
Aspectos na concepção de uma linguagem
15
Tradutor
Texto-Fonte Texto-Objeto
(redigido em ling. fonte) Tradutor (redigido em ling. objeto)
16
O que é um compilador?
Programa-Fonte Programa-Objeto
(Ling. Alto Nível) Compilador (Ling. Baixo Nível)
17
Compilador
Programa-Fonte Programa-Objeto
(Ling. Alto Nível) Compilador (Ling. Baixo Nível)
18
Atividades adicionais do compilador
19
Outros Tipos de Processadores de
Linguagem
§ Tradutor
§ Compilador
§ Filtro
§ Pré-processador
§ Montador
§ Interpretador
20
Filtro
Programa-Fonte Programa-Objeto
(Ling. Alto Nível A) Filtro (Ling. Alto Nível B)
21
Pré-Processador
22
Montador
Programa-Fonte Programa-Objeto
(Ling. Montagem) Montador (Ling. Maquina)
23
Montador X Compilador
§ Montador
§ 1:1 à Uma instrução de máquina para cada instrução em
linguagem assembler
§ Compilador
§ 1:M à Cada linha de comando da linguagem de alto-nível
produz várias instruções de máquina
24
Interpretador
25
Cliquez pour modifier le style du titre
Compilador x Interpretador
Compilador x Interpretador
27
Compilador x Interpretador
28
Interpretador x Compilador
Arquitetura de um Compilador e
Processo de Compilação
Relacionamento dos compiladores com outros
elementos de um sistema de programação
HARDWARE
Montadores Compiladores/interpretadores
Ling. de baixo nível Ling. de alto nível
Compilador
begin
if x = 5 then
...
1100111
+ params output 0011100011
Análise Síntese
parte o programa fonte em Constrói o programa alvo
peças constituintes criando desejado (em código de
uma representação máquina) a partir da
intermediaria do programa. representação intermediaria.
33
Analise e Sintese
Análise
Análise Análise
Análise
Léxica Semântica
Sintática
Geração do Otimização
Código do Código
Síntese
Código
fonte Análise Léxica
implementação
Tokens e
Lexemas
abstração
Árvore
decorada
Código
Geração de Código
alvo
35
Análise Léxica (Scanning)
if (n == 0) { if LPAR id assign
"n"
return 1;
} else {
... intLit RPAR LCUR return
} "0"
36
Análise Sintática (Parser)
A seguinte construção
é válida? int y = 0,k = 0;
int x = y+++k;
37
Análise Sintática (Parser)
38
Análise Semântica (Contextual)
39
Análise Semântica (Contextual)
40
Geração de Código Intermediário
41
Geração de Código Intermediário
42
Otimização de Código
43
Geração de Código Objeto
44
Fases de um compilador
45
Para Casa
46
Universidade Federal da Bahia
Instituto de Matemática
Departamento de Ciência da Computação
Disciplina: MATA61 – Compiladores
Salvador, Ago/2019