Given a start position, I can find a node by passing it to org.eclipse.jdt.core.dom.NodeFinder class.
NodeFinder node = new NodeFinder(root, m.getSourceStart(), m.getSourceEnd() - m.getSourceStart() + 1);
ASTNode n = node.getCoveredNode();
Let assume that this node has a parent and get the node’s parent n.getParent(); does anyone know why it prints out the parent node and the node?
For instance we know the starting point of foo() in bar.foo() so if I do System.Out.Println(n.getParent().toString()); it prints bar.foo(). Shouldn’t it print only bar?
Thanks in advance for your insight.
The behavior you are seeing is expected.
In this example:
baris aSimpleNameand its parent is aQualifiedNamethat contains bothfooandbar. So the parent node will contain more than one AST node and callingtoStringon it will print out all of this node’s children.