0% encontró este documento útil (0 votos)
33 vistas8 páginas

Lab2 Compiladores

Este documento presenta 6 entregas de un laboratorio sobre el analizador léxico FLEX. La primera entrega describe un programa FLEX que reconoce números enteros y nombres de variables en un texto. La segunda explica un programa que cuenta líneas y caracteres en un archivo. La tercera propone patrones FLEX para reconocer varios tipos de tokens. La cuarta explica cómo agregar comentarios en FLEX. La quinta y sexta presentan programas FLEX de ejemplo.

Cargado por

Eric Patterson
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas8 páginas

Lab2 Compiladores

Este documento presenta 6 entregas de un laboratorio sobre el analizador léxico FLEX. La primera entrega describe un programa FLEX que reconoce números enteros y nombres de variables en un texto. La segunda explica un programa que cuenta líneas y caracteres en un archivo. La tercera propone patrones FLEX para reconocer varios tipos de tokens. La cuarta explica cómo agregar comentarios en FLEX. La quinta y sexta presentan programas FLEX de ejemplo.

Cargado por

Eric Patterson
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

UNIVERSIDAD DE PANAMÁ

FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN


LIC. INGENIERÍA EN INFORMÁTICA

Nombre:
Urias Ramos

Cedula:
8-954-1944

Asignatura:
Laboratorio de diseño de compiladores I

Profesor:
Ajax Mendoza

Tema:
Introducción al Analizador Léxico FLEX

Fecha de entrega:
10-05-2023
Laboratorio 2
Enunciado:
El objetivo de esta práctica consiste en aprender a cómo utilizar el analizador léxico FLEX.
Para este propósito se empezará describiendo brevemente cómo funciona un programa
FLEX, cómo está estructurado y cómo compilarlo.
Entrega 1

Este programa busca en una cadena de texto números enteros y nombre de variables
válidos.
 Solo puede ser considerado un entero si la cadena de texto empieza por algún
digito entre 0-9 y más coincidencias.
 Para que sea considerado una variable debe empezar con cualquier letra o un guion
bajo _ y luego cualquier combinación de letras, dígitos o _.
 Cualquier otra cosa se omitirá, se puede decir que no es válido.

Ejemplos:
Texto Entrada Funcionamiento
El programa clasifica 123456 como un
123456Panama1 entero y Panama1 como una variable y te
dice la longitud de 7 caracteres.
Clasifica toda la cadena como una
Panama124_
variable y longitud de 10 caracteres.
123 Clasifica 123 como un entero.
No lo clasifica y no imprime nada. Se
###### puede tomar como un error o solo omitirlo
Entrega 2
Ejercicio: ¿Qué hace este programa?

Este programa lee un fichero de texto como entrada y por cada salto de línea se incrementa
a las variables num_lineas y num_caracteres. Y cualquier otra cosa dentro del fichero se le
incrementara la variable num_caracteres.
En resumen lo que hace el programa es obtener el total de líneas dentro del fichero y el
total de caracteres.
Entrega 3
Diseñe patrones FLEX que reconozcan:

Reconocer Patrón
Nombres de variables [a-zA-Z_][a-zA-Z0-9_]*
Números enteros con y sin signo -?[0-9]+
Números reales en coma flotante con y
[-+]?[0-9]*\.?[0-9]+
sin signo
Números reales en notación exponencial
con signo opcional y con punto también ^-?\d+(\.\d+)?([eE][+-]?\d+)?$
opcional
Operadores matemáticos: =, +, -, *, /,
=|\+|-|\*|/|DIV|MOD
DIV, MOD
Paréntesis: (,) [()]
Comentarios: #esto es un comentario
#.*
que acaba en una línea.
Entrega 4
¿Cómo se pueden incluir comentarios en un programa FLEX?
En FLEX los comentarios se pueden incluir en un programa utilizando el símbolo #. Este
tipo de comentaros es solo de una línea.
# este es un comentario de una sola linea
Para colocar comentarios de varias líneas se utiliza /* */.
/*
Esto es un comentario
De varias lineas
*/
Entrega 5

/*
Estudiante: Urias Ramos 8-954-1944 Version: 6-5-2023

Entrega 5: Diseñe un programa que analice un texto


de entrada y sustituya dos o mas espacios en blanco seguidos por un unico espacio y dos o mas tabuladores p
*/

%{

#include<stdio.h>

%}

%%
[ \t][ \t]+
{printf("%c", ' ');}

. {printf("%c", yytext[0]);}

%%

int yywrap() {
return 1;
}

int main() {
yylex(); return 0;
}
Entrega 6

/*

Estudiante: Urias Ramos 8-954-1944

Version: 6-5-2023

Entrega 6: Diseñe un programa FLEX que borre los comentarios que aparecen

en un fihero de texto (Se suponen comentarios de una sola linea que empiezan

por el simbolo #, como en el caso del patron g de la Entrega 3).

*/

%{

#include<stdio.h>

%}

%%

#.*\n? {}

.|\n {printf("%c", yytext[0]);}

%%

int yywrap() {

return 1;

int main(int argc, char** argv) {

yyin = fopen(argv[1],

"r"); yylex();

fclose(yyin);

return 0;

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy