public Type type_check(Table<Type> t_env,Table<Dec> v_env,boolean in_loop,ErrorList e){
		/* 1.check the predicate expr, which must be integer */
		Type num_type = e1.type_check(t_env, v_env, false, e);
		if(!(num_type.actual() instanceof INT)){
			e.add_error("Type of while predicate should be integer", e1.line, e1.column, "typing");
		}
		/* 2.check the rest */
		Type t2 = e2.type_check(t_env, v_env, true, e);
		if(!(t2.actual() instanceof VOID)){
			e.add_error("Type of while result is not void", line, column, "typing");
		}
		the_type = Type.THE_VOID;
		return the_type;
	}