某些情况下位置未定义?

时间:2015-08-10 13:35:13

标签: rascal

假设我们有一个函数可以提取包含至少一个语句的行的行号。

大多数情况下我们都会访问
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(_,_)

2 个答案:

答案 0 :(得分:0)

通常,注释始终是可选字段,可能不存在。

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

答案 1 :(得分:0)

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