Implementación de REPL para Árbol de Sintaxis Abstracta
Clase 38 de 58 • Curso de Creación de Lenguajes de Programación: Intérpretes
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?
-
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óduloparser
.
- Desde
-
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.
-
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.
-
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:- Primero se evalúa
2 * 3
. - El resultado se divide entre
5
. - Finalmente, se suma
4
.
- Primero se evalúa
-
También podemos asignarle valores a variables, por ejemplo,
A = 5 * 4
, donde primero se realiza5 * 4
y luego se asigna el valor aA
.
¿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.