# !!! DO NOT EDIT !!!
# This file was generated by Pugs::Compiler::Rule's compile_p6grammar.pl
# script from examples/Grammar.grammar at Tue Oct 30 11:29:45 2007
use strict;
use warnings;
package Pugs::Grammar::Rule;
#use base 'Pugs::Grammar::Base';
use Pugs::Runtime::Match;
use Pugs::Runtime::Regex;
use Pugs::Runtime::Tracer ();
# Code block from grammar spec
use utf8;
no strict 'refs';
no warnings 'redefine';
no warnings 'once';
#use Pugs::Runtime::Match;
our %rule_terms;
our %variables;
# token pod_begin
*pod_begin =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 632 675
(
( $pad{I1170} = $pos or 1 )
&& (
##
## pos: 633 652
(
##
## pos: 633 639
( ( $pad{I1171} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1171} ) && 0 ) )
##
&&
##
## pos: 639 640
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 640 641
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 641 642
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 642 644
( ( $pad{I1172} = $pos or 1 ) &&
##
## pos: 642 643
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1172} ) && 0 ) )
##
&&
##
## pos: 644 652
do { while (
( ( $pad{I1173} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1173} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1170} ) or 1 )
&& ##
## pos: 653 675
(
##
## pos: 653 658
( ( $pad{I1174} = $pos or 1 ) &&
##
## pos: 656 657
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1174} ) && 0 ) )
##
&&
##
## pos: 658 662
do { while (
( ( $pad{I1175} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1175} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 662 675
( ( $pad{I1176} = $pos or 1 ) &&
##
## pos: 662 674
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_begin( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1176} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token pod_other
*pod_other =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 700 743
(
( $pad{I1177} = $pos or 1 )
&& (
##
## pos: 701 720
(
##
## pos: 701 707
( ( $pad{I1178} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1178} ) && 0 ) )
##
&&
##
## pos: 707 708
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 708 709
( ( substr( $s, $pos, 1 ) eq 'c' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 709 710
( ( substr( $s, $pos, 1 ) eq 'u' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 710 712
( ( $pad{I1179} = $pos or 1 ) &&
##
## pos: 710 711
( ( substr( $s, $pos, 1 ) eq 't' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1179} ) && 0 ) )
##
&&
##
## pos: 712 720
do { while (
( ( $pad{I1180} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1180} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1177} ) or 1 )
&& ##
## pos: 721 743
(
##
## pos: 721 726
( ( $pad{I1181} = $pos or 1 ) &&
##
## pos: 724 725
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1181} ) && 0 ) )
##
&&
##
## pos: 726 730
do { while (
( ( $pad{I1182} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1182} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 730 743
( ( $pad{I1183} = $pos or 1 ) &&
##
## pos: 730 742
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1183} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token ws
*ws =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 761 1059
(
( ( $pad{I1184} = $pos or 1 ) &&
##
## pos: 762 1056
(
( $pad{I1185} = $pos or 1 )
&& (
##
## pos: 768 783
(
##
## pos: 768 775
( ( $pad{I1186} = $pos or 1 ) &&
##
## pos: 772 774
( ( substr( $s, $pos, 1 ) eq '#' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1186} ) && 0 ) )
##
&&
##
## pos: 775 783
do { while (
( ( $pad{I1187} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1187} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
&& ##
## pos: 784 1044
(
##
## pos: 784 791
( ( $pad{I1188} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1188} ) && 0 ) )
##
&&
##
## pos: 791 1044
(
( ( $pad{I1189} = $pos or 1 ) &&
##
## pos: 792 1037
(
##
## pos: 792 795
( ( $pad{I1190} = $pos or 1 ) &&
##
## pos: 793 794
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1190} ) && 0 ) )
##
&&
##
## pos: 795 1037
(
( ( $pad{I1191} = $pos or 1 ) &&
##
## pos: 796 1022
(
( $pad{I1192} = $pos or 1 )
&& (
##
## pos: 810 847
(
##
## pos: 810 813
( ( $pad{I1193} = $pos or 1 ) &&
##
## pos: 812 813
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1193} ) && 0 ) )
##
&&
##
## pos: 813 814
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 814 815
( ( substr( $s, $pos, 1 ) eq 'g' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 815 816
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 816 818
( ( $pad{I1194} = $pos or 1 ) &&
##
## pos: 816 817
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1194} ) && 0 ) )
##
&&
##
## pos: 818 824
( ( $pad{I1195} = $pos or 1 ) &&
##
## pos: 818 823
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1195} ) && 0 ) )
##
&&
##
## pos: 824 825
( ( substr( $s, $pos, 1 ) eq 'E' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 825 826
( ( substr( $s, $pos, 1 ) eq 'N' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 826 828
( ( $pad{I1196} = $pos or 1 ) &&
##
## pos: 826 827
( ( substr( $s, $pos, 1 ) eq 'D' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1196} ) && 0 ) )
##
&&
##
## pos: 828 832
do { while (
( ( $pad{I1197} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1197} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 832 847
do { while (
( ( $pad{I1198} = $pos or 1 ) &&
##
## pos: 832 833
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1198} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 848 882
(
##
## pos: 848 851
( ( $pad{I1199} = $pos or 1 ) &&
##
## pos: 850 851
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1199} ) && 0 ) )
##
&&
##
## pos: 851 852
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 852 853
( ( substr( $s, $pos, 1 ) eq 'g' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 853 854
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 854 857
( ( $pad{I1200} = $pos or 1 ) &&
##
## pos: 854 855
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1200} ) && 0 ) )
##
&&
##
## pos: 857 882
( ( $pad{I1201} = $pos or 1 ) &&
##
## pos: 857 869
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_begin( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1201} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 883 917
(
##
## pos: 883 886
( ( $pad{I1202} = $pos or 1 ) &&
##
## pos: 885 886
( ( substr( $s, $pos, 1 ) eq 'k' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1202} ) && 0 ) )
##
&&
##
## pos: 886 887
( ( substr( $s, $pos, 1 ) eq 'w' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 887 888
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 888 892
( ( $pad{I1203} = $pos or 1 ) &&
##
## pos: 888 889
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1203} ) && 0 ) )
##
&&
##
## pos: 892 917
( ( $pad{I1204} = $pos or 1 ) &&
##
## pos: 892 904
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1204} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 918 952
(
##
## pos: 918 921
( ( $pad{I1205} = $pos or 1 ) &&
##
## pos: 920 921
( ( substr( $s, $pos, 1 ) eq 'p' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1205} ) && 0 ) )
##
&&
##
## pos: 921 922
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 922 927
( ( $pad{I1206} = $pos or 1 ) &&
##
## pos: 922 923
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1206} ) && 0 ) )
##
&&
##
## pos: 927 952
( ( $pad{I1207} = $pos or 1 ) &&
##
## pos: 927 939
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1207} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 953 987
(
##
## pos: 953 956
( ( $pad{I1208} = $pos or 1 ) &&
##
## pos: 955 956
( ( substr( $s, $pos, 1 ) eq 'f' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1208} ) && 0 ) )
##
&&
##
## pos: 956 957
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 957 962
( ( $pad{I1209} = $pos or 1 ) &&
##
## pos: 957 958
( ( substr( $s, $pos, 1 ) eq 'r' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1209} ) && 0 ) )
##
&&
##
## pos: 962 987
( ( $pad{I1210} = $pos or 1 ) &&
##
## pos: 962 974
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1210} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 988 1022
(
##
## pos: 988 991
( ( $pad{I1211} = $pos or 1 ) &&
##
## pos: 990 991
( ( substr( $s, $pos, 1 ) eq 'h' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1211} ) && 0 ) )
##
&&
##
## pos: 991 992
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 992 993
( ( substr( $s, $pos, 1 ) eq 'a' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 993 994
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 994 997
( ( $pad{I1212} = $pos or 1 ) &&
##
## pos: 994 995
( ( substr( $s, $pos, 1 ) eq '1' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1212} ) && 0 ) )
##
&&
##
## pos: 997 1022
( ( $pad{I1213} = $pos or 1 ) &&
##
## pos: 997 1009
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1213} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1191} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I1189} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
&&
##
## pos: 1045 1056
( ( $pad{I1214} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1214} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1184} ) && 0 ) )
&& do { while (
( ( $pad{I1184} = $pos or 1 ) &&
##
## pos: 762 1056
(
( $pad{I1185} = $pos or 1 )
&& (
##
## pos: 768 783
(
##
## pos: 768 775
( ( $pad{I1186} = $pos or 1 ) &&
##
## pos: 772 774
( ( substr( $s, $pos, 1 ) eq '#' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1186} ) && 0 ) )
##
&&
##
## pos: 775 783
do { while (
( ( $pad{I1187} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1187} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
&& ##
## pos: 784 1044
(
##
## pos: 784 791
( ( $pad{I1188} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1188} ) && 0 ) )
##
&&
##
## pos: 791 1044
(
( ( $pad{I1189} = $pos or 1 ) &&
##
## pos: 792 1037
(
##
## pos: 792 795
( ( $pad{I1190} = $pos or 1 ) &&
##
## pos: 793 794
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1190} ) && 0 ) )
##
&&
##
## pos: 795 1037
(
( ( $pad{I1191} = $pos or 1 ) &&
##
## pos: 796 1022
(
( $pad{I1192} = $pos or 1 )
&& (
##
## pos: 810 847
(
##
## pos: 810 813
( ( $pad{I1193} = $pos or 1 ) &&
##
## pos: 812 813
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1193} ) && 0 ) )
##
&&
##
## pos: 813 814
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 814 815
( ( substr( $s, $pos, 1 ) eq 'g' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 815 816
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 816 818
( ( $pad{I1194} = $pos or 1 ) &&
##
## pos: 816 817
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1194} ) && 0 ) )
##
&&
##
## pos: 818 824
( ( $pad{I1195} = $pos or 1 ) &&
##
## pos: 818 823
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1195} ) && 0 ) )
##
&&
##
## pos: 824 825
( ( substr( $s, $pos, 1 ) eq 'E' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 825 826
( ( substr( $s, $pos, 1 ) eq 'N' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 826 828
( ( $pad{I1196} = $pos or 1 ) &&
##
## pos: 826 827
( ( substr( $s, $pos, 1 ) eq 'D' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1196} ) && 0 ) )
##
&&
##
## pos: 828 832
do { while (
( ( $pad{I1197} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1197} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 832 847
do { while (
( ( $pad{I1198} = $pos or 1 ) &&
##
## pos: 832 833
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1198} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 848 882
(
##
## pos: 848 851
( ( $pad{I1199} = $pos or 1 ) &&
##
## pos: 850 851
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1199} ) && 0 ) )
##
&&
##
## pos: 851 852
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 852 853
( ( substr( $s, $pos, 1 ) eq 'g' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 853 854
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 854 857
( ( $pad{I1200} = $pos or 1 ) &&
##
## pos: 854 855
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1200} ) && 0 ) )
##
&&
##
## pos: 857 882
( ( $pad{I1201} = $pos or 1 ) &&
##
## pos: 857 869
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_begin( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1201} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 883 917
(
##
## pos: 883 886
( ( $pad{I1202} = $pos or 1 ) &&
##
## pos: 885 886
( ( substr( $s, $pos, 1 ) eq 'k' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1202} ) && 0 ) )
##
&&
##
## pos: 886 887
( ( substr( $s, $pos, 1 ) eq 'w' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 887 888
( ( substr( $s, $pos, 1 ) eq 'i' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 888 892
( ( $pad{I1203} = $pos or 1 ) &&
##
## pos: 888 889
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1203} ) && 0 ) )
##
&&
##
## pos: 892 917
( ( $pad{I1204} = $pos or 1 ) &&
##
## pos: 892 904
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1204} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 918 952
(
##
## pos: 918 921
( ( $pad{I1205} = $pos or 1 ) &&
##
## pos: 920 921
( ( substr( $s, $pos, 1 ) eq 'p' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1205} ) && 0 ) )
##
&&
##
## pos: 921 922
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 922 927
( ( $pad{I1206} = $pos or 1 ) &&
##
## pos: 922 923
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1206} ) && 0 ) )
##
&&
##
## pos: 927 952
( ( $pad{I1207} = $pos or 1 ) &&
##
## pos: 927 939
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1207} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 953 987
(
##
## pos: 953 956
( ( $pad{I1208} = $pos or 1 ) &&
##
## pos: 955 956
( ( substr( $s, $pos, 1 ) eq 'f' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1208} ) && 0 ) )
##
&&
##
## pos: 956 957
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 957 962
( ( $pad{I1209} = $pos or 1 ) &&
##
## pos: 957 958
( ( substr( $s, $pos, 1 ) eq 'r' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1209} ) && 0 ) )
##
&&
##
## pos: 962 987
( ( $pad{I1210} = $pos or 1 ) &&
##
## pos: 962 974
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1210} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1192} ) or 1 )
&& ##
## pos: 988 1022
(
##
## pos: 988 991
( ( $pad{I1211} = $pos or 1 ) &&
##
## pos: 990 991
( ( substr( $s, $pos, 1 ) eq 'h' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1211} ) && 0 ) )
##
&&
##
## pos: 991 992
( ( substr( $s, $pos, 1 ) eq 'e' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 992 993
( ( substr( $s, $pos, 1 ) eq 'a' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 993 994
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 994 997
( ( $pad{I1212} = $pos or 1 ) &&
##
## pos: 994 995
( ( substr( $s, $pos, 1 ) eq '1' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1212} ) && 0 ) )
##
&&
##
## pos: 997 1022
( ( $pad{I1213} = $pos or 1 ) &&
##
## pos: 997 1009
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->pod_other( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1213} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1191} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I1189} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1185} ) or 1 )
&&
##
## pos: 1045 1056
( ( $pad{I1214} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1214} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1184} ) && 0 ) )) {}; $bool = 1 }
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token ident
*ident =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 1118 1143
(
( ( $pad{I1215} = $pos or 1 ) &&
##
## pos: 1119 1140
(
( $pad{I1216} = $pos or 1 )
&& (
##
## pos: 1119 1129
( ( $pad{I1217} = $pos or 1 ) &&
##
## pos: 1120 1128
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1217} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
&&
##
## pos: 1130 1133
( ( $pad{I1218} = $pos or 1 ) &&
##
## pos: 1131 1132
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1218} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
&&
##
## pos: 1134 1140
( ( $pad{I1219} = $pos or 1 ) &&
##
## pos: 1135 1139
( ( substr( $s, $pos, 2 ) eq '::' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1219} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1215} ) && 0 ) )
&& do { while (
( ( $pad{I1215} = $pos or 1 ) &&
##
## pos: 1119 1140
(
( $pad{I1216} = $pos or 1 )
&& (
##
## pos: 1119 1129
( ( $pad{I1217} = $pos or 1 ) &&
##
## pos: 1120 1128
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1217} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
&&
##
## pos: 1130 1133
( ( $pad{I1218} = $pos or 1 ) &&
##
## pos: 1131 1132
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1218} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1216} ) or 1 )
&&
##
## pos: 1134 1140
( ( $pad{I1219} = $pos or 1 ) &&
##
## pos: 1135 1139
( ( substr( $s, $pos, 2 ) eq '::' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1219} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1215} ) && 0 ) )) {}; $bool = 1 }
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token alnum
*alnum =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 1164 1178
( ( $pad{I1220} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9a-zA-Z]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1220} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token alpha
*alpha =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 1199 1210
( ( $pad{I1221} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[a-zA-Z]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1221} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token digit
*digit =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 1231 1239
( ( $pad{I1222} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1222} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token special_char
*special_char =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 1284 2177
(
( $pad{I1223} = $pos or 1 )
&& (
##
## pos: 1285 1473
(
##
## pos: 1285 1296
( ( $pad{I1224} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1287 1294
(
( $pad{I1225} = $pos or 1 )
&& (
##
## pos: 1287 1290
( ( $pad{I1226} = $pos or 1 ) &&
##
## pos: 1288 1289
( ( substr( $s, $pos, 1 ) eq 'c' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1226} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1225} ) or 1 )
&&
##
## pos: 1291 1294
( ( $pad{I1227} = $pos or 1 ) &&
##
## pos: 1292 1293
( ( substr( $s, $pos, 1 ) eq 'C' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1227} ) && 0 ) )
##
)
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1224} ) && 0 ) )
##
&&
##
## pos: 1296 1299
( ( $pad{I1228} = $pos or 1 ) &&
##
## pos: 1296 1298
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1228} ) && 0 ) )
##
&&
##
## pos: 1299 1340
( ( $pad{I1229} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1300 1338
(
( ( $pad{I1230} = $pos or 1 ) &&
##
## pos: 1302 1336
(
( $pad{I1231} = $pos or 1 )
&& (
##
## pos: 1302 1309
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'alnum'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&& ##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1313 1318
( ( $pad{I1232} = $pos or 1 ) &&
##
## pos: 1314 1317
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1232} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1319 1324
( ( $pad{I1233} = $pos or 1 ) &&
##
## pos: 1320 1323
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1233} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1325 1330
( ( $pad{I1234} = $pos or 1 ) &&
##
## pos: 1326 1329
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1234} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1331 1336
( ( $pad{I1235} = $pos or 1 ) &&
##
## pos: 1332 1335
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1235} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1230} ) && 0 ) )
&& do { while (
( ( $pad{I1230} = $pos or 1 ) &&
##
## pos: 1302 1336
(
( $pad{I1231} = $pos or 1 )
&& (
##
## pos: 1302 1309
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'alnum'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&& ##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1313 1318
( ( $pad{I1232} = $pos or 1 ) &&
##
## pos: 1314 1317
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1232} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1319 1324
( ( $pad{I1233} = $pos or 1 ) &&
##
## pos: 1320 1323
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1233} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1325 1330
( ( $pad{I1234} = $pos or 1 ) &&
##
## pos: 1326 1329
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1234} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1231} ) or 1 )
&&
##
## pos: 1331 1336
( ( $pad{I1235} = $pos or 1 ) &&
##
## pos: 1332 1335
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1235} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1230} ) && 0 ) )) {}; $bool = 1 }
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 1 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1229} ) && 0 ) )
##
&&
##
## pos: 1340 1385
( ( $pad{I1236} = $pos or 1 ) &&
##
## pos: 1340 1342
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1236} ) && 0 ) )
##
&&
##
## pos: 1385 1473
( ( $pad{I1237} = $pos or 1 ) &&
##
## pos: 1385 1463
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1237} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
&& ##
## pos: 1474 1617
(
##
## pos: 1474 1485
( ( $pad{I1238} = $pos or 1 ) &&
##
## pos: 1476 1483
(
( $pad{I1239} = $pos or 1 )
&& (
##
## pos: 1476 1479
( ( $pad{I1240} = $pos or 1 ) &&
##
## pos: 1477 1478
( ( substr( $s, $pos, 1 ) eq 'x' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1240} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1239} ) or 1 )
&&
##
## pos: 1480 1483
( ( $pad{I1241} = $pos or 1 ) &&
##
## pos: 1481 1482
( ( substr( $s, $pos, 1 ) eq 'X' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1241} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1238} ) && 0 ) )
##
&&
##
## pos: 1485 1535
(
( ( $pad{I1242} = $pos or 1 ) &&
##
## pos: 1485 1493
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->xdigit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'xdigit'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1242} ) && 0 ) )
&& do { while (
( ( $pad{I1242} = $pos or 1 ) &&
##
## pos: 1485 1493
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->xdigit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'xdigit'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1242} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 1535 1617
( ( $pad{I1243} = $pos or 1 ) &&
##
## pos: 1535 1608
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1243} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
&& ##
## pos: 1618 1777
(
##
## pos: 1618 1629
( ( $pad{I1244} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1620 1627
(
( $pad{I1245} = $pos or 1 )
&& (
##
## pos: 1620 1623
( ( $pad{I1246} = $pos or 1 ) &&
##
## pos: 1621 1622
( ( substr( $s, $pos, 1 ) eq 'x' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1246} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1245} ) or 1 )
&&
##
## pos: 1624 1627
( ( $pad{I1247} = $pos or 1 ) &&
##
## pos: 1625 1626
( ( substr( $s, $pos, 1 ) eq 'X' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1247} ) && 0 ) )
##
)
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1244} ) && 0 ) )
##
&&
##
## pos: 1629 1632
( ( $pad{I1248} = $pos or 1 ) &&
##
## pos: 1629 1631
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1248} ) && 0 ) )
##
&&
##
## pos: 1632 1644
( ( $pad{I1249} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1633 1642
(
( ( $pad{I1250} = $pos or 1 ) &&
##
## pos: 1633 1641
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->xdigit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'xdigit'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1250} ) && 0 ) )
&& do { while (
( ( $pad{I1250} = $pos or 1 ) &&
##
## pos: 1633 1641
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->xdigit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'xdigit'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1250} ) && 0 ) )) {}; $bool = 1 }
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 1 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1249} ) && 0 ) )
##
&&
##
## pos: 1644 1689
( ( $pad{I1251} = $pos or 1 ) &&
##
## pos: 1644 1646
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1251} ) && 0 ) )
##
&&
##
## pos: 1689 1777
( ( $pad{I1252} = $pos or 1 ) &&
##
## pos: 1689 1767
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1252} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
&& ##
## pos: 1778 1915
(
##
## pos: 1778 1789
( ( $pad{I1253} = $pos or 1 ) &&
##
## pos: 1780 1787
(
( $pad{I1254} = $pos or 1 )
&& (
##
## pos: 1780 1783
( ( $pad{I1255} = $pos or 1 ) &&
##
## pos: 1781 1782
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1255} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1254} ) or 1 )
&&
##
## pos: 1784 1787
( ( $pad{I1256} = $pos or 1 ) &&
##
## pos: 1785 1786
( ( substr( $s, $pos, 1 ) eq 'O' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1256} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1253} ) && 0 ) )
##
&&
##
## pos: 1789 1833
(
( ( $pad{I1257} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1257} ) && 0 ) )
&& do { while (
( ( $pad{I1257} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1257} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 1833 1915
( ( $pad{I1258} = $pos or 1 ) &&
##
## pos: 1833 1906
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1258} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
&& ##
## pos: 1916 2069
(
##
## pos: 1916 1927
( ( $pad{I1259} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1918 1925
(
( $pad{I1260} = $pos or 1 )
&& (
##
## pos: 1918 1921
( ( $pad{I1261} = $pos or 1 ) &&
##
## pos: 1919 1920
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1261} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1260} ) or 1 )
&&
##
## pos: 1922 1925
( ( $pad{I1262} = $pos or 1 ) &&
##
## pos: 1923 1924
( ( substr( $s, $pos, 1 ) eq 'O' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1262} ) && 0 ) )
##
)
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1259} ) && 0 ) )
##
&&
##
## pos: 1927 1930
( ( $pad{I1263} = $pos or 1 ) &&
##
## pos: 1927 1929
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1263} ) && 0 ) )
##
&&
##
## pos: 1930 1936
( ( $pad{I1264} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1931 1934
(
( ( $pad{I1265} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1265} ) && 0 ) )
&& do { while (
( ( $pad{I1265} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1265} ) && 0 ) )) {}; $bool = 1 }
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 1 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1264} ) && 0 ) )
##
&&
##
## pos: 1936 1981
( ( $pad{I1266} = $pos or 1 ) &&
##
## pos: 1936 1938
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1266} ) && 0 ) )
##
&&
##
## pos: 1981 2069
( ( $pad{I1267} = $pos or 1 ) &&
##
## pos: 1981 2059
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0]->[0] . $_[0]->[1], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1267} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1223} ) or 1 )
&& ##
## pos: 2070 2177
(
##
## pos: 2070 2103
( ( $pad{I1268} = $pos or 1 ) &&
##
## pos: 2071 2072
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1268} ) && 0 ) )
##
&&
##
## pos: 2103 2177
( ( $pad{I1269} = $pos or 1 ) &&
##
## pos: 2103 2176
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { special_char => '\\' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1269} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token literal
*literal =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2200 2251
do { while (
( ( $pad{I1270} = $pos or 1 ) &&
##
## pos: 2201 2248
(
( $pad{I1271} = $pos or 1 )
&& (
##
## pos: 2207 2231
(
##
## pos: 2207 2212
( ( $pad{I1272} = $pos or 1 ) &&
##
## pos: 2209 2211
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1272} ) && 0 ) )
##
&&
##
## pos: 2212 2231
( ( $pad{I1273} = $pos or 1 ) &&
##
## pos: 2212 2226
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1273} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1271} ) or 1 )
&&
##
## pos: 2232 2248
( ( $pad{I1274} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\']))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1274} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1270} ) && 0 ) )) {}; $bool = 1 }
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token double_quoted
*double_quoted =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2280 2372
do { while (
( ( $pad{I1275} = $pos or 1 ) &&
##
## pos: 2281 2369
(
( $pad{I1276} = $pos or 1 )
&& (
##
## pos: 2287 2311
(
##
## pos: 2287 2292
( ( $pad{I1277} = $pos or 1 ) &&
##
## pos: 2289 2291
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1277} ) && 0 ) )
##
&&
##
## pos: 2292 2311
( ( $pad{I1278} = $pos or 1 ) &&
##
## pos: 2292 2306
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1278} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1276} ) or 1 )
&&
##
## pos: 2312 2352
( ( $pad{I1279} = $pos or 1 ) &&
##
## pos: 2314 2347
do{
my $match =
##
## pos: 2314 2347
do {
our $I1280;
our $I1280_sizes;
unless ( $I1280 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I1280_sizes = [ sort { $b <=> $a } keys %sizes ];
$I1280 = $hash;
}
my $match = 0;
my $key;
for ( @$I1280_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I1280->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I1280, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
last if $match;
}
}
if ( $match ) {
$pos = $match->to;
#print "match: $key at $pos = ", Dumper( $match->data );
$bool = 1;
}; # else { $bool = 0 }
$match;
}
##
;
if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1279} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1276} ) or 1 )
&&
##
## pos: 2353 2369
( ( $pad{I1281} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\"]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1281} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1275} ) && 0 ) )) {}; $bool = 1 }
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token metasyntax
*metasyntax =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2398 2576
(
( ( $pad{I1282} = $pos or 1 ) &&
##
## pos: 2399 2573
(
( $pad{I1283} = $pos or 1 )
&& (
##
## pos: 2405 2429
(
##
## pos: 2405 2410
( ( $pad{I1284} = $pos or 1 ) &&
##
## pos: 2407 2409
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1284} ) && 0 ) )
##
&&
##
## pos: 2410 2429
( ( $pad{I1285} = $pos or 1 ) &&
##
## pos: 2410 2424
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1285} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2430 2458
(
##
## pos: 2430 2436
( ( $pad{I1286} = $pos or 1 ) &&
##
## pos: 2432 2434
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1286} ) && 0 ) )
##
&&
##
## pos: 2436 2451
( ( $pad{I1287} = $pos or 1 ) &&
##
## pos: 2436 2446
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1287} ) && 0 ) )
##
&&
##
## pos: 2451 2458
( ( $pad{I1288} = $pos or 1 ) &&
##
## pos: 2451 2453
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1288} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2459 2491
(
##
## pos: 2459 2465
( ( $pad{I1289} = $pos or 1 ) &&
##
## pos: 2461 2463
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1289} ) && 0 ) )
##
&&
##
## pos: 2465 2484
( ( $pad{I1290} = $pos or 1 ) &&
##
## pos: 2465 2481
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->double_quoted( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1290} ) && 0 ) )
##
&&
##
## pos: 2484 2491
( ( $pad{I1291} = $pos or 1 ) &&
##
## pos: 2484 2486
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1291} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2492 2527
(
##
## pos: 2492 2498
( ( $pad{I1292} = $pos or 1 ) &&
##
## pos: 2494 2496
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1292} ) && 0 ) )
##
&&
##
## pos: 2498 2520
( ( $pad{I1293} = $pos or 1 ) &&
##
## pos: 2498 2512
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1293} ) && 0 ) )
##
&&
##
## pos: 2520 2527
( ( $pad{I1294} = $pos or 1 ) &&
##
## pos: 2520 2522
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1294} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2528 2556
(
##
## pos: 2528 2534
( ( $pad{I1295} = $pos or 1 ) &&
##
## pos: 2530 2532
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1295} ) && 0 ) )
##
&&
##
## pos: 2534 2549
( ( $pad{I1296} = $pos or 1 ) &&
##
## pos: 2534 2547
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->metasyntax( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1296} ) && 0 ) )
##
&&
##
## pos: 2549 2556
( ( $pad{I1297} = $pos or 1 ) &&
##
## pos: 2549 2551
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1297} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&&
##
## pos: 2557 2573
( ( $pad{I1298} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1298} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1282} ) && 0 ) )
&& do { while (
( ( $pad{I1282} = $pos or 1 ) &&
##
## pos: 2399 2573
(
( $pad{I1283} = $pos or 1 )
&& (
##
## pos: 2405 2429
(
##
## pos: 2405 2410
( ( $pad{I1284} = $pos or 1 ) &&
##
## pos: 2407 2409
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1284} ) && 0 ) )
##
&&
##
## pos: 2410 2429
( ( $pad{I1285} = $pos or 1 ) &&
##
## pos: 2410 2424
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1285} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2430 2458
(
##
## pos: 2430 2436
( ( $pad{I1286} = $pos or 1 ) &&
##
## pos: 2432 2434
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1286} ) && 0 ) )
##
&&
##
## pos: 2436 2451
( ( $pad{I1287} = $pos or 1 ) &&
##
## pos: 2436 2446
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1287} ) && 0 ) )
##
&&
##
## pos: 2451 2458
( ( $pad{I1288} = $pos or 1 ) &&
##
## pos: 2451 2453
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1288} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2459 2491
(
##
## pos: 2459 2465
( ( $pad{I1289} = $pos or 1 ) &&
##
## pos: 2461 2463
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1289} ) && 0 ) )
##
&&
##
## pos: 2465 2484
( ( $pad{I1290} = $pos or 1 ) &&
##
## pos: 2465 2481
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->double_quoted( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1290} ) && 0 ) )
##
&&
##
## pos: 2484 2491
( ( $pad{I1291} = $pos or 1 ) &&
##
## pos: 2484 2486
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1291} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2492 2527
(
##
## pos: 2492 2498
( ( $pad{I1292} = $pos or 1 ) &&
##
## pos: 2494 2496
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1292} ) && 0 ) )
##
&&
##
## pos: 2498 2520
( ( $pad{I1293} = $pos or 1 ) &&
##
## pos: 2498 2512
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1293} ) && 0 ) )
##
&&
##
## pos: 2520 2527
( ( $pad{I1294} = $pos or 1 ) &&
##
## pos: 2520 2522
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1294} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&& ##
## pos: 2528 2556
(
##
## pos: 2528 2534
( ( $pad{I1295} = $pos or 1 ) &&
##
## pos: 2530 2532
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1295} ) && 0 ) )
##
&&
##
## pos: 2534 2549
( ( $pad{I1296} = $pos or 1 ) &&
##
## pos: 2534 2547
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->metasyntax( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1296} ) && 0 ) )
##
&&
##
## pos: 2549 2556
( ( $pad{I1297} = $pos or 1 ) &&
##
## pos: 2549 2551
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1297} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1283} ) or 1 )
&&
##
## pos: 2557 2573
( ( $pad{I1298} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1298} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1282} ) && 0 ) )) {}; $bool = 1 }
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token char_range
*char_range =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2602 2653
(
( ( $pad{I1299} = $pos or 1 ) &&
##
## pos: 2603 2650
(
( $pad{I1300} = $pos or 1 )
&& (
##
## pos: 2609 2633
(
##
## pos: 2609 2614
( ( $pad{I1301} = $pos or 1 ) &&
##
## pos: 2611 2613
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1301} ) && 0 ) )
##
&&
##
## pos: 2614 2633
( ( $pad{I1302} = $pos or 1 ) &&
##
## pos: 2614 2628
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1302} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1300} ) or 1 )
&&
##
## pos: 2634 2650
( ( $pad{I1303} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1303} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1299} ) && 0 ) )
&& do { while (
( ( $pad{I1299} = $pos or 1 ) &&
##
## pos: 2603 2650
(
( $pad{I1300} = $pos or 1 )
&& (
##
## pos: 2609 2633
(
##
## pos: 2609 2614
( ( $pad{I1301} = $pos or 1 ) &&
##
## pos: 2611 2613
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1301} ) && 0 ) )
##
&&
##
## pos: 2614 2633
( ( $pad{I1302} = $pos or 1 ) &&
##
## pos: 2614 2628
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1302} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1300} ) or 1 )
&&
##
## pos: 2634 2650
( ( $pad{I1303} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1303} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1299} ) && 0 ) )) {}; $bool = 1 }
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token char_class
*char_class =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2679 2721
(
( $pad{I1304} = $pos or 1 )
&& (
##
## pos: 2680 2696
(
( ( $pad{I1305} = $pos or 1 ) &&
##
## pos: 2682 2690
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alpha( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1305} ) && 0 ) )
&& do { while (
( ( $pad{I1305} = $pos or 1 ) &&
##
## pos: 2682 2690
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alpha( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1305} ) && 0 ) )) {}; $bool = 1 }
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1304} ) or 1 )
&& ##
## pos: 2697 2721
(
##
## pos: 2697 2703
( ( $pad{I1306} = $pos or 1 ) &&
##
## pos: 2699 2701
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1306} ) && 0 ) )
##
&&
##
## pos: 2703 2718
( ( $pad{I1307} = $pos or 1 ) &&
##
## pos: 2703 2716
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_range( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1307} ) && 0 ) )
##
&&
##
## pos: 2718 2721
( ( $pad{I1308} = $pos or 1 ) &&
##
## pos: 2718 2720
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1308} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token string_code
*string_code =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 2771 3055
(
( ( $pad{I1309} = $pos or 1 ) &&
##
## pos: 2772 3052
(
( $pad{I1310} = $pos or 1 )
&& (
##
## pos: 2778 2802
(
##
## pos: 2778 2783
( ( $pad{I1311} = $pos or 1 ) &&
##
## pos: 2780 2782
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1311} ) && 0 ) )
##
&&
##
## pos: 2783 2802
( ( $pad{I1312} = $pos or 1 ) &&
##
## pos: 2783 2797
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1312} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2803 2831
(
##
## pos: 2803 2809
( ( $pad{I1313} = $pos or 1 ) &&
##
## pos: 2805 2807
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1313} ) && 0 ) )
##
&&
##
## pos: 2809 2824
( ( $pad{I1314} = $pos or 1 ) &&
##
## pos: 2809 2819
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1314} ) && 0 ) )
##
&&
##
## pos: 2824 2831
( ( $pad{I1315} = $pos or 1 ) &&
##
## pos: 2824 2826
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1315} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2832 2864
(
##
## pos: 2832 2838
( ( $pad{I1316} = $pos or 1 ) &&
##
## pos: 2834 2836
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1316} ) && 0 ) )
##
&&
##
## pos: 2838 2857
( ( $pad{I1317} = $pos or 1 ) &&
##
## pos: 2838 2854
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->double_quoted( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1317} ) && 0 ) )
##
&&
##
## pos: 2857 2864
( ( $pad{I1318} = $pos or 1 ) &&
##
## pos: 2857 2859
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1318} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2865 2903
(
##
## pos: 2865 2871
( ( $pad{I1319} = $pos or 1 ) &&
##
## pos: 2867 2869
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1319} ) && 0 ) )
##
&&
##
## pos: 2871 2896
( ( $pad{I1320} = $pos or 1 ) &&
##
## pos: 2872 2893
(
( $pad{I1321} = $pos or 1 )
&& (
##
## pos: 2872 2888
( ( $pad{I1322} = $pos or 1 ) &&
##
## pos: 2873 2887
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1322} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1321} ) or 1 )
&&
##
## pos: 2889 2893
( ( $pad{I1323} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1323} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1320} ) && 0 ) )
##
&&
##
## pos: 2896 2903
( ( $pad{I1324} = $pos or 1 ) &&
##
## pos: 2896 2898
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1324} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2904 2942
(
##
## pos: 2904 2910
( ( $pad{I1325} = $pos or 1 ) &&
##
## pos: 2906 2908
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1325} ) && 0 ) )
##
&&
##
## pos: 2910 2935
( ( $pad{I1326} = $pos or 1 ) &&
##
## pos: 2911 2932
(
( $pad{I1327} = $pos or 1 )
&& (
##
## pos: 2911 2927
( ( $pad{I1328} = $pos or 1 ) &&
##
## pos: 2912 2926
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1328} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1327} ) or 1 )
&&
##
## pos: 2928 2932
( ( $pad{I1329} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1329} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1326} ) && 0 ) )
##
&&
##
## pos: 2935 2942
( ( $pad{I1330} = $pos or 1 ) &&
##
## pos: 2935 2937
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1330} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2943 2981
(
##
## pos: 2943 2949
( ( $pad{I1331} = $pos or 1 ) &&
##
## pos: 2945 2947
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1331} ) && 0 ) )
##
&&
##
## pos: 2949 2974
( ( $pad{I1332} = $pos or 1 ) &&
##
## pos: 2950 2971
(
( $pad{I1333} = $pos or 1 )
&& (
##
## pos: 2950 2966
( ( $pad{I1334} = $pos or 1 ) &&
##
## pos: 2951 2965
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1334} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1333} ) or 1 )
&&
##
## pos: 2967 2971
( ( $pad{I1335} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1335} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1332} ) && 0 ) )
##
&&
##
## pos: 2974 2981
( ( $pad{I1336} = $pos or 1 ) &&
##
## pos: 2974 2976
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1336} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2982 3016
(
##
## pos: 2982 3009
( ( $pad{I1337} = $pos or 1 ) &&
##
## pos: 2985 3007
(
( $pad{I1338} = $pos or 1 )
&& (
##
## pos: 2985 2992
( ( $pad{I1339} = $pos or 1 ) &&
##
## pos: 2986 2991
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1339} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 2993 2997
( ( $pad{I1340} = $pos or 1 ) &&
##
## pos: 2994 2996
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1340} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 2998 3002
( ( $pad{I1341} = $pos or 1 ) &&
##
## pos: 2999 3001
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1341} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 3003 3007
( ( $pad{I1342} = $pos or 1 ) &&
##
## pos: 3004 3006
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1342} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1337} ) && 0 ) )
##
&&
##
## pos: 3009 3016
( ( $pad{I1343} = $pos or 1 ) &&
##
## pos: 3009 3011
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1343} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&&
##
## pos: 3017 3029
( ( $pad{I1344} = $pos or 1 ) &&
##
## pos: 3019 3024
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1344} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&&
##
## pos: 3030 3052
( ( $pad{I1345} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1345} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1309} ) && 0 ) )
&& do { while (
( ( $pad{I1309} = $pos or 1 ) &&
##
## pos: 2772 3052
(
( $pad{I1310} = $pos or 1 )
&& (
##
## pos: 2778 2802
(
##
## pos: 2778 2783
( ( $pad{I1311} = $pos or 1 ) &&
##
## pos: 2780 2782
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1311} ) && 0 ) )
##
&&
##
## pos: 2783 2802
( ( $pad{I1312} = $pos or 1 ) &&
##
## pos: 2783 2797
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1312} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2803 2831
(
##
## pos: 2803 2809
( ( $pad{I1313} = $pos or 1 ) &&
##
## pos: 2805 2807
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1313} ) && 0 ) )
##
&&
##
## pos: 2809 2824
( ( $pad{I1314} = $pos or 1 ) &&
##
## pos: 2809 2819
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1314} ) && 0 ) )
##
&&
##
## pos: 2824 2831
( ( $pad{I1315} = $pos or 1 ) &&
##
## pos: 2824 2826
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1315} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2832 2864
(
##
## pos: 2832 2838
( ( $pad{I1316} = $pos or 1 ) &&
##
## pos: 2834 2836
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1316} ) && 0 ) )
##
&&
##
## pos: 2838 2857
( ( $pad{I1317} = $pos or 1 ) &&
##
## pos: 2838 2854
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->double_quoted( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1317} ) && 0 ) )
##
&&
##
## pos: 2857 2864
( ( $pad{I1318} = $pos or 1 ) &&
##
## pos: 2857 2859
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1318} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2865 2903
(
##
## pos: 2865 2871
( ( $pad{I1319} = $pos or 1 ) &&
##
## pos: 2867 2869
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1319} ) && 0 ) )
##
&&
##
## pos: 2871 2896
( ( $pad{I1320} = $pos or 1 ) &&
##
## pos: 2872 2893
(
( $pad{I1321} = $pos or 1 )
&& (
##
## pos: 2872 2888
( ( $pad{I1322} = $pos or 1 ) &&
##
## pos: 2873 2887
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1322} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1321} ) or 1 )
&&
##
## pos: 2889 2893
( ( $pad{I1323} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1323} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1320} ) && 0 ) )
##
&&
##
## pos: 2896 2903
( ( $pad{I1324} = $pos or 1 ) &&
##
## pos: 2896 2898
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1324} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2904 2942
(
##
## pos: 2904 2910
( ( $pad{I1325} = $pos or 1 ) &&
##
## pos: 2906 2908
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1325} ) && 0 ) )
##
&&
##
## pos: 2910 2935
( ( $pad{I1326} = $pos or 1 ) &&
##
## pos: 2911 2932
(
( $pad{I1327} = $pos or 1 )
&& (
##
## pos: 2911 2927
( ( $pad{I1328} = $pos or 1 ) &&
##
## pos: 2912 2926
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1328} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1327} ) or 1 )
&&
##
## pos: 2928 2932
( ( $pad{I1329} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1329} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1326} ) && 0 ) )
##
&&
##
## pos: 2935 2942
( ( $pad{I1330} = $pos or 1 ) &&
##
## pos: 2935 2937
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1330} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2943 2981
(
##
## pos: 2943 2949
( ( $pad{I1331} = $pos or 1 ) &&
##
## pos: 2945 2947
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1331} ) && 0 ) )
##
&&
##
## pos: 2949 2974
( ( $pad{I1332} = $pos or 1 ) &&
##
## pos: 2950 2971
(
( $pad{I1333} = $pos or 1 )
&& (
##
## pos: 2950 2966
( ( $pad{I1334} = $pos or 1 ) &&
##
## pos: 2951 2965
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1334} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1333} ) or 1 )
&&
##
## pos: 2967 2971
( ( $pad{I1335} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1335} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1332} ) && 0 ) )
##
&&
##
## pos: 2974 2981
( ( $pad{I1336} = $pos or 1 ) &&
##
## pos: 2974 2976
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1336} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&& ##
## pos: 2982 3016
(
##
## pos: 2982 3009
( ( $pad{I1337} = $pos or 1 ) &&
##
## pos: 2985 3007
(
( $pad{I1338} = $pos or 1 )
&& (
##
## pos: 2985 2992
( ( $pad{I1339} = $pos or 1 ) &&
##
## pos: 2986 2991
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1339} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 2993 2997
( ( $pad{I1340} = $pos or 1 ) &&
##
## pos: 2994 2996
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1340} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 2998 3002
( ( $pad{I1341} = $pos or 1 ) &&
##
## pos: 2999 3001
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1341} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1338} ) or 1 )
&&
##
## pos: 3003 3007
( ( $pad{I1342} = $pos or 1 ) &&
##
## pos: 3004 3006
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1342} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1337} ) && 0 ) )
##
&&
##
## pos: 3009 3016
( ( $pad{I1343} = $pos or 1 ) &&
##
## pos: 3009 3011
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1343} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&&
##
## pos: 3017 3029
( ( $pad{I1344} = $pos or 1 ) &&
##
## pos: 3019 3024
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1344} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1310} ) or 1 )
&&
##
## pos: 3030 3052
( ( $pad{I1345} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1345} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1309} ) && 0 ) )) {}; $bool = 1 }
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token parsed_code
*parsed_code =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 3141 3187
(
##
## pos: 3141 3160
( ( $pad{I1346} = $pos or 1 ) &&
##
## pos: 3141 3155
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->string_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1346} ) && 0 ) )
##
&&
##
## pos: 3160 3187
( ( $pad{I1347} = $pos or 1 ) &&
##
## pos: 3160 3186
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return '{' . $_[0] . '}'; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1347} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token named_capture_body
*named_capture_body =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 3221 3712
(
( $pad{I1348} = $pos or 1 )
&& (
##
## pos: 3222 3354
(
##
## pos: 3222 3227
( ( $pad{I1349} = $pos or 1 ) &&
##
## pos: 3223 3225
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1349} ) && 0 ) )
##
&&
##
## pos: 3227 3241
( ( $pad{I1350} = $pos or 1 ) &&
##
## pos: 3227 3233
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1350} ) && 0 ) )
##
&&
##
## pos: 3241 3245
( ( $pad{I1351} = $pos or 1 ) &&
##
## pos: 3241 3243
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1351} ) && 0 ) )
##
&&
##
## pos: 3245 3354
( ( $pad{I1352} = $pos or 1 ) &&
##
## pos: 3245 3349
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
_pos => [ $_[0]->from, $_[0]->to ], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1352} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
&& ##
## pos: 3355 3402
(
##
## pos: 3355 3360
( ( $pad{I1353} = $pos or 1 ) &&
##
## pos: 3356 3358
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1353} ) && 0 ) )
##
&&
##
## pos: 3360 3374
( ( $pad{I1354} = $pos or 1 ) &&
##
## pos: 3360 3366
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1354} ) && 0 ) )
##
&&
##
## pos: 3374 3378
( ( $pad{I1355} = $pos or 1 ) &&
##
## pos: 3374 3376
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1355} ) && 0 ) )
##
&&
##
## pos: 3378 3402
( ( $pad{I1356} = $pos or 1 ) &&
##
## pos: 3378 3397
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1356} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
&& ##
## pos: 3403 3464
(
##
## pos: 3403 3408
( ( $pad{I1357} = $pos or 1 ) &&
##
## pos: 3404 3406
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1357} ) && 0 ) )
##
&&
##
## pos: 3408 3428
( ( $pad{I1358} = $pos or 1 ) &&
##
## pos: 3408 3426
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parse_metasyntax( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parse_metasyntax'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1358} ) && 0 ) )
##
&&
##
## pos: 3428 3464
( ( $pad{I1359} = $pos or 1 ) &&
##
## pos: 3428 3459
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1359} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
&& ##
## pos: 3465 3678
(
##
## pos: 3465 3470
( ( $pad{I1360} = $pos or 1 ) &&
##
## pos: 3466 3468
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1360} ) && 0 ) )
##
&&
##
## pos: 3470 3484
( ( $pad{I1361} = $pos or 1 ) &&
##
## pos: 3470 3480
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1361} ) && 0 ) )
##
&&
##
## pos: 3484 3495
( ( $pad{I1362} = $pos or 1 ) &&
##
## pos: 3484 3486
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1362} ) && 0 ) )
##
&&
##
## pos: 3495 3678
( ( $pad{I1363} = $pos or 1 ) &&
##
## pos: 3495 3673
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { metasyntax => {
metasyntax => "${$_[0]}",
},
_pos => [ $_[0]->from, $_[0]->to ],
};
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1363} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1348} ) or 1 )
&&
##
## pos: 3679 3712
( ( $pad{I1364} = $pos or 1 ) &&
##
## pos: 3680 3711
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
sub { die "invalid alias syntax"; }->( $m );
1;
}
##
|| ( ( $pos = $pad{I1364} ) && 0 ) )
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token parse_metasyntax
*parse_metasyntax =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 3748 6621
(
##
## pos: 3748 3792
( ( $pad{I1365} = $pos or 1 ) &&
##
## pos: 3748 3787
do{
my $from = $pos;
my $bool = ##
## pos: 3764 3786
(
( $pad{I1366} = $pos or 1 )
&& (
##
## pos: 3764 3769
( ( $pad{I1367} = $pos or 1 ) &&
##
## pos: 3765 3768
( ( substr( $s, $pos, 1 ) eq '!' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1367} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
&&
##
## pos: 3770 3775
( ( $pad{I1368} = $pos or 1 ) &&
##
## pos: 3771 3774
( ( substr( $s, $pos, 1 ) eq '?' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1368} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
&&
##
## pos: 3776 3781
( ( $pad{I1369} = $pos or 1 ) &&
##
## pos: 3777 3780
( ( substr( $s, $pos, 1 ) eq '.' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1369} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1366} ) or 1 )
&&
##
## pos: 3782 3786
( ( $pad{I1370} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I1370} ) && 0 ) )
##
)
)
##
;
my $match = Pugs::Runtime::Match->new(
{ str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
); $named{'modifier'} = $match;
$bool
}
##
|| ( ( $pos = $pad{I1365} ) && 0 ) )
##
&&
##
## pos: 3792 6621
( ( $pad{I1371} = $pos or 1 ) &&
##
## pos: 3793 6619
(
( $pad{I1372} = $pos or 1 )
&& (
##
## pos: 3793 4011
(
##
## pos: 3793 3807
( ( $pad{I1373} = $pos or 1 ) &&
##
## pos: 3802 3805
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1373} ) && 0 ) )
##
&&
##
## pos: 3807 3822
( ( $pad{I1374} = $pos or 1 ) &&
##
## pos: 3807 3820
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parsed_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parsed_code'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1374} ) && 0 ) )
##
&&
##
## pos: 3822 3835
( ( $pad{I1375} = $pos or 1 ) &&
##
## pos: 3822 3826
( ( substr( $s, $pos, 2 ) eq '}>' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1375} ) && 0 ) )
##
&&
##
## pos: 3835 4011
( ( $pad{I1376} = $pos or 1 ) &&
##
## pos: 3835 4006
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { closure => {
closure => ${ $_[0]->{qw(parsed_code)} },
modifier => ${ $_[0]->{qw(modifier)} },
},
_pos => [ $_[0]->from - 1, $_[0]->to ],
} }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1376} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
&& ##
## pos: 4012 4505
(
##
## pos: 4012 4042
( ( $pad{I1377} = $pos or 1 ) &&
##
## pos: 4021 4033
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1377} ) && 0 ) )
##
&&
##
## pos: 4042 4075
(
( ( $pad{I1378} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 4043 4064
(
##
## pos: 4043 4051
( ( $pad{I1379} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1379} ) && 0 ) )
##
&&
##
## pos: 4051 4064
( ( $pad{I1380} = $pos or 1 ) &&
##
## pos: 4051 4063
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1380} ) && 0 ) )
##
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
if ( $bool ) {
push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
}
$bool;
}
##
|| ( ( $pos = $pad{I1378} ) && 0 ) )
&& do { while (
( ( $pad{I1378} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 4043 4064
(
##
## pos: 4043 4051
( ( $pad{I1379} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1379} ) && 0 ) )
##
&&
##
## pos: 4051 4064
( ( $pad{I1380} = $pos or 1 ) &&
##
## pos: 4051 4063
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1380} ) && 0 ) )
##
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
if ( $bool ) {
push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
}
$bool;
}
##
|| ( ( $pos = $pad{I1378} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 4075 4086
( ( $pad{I1381} = $pos or 1 ) &&
##
## pos: 4075 4077
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1381} ) && 0 ) )
##
&&
##
## pos: 4086 4505
( ( $pad{I1382} = $pos or 1 ) &&
##
## pos: 4086 4500
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
if ( ${ $_[0]->{qw(modifier)} } eq '!' ) {
return {
negate => {
char_class => [
'+' . $_[0]->{qw(char_class)},
@{$_[0]->[0]}, # TODO - stringify
] } }
}
return {
char_class => [
'+' . $_[0]->{qw(char_class)},
@{$_[0]->[0]}, # TODO - stringify
] }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1382} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
&& ##
## pos: 4506 6394
(
##
## pos: 4506 4531
( ( $pad{I1383} = $pos or 1 ) &&
##
## pos: 4515 4522
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ident( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'ident'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1383} ) && 0 ) )
##
&&
##
## pos: 4531 6394
( ( $pad{I1384} = $pos or 1 ) &&
##
## pos: 4532 6388
(
( $pad{I1385} = $pos or 1 )
&& (
##
## pos: 4532 5149
(
##
## pos: 4532 4549
( ( $pad{I1386} = $pos or 1 ) &&
##
## pos: 4543 4548
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1386} ) && 0 ) )
##
&&
##
## pos: 4549 4556
( ( $pad{I1387} = $pos or 1 ) &&
##
## pos: 4549 4555
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1387} ) && 0 ) )
##
&&
##
## pos: 4556 4569
( ( $pad{I1388} = $pos or 1 ) &&
##
## pos: 4556 4558
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1388} ) && 0 ) )
##
&&
##
## pos: 4569 5149
( ( $pad{I1389} = $pos or 1 ) &&
##
## pos: 4569 5140
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
if ( ${ $_[0]->{qw(ident)} } eq 'before'
|| ${ $_[0]->{qw(ident)} } eq 'after'
) {
return { ${ $_[0]->{qw(ident)} } => {
rule => ${ $_[0]->{qw(rule)} }, modifier => ${ $_[0]->{qw(modifier)} },
}, _pos => [ $_[0]->from - 1, $_[0]->to ], }
}
return { metasyntax => {
metasyntax => ${ $_[0]->{qw(ident)} },
rule => ${ $_[0]->{qw(rule)} },
modifier => ${ $_[0]->{qw(modifier)} },
},
_pos => [ $_[0]->from - 1, $_[0]->to ],
}
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1389} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1385} ) or 1 )
&& ##
## pos: 5150 6129
(
##
## pos: 5150 5165
( ( $pad{I1390} = $pos or 1 ) &&
##
## pos: 5161 5164
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1390} ) && 0 ) )
##
&&
##
## pos: 5165 5182
(
( ( $pad{I1391} = $pos or 1 ) &&
##
## pos: 5165 5170
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1391} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 5182 5352
( ( $pad{I1392} = $pos or 1 ) &&
##
## pos: 5182 5341
do{
my $from = $pos;
my $bool = ##
## pos: 5193 5340
do { while (
( ( $pad{I1393} = $pos or 1 ) &&
##
## pos: 5207 5327
(
( $pad{I1394} = $pos or 1 )
&& (
##
## pos: 5221 5253
(
##
## pos: 5221 5226
( ( $pad{I1395} = $pos or 1 ) &&
##
## pos: 5223 5225
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1395} ) && 0 ) )
##
&&
##
## pos: 5226 5253
( ( $pad{I1396} = $pos or 1 ) &&
##
## pos: 5226 5240
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'special_char'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1396} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1394} ) or 1 )
&&
##
## pos: 5254 5302
( ( $pad{I1397} = $pos or 1 ) &&
##
## pos: 5256 5289
do{
my $match =
##
## pos: 5256 5289
do {
our $I1398;
our $I1398_sizes;
unless ( $I1398 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I1398_sizes = [ sort { $b <=> $a } keys %sizes ];
$I1398 = $hash;
}
my $match = 0;
my $key;
for ( @$I1398_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I1398->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I1398, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
last if $match;
}
}
if ( $match ) {
$pos = $match->to;
#print "match: $key at $pos = ", Dumper( $match->data );
$bool = 1;
}; # else { $bool = 0 }
$match;
}
##
;
if ( $match ) { push @{$named{'Pugs::Grammar::Rule::variables'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1397} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1394} ) or 1 )
&&
##
## pos: 5303 5327
( ( $pad{I1399} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1399} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1393} ) && 0 ) )) {}; $bool = 1 }
##
;
my $match = Pugs::Runtime::Match->new(
{ str => \$s, from => \$from, match => [], named => {}, bool => \1, to => \(0+$pos), capture => undef }
); $named{'str'} = $match;
$bool
}
##
|| ( ( $pos = $pad{I1392} ) && 0 ) )
##
&&
##
## pos: 5352 5365
( ( $pad{I1400} = $pos or 1 ) &&
##
## pos: 5352 5354
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1400} ) && 0 ) )
##
&&
##
## pos: 5365 6129
( ( $pad{I1401} = $pos or 1 ) &&
##
## pos: 5365 6120
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
if ( ${ $_[0]->{qw(ident)} } eq 'before'
|| ${ $_[0]->{qw(ident)} } eq 'after'
) {
return { ${ $_[0]->{qw(ident)} } => {
rule => { metasyntax => {
metasyntax => '\'' . ${ $_[0]->{qw(str)} } . '\'',
},
_pos => [ $_[0]->{qw(str)}->from, $_[0]->{qw(str)}->to ], },
modifier => ${ $_[0]->{qw(modifier)} },
_pos => [ $_[0]->from - 1, $_[0]->to ],
} }
}
return { metasyntax => {
metasyntax => ${ $_[0]->{qw(ident)} },
string => ${ $_[0]->{qw(str)} },
modifier => ${ $_[0]->{qw(modifier)} },
},
_pos => [ $_[0]->from - 1, $_[0]->to ],
}
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1401} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1385} ) or 1 )
&& ##
## pos: 6130 6388
(
##
## pos: 6130 6145
( ( $pad{I1402} = $pos or 1 ) &&
##
## pos: 6141 6143
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1402} ) && 0 ) )
##
&&
##
## pos: 6145 6160
( ( $pad{I1403} = $pos or 1 ) &&
##
## pos: 6145 6158
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parsed_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parsed_code'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1403} ) && 0 ) )
##
&&
##
## pos: 6160 6163
( ( $pad{I1404} = $pos or 1 ) &&
##
## pos: 6160 6162
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1404} ) && 0 ) )
##
&&
##
## pos: 6163 6176
( ( $pad{I1405} = $pos or 1 ) &&
##
## pos: 6163 6165
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1405} ) && 0 ) )
##
&&
##
## pos: 6176 6388
( ( $pad{I1406} = $pos or 1 ) &&
##
## pos: 6176 6379
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { call => {
method => ${ $_[0]->{qw(ident)} },
params => ${ $_[0]->{qw(parsed_code)} },
modifier => ${ $_[0]->{qw(modifier)} },
},
_pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1406} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1384} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1372} ) or 1 )
&& ##
## pos: 6395 6619
(
##
## pos: 6395 6418
( ( $pad{I1407} = $pos or 1 ) &&
##
## pos: 6404 6416
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->metasyntax( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'metasyntax'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1407} ) && 0 ) )
##
&&
##
## pos: 6418 6429
( ( $pad{I1408} = $pos or 1 ) &&
##
## pos: 6418 6420
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1408} ) && 0 ) )
##
&&
##
## pos: 6429 6619
( ( $pad{I1409} = $pos or 1 ) &&
##
## pos: 6429 6614
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { metasyntax => {
metasyntax => "${ $_[0]->{qw(metasyntax)} }",
modifier => ${ $_[0]->{qw(modifier)} },
},
_pos => [ $_[0]->from - 1, $_[0]->to ],
} }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1409} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1371} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token var1
*var1 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 6731 6833
(
##
## pos: 6731 6739
( ( $pad{I1410} = $pos or 1 ) &&
##
## pos: 6731 6738
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ident( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'ident'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1410} ) && 0 ) )
##
&&
##
## pos: 6739 6750
( ( $pad{I1411} = $pos or 1 ) &&
##
## pos: 6739 6741
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1411} ) && 0 ) )
##
&&
##
## pos: 6750 6833
( ( $pad{I1412} = $pos or 1 ) &&
##
## pos: 6750 6832
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { match_variable => '$' . $_[0]->{ident}, _pos => [$_[0]->from - 2, $_[0]->to], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1412} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$variables{'$<'} = sub { var1($_[1], $_[0], $_[2], $_[3]) };
# token var2
*var2 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 6925 7149
(
( $pad{I1413} = $pos or 1 )
&& (
##
## pos: 6925 7023
(
##
## pos: 6925 6943
(
( ( $pad{I1414} = $pos or 1 ) &&
##
## pos: 6925 6933
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1414} ) && 0 ) )
&& do { while (
( ( $pad{I1414} = $pos or 1 ) &&
##
## pos: 6925 6933
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1414} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 6943 7023
( ( $pad{I1415} = $pos or 1 ) &&
##
## pos: 6943 7018
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { match_variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1415} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1413} ) or 1 )
&& ##
## pos: 7024 7149
(
##
## pos: 7024 7045
(
( ( $pad{I1416} = $pos or 1 ) &&
##
## pos: 7033 7035
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1416} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7045 7079
(
( ( $pad{I1417} = $pos or 1 ) &&
##
## pos: 7046 7068
(
( $pad{I1418} = $pos or 1 )
&& (
##
## pos: 7046 7056
( ( $pad{I1419} = $pos or 1 ) &&
##
## pos: 7047 7055
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1419} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
&&
##
## pos: 7057 7060
( ( $pad{I1420} = $pos or 1 ) &&
##
## pos: 7058 7059
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1420} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
&& ##
## pos: 7061 7068
(
##
## pos: 7061 7065
( ( $pad{I1421} = $pos or 1 ) &&
##
## pos: 7062 7064
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1421} ) && 0 ) )
##
&&
##
## pos: 7065 7068
( ( $pad{I1422} = $pos or 1 ) &&
##
## pos: 7065 7067
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1422} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1417} ) && 0 ) )
&& do { while (
( ( $pad{I1417} = $pos or 1 ) &&
##
## pos: 7046 7068
(
( $pad{I1418} = $pos or 1 )
&& (
##
## pos: 7046 7056
( ( $pad{I1419} = $pos or 1 ) &&
##
## pos: 7047 7055
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1419} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
&&
##
## pos: 7057 7060
( ( $pad{I1420} = $pos or 1 ) &&
##
## pos: 7058 7059
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1420} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1418} ) or 1 )
&& ##
## pos: 7061 7068
(
##
## pos: 7061 7065
( ( $pad{I1421} = $pos or 1 ) &&
##
## pos: 7062 7064
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1421} ) && 0 ) )
##
&&
##
## pos: 7065 7068
( ( $pad{I1422} = $pos or 1 ) &&
##
## pos: 7065 7067
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1422} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1417} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7079 7149
( ( $pad{I1423} = $pos or 1 ) &&
##
## pos: 7079 7148
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { variable => '$' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1423} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$variables{'$'} = sub { var2($_[1], $_[0], $_[2], $_[3]) };
# token var3
*var3 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 7240 7462
(
( $pad{I1424} = $pos or 1 )
&& (
##
## pos: 7240 7337
(
##
## pos: 7240 7258
(
( ( $pad{I1425} = $pos or 1 ) &&
##
## pos: 7240 7248
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1425} ) && 0 ) )
&& do { while (
( ( $pad{I1425} = $pos or 1 ) &&
##
## pos: 7240 7248
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1425} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7258 7337
( ( $pad{I1426} = $pos or 1 ) &&
##
## pos: 7258 7332
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { match_variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1426} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1424} ) or 1 )
&& ##
## pos: 7338 7462
(
##
## pos: 7338 7359
(
( ( $pad{I1427} = $pos or 1 ) &&
##
## pos: 7347 7349
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1427} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7359 7393
(
( ( $pad{I1428} = $pos or 1 ) &&
##
## pos: 7360 7382
(
( $pad{I1429} = $pos or 1 )
&& (
##
## pos: 7360 7370
( ( $pad{I1430} = $pos or 1 ) &&
##
## pos: 7361 7369
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1430} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
&&
##
## pos: 7371 7374
( ( $pad{I1431} = $pos or 1 ) &&
##
## pos: 7372 7373
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1431} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
&& ##
## pos: 7375 7382
(
##
## pos: 7375 7379
( ( $pad{I1432} = $pos or 1 ) &&
##
## pos: 7376 7378
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1432} ) && 0 ) )
##
&&
##
## pos: 7379 7382
( ( $pad{I1433} = $pos or 1 ) &&
##
## pos: 7379 7381
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1433} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1428} ) && 0 ) )
&& do { while (
( ( $pad{I1428} = $pos or 1 ) &&
##
## pos: 7360 7382
(
( $pad{I1429} = $pos or 1 )
&& (
##
## pos: 7360 7370
( ( $pad{I1430} = $pos or 1 ) &&
##
## pos: 7361 7369
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1430} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
&&
##
## pos: 7371 7374
( ( $pad{I1431} = $pos or 1 ) &&
##
## pos: 7372 7373
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1431} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1429} ) or 1 )
&& ##
## pos: 7375 7382
(
##
## pos: 7375 7379
( ( $pad{I1432} = $pos or 1 ) &&
##
## pos: 7376 7378
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1432} ) && 0 ) )
##
&&
##
## pos: 7379 7382
( ( $pad{I1433} = $pos or 1 ) &&
##
## pos: 7379 7381
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1433} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1428} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7393 7462
( ( $pad{I1434} = $pos or 1 ) &&
##
## pos: 7393 7461
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { variable => '@' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1434} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$variables{'@'} = sub { var3($_[1], $_[0], $_[2], $_[3]) };
# token var4
*var4 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 7553 7773
(
( $pad{I1435} = $pos or 1 )
&& (
##
## pos: 7553 7649
(
##
## pos: 7553 7571
(
( ( $pad{I1436} = $pos or 1 ) &&
##
## pos: 7553 7561
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1436} ) && 0 ) )
&& do { while (
( ( $pad{I1436} = $pos or 1 ) &&
##
## pos: 7553 7561
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->digit( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1436} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7571 7649
( ( $pad{I1437} = $pos or 1 ) &&
##
## pos: 7571 7644
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { match_variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1437} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1435} ) or 1 )
&& ##
## pos: 7650 7773
(
##
## pos: 7650 7671
(
( ( $pad{I1438} = $pos or 1 ) &&
##
## pos: 7659 7661
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1438} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7671 7705
(
( ( $pad{I1439} = $pos or 1 ) &&
##
## pos: 7672 7694
(
( $pad{I1440} = $pos or 1 )
&& (
##
## pos: 7672 7682
( ( $pad{I1441} = $pos or 1 ) &&
##
## pos: 7673 7681
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1441} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
&&
##
## pos: 7683 7686
( ( $pad{I1442} = $pos or 1 ) &&
##
## pos: 7684 7685
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1442} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
&& ##
## pos: 7687 7694
(
##
## pos: 7687 7691
( ( $pad{I1443} = $pos or 1 ) &&
##
## pos: 7688 7690
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1443} ) && 0 ) )
##
&&
##
## pos: 7691 7694
( ( $pad{I1444} = $pos or 1 ) &&
##
## pos: 7691 7693
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1444} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1439} ) && 0 ) )
&& do { while (
( ( $pad{I1439} = $pos or 1 ) &&
##
## pos: 7672 7694
(
( $pad{I1440} = $pos or 1 )
&& (
##
## pos: 7672 7682
( ( $pad{I1441} = $pos or 1 ) &&
##
## pos: 7673 7681
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->alnum( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1441} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
&&
##
## pos: 7683 7686
( ( $pad{I1442} = $pos or 1 ) &&
##
## pos: 7684 7685
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1442} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1440} ) or 1 )
&& ##
## pos: 7687 7694
(
##
## pos: 7687 7691
( ( $pad{I1443} = $pos or 1 ) &&
##
## pos: 7688 7690
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1443} ) && 0 ) )
##
&&
##
## pos: 7691 7694
( ( $pad{I1444} = $pos or 1 ) &&
##
## pos: 7691 7693
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1444} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1439} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7705 7773
( ( $pad{I1445} = $pos or 1 ) &&
##
## pos: 7705 7772
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { variable => '%' . $_[0], _pos => [$_[0]->from - 1, $_[0]->to] } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1445} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$variables{'%'} = sub { var4($_[1], $_[0], $_[2], $_[3]) };
# token term1
*term1 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 7974 8124
( ( $pad{I1446} = $pos or 1 ) &&
##
## pos: 7974 8123
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { metasyntax => {
metasyntax => 'null',
},
_pos => [ $_[0]->from, $_[0]->to ],
} }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1446} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'{*}'} = sub { term1($_[1], $_[0], $_[2], $_[3]) };
# token term2
*term2 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 8220 8435
(
##
## pos: 8220 8235
( ( $pad{I1447} = $pos or 1 ) &&
##
## pos: 8220 8230
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->literal( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1447} ) && 0 ) )
##
&&
##
## pos: 8235 8246
( ( $pad{I1448} = $pos or 1 ) &&
##
## pos: 8235 8237
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1448} ) && 0 ) )
##
&&
##
## pos: 8246 8435
( ( $pad{I1449} = $pos or 1 ) &&
##
## pos: 8246 8434
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
metasyntax => {
metasyntax => '\'' . ${$_[0]},
},
_pos => [ $_[0]->from - 1, $_[0]->to ],
};
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1449} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'\''} = sub { term2($_[1], $_[0], $_[2], $_[3]) };
# token term3
*term3 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 8530 8646
(
##
## pos: 8530 8537
( ( $pad{I1450} = $pos or 1 ) &&
##
## pos: 8530 8536
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1450} ) && 0 ) )
##
&&
##
## pos: 8537 8548
( ( $pad{I1451} = $pos or 1 ) &&
##
## pos: 8537 8539
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1451} ) && 0 ) )
##
&&
##
## pos: 8548 8646
( ( $pad{I1452} = $pos or 1 ) &&
##
## pos: 8548 8645
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { capturing_group => ${ $_[0]->{qw(rule)} },
_pos => [ $_[0]->from - 1, $_[0]->to ], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1452} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'('} = sub { term3($_[1], $_[0], $_[2], $_[3]) };
# token term4
*term4 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 8740 8861
(
##
## pos: 8740 8748
( ( $pad{I1453} = $pos or 1 ) &&
##
## pos: 8740 8746
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1453} ) && 0 ) )
##
&&
##
## pos: 8748 8761
( ( $pad{I1454} = $pos or 1 ) &&
##
## pos: 8748 8752
( ( substr( $s, $pos, 2 ) eq ')>' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1454} ) && 0 ) )
##
&&
##
## pos: 8761 8861
( ( $pad{I1455} = $pos or 1 ) &&
##
## pos: 8761 8860
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { capture_as_result => ${ $_[0]->{qw(rule)} },
_pos => [ $_[0]->from - 2, $_[0]->to ], }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1455} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<('} = sub { term4($_[1], $_[0], $_[2], $_[3]) };
# token term5
*term5 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 8956 9216
(
##
## pos: 8956 8977
( ( $pad{I1456} = $pos or 1 ) &&
##
## pos: 8956 8968
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1456} ) && 0 ) )
##
&&
##
## pos: 8977 9010
do { while (
( ( $pad{I1457} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 8978 8999
(
##
## pos: 8978 8986
( ( $pad{I1458} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1458} ) && 0 ) )
##
&&
##
## pos: 8986 8999
( ( $pad{I1459} = $pos or 1 ) &&
##
## pos: 8986 8998
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1459} ) && 0 ) )
##
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
if ( $bool ) {
push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
}
$bool;
}
##
|| ( ( $pos = $pad{I1457} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9010 9021
( ( $pad{I1460} = $pos or 1 ) &&
##
## pos: 9010 9012
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1460} ) && 0 ) )
##
&&
##
## pos: 9021 9216
( ( $pad{I1461} = $pos or 1 ) &&
##
## pos: 9021 9215
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
_pos => [ $_[0]->from - 2, $_[0]->to ],
char_class => [
'+' . $_[0]->{qw(char_class)},
@{$_[0]->[0]}, # TODO - stringify
] }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1461} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<+'} = sub { term5($_[1], $_[0], $_[2], $_[3]) };
# token term6
*term6 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 9311 9571
(
##
## pos: 9311 9332
( ( $pad{I1462} = $pos or 1 ) &&
##
## pos: 9311 9323
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1462} ) && 0 ) )
##
&&
##
## pos: 9332 9365
do { while (
( ( $pad{I1463} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 9333 9354
(
##
## pos: 9333 9341
( ( $pad{I1464} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1464} ) && 0 ) )
##
&&
##
## pos: 9341 9354
( ( $pad{I1465} = $pos or 1 ) &&
##
## pos: 9341 9353
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1465} ) && 0 ) )
##
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
if ( $bool ) {
push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
}
$bool;
}
##
|| ( ( $pos = $pad{I1463} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9365 9376
( ( $pad{I1466} = $pos or 1 ) &&
##
## pos: 9365 9367
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1466} ) && 0 ) )
##
&&
##
## pos: 9376 9571
( ( $pad{I1467} = $pos or 1 ) &&
##
## pos: 9376 9570
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
_pos => [ $_[0]->from - 2, $_[0]->to ],
char_class => [
'-' . $_[0]->{qw(char_class)},
@{$_[0]->[0]}, # TODO - stringify
] }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1467} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<-'} = sub { term6($_[1], $_[0], $_[2], $_[3]) };
# token term7
*term7 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 9666 9937
(
##
## pos: 9666 9680
( ( $pad{I1468} = $pos or 1 ) &&
##
## pos: 9666 9678
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_range( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_range'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1468} ) && 0 ) )
##
&&
##
## pos: 9680 9691
( ( $pad{I1469} = $pos or 1 ) &&
##
## pos: 9680 9682
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1469} ) && 0 ) )
##
&&
##
## pos: 9691 9724
do { while (
( ( $pad{I1470} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 9692 9713
(
##
## pos: 9692 9700
( ( $pad{I1471} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1471} ) && 0 ) )
##
&&
##
## pos: 9700 9713
( ( $pad{I1472} = $pos or 1 ) &&
##
## pos: 9700 9712
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->char_class( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'char_class'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1472} ) && 0 ) )
##
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
if ( $bool ) {
push @{ $match[ 0 ] }, Pugs::Runtime::Match->new( $hash );
}
$bool;
}
##
|| ( ( $pos = $pad{I1470} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9724 9735
( ( $pad{I1473} = $pos or 1 ) &&
##
## pos: 9724 9726
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1473} ) && 0 ) )
##
&&
##
## pos: 9735 9937
( ( $pad{I1474} = $pos or 1 ) &&
##
## pos: 9735 9936
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
_pos => [ $_[0]->from - 2, $_[0]->to ],
char_class => [
'+[' . $_[0]->{qw(char_range)} . ']',
@{$_[0]->[0]}, # TODO - stringify
] }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1474} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<['} = sub { term7($_[1], $_[0], $_[2], $_[3]) };
# token term8
*term8 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10032 10091
(
##
## pos: 10032 10059
( ( $pad{I1475} = $pos or 1 ) &&
##
## pos: 10032 10050
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parse_metasyntax( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parse_metasyntax'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1475} ) && 0 ) )
##
&&
##
## pos: 10059 10091
( ( $pad{I1476} = $pos or 1 ) &&
##
## pos: 10059 10090
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(parse_metasyntax)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1476} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<'} = sub { term8($_[1], $_[0], $_[2], $_[3]) };
# token term9
*term9 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10185 10375
(
##
## pos: 10185 10200
( ( $pad{I1477} = $pos or 1 ) &&
##
## pos: 10185 10198
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parsed_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parsed_code'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1477} ) && 0 ) )
##
&&
##
## pos: 10200 10211
( ( $pad{I1478} = $pos or 1 ) &&
##
## pos: 10200 10202
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1478} ) && 0 ) )
##
&&
##
## pos: 10211 10375
( ( $pad{I1479} = $pos or 1 ) &&
##
## pos: 10211 10374
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { closure => {
closure => ${ $_[0]->{qw(parsed_code)} },
modifier => 'plain',
},
_pos => [$_[0]->from - 1, $_[0]->to],
} }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1479} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'{'} = sub { term9($_[1], $_[0], $_[2], $_[3]) };
# token term10
*term10 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10470 10521
(
##
## pos: 10470 10493
( ( $pad{I1480} = $pos or 1 ) &&
##
## pos: 10470 10484
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->special_char( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'special_char'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1480} ) && 0 ) )
##
&&
##
## pos: 10493 10521
( ( $pad{I1481} = $pos or 1 ) &&
##
## pos: 10493 10520
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(special_char)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1481} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'\\'} = sub { term10($_[1], $_[0], $_[2], $_[3]) };
# token term11
*term11 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10618 10677
( ( $pad{I1482} = $pos or 1 ) &&
##
## pos: 10618 10676
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { 'dot' => 1, _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1482} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'.'} = sub { term11($_[1], $_[0], $_[2], $_[3]) };
# token term12
*term12 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10773 10811
(
##
## pos: 10773 10780
( ( $pad{I1483} = $pos or 1 ) &&
##
## pos: 10773 10779
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1483} ) && 0 ) )
##
&&
##
## pos: 10780 10791
( ( $pad{I1484} = $pos or 1 ) &&
##
## pos: 10780 10782
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1484} ) && 0 ) )
##
&&
##
## pos: 10791 10811
( ( $pad{I1485} = $pos or 1 ) &&
##
## pos: 10791 10810
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(rule)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1485} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'['} = sub { term12($_[1], $_[0], $_[2], $_[3]) };
# token term13
*term13 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 10899 10962
( ( $pad{I1486} = $pos or 1 ) &&
##
## pos: 10899 10961
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => ':::', _pos => [$_[0]->from - 3, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1486} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':::'} = sub { term13($_[1], $_[0], $_[2], $_[3]) };
# token term14
*term14 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11052 11114
( ( $pad{I1487} = $pos or 1 ) &&
##
## pos: 11052 11113
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => ':?', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1487} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':?'} = sub { term14($_[1], $_[0], $_[2], $_[3]) };
# token term15
*term15 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11203 11265
( ( $pad{I1488} = $pos or 1 ) &&
##
## pos: 11203 11264
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => ':+', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1488} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':+'} = sub { term15($_[1], $_[0], $_[2], $_[3]) };
# token term16
*term16 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11354 11416
( ( $pad{I1489} = $pos or 1 ) &&
##
## pos: 11354 11415
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '::', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1489} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'::'} = sub { term16($_[1], $_[0], $_[2], $_[3]) };
# token term17
*term17 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11505 11566
( ( $pad{I1490} = $pos or 1 ) &&
##
## pos: 11505 11565
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => ':', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1490} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':'} = sub { term17($_[1], $_[0], $_[2], $_[3]) };
# token term18
*term18 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11654 11716
( ( $pad{I1491} = $pos or 1 ) &&
##
## pos: 11654 11715
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '$$', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1491} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'$$'} = sub { term18($_[1], $_[0], $_[2], $_[3]) };
# token term19
*term19 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11805 11867
( ( $pad{I1492} = $pos or 1 ) &&
##
## pos: 11805 11866
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '$', _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1492} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'$'} = sub { term19($_[1], $_[0], $_[2], $_[3]) };
# token term20
*term20 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 11955 12017
( ( $pad{I1493} = $pos or 1 ) &&
##
## pos: 11955 12016
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '^^', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1493} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'^^'} = sub { term20($_[1], $_[0], $_[2], $_[3]) };
# token term21
*term21 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 12106 12167
( ( $pad{I1494} = $pos or 1 ) &&
##
## pos: 12106 12166
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '^', _pos => [$_[0]->from - 1, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1494} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'^'} = sub { term21($_[1], $_[0], $_[2], $_[3]) };
# token term22
*term22 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 12255 12317
( ( $pad{I1495} = $pos or 1 ) &&
##
## pos: 12255 12316
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '>>', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1495} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'>>'} = sub { term22($_[1], $_[0], $_[2], $_[3]) };
# Code block from grammar spec
$rule_terms{'»'} = sub { term22($_[1], $_[0], $_[2], $_[3]) };
# token term24
*term24 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 12559 12621
( ( $pad{I1496} = $pos or 1 ) &&
##
## pos: 12559 12620
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { colon => '<<', _pos => [$_[0]->from - 2, $_[0]->to], } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1496} ) && 0 ) )
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{'<<'} = sub { term24($_[1], $_[0], $_[2], $_[3]) };
# Code block from grammar spec
$rule_terms{'«'} = sub { term24($_[1], $_[0], $_[2], $_[3]) };
# token term26
*term26 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 12871 13048
(
##
## pos: 12871 12877
( ( $pad{I1497} = $pos or 1 ) &&
##
## pos: 12871 12876
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1497} ) && 0 ) )
##
&&
##
## pos: 12877 12892
( ( $pad{I1498} = $pos or 1 ) &&
##
## pos: 12877 12883
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1498} ) && 0 ) )
##
&&
##
## pos: 12892 13048
( ( $pad{I1499} = $pos or 1 ) &&
##
## pos: 12892 13047
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
modifier => {
modifier => 'ignorecase',
rule => ${ $_[0]->{qw(rule)} },
}
},
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1499} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':i'} = sub { term26($_[1], $_[0], $_[2], $_[3]) };
# Code block from grammar spec
$rule_terms{':ignorecase'} = sub { term26($_[1], $_[0], $_[2], $_[3]) };
# token term28
*term28 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 13328 13405
(
##
## pos: 13328 13334
( ( $pad{I1500} = $pos or 1 ) &&
##
## pos: 13328 13333
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1500} ) && 0 ) )
##
&&
##
## pos: 13334 13349
( ( $pad{I1501} = $pos or 1 ) &&
##
## pos: 13334 13340
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1501} ) && 0 ) )
##
&&
##
## pos: 13349 13405
( ( $pad{I1502} = $pos or 1 ) &&
##
## pos: 13349 13404
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'sigspace', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1502} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':s'} = sub { term28($_[1], $_[0], $_[2], $_[3]) };
# Code block from grammar spec
$rule_terms{':sigspace'} = sub { term28($_[1], $_[0], $_[2], $_[3]) };
# token term30
*term30 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 13684 13758
(
##
## pos: 13684 13690
( ( $pad{I1503} = $pos or 1 ) &&
##
## pos: 13684 13689
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1503} ) && 0 ) )
##
&&
##
## pos: 13690 13705
( ( $pad{I1504} = $pos or 1 ) &&
##
## pos: 13690 13696
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1504} ) && 0 ) )
##
&&
##
## pos: 13705 13758
( ( $pad{I1505} = $pos or 1 ) &&
##
## pos: 13705 13757
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'Perl5', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1505} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':P5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) };
# Code block from grammar spec
$rule_terms{':Perl5'} = sub { term30($_[1], $_[0], $_[2], $_[3]) };
# token term32
*term32 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 14031 14105
(
##
## pos: 14031 14037
( ( $pad{I1506} = $pos or 1 ) &&
##
## pos: 14031 14036
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1506} ) && 0 ) )
##
&&
##
## pos: 14037 14052
( ( $pad{I1507} = $pos or 1 ) &&
##
## pos: 14037 14043
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1507} ) && 0 ) )
##
&&
##
## pos: 14052 14105
( ( $pad{I1508} = $pos or 1 ) &&
##
## pos: 14052 14104
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'bytes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1508} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':bytes'} = sub { term32($_[1], $_[0], $_[2], $_[3]) };
# token term33
*term33 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 14206 14280
(
##
## pos: 14206 14212
( ( $pad{I1509} = $pos or 1 ) &&
##
## pos: 14206 14211
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1509} ) && 0 ) )
##
&&
##
## pos: 14212 14227
( ( $pad{I1510} = $pos or 1 ) &&
##
## pos: 14212 14218
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1510} ) && 0 ) )
##
&&
##
## pos: 14227 14280
( ( $pad{I1511} = $pos or 1 ) &&
##
## pos: 14227 14279
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'codes', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1511} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':codes'} = sub { term33($_[1], $_[0], $_[2], $_[3]) };
# token term34
*term34 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 14381 14456
(
##
## pos: 14381 14387
( ( $pad{I1512} = $pos or 1 ) &&
##
## pos: 14381 14386
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1512} ) && 0 ) )
##
&&
##
## pos: 14387 14402
( ( $pad{I1513} = $pos or 1 ) &&
##
## pos: 14387 14393
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1513} ) && 0 ) )
##
&&
##
## pos: 14402 14456
( ( $pad{I1514} = $pos or 1 ) &&
##
## pos: 14402 14455
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'graphs', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1514} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':graphs'} = sub { term34($_[1], $_[0], $_[2], $_[3]) };
# token term35
*term35 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 14558 14633
(
##
## pos: 14558 14564
( ( $pad{I1515} = $pos or 1 ) &&
##
## pos: 14558 14563
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1515} ) && 0 ) )
##
&&
##
## pos: 14564 14579
( ( $pad{I1516} = $pos or 1 ) &&
##
## pos: 14564 14570
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1516} ) && 0 ) )
##
&&
##
## pos: 14579 14633
( ( $pad{I1517} = $pos or 1 ) &&
##
## pos: 14579 14632
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { modifier => 'langs', rule => ${ $_[0]->{qw(rule)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1517} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# Code block from grammar spec
$rule_terms{':langs'} = sub { term35($_[1], $_[0], $_[2], $_[3]) };
# token term
*term =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 14728 15530
(
( $pad{I1518} = $pos or 1 )
&& (
##
## pos: 14729 15207
(
##
## pos: 14729 14772
( ( $pad{I1519} = $pos or 1 ) &&
##
## pos: 14731 14764
do{
my $match =
##
## pos: 14731 14764
do {
our $I1520;
our $I1520_sizes;
unless ( $I1520 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I1520_sizes = [ sort { $b <=> $a } keys %sizes ];
$I1520 = $hash;
}
my $match = 0;
my $key;
for ( @$I1520_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I1520->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I1520, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
last if $match;
}
}
if ( $match ) {
$pos = $match->to;
#print "match: $key at $pos = ", Dumper( $match->data );
$bool = 1;
}; # else { $bool = 0 }
$match;
}
##
;
if ( $match ) { $named{'Pugs::Grammar::Rule::variables'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1519} ) && 0 ) )
##
&&
##
## pos: 14772 15207
( ( $pad{I1521} = $pos or 1 ) &&
##
## pos: 14773 15201
(
( $pad{I1522} = $pos or 1 )
&& (
##
## pos: 14773 15114
(
##
## pos: 14773 14782
(
( ( $pad{I1523} = $pos or 1 ) &&
##
## pos: 14775 14780
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1523} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 14782 14787
( ( $pad{I1524} = $pos or 1 ) &&
##
## pos: 14782 14786
( ( substr( $s, $pos, 2 ) eq ':=' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1524} ) && 0 ) )
##
&&
##
## pos: 14787 14794
(
( ( $pad{I1525} = $pos or 1 ) &&
##
## pos: 14787 14792
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1525} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 14794 14825
( ( $pad{I1526} = $pos or 1 ) &&
##
## pos: 14794 14814
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->named_capture_body( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'named_capture_body'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1526} ) && 0 ) )
##
&&
##
## pos: 14825 15114
( ( $pad{I1527} = $pos or 1 ) &&
##
## pos: 14825 15106
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
return { named_capture => {
rule => ${ $_[0]->{qw(named_capture_body)} },
ident => ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} },
},
_pos => [ $_[0]->from, $_[0]->to ],
};
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1527} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1522} ) or 1 )
&&
##
## pos: 15115 15201
( ( $pad{I1528} = $pos or 1 ) &&
##
## pos: 15126 15193
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
return ${ $_[0]->{qw(Pugs::Grammar::Rule::variables)} }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1528} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1521} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1518} ) or 1 )
&& ##
## pos: 15208 15376
(
##
## pos: 15208 15253
( ( $pad{I1529} = $pos or 1 ) &&
##
## pos: 15210 15244
do{
my $match =
##
## pos: 15210 15244
do {
our $I1530;
our $I1530_sizes;
unless ( $I1530 ) {
my $hash = \%Pugs::Grammar::Rule::rule_terms;
my %sizes = map { length($_) => 1 } keys %$hash;
$I1530_sizes = [ sort { $b <=> $a } keys %sizes ];
$I1530 = $hash;
}
my $match = 0;
my $key;
for ( @$I1530_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I1530->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I1530, $key )->( $s, $grammar, { p => ( $pos + $_ ), positionals => [ ], args => { KEY => $key } }, undef );
last if $match;
}
}
if ( $match ) {
$pos = $match->to;
#print "match: $key at $pos = ", Dumper( $match->data );
$bool = 1;
}; # else { $bool = 0 }
$match;
}
##
;
if ( $match ) { $named{'Pugs::Grammar::Rule::rule_terms'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1529} ) && 0 ) )
##
&&
##
## pos: 15253 15376
( ( $pad{I1531} = $pos or 1 ) &&
##
## pos: 15253 15371
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
#print "term: ", Dumper( $_[0]->data );
return ${ $_[0]->{qw(Pugs::Grammar::Rule::rule_terms)} }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1531} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1518} ) or 1 )
&& ##
## pos: 15377 15530
(
##
## pos: 15377 15424
( ( $pad{I1532} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]\}\)\>\:\?\+\*\|\&]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1532} ) && 0 ) )
##
&&
##
## pos: 15424 15530
( ( $pad{I1533} = $pos or 1 ) &&
##
## pos: 15424 15529
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
return { 'constant' => ${$_[0]},
_pos => [ $_[0]->from, $_[0]->to ] }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1533} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token quant
*quant =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 15551 15665
(
( $pad{I1534} = $pos or 1 )
&& (
##
## pos: 15552 15643
(
##
## pos: 15552 15560
( ( $pad{I1535} = $pos or 1 ) &&
##
## pos: 15555 15559
( ( substr( $s, $pos, 2 ) eq '**' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1535} ) && 0 ) )
##
&&
##
## pos: 15560 15567
(
( ( $pad{I1536} = $pos or 1 ) &&
##
## pos: 15560 15565
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1536} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 15567 15571
( ( $pad{I1537} = $pos or 1 ) &&
##
## pos: 15567 15569
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1537} ) && 0 ) )
##
&&
##
## pos: 15571 15586
( ( $pad{I1538} = $pos or 1 ) &&
##
## pos: 15571 15584
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->parsed_code( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'parsed_code'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1538} ) && 0 ) )
##
&&
##
## pos: 15586 15597
( ( $pad{I1539} = $pos or 1 ) &&
##
## pos: 15586 15588
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1539} ) && 0 ) )
##
&&
##
## pos: 15597 15643
( ( $pad{I1540} = $pos or 1 ) &&
##
## pos: 15597 15638
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { closure => ${ $_[0]->{qw(parsed_code)} } } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1540} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1534} ) or 1 )
&& ##
## pos: 15644 15665
(
( ( $pad{I1541} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\*\+]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1541} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token quantifier
*quantifier =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 15691 16457
(
##
## pos: 15691 15716
( ( $pad{I1542} = $pos or 1 ) &&
##
## pos: 15691 15711
do{
my $match = Pugs::Runtime::Match->new( do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15704 15710
(
( ( $pad{I1543} = $pos or 1 ) &&
##
## pos: 15704 15709
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1543} ) && 0 ) )
|| ( $bool = 1 )
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
} );
if ( $match ) { $named{'ws1'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1542} ) && 0 ) )
##
&&
##
## pos: 15716 15751
( ( $pad{I1544} = $pos or 1 ) &&
##
## pos: 15716 15746
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 15726 15745
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15726 15745
( ( $pad{I1545} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\}\]\)]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1545} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1544} ) && 0 ) )
##
&&
##
## pos: 15751 15762
( ( $pad{I1546} = $pos or 1 ) &&
##
## pos: 15751 15757
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->term( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'term'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1546} ) && 0 ) )
##
&&
##
## pos: 15762 15787
( ( $pad{I1547} = $pos or 1 ) &&
##
## pos: 15762 15782
do{
my $match = Pugs::Runtime::Match->new( do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15775 15781
(
( ( $pad{I1548} = $pos or 1 ) &&
##
## pos: 15775 15780
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1548} ) && 0 ) )
|| ( $bool = 1 )
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
} );
if ( $match ) { $named{'ws2'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1547} ) && 0 ) )
##
&&
##
## pos: 15787 15799
( ( $pad{I1549} = $pos or 1 ) &&
##
## pos: 15787 15794
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->quant( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'quant'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1549} ) && 0 ) )
##
&&
##
## pos: 15799 15833
( ( $pad{I1550} = $pos or 1 ) &&
##
## pos: 15799 15828
do{
my $match = Pugs::Runtime::Match->new( do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15813 15827
(
( ( $pad{I1551} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\+]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1551} ) && 0 ) )
|| ( $bool = 1 )
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
} );
if ( $match ) { $named{'greedy'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1550} ) && 0 ) )
##
&&
##
## pos: 15833 15858
( ( $pad{I1552} = $pos or 1 ) &&
##
## pos: 15833 15853
do{
my $match = Pugs::Runtime::Match->new( do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15846 15852
(
( ( $pad{I1553} = $pos or 1 ) &&
##
## pos: 15846 15851
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1553} ) && 0 ) )
|| ( $bool = 1 )
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
} );
if ( $match ) { $named{'ws3'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1552} ) && 0 ) )
##
&&
##
## pos: 15858 16457
( ( $pad{I1554} = $pos or 1 ) &&
##
## pos: 15858 16456
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
if (
${$_[0]->{'quant'}} eq ''
&& ${$_[0]->{'greedy'}} eq ''
&& ${$_[0]->{'ws1'}} eq ''
&& ${$_[0]->{'ws2'}} eq ''
&& ${$_[0]->{'ws3'}} eq ''
) {
return ${$_[0]->{'term'}};
}
return {
quant => {
term => ${$_[0]->{'term'}},
quant => ${$_[0]->{'quant'}},
greedy => ${$_[0]->{'greedy'}},
ws1 => ${$_[0]->{'ws1'}},
ws2 => ${$_[0]->{'ws2'}},
ws3 => ${$_[0]->{'ws3'}},
},
_pos => [$_[0]->from, $_[0]->to],
}
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1554} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token concat
*concat =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 16479 16688
(
##
## pos: 16479 16497
(
( ( $pad{I1555} = $pos or 1 ) &&
##
## pos: 16479 16491
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->quantifier( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'quantifier'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1555} ) && 0 ) )
&& do { while (
( ( $pad{I1555} = $pos or 1 ) &&
##
## pos: 16479 16491
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->quantifier( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'quantifier'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1555} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 16497 16688
( ( $pad{I1556} = $pos or 1 ) &&
##
## pos: 16497 16687
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
my @a = map { $_->() } @{ $::_V6_MATCH_->{'quantifier'} };
return { concat => \@a, _pos => [$_[0]->from, $_[0]->to] }
if scalar @a > 1;
return $a[0];
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1556} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token conjunctive1
*conjunctive1 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 16716 16996
(
##
## pos: 16716 16750
(
( ( $pad{I1557} = $pos or 1 ) &&
##
## pos: 16717 16742
(
##
## pos: 16717 16725
(
( ( $pad{I1558} = $pos or 1 ) &&
##
## pos: 16718 16723
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1558} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 16725 16728
( ( $pad{I1559} = $pos or 1 ) &&
##
## pos: 16725 16727
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1559} ) && 0 ) )
##
&&
##
## pos: 16728 16742
( ( $pad{I1560} = $pos or 1 ) &&
##
## pos: 16728 16741
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 16737 16740
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 16737 16740
( ( $pad{I1561} = $pos or 1 ) &&
##
## pos: 16737 16739
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1561} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1560} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1557} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 16750 16768
(
( ( $pad{I1562} = $pos or 1 ) &&
##
## pos: 16750 16758
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->concat( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'concat'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1562} ) && 0 ) )
)
##
&&
##
## pos: 16768 16817
do { while (
( ( $pad{I1563} = $pos or 1 ) &&
##
## pos: 16769 16809
(
##
## pos: 16769 16781
( ( $pad{I1564} = $pos or 1 ) &&
##
## pos: 16778 16780
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1564} ) && 0 ) )
##
&&
##
## pos: 16781 16796
( ( $pad{I1565} = $pos or 1 ) &&
##
## pos: 16781 16794
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 16790 16793
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 16790 16793
( ( $pad{I1566} = $pos or 1 ) &&
##
## pos: 16790 16792
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1566} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1565} ) && 0 ) )
##
&&
##
## pos: 16796 16809
( ( $pad{I1567} = $pos or 1 ) &&
##
## pos: 16796 16804
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->concat( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'concat'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1567} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1563} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 16817 16996
( ( $pad{I1568} = $pos or 1 ) &&
##
## pos: 16817 16995
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
my @a = map { $$_ } @{ $::_V6_MATCH_->{'concat'} };
return { conjunctive1 => \@a, _pos => [$_[0]->from, $_[0]->to] } if scalar @a > 1;
return $a[0];
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1568} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token disjunctive1
*disjunctive1 =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 17024 17313
(
##
## pos: 17024 17058
(
( ( $pad{I1569} = $pos or 1 ) &&
##
## pos: 17025 17050
(
##
## pos: 17025 17033
(
( ( $pad{I1570} = $pos or 1 ) &&
##
## pos: 17026 17031
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1570} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17033 17036
( ( $pad{I1571} = $pos or 1 ) &&
##
## pos: 17033 17035
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1571} ) && 0 ) )
##
&&
##
## pos: 17036 17050
( ( $pad{I1572} = $pos or 1 ) &&
##
## pos: 17036 17049
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 17045 17048
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17045 17048
( ( $pad{I1573} = $pos or 1 ) &&
##
## pos: 17045 17047
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1573} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1572} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1569} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17058 17082
(
( ( $pad{I1574} = $pos or 1 ) &&
##
## pos: 17058 17072
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->conjunctive1( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'conjunctive1'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1574} ) && 0 ) )
)
##
&&
##
## pos: 17082 17136
do { while (
( ( $pad{I1575} = $pos or 1 ) &&
##
## pos: 17083 17128
(
##
## pos: 17083 17095
( ( $pad{I1576} = $pos or 1 ) &&
##
## pos: 17092 17094
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1576} ) && 0 ) )
##
&&
##
## pos: 17095 17109
( ( $pad{I1577} = $pos or 1 ) &&
##
## pos: 17095 17108
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 17104 17107
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17104 17107
( ( $pad{I1578} = $pos or 1 ) &&
##
## pos: 17104 17106
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1578} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1577} ) && 0 ) )
##
&&
##
## pos: 17109 17128
( ( $pad{I1579} = $pos or 1 ) &&
##
## pos: 17109 17123
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->conjunctive1( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'conjunctive1'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1579} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1575} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17136 17313
( ( $pad{I1580} = $pos or 1 ) &&
##
## pos: 17136 17312
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
my @a = map { $$_ } @{ $::_V6_MATCH_->{'conjunctive1'} };
return { alt1 => \@a, _pos => [$_[0]->from, $_[0]->to] } if scalar @a > 1;
return $a[0];
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1580} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token conjunctive
*conjunctive =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 17340 17614
(
##
## pos: 17340 17363
(
( ( $pad{I1581} = $pos or 1 ) &&
##
## pos: 17341 17355
(
##
## pos: 17341 17349
(
( ( $pad{I1582} = $pos or 1 ) &&
##
## pos: 17342 17347
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1582} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17349 17352
( ( $pad{I1583} = $pos or 1 ) &&
##
## pos: 17349 17351
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1583} ) && 0 ) )
##
&&
##
## pos: 17352 17355
( ( $pad{I1584} = $pos or 1 ) &&
##
## pos: 17352 17354
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1584} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1581} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17363 17387
(
( ( $pad{I1585} = $pos or 1 ) &&
##
## pos: 17363 17377
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->disjunctive1( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'disjunctive1'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1585} ) && 0 ) )
)
##
&&
##
## pos: 17387 17430
do { while (
( ( $pad{I1586} = $pos or 1 ) &&
##
## pos: 17388 17422
(
##
## pos: 17388 17400
( ( $pad{I1587} = $pos or 1 ) &&
##
## pos: 17397 17399
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1587} ) && 0 ) )
##
&&
##
## pos: 17400 17403
( ( $pad{I1588} = $pos or 1 ) &&
##
## pos: 17400 17402
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1588} ) && 0 ) )
##
&&
##
## pos: 17403 17422
( ( $pad{I1589} = $pos or 1 ) &&
##
## pos: 17403 17417
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->disjunctive1( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'disjunctive1'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1589} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1586} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17430 17614
( ( $pad{I1590} = $pos or 1 ) &&
##
## pos: 17430 17613
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
my @a = map { $$_ } @{ $::_V6_MATCH_->{'disjunctive1'} };
return { conjunctive => \@a, _pos => [$_[0]->from, $_[0]->to] } if scalar @a > 1;
return $a[0];
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1590} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token rule
*rule =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 17634 17898
(
##
## pos: 17634 17657
(
( ( $pad{I1591} = $pos or 1 ) &&
##
## pos: 17635 17649
(
##
## pos: 17635 17643
(
( ( $pad{I1592} = $pos or 1 ) &&
##
## pos: 17636 17641
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1592} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17643 17646
( ( $pad{I1593} = $pos or 1 ) &&
##
## pos: 17643 17645
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1593} ) && 0 ) )
##
&&
##
## pos: 17646 17649
( ( $pad{I1594} = $pos or 1 ) &&
##
## pos: 17646 17648
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1594} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1591} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17657 17680
(
( ( $pad{I1595} = $pos or 1 ) &&
##
## pos: 17657 17670
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->conjunctive( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'conjunctive'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1595} ) && 0 ) )
)
##
&&
##
## pos: 17680 17722
do { while (
( ( $pad{I1596} = $pos or 1 ) &&
##
## pos: 17681 17714
(
##
## pos: 17681 17693
( ( $pad{I1597} = $pos or 1 ) &&
##
## pos: 17690 17692
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1597} ) && 0 ) )
##
&&
##
## pos: 17693 17696
( ( $pad{I1598} = $pos or 1 ) &&
##
## pos: 17693 17695
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1598} ) && 0 ) )
##
&&
##
## pos: 17696 17714
( ( $pad{I1599} = $pos or 1 ) &&
##
## pos: 17696 17709
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->conjunctive( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'conjunctive'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1599} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1596} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17722 17898
( ( $pad{I1600} = $pos or 1 ) &&
##
## pos: 17722 17897
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub {
my @a = map { $$_ } @{ $::_V6_MATCH_->{'conjunctive'} };
return { alt => \@a, _pos => [$_[0]->from, $_[0]->to], } if scalar @a > 1;
return $a[0];
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1600} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token named_regex
*named_regex =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 17925 18145
(
##
## pos: 17925 17960
( ( $pad{I1601} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17926 17954
(
( $pad{I1602} = $pos or 1 )
&& (
##
## pos: 17926 17935
( ( $pad{I1603} = $pos or 1 ) &&
##
## pos: 17927 17934
( ( substr( $s, $pos, 5 ) eq 'token' )
? ( $pos += 5 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1603} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1602} ) or 1 )
&&
##
## pos: 17936 17945
( ( $pad{I1604} = $pos or 1 ) &&
##
## pos: 17937 17944
( ( substr( $s, $pos, 5 ) eq 'regex' )
? ( $pos += 5 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1604} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1602} ) or 1 )
&&
##
## pos: 17946 17954
( ( $pad{I1605} = $pos or 1 ) &&
##
## pos: 17947 17953
( ( substr( $s, $pos, 4 ) eq 'rule' )
? ( $pos += 4 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1605} ) && 0 ) )
##
)
)
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1601} ) && 0 ) )
##
&&
##
## pos: 17960 17966
( ( $pad{I1606} = $pos or 1 ) &&
##
## pos: 17960 17965
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1606} ) && 0 ) )
##
&&
##
## pos: 17966 17974
( ( $pad{I1607} = $pos or 1 ) &&
##
## pos: 17966 17973
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ident( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'ident'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1607} ) && 0 ) )
##
&&
##
## pos: 17974 17981
(
( ( $pad{I1608} = $pos or 1 ) &&
##
## pos: 17974 17979
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1608} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17981 17993
( ( $pad{I1609} = $pos or 1 ) &&
##
## pos: 17981 17984
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1609} ) && 0 ) )
##
&&
##
## pos: 17993 18008
(
( ( $pad{I1610} = $pos or 1 ) &&
##
## pos: 17993 17998
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1610} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18008 18019
( ( $pad{I1611} = $pos or 1 ) &&
##
## pos: 18008 18014
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->rule( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'rule'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1611} ) && 0 ) )
##
&&
##
## pos: 18019 18023
( ( $pad{I1612} = $pos or 1 ) &&
##
## pos: 18019 18022
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1612} ) && 0 ) )
##
&&
##
## pos: 18023 18033
(
( ( $pad{I1613} = $pos or 1 ) &&
##
## pos: 18023 18026
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1613} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18033 18145
( ( $pad{I1614} = $pos or 1 ) &&
##
## pos: 18033 18144
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
type => ${ $_[0]->[0] },
name => ${ $_[0]->{qw(ident)} },
ast => ${ $_[0]->{qw(rule)} }
};
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1614} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token verbatim
*verbatim =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 18207 18329
(
##
## pos: 18207 18212
( ( $pad{I1615} = $pos or 1 ) &&
##
## pos: 18207 18211
( ( substr( $s, $pos, 2 ) eq '%{' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1615} ) && 0 ) )
##
&&
##
## pos: 18212 18238
( ( $pad{I1616} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 18213 18236
do { while (
( ( $pad{I1617} = $pos or 1 ) &&
##
## pos: 18215 18233
(
##
## pos: 18215 18231
( ( $pad{I1618} = $pos or 1 ) &&
##
## pos: 18216 18230
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 18225 18229
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 18225 18229
( ( substr( $s, $pos, 2 ) eq '%}' )
? ( $pos += 2 or 1 )
: 0
)
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I1618} ) && 0 ) )
##
&&
##
## pos: 18231 18233
( ( $pad{I1619} = $pos or 1 ) &&
##
## pos: 18231 18232
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1619} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I1617} ) && 0 ) )) {}; $bool = 1 }
##
;
{ str => \$s, from => \$from, match => \@match, named => \%named, bool => \$bool, to => \(0+$pos), capture => undef }
};
my $bool = ${$hash->{'bool'}};
$match[ 0 ] = Pugs::Runtime::Match->new( $hash );
$bool;
}
##
|| ( ( $pos = $pad{I1616} ) && 0 ) )
##
&&
##
## pos: 18238 18247
( ( $pad{I1620} = $pos or 1 ) &&
##
## pos: 18238 18242
( ( substr( $s, $pos, 2 ) eq '%}' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1620} ) && 0 ) )
##
&&
##
## pos: 18247 18329
( ( $pad{I1621} = $pos or 1 ) &&
##
## pos: 18247 18328
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
type => 'block',
value => ${ $_[0]->[0] }
};
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1621} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token item
*item =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 18349 18441
(
( $pad{I1622} = $pos or 1 )
&& (
##
## pos: 18350 18397
(
##
## pos: 18350 18368
( ( $pad{I1623} = $pos or 1 ) &&
##
## pos: 18351 18361
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->verbatim( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'verbatim'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1623} ) && 0 ) )
##
&&
##
## pos: 18368 18397
( ( $pad{I1624} = $pos or 1 ) &&
##
## pos: 18368 18392
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(verbatim)} }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1624} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1622} ) or 1 )
&& ##
## pos: 18398 18441
(
##
## pos: 18398 18413
( ( $pad{I1625} = $pos or 1 ) &&
##
## pos: 18399 18412
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->named_regex( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'named_regex'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1625} ) && 0 ) )
##
&&
##
## pos: 18413 18441
( ( $pad{I1626} = $pos or 1 ) &&
##
## pos: 18413 18440
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return ${ $_[0]->{qw(named_regex)} }; }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1626} ) && 0 ) )
##
)
##
)
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token grammar
*grammar =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 18464 18580
(
##
## pos: 18464 18471
(
( ( $pad{I1627} = $pos or 1 ) &&
##
## pos: 18464 18469
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1627} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18471 18481
( ( $pad{I1628} = $pos or 1 ) &&
##
## pos: 18471 18480
( ( substr( $s, $pos, 7 ) eq 'grammar' )
? ( $pos += 7 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1628} ) && 0 ) )
##
&&
##
## pos: 18481 18487
( ( $pad{I1629} = $pos or 1 ) &&
##
## pos: 18481 18486
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1629} ) && 0 ) )
##
&&
##
## pos: 18487 18495
( ( $pad{I1630} = $pos or 1 ) &&
##
## pos: 18487 18494
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ident( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { $named{'ident'} = $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1630} ) && 0 ) )
##
&&
##
## pos: 18495 18502
(
( ( $pad{I1631} = $pos or 1 ) &&
##
## pos: 18495 18500
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1631} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18502 18510
( ( $pad{I1632} = $pos or 1 ) &&
##
## pos: 18502 18505
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1632} ) && 0 ) )
##
&&
##
## pos: 18510 18521
(
( ( $pad{I1633} = $pos or 1 ) &&
##
## pos: 18510 18515
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1633} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18521 18544
do { while (
( ( $pad{I1634} = $pos or 1 ) &&
##
## pos: 18522 18537
(
##
## pos: 18522 18530
( ( $pad{I1635} = $pos or 1 ) &&
##
## pos: 18523 18529
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->item( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'item'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1635} ) && 0 ) )
##
&&
##
## pos: 18530 18537
(
( ( $pad{I1636} = $pos or 1 ) &&
##
## pos: 18530 18535
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->ws( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
my $bool = (!$match != 1);
$pos = $match->to if $bool;
$match;
}
##
|| ( ( $pos = $pad{I1636} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I1634} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 18544 18580
( ( $pad{I1637} = $pos or 1 ) &&
##
## pos: 18544 18579
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return { ${ $_[0]->{qw(ident)} } => $_[0]->{qw(item)} } }->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1637} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
# token spec
*spec =
##
## sigspace: 0
## ratchet: 1
do { my $rule; $rule = sub {
my $grammar = $_[0];
my $s = $_[1];
$_[3] = $_[2] unless defined $_[3]; # backwards compat
no warnings 'substr', 'uninitialized', 'syntax';
my %pad;
my $m;
my $bool;
my @pos;
# XXX :pos(X) takes the precedence over :continue ?
if (defined $_[3]{p}) {
push @pos, $_[3]{p} || 0;
} elsif ($_[3]{continue}) {
push @pos, (pos($_[1]) || 0) .. length($s);
} else {
push @pos, 0..length($s);
}
for my $pos ( @pos ) {
my %index;
my @match;
my %named;
$bool = 1;
$named{KEY} = $_[3]{KEY} if exists $_[3]{KEY};
$m = Pugs::Runtime::Match->new( {
str => \$s, from => \(0+$pos), to => \($pos),
bool => \$bool, match => \@match, named => \%named, capture => undef,
} );
{
my $prior = $::_V6_PRIOR_;
local $::_V6_PRIOR_ = $prior;
$bool = 0 unless
##
## pos: 18600 18720
(
##
## pos: 18600 18616
(
( ( $pad{I1638} = $pos or 1 ) &&
##
## pos: 18600 18610
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->verbatim( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'verbatim'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1638} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18616 18631
do { while (
( ( $pad{I1639} = $pos or 1 ) &&
##
## pos: 18616 18625
do {
my $prior = $::_V6_PRIOR_;
my $match =
$grammar->grammar( $s, { p => $pos, positionals => [ ], args => {}, }, undef );
$::_V6_PRIOR_ = $prior;
if ( $match ) { push @{$named{'grammar'}}, $match;
$pos = $match->to;
1
}
else { 0 }
}
##
|| ( ( $pos = $pad{I1639} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 18631 18720
( ( $pad{I1640} = $pos or 1 ) &&
##
## pos: 18631 18719
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
$m->data->{capture} = \( sub { return {
block => $_[0]->{qw(verbatim)},
'grammar' => $_[0]->{qw(grammar)} }
}->( $m ) );
$bool = $::_V6_SUCCEED;
$::_V6_MATCH_ = $m if $bool;
return $m if $bool;
}
##
|| ( ( $pos = $pad{I1640} ) && 0 ) )
##
)
##
;
}
if ( $bool ) {
my $prior = $::_V6_PRIOR_;
$::_V6_PRIOR_ = sub {
local $main::_V6_PRIOR_ = $prior;
$rule->(@_);
};
#warn "pos2 = ", $pos, "\n";
pos($_[1]) = $pos if $_[3]{continue};
last;
}
} # /for
$::_V6_MATCH_ = $m;
return $m;
} }
##
;
1;