equalityExpression method

  1. @override
Parser equalityExpression()
override

Implementation

@override
Parser equalityExpression() => super.equalityExpression().map((c) {
      Expression left = c[0];
      if (c[1] == null) {
        return left;
      }
      var item = c[1];
      var right = item[1];
      if (item[0].value == '==') {
        if ((left is Expression<Number>) && (right is Expression<Number>)) {
          left = EqualNumberExpression(left, right);
        } else if ((left is Expression<bool>) &&
            (right is Expression<bool>)) {
          left = EqualBoolExpression(left, right);
        } else if ((left is Expression<String>) &&
            (right is Expression<String>)) {
          left = EqualStringExpression(left, right);
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = EqualDateTimeExpression(left, right);
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = EqualDurationExpression(left, right);
        }
      } else if (item[0].value == '!=') {
        if ((left is Expression<Number>) && (right is Expression<Number>)) {
          left = NegateBoolExpression(EqualNumberExpression(left, right));
        } else if ((left is Expression<bool>) &&
            (right is Expression<bool>)) {
          left = NegateBoolExpression(EqualBoolExpression(left, right));
        } else if ((left is Expression<String>) &&
            (right is Expression<String>)) {
          left = NegateBoolExpression(EqualStringExpression(left, right));
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = NegateBoolExpression(EqualDateTimeExpression(left, right));
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = NegateBoolExpression(EqualDurationExpression(left, right));
        } else {
          throw UnknownExpressionTypeException(
              'Unknown equality expression type');
        }
      }
      return left;
    });