Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombre
Eric Patterson
Cedula
8-931-2223
Materia
Diseño en Compiladores
Trabajo
Laboratorio N2
Año
2023
introducción al Analizador Léxico FLEX
Enunciado:
¿Qué es FLEX? FLEX es un analizador léxico bajo licencia GPL. Cada vez que
analizador léxico más frecuentemente utilizado: LEX (bajo sistema UNIX). FLEX (y
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
Ejercicio 2
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.
Ejercicio 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 ^-?\d+(\.\d+)?([eE][+-]?\d+)?$
punto también opcional
Operadores matemáticos: =, +, -, *, /,
=|\+|-|\*|/|DIV|MOD
DIV, MOD
Paréntesis: (,) [()]
Comentarios: #esto es un comentario
#.*
que acaba en una línea.
Ejercicio 4
tabulador.
*/
%{
#include<stdio.h>
%}
%%
[ \t][ \t]+ {printf("%c", ' ');}
. {printf("%c", yytext[0]);}
%%
int yywrap() {
return 1;
int main() {
yylex();
return 0;
}
Ejercicio 6
/*
Entrega 3).
*/
%{
#include<stdio.h>
%}
%%
#.*\n? {}
%%
int yywrap() {
return 1;
argv) { yyin =
fopen(argv[1],
"r");yylex();
fclos
e(yyi
n);
retur
n 0;