При внедрении интерпретатора для моего языка программирования я сначала подумал о простом окне консоли, которое позволяет пользователю вводить некоторый код, который затем выполняется как отдельная программа в качестве оболочки.
Но есть серьезные проблемы: если каждая строка кода, которую вводит пользователь, обрабатывается как отдельная программа, она должна пройти через токенизатор и парсер, а затем просто выполняется интерпретатором - а что же тогда с функциями?
- Как интерактивные консоли Python/Ruby (IDLE, irb) "разделяют" код? Как обрабатывается код?
Пример:
>> def x:
>> print("Blah")
>>
>> x()
Где хранится функция, чтобы ее можно было вызвать в любое время снова?
Как интерактивная консоль может принимать все, как очевидно, одну программу, не выполняя все снова и снова?