假设我们有一个函数可以提取包含至少一个语句的行的行号。
大多数情况下我们都会访问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(_,_)
?
答案 0 :(得分:0)
通常,注释始终是可选字段,可能不存在。
特别是对于这种情况,java ast的缺失注释可能是从Eclipse java编译器AST到Rascal AST表示的转换中的一个小错误。
答案 1 :(得分:0)
PS。案例\package(_)
也没有\ src注释,但我已经设法解决它。