Есть ли API для программного запуска Scala REPL?

На основе потока и Исходники интерпретатора Scala похоже, не так уж и сложно получить эквивалент

def runLine(line: String): String

но кто-то это уже написал?


person Owen    schedule 02.09.2011    source источник
comment
возможный дубликат Запустить Scala REPL программно?   -  person Daniel C. Sobral    schedule 03.09.2011
comment
Этот ответ дает более подробную информацию: stackoverflow.com/questions/2160355/. Обратите внимание, что интерфейс библиотеки был изменен (переработан) начиная с Scala 2.9. Кроме того, вы можете столкнуться с проблемами из-за того, что путь к классам встроенного REPL не совпадает с родительским процессом; некоторые решения здесь: stackoverflow.com/questions/ 4121567 /   -  person Kipton Barros    schedule 03.09.2011
comment
@Daniel пытается сделать совсем другое, а именно прервать программу scala, чтобы запустить обычный REPL. Я пытаюсь воспроизвести поведение REPL в не-REPL.   -  person Owen    schedule 03.09.2011
comment
@Daniel Это довольно близко, хотя он использует interpreter.main(settings), так что он все еще использует стандартный основной цикл REPL.   -  person Owen    schedule 03.09.2011
comment
@Owen Ну, вот это, хотя он указывает 2.7.7. Не уверен, что это все еще работает. Тоже не дубликат вопроса - парень уже разобрался. Этот другой фактически компилируется и загружается.   -  person Daniel C. Sobral    schedule 04.09.2011


Ответы (1)


Существует множество примеров, но их может быть трудно найти. Вот то, что я написал некоторое время назад:

http://code.google.com/p/simplex3d/source/browse/trunk/Simplex3dConsole/src/simplex3d/console/SimpleInterpreter.scala?r=790

Сложная часть - заставить интерпретатор загружать jar-файлы Scala. Я загрузил jar-файлы вручную, чтобы они работали с веб-запуском, но в вашем случае простого settings.usejavacp.value = true может хватить.

Здесь вы можете увидеть интерпретатор в действии: http://www.simplex3d.org/console/

person Lex    schedule 02.09.2011