1 - INTRODUÇÃO
1 - INTRODUÇÃO
Vou bem! E
você?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
Fine!
1 - INTRODUÇÃO
1 - INTRODUÇÃO
Tradução:
Compiladores
Linguagem de Interpretadores
programação:
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
Sistema Operacional
Linguagem de Máquina
000011111010101
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Fonte Tradução Objeto Linkedição Executável
Compilador
Fonte Interpretação
Executável
Entrada Saída
Interpretador
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Máquina Saída
Entrada Virtual
Java
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Finalizando: A tradução dos programas pode se feitas
de três formas:
Montadores (Assembler): Transformam os programas
escritos em linguagem de baixo nível (Assembly)
em programas-objetos.
Compiladores: Transforma programas escritos em
linguagem de alto nível (programa-fonte) em
programas-objetos, que após transformado pelo
Linker, poderá ser executado pelo computador
(arquivo tipo EXE).
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
Interpretadores: Tem as mesmas características dos
compiladores, só que não geram programas-
objetos. A tradução é feita diretamente do
programa fonte. É mais demorado que o
compilador, uma vez que interpreta cada
comando ao executá-lo.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1 – Estrutura de um Tradutor
Fluxo de Caracteres
Fluxo de tokens
Tabela de Símbolos
Árvore Sintática
Árvore Sintática
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1 – Estrutura de um Tradutor
Árvore Sintática
Representação
Intermediária
Tabela de Símbolos
Representação
Intermediária
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.1 – Análise Léxica
Ou Leitura (scaning) – Agrupa uma sequência
significativa = Lexema. Para cada lexema é
produzido um ...
Palavra reservada;
token = [nome-token,valor-atributo] Delimitadores;
Identificadores
[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][+,][id,7][;, ]
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.2 – Análise Léxica
While i<100 do i: = j + i;
[while,][id,7][<,][cte,13][do,][id,7][:=,][id,12][+,][id,7][;, ]
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.3 – Análise Sintática
Verifica se a estrutura gramatical (frase)
(expressões, comandos) estão de acordo com
as regras da linguagem.
• Processo de varredura (parsing)
• Produz a árvore de derivação resultante da
aplicação das regras gramaticais.
• Detecção de erros: Identifica a posição e o tipo
de erro.
• Muitas vezes opera conjuntamente com o
analisador semântico.
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5.1.3 – Análise Sintática
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5.1.3 – Análise Sintática
<comando> <while> | <atrib> |....;<while> while <exp_bool> do <comando>; <atrib> <variável> := <exp_arit>;
<exp_bool> <exp_arit> < <exp_arit>; <exp_arit> <exp_arit> + <termo> | <termo>; <termo> <numero> | <variável>; <variável> I |J
<comando>
<while>
<exp_bool> <comando>
<atrib>
<exp_arit> <exp_arit>
<termo> <variável>
<variável>
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.4 – Análise Semântica
Verifica se as estruturas do programa irão fazer
sentido durante a execução.
• Verifica se um identificador declarado como
variável é usado como tal
• Existência de compatibilidade entre operandos
e expressões.
Exemplo: Em pascal o comando while tem a
seguinte sintaxe:
while <expressão> do <comando>
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.5 – Geração de Código Intermediário
Exemplo:
While i<100 do i:=j+i;
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.6 – Otimização de Código
L0 if i < 100 goto L1
Exemplo: goto L2
While i<100 do i:=j+i; L1 TEMP := J+I
I:=TEMP
Anterior goto L0
L2 ........
1 - INTRODUÇÃO
1 - INTRODUÇÃO
II.5 Tradutores
II.5.1.7 – Geração de Código Objeto
Exemplo: L0 if i >= 100 goto L2
i:=j+i
while i<100 do i:=j+i;
goto L0
Otimizado L2 ........
1 - INTRODUÇÃO
1 - INTRODUÇÃO
C o n c l u s õ e s.
Perguntas?
1 - INTRODUÇÃO
1 - INTRODUÇÃO
1 - INTRODUÇÃO