Scalaを解析して抽象構文木(AST)を作成するScalaライブラリはありますか?
理想的には、Scalaライブラリに興味があります。プランBはJavaライブラリになります。
(私はScala構文の要約からEBNFを活用できることを知っています。)
Scalaを解析して抽象構文木(AST)を作成するScalaライブラリはありますか?
理想的には、Scalaライブラリに興味があります。プランBはJavaライブラリになります。
(私はScala構文の要約からEBNFを活用できることを知っています。)
ASTにアクセスする最良の方法は、コンパイラプラグインを使用することだと思います。深く潜る前に、ソフトイントロダクションを読む必要があります。
いくつかの既存のパーサー:
PsiBuilder
仕様の EBNF を使用する場合は注意してください。
「付録とインライン文法の間の不一致、および scalac によってコンパイルされた (および scala ソースで利用された) 言語と文法によって要求された言語の間の不一致」 - Scala Trac バグ #1826。
文法だけから Scala の AST を構築することはできません。考慮すべき暗黙があり、それらを考慮するために、考慮すべき型推論があります。
ただし、コンパイラ自体を呼び出すことはできます。結局のところ、これは単なる jar ファイルです。特に、Scala 2.8 には、他のプログラムが引っかかるためのかなりの数のフックがあります。これは、Scala 用の Eclipse プラグインがそのような方法でコンパイラーを活用できるようにするために、これを正確に行っている Miles Sabin の作業です。
Scala Tools メーリング リストにアクセスして、そこにいる人々と連絡を取ることをお勧めします。
これは、コンパイラ コミッターの 1 人によるプロジェクトですhttp://github.com/paulp/scala-lang-combinators
純粋な scala ソリューションについてはわかりませんが、プラン B を実装する必要がある場合は、ANTLRまたはRatsをチェックすることから始めることができます。