Получите абстрактное синтаксическое дерево для метода Java с использованием JDT Eclipse - PullRequest
0 голосов
/ 01 октября 2018

Я работаю над проектом, который должен использовать Eclipse JDT для синтаксического анализа методов Java и создания для них абстрактного синтаксического дерева. Я написал следующий код:

String method ="\n"+
    "   public void sayHello() {\n"+
    "   System.out.println(\"Hello \"+name+\"!\");\n"+
    "   }\n";
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(method.toCharArray());
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);
CompilationUnit unit = (CompilationUnit)parser.createAST(null);

Этот фрагмент просто создает AST, но я получаюзастрял !!Я хотел бы посетить AST любого метода Java и распечатать его путь.Могу ли я получить печать AST для Java-метода?

1 Ответ

0 голосов
/ 01 октября 2018

Eclipse AST (как и большинство AST на самом деле) широко использует шаблон посетителя.

Таким образом, с вашей точки зрения все, что вам нужно сделать, - это создать экземпляр посетителя и заставить его посетить модуль компиляции.Затем он будет автоматически перемещаться по полям, методам, аннотациям ...

Для ваших конкретных задач, я думаю, вы можете начать со следующего кода:

unit.accept(new ASTVisitor() {

    @Override
    public boolean visit(MethodDeclaration node) {
        Type ownerTypeNode = (Type) node.getParent();
        System.out.println("Found method " + node.getName().getFullyQualifiedName() " + " in type " + ownerTypeNode.getName().getFullyQualifiedName());
    }
});
...