tradutores de linguagens junho de 2011 ucpel/cpoli linguagens formais e autômatos

31
Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI UCPEL/CPOLI Linguagens Formais e Linguagens Formais e Autômatos Autômatos

Upload: internet

Post on 17-Apr-2015

114 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Tradutores de Linguagens

Junho de 2011

UCPEL/CPOLIUCPEL/CPOLILinguagens Formais e AutômatosLinguagens Formais e Autômatos

Page 2: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

I. Linguagens de ProgramaçãoI. Linguagens de Programação

Uma linguagem de programação é um conjunto de ferramentas, regras Uma linguagem de programação é um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que nos permitem escrever de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador.programas de computador.

A primeira e mais primitiva linguagem de computador é a própria A primeira e mais primitiva linguagem de computador é a própria linguagem máquina (0’s e 1’s).linguagem máquina (0’s e 1’s).

Um programa era difícil, longo e principalmente caro de o construir.Um programa era difícil, longo e principalmente caro de o construir.

Era também difícil de ser entendido por outros programadores.Era também difícil de ser entendido por outros programadores.

Essa complexidade levou è necessidade de desenvolver novas técnicas Essa complexidade levou è necessidade de desenvolver novas técnicas e ferramentas.e ferramentas.

Programa em Linguagem de MáquinaPrograma em Linguagem de Máquina

22Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

Page 3: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• A resolução do problema passou pela criação de uma A resolução do problema passou pela criação de uma linguagem em que os códigos numéricos foram substituídos linguagem em que os códigos numéricos foram substituídos por por mnemónicos.mnemónicos.

• O nome dessa linguagem é O nome dessa linguagem é ASSEMBLY LANGUAGEASSEMBLY LANGUAGE..

• Então será necessário um outro programa que leia o Então será necessário um outro programa que leia o programa escrito nessa linguagem alternativa e o traduza programa escrito nessa linguagem alternativa e o traduza para a linguagem nativa do computadorpara a linguagem nativa do computador!!!!!!

• O processo de tradução da linguagem de montagem para a O processo de tradução da linguagem de montagem para a linguagem de máquina é realizada por um programa chamado linguagem de máquina é realizada por um programa chamado ASSEMBLERASSEMBLER..

Linguagem de MontagemLinguagem de Montagem

33Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

I. Linguagens de ProgramaçãoI. Linguagens de Programação

Page 4: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Linguagem AssemblyLinguagem Assembly

;****************************************************** ;*** INTERFACE ROUTINES *** ;****************************************************** ; Read_Char PROC ;read char from input buffer ; ;Entry: CL = port number ; ;Exit: AL = char (z set if none) ; push cx ;preserve registers push bx ; cmp cl,0 ;only port 0 allowed jz rc_1 ; _Int_Error 03301h ;invalid port number ; rc_1: mov al,Rx_InPtr sub al,Rx_OutPtr ;inptr - outptr = num. chars jz rc_zex ;if zero exit

44Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

I. Linguagens de ProgramaçãoI. Linguagens de Programação

Page 5: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Foram desenvolvidas diversas linguagens de programação:Foram desenvolvidas diversas linguagens de programação:• FORTRAN (1957)FORTRAN (1957)• ALGOL (1958)ALGOL (1958)• COBOL (1959)COBOL (1959)• PASCAL (1963)PASCAL (1963)• BASIC (1965)BASIC (1965)• ADA (1968)ADA (1968)• C (1982) e mais tarde o C++ (1986)C (1982) e mais tarde o C++ (1986)• Java (1995) Etc….Java (1995) Etc….

• Estas novas linguagens foram afastando cada vez mais o Estas novas linguagens foram afastando cada vez mais o programador do nível de máquina.programador do nível de máquina.

Linguagem de ProgramaçãoLinguagem de Programação

55Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

I. Linguagens de ProgramaçãoI. Linguagens de Programação

Page 6: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Os programas em linguagem de alto nível também Os programas em linguagem de alto nível também precisam de ser traduzidos para linguagem de máquina.precisam de ser traduzidos para linguagem de máquina.

TraduçãoTradução

Código FonteCódigo Fonte Código ObjetoCódigo Objeto

TraduçãoTradução

66Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

II. Tradução entre LinguagensII. Tradução entre Linguagens

Page 7: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• O processo de montagem traduz um programa escrito numa O processo de montagem traduz um programa escrito numa LP num programa equivalente em linguagem maquina.LP num programa equivalente em linguagem maquina.

MontagemMontagem

Código ObjetoCódigo Objeto

TraduçãoTradução

Linguagem de Linguagem de MáquinaMáquina

Processo de Processo de MontagemMontagem

77Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

II. Tradução entre LinguagensII. Tradução entre Linguagens

Page 8: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• É realizada por meio de duas classes de programas:É realizada por meio de duas classes de programas:

COMPILADORES eCOMPILADORES e

INTERPRETADORESINTERPRETADORES

Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens 88

II. Tradução entre LinguagensII. Tradução entre Linguagens

Page 9: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Um Um compiladorcompilador tem a finalidade de converter uma linguagem – tem a finalidade de converter uma linguagem – Linguagem Fonte – de fácil escrita e leitura para os programadores, numa Linguagem Fonte – de fácil escrita e leitura para os programadores, numa linguagem – Linguagem alvo ou objecto – que possa ser executada pelas linguagem – Linguagem alvo ou objecto – que possa ser executada pelas máquinas.máquinas.

• O O código executávelcódigo executável gerado pelo gerado pelo compiladorcompilador é é dependente do sistema dependente do sistema operacional e da linguagem de máquina para o qual o código fonte foi operacional e da linguagem de máquina para o qual o código fonte foi traduzidotraduzido..

• A enorme variedade de compiladores existentes é bem vinda, visto que A enorme variedade de compiladores existentes é bem vinda, visto que existem milhares de linguagens fonte, e as linguagens alvo são também existem milhares de linguagens fonte, e as linguagens alvo são também muito variadas. muito variadas.

O que é um compilador?O que é um compilador?

99Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 10: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Os Os compiladorescompiladores são por vezes classificados como são por vezes classificados como uni-passouni-passo, , multi-passomulti-passo, , otimizadorotimizador, ou corretor de erros, dependendo da , ou corretor de erros, dependendo da forma como foram construídos ou da funcionalidade para que são forma como foram construídos ou da funcionalidade para que são pretendidos.pretendidos.

• Começaram a aparecer no início da década de 50.Começaram a aparecer no início da década de 50.

• Muito do trabalho inicial dos compiladores resumia-se a tradução Muito do trabalho inicial dos compiladores resumia-se a tradução de fórmulas aritméticas para código máquina.de fórmulas aritméticas para código máquina.

O que é um compilador?O que é um compilador?

1010Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 11: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• O primeiro compilador de FORTRAN, por exemplo, demorou O primeiro compilador de FORTRAN, por exemplo, demorou 18 meses para implementar.18 meses para implementar.

• Boas linguagens de implementação, ambientes de Boas linguagens de implementação, ambientes de programação, e ferramentas de software têm também vindo programação, e ferramentas de software têm também vindo a ser desenvolvidas.a ser desenvolvidas.

• Com estes avanços, um bom compilador pode ser Com estes avanços, um bom compilador pode ser implementado implementado até por alunos!!!até por alunos!!! num projeto de um num projeto de um semestre de uma disciplina de compiladores.semestre de uma disciplina de compiladores.

O que é um compilador?O que é um compilador?

1111Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 12: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Ilustração do funcionamento de um compilador C/C++:Ilustração do funcionamento de um compilador C/C++:

O que é um compilador?O que é um compilador?

1212Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 13: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Pode-se dividir o processo de compilação em duas fases:Pode-se dividir o processo de compilação em duas fases:

• AnáliseAnálise : parte o programa fonte em peças constituintes e : parte o programa fonte em peças constituintes e cria uma representação intermediária do programa fonte.cria uma representação intermediária do programa fonte.

• SínteseSíntese : Constrói o desejado programa alvo (código de : Constrói o desejado programa alvo (código de máquina) a partir da representação intermediária.máquina) a partir da representação intermediária.

• A parte da síntese é a que requer técnicas mais especializadasA parte da síntese é a que requer técnicas mais especializadas..

Modelo Análise- síntese da compilaçãoModelo Análise- síntese da compilação

1313Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 14: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Modelo Análise-Síntese da compilaçãoModelo Análise-Síntese da compilação

1414Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 15: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Muitos outros programas Muitos outros programas podem ser necessários para podem ser necessários para criar um programa alvo criar um programa alvo executável.executável.

Contexto de um compiladorContexto de um compilador

Biblioteca, Arquivos dos Biblioteca, Arquivos dos Objetos RelocalizadosObjetos Relocalizados

1515Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 16: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Pré-processadoresPré-processadores: produzem o input para os : produzem o input para os compiladores;compiladores;

• MontadoresMontadores: Alguns compiladores produzem código : Alguns compiladores produzem código assembly que é passado para um montador para assembly que é passado para um montador para posterior processamento. posterior processamento.

• Alguns Alguns compiladorescompiladores produzem o trabalho dos produzem o trabalho dos montadoresmontadores;;

Primos de um compiladorPrimos de um compilador

1616Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 17: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Na compilação a fase de Na compilação a fase de análiseanálise consiste em 3 consiste em 3 partes:partes:

Análise Léxica ou Linear,Análise Léxica ou Linear,Análise Sintática ou Hierárquica, eAnálise Sintática ou Hierárquica, eAnálise Semântica Análise Semântica

Análise do programa fonteAnálise do programa fonte

1717Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 18: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens 1818

III. CompiladoresIII. Compiladores

• Análise Léxica ou Linear:Análise Léxica ou Linear:

• Em que a cadeia de caracteres que forma a estrutura do Em que a cadeia de caracteres que forma a estrutura do programa fonte é lido da esquerda para a direita e programa fonte é lido da esquerda para a direita e agrupado em agrupado em tokens tokens que são sequências de caracteres que são sequências de caracteres tendo o sentido coletivo. tendo o sentido coletivo.

• A sua função básica é o reconhecimento e a classificação A sua função básica é o reconhecimento e a classificação das estruturas elementares ou classes sintáticas das das estruturas elementares ou classes sintáticas das linguagens.linguagens.

Análise do programa fonteAnálise do programa fonte

Page 19: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Análise sintática ou hierárquicaAnálise sintática ou hierárquica: :

• Na qual caracteres ou tokens são agrupados Na qual caracteres ou tokens são agrupados hierarquicamente em coleções aninhadas com sentido hierarquicamente em coleções aninhadas com sentido coletivo. coletivo.

• Verifica se a estrutura geral do texto ou programa fonte Verifica se a estrutura geral do texto ou programa fonte está correta.está correta.

Análise do programa fonteAnálise do programa fonte

1919Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 20: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Análise SemânticaAnálise Semântica::

• Na qual são executadas certas paradas para assegurar que Na qual são executadas certas paradas para assegurar que os componentes de um programa são juntamente os componentes de um programa são juntamente ajustados em sentido absoluto. ajustados em sentido absoluto.

• Verifica se o programa fonte tem erros semânticos e reúne Verifica se o programa fonte tem erros semânticos e reúne a informação dos tipos para a fase de gerador de código a informação dos tipos para a fase de gerador de código subsequente. subsequente.

• Uma componente importante da análise semântica é a Uma componente importante da análise semântica é a verificação do tipo.verificação do tipo.

Análise do programa fonteAnálise do programa fonte

2020Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 21: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

Fases de um compiladorFases de um compilador

2121Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 22: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Gerenciador da tabela de símbolos: Gerenciador da tabela de símbolos:

• Uma função essencial de um Uma função essencial de um compiladorcompilador é registar os é registar os identificadores usados no programa fonte e colecionar identificadores usados no programa fonte e colecionar informação sobre vários atributos de cada identificador.informação sobre vários atributos de cada identificador.

• Uma tabela de símbolos é uma Uma tabela de símbolos é uma estrutura de dados estrutura de dados contendo o registro de cada identificador, com campos contendo o registro de cada identificador, com campos para os atributos do identificador. para os atributos do identificador.

Fases de um compiladorFases de um compilador

2222Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 23: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Tabela de códigos: Tabela de códigos:

• É uma estrutura criada pela análise semântica de um É uma estrutura criada pela análise semântica de um compilador, que mantém registadas as linhas código compilador, que mantém registadas as linhas código intermediário geradas por algum tempo. intermediário geradas por algum tempo.

• Em geral as linhas de código geradas permanecem nesta Em geral as linhas de código geradas permanecem nesta tabela enquanto não estão totalmente preenchidas.tabela enquanto não estão totalmente preenchidas.

Fases de um compiladorFases de um compilador

2323Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 24: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Deteção de erros e aviso do erro:Deteção de erros e aviso do erro:

• Cada fase pode encontrar erros. Porém, depois de Cada fase pode encontrar erros. Porém, depois de descobrir um erro, a fase tem de ocupa-se de alguma descobrir um erro, a fase tem de ocupa-se de alguma maneira com aquele erro, para que a compilação possa maneira com aquele erro, para que a compilação possa prosseguir. prosseguir.

• As fases de análise sintática e semântica normalmente As fases de análise sintática e semântica normalmente tratam de uma grande parte dos erros detetáveis pelo tratam de uma grande parte dos erros detetáveis pelo compilador.compilador.

Fases de um compiladorFases de um compilador

2424Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 25: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Geração de código intermediário:Geração de código intermediário:

• Depois da análise sintática e semântica, alguns Depois da análise sintática e semântica, alguns compiladores geram uma explícita representação compiladores geram uma explícita representação intermediária do programa fonte.intermediária do programa fonte.

• Pode-se pensar nesta representação intermediária Pode-se pensar nesta representação intermediária como um programa para uma máquina abstrata;como um programa para uma máquina abstrata;

Fases de um compiladorFases de um compilador

2525Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 26: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Otimização do código:Otimização do código:• Esta fase tenta melhorar o código intermediário, de forma a que Esta fase tenta melhorar o código intermediário, de forma a que

resulte num código de máquina mais rápido a executar.resulte num código de máquina mais rápido a executar.

• Geração do código:Geração do código:• A fase final do compilador é a geração de código alvo, consistindo A fase final do compilador é a geração de código alvo, consistindo

normalmente no estabelecimento do código de máquina.normalmente no estabelecimento do código de máquina.• Neste ponto, após o programa fonte ter sido analisado e aprovado, Neste ponto, após o programa fonte ter sido analisado e aprovado,

segundo a sua sintaxe, e livre de erros semânticos, o compilador segundo a sua sintaxe, e livre de erros semânticos, o compilador tem condições de escrever um programa equivalente na tem condições de escrever um programa equivalente na linguagem alvo.linguagem alvo.

Fases de um compiladorFases de um compilador

2626Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 27: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Dividir o Dividir o processo de compilação processo de compilação em diversas fases "lógicas" em diversas fases "lógicas" permite um melhor entendimento do processo como um todo e permite um melhor entendimento do processo como um todo e leva a uma implementação mais estruturada.leva a uma implementação mais estruturada.

• A eficiência e os recursos disponíveis na máquina hospedeira do A eficiência e os recursos disponíveis na máquina hospedeira do

compilador influenciam de maneira decisiva um item compilador influenciam de maneira decisiva um item importantíssimo na implementação de um compilador: o número importantíssimo na implementação de um compilador: o número de passos de compilação, para poder optimizar o de passos de compilação, para poder optimizar o tempo de tempo de compilaçãocompilação..

Fatores condicionantes da organização física dos Fatores condicionantes da organização física dos compiladorescompiladores

2727Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 28: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Os compiladores têm como base os autômatos.Os compiladores têm como base os autômatos.

• Dentro da área de Dentro da área de Teoria das Linguagens FormaisTeoria das Linguagens Formais, encontram-se os , encontram-se os conceitos de gramática e autómatos, que dão base para a maioria das conceitos de gramática e autómatos, que dão base para a maioria das técnicas utilizadas hoje para se implementar compiladores. Daqui vêm técnicas utilizadas hoje para se implementar compiladores. Daqui vêm os principais conceitos utilizados pelos compiladores modernos. os principais conceitos utilizados pelos compiladores modernos.

• Um léxico deve reconhecer Um léxico deve reconhecer tokenstokens, não produzi-los. , não produzi-los.

• A descrição de A descrição de tokens tokens de maneira a que estes possam ser de maneira a que estes possam ser reconhecidos é feita através de aceitadores finitos (reconhecidos é feita através de aceitadores finitos (autômato finitoautômato finito).).

Os Compiladores e os AutômatosOs Compiladores e os Autômatos

2828Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

III. CompiladoresIII. Compiladores

Page 29: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• O funcionamento dos O funcionamento dos interpretadoresinterpretadores é muito é muito parecido ao dos parecido ao dos compiladorescompiladores, mas..., mas...

• O interpretador traduz o código linha a linhaO interpretador traduz o código linha a linha..

• O código fonte não é totalmente traduzido antes de O código fonte não é totalmente traduzido antes de ser executado.ser executado.

• Não existem fases distintas nem se produz código Não existem fases distintas nem se produz código intermediário.intermediário.

• Passa o tempo todo lendo e traduzindo código.Passa o tempo todo lendo e traduzindo código.

Como funcionam os interpretadores?Como funcionam os interpretadores?

2929Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

IV. InterpretadoresIV. Interpretadores

Page 30: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

• Navegadores;Navegadores;

• Excel, Word, Basic, Access, ... ;Excel, Word, Basic, Access, ... ;

• SmallTalk;SmallTalk;

• AutoLisp;AutoLisp;

• Prolog (algumas versões);Prolog (algumas versões);

• Matlab;Matlab;

• Lisp.Lisp.

Exemplos de InterpretadoresExemplos de Interpretadores

3030Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

IV. InterpretadoresIV. Interpretadores

Page 31: Tradutores de Linguagens Junho de 2011 UCPEL/CPOLI Linguagens Formais e Autômatos

VantagensVantagens DesvantagensDesvantagens

CompiladoresCompiladores

Execução mais rápidaExecução mais rápida Várias etapas de traduçãoVárias etapas de tradução

Permite estruturas de Permite estruturas de programação mais programação mais completascompletas

Programação final é maior, Programação final é maior, necessitando mais memória necessitando mais memória para a sua execuçãopara a sua execução

Permite a optimização do Permite a optimização do código fontecódigo fonte

Processo de correcção de Processo de correcção de erros e depuração é mais erros e depuração é mais demoradodemorado

InterpretadoreInterpretadoress

Depuração do programa é Depuração do programa é mais simples mais simples

Execução do programa é mais Execução do programa é mais lentalenta

Consome menos memóriaConsome menos memória Estruturas de dados Estruturas de dados demasiado simplesdemasiado simples

Resultado imediato do Resultado imediato do programa ou rotina programa ou rotina desenvolvida desenvolvida

Necessário fornecer o Necessário fornecer o programa fonte ao utilizadorprograma fonte ao utilizador

3131Linguagens Formais e Autômatos - Tradutores de LinguagensLinguagens Formais e Autômatos - Tradutores de Linguagens

V. ComparaçãoV. Comparação