Package matchers
source code
Matchers form the basis of the library; they are used to define the grammar
and do the work of parsing the input.
A matcher is like a parser combinator - it takes a stream, matches content in
the stream, and returns a list of tokens and a new stream. However, matchers
are also coroutines that can be "recalled" to return alternative matches.
This gives backtracking.
Matchers are defined and implemented as both classes and functions. I have
used the same syntax (capitalized names) for both to keep the API uniform.
For more background, please see the manual.