特定のコードに対してプログラムで Eclipse 抽象構文ツリーにアクセスする例を教えてください。
たとえば、次の AST を取得します。
Class1.java
package parseable;
public class Class1 {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
特定のコードに対してプログラムで Eclipse 抽象構文ツリーにアクセスする例を教えてください。
たとえば、次の AST を取得します。
package parseable;
public class Class1 {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
それは正確な答えではありません。それはあなたにどこから始めるべきかを与えるかもしれません:
この質問で述べたように、
完全な例は、このeclipse コーナーの記事で入手できます。詳細については、eclipse ヘルプを参照してください。このプレゼンテーションのスライド 59では、ソース コードに変更を適用する方法を示しています。
// get an ICompilationUnit by some means
// you might drill down from an IJavaProject, for instance
ICompilationUnit iunit = ...
// create a new parser for the latest Java Language Spec
ASTParser parser = ASTParser.newParser(AST.JLS3);
// tell the parser you are going to pass it some code where the type level is a source file
// you might also just want to parse a block, or a method ("class body declaration"), etc
parser.setKind(ASTParser.K_COMPILATION_UNIT);
// set the source to be parsed to the ICompilationUnit
// we could also use a character array
parser.setSource(iunit);
// parse it.
// the output will be a CompilationUnit (also an ASTNode)
// the null is because we're not using a progress monitor
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
ICompilationUnit と CompilationUnit の違いに混乱しないでください。これは、彼らの創造的でない命名の結果に過ぎないようです。CompilationUnit は ASTNode の一種です。このコンテキストでの ICompilationUnit は、ファイル ハンドルに似ています。区別の詳細については、http ://wiki.eclipse.org/FAQ_How_do_I_manipulate_Java_code%3F を参照してください。