是否可以在另一个应用程序中使用 JetBrains MPS 或其中的一部分作为 JIT Compiler/Translator?
Is it possible to use JetBrains MPS, or part of it, inside another application as JIT Compiler/Translator?
JetBrains MPS 是否提供可在其他应用程序中使用的 JIT 编译器?
我们有一个带有脚本语言的旧应用程序。因为这种脚本语言对我们的客户来说非常难用,所以我们想为他们提供一个新的 DSL。
所以问题是:我们能否使用 Jetbrains MPS 设计我们的 DSL,然后在用户在我们的软件中编写脚本后使用 MPS JITCompiler/Translator 将其转换为 Java 或其他任何内容?
如果您的意思是 JITCompiler/Translator,让您的 DSL 从中生成 Java,然后 运行 编译 java 代码,是的,这是可能的。但这将是一个额外的转换步骤,例如:编写代码 -> generate/compile -> 运行(生成的 jar)。
如果您的意思是在不先执行转换步骤的情况下解释模型,那么答案是,并非开箱即用。到目前为止,我们已经为 MPS 构建了一个解释器框架,并用它构建了两个解释器。一个用于 Java,一个用于 C。尽管重点不在于性能。我们将它用于公式或 REPL 之类的小型计算。它目前正在进行中,但工作得很好。您可以查看 here for Interpreter and find some more information and where to look. As a midterm project we might want to integrate this interpreter definition with the Graal 编译器,它更像是一个 JITCompiler 而不是一个解释器。
JetBrains MPS 是否提供可在其他应用程序中使用的 JIT 编译器? 我们有一个带有脚本语言的旧应用程序。因为这种脚本语言对我们的客户来说非常难用,所以我们想为他们提供一个新的 DSL。
所以问题是:我们能否使用 Jetbrains MPS 设计我们的 DSL,然后在用户在我们的软件中编写脚本后使用 MPS JITCompiler/Translator 将其转换为 Java 或其他任何内容?
如果您的意思是 JITCompiler/Translator,让您的 DSL 从中生成 Java,然后 运行 编译 java 代码,是的,这是可能的。但这将是一个额外的转换步骤,例如:编写代码 -> generate/compile -> 运行(生成的 jar)。
如果您的意思是在不先执行转换步骤的情况下解释模型,那么答案是,并非开箱即用。到目前为止,我们已经为 MPS 构建了一个解释器框架,并用它构建了两个解释器。一个用于 Java,一个用于 C。尽管重点不在于性能。我们将它用于公式或 REPL 之类的小型计算。它目前正在进行中,但工作得很好。您可以查看 here for Interpreter and find some more information and where to look. As a midterm project we might want to integrate this interpreter definition with the Graal 编译器,它更像是一个 JITCompiler 而不是一个解释器。