relationalExpression method

  1. @override
Parser relationalExpression()
override

Implementation

@override
Parser relationalExpression() => super.relationalExpression().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 = LessThanNumberExpression(left, right);
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = LessThanDateTimeExpression(left, right);
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = LessThanDurationExpression(left, right);
        }
      } else if (item[0].value == '<=') {
        if ((left is Expression<Number>) && (right is Expression<Number>)) {
          left = LessThanOrEqualNumberExpression(left, right);
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = LessThanOrEqualDateTimeExpression(left, right);
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = LessThanOrEqualDurationExpression(left, right);
        }
      } else if (item[0].value == '>') {
        if ((left is Expression<Number>) && (right is Expression<Number>)) {
          left = LessThanNumberExpression(right, left);
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = LessThanDateTimeExpression(right, left);
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = LessThanDurationExpression(right, left);
        }
      } else if (item[0].value == '>=') {
        if ((left is Expression<Number>) && (right is Expression<Number>)) {
          left = LessThanOrEqualNumberExpression(right, left);
        } else if ((left is Expression<DateTime>) &&
            (right is Expression<DateTime>)) {
          left = LessThanOrEqualDateTimeExpression(right, left);
        } else if ((left is Expression<Duration>) &&
            (right is Expression<Duration>)) {
          left = LessThanOrEqualDurationExpression(right, left);
        }
      } else {
        throw UnknownExpressionTypeException(
            'Unknown relational expression type');
      }
      return left;
    });