Erick Israel Meza Tineo - U22302325 Indicaciones
Erick Israel Meza Tineo - U22302325 Indicaciones
${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>
%}
%%
%%
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>
%}
%%
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.
%{
#include <stdio.h> //Seccion donde se pueden incluir distintas librerías que se usaran
%}
%%
%%
// 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”);}