Analisador Léxico Prof. Alexandre Monteiro

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Compiladores
Advertisements

Compiladores Claudio Benossi
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI lex: linguagem de especificação para analisadores léxicos Implementação de simuladores de autómatos finitos Bibliografia aconselhada:
I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.
III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/ Jorge Morais.
I - Noções dum compilador
Compiladores I Cristiano Damiani Vasconcellos
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Software Básico Silvio Fernandes
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Teoria dos Compiladores
YACC.
Lex e Yacc.
Construção de Compiladores
Linguagens Formais e Tradutores
O Portal do Estudante de Computação
Análise de Sistemas Contábeis
JAVA: Conceitos Iniciais
Sistemas de Informação Gerenciais
Aula prática - análise contextual
Ferramentas para a Construção de Compiladores: Lex & Yacc
Prof. Guilherme Alexandre Monteiro Reinaldo Recife
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Análise Léxica Primeira fase de um compilador
Mayerber Carvalho Neto
Professor José Rui Aula 10
Prof. Alexandre Monteiro Recife
Prof. Alexandre Monteiro Recife
Prof. Alexandre Monteiro
1 JavaCC Prof. Alexandre Monteiro Baseado em material cedido pelo Prof. Euclides Arcoverde Recife.
Geração de Código Intermediário
Esquemas de Tradução Prof. Alexandre Monteiro
Análise Léxica.
Sistemas Operacionais
Analise sintática aula-07-analise-sintática.pdf.
Prof. Guilherme Alexandre Monteiro Reinaldo Recife
Paradigmas da Inteligência Artificial
KNN – K Nearest Neighbor (K Vizinhos mais Próximos)
Análise Sintática LR Prof. Alexandre Monteiro
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Análise Léxica Prof. Alexandre Monteiro
1 JAVA I/O (Entrada e Saída em JAVA) Prof. Alexandre Monteiro Recife.
Prof. Guilherme Alexandre Monteiro Reinaldo Recife
Analise Semântica aula-10-analise-semântica.pdf.
1° Exercício Escolar – AP1 Aula de Revisão
Projeto de Linguagens de Programação
Design Pattern (Padrões de Projeto)
Compiladores Análise Léxica
Inteligência Artificial
e-Commerce (Comércio Eletrônico)
Análise Sintática Prof. Alexandre Monteiro
Análise Léxica Prof. Alexandre Monteiro
Prof. Fábio Carneiro Mokarzel 2014
1 Características do Projeto Web Prof. Alexandre Monteiro Recife.
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Hibernate Mapeamento Objeto-Relacional Aula Prática I
Back-End Compilação aula-11-back-end.pdf.
Revisão Compiladores – AP2
Análise Sintática de Descida Recursiva
Revisão Compiladores – AP1
1 Trabalho Extra SIG Prof. Guilherme Alexandre Monteiro Reinaldo Recife.
COMPILADORES 04 Prof. Marcos.
Geradores de analisadores léxicos
Compiladores – IF688 Professor: André Santos
SISTEMAS DE INFORMAÇÃO
Faculdade Pernambuca - FAPE
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
1 Lista de Exercício (Algoritmos de Substituição de Páginas) Prof. Alexandre Monteiro Recife.
Transcrição da apresentação:

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 Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878

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)

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

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

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]+

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

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

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”

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

Linguagem SQL Faremos a implementação de uma instrução SQL select * from tabela where id = 20 order by id;

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

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:

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

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.

Ações dos botões

executar()

executar() ...

Trabalho Realizar as instruções SQL

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)