编译器作为Java中的服务

时间:2012-09-09 12:28:48

标签: java scala compiler-construction

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

我想在Java世界中解决的问题是允许用户编写一些自定义语法,并在内部将其重新连接到不同的语法。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

如果要在运行时编译Scala源代码,可以在twitter/util项目中查找Eval