5

Microsoft Roslyn - 编译器即服务是 .NET 堆栈的一个很好的补充;我在 Java 世界中寻找类似的东西。我相信 Scala 有类似的编译器插件形式,但不确定它有多灵活。

我在 Java 世界中试图解决的问题是允许用户编写一些自定义语法,并且在内部它会被重新连接成不同的语法。

4

2 回答 2

3

我从未使用过 Microsoft Roslyn,所以我不确定它提供了什么。但是,如果您希望能够在运行时编译类,您应该查看自 Java SE 6 以来一直是标准 Java 一部分的JavaCompiler API。如果这不符合您的需求,您可能应该查看Eclipse 的 ASTParser

于 2012-09-09T12:37:16.150 回答
2

Scala 将在下一个版本 (2.10) 中支持宏。您已经可以使用里程碑版本来检查它是如何工作的。基本上,它们允许在编译时修改 AST。因此,您可以在另一块 Scala 中重写任何一块 Scala。查看scalamacros网站以获取示例和文档。

如果你想在运行时编译 Scala 源码,你可以Evaltwitter/util项目中寻找。

于 2012-09-09T14:20:57.647 回答