Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTRUTURA DE UM
COMPILADOR
ROTEIRO
1 ESTRUTURA DE UM COMPILADOR
1.1 Paradigmas de programação
1.2 Processo de compilação
2
1 ESTRUTURA DE UM COMPILADOR
3
1 ESTRUTURA DE UM COMPILADOR
4
1 ESTRUTURA DE UM COMPILADOR
5
1 ESTRUTURA DE UM COMPILADOR
6
1 ESTRUTURA DE UM COMPILADOR
7
1 ESTRUTURA DE UM COMPILADOR
8
1 ESTRUTURA DE UM COMPILADOR
9
1 ESTRUTURA DE UM COMPILADOR
Linguagem de programação
▰ Sua evolução, indo das mais simples do ponto de vista da máquina, até as
mais complexas, ou seja, as chamadas linguagens de alto nível, essas
mais simples para nós humanos!
10
1 ESTRUTURA DE UM COMPILADOR
11
Linguagem de alto nível
são linguagens com sintaxe mais fácil de ser compreendida pelo homem e
independentes do hardware (máquina). Um programa escrito em uma
linguagem de alto nível é denominado código-fonte.
12
1 ESTRUTURA DE UM COMPILADOR
13
1 ESTRUTURA DE UM COMPILADOR
14
1 ESTRUTURA DE UM COMPILADOR
15
1 ESTRUTURA DE UM COMPILADOR
16
1 ESTRUTURA DE UM COMPILADOR
17
1 ESTRUTURA DE UM COMPILADOR
18
1 ESTRUTURA DE UM COMPILADOR
19
1 ESTRUTURA DE UM COMPILADOR
20
1 ESTRUTURA DE UM COMPILADOR
21
1 ESTRUTURA DE UM COMPILADOR
22
1 ESTRUTURA DE UM COMPILADOR
23
1 ESTRUTURA DE UM COMPILADOR
24
1 ESTRUTURA DE UM COMPILADOR
Regras de nomes em C:
▰ Variável: começa com _ e letra, os símbolos seguintes podem ser _, letra
ou número.
▰ a, a1 e endereco_residencial são exemplos de variáveis válidas. 1a e
endereco residencial são exemplos não válidos, pois o primeiro começa
com número e o segundo tem espaço.
▰ A linguagem C é case-sensitive, isto é, a variável saldo é diferente da
variável SALDO.
25
1 ESTRUTURA DE UM COMPILADOR
26
1.1
PARADIGMAS DE
PROGRAMAÇÃO
é um meio de se classificar as linguagens de
programação baseado em suas funcionalidades.
27
1.1 Paradgmas de programação
28
1.1 Paradgmas de programação
29
Paradigma imperativo
as linguagens imperativas têm as variáveis e os programas armazenados juntos
na memória, além dos comandos e das atribuições, que são usados para
cálculos, entradas e saídas.
30
1.1 Paradgmas de programação
31
Paradigma OO
a base para entender o paradigma orientado a objeto está na abstração dos
dados e tipos.
32
1.1 Paradgmas de programação
33
Paradigma funcional
o princípio do padrão funcional nasceu quando A. Church demonstrou com o
cálculo − λ que sempre existe uma função se o problema for computável.
34
1.1 Paradgmas de programação
35
1.1 Paradgmas de programação
36
Paradigma lógico
a chave para você raciocinar de acordo com o paradigma lógico é desenvolver a
solução declarando qual resultado o programa deve alcançar, em vez de como o
programa deve alcançar tal resultado.
37
1.1 Paradgmas de programação
38
1.1 Paradgmas de programação
39
1.2
PROCESSO DE
COMPILAÇÃO
40
“ Posto de forma simples, um compilador é um programa
que lê um programa escrito numa linguagem –
linguagem fonte – e o traduz num programa
equivalente numa outra linguagem – a linguagem alvo.”
(AHO, 2007, p. 1)
41
1.2 Processo de Compilação
42
1.2 Processo de Compilação
43
1.2 Processo de Compilação
Processo de compilação
44
1.2 Processo de Compilação
45
1.2 Processo de Compilação
Montadores
▰ programas que traduzem um código fonte escrito em linguagem básica
(assembly) em código de máquina, também denominado Assembler. Essa
tradução normalmente é feita em um ou dois passos.
46
1.2 Processo de Compilação
Compiladores
▰ traduzem o código fonte, programa escrito em uma linguagem de alto
nível, em código alvo. Após o processo de compilação, o código alvo não
precisa mais passar pelo processo de compilação para ser novamente
executado. É um programa complexo e requer várias fases.
47
1.2 Processo de Compilação
Interpretadores
▰ fazem o mesmo processo do compilador, mas cada comando (linha de
programa) analisado executa todas as fases de tradução até alcançar o
código alvo e já o executa. As linguagens interpretadas exigem que os
programas sejam submetidos ao interpretador todas as vezes que
necessitarem ser executadas.
48
1.2 Processo de Compilação
Compiladores híbridos
▰ seguem todos os passos de um compilador, mas não geram o código
executável, e sim um código intermediário que será executado por uma
máquina virtual. A grande vantagem desse tipo de compilador é a
portabilidade.
49
Fase de análise
está diretamente associada à verificação de se o programa foi escrito
corretamente, isto é, de acordo com as regras da linguagem.
50
1.2 Processo de Compilação
51
1.2 Processo de Compilação
Léxica
▰ em que se verifica se os nomes das entidades estão corretos.
52
1.2 Processo de Compilação
Sintática
▰ analisa-se se os comandos estão corretos. Chama a verificação da frase.
Aqui, não basta escrever as palavras corretamente, importando também a
ordem em que elas aparecem.
53
1.2 Processo de Compilação
Semântica
▰ nesse ponto, verifica-se o contexto. No caso das linguagens de
programação, o compilador deverá analisar se os valores envolvidos nos
comandos estão compatíveis.
54
Fase de síntese
visa gerar o código alvo a partir dos resultados obtidos pelas fases
intermediárias.
55
1.2 Processo de Compilação
Gerenciamento Geração do
Otimização do Geração do
da tabela de código
código código
símbolos intermediário
56
1.2 Processo de Compilação
57
1.2 Processo de Compilação
58
1.2 Processo de Compilação
Otimização do código
▰ realiza transformações no código com o objetivo de melhorar o tempo de
execução, o consumo de memória ou o tamanho do código.
59
1.2 Processo de Compilação
Geração do código
▰ essa é a fase final, que gera o código alvo.
60
BIBLIOGRAFIA
61
OBRIGADO!
Perguntas?
edilson.lima@kroton.com.br
(98) 9 8806-8505
62
63
Vamos lá...
😉
✋👆👉👍👤👦👧👨👩👪💃
🏃💑❤😂😉😋😒😭👶😸🐟
🍒🍔💣📌📖🔨🎃🎈🎨🏈🏰
🌏🔌🔑 até a próxima aula...
64