为什么打印节点的父节点会返回父节点+子节点?

发布于 2025-01-07 17:32:30 字数 516 浏览 1 评论 0原文

给定起始位置,我可以通过将节点传递给 org.eclipse.jdt.core.dom.NodeFinder 类来查找节点。

NodeFinder node = new NodeFinder(root, m.getSourceStart(), m.getSourceEnd() - m.getSourceStart() + 1);
ASTNode n = node.getCoveredNode();

假设这个节点有一个父节点并获取该节点的父节点 n.getParent(); 有谁知道为什么它打印出父节点和节点?

例如,我们知道 bar.foo()foo() 的起点,因此如果我执行 System.Out.Println(n.getParent(). toString()); 它打印 bar.foo()。它不应该只打印 bar 吗?

预先感谢您的见解。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拔了角的鹿 2025-01-14 17:32:30

您所看到的行为是预期的。

在此示例中:

foo.bar

bar 是一个 SimpleName,其父级是一个 QualifiedName,其中包含 foo酒吧。因此父节点将包含多个 AST 节点,对其调用 toString 将打印出该节点的所有子节点。

The behavior you are seeing is expected.

In this example:

foo.bar

bar is a SimpleName and its parent is a QualifiedName that contains both foo and bar. So the parent node will contain more than one AST node and calling toString on it will print out all of this node's children.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文