2014-12-06 52 views
0

我在点击位置时遇到了问题。我要做的就是从功能的方法创建AST:增加位置偏移量并点击位置

getMethodASTEclipse(method, model=projectModel); 

其中,方法仅仅是

methods(projectModel); 

一个实例当我访问该树,并希望得到例如如果报表一可以打电话

case i: \if(_, _, _):println([email protected]); 

来源将被打印,我可以点击它,日食会去正确的类与正确的if语句。形式是这样的:

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

但是,当我从方法文件得到AST:

createAstFromFile(class, true); 

,并给予instaed的方法的类,甚至一个文件我也可以访问它,得到相同的if语句并打印它,但它的形式是不同的,我不能点击它。为什么不 ?

它的形式如下:

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

我也注意到的是,偏移大量增加打印每个位置之后。

如何使它可以点击到正确的位置?我认为它必须对偏移量和位置的形式进行一些处理。我试图使用方法:

resolveJava(loc l); 

从注册表类,但没有任何工作,并试图在声明为查找|禄定义但没有在那里无论是。

在此先感谢。

回答

0

位置不可点击的原因是因为它们无法解析。问题是createAstFromFile(_,_)仅用于具有projectfile方案的位置。

现在,您可以从模型中的declarations注释中获取物理位置,并使用该注释创建AST。

我们将研究如何使它可以使用其他方案的位置。