0

場所をクリックする際に問題が発生しました。私がしていることは、関数を使用してメソッドから AST を作成することです。

getMethodASTEclipse(method, model=projectModel);

メソッドは単なるインスタンスです

methods(projectModel);

そのツリーにアクセスして、たとえばifステートメントを取得したい場合は、呼び出すことができます

case i: \if(_, _, _):println(i@src);

ソースが印刷され、それをクリックすると、Eclipse は適切な if ステートメントを使用して適切なクラスに移動します。フォームは次のようになります。

|project://MyProject/src/MyClass.java|(2836,143,<104,1>,<109,2>)

しかし、メソッドを使用してファイルから AST を取得すると、次のようになります。

createAstFromFile(class, true);

メソッドやファイルの代わりにクラスを提供することもできます。アクセスして同じ if ステートメントを取得して印刷することもできますが、フォームが異なり、クリックできません。なぜだめですか ?

その形式は次のようになります。

|java+class:///MyClass/src/MyClass|(17938,1105,<544,4>,<570,5>)

また、各位置が印刷された後にオフセットが大幅に増加していることにも気付きました。

正しい場所をクリックできるようにするにはどうすればよいですか? オフセットと場所の形で何かをしなければならないと思います。メソッドを使用しようとしました:

resolveJava(loc l); 

Registry クラスから取得しましたが、それも機能せず、|loc 定義の宣言を調べようとしましたが、それもありませんでした。

前もって感謝します。

4

1 に答える 1

0

場所をクリックできないのは、解決できないためです。問題は、またはスキームcreateAstFromFile(_,_)を持つ場所でのみ使用することを意図していたことです。projectfile

現時点ではdeclarations、モデルの注釈から物理的な位置を取得し、それを使用して AST を作成できます。

他のスキームでもロケーションを使用できるようにすることを検討します。

于 2014-12-06T16:19:06.690 に答える