0% encontró este documento útil (0 votos)
43 vistas5 páginas

Erick Israel Meza Tineo - U22302325 Indicaciones

1. El documento contiene un examen con 3 preguntas sobre analizadores léxicos y sintácticos desarrollados con Flex y Bison. 2. Se pide desarrollar analizadores léxicos que reconozcan diferentes patrones de letras. 3. También se incluyen preguntas sobre el uso y propósito de comandos y funciones utilizadas en Flex y Bison.

Cargado por

AragonZ
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)
43 vistas5 páginas

Erick Israel Meza Tineo - U22302325 Indicaciones

1. El documento contiene un examen con 3 preguntas sobre analizadores léxicos y sintácticos desarrollados con Flex y Bison. 2. Se pide desarrollar analizadores léxicos que reconozcan diferentes patrones de letras. 3. También se incluyen preguntas sobre el uso y propósito de comandos y funciones utilizadas en Flex y Bison.

Cargado por

AragonZ
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/ 5

N° Sobre: ${sobre}

${codigo} - ${curso}
${tipoexamen}
${periodo}
Sede: ${sede}
Área: ${area}
Profesor: ${profesor}
Sección: ${seccion}
Fecha del examen: ${fecha} Duración: ${duracion}
Fila: ${fila} Hora programada: ${hora}
_________________________________________________________________________________
ERICK ISRAEL MEZA TINEO - U22302325
Indicaciones:
· No está permitido el uso de celulares; apáguelo y guárdelo.
· No está permitido el uso de apuntes, materiales de clase o separatas.
· La ortografía, claridad, redacción y limpieza serán tomadas en cuenta en la calificación.

Importante:
· Los alumnos tienen una tolerancia de 15 minutos para ingresar a rendir este examen. Pasado
este tiempo, no pueden ingresar.
· Una vez empezado el examen, los alumnos no pueden retirarse del aula sino hasta después de
los 15 minutos de haberse iniciado la evaluación.

Pregunta 1 Desarrollar un analizador léxico /sintactico Flex que permita realizar: ([5] puntos)
1.- Puede recibir la letra ' C ' más de una vez.
2.- Puede recibir la letra d ò como no puede recibir ninguna letra
3.- Puede recibir la letras e ó puede recibir una o más letras f
Respuesta:
%{
#include <stdio.h>
%}
%%

C{2,} { printf("La letra 'C' aparece mas de una vez \n"); }


d|[^a-zA-Z] { printf("Se encontró la letra 'd' o ninguna letra\n"); }
e|f+ { printf("Se encontró la letra 'e' o una o mas 'f ' \n"); }
. { printf("Caracter no reconocido: %s\n", yytext); }

%%
int main() {
yylex();
return 0;
}

Pregunta 2 Desarrollar un analizador léxico/sintactico Flex que permita realizar: ([6] puntos)
1.- Puede recibir dos letras, la a ó b
2.- Puede recibir la letras e ó puede recibir una ó más letras f
3.- Puede recibir la letra g ó puede más letras h y agregando al final la letra I

Respuesta:
%{
#include <stdio.h>
%}
%%

aa|bb { printf("Se encontraron dos letras 'a' o 'b'\n"); }


e|f+ { printf("Se encontró 'e' o una o más 'f'\n"); }
g|h+ I { printf("Se encontró 'g' o una o más 'h' con terminacin en 'I'\n"); }
. { printf("Caracter no reconocido: %s\n", yytext); }
%%
int main() {
yylex();
return 0;
}

Pregunta 3 ([5] puntos)


Explique para que sirve los siguientes comandos:
yyin= studin
yyin representa la entrada de datos al analizador lexico y stdin es un standard para la captura de datos por
teclado del lenguaje C, lo que representa yyin = studin es que la entrada de datos por teclado sera recibido
por el analizador lexico.

option noyywrap
El comando yywrap indica que al finalizar el archivo actual se va a continuar con otro, en es caso al
colocar el noyywrap que no se debe utilizar esta funcion

#include <stdio.h>
El comando #include permite exportar librerías a nuestro programa, por otro lado el stdio.h es una libreria
que contiene funciones de entrada/salida estándar del lenguaje C.

Int Main()
Main() es la funcion principal de nuestro programa, desde donde empezara la ejecucion del mismo, los
parentesis indican si se recibe algun valor, en este caso no se recibe ninguno, y se devuelve un Int que es
un entero el cual por lo general se usa para saber si el programa se ejecuto correctamente o si ha ocurrido
algun error.

Yywrap()
es una función que se utiliza para manejar la transición entre diferentes fuentes de entrada durante el
análisis léxico. Esta funcion indica al programa qué hacer cuando llega al final de un archivo.

#include <y.tab.h>
Esta linea de comando se utiliza para importar la libreria Yacc, la cual contiene distintas funciones y/o
directivas para el uso del analizador sintactico de Bison.

Pregunta 4 RESPONDA LAS SIGUIENTES PREGUNTAS ([4] puntos)


1. Indique cual es el formato Y/O plantilla para desarrollar un analizador sintactico y explicar con
ejemplos cada formato

%{
#include <stdio.h> //Seccion donde se pueden incluir distintas librerías que se usaran
%}

// Seccion donde de declaraciones y definiciones de variables globales


DIGITO [0-9]

%%

// Seccion donde se definen las reglas gramaticales


DIGITO { printf(“Se ingreso un digito”); }

%%

// Seccion donde normalmente estan distintas funciones que usa nuestro programa ademas del int main()
que es la funcion de ejecucion incial.
Int main(){}

2. indique los comandos de compilación y explique cada uno de ellos flex y bison .
flex lex.l
bison -d yacc.y
gcc lex.yy.c y.tab.c -o lexer_parser -lfl

flex es el comando que ejecuta el generador de analizadores léxicos Flex y lex.l es el archivo que contiene
las reglas léxicas.
bison es el comando que ejecuta el generador de analizadores sintácticos Bison y -d indica a Bison que
genere el archivo de encabezado y.tab.h.
gcc es el compilador de C, y.tab.c es el código fuente generado por Bison y -o especifica el nombre del
ejecutable resultante.
3.- explique las partes que contiene la sesión de reglas con ejemplos
Esta seccion contiene las reglas léxicas que describen cómo se deben reconocer y procesar los tokens que
son ingresados o procesara el programa. Cada regla consta de un patrón y un código asociado que se
ejecuta cuando ese patrón coincide con los datos de entrada.
patrón { código }
Ejemplo
[a-z] {printf(“Se ingreso una letra”);}
[0-9]+ {printf(“Se ingreso uno o mas numeros”);}

4.- explique para que sirve la funcion yyparse()


Es una funcion que devuelve un valor que indica si el análisis fue exitoso o si se encontraron errores
durante el proceso.

También podría gustarte