增加位置的偏移量并单击位置

时间:2014-12-06 15:04:30

标签: rascal

我在点击位置时遇到了问题。我所做的是从具有函数的方法创建AST:

getMethodASTEclipse(method, model=projectModel);

其中method只是

的一个实例
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);

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

它的形式如下:

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

我还注意到,在打印每个位置后,偏移量会大幅增加。

如何将其点击到正确的位置?我认为它必须对偏移和位置的形式做一些事情。我试着使用这个方法:

resolveJava(loc l); 
来自Registry类的

但是也没有用,并试图查找| loc定义的声明但是那里也没有。

提前致谢。

1 个答案:

答案 0 :(得分:0)

位置无法点击的原因是因为无法解析这些位置。问题是createAstFromFile(_,_)仅适用于具有projectfile方案的地理位置。

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

我们会考虑制作它,以便可以将位置与其他方案一起使用。