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();を取得し、誰もが知っているしましょうか?

たとえば、foo()の開始点がbar.foo()であることがわかっているので、System.Out.Println(n.getParent().toString());を入力すると、bar.foo()が印刷されます。 barだけを印刷してはいけませんか?

あなたの洞察力を事前に感謝します。

答えて

0

表示されている動作が必要です。この例では

foo.bar 

barSimpleNameであり、その親がfoobarの両方が含まれていQualifiedNameです。したがって、親ノードには複数のASTノードが含まれ、toStringを呼び出すと、このノードのすべての子がプリントアウトされます。

+0

ありがとうございました。それで、修飾された名前にアクセスする方法はありますか? – fabricemarcelin

+0

修飾名は "foo.bar"です。私はあなたが "バー"を与えられたときに "foo"だけにアクセスするように求めていると思います。答えは「はい」です。 "bar"で始める場合は、その親を取得する必要があります。親はQualifiedName型です。次に、 "getQualifier()"を呼び出す必要があります。 "foo.bar.baz.bop"の大文字小文字を処理するには、これを再帰的に呼び出す必要があります。 –

+0

あなたの洞察をいただきありがとうございます。 getQualifierは本当に役に立ちました。 ASTNode n = node.getCoveredNode()。getParent(); if(n instanceof Expression){ 式exp =(式)n; if(exp instanceof MethodInvocation){ MethodInvocation m =(MethodInvocation)exp; System.out.println(Signature.getQualifier(m.toString())); }} – fabricemarcelin

関連する問題