1

プロジェクトでASTVisitorを実行する方法を学んでいるので、そのための包括的なAPIを備えたEclipseを使い始めました。

パックされたサンプルプロジェクトを次のWebサイトからダウンロードしました: http ://www.eclipse.org/articles/article.php?file = Article-JavaCodeManipulation_AST / index.html

しかし、コードにはmain()メソッドがないことに気付きましたが、プログラムを実行することはできます。誰もが理由を知っていますか?[qn 1]

ただし、コードはコンパイルされすぎて機能しないようであり、基本的なことを行うための手順はあまり明確ではありません。

だから私もこれを見続けました: http ://www.vogella.de/articles/EclipsePreferences/article.html

execute(ExecutionEvent event)を呼び出すためのメインメソッドを作成する方法を知っている人はいますか?-サンプルコードスニペットを提供しますか?[qn2]ExecutionEventの使い方がわかりません...

「スレッド"main"java.lang.IllegalStateExceptionの例外:ワークスペースが閉じています。」が発生し続けました。実行イベントのパラメーターを削除したり(extends部分も削除する必要があります)、メインでコードの一部を使用したりしても。の「ResourcesPlugin」と関係があるようですIWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot()。誰もが理由を知っていますか?[qn 3]

4

2 に答える 2

3

ASTVisitor を使用するためにプラグインを作成する必要があると断言できるほど自信はありませんが、それが最も簡単な方法です。ボタンまたは押してコードの実行を開始できるものを作成する簡単なプラグイン コードを見つけます。プラグイン開発環境には、これを行うサンプル プラグインがあります (これがない場合は、適切なバージョンの Eclipse をダウンロードしてください)。

プラグイン プロジェクトの作成:

プラグイン プロジェクトを作成するには、パッケージ エクスプローラーで右クリックするか、ファイル メニューを開きます。一番上の項目「新規...」を選択すると、「その他...」を選択するサブメニューが開きます。「新規」ダイアログが開きます。「プラグイン開発」フォルダを開き、「プラグインプロジェクト」を選択します。

代替テキスト

[次へ] を数回クリックし、次のページが表示されるまで必要な情報を入力します。

代替テキスト

ここで、最初のサンプル「Hello World」は、第 2 レベルの日食でメニューを作成します。新しいプロジェクトの plugin.xml に移動して、第 2 レベルの Eclipse を実行し、タブの概要に移動します。

次のようなページが表示されます。

代替テキスト

「Eclipse アプリケーションを起動する」をクリックすると、別の Eclipse が開始され、新しいプラグインが起動して実行されます。この第 2 レベルの日食のサンプル アクション ボタンをクリックして、甘いアクションを確認してください。

これで、アクション コードを必要なものに置き換えることができます。この場合、訪問操作を作成して開始します。

ASTVisitor を作成するには:

独自のコードを追加できるように、ASTVisitor を拡張するクラスを作成します。

  • preVisit(ASTNode) は AST の事前順序走査を行います
  • postVisit(ASTNode) は AST の postorder トラバーサルを行います
  • visit(...) は特定のノードを検査します

次のようなものを訪問者に追加します。

private void startVisit(IFile file) {
    ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file);

    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setResolveBindings(true);
    parser.setSource(icu);

    CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    cu.accept(this);
}

ここで、訪問者を作成してこの関数を呼び出すボタン プレス アクションにコードを追加します。

MyVisitor mv = new MyVisitor();
mv.startVisit(...);

IFile を取得するには (ここではプラグインである必要があります。そうしないと、報告したエラーが表示されます) :

ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);

省略記号を適切なプロジェクト名とファイル名 (文字列) に置き換えます。

ボタンを押すたびにファイルが訪問され、入力したコードが適切なタイミングで実行されます (訪問前または訪問後にすべての ASTNode を出力するだけで非常に洞察に満ちています)。

于 2009-09-03T11:49:17.243 に答える
1

プロジェクトは、main() メソッドを持つ単純な Java プロジェクトではなく、Eclipse プラグイン プロジェクトである必要があります。

ここに提案があります: AST Viewツールを見てください。これは、AST を検査するために設計されたツールです。ソースを操作し、実行し、デバッグし、ブレークポイントを配置し、コードを変更し、それがどのように機能するかを確認します。

また、すべての JDT ソースがあることを確認してください。ASTVisitors の例はたくさんあります (内部メソッドを使用しないように注意してください)。

于 2009-09-03T10:09:15.207 に答える