Microsoft Roslyn-サービスとしてのコンパイラは、.NETスタックへの優れた追加機能です。私はJavaの世界で似たようなものを探していました。Scalaにはコンパイラプラグインの形で似たようなものがあると思いますが、それがどれほど柔軟かはわかりません。
私がJavaの世界で解決しようとしている問題は、ユーザーがカスタム構文を記述できるようにすることであり、内部的には別の構文に再配線されます。
Microsoft Roslyn-サービスとしてのコンパイラは、.NETスタックへの優れた追加機能です。私はJavaの世界で似たようなものを探していました。Scalaにはコンパイラプラグインの形で似たようなものがあると思いますが、それがどれほど柔軟かはわかりません。
私がJavaの世界で解決しようとしている問題は、ユーザーがカスタム構文を記述できるようにすることであり、内部的には別の構文に再配線されます。
私は Microsoft Roslyn を使ったことがないので、それが何を提供するのかよくわかりません。しかし、実行時にクラスをコンパイルできるようにしたい場合は、Java SE 6 以降の標準 Java の一部であるJavaCompiler APIを調べる必要があります。それがニーズに合わない場合は、おそらくEclipse の ASTParser。
Scala は、次のリリース (2.10) でマクロをサポートする予定です。すでにマイルストーン リリースを試して、どのように機能するかを確認できます。基本的に、コンパイル時に AST を変更できます。したがって、Scala の任意の部分を別の scala の部分に書き直すことができます。例とドキュメントについては、 scalamacroの Web サイトを確認してください。
実行時に Scala ソースをコンパイルする場合Eval
は、twitter/utilプロジェクトで検索できます。