Lab2 Compiladores
Lab2 Compiladores
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
%{
#include<stdio.h>
%}
%%
[ \t][ \t]+
{printf("%c", ' ');}
. {printf("%c", yytext[0]);}
%%
int yywrap() {
return 1;
}
int main() {
yylex(); return 0;
}
Entrega 6
/*
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
*/
%{
#include<stdio.h>
%}
%%
#.*\n? {}
%%
int yywrap() {
return 1;
yyin = fopen(argv[1],
"r"); yylex();
fclose(yyin);
return 0;