【问题标题】:Offset in method location方法位置的偏移量
【发布时间】:2016-12-30 11:07:19
【问题描述】:

我有一个位置 |project://SmallSQL/src/smallsql/database/SQLParser.java|(10257,10257,<305,60>,<371,5>).

但是,由于final class SQLParser { 行似乎位于第 39 行,因此偏移量为 38,这意味着第 305 行实际上是指第 343 行(以及 371 到 309)。我希望看到这个偏移量反映在位置上。这可能吗?如果可以,怎么做?如果没有,我如何自己计算偏移量?

此外,起始行也可以在其他位置,例如当 doc 出现在课程之前时。例如|project://SmallSQL/src/smallsql/database/ExpressionFunctionBitLen.java|(302,302,<11,25>,<13,2>)

附录:我使用的位置是通过转换建立的,即|java+class:///smallqsl/database/SQLParser|(10257,10257,<305,60>,<371,5>) 被转换为 |project://SmallSQL/src/smallsql/database/SQLParser.java|(10257,10257,<305,60>,<371,5>).

【问题讨论】:

    标签: rascal


    【解决方案1】:

    如果您使用 IO 模块中的resolveLocation,偏移量将相应地自动正确更改。

    您也可以自己解决问题,方法是直接在 M3@declarations 表中查找正确的位置。

    resolvedLoc = myM3Model@declarations[myLogicalLocation];
    

    【讨论】:

    • 哦,对!您必须首先使用 registerProject 注册整个 m3 模型,解析器才能工作。这有帮助吗?
    • 感谢您提供此信息。但是,resolveLocation(|java+class:///smallqsl/database/SQLParser|(10257,10257,<305,60>,<371,5>)) 给出错误
    • 我没有使用 registerProject。我在哪里可以找到它?我本来希望它在 lang::java::jdt::Project 中。
    • 它在analysis::m3::Registry。我会试一试的。
    • 是的。我相信它是由 createm3fromproject 调用的副作用
    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2018-03-01
    • 2017-09-18
    • 2016-08-27
    相关资源
    最近更新 更多