domingo, 1 de junho de 2008

Diferenças de nomenclatura

Um tradutor efetua a conversão entre duas linguagens, sendo o primeiro texto chamado de 'código fonte' e o transformado em 'código objeto' . O tradutor pode converter por exemplo a linguagem do algoritmo 'pascal' em linguagem binária, java, fortran entre outros. Veja a figura abaixo:

De maneira geral, os tradutores efetuam portanto a conversão de textos redigidos em uma linguagem para formas equivalentes redigidas em outra linguagem. Se a primeira linguagem for uma linguagem de alto nível, o tradutor receberá o nome de compilador. Veja a figura:

Do ponto de vista da linguagem-objeto, esta também pode ser ou não uma linguagem de alto nível. É possível, por exemplo, que o texto-fonte esteja redigido em 'FORTRAN', e que um tradutor aceite tal texto e o converta para alguma linguagem de baixo nível (linguagem de montagem, ou linguagem de máquina) ou então para alguma outra linguagem de alto nível, tal como 'PASCAL' ou 'BASIC'. Um tradutor que efetue conversões entre duas linguagens de alto nível é denominado 'filtro', se a linguagem objeto for muito semelhante à linguagem fonte. Veja a figura a seguir:


Muitas vezes, programas que efetuam traduções entre dois dialetos de mesma linguagem, ou que permitem converter para uma forma padronizada um texto que inclua extensões de uma linguagem disponível, são denominados 'pré-processadores'. Basicamente, a função dos pr-e-processadores, neste caso, consiste na eliminação de construções de nível mais alto que o da linguagem-base, e na correspondente inserção de textos equivalentes, compostos exclusivamente de construções da linguagem-base. Veja a figura abaixo:



Outro exemplo de aplicação de pré-processadores é no processamento da definição e utilização de macros em linguagem de alto nível. Em muitos casos, os compiladores destas linguagens não oferecem ao usuário tais recursos, sendo as macros manipuladas externamente, por um pré-processador encarregado de manipular e eliminar tais construções do texto-fonte, para que possa ser traduzido pelo compilador.

Nenhum comentário: