Al implementar el intérprete para mi lenguaje de programación, primero pensé en una ventana de consola simple que permite al usuario ingresar un código que luego se ejecuta como un programa independiente como un shell.¿Cómo implementan Ruby y Python sus consolas interactivas?
Pero hay problemas graves: si cada línea de código que ingresa el usuario se maneja como un programa independiente, tiene que pasar por el tokenizador y el analizador y luego el intérprete simplemente lo ejecuta, ¿qué ocurre con las funciones?
- ¿Cómo pueden las consolas interactivas Python/Ruby (IDLE, irb) "compartir" el código? ¿Cómo se maneja el código ingresado?
Ejemplo:
>> def x:
>> print("Blah")
>>
>> x()
donde se almacena la función por lo que se puede llamar en cualquier momento de nuevo?
¿Cómo puede la consola interactiva tomar todo lo que se ingrese como obviamente un programa sin ejecutar todo una y otra vez?