Beispiel #1
0
  @Override
  public TypeResult typecheck(TypeEnv E) throws TypeError {
    TypeResult l_type = l.typecheck(E);
    Substitution sub = l_type.s;
    sub = sub.apply(l_type.t).unify(Type.BOOL).compose(sub);

    TypeResult r_type = r.typecheck(sub.compose(E));
    sub = r_type.s.compose(sub);
    sub = sub.apply(r_type.t).unify(Type.BOOL).compose(sub);
    return TypeResult.of(sub, Type.BOOL);
  }