web-dev-qa-db-ja.com

Javaソースコードパーサー/ジェネレーター

次のようなツールが必要です。

  • Javaソースコードを便利に解析し、指定された要素に簡単にアクセスできます。

  • ソースコードファイルを簡単に生成し、データ構造をコードに簡単に変換します

良いヒント、ライブラリ、フレームワーク、ツールはありますか?ご協力ありがとう御座います。

21
Jarek

Java 6なので、コンパイラにはJDKに含まれているAPIがあります。これにより、 javax.lang.modelを介してJavaパーサーの結果にアクセスできます。 API。同じ機能がJDK5に Mirror API の形式で存在していました。優れた入門記事 here があります。

私が見た中で最高のコード生成ツールは CodeModel です。非常にシンプルなAPIを備えており、一度に複数のJavaソースファイルを生成できます。

19
Daniel

既存のソースコードを解析する必要がある場合は、 JavaParserを使用してください。これにより、訪問者ベースでASTにアクセスできます。新しいコードを書くことはできますが、多くのことが面倒です(他のクラスを参照するなど)

ソースコードを生成する必要がある場合は、 CodeModelを使用します。これにより、クラス、パッケージ、メソッドなどをプログラムで作成できます。使いやすい。ただし、既存のコードをインポートできるとは思いません。

どちらもそれぞれのドメインでかなり素晴らしいです。

19

私たちの DMS Software Reengineering Toolkit とその Javaフロントエンド はこれを行うことができます。これらは、カスタムアナライザーとコードジェネレーターの構築を可能にするように設計されています。

DMSは、一般的な構文解析、抽象構文ツリー(コメント付き)、シンボルテーブルの構築、ツリーナビゲーション/検査/変更機能、および変更されたツリーから完全なソースコードを再生成する機能を提供します。追加の機能には、ソースからソースへの変換ルール(「この構文が表示された場合は、その構文に置き換えてください」)、パターン(サブツリーの構築または認識に使用)、属性文法エバリュエーター、制御およびデータフロー分析、および呼び出しが含まれます。グラフの構築。 Javaフロントエンドは、DMSがJava 1.4-1.6、1.7が近くにある場合にこれらすべてを実行するように特化しています。

(2016年5月編集:処理Java 1.8)

DMSは、スケールを処理するようにも設計されています。DMSは、多くのコンパイルユニット(ソースファイル)を同時に処理するためによく使用され、ファイルの境界を越えた分析と変換を可能にします。また、同時に複数の言語を処理することもできます。 DMSには さまざまな言語のフロントエンド があります。

1
Ira Baxter

チェックアウト Antlr 。その例の1つは、Java文法です。

0
Nicola Musatti