这是我在Pattern matching AST nodes in Rascal
发布的问题的一些扩展我对switch语句如何查找模式进行了一些修改,但似乎没有任何模式匹配且默认模式没有执行!
代码:
private str synthesise_f(Core::AST::Exp exp) {
println("START");
switch (exp) {
case Exp e: str t(&T t0, &T t1) {
println("IN CASE");
}
default: println("!DEFAULT!");
}
println("END");
return ret;
}
输出为:
START
END
任何想法可能会发生在这里?我做错了吗?
谢谢!
答案 0 :(得分:1)
Rascal代码看起来很好所以我猜你的修改(在解释器的代码中?)干扰了隐藏的假设或在所述解释器中的优化。最好在github上发布一个pull请求,以便我们讨论它吗?很可能内部异常导致解释器跳过默认情况。