コード例 #1
0
ファイル: Ge.java プロジェクト: q111111233/Basic-Java
  Val Eval(HashMap<String, Val> state) {
    // Make it work like a like list.
    ExpList t = expList;
    Val i = null;
    if (t != null) {
      i = t.exp.Eval(state);
      t = t.expList;
      if (i.getClass() == ErrVal.class) {
        return i;
      }
      if (i.getClass() == BoolVal.class) {
        return new ErrVal(">= operator cannot be applied to non-number: " + i.toString());
      }
    }

    while (t != null) {
      Val e = t.exp.Eval(state);

      Class eClass = e.getClass();
      Class iClass = i.getClass();

      if (i.getClass() == ErrVal.class) {
        return i;
      }

      if (e.getClass() == BoolVal.class) {
        return new ErrVal(">= operator cannot be applied to non-number: " + e.toString());
      }

      if (iClass == IntVal.class && eClass == IntVal.class) {
        if (((IntVal) i).val <= ((IntVal) e).val) {
          return new BoolVal(false);
        }
      } else if (iClass == IntVal.class) // eClass == FloatVal.class
      {
        if (((IntVal) i).val <= ((FloatVal) e).val) {
          return new BoolVal(false);
        }
      } else // termClass == FloatVal.class
      {
        if (((FloatVal) i).val <= ((FloatVal) e).val) {
          return new BoolVal(false);
        }
      }
      t = t.expList;
      e = i;
    }
    return new BoolVal(true);
  }