Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Luis Gerardo Cardozo Carranza Manual de Practicas U4 Completo
Luis Gerardo Cardozo Carranza Manual de Practicas U4 Completo
Docente:
Yadira Esther Jiménez Pérez
Actividad:
Analizador Léxico, Sintáctico y Juego
Manual de Documentación
P R E S E N T A:
Nombre de
Analizador Léxico, Sintáctico y Juego No. 1
la práctica
Ingeniería en Duración
Lenguajes y de la
Asignatura: Carrera: Sistemas 16
Autómatas I práctica
Computacionales horas
(Has)
NOMBRE DEL ALUMNO:
Luis Gerardo Cardozo Carranza
GRUPO: 3502
I. Competencia(s) específica(s):
Crea y reconoce Expresiones Regulares para solucionar problemas del entorno.
Encuadre con CACEI: Registra el (los) atributo(s) de egreso y los criterios de desempeño
que se evaluarán en esta práctica.
II. Lugar de realización de la práctica (laboratorio, taller, aula u otro): Aula NIV
III. Material empleado: Laptops, IDE 13 Apache NetBeans, Lenguaje de Programación “Java”,
YouTube: “JFlex | Analizador léxico con Java (explicación paso a paso)”, tutoriales de YouTube
par a la comprensión de temas sobre validación en Java.
Analizador Léxico
Video:
En este video nos explica la creación de un analizador léxico paso a paso, en donde primeramente nos explica que
realizara un analizador léxico con la clase JFlex.
Este procedimiento de creación la divide en 5 puntos:
Enumeración de Tokens
• Creamos un JavaEnum, para enumerar los tokens. Donde escribiremos las palabras usadas en la clase
Lexer.flex, comenzando por las palabras reservadas, operadores lógicos, identificadores y números.
Analizador Léxico
Uso Final
• El uso final es la creación de una interfaz gráfica de usuario por medio de una Jframe.java en donde le
pasaremos una entrada de datos en este caso los caracteres a analizar y en base a los tokens que ya
están en el archivo sobre leerá la entrada de caracteres ingresados y de acuerdo un condicional leerá e
identificará los tokens de acuerdo al token que se está analizando del archivo. Para poder identificarlo se
hace uso de un “lexer. lexeme”
• Donde esto permitirá saber a qué tipo de token pertenece y al ingresar una cadena de caracteres que
cumplan con el token nos podrá arrojar el resultado del tipo de token al que pertenece. Con esto finalizaría
el proceso de la creación del analizador léxico.
Para la alimentación de nuestro analizador léxico, lo que nosotros realizamos es integrar más palabras
reservadas que a nuestro criterio creemos importantes y vitales para el correcto funcionamiento del lenguaje
a lenguaje natural(español).
De igual forma agregamos más tokens con el valor de tipos de números que se escribieran:
Así mismo de igual forma contemplamos otros puntos esenciales en nuestro lenguaje al momento
de llevar el análisis léxico.
Tipos de Operadores
Aritméticos
Otros Tipos de
Operadores
Tipos de Operadores de
Relación
Tipos de Operadores de
Lógicos
Tipos de Clausulas
Tipos de Palabras
Reservadas De
Funciones
Excepciones
Modificadores de Acceso
Diferentes
Tipos de
Métodos
Enumeración de Tokens
Analizador Léxico
Agregando más tokens para su posterior uso en este caso, podemos ver los nuevos tokens que se
están integrando, así tratándose de métodos, funciones, palabras reservadas u operadores.
Uso Final
Llevando el analizador léxico a evaluar una prueba de un ciclo FOR en español, al parecer muestra
resultados sorprendentes que hacen un correcto uso y una funcionalidad correcta.
Analizador Sintáctico
Video:
YouTube: “JCup y JFlex | Analizador sintáctico con Java (explicación paso a paso)
En este video nos explica la creación de un analizador sintáctico paso a paso, en donde primeramente nos
explica que realizara un analizador léxico con el analizador léxico antes ya creado.
Haremos uso del analizador normal, pero importaremos las librerías de java_cup y java-cup-11a.
Modificaremos el Lexer.flex, de manera que cada palabra reservada tenga su propio token.
Después crearemos el lexer para CUP, crearemos un nuevo archivo en el cual copiaremos lo del Lexer.flex
al LexerCup.flex donde realizaremos unas modificaciones al cambiar los tokens por los símbolos. Esto para
analizar las cadenas de entrada que se esta analizando para los manejos de errores, de igual forma
retornaremos el tipo de símbolo con el que se estará trabajando.
En esta parte crearemos un nuevo archivo llamado Sintax.cup donde lo importante del sintax es la parte
sintáctica del lenguaje en este caso para que los tokens se acomoden de acuerdo a donde les toque acuerdo
a la sintaxis que sigue cada uno donde comienza lo terminal (palabras ya definidas en el léxico) y lo no
terminal (se pueden dividir en símbolos terminales o no terminales).
En esta parte es donde se realizarán las reglas sintácticas donde tendremos el inicio de un lenguaje de
programación en este caso el método principal declarando su sintaxis de uso podremos seguir agregando más
sintaxis de otros tokens como declaraciones de variables, expresiones de control de flujo como los
condicionales (if, else) o ciclos (for, while y dowhile).
En la parte de la clase principal modificaremos, para que nos genere los archivos léxicos y sintácticos en
este caso para integrar nuevos elementos que existen o que nos genere un archivo que aún no existe pero
que es de gran utilidad. Con esto quedaría realizada la parte de la sintaxis CUP.
En esta parte haremos uso de ambos analizadores en los que modificaremos el formulario para poder hacer
ingreso de una sintaxis de lenguaje como tal, pero en español en nuestro caso, y de esta forma analizar los
lexemas (tokens ingresados) pero además igual un análisis sintáctico de la sintaxis si se cumple de acuerdo
a la sintaxis declarada en el Sintax.cup
Trabajando con eventos en los botones le daremos la utilidad a parte de la interfaz grafica trabajando en la
parte del ActionPerformed del botón, en esta parte lo modificaremos para que nos pase toda la parte del
archivo de texto al textArea ya declarado en el formulario, después tendrá que leer todos los bytes del
archivo, posteriormente lo colocamos al textArea, una vez realizado esa parte podemos ingresar una archivo
con alguna sintaxis y al analizarla podremos ver cómo nos extrae toda la sintaxis del archivo txt al textArea.
Posteriormente trabajamos con otro evento en el cual es para llevar el análisis del analizador léxico, donde
contaremos las líneas que contenga, evaluando la expresión que se tenga podemos darle a cada token su
identificador para que de esta manera nos muestre el tipo de token que es.
Para la parte del analizador sintáctico, utilizaremos la evaluación del resultado, de igual forma el analizador
sintax CUP para analizar la sintaxis del lenguaje que se escriba. De esta manera evaluaremos la parte
sintáctica. En esta parte se trabajará con excepciones para que nos muestre mensajes en caso de que todo
este correcto o de que no lo sea así y con esto terminaríamos la parte del analizador sintáctico.
Lo que se desarrolló en esta parte se creó un juego en la interfaz que ya se tenía. Lo que
se realizo fue la creación de dos botones.
Botón para
cerrar la
interfaz del
analizador
Léxico y
Sintáctico
Botón para
jugar y
acceder al
juego
Una vez que se accede directamente al juego nos encontramos con un menú que nos dará la
bienvenida, y en el cual podremos aprender y conocer los conceptos básicos de la
programación algo bien en esta parte es que no solo se trata de un juego para aprender, sino
que de igual forma podremos comprender otros puntos esenciales de la programación.
En el menú podremos encontrar los distintos tipos de juegos que podremos jugar algunos de
ellos son los siguientes.
Donde al ingresar el cada uno de estos juegos podremos aprender por medio de ejercicios
sencillos.
Los cuales son evaluados por medio de validaciones de acuerdo a lo que el usuario escribe,
en este ejemplo se encuentra un ejemplo de validación que se realizó en el juego.
Una de las formas de evaluar de manera sencilla expresiones regulares que el usuario
escribe directamente.
En la parte de los juegos iremos con el primero en este caso el juego llamado “Hola
Mundo” que es el punto inicial que se comienza en este mundo de la programación.
El “hola mundo” el
primer código para
adentrarse en la
programación.
Ejemplo de uso:
Una vez realizada esta parte con el botón de salir podemos acceder de nuevo al menú de nuestro
juego aleatoriamente se puede jugar cualquier juego.
En esta parte primero se explica la teoría que involucra crear programas sofisticados,
posteriormente se desarrolla la parte del ejercicio basado en la teoría.
Al seleccionar los correctos enviará un mensaje que nos notificará que hemos realizado un buen
trabajo caso contrario lo hará con un mensaje que nos indicará que el ejercicio esta incorrecto.
Así mismo con el botón de salir podemos volver al menú inicial para continuar aprendiendo con
los demás ejercicios basados en un juego.
Al estar dentro del menú del juego continuaremos con el siguiente juego para aprender en donde
veremos la parte de crear condiciones o ciclos que le permitirán darle funcionamiento al
programa que se está desarrollando.
En esta parte podremos encontrar distintas cláusulas de control cada una dirigida a conocer el
concepto y funcionalidad, aprendiendo con ejemplos sencillos.
En este caso para hacer un ejemplo rápido explicare el funcionamiento de cada uno de los
condicionales y de los ciclos.
En este ejemplo con el condicional podemos ver que al seguir el ejemplo que tenemos y evaluarlo
este lo evalúa correctamente.
El botón de
limpiar
para, borrar
el El botón de salir para ir al
contenido menú de las cláusulas de
de los control y elegir otra clausula
espacios en para continuar aprendiendo.
blanco
En la parte de los ciclos cambia distintamente la sintaxis, aunque de igual forma podemos notar
los mismos botones que ocupa, se muestra a continuación:
En otra parte del juego podemos ver que de igual manera se incluyen otros temas que se
abordaron al desarrollar el juego dentro de estos podemos ver:
Juega
aprendiendo
los tipos de
datos y
resuelve el
ejercicio
Una vez comprendido esta parte continuará con la parte de los ejercicios para comprender de
mejor manera los diferentes tipos de datos:
Una vez corroborado que todos los tipos de datos son correctos no manda la notificación de que
en efecto son los tipos de datos correctos:
Para la parte de las variables es lo mismo que lo anteriormente explicado, explicamos su teoría y
que funcionalidades tiene dentro de esta puedes de igual forma aprender en base al ejemplo
crearla.
En la parte de los operadores, de igual forma funcionan bajo una teoría que nos brindará
información sobre los operadores relacionales y aritméticos.
Una vez comprendida la información básica podemos de alguna forma reforzar ese conocimiento
con practicas de ejercicios. En esta parte para cada uno de los tipos de operadores.
En esta parte sabremos que al aprender operadores podemos primero comprender la parte de la
teoría y posteriormente el juego sobre elegir cuales son los tipos de operadores que se explican.
V. Conclusiones:
En la parte del desarrollo del videojuego, lo quise desarrollar de tal forma que el usuario al
estar aprendiendo primero lo haga en su lenguaje nativo de esta forma no solo inculco el
conocimiento de que conozca que es lo que hace y como funciona ese concepto de la
programación sino que de igual forma le ayudo a que pueda desarrollar el pensamiento
lógico y pueda comprender como es que funcionan las clausulas que se usan dentro del
mundo de la programación de igual forma como se pudo notar el juego estaba en español
y eso es en base a la creación del analizador léxico y sintáctico que de igual forma se
desarrollaron en el lenguaje de español, y en base a esos analizadores es que pude darle
seguimiento a esta parte del proyecto para saber que el proyecto fue terminado con éxito.
La parte de crear tu propia aplicación dentro del juego es para incentivar la curiosidad de
como es que funcionan los programas una vez comprendidos la teoría.