Apresentação da Disciplina - Linguagens Formais e Tradutores

Propaganda
Núcleo de Sistema de Informação
1
Um compilador é um programa que traduz um programa
escrito numa linguagem fonte para outro equivalente escrito
numa linguagem alvo.
programa
fonte
Compilador
programa
alvo
mensagens
de erro
2
esqueleto do programa fonte
montador
pre-processador
código de máquina relocável
programa fonte
COMPILADOR
programa alvo em assembler
carregador
bibliotecas,
arquivos,
objetos
relocáveis
código de máquina absoluto
3
:=
m
+
*
dp
tp
60
Ferramentas que fazem análise:
• Editores de estruturas
• Pretty printers
• Verificadores estáticos
• Interpretadores
• Formatadores de texto
• Interpretadores de consultas
4
"#
"
#
" !!!#
5
montante := deposito_inicial +
taxa_de_juros * 60
É decomposto nos seguintes tokens:
• Identificador montante
• Símbolo de atribuição :=
• Identificador deposito_inicial
• Sinal de adição
• Identificador taxa_de_juros
• Sinal de multiplicação
• Número 60
6
!
!
"$$
#
"#
7
enunciado de
atribuição
identificador
:=
montante
expressão
identificador
deposito_inicial
expressão
+
expressão
expressão
*
identificador
taxa_de_juros
expressão
número
60
8
:=
+
montante
deposito_inicial
*
taxa_de_juros
60
9
$!
%
!
&
&
*+$
*,+
*)+
'*(
%&
10
11
:=
montante
REAL-ADD
deposito_inicial
REAL-MULT
taxa_de_juros
inttoreal
60
12
programa fonte
analisador léxico
analisador sintático
analisador semântico
gerenciador da
tabela de
símbolos
gerador de código
intermediário
otimizador de código
gerador de código
programa alvo
tratador de
erros
14
%&
'
#
$
%&
'
15
Java
ML
Sparc
vanguardas
Java
MIPS
ML
Pascal
Pascal
Pentium
C
C++
retaguardas
Sparc
MIPS
Código
Intermediário
Pentium
C
Alpha
C++
Alpha
16
!)
'
'
#*((
+
( *'
'((((+
*
+
"
17
18
%
& (
19
Download