Возможно ли в Eclipse JDT Java-парсере обходить узел AST за узлом без использования посетителей? - PullRequest
0 голосов
/ 04 июля 2018

Стандартный способ доступа к информации об узлах через Eclipse JDT API - это шаблон Visitor. Например:

unit.accept(new MyVisitorAdapter<Object>() {
  @Override public void visit(MethodCallExpr node, Object arg) {
    System.out.println("found method call: " + node.toString());
  }
}, null);

В этом случае, чтобы посетить узел, мне нужно указать, какой тип узла мне интересен (MethodCallExpr для этого случая). Но чтобы перейти к общему доступу к информации об узлах, я должен переопределить весь метод visit(), потенциально перечисляя все виды узлов, доступные в Eclipse JDT API. Полный пример того, где это делается, находится здесь .

В этом контексте, хотя и не совсем в той же области охвата кода, я хотел бы иметь контроль над обходом, выполняемым Eclipse JDT Java Parser. Я хотел бы пройтись по узлам AST, потенциально проходя мимо всех них, выбирая то, что я хочу, но не ограничиваясь типом, как показано в коде выше. Является ли это возможным? Есть ли стандартный способ сделать это через Eclipse JDT API?

1 Ответ

0 голосов
/ 05 июля 2018

Если вас не интересуют типы узлов, переопределите любой из ASTVisitor.preVisit(ASTNode), ASTVisitor.preVisit2(ASTNode), ASTVisitor.postVisit(ASTNode).

...