Conceito
- O software interpretador é um programa de computador que executa instruções escritas em uma linguagem de programação. Por exemplo, as linguagens Basic, Prolog, Python e Java, são frequentemente interpretadas. Um interpretador geralmente usa uma das seguintes estratégias para a execução do programa:
- Executar o código fonte diretamente ou
- Traduzir o código fonte em alguma representação intermediária e depois executar este código.
- Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma linguagem simplificada, chamada de código intermediário, que pode ser diretamente “executado” por um programa chamado interpretador. Podemos imaginar o código intermediário como uma linguagem de máquina de um "computador abstrato" projetado para executar o código fonte.
- Interpretadores são, em geral, menores que compiladores e facilitam a implementação de construções complexas em linguagens de programação. Entretanto, o tempo de execução de um programa interpretado é geralmente maior que o tempo de execução deste mesmo programa compilado, pois o interpretador deve analisar cada declaração no programa a cada vez que é executado e depois executar a ação desejada, enquanto que o código compilado apenas executa a ação dentro de um contexto fixo, anteriormente determinado pela compilação. Este tempo no processo de análise é conhecido como overhead interpretativa.
Princípio de funcionamento
- O código é traduzido linha a linha, ao contrário dos Compiladores, que traduz totalmente o código, gerando um executável.
- O interpretador passa o tempo todo lendo e executando código.
Análise Léxica
- Definição
- Análise léxica é o processo realizado sobre um texto, digamos um programa de computador ou então uma linguagem de marcação como HTML, que divide este em lexemes e os converte para uma sequência de tokens, os quais são usados para alimentar um parser. Um programa que realiza análise léxica é geralmente chamado de lexer, scanner ou tokenizer.
- Tokens/Lexemes
- Lexemes são unidades sintáticas relevantes do contexto do lexer, por exemplo para um lexer voltado a uma certa linguagem de programação alguns lexemes poderiam ser: 1, "olá", for, ==, variableName, function.
Um token é uma estrutura que categoriza um lexeme, ele contêm um nome abstrato que representa o grupo do lexeme e um possível valor deste caso o grupo não seja único.
Análise Sintática
- Durante a análise sintática, o programa-fonte é armazenado numa estrutura denominada árvore do programa
- Depois, essa estrutura é percorrida, para que os comandos do programa sejam executados
- Exemplo: operações matemáticas
1 + 2 * 3
Bytecode
- Em ciência da computação, bytecode é o resultado de um processo semelhante ao dos compiladores de código-fonte que não é imediatamente executável. Em oposição, o bytecode irá ser interpretado numa máquina virtual, que fará a execução. Assim, o bytecode é um estágio intermediário entre o código-fonte (escrito numa linguagem de programação específica) e a aplicação final, sendo a sua vantagem principal a dualidade entre a portabilidade — o bytecode irá produzir o mesmo resultado em qualquer arquitetura — e a ausência da necessidade do pré-processamento típico dos compiladores — o bytecode é encarado como um produto final, cuja validação da sintaxe e tipos de dados (entre outras funções dos compiladores) não será necessária.
Exemplos de interpretadores
- Browsers
- Excel, Basic, Access...
- AutoLisp
- Prolog
- Matlab
Referências Bibliográficas
http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s04.html (25/05/2017 - 16:20)
https://pt.stackoverflow.com/questions/113578/o-que-%C3%A9-analise-l%C3%A9xica (04/06/2017 - 17:57)
http://www.comp.ita.br/~mokarzel/arquivos/CES41%20Cap%201-b.ppt (04/06/2017 - 18:20)
https://pt.wikipedia.org/wiki/Bytecode (04/06/2017 - 18:33)
http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm (04/06/2017 - 18:46)