【问题标题】:Location undefined for certain cases?某些情况下的位置未定义?
【发布时间】:2015-08-10 13:35:12
【问题描述】:

假设我们有一个函数可以提取至少包含一个语句的行的行号。我们对大多数情况进行访问

data Statement

lang::java::m3::AST:

set[int] getStatLineNrs (Declaration d) {
  set[int] s = {};
  top-down visit(d) {
    case m:\enum(_,_,_,_)       : {s += {m@\src.begin.line}; }
    case m:\enumConstant(_,_,_) : {s += {m@\src.begin.line}; }
    ...
    //the following case gives: NoSuchAnnotation("src")
    case m:\variables(_,_)      : {s += {m@\src.begin.line}; } 
    ...
  }
  return s
}

这几乎适用于所有情况,但对于一种情况,我们会收到一条错误消息NoSuchAnnotation("src")

为什么 m@\src 未定义 case m:\variables(_,_) 案例?

【问题讨论】:

    标签: rascal


    【解决方案1】:

    一般来说,注解始终是一个可能不存在的可选字段。

    特别是在这种情况下,java ast 的注释丢失可能是从 Eclipse java 编译器 AST 到 Rascal AST 表示的转换中的一个小错误。

    【讨论】:

      【解决方案2】:

      PS。 \package(_) 的案例也没有 \src 注释,但我已经设法解决它。

      【讨论】:

        猜你喜欢
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 2020-06-20
        • 2013-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多