| (18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 7: | Linha 7: | ||
== Princípio de funcionamento == | == 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 == | == Análise Léxica == | ||
* '''Definição''' | * '''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'''. | **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 == | == 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 | |||
https://upload.wikimedia.org/wikipedia/commons/d/db/Parsing-example.png | |||
== Bytecode == | == 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 == | == Exemplos de interpretadores == | ||
*Browsers | |||
*Excel, Basic, Access... | |||
*AutoLisp | |||
*Prolog | |||
*Matlab | |||
== Referências Bibliográficas == | == 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)'' | http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s04.html ''(25/05/2017 - 16:20)''<br/> | ||
https://pt.stackoverflow.com/questions/113578/o-que-%C3%A9-analise-l%C3%A9xica ''(04/06/2017 - 17:57)''<br/> | |||
http://www.comp.ita.br/~mokarzel/arquivos/CES41%20Cap%201-b.ppt ''(04/06/2017 - 18:20)''<br/> | |||
https://pt.wikipedia.org/wiki/Bytecode ''(04/06/2017 - 18:33)''<br/> | |||
http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm ''(04/06/2017 - 18:46)'' | |||
Edição atual tal como às 21h48min de 4 de junho de 2017
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)