seq

Apply multiple parsers one after another as a sequence.

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

Examples

import pry.atoms, pry.stream;
import std.range.primitives, std.typecons;
alias S = SimpleStream!string;
with(parsers!S) {
	auto elements = seq(tk!'a', range!('a', 'd'), tk!'c');
	S s = S("abc");
	Tuple!(dchar, dchar, dchar) val;
	S.Error err;
	assert(elements.parse(s, val, err));
	assert(s.empty);
	assert(val == tuple('a', 'b', 'c'));
	s = S("axc");
	assert(!elements.parse(s, val, err));
	assert(s.front == 'a');
	assert(err.location == 1);
}

Meta