Microsoft Roslyn - 编译器即服务是 .NET 堆栈的一个很好的补充;我一直在 Java 世界中寻找类似的东西。我相信 Scala 有类似的编译器插件形式,但不确定它有多灵活。
我在 Java 世界中试图解决的问题是允许用户编写一些自定义语法,并且在内部它将被重新连接为不同的语法。
我从未使用过 Microsoft Roslyn,所以我不确定它提供了什么。但是,如果您想要的是能够在运行时编译类,您应该查看 JavaCompiler API,它自 Java SE 6 以来一直是标准 Java 的一部分。如果这不符合您的需求,您可能应该采取看看 Eclipse 的 ASTParser。
Scala 将在下一版本(2.10)中支持宏。您已经可以使用里程碑版本来检查它是如何工作的。基本上,它们允许在编译时修改 AST。所以你可以用另一个 Scala 片段重写 Scala 的任何片段。检查 scalamacros 网站以获取示例和文档。
如果你想在运行时编译Scala源代码,你可以在
twitter/util项目中查找
Eval
。