Resumen

¿Cómo mejorar nuestro REPL para mostrar el árbol de evaluación?

Nos encontramos en una etapa crítica del desarrollo de nuestro lenguaje de programación, en donde tenemos nuestro parser funcionando y generando un árbol sintáctico abstracto (AST). Sin embargo, es fundamental poder visualizar este árbol para entender el orden de evaluación dentro de nuestro programa. Para lograrlo, modificaremos nuestro REPL (Read-Evaluate-Print Loop) con algunos pasos claves.

¿Cuáles son los pasos para modificar el REPL?

  1. Importar módulos necesarios:

    • Desde typing, importamos la lista, ya que estaremos generando una lista.
    • Importamos el program desde nuestro módulo AST.
    • Importamos el parser desde el módulo parser.
  2. Implementación del pipeline:

    • Primero, pasamos nuestro código al lexer, que genera tokens.
    • Luego, esos tokens se envían al parser que, a través de parse program, genera una estructura de tipo programa.
    • Debemos asegurarnos de que nuestro REPL muestra también errores de sintaxis que puedan surgir.
  3. Gestión de errores de sintaxis:

    • No es necesario detener el análisis del parser cuando se encuentra un error, se almacena para mostrarlo posteriormente.
    • Creamos una función privada llamada printParseErrors que recibe una lista de errores y los imprime.
  4. Imprimir la representación del programa:

    • Si el parser no encuentra errores, imprimimos el programa representado como un AST.

¿Cómo ejecutar y probar las modificaciones?

  • Usamos la terminal para correr nuestro intérprete.

  • Ingresamos una expresión como 2 * 3 / 5 + 4, y observamos el árbol de evaluación que refleja el orden correcto de operaciones:

    1. Primero se evalúa 2 * 3.
    2. El resultado se divide entre 5.
    3. Finalmente, se suma 4.
  • También podemos asignarle valores a variables, por ejemplo, A = 5 * 4, donde primero se realiza 5 * 4 y luego se asigna el valor a A.

¿Qué reto se propone lograr?

Se propone ajustar el string resultante del árbol de evaluación para representar el árbol de manera más visualmente comprensible. Esto podría hacerse mediante:

  • Indentaciones: para mostrar la jerarquía de operaciones de manera clara.
  • ASCII art: para dar un formato visual atractivo y funcional.

¿Cuál es el siguiente paso en el desarrollo?

Avanzamos hacia la creación del evaluador. Esta etapa crucial dará significado a nuestros símbolos matemáticos, permitiéndonos evaluar directamente el lenguaje de programación Platzi. ¡Esto representa un gran paso hacia dotar de vida a nuestro lenguaje!

Recuerda, este camino requiere tanto paciencia como creatividad. Si te sientes emocionado o tienes preguntas, comparte tu experiencia en los comentarios y sigue adelante en este fascinante viaje de construcción de un lenguaje de programación.