any

Try each of provided parsers until one succeeds.

any
(
P...
)
if (
allSatisfy!(isParser, P)
)

Examples

import pry.atoms, pry.stream;
import std.range.primitives, std.conv, std.variant;
alias S = SimpleStream!string;
with(parsers!S) {
	auto digits = range!('0', '9').rep.map!(x => x.to!int);
	static assert(isParser!(typeof(digits)));
	auto parser = any(tk!'a', digits);
	S s = "10a";
	S.Error err;
	Algebraic!(dchar, int) value;
	assert(parser.parse(s, value, err));
	assert(value == 10);
	assert(parser.parse(s, value, err));
	assert(value == cast(dchar)'a');
	assert(s.empty);
}

Meta