Sie sind auf Seite 1von 6

1

FACULDADE DE TECNOLOGIA DE AMERICANA Anlise e Desenvolvimento de Sistemas

COMPILADOR X INTERPRETADOR

Priscila Fabiana dos Santos 2 Semestre ADS - Disciplina: Linguagem de Programao Prof. Flvia dos Santos Zenaro

AMERICANA SP Abril / 2012

SUMRIO 1. COMPILADOR.......................................................................................................3 2. INTERPRETADORES............................................................................................3 3. ANLISE LXICA..................................................................................................3 4. ANLISES SINTTICA E SEMNTICA.................................................................4 5. GERAO DE CDIGO INTEMEDIRIO.............................................................4 6. OTIMIZAO DE CDIGO...................................................................................5 7. GERAO DE CDIGO OBJETO........................................................................5 REFERNCIAS..........................................................................................................6

COMPILADOR Um compilador um programa que l um programa escrito numa linguagem fonte(de alto nvel) e o traduz num programa equivalente numa outra linguagem - a linguagem alvo (cdigo de mquina). Um compilador no produz o cdigo de mquina, mas sim em um programa em linguagem simblica (assembly) semanticamente equivalente ao programa em linguagem de alto nvel. O programa em linguagem simblica ento traduzido para o programa em linguagem de mquina atravs de montadores. Um compilador deve executar dois tipos de atividade. A primeira atividade a anlise do cdigo fonte, onde a estrutura e significado do programa de alto nvel so reconhecidos. A segunda atividade a sntese do programa equivalente em linguagem simblica. INTERPRETADORES So processadores que aceitam como entrada o cdigo intermedirio de um programa anteriormente traduzido e produzem o "efeito de execuo" do algoritmo original sem, porm, mape-lo para linguagem de mquina. Os interpretadores processam uma forma intermediria do programa fonte e dados ao mesmo tempo. Isto , a interpretao de forma interna do fonte ocorre em tempo de execuo, no sendo gerado um programa objeto. Alguns interpretadores no utilizam um cdigo intermedirio, trabalhando diretamente sobre o programa fonte, analisando um comando fonte cada vez que executado. Os interpretadores so, geralmente, menores que os compiladores e facilitam a implementao de linguagens de programao complexas. A principal desvantagem dos interpretadores que o tempo de execuo de programa interpretado maior que o tempo necessrio para executar um programa objeto (compilado). Porque a execuo do cdigo intermedirio tem embutido o custo do processamento de uma traduo virtual para cdigo de mquina cada vez que uma instruo em cdigo intermedirio deve ser operada. Os interpretadores so mais amigveis do que os compiladores, pois esto bem mais prximos do cdigo fonte que programas j completamente traduzidos. As mensagens de erro e as facilidades de teste e depurao em relao interpretao so mais claras e objetivas, e principalmente, certeiras ao referiremse ao cdigo fonte. ANLISE LXICA O objetivo identificar sequncias de caracteres que constituem unidades lexias (tokens). O analisador lxico l, caractere a caractere, o texto fonte, verificando se os caracteres lidos pertencem ao alfabeto da linguagem, identificando tokens, e desprezando comentrios desnecessrios. Os tokens constituem classes de smbolos tais como palavras reservadas, delimitadores, identificadores etc, e podem ser representados internamente, atravs do prprio smbolo (como no caso dos delimitadores e das palavras reservadas) ou por um

par ordenado, no qual o primeiro elemento indica a classe do smbolo, e o segundo, um ndice para uma rea onde o prprio smbolo foi armazenado. A sada do analisador lxico uma cadeia de tokens que passada para a prxima fase, a Anlise Sinttica. Em geral, o Analisador Lxico implementado como uma sub-rotina que funciona sob o comando do Analisador Sinttico. ANLISES SINTTICA E SEMNTICA A anlise sinttica tem por funo verificar se a estrutura gramatical do programa est correta, isto , se a estrutura formada usa as regras gramaticais da linguagem.A anlise semntica tem por funo verificar se as estruturas do programa iro fazer sentido durante a execuo. O Analisador Sinttico identifica sequncias de smbolos que constituem estruturas sintticas (por exemplo, expresses, comandos), atravs de uma varredura ou parsing da representao interna (cadeia de tokens) do programa fonte. O Analisador Sinttico produz uma estrutura em rvore, chamada rvore de derivao, que exibe a estrutura sinttica do texto fonte, resultante da aplicao das regras gramaticais da linguagem. Em geral, a rvore de derivao no produzida explicitamente, mas sua construo est implcita nas chamadas das rotinas recursivas que executam a anlise sinttica. Em muitos compiladores, a representao interna do programa resultante da anlise sinttica no a rvore de derivao completa do texto fonte, mas uma rvore compactada (rvores de sintaxe) que visa a eliminar redundncias e elementos suprfluos. Essa estrutura objetiva facilitar a gerao do cdigo que a fase seguinte anlise. Outra funo dos reconhecedores sintticos a deteco de erros de sintaxe identificando clara e objetivamente a posio e o tipo de erro ocorrido. Mesmo que erros tenham sido encontrados, o Analisador Sinttico deve tentar recuper-los prosseguindo a anlise do texto restante. Muitas vezes, o Analisador Sinttico opera conjuntamente com o Analisador Semntico, cuja principal atividade determinar se as estruturas sintticas analisadas fazem sentido, ou seja, verificar se um identificador declarado como varivel usada como tal; se existe compatibilidade entre operandos e operadores em expresses etc. GERAO DE CDIGO INTEMEDIRIO Esta fase utiliza a representao interna produzida pelo Analisador Sinttico e gera como sada uma sequncia de cdigo. Esse cdigo pode, eventualmente, ser o cdigo objeto final, mas, na maioria das vezes, constitui num cdigo intermedirio, pois a traduo de cdigo fonte para objeto em mais de um passo apresenta algumas vantagens: - possibilita a otimizao de cdigo intermedirio, de modo a obter o cdigo objeto final mais eficiente; - resolve, gradualmente, as dificuldades da passagem de cdigo fonte para cdigo objeto, j que o cdigo fonte pode ser visto como um texto condensado que explode em inmeras instrues elementares de baixo nvel.

A gerao de cdigo intermedirio pode estar estruturalmente distribuda nas fases anteriores (anlise sinttica e semntica) ou mesmo no existir (traduo direta para cdigo objeto), no caso de tradutores simples. A grande diferena entre o cdigo intermedirio e o cdigo objeto final que o intermedirio no especfica detalhes tais como quais registradores sero usados, quais endereos de memria sero referenciados etc. OTIMIZAO DE CDIGO Tem por objetivo otimizar o cdigo intermedirio em termos de velocidade de execuo e espao de memria. Como o cdigo gerado atravs da traduo orientada a sintaxe contempla expresses independentes, diversas situaes contendo sequncias de cdigo ineficiente podem ocorrer. O objeto da etapa de otimizao de cdigo aplicar um conjunto de heursticas para detectar tais sequncias e substitu-las por outras que removam as situaes de ineficincia. As tcnicas de otimizao que so usadas em compiladores devem, alm de manter o significado do programa original, ser capazes de capturar a maior parte das possibilidades de melhoria do cdigo dentro de limites razoveis de esforo gasto para tal fim. As tcnicas de otimizao podem ser classificadas como independentes de mquina, quando podem ser aplicadas antes da gerao do cdigo na linguagem assembly, ou dependentes de mquina, quando aplicadas na gerao do cdigo assembly. A otimizao independente de mquina tem como requisito o levantamento dos blocos de comandos que compem o programa. Essa etapa da otimizao conhecida como a anlise de fluxo, que por sua vez contempla a anlise de fluxo de controle e a anlise de fluxo de dados. Estratgias que podem ser aplicadas analisando um nico bloco de comandos so denominadas estratgias de otimizao local, enquanto aquelas que envolvem a anlise simultnea de dois ou mais blocos so denominadas estratgias de otimizao global. GERAO DE CDIGO OBJETO Esta fase tem como objetivos: produo de cdigo objeto, reserva de memria para constantes e variveis, seleo de registradores etc. a fase mais difcil, pois requer uma seleo cuidadosa das instrues e dos registradores da mquina alvo a fim de produzir cdigo objeto eficiente. Existem tradutores que possuem mais uma fase para realizar a otimizao do cdigo objeto, isto , otimizao do cdigo dependente de mquina.

REFERNCIAS PRICE, Ana Maria de Alencar. TOSCANI, Simo Sirineo. Implementao de Linguagens de Programao: Compiladores. 2 ed. Porto Alegre: Sagra Luzzatto, 2001 AHO, Alfred V. SETHI, Ravi. ULLMAN, Jeffrey D. Compiladores: princpios, tcnicas e ferramentas. Rio de Janeiro: LTC, 1995

Das könnte Ihnen auch gefallen