binaryExpression method

Parser<Expression> binaryExpression()

Implementation

Parser<Expression> binaryExpression() =>
    token.plusSeparated(binaryOperation()).map((sl) {
      final elements = sl.elements;
      final separators = sl.separators;

      // Left-associative chaining
      Expression left = elements.first;
      for (int i = 0; i < separators.length; i++) {
        final op = separators[i];
        final right = elements[i + 1];
        left = BinaryExpression(op, left, right)
          ..start = left.start
          ..end = right.end;
      }

      return left;
    });