A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Analisador Léxico Prof. Alexandre Monteiro

Apresentações semelhantes


Apresentação em tema: "Analisador Léxico Prof. Alexandre Monteiro"— Transcrição da apresentação:

1 Analisador Léxico Prof. Alexandre Monteiro
Baseado em material cedido pelo Prof. Euclides Arcoverde Recife

2 Contatos Prof. Guilherme Alexandre Monteiro Reinaldo
Apelido: Alexandre Cordel /gtalk: Site: Celular: (81)

3 Etapas da Compilação Front-End (Análise) Back-End (Síntese)
Análise Léxica Análise Sintática Analise Semântica Geração de Código Intermediário Final 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 Lex e Flex JLex e JFlex C# Lex, C# Flex Para C
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 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 o lexer.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 order by id;

12

13 Tokens Agora criem a classe enum Tokens, como todos os tokens especificados no lexer.flex

14 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:

15 Lexer.java Verifiquem a criação da classe “Lexer.java”
Caso haja algum erro declarem a variável “public String lexeme;”

16 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.

17 Ações dos botões

18 executar()

19 executar() ...

20 Trabalho Realizar as instruções SQL

21 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)


Carregar ppt "Analisador Léxico Prof. Alexandre Monteiro"

Apresentações semelhantes


Anúncios Google