Práctica

Analizador Léxico con Python y PLY

Analizador léxico en python y PLY

Objetivo general

El estudiante logrará configurar un entorno de desarrollo en la nube (Google Colab) y utilizar la biblioteca PLY (ply.lex) para construir un analizador léxico funcional capaz de leer un flujo de caracteres, identificar patrones definidos mediante expresiones regulares y clasificar los tokens correctamente.

En el desarrollo de lenguajes de programación y herramientas de procesamiento de texto, la fase de análisis léxico es el primer paso crítico. Los lenguajes regulares proporcionan la base matemática para describir patrones, pero programar el reconocimiento de cada carácter desde cero es ineficiente.

Las herramientas de generación léxica, como PLY en el ecosistema de Python, automatizan este proceso basándose en expresiones regulares. Realizar esta práctica en Google Colab elimina las barreras de configuración de software local, permitiendo observar de forma inmediata cómo la teoría de los autómatas finitos cobra vida en una herramienta de análisis rápida y accesible.

Materiales o recursos necesarios:

  • Computadora o tableta con acceso a Internet.
  • Navegador web actualizado (Chrome, Firefox, Safari).
  • Cuenta de Google (para acceder a Google Colab).

Generación de Insumos Prácticos:

Para que el analizador funcione en Google Colab, se utilizarán “comandos mágicos” que permiten crear los archivos directamente en la máquina virtual. El estudiante deberá introducir los siguientes bloques de código en celdas separadas dentro de su cuaderno de Colab.

Celda 1: Instalación de la biblioteca PLY

!pip install ply

Celda 2: Archivo de prueba (codigo_prueba.txt)

Celda 3: Script del Analizador Léxico (analizador.py)

Celda 4: Ejecución del analizador

!python analizador.py codigo_prueba.txt

Instrucciones paso a paso:

  1. Preparación del entorno: Abrir un nuevo cuaderno (Notebook) en Google Colab e insertar cuatro celdas de código consecutivas. Por qué: Esto organiza el flujo de trabajo separando instalación, insumos de datos, código fuente y ejecución.
  2. Instalación de dependencias: Pegar el código provisto para la “Celda 1” y ejecutarla. Por qué: Prepara la máquina virtual en la nube instalando el motor léxico PLY que no viene por defecto.
  3. Creación de archivos: Pegar el código de las “Celda 2” y “Celda 3” en sus respectivos espacios y ejecutarlas en orden. Por qué: El comando %%writefile guarda físicamente los archivos de texto y el script de Python en el directorio temporal de Colab para que puedan interactuar entre sí.
  4. Análisis de salida: Ejecutar la “Celda 4” y observar los resultados impresos debajo de ella. Por qué: Llama al intérprete de Python simulando la terminal de comandos para procesar el archivo y arrojar la clasificación de tokens (y reportar el carácter ilegal @).
  5. Implementación del Reto: Modificar el código de la Celda 3 agregando una nueva regla léxica (def t_COMMENT(t): ...) que logre identificar e ignorar los comentarios de una sola línea de estilo C (es decir, que inicien con //). Volver a ejecutar la Celda 3 y la Celda 4. Por qué: Demuestra la asimilación del conocimiento al construir una expresión regular nueva y aplicarla al flujo de trabajo del generador automático.

Recomendaciones:

  • Ejecutar las celdas en el orden estricto provisto (1 a 4). Si se intenta ejecutar la celda 4 antes de generar el archivo en la celda 3, se producirá un error de “Archivo no encontrado”
  • Prestar extrema atención a la indentación en la Celda 3. Python es estricto con los espacios y PLY lo heredará; un espacio desalineado romperá el código.
  • Si se realizan cambios en la expresión regular del reto (Celda 3), es obligatorio volver a ejecutar esa celda específica para que el archivo analizador.py se sobrescriba antes de intentar probarlo con la Celda 4.
  • Utilizar la letra r antes de las comillas (ej. r'\d+') para evitar que Python confunda los caracteres de escape con saltos de línea internos.
  • Asegurarse de compartir el cuaderno de Colab con permisos de “Cualquier persona con el enlace puede leer” antes de enviarlo.

Posible problema y solución rápida:

  • Problema: Al ejecutar el análisis, aparece el error lex: token ... matches empty string.
  • Solución: Este error ocurre cuando la expresión regular del estudiante permite coincidencias de longitud cero (usualmente por usar mal el operador asterisco *). Para solucionarlo, se debe ajustar la expresión regular en el código de Python (Celda 3) para que requiera al menos un carácter válido, usando el operador suma + en lugar del asterisco, y luego volver a ejecutar la celda para sobrescribir el archivo antes de probar de nuevo.

Leave a Reply

Your email address will not be published. Required fields are marked *