Linguagens e Programação FLEX. Paulo Proença

Documentos relacionados
Introdução ao FLEX e expressões regulares

Analisador Léxico parte II

Identificação do discente: Matrícula: Nome completo: Douglas Godeguez Nunes. Curso: Ciência da Computação

Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos.

Introdução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios;

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores - Análise Léxica

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Introdução à Programação

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13

Compiladores. Conceitos Básicos

Introdução à Programação em C (II)

Prof. Adriano Maranhão COMPILADORES

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Análise léxica. Parte 01. Geovane Griesang

aceita, l L R L (l) = erro, l L

Análise Sintática Introdução

O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page:

Utiliza Expressões Regulares (ER) Estendidas para definir a especificação da análise léxica desejada

Programação. Folha Prática 1. Lab. 1. Departamento de Informática Universidade da Beira Interior Portugal Copyright Ó 2000 All rights reserved.

Compiladores. Fabio Mascarenhas

UMA PROPOSTA DE FERRAMENTA PARA SIMPLIFICAR A DEPURAÇÃO DE CÓDIGOS EM C, POR ALUNOS INICIANTES

Métodos de Programação I (2005/2006) 1. Ficheiro (file)

Construção de Compiladores Aula 2 - Analisador Léxico

Compiladores - Autômatos

DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR

Conceitos de Linguagens de Programação

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07. Tópicos avançados

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 12. Instituto de C

IV.2 Aspectos Léxicos Convencionais

Tokens, Padroes e Lexemas

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Compiladores. Introdução à Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Linguagens de Domínio Específico

Implementação do Analisador Léxico

Tratamento dos Erros de Sintaxe. Adriano Maranhão

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

Autômatos e Linguagens

Compiladores - Gramáticas

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

LEX & YACC / FLEX & BISON. Uso prático... LEX: Tokenizer LEX & YACC / FLEX & BISON. Uso do Flex:

Linguagem C: Introdução

52ª DELIBERAÇÃO DA SECÇÃO PERMANENTE DE COORDENAÇÃO ESTATÍSTICA

Linguagens Formais e Autómatos

Compiladores Aula 2. Celso Olivete Júnior.

Análise Léxica II. Eduardo Ferreira dos Santos. Setembro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

Linguagem C Ficheiros Compilação Separada

A linguagem C (visão histórica)

Conceitos de Linguagens de Programação

Como construir um compilador utilizando ferramentas Java

Programação 2010/2011 MEEC

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

extração e classificação dos símbolos léxicos que compõem o programa fonte,

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Descrição da Linguagem Pascal Jr.

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Tratamento de Caracteres

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Linguagem de Programação C

FACULDADE LEÃO SAMPAIO

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores Prof. a Mariella Berger. Trabalho 2 Analisador Léxico

Como construir um compilador utilizando ferramentas Java

Introdução a Programação na Linguagem C.

Linguagens de Programação Aula 3

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira

Introdução à Programação C

COMPILAÇÃO. Ricardo José Cabeça de Souza

Linguagem de Programação

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Análise Léxica. Sumário

Linguagens de Programação Conceitos e Técnicas. Amarrações

Funções de Entrada e Saída

Introdução à Linguagem C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Linguagens de Programação Aula 4

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Conteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação

CP Compiladores I Prof. Msc. Carlos de Salles

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Introdução à Programação em C (I)

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Caracteres e Cadeias de Caracteres

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

VAGAS, ALUNOS E DIPLOMADOS NO ENSINO SUPERIOR Apresentação de dados [JUNHO de 2008]

Introdução à Linguagem C. K&R: Capitulo 1. Introdução IAED, 2014/2015 2

Introdução as Máquinas de Autômatos

Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2006/2007. Programação 2. Trabalho Prático P2B

Outline. 33. Manipulação de arquivos DIM

Transcrição:

Linguagens e Programação FLEX

Analisador léxico Programa que lê um ficheiro de texto (p.e. source code) e produz uma sequência de componentes léxicos (tokens) As sequências de tokens produzidas serão utilizados pelo analisador sintático (parser) permitem identificar erros léxicos na entrada. Os tokens são instanciados por lexemas

Analisador léxico tokens São padrões de caracteres com um significado especial num determinado contexto. São definidos por expressões regulares sobre um alfabeto. lexemas Ocorrências de um token no âmbito da informação analisada. São constituídos pelos carateres da informação que compõe um token.

Analisador léxico Exemplo: if(x>=y){ y=100; } IF LPAREN ID GEQ ID RPAREN LBRACK ID ASSIGN INT SCOLON RBRACK lexema: 100

FLEX Ferramenta que permite gerar analisadores léxicos.

Rotinas em C Regras Macros Declarações Flex Formato de um ficheiro FLEX %{ %} int contadornumeros=0; DIG [0-9] {DIG}+ {contadornumeros++; printf("número: %s\n",yytext);} main() { yylex(); printf("foram encontrados %d números\n", contadornumeros); }

Flex Ambiente de trabalho linux ssh.dei.isep.ipp.pt, ssh1.dei.isep.ipp.pt, ssh2.dei.isep.ipp.pt, ssh3.dei.isep.ipp.pt Acesso via putty

Flex Geração do código fonte do analisador léxico >> flex ficheiro.flex >> flex oficheiro.c ficheiro.flex Compilação do analisador léxico Produz: lex.yy.c Produz: ficheiro.c >> gcc ficheiro.c -lfl >> gcc oprograma ficheiro.c -lfl Produz: a.out Produz: Programa

Flex Execução do analisador léxico >>./Programa <ficheiro.txt >>./Programa Xpto quert as sfsfl Sf skfk flas kn ebs Sf sfsç mf827 d0e 9 Fkfkh as dh 9d <Ctrl+D> Corresponde ao caracter EOF End of File

Propostas de Exercícios 1. Escrever um programa que permita contar o número de ocorrências de uma cadeia de caracteres ex1.flex %{ int contador=0; %} ISEP isep {contador++;}. \n main() { yylex(); printf("numero de ocorrências : %d\n",contador); }

Propostas de exercícios 1. >> flex oex1.c ex1.flex >> gcc oprogex1 ex1.c -lfl Info.txt Em 1989, o ISEP é integrado no subsistema de Ensino Superior Politécnico, passando o seu modelo de formação a integrar dois cursos distintos: o bacharelato, com a duração de três anos, e os Cursos de Estudos Superiores Especializados, com a duração de dois anos. Em 1998, no âmbito de uma nova reforma do ensino superior politécnico, o ISEP passa a ministrar as actuais licenciaturas bietápicas, caracterizadas pela sua estruturação em dois ciclos - o bacharelato com a duração de três anos - o que possibilita a inserção no mercado de trabalho, seguido de um segundo ciclo de dois anos - frequentado essencialmente em regime pós-laboral - para a obtenção da licenciatura. Em 2006, por força da adesão de Portugal à Declaração de Bolonha, o isep disponibilizará um novo Plano de Estudos, constituído por licenciaturas e mestrados nas diversas áreas da Engenharia, assim iniciando um novo ciclo da sua já longa história. Em 2008, o Presidente da República Portuguesa, enaltece a qualidade do trabalho desenvolvido no ISEP, durante o Roteiro para a Ciência. A passagem pelo isep constitui a primeira visita oficial de um chefe de Estado português a um instituto politécnico. O ISEP atribui o primeiro grau de mestre pós-bolonha. >>./ProgEx1 <Info.txt número de ocorrências : 6

Propostas de Exercícios 2. Escrever um programa que permita substituir as ocorrências de FEUP por ISEP e de 2007 por 2008 ex2.flex FEUP {printf("isep");} 2007 {printf("2008");}. \n {printf("%s",yytext);} main() { } yylex();

Propostas de Exercícios 3. Escrever um programa que permita validar matrículas portuguesas. ex3.flex ALGAR [0-9] LET [A-Z] {ALGAR}{2}-{LET}{2}-{ALGAR}{2}. \n {printf("%s\n",yytext);} main() { } yylex();

Propostas de Exercícios 4. Escrever um programa que dado um ficheiro de texto, mostre: Número de algarismos Número de letras do alfabeto Número de linhas de texto Número de espaços ou tabulações Numero de outros caracteres 5. Escrever um programa que permita identificar números naturais 6. Escrever um programa que permita identificar números inteiros (com e sem sinal) 7. Escrever um programa que permita identificar números com parte decimal

Linguagens e Programação FLEX