【问题标题】:Incrementing offset of Location and clicking on location增加位置的偏移量并点击位置
【发布时间】:2014-12-06 15:04:30
【问题描述】:

我在点击位置时遇到问题。我所做的是从具有函数的方法创建 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 定义的声明,但也不存在。

提前致谢。

【问题讨论】:

    标签: rascal


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 2018-03-01
      相关资源
      最近更新 更多