
[Audio] Instituto Tecnológico de Huejutla Documentación del Proyecto ESTUDIANTE: Carlos Alberto Hernandez Hernandez Leomar Hernandez Ramos Hannia Michelle Mendo Ruiz Karla Itzel Bautista Ramirez Jhoselin Antonio Rosas NO. DE CONTROL: 23840389 23840392 23840391 23840378 23840374 ASIGNATURA: Lenguajes y Autómatas II PERIODO ESCOLAR: ENE - JUN 2026 DOCENTE: M. E. Ioset Ivette Sandoval Vargas Fecha: 28 de abril del 2026 Km. 5.5 Carretera HuejutlaChalahuiyapa, C. P. 43000 Huejutla de Reyes, Hgo. Tel./Fax: 789 89 60648.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales ÍNDICE I. Introducción..........................................................................................................................................3 II. Referencias.........................................................................................................................................4 III. Innovación.......................................................................................................................................... 5 IV. Codigos, cadenas, frases, etc........................................................................................................ 6 V. Código Fuente....................................................................................................................................7 VI. Interfaces..........................................................................................................................................11 VII. Evaluación del analizador.............................................................................................................12 VIII. Evidencia de Equipo.................................................................................................................... 13 Página 2 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales I. Introducción Es un software que transforma un código fuente escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel (código objeto o instrucciones de CPU). Este proceso no es un "salto de fe", sino una serie de pasos lógicos donde cada etapa utiliza un tipo de autómata diferente. Este proceso de traducción no se realiza de manera aleatoria, sino que sigue una estructura rigurosa dividida en etapas o fases. Cada fase se encarga de una tarea específica y trabaja de forma secuencial, tomando la salida de la fase anterior como entrada para la siguiente. El análisis detallado de estas fases es esencial para comprender cómo funcionan los lenguajes de programación, cómo se detectan y corrigen errores, y cómo se optimiza el código final para lograr un rendimiento eficiente. A continuación, exploraremos cada una de estas etapas, desde el análisis del texto fuente hasta la generación del código ejecutable. Análisis Léxico (Scanner) En esta etapa, el compilador lee el texto carácter por carácter y agrupa las letras en "tokens" (palabras clave, números, símbolos). Fundamento: Utiliza Expresiones Regulares. Máquina: Se implementa mediante un Autómata Finito (ya sea determinista o no). Análisis Sintáctico (Parser) Aquí se revisa si la combinación de tokens sigue s reglas gramaticales del lenguaje. Por ejemplo, que un paréntesis abierto tenga uno que lo cierre. Fundamento: Utiliza Gramáticas Libres de Contexto (CGF). Se implementa mediante un Autómata de Pila (Pushdown Automaton), ya que necesita "memoria" para recordar estructuras anidadas. Análisis Semántico Esta fase verifica que el código tenga sentido lógico. Por ejemplo, que no intentes sumar un número con una palabra. Aquí ya entramos en gramáticas más complejas y tablas de símbolos. Página 3 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales II. Referencias. Como equipo anduvimos investigando, para poder darnos una referencia de como podríamos realizar el código. Así fue como encontramos un vídeo en youtube, donde explicaba como podremos realizarlo, de ahí fue donde comenzamos a realizarlo y también de mejorarlo para que quedara mucho mejor y mas fácil de manejar. Link del video: https://www.youtube.com/watch?v=ejJuV0Q1oyM Página 4 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales III. Innovación Al ir realizando el programa, si fuimos modificando partes del código, porque no era tan apto para utilizarlo tal cual esta en el vídeo, así que si se modificaron algunas cosas. Como la interfaz del código para hacerla mas intuitiva y sencilla para el usuario. Ilustración 1 Interfaz de Referencia Ilustración 2 Modificación de Interfaz Página 5 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales IV. Codigos, cadenas, frases, etc. public class HolaMundo } -----------------------------------------public class Variables } ----------------------------------------------public class CicloFor } } --------------------------------------------------------public class Metodos public static void saludar() } Página 6 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales V. Código Fuente Imagen 1. Interfaz del menú La imagen muestra el desarrollo de un compilador o analizador de código hecho en Python dentro de un editor de programación. En la parte superior se observa el archivo principal (main.py), donde se crean las funciones para realizar el análisis léxico, sintáctico y semántico, además de manejar la interfaz gráfica y los mensajes al usuario. Página 7 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales En la parte inferior aparece el código del analizador léxico (lexer.py), el cual utiliza expresiones regulares para identificar tokens como palabras reservadas, números, operadores e identificadores. Se realizado utilizando Python, organizando el programa en varios archivos (main.py, lexer.py, syntactic.py, semantic.py) y empleando bibliotecas para crear la interfaz gráfica y procesar el código fuente mediante reglas y patrones definidos. Imagen 2. Analizador lexico. En la imagen 2 se muestra un analizador léxico en Python creado para reconocer elementos de un lenguaje de programación. Se realizó utilizando la librería re de Python, que permite trabajar con expresiones regulares. El programa define patrones para identificar tokens como: Palabras reservadas (public, class, void) Tipos de dato (int, float, string) Identificadores Números Operadores y delimitadores Después, el código recorre línea por línea el texto ingresado y compara cada parte con los patrones definidos. Cuando encuentra coincidencias, muestra el tipo de token; si no reconoce algún carácter, marca un error léxico. Página 8 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales Imagen 3. Analizador Sintáctico Como se muestra en la imagen 3 un analizador sintáctico en Python desarrollado para verificar que el código tenga una estructura correcta. Se realizó utilizando la librería re y expresiones regulares para validar reglas de sintaxis. El programa analiza líneas de código y comprueba elementos como: Balance de paréntesis, llaves y corchetes Declaración de clases Métodos y variables Condiciones if y else Asignaciones y llamadas a métodos Si alguna regla no se cumple, el sistema genera un mensaje de error sintáctico; si todo es correcto, muestra un mensaje de compilación exitosa Página 9 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales Imagen 4. Analizador Semantico. La imagen 4, muestra un analizador semántico en Python para código Java. El programa utiliza expresiones regulares para detectar declaraciones y asignaciones de variables, verificando errores como variables no declaradas, repetidas o con tipos de datos incorrectos. Finalmente, genera un reporte indicando si el código es válido o contiene errores semánticos. Página 10 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales VI. Interfaces Imagen 5. Menú. En la imagen 5, muestra una interfaz gráfica de un compilador/analyzer de Java enfocada en el análisis de flujo de control. Esta interfaz probablemente fue desarrollada utilizando Java Swing o JavaFX, herramientas usadas para crear ventanas y componentes gráficos en Java. La interfaz se realizó de la siguiente manera: Se creó una ventana principal con el título "COMPILADOR: FLUJO DE CONTROL". En el lado izquierdo se agregó un editor de código, donde el usuario escribe instrucciones en Java. En el lado derecho se colocaron tres áreas de resultados: Resultado Léxico Resultado Sintáctico Resultado Semántico Cada una sirve para mostrar el análisis correspondiente del código ingresado. En la parte inferior se añadieron botones de acción: Analizar Léxico → identifica tokens y palabras reservadas. Analizar Sintáctico → verifica la estructura gramatical. Analizar Semántico → revisa la lógica y coherencia del código. Resetear → limpia el contenido de la interfaz. Además, se usaron componentes gráficos como: JTextArea para escribir y mostrar texto. JButton para las acciones. JPanel para organizar secciones. Layouts para acomodar los elementos en la ventana. La interfaz fue diseñada para permitir escribir código Java y mostrar de forma separada los distintos procesos de análisis que realiza un compilador. Página 11 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales VII. Evaluación del analizador Imagen 6. Analizador En la imagen 6, se muestra un analizador de código trabajando con un programa en Java que utiliza un ciclo for. El programa escrito es: Java for (int i = 1; i <= 5; i++) Este ciclo repite una instrucción 5 veces e imprime en pantalla el número de cada iteración. Después, el sistema realiza tres tipos de análisis: Análisis Léxico Se identifican los elementos del código, llamados tokens, como palabras reservadas (public, class), identificadores (CicloFor) y delimitadores (). Análisis Sintáctico Verifica que el código esté escrito con la estructura correcta de Java. El resultado indica: "BUILD SUCCESSFUL", lo que significa que no hay errores de sintaxis. Análisis Semántico Comprueba que las instrucciones tengan sentido lógico y uso correcto de variables y tipos de datos. El reporte muestra: "0 errores encontrados". Página 12 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales VIII. Evidencia de Equipo. Como equipo estamos verificando que el programa este funcionando acorde como teníamos pensado. En ese momento estamos corrigiendo errores sobre la documentación y también implementando mas información para que estuviera completo. Página 13 de 14.
[Audio] Instituto Tecnológico de Huejutla Ingeniería en Sistemas Computacionales El compañero nos está explicando como se utiliza el programa.. La compañera creo un grupo de WhatsApp para apoyarnos en la realización de la documentación del programa, así que nos envió su idea sobre la introducción. Página 14 de 14.