私の知る限り、Java source-code to AST(Abstract Syntax Tree))を解析する唯一の方法は JavaコンパイラツリーAPI :com.Sun.source.tree
2つの質問があります。
おそらくtools.jarを取得して使用できます。 javacはオープンソースです なので、そのコードを取得できます(ライセンスを処理できると仮定)。 Antlr にはJavaの文法もあります。
2番目の質問に関しては、Sunの他に数十のJavaパーサーが利用可能です。ここに小さなサンプルがあります:
私の最善のアドバイスは、それぞれを試してみて、どれがあなたのニーズに最適かを確認することです。
私はEclipseのASTパーサーを使用しました。かなり良いことがわかりました(まあ、それはEclipseプラグインの一部だったので、それを使用する意味がありました)。参照 EclipseのASTParserを調べる 。
機能する、使いやすいJava Parser is ... JavaParser 。プロジェクトはすでに数年アクティブです。最初はGoogleコードでホストされていましたが、 GitHubで利用可能になりました: https://github.com/javaparser/javaparser
使い方はとても簡単で、依存関係の数は少ないです。 Mavenでも利用できます。
これは数年使用されているため、非常にうまく機能し、コメントも解析して、ASTを変更してコードを再生成することができます。
それが唯一の方法ではありません。
Javaフロントエンド をご覧ください。これは、フル機能のJava DMS Software Reengineering Toolkit)の上に構築されたパーサー です。Javaを解析します。 ASTを内部データ構造として構築します。
DMSのポイントは、多種多様な追加便利な機構(属性文法、シンボルテーブル、フロー分析、ASTアクセスと更新、およびソースからソースへの変換を含む操作)ASTを結果および/または変更されたソースコードに分析および変換します。 Javaパーサー(例:JavaCC + Java文法)、私見ですが、多くのことはできません。DMSを使用すると、多くの場合、そのような余分な機械をすべて自分で発明する必要はありません。
DMSが提供する追加の機構を本当に使用したくない場合は、 ツリーをXMLとしてダンプ します。
Jexast 、 JDTのASTParser から Eclipseに依存しない作業 (org.Eclipse.jdt.internal.compiler.**
に依存)。
まだ試していませんが、面白そうです。