Можно ли использовать JetBrains MPS или его часть внутри другого приложения в качестве JIT-компилятора / переводчика?
Предоставляет ли JetBrains MPS JIT-компилятор, который можно использовать в других приложениях? У нас есть устаревшее приложение со скриптовым языком. Поскольку этот язык сценариев очень сложен в использовании для наших клиентов, мы хотели бы предоставить им новый DSL.
Итак, вопрос: можем ли мы использовать Jetbrains MPS для разработки нашего DSL, а затем использовать MPS JITCompiler/Translator для преобразования его в Java или что-то еще после того, как пользователь написал свой скрипт в нашем программном обеспечении?
1 ответ
Если вы имеете в виду под JITCompiler/Translator, взять ваш DSL, генерировать из него Java, а затем запустить этот скомпилированный код Java, да, это возможно. Но это был бы дополнительный шаг преобразования, такой как: напишите код -> generate/compile -> run (результирующий jar).
Если вы имеете в виду интерпретацию модели без предварительного шага преобразования, то ответ - не из коробки. Мы построили каркас интерпретатора для MPS и пока построили с ним два интерпретатора. Один для Java и один для C. Хотя внимание здесь сосредоточено не на производительности. Мы используем его для небольших расчетов в формулах или REPL как вещи. В настоящее время он находится в стадии разработки, но работает довольно хорошо. Вы можете найти здесь переводчика и найти дополнительную информацию и где искать. В качестве среднесрочного проекта мы могли бы захотеть интегрировать это определение интерпретатора с компилятором Graal, который тогда был бы гораздо больше JITCompiler, чем просто интерпретатором.