Стандартный способ доступа к информации об узлах через 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?