Você está na página 1de 6

Aula 16 Arquitetura de Computadores 12/11/2007

Universidade do Contestado UnC/Mafra


Curso Sistemas de Informao
Prof. Carlos Guerber

COMPILADORES E INTERPRETADORES

Um compilador transforma o cdigo fonte (da linguagem que voc est


programando) em um cdigo em que o computador entenda.
J um interpretador, transforma um cdigo fonte em cdigo que s ele
(o programa que voc est utilizando para escrever o cdigo) entende. Assim,
quando um programa interpretado for iniciado, ele necessita de uma DLL para
poder rodar, que ir traduzir esse cdigo para uma linguagem que o
computador entenda.
Para melhor compreenso, vejamos um exemplo bem simples. Imagine
que voc trabalha dentro do computador. O computador s entende instrues
em Ingls, mas o cdigo fonte, que o programador digitou, est totalmente em
Portugus.
Suponhamos que o cdigo digitado : "Ele o meu chefe". Um
compilador traduziria esse cdigo em Portugus para Ingls, e o programa
ficaria assim: "He is my boss".
J um Interpretador faria o inverso. Ele traduziria esse cdigo para um
jeito que s uma DLL conseguiria entender. O Programa iria sair assim: "Ri is
mai bs". Assim, quando o computador precisar usar este programa, ele
precisaria chamar um Intrprete (no caso a DLL) para ditar para ele o que est
escrito na linguagem interpretada. isso que ocorre no Visual Basic por
exemplo.

EXECUO DE PROGRAMAS

Uma linguagem de programao um conjunto de ferramentas, regras


de sintaxe e smbolos ou cdigos que nos permitem escrever programas de
computador. A primeira e mais primitiva linguagem de computador a prpria
linguagem mquina (0s e 1s).

Um programa era difcil, longo e principalmente caro de o construir e. era


tambm difcil de ser entendido por outros programadores.
Essa complexidade levou necessidade de desenvolver novas tcnicas
e ferramentas.

COMPILADOR

Um compilador tem a finalidade de converter uma linguagem


Linguagem Fonte de fcil escrita e leitura para os programadores, numa
linguagem Linguagem alvo ou objeto que possa ser executada pelas
mquinas.
O cdigo executvel gerado pelo compilador dependente do sistema
operacional e da linguagem de mquina para o qual o cdigo fonte foi
traduzido.
A enorme variedade de compiladores existentes bem vinda, visto que
existem milhares de linguagens fonte, e as linguagens alvo so tambm muito
variadas.

Programa Fonte
for (i=0;i<=10, i++)
printf(%d, i);
em linguagem de alto nvel

Compilador

Programa Objeto
01000001

10110010

11110010

01001110

(em linguagem de mquina)

Podemos dividir o processo de compilao em duas fases:

Anlise: Parte o programa fonte em peas constituintes e cria uma


representao intermediaria do programa fonte. Est a dividida em:
1. Anlise Lxica;
2. Anlise Sinttica;
3. Anlise Semntica.

Sntese: Constri o desejado programa alvo (cdigo de mquina) a partir


da representao intermediaria. Se divide em:

Gerao do Cdigo

Otimizao do Cdigo

1. Anlise Lxica: o processo de analisar a entrada de linhas de caracteres


(tal como o cdigo-fonte de um programa de computador) e produzir uma
seqncia de smbolos chamados smbolos lxicos (lexical tokens), ou
somente "smbolos" (tokens), que podem ser manipulados mais facilmente
pelo compilador.
A Anlise Lxica a forma de verificar determinado alfabeto. Quando
analisamos uma palavra, podemos definir atravs da anlise lxica se
existe ou no algum caracter que no faz parte do nosso alfabeto, ou um
alfabeto inventado por ns. O analisador lxico a primeira etapa de um
compilador, logo aps vir a anlise sinttica.

2. Anlise Sinttica: o processo de analisar uma seqncia de entrada (lida


de um arquivo de computador ou do teclado) para determinar sua estrutura
gramatical segundo uma determinada gramtica formal. Essa anlise faz
parte de um compilador. A anlise sinttica transforma um texto na entrada
em uma estrutura de dados, em geral uma rvore, o que conveniente para
processamento posterior e captura a hierarquia implcita desta entrada.
Atravs da anlise lxica obtido um grupo de tokens, para que o
analisador sinttico use um conjunto de regras para construir uma rvore
sinttica da estrutura.

Em termos prticos, pode tambm ser usada para decompor um texto em


unidades estruturais para serem organizadas dentro de um bloco, por
exemplo.

3. Anlise semntica: a terceira fase da compilao onde se verifica os erros


semnticos, (por exemplo, uma multiplicao entre tipos de dados
diferentes) no programa-fonte (cdigo-fonte) e coleta as informaes
necessrias para a prxima fase da compilao que a gerao de
programa-objeto (cdigo objeto).

FASES DE UM COMPILADOR

INTERPRETADOR

Interpretadores so programas de computador que lem um cdigo fonte


de uma linguagem de programao e os convertem em cdigo executvel. Seu
funcionamento pode variar de acordo com a implementao.
Em muitos casos o interpretador l linha-a-linha e converte em cdigo
objeto medida que vai executando o programa. Linguagens interpretadas so
mais dinmicas por no precisarem escrever-compilar-testar-corrigir-compilartestar-distribuir, e sim escrever-testar-corrigir-escrever-testar-distribuir.
Mas existem tambm linguagens que funcionam como interpretadores e
compiladores, como: C, Python, BASIC, entre outros.

Exemplo de linguagens interpretadas:

BASIC

Euphoria

Bash

Forth

C#

JavaScript

Perl

Logo

PHP

MUMPS

Python

Ruby

O interpretador traduz o cdigo linha a linha.


O cdigo fonte no totalmente traduzido antes de ser executado.
No existem fases distintas nem se produz cdigo intermedirio.
Passa o tempo todo a ler e a traduzir cdigo.

Vantagens
Execuo mais rpida
Permite
Compiladores

estruturas

Desvantagens
Vrias etapas de traduo
de Programao final maior,

programao mais completas necessitando mais memria


para a sua execuo

Permite a optimizao do Processo de correco de


cdigo fonte.

erros e

depurao mais

demorado
Depurao do programa Execuo do programa
mais simples

mais lenta

Consome menos memria

Estruturas

Interpretadores

de

dados

demasiado simples
Resultado
programa
desenvolvida

imediato
ou

do Necessrio

fornecer

rotina programa fonte ao utilizador

Você também pode gostar