public override Tuple<ABT.Env, ABT.Stmt> GetStmt(ABT.Env env) {
Tuple<ABT.Env, ABT.Stmt> r_body = this.Body.GetStmt(env);
env = r_body.Item1;
ABT.Stmt body = r_body.Item2;
ABT.Expr cond = this.Cond.GetExpr(env);
env = cond.Env;
if (!cond.Type.IsScalar) {
throw new InvalidOperationException("Error: conditional expression in while Loop must be scalar.");
}
return new Tuple<ABT.Env, ABT.Stmt>(env, new ABT.DoWhileStmt(body, cond));
}
}