# Do not edit this file - Generated by Perlito6 9.0
use v5;
use utf8;
use strict;
use warnings;
no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
use Perlito6::Perl5::Runtime;
use Perlito6::Perl5::Prelude;
our $MATCH = Perlito6::Match->new();
{
package GLOBAL;
sub new { shift; bless { @_ }, "GLOBAL" }
# use v6
;
{
package Perlito6::Grammar;
sub new { shift; bless { @_ }, "Perlito6::Grammar" }
use Perlito6::Expression;
use Perlito6::Grammar::Regex;
use Perlito6::Grammar::Control;
sub is_newline {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
((((chr(10) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((chr(13) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}))) {
(($MATCH)->{to} = $last_pos)
};
1
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((((chr(13) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((chr(10) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})))
}))
})));
$MATCH
};
sub not_newline {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((my $m2) = $grammar->is_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})
})));
$MATCH
};
sub ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->word($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
}))
})
})));
$MATCH
};
sub full_ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $pos1) = $MATCH->to());
(do {
(((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
})
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
})
})));
$MATCH
};
sub namespace_before_ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(((do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
(('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
})) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $pos1) = $MATCH->to());
(do {
((((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
(('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}))
})
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
})
})));
$MATCH
};
sub optional_namespace_before_ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
(((do {
((my $m2) = $grammar->namespace_before_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'namespace_before_ident'} = $m2);
1
}
else {
0
}
}) && ((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = ("".($MATCH->{'namespace_before_ident'})))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
((1 && (((do {
($MATCH->{capture} = (''))
}) || 1))))
}))
})));
$MATCH
};
sub pod_begin {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
(((do {
((my $m2) = $grammar->is_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (((chr(61) . 'end' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to())))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $m2) = $grammar->not_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $m2) = $grammar->not_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
})) && (do {
((my $m2) = $grammar->pod_begin($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})))
}))
})));
$MATCH
};
sub ws {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $pos1) = $MATCH->to());
(((do {
((((chr(35) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $m2) = $grammar->not_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->is_newline($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (do {
((my $pos1) = $MATCH->to());
(((do {
((((chr(61) . 'begin' eq substr($str, $MATCH->to(), 6)) && ((($MATCH)->{to} = (6 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->pod_begin($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((((chr(61) . 'for' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->pod_begin($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})))
})) || (do {
(($MATCH)->{to} = $pos1);
(1)
}))
})))
})) || (do {
(($MATCH)->{to} = $pos1);
((do {
((my $m2) = $grammar->space($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
}))
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
})
})));
$MATCH
};
sub opt_ws {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})
})));
$MATCH
};
sub opt_ws2 {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})
})));
$MATCH
};
sub opt_ws3 {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})
})));
$MATCH
};
sub grammar {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((((((((do {
((my $m2) = $grammar->full_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'full_ident'} = $m2);
1
}
else {
0
}
}) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})) && (do {
((my $m2) = $grammar->exp_stmts($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'exp_stmts'} = $m2);
1
}
else {
0
}
})) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (CompUnit->new(('name' => ${$MATCH->{'full_ident'}}), ('body' => ${$MATCH->{'exp_stmts'}}))))
}) || 1)))
})
})));
$MATCH
};
sub declarator {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(((do {
(('my' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
(((('state' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
(((('has' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))))
}))
})));
$MATCH
};
sub exp_stmts2 {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $m2) = $grammar->exp_stmts($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'exp_stmts'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (${$MATCH->{'exp_stmts'}}))
}) || 1)))
})
})));
$MATCH
};
sub exp {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $m2) = Perlito6::Expression->exp_parse($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.exp_parse'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (${$MATCH->{'Perlito6::Expression.exp_parse'}}))
}) || 1)))
})
})));
$MATCH
};
sub exp2 {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $m2) = Perlito6::Expression->exp_parse($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.exp_parse'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (${$MATCH->{'Perlito6::Expression.exp_parse'}}))
}) || 1)))
})
})));
$MATCH
};
sub opt_ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
((do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'ident'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (${$MATCH->{'ident'}}))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
((1 && (((do {
($MATCH->{capture} = ('postcircumfix:<( )>'))
}) || 1))))
}))
})));
$MATCH
};
sub opt_type {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
(((do {
((my $last_pos) = $MATCH->to());
if (!((do {
(('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
}))) {
(($MATCH)->{to} = $last_pos)
};
1
}) && (do {
((my $m2) = $grammar->full_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'full_ident'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = (${$MATCH->{'full_ident'}}))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
((1 && (((do {
($MATCH->{capture} = (''))
}) || 1))))
}))
})));
$MATCH
};
sub var_sigil {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((((do {
((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(38) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
})));
$MATCH
};
sub var_twigil {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $pos1) = $MATCH->to());
((((do {
(('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(33) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(94) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
(((('*' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})
})));
$MATCH
};
sub var_name {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(((do {
((my $m2) = $grammar->full_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'full_ident'} = $m2);
1
}
else {
0
}
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(47) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'digit'} = $m2);
1
}
else {
0
}
}))
}))
})));
$MATCH
};
sub var_ident {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(((((do {
((my $m2) = $grammar->var_sigil($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'var_sigil'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->var_twigil($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'var_twigil'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->optional_namespace_before_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'optional_namespace_before_ident'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->var_name($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'var_name'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = (Var->new(('sigil' => "".($MATCH->{'var_sigil'})), ('twigil' => "".($MATCH->{'var_twigil'})), ('namespace' => ${$MATCH->{'optional_namespace_before_ident'}}), ('name' => "".($MATCH->{'var_name'})))))
}) || 1)))
})
})));
$MATCH
};
sub exponent {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(((do {
((my $pos1) = $MATCH->to());
((do {
(('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
(((('E' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
}) && (do {
((my $pos1) = $MATCH->to());
(((do {
(('+' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
(((('-' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
(1)
}))
})) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
}))
})
})));
$MATCH
};
sub val_num {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $pos1) = $MATCH->to());
((do {
((((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
})) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->exponent($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
}) && (do {
((my $pos1) = $MATCH->to());
((do {
((my $m2) = $grammar->exponent($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) || (do {
(($MATCH)->{to} = $pos1);
(((((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
})) && (do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->exponent($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})))
}))
})))
}))
}) && (((do {
($MATCH->{capture} = (Val::Num->new(('num' => "".($MATCH)))))
}) || 1)))
})
})));
$MATCH
};
sub char_any {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
})
})));
$MATCH
};
sub char_any_single_quote {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((my $pos1) = $MATCH->to());
((do {
((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
})
})));
$MATCH
};
sub single_quoted_unescape {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(((((do {
((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'single_quoted_unescape'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = ((chr(92) . $MATCH->{'single_quoted_unescape'})))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'single_quoted_unescape'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = ((chr(39) . $MATCH->{'single_quoted_unescape'})))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'single_quoted_unescape'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = ((chr(92) . $MATCH->{'single_quoted_unescape'})))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((do {
((my $m2) = $grammar->char_any_single_quote($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any_single_quote'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'single_quoted_unescape'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = (($MATCH->{'char_any_single_quote'} . $MATCH->{'single_quoted_unescape'})))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
(1)
}))
})));
$MATCH
};
sub char_any_double_quote {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
(((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((my $pos1) = $MATCH->to());
(((((do {
((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((my $pos1) = $MATCH->to());
((((((do {
((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
}))
})
}));
(($tmp)->{bool} = !($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
})
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}))
})
})));
$MATCH
};
sub double_quoted_unescape {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $pos1) = $MATCH->to());
(((((do {
(((('c' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $pos1) = $MATCH->to());
((do {
(((((('[' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->digits($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'digits'} = $m2);
1
}
else {
0
}
})) && (((']' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (chr($MATCH->{'digits'})))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->digits($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'digits'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (chr($MATCH->{'digits'})))
}) || 1))))
}))
}))
}) || (do {
(($MATCH)->{to} = $pos1);
((((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do {
($MATCH->{capture} = (chr(27)))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((('n' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do {
($MATCH->{capture} = ((chr(10))))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
((((('t' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do {
($MATCH->{capture} = (chr(9)))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->char_any($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = ("".($MATCH->{'char_any'})))
}) || 1))))
}))
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->char_any_double_quote($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any_double_quote'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = ("".($MATCH->{'char_any_double_quote'})))
}) || 1))))
}))
})));
$MATCH
};
sub double_quoted_buf {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(((((do {
((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $pos1) = $MATCH->to());
((do {
(((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
(((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->var_twigil($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $m2) = Perlito6::Expression->operator($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.operator'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1]))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->char_any($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'})))))
}) || 1))))
}))
}))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $pos1) = $MATCH->to());
((do {
((((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
(((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->var_twigil($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $m2) = Perlito6::Expression->operator($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.operator'} = $m2);
1
}
else {
0
}
})) && ((('[]' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1]))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->char_any($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'})))))
}) || 1))))
}))
})))
})) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $pos1) = $MATCH->to());
((do {
((((do {
((my $tmp) = $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
(($MATCH)->{bool} = (do {
((my $pos1) = $MATCH->to());
(do {
(((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->var_twigil($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}))
})
}));
(($tmp)->{bool} = !!($MATCH));
($MATCH = $tmp);
!!($MATCH)
}) && (do {
((my $m2) = Perlito6::Expression->operator($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.operator'} = $m2);
1
}
else {
0
}
})) && (((chr(123) . chr(125) eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1]))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->char_any($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'char_any'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'})))))
}) || 1))))
}))
})))
})) || (do {
(($MATCH)->{to} = $pos1);
(((((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->exp_stmts($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'exp_stmts'} = $m2);
1
}
else {
0
}
})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (Do->new(('block' => Lit::Block->new(('stmts' => ${$MATCH->{'exp_stmts'}}))))))
}) || 1))))
})) || (do {
(($MATCH)->{to} = $pos1);
(((do {
((my $m2) = $grammar->double_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'double_quoted_unescape'} = $m2);
1
}
else {
0
}
}) && (((do {
($MATCH->{capture} = (Val::Buf->new(('buf' => ${$MATCH->{'double_quoted_unescape'}}))))
}) || 1))))
}))
})));
$MATCH
};
sub val_buf {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
((((((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $m2) = $grammar->double_quoted_buf($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
if (exists($MATCH->{'double_quoted_buf'})) {
push( @{($MATCH->{'double_quoted_buf'})}, $m2 )
}
else {
($MATCH->{'double_quoted_buf'} = do {
(my $List_a = bless [], 'ARRAY');
(my $List_v = bless [], 'ARRAY');
push( @{$List_a}, $m2 );
$List_a
})
};
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
})) && (((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
((my $args) = $MATCH->{'double_quoted_buf'});
if (!($args)) {
($MATCH->{capture} = (Val::Buf->new(('buf' => ''))))
}
else {
($MATCH->{capture} = (Apply->new(('namespace' => ''), ('code' => 'list:<' . chr(126) . '>'), ('arguments' => [ map { $_->capture() } @{( ($MATCH->{'double_quoted_buf'}) )} ]))))
}
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
(((((((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'single_quoted_unescape'} = $m2);
1
}
else {
0
}
})) && (((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (Val::Buf->new(('buf' => ${$MATCH->{'single_quoted_unescape'}}))))
}) || 1))))
}))
})));
$MATCH
};
sub digits {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
})
})));
$MATCH
};
sub val_int {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
((my $count) = 0);
for ( ; ((do {
((my $m2) = $grammar->digit($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to());
($count = ($count + 1))
};
(($MATCH)->{to} = $last_pos);
($count > 0)
}) && (((do {
($MATCH->{capture} = (Val::Int->new(('int' => "".($MATCH)))))
}) || 1)))
})
})));
$MATCH
};
sub exp_stmts {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((do {
((my $last_match_null) = 0);
((my $last_pos) = $MATCH->to());
for ( ; ((do {
((my $m2) = Perlito6::Expression->delimited_statement($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
if (exists($MATCH->{'Perlito6::Expression.delimited_statement'})) {
push( @{($MATCH->{'Perlito6::Expression.delimited_statement'})}, $m2 )
}
else {
($MATCH->{'Perlito6::Expression.delimited_statement'} = do {
(my $List_a = bless [], 'ARRAY');
(my $List_v = bless [], 'ARRAY');
push( @{$List_a}, $m2 );
$List_a
})
};
1
}
else {
0
}
}) && (($last_match_null < 2))); ) {
if (($last_pos == $MATCH->to())) {
($last_match_null = ($last_match_null + 1))
}
else {
($last_match_null = 0)
};
($last_pos = $MATCH->to())
};
(($MATCH)->{to} = $last_pos);
1
}) && (((do {
($MATCH->{capture} = ([ map { $_->capture() } @{( $MATCH->{'Perlito6::Expression.delimited_statement'} )} ]))
}) || 1)))
})
})));
$MATCH
};
sub opt_name {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((my $last_pos) = $MATCH->to());
if (!((do {
((my $m2) = $grammar->ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
if (exists($MATCH->{'ident'})) {
push( @{($MATCH->{'ident'})}, $m2 )
}
else {
($MATCH->{'ident'} = do {
(my $List_a = bless [], 'ARRAY');
(my $List_v = bless [], 'ARRAY');
push( @{$List_a}, $m2 );
$List_a
})
};
1
}
else {
0
}
}))) {
(($MATCH)->{to} = $last_pos)
};
1
})
})));
$MATCH
};
sub var_invocant {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
(((do {
((my $m2) = $grammar->var_ident($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'var_ident'} = $m2);
1
}
else {
0
}
}) && (((':' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (${$MATCH->{'var_ident'}}))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
((((do {
($MATCH->{capture} = (Var->new(('sigil' => chr(36)), ('twigil' => ''), ('name' => 'self'))))
}) || 1)))
}))
})));
$MATCH
};
sub args_sig {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((((do {
((my $m2) = $grammar->var_invocant($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'var_invocant'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = Perlito6::Expression->list_parse($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Expression.list_parse'} = $m2);
1
}
else {
0
}
})) && (((do {
($MATCH->{capture} = (Sig->new(('invocant' => ${$MATCH->{'var_invocant'}}), ('positional' => Perlito6::Expression::expand_list((${$MATCH->{'Perlito6::Expression.list_parse'}})->{'exp'})), ('named' => do {
(my $Hash_a = bless {}, 'HASH');
$Hash_a
}))))
}) || 1)))
})
})));
$MATCH
};
sub method_sig {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
((do {
(((((((do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
}) && ((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->args_sig($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'args_sig'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (((')' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
($MATCH->{capture} = (${$MATCH->{'args_sig'}}))
}) || 1)))
}) || (do {
(($MATCH)->{to} = $pos1);
((((do {
($MATCH->{capture} = (Sig->new(('invocant' => Var->new(('sigil' => chr(36)), ('twigil' => ''), ('name' => 'self'))), ('positional' => do {
(my $List_a = bless [], 'ARRAY');
(my $List_v = bless [], 'ARRAY');
$List_a
}), ('named' => do {
(my $Hash_a = bless {}, 'HASH');
$Hash_a
}))))
}) || 1)))
}))
})));
$MATCH
};
sub method_def {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((((((((((do {
((my $m2) = $grammar->opt_name($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'opt_name'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->method_sig($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'method_sig'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->exp_stmts($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'exp_stmts'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $pos1) = $MATCH->to());
((do {
((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((do {
die('Syntax Error in method ' . chr(39) . '.', ${$MATCH->{'name'}}, chr(39) . ' near pos' . chr(61), $MATCH->to())
}) || 1)))
}))
})) && (((do {
($MATCH->{capture} = (Method->new(('name' => ${$MATCH->{'opt_name'}}), ('sig' => ${$MATCH->{'method_sig'}}), ('block' => ${$MATCH->{'exp_stmts'}}))))
}) || 1)))
})
})));
$MATCH
};
sub sub_def {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((((((((((do {
((my $m2) = $grammar->opt_name($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'opt_name'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->method_sig($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'method_sig'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->exp_stmts($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'exp_stmts'} = $m2);
1
}
else {
0
}
})) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (do {
((my $pos1) = $MATCH->to());
((do {
((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
}) || (do {
(($MATCH)->{to} = $pos1);
((((do {
die('Syntax Error in sub ' . chr(39), ${$MATCH->{'name'}}, chr(39))
}) || 1)))
}))
})) && (((do {
($MATCH->{capture} = (Sub->new(('name' => ${$MATCH->{'opt_name'}}), ('sig' => ${$MATCH->{'method_sig'}}), ('block' => ${$MATCH->{'exp_stmts'}}))))
}) || 1)))
})
})));
$MATCH
};
sub token {
my $grammar = $_[0];
my $str = $_[1];
my $pos = $_[2];
(my $MATCH);
($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
(($MATCH)->{bool} = ((do {
((my $pos1) = $MATCH->to());
(do {
((((((do {
((my $m2) = $grammar->opt_name($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'opt_name'} = $m2);
1
}
else {
0
}
}) && (do {
((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
1
}
else {
0
}
})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
((my $m2) = Perlito6::Grammar::Regex->rule($str, $MATCH->to()));
if ($m2) {
(($MATCH)->{to} = $m2->to());
($MATCH->{'Perlito6::Grammar::Regex.rule'} = $m2);
1
}
else {
0
}
})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
((my $source) = ($MATCH->{'opt_name'} . ' ( ' . chr(36) . 'grammar: ' . chr(36) . 'str, ' . chr(36) . 'pos ) ' . chr(123) . ' ' . 'my ' . chr(36) . 'MATCH' . chr(59) . ' ' . chr(36) . 'MATCH ' . chr(61) . ' Perlito6::Match.new( str ' . chr(61) . '> ' . chr(36) . 'str, from ' . chr(61) . '> ' . chr(36) . 'pos, to ' . chr(61) . '> ' . chr(36) . 'pos, bool ' . chr(61) . '> 1 )' . chr(59) . ' ' . chr(36) . 'MATCH.bool ' . chr(61) . ' ( ' . (${$MATCH->{'Perlito6::Grammar::Regex.rule'}})->emit_perl6() . ')' . chr(59) . ' ' . chr(36) . 'MATCH ' . chr(125)));
((my $ast) = Perlito6::Grammar->method_def($source, 0));
($MATCH->{capture} = (${$ast}))
}) || 1)))
})
})));
$MATCH
}
}
}
1;