@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(parsers.length); for (Parser parser : parsers) { Result result = parser.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } return current.success(elements); }
@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(parsers.length); for (Parser parser : parsers) { Result result = parser.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } return current.success(elements); }
@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(); while (elements.size() < min) { Result result = delegate.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } while (max == UNBOUNDED || elements.size() < max) { Result result = delegate.parseOn(current); if (result.isFailure()) { return current.success(elements); } elements.add(result.get()); current = result; } return current.success(elements); }
@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(); while (elements.size() < min) { Result result = delegate.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } while (max == UNBOUNDED || elements.size() < max) { Result result = delegate.parseOn(current); if (result.isFailure()) { return current.success(elements); } elements.add(result.get()); current = result; } return current.success(elements); }
@Override public Result parseOn(Context context) { Result result = delegate.parseOn(context); if (result.isFailure()) { return context.success(null); } else { return context.failure(message); } }
@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(); while (elements.size() < min) { Result result = delegate.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } while (true) { Result stop = limit.parseOn(current); if (stop.isSuccess()) { return current.success(elements); } else { if (max != UNBOUNDED && elements.size() >= max) { return stop; } Result result = delegate.parseOn(current); if (result.isFailure()) { return stop; } elements.add(result.get()); current = result; } } }
@Override public Result parseOn(Context context) { Result result = delegate.parseOn(context); if (result.isFailure()) { return context.success(null); } else { return context.failure(message); } }
@Override public Result parseOn(Context context) { Result result = delegate.parseOn(context); if (result.isFailure()) { return result; } if (result.getPosition() == result.getBuffer().length()) { return result; } return result.failure(message, result.getPosition()); }
@Override public Result parseOn(Context context) { Context current = context; List<Object> elements = new ArrayList<>(); while (elements.size() < min) { Result result = delegate.parseOn(current); if (result.isFailure()) { return result; } elements.add(result.get()); current = result; } while (true) { Result stop = limit.parseOn(current); if (stop.isSuccess()) { return current.success(elements); } else { if (max != UNBOUNDED && elements.size() >= max) { return stop; } Result result = delegate.parseOn(current); if (result.isFailure()) { return stop; } elements.add(result.get()); current = result; } } }
@Override public Result parseOn(Context context) { Result result = delegate.parseOn(context); if (result.isFailure()) { return result; } if (result.getPosition() == result.getBuffer().length()) { return result; } return result.failure(message, result.getPosition()); }
@Override public Result parseOn(Context context) { Result leftResult = consume(left, context); Result delegateResult = delegate.parseOn(leftResult); if (delegateResult.isFailure()) { return delegateResult; } Result rightResult = consume(right, delegateResult); return rightResult.success(delegateResult.get()); }
@Override public Result parseOn(Context context) { Result leftResult = consume(left, context); Result delegateResult = delegate.parseOn(leftResult); if (delegateResult.isFailure()) { return delegateResult; } Result rightResult = consume(right, delegateResult); return rightResult.success(delegateResult.get()); }