1 / 21

Analisador Léxico

Analisador Léxico. Prof. Alexandre Monteiro Baseado em material cedido pelo Prof. Euclides Arcoverde Recife. Contatos. Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/ gtalk : alexandrecordel@gmail.com greinaldo@fbv.edu.br

kyrene
Télécharger la présentation

Analisador Léxico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Analisador Léxico Prof. AlexandreMonteiro Baseadoem material cedidopelo Prof. EuclidesArcoverde Recife

  2. Contatos • Prof. Guilherme Alexandre Monteiro Reinaldo • Apelido: Alexandre Cordel • E-mail/gtalk: alexandrecordel@gmail.com greinaldo@fbv.edu.br • Site: http://www.alexandrecordel.com.br/fbv • Celular: (81) 9801-1878

  3. Análise Léxica Análise Sintática Analise Semântica Geração de Código Intermediário Geração de Código Final Etapas da Compilação Front-End (Análise) Back-End (Síntese)

  4. Análise Léxica • Objetivo • Ler os caracteres do código fonte agrupando-os de maneira significativa (em lexemas) e classificando esses agrupamentos (em tokens) • Em outras palavras • Entrada: sequência de caracteres • Saída: sequência de tokens

  5. Saída • Lexema: sequência de caracteres com significado interligado • Token: classificação dada ao lexema • Geralmente retornado junto com o próprio lexema ou outro atributo, como um ponteiro ou um valor numérico associado

  6. Relembrando... • Tokens especificados como expressões regulares: ABRE_PAR→ ( FECHA_PAR→) ATRIB →= ADD →+ MULT →* DEF →def ID→[_a-z][_a-z0-9]* NUM_INT →[0-9][0-9]* PT_VG →; WHITESPACE →[ \t\n\r]+

  7. Exemplos de Geradores • Para C • Lex e Flex • Para Java • JLex e JFlex • Para C# • C# Lex, C# Flex

  8. JFlex • É um gerador de analisadores léxicos escrito em Java, baseado no flex para C • Também é uma melhoria do Jlex • Pode ser encontrado em http://jflex.de/ • Constrói o analisador léxico a partir de um arquivo de especificação dado como entrada • Processo visto nos slides da aula anterior • Recebe arquivo de entrada normalmente com extensão .lex ou .flex • A partir desse arquivo vai ser gerado um analisador léxico capaz de reconhecer os caracteres de determinada linguagem • Gera uma classe que faz a análise léxica

  9. Criar Novo Projeto • No IDE criem um novo projeto chamado “Analisador” • Criem um pacote chamado “analisador” • Em seguida, criem uma classe chamada de “Analisador.java” • Por fim, por enquanto, criem um arquivo vazio de nome “Lexer.flex”

  10. Especificando olexer.flex • A especificação é dividida em 3 partes que são separadas por “%%” • Em seu IDE crie um arquivo (Lexer.flex) Código do usuário %% Opções do JFlex + Declarações de Macros %% Regras léxicas

  11. Linguagem SQL • Faremos a implementação de uma instrução SQL select * from tabela where id = 20 orderby id;

  12. Tokens • Agora criem a classe enumTokens, como todos os tokens especificados no lexer.flex

  13. Analisador • Voltemos a classe “Analisador.java” • Vamos criar a classe “Lexer.java” a partir da classe “Analisador.java” • Criem os métodos gerarLexer() e o método main(), abaixo:

  14. Lexer.java • Verifiquem a criação da classe “Lexer.java” • Caso haja algum erro declarem a variável “publicStringlexeme;”

  15. GUI • Vamos desenvolver uma GUI de avaliação do analisador léxico. • Criem um Jframe de nome TelaAnalisador, com os seguintes itens: Label, TextField, Buttons e TextArea.

  16. Ações dos botões

  17. executar()

  18. executar() • ...

  19. Trabalho • Realizar as instruções SQL

  20. Bibliografia • AHO, A., LAM, M. S., SETHI, R., ULLMAN, J. D., Compiladores: princípios, técnicas e ferramentas. Ed. Addison Wesley. 2a Edição, 2008 (Capítulo 2)

More Related