The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use Pegex::Parser;

{
    package G;
    use base 'Pegex::Grammar';

    sub rule_a {
        my ($self, $parser, $input) = @_;
        return;
    }

    sub rule_b {
        my ($self, $parser, $buffer, $pos) = @_;
        return $parser->match_rule(3, ['aaa', $$buffer]);
    }

    use constant text => <<'...';
top: a | b
...
}

{
    package R;
    use base 'Pegex::Tree';
    sub got_b {
        my ($self, $got) = @_;
        [reverse @$got];
    }
}

my $parser = Pegex::Parser->new(
    grammar => G->new,
    receiver => R->new,
    # debug => 1,
);

my $result = $parser->parse('xyz');

is scalar(@$result), 2, 'Got array of size 2';
is $result->[0], 'xyz', 'xyz is first';
is $result->[1], 'aaa', 'aaa is second';

done_testing;