В большинстве этих языков используется синтаксический анализатор, который имеет своего рода «поток токенов», то есть анализатор продолжает извлекать токены (строку, символ, оператор и т. Д.) Из входного потока до тех пор, пока он не получит полное выражение, затем он возвращает это проанализированное выражение, где оно может быть скомпилировано в байт-код или выполнено иным образом. Цикл REPL относительно прост в обращении, учитывая эту структуру, так как синтаксический анализатор в основном запрашивает больше ввода, и вы даете пользователю подсказку, и пользователь вводит больше ввода. Вам может потребоваться немного связи от анализатора до читателя, чтобы он отображал такие вещи, как запросы на продолжение.
Python и Ruby оба выполняют операторы сразу, по порядку (объявление функции - это один оператор). Таким образом, вы можете выполнять код за оператором в интерпретаторе, чтобы получить практически тот же эффект, что и в исходном файле.