=begin pod

=TITLE class Match

    class Match is Capture is Cool { ... }

C<Match> objects are the result of a successful regex match. They store
a reference to the original string (C<.orig>), positional and
named captures, the positions of the start and end of the match 
in the original string, and a payload referred to as I<AST> 
(abstract syntax tree), which can be used to build data structures 
from complex regexes and gramamrs.

Submatches are also C<Match> objects (or lists of C<Match> objects,
if the corresponding regex was quantified), so each match object
can be seen as the root of a tree of match objects.

=head1 Methods

=head2 orig

Returns the original string that the regex was matched against.

=head2 from

Returns the index of the starting position of the match.

=head2 to

Returns the index of the end position of the match.

=head2 ast

Returns the AST (ie payload).

=head2 Str

Returns the matched text.

=head2 caps

Returns a list of pairs, with the index or submatch name as key and
the submatches as values. The list is ordered by starting position
of the submatches.

=head2 chunks

Returns a list of pairs, with the index or submatch name as key and
the submatches as values. The list is ordered by starting position
of the submatches.

Those parts of the string that were not matched by submatches are
interleaved with the other pairs, with the string C<~> as key.

=head2 list

Returns a list of positional submatches.

=head2 hash

Returns a hash of named submatches.

=head2 prematch

Returns the part of the original string leading up to the match.

=head2 postmatch

Returns the part of the original string following the match.

=head2 make

    method make(Match:D: Mu $ast)

Sets the AST to C<$ast>, and returns it.

=end pod
