code: public final Parser<T> infixl(
        Parser<? extends BiFunction<? super T, ? super T, ? extends T>> operator) {
      BiFunction<BiFunction<? super T, ? super T, ? extends T>, T, Function<? super T, ? extends T>>
      rightToLeft = (op, r) -> l -> op.apply(l, r);
      return next(first ->
          Parsers.sequence(operator, this, rightToLeft)
              .many()
              .map(maps -> applyInfixOperators(first, maps)));
    }
docs: A {@link Parser} for left-associative infix operator. Runs {@code this} for the left operand, and then runs
  {@code operator} and {@code this} for the operator and the right operand for 0 or more times greedily.
  The {@link BiFunction} objects returned from {@code operator} are applied from left to right to the
  return values of {@code this}, if any. For example:
  {@code a + b + c + d} is evaluated as {@code (((a + b)+c)+d)}.
  
  <p> {@code p.infixl(op)} is equivalent to {@code p (op p)*} in EBNF.