Está en la página 1de 5

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERÍA

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS


CURSO: COMPILADORES Y TEORIA DE LENGUAJES
CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADÉMICO: 2018 - II

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA EN


DE INGENIERÍA EN

INFORMATICA Y SISTEMAS

INFORME DE PRÁCTICA N°4

“Practicando con flex”

CURSO: Compiladores y teoría de lenguaje


DOCENTE: Ing. Rolando Alvarez

ESTUDIANTE:

 Juan Pablo Apaza Atencio (2015-119015)

AÑO: TERCERO | TURNO: MAÑANA | GRUPO: A

TACNA – PERÚ

Docente: Ing. Rolando Alvarez Página 1 de 6


UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORIA DE LENGUAJES
CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADÉMICO: 2018 - II

PRÁCTICA N° 04: “Practicando con flex”

I. CONTENIDO
En la presente práctica se revisara ejemplos de expresiones regulares para obtener tokens con Flex.
II. OBJETIVOS ESPECIFICOS
 Verificar el entendimiento de las expresiones regulares.
 Comprender el uso de flex para la obtención de tokens
III. MATERIAL Y EQUIPO

 Práctica 03.
 Lenguaje de programación C.
 Flex
 Ubuntu 16
IV.MARCO TEORICO

Presentaremos dos ejemplos básicos del uso de Flex como analizador léxico.
El primer ejemplo es el archivo primero.l
%{
Int count = 0;
%}
%%
[A-Z] {printf("%s letra mayuscula \n", yytext); count++;}
. {printf("%s no es mayuscula \n", yytext);}
\n { return 0;}
%%
void main(){
yylex();
printf("\n Numero de letras Mayusculas en el texto %d\n", count);
}

Para ejecutar el archivo debemos escribir:


 flex primero.l
 gcc lex.yy.c -lfl
 ./a.out

Entonces se ejecutará, ingresamos un texto y contará la cantidad de mayúsculas en el


texto ingresado, además de indicar por cada carácter si es mayúscula o no.

Docente: Ing. Rolando Alvarez Página 2 de 6


UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORIA DE LENGUAJES
CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADÉMICO: 2018 - II

El segundo ejemplo es el archivo segundo.l

%{
int no_lineas = 0;
int no_chars = 0;
%}
%%
\n {++no_lineas;}
. {++no_chars;}
end { return 0;}
%%
void main()
{
yylex();
printf("\n Numero de lineas = %d, numero de chars = %d\n", no_lineas,
no_chars);
}
Este ejemplo nos contará la cantidad de saltos de líneas en el texto ingresado, la
cantidad de caracteres ingresados y terminará solo cuando ingresemos la palabra end.

Docente: Ing. Rolando Alvarez Página 3 de 6


UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORIA DE LENGUAJES
CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADÉMICO: 2018 - II

V. ACTIVIDADES PROPUESTAS (DESARROLLO)

Utilizando Flex y al ingresar un archivo input de cualquier código en C o C++ (el que decida)

Ejemplo de pequeña calculadora en FLEX

Docente: Ing. Rolando Alvarez Página 4 de 6


UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN | FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS
CURSO: COMPILADORES Y TEORIA DE LENGUAJES
CICLO DE ESTUDIOS: SEXTO | SEMESTRE ACADÉMICO: 2018 - II

VI.CONCLUCIÓN
 Se verifico el entendimiento de las expresiones regulares.
 Se comprendio el uso de flex para la obtención de tokens

VII. BIBLIOGRAFIA

-González, M. (2018). El modelo de asignación. Caso del modelo de transporte. [online]


GestioPolis - Conocimiento en Negocios. Available at:
https://www.gestiopolis.com/modelo-asignacion-caso-modelo-transporte/ [Accessed 6 Oct.
2018].
-completo, V. (2018). Compiladores I y II: Laboratorio de JFlex y CUP. [online]
Palmahn.blogspot.com. Available at: http://palmahn.blogspot.com/2006/01/laboratorio-de-
jflex-y-cup.html [Accessed 11 Oct. 2018].

Docente: Ing. Rolando Alvarez Página 5 de 6

También podría gustarte