# !!! DO NOT EDIT !!!
# This file was generated by Pugs::Compiler::Rule's compile_p6grammar.pl
# script from examples/Grammar.grammar at Tue Jul 22 22:14:35 2008
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{I1955} = $pos or 1 )
&& (
##
## pos: 633 652
(
##
## pos: 633 639
( ( $pad{I1956} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1956} ) && 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{I1957} = $pos or 1 ) &&
##
## pos: 642 643
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1957} ) && 0 ) )
##
&&
##
## pos: 644 652
do { while (
( ( $pad{I1958} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1958} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1955} ) or 1 )
&& ##
## pos: 653 675
(
##
## pos: 653 658
( ( $pad{I1959} = $pos or 1 ) &&
##
## pos: 656 657
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1959} ) && 0 ) )
##
&&
##
## pos: 658 662
do { while (
( ( $pad{I1960} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1960} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 662 675
( ( $pad{I1961} = $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{I1961} ) && 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{I1962} = $pos or 1 )
&& (
##
## pos: 701 720
(
##
## pos: 701 707
( ( $pad{I1963} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1963} ) && 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{I1964} = $pos or 1 ) &&
##
## pos: 710 711
( ( substr( $s, $pos, 1 ) eq 't' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1964} ) && 0 ) )
##
&&
##
## pos: 712 720
do { while (
( ( $pad{I1965} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1965} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1962} ) or 1 )
&& ##
## pos: 721 743
(
##
## pos: 721 726
( ( $pad{I1966} = $pos or 1 ) &&
##
## pos: 724 725
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1966} ) && 0 ) )
##
&&
##
## pos: 726 730
do { while (
( ( $pad{I1967} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1967} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 730 743
( ( $pad{I1968} = $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{I1968} ) && 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{I1969} = $pos or 1 ) &&
##
## pos: 762 1056
(
( $pad{I1970} = $pos or 1 )
&& (
##
## pos: 768 783
(
##
## pos: 768 775
( ( $pad{I1971} = $pos or 1 ) &&
##
## pos: 772 774
( ( substr( $s, $pos, 1 ) eq '#' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1971} ) && 0 ) )
##
&&
##
## pos: 775 783
do { while (
( ( $pad{I1972} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1972} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
&& ##
## pos: 784 1044
(
##
## pos: 784 791
( ( $pad{I1973} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1973} ) && 0 ) )
##
&&
##
## pos: 791 1044
(
( ( $pad{I1974} = $pos or 1 ) &&
##
## pos: 792 1037
(
##
## pos: 792 795
( ( $pad{I1975} = $pos or 1 ) &&
##
## pos: 793 794
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1975} ) && 0 ) )
##
&&
##
## pos: 795 1037
(
( ( $pad{I1976} = $pos or 1 ) &&
##
## pos: 796 1022
(
( $pad{I1977} = $pos or 1 )
&& (
##
## pos: 810 847
(
##
## pos: 810 813
( ( $pad{I1978} = $pos or 1 ) &&
##
## pos: 812 813
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1978} ) && 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{I1979} = $pos or 1 ) &&
##
## pos: 816 817
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1979} ) && 0 ) )
##
&&
##
## pos: 818 824
( ( $pad{I1980} = $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{I1980} ) && 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{I1981} = $pos or 1 ) &&
##
## pos: 826 827
( ( substr( $s, $pos, 1 ) eq 'D' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1981} ) && 0 ) )
##
&&
##
## pos: 828 832
do { while (
( ( $pad{I1982} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1982} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 832 847
do { while (
( ( $pad{I1983} = $pos or 1 ) &&
##
## pos: 832 833
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1983} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 848 882
(
##
## pos: 848 851
( ( $pad{I1984} = $pos or 1 ) &&
##
## pos: 850 851
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1984} ) && 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{I1985} = $pos or 1 ) &&
##
## pos: 854 855
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1985} ) && 0 ) )
##
&&
##
## pos: 857 882
( ( $pad{I1986} = $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{I1986} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 883 917
(
##
## pos: 883 886
( ( $pad{I1987} = $pos or 1 ) &&
##
## pos: 885 886
( ( substr( $s, $pos, 1 ) eq 'k' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1987} ) && 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{I1988} = $pos or 1 ) &&
##
## pos: 888 889
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1988} ) && 0 ) )
##
&&
##
## pos: 892 917
( ( $pad{I1989} = $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{I1989} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 918 952
(
##
## pos: 918 921
( ( $pad{I1990} = $pos or 1 ) &&
##
## pos: 920 921
( ( substr( $s, $pos, 1 ) eq 'p' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1990} ) && 0 ) )
##
&&
##
## pos: 921 922
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 922 927
( ( $pad{I1991} = $pos or 1 ) &&
##
## pos: 922 923
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1991} ) && 0 ) )
##
&&
##
## pos: 927 952
( ( $pad{I1992} = $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{I1992} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 953 987
(
##
## pos: 953 956
( ( $pad{I1993} = $pos or 1 ) &&
##
## pos: 955 956
( ( substr( $s, $pos, 1 ) eq 'f' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1993} ) && 0 ) )
##
&&
##
## pos: 956 957
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 957 962
( ( $pad{I1994} = $pos or 1 ) &&
##
## pos: 957 958
( ( substr( $s, $pos, 1 ) eq 'r' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1994} ) && 0 ) )
##
&&
##
## pos: 962 987
( ( $pad{I1995} = $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{I1995} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 988 1022
(
##
## pos: 988 991
( ( $pad{I1996} = $pos or 1 ) &&
##
## pos: 990 991
( ( substr( $s, $pos, 1 ) eq 'h' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1996} ) && 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{I1997} = $pos or 1 ) &&
##
## pos: 994 995
( ( substr( $s, $pos, 1 ) eq '1' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1997} ) && 0 ) )
##
&&
##
## pos: 997 1022
( ( $pad{I1998} = $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{I1998} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1976} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I1974} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
&&
##
## pos: 1045 1056
( ( $pad{I1999} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1999} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1969} ) && 0 ) )
&& do { while (
( ( $pad{I1969} = $pos or 1 ) &&
##
## pos: 762 1056
(
( $pad{I1970} = $pos or 1 )
&& (
##
## pos: 768 783
(
##
## pos: 768 775
( ( $pad{I1971} = $pos or 1 ) &&
##
## pos: 772 774
( ( substr( $s, $pos, 1 ) eq '#' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1971} ) && 0 ) )
##
&&
##
## pos: 775 783
do { while (
( ( $pad{I1972} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1972} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
&& ##
## pos: 784 1044
(
##
## pos: 784 791
( ( $pad{I1973} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:\n\r?|\r\n?))/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1973} ) && 0 ) )
##
&&
##
## pos: 791 1044
(
( ( $pad{I1974} = $pos or 1 ) &&
##
## pos: 792 1037
(
##
## pos: 792 795
( ( $pad{I1975} = $pos or 1 ) &&
##
## pos: 793 794
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1975} ) && 0 ) )
##
&&
##
## pos: 795 1037
(
( ( $pad{I1976} = $pos or 1 ) &&
##
## pos: 796 1022
(
( $pad{I1977} = $pos or 1 )
&& (
##
## pos: 810 847
(
##
## pos: 810 813
( ( $pad{I1978} = $pos or 1 ) &&
##
## pos: 812 813
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1978} ) && 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{I1979} = $pos or 1 ) &&
##
## pos: 816 817
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1979} ) && 0 ) )
##
&&
##
## pos: 818 824
( ( $pad{I1980} = $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{I1980} ) && 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{I1981} = $pos or 1 ) &&
##
## pos: 826 827
( ( substr( $s, $pos, 1 ) eq 'D' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1981} ) && 0 ) )
##
&&
##
## pos: 828 832
do { while (
( ( $pad{I1982} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?!\n\r?|\r\n?).)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1982} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 832 847
do { while (
( ( $pad{I1983} = $pos or 1 ) &&
##
## pos: 832 833
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I1983} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 848 882
(
##
## pos: 848 851
( ( $pad{I1984} = $pos or 1 ) &&
##
## pos: 850 851
( ( substr( $s, $pos, 1 ) eq 'b' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1984} ) && 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{I1985} = $pos or 1 ) &&
##
## pos: 854 855
( ( substr( $s, $pos, 1 ) eq 'n' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1985} ) && 0 ) )
##
&&
##
## pos: 857 882
( ( $pad{I1986} = $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{I1986} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 883 917
(
##
## pos: 883 886
( ( $pad{I1987} = $pos or 1 ) &&
##
## pos: 885 886
( ( substr( $s, $pos, 1 ) eq 'k' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1987} ) && 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{I1988} = $pos or 1 ) &&
##
## pos: 888 889
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1988} ) && 0 ) )
##
&&
##
## pos: 892 917
( ( $pad{I1989} = $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{I1989} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 918 952
(
##
## pos: 918 921
( ( $pad{I1990} = $pos or 1 ) &&
##
## pos: 920 921
( ( substr( $s, $pos, 1 ) eq 'p' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1990} ) && 0 ) )
##
&&
##
## pos: 921 922
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 922 927
( ( $pad{I1991} = $pos or 1 ) &&
##
## pos: 922 923
( ( substr( $s, $pos, 1 ) eq 'd' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1991} ) && 0 ) )
##
&&
##
## pos: 927 952
( ( $pad{I1992} = $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{I1992} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 953 987
(
##
## pos: 953 956
( ( $pad{I1993} = $pos or 1 ) &&
##
## pos: 955 956
( ( substr( $s, $pos, 1 ) eq 'f' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1993} ) && 0 ) )
##
&&
##
## pos: 956 957
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
&&
##
## pos: 957 962
( ( $pad{I1994} = $pos or 1 ) &&
##
## pos: 957 958
( ( substr( $s, $pos, 1 ) eq 'r' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1994} ) && 0 ) )
##
&&
##
## pos: 962 987
( ( $pad{I1995} = $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{I1995} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1977} ) or 1 )
&& ##
## pos: 988 1022
(
##
## pos: 988 991
( ( $pad{I1996} = $pos or 1 ) &&
##
## pos: 990 991
( ( substr( $s, $pos, 1 ) eq 'h' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1996} ) && 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{I1997} = $pos or 1 ) &&
##
## pos: 994 995
( ( substr( $s, $pos, 1 ) eq '1' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1997} ) && 0 ) )
##
&&
##
## pos: 997 1022
( ( $pad{I1998} = $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{I1998} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I1976} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I1974} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I1970} ) or 1 )
&&
##
## pos: 1045 1056
( ( $pad{I1999} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I1999} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I1969} ) && 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{I2000} = $pos or 1 ) &&
##
## pos: 1119 1140
(
( $pad{I2001} = $pos or 1 )
&& (
##
## pos: 1119 1129
( ( $pad{I2002} = $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{I2002} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
&&
##
## pos: 1130 1133
( ( $pad{I2003} = $pos or 1 ) &&
##
## pos: 1131 1132
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2003} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
&&
##
## pos: 1134 1140
( ( $pad{I2004} = $pos or 1 ) &&
##
## pos: 1135 1139
( ( substr( $s, $pos, 2 ) eq '::' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2004} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2000} ) && 0 ) )
&& do { while (
( ( $pad{I2000} = $pos or 1 ) &&
##
## pos: 1119 1140
(
( $pad{I2001} = $pos or 1 )
&& (
##
## pos: 1119 1129
( ( $pad{I2002} = $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{I2002} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
&&
##
## pos: 1130 1133
( ( $pad{I2003} = $pos or 1 ) &&
##
## pos: 1131 1132
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2003} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2001} ) or 1 )
&&
##
## pos: 1134 1140
( ( $pad{I2004} = $pos or 1 ) &&
##
## pos: 1135 1139
( ( substr( $s, $pos, 2 ) eq '::' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2004} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2000} ) && 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{I2005} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9a-zA-Z]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2005} ) && 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{I2006} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[a-zA-Z]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2006} ) && 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{I2007} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[0-9]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2007} ) && 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{I2008} = $pos or 1 )
&& (
##
## pos: 1285 1473
(
##
## pos: 1285 1296
( ( $pad{I2009} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1287 1294
(
( $pad{I2010} = $pos or 1 )
&& (
##
## pos: 1287 1290
( ( $pad{I2011} = $pos or 1 ) &&
##
## pos: 1288 1289
( ( substr( $s, $pos, 1 ) eq 'c' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2011} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2010} ) or 1 )
&&
##
## pos: 1291 1294
( ( $pad{I2012} = $pos or 1 ) &&
##
## pos: 1292 1293
( ( substr( $s, $pos, 1 ) eq 'C' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2012} ) && 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{I2009} ) && 0 ) )
##
&&
##
## pos: 1296 1299
( ( $pad{I2013} = $pos or 1 ) &&
##
## pos: 1296 1298
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2013} ) && 0 ) )
##
&&
##
## pos: 1299 1340
( ( $pad{I2014} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1300 1338
(
( ( $pad{I2015} = $pos or 1 ) &&
##
## pos: 1302 1336
(
( $pad{I2016} = $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{I2016} ) or 1 )
&& ##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1313 1318
( ( $pad{I2017} = $pos or 1 ) &&
##
## pos: 1314 1317
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2017} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1319 1324
( ( $pad{I2018} = $pos or 1 ) &&
##
## pos: 1320 1323
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2018} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1325 1330
( ( $pad{I2019} = $pos or 1 ) &&
##
## pos: 1326 1329
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2019} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1331 1336
( ( $pad{I2020} = $pos or 1 ) &&
##
## pos: 1332 1335
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2020} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2015} ) && 0 ) )
&& do { while (
( ( $pad{I2015} = $pos or 1 ) &&
##
## pos: 1302 1336
(
( $pad{I2016} = $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{I2016} ) or 1 )
&& ##
( ( substr( $s, $pos ) =~ m/^(\s)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1313 1318
( ( $pad{I2017} = $pos or 1 ) &&
##
## pos: 1314 1317
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2017} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1319 1324
( ( $pad{I2018} = $pos or 1 ) &&
##
## pos: 1320 1323
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2018} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1325 1330
( ( $pad{I2019} = $pos or 1 ) &&
##
## pos: 1326 1329
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2019} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2016} ) or 1 )
&&
##
## pos: 1331 1336
( ( $pad{I2020} = $pos or 1 ) &&
##
## pos: 1332 1335
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2020} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2015} ) && 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{I2014} ) && 0 ) )
##
&&
##
## pos: 1340 1385
( ( $pad{I2021} = $pos or 1 ) &&
##
## pos: 1340 1342
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2021} ) && 0 ) )
##
&&
##
## pos: 1385 1473
( ( $pad{I2022} = $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{I2022} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
&& ##
## pos: 1474 1617
(
##
## pos: 1474 1485
( ( $pad{I2023} = $pos or 1 ) &&
##
## pos: 1476 1483
(
( $pad{I2024} = $pos or 1 )
&& (
##
## pos: 1476 1479
( ( $pad{I2025} = $pos or 1 ) &&
##
## pos: 1477 1478
( ( substr( $s, $pos, 1 ) eq 'x' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2025} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2024} ) or 1 )
&&
##
## pos: 1480 1483
( ( $pad{I2026} = $pos or 1 ) &&
##
## pos: 1481 1482
( ( substr( $s, $pos, 1 ) eq 'X' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2026} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2023} ) && 0 ) )
##
&&
##
## pos: 1485 1535
(
( ( $pad{I2027} = $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{I2027} ) && 0 ) )
&& do { while (
( ( $pad{I2027} = $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{I2027} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 1535 1617
( ( $pad{I2028} = $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{I2028} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
&& ##
## pos: 1618 1777
(
##
## pos: 1618 1629
( ( $pad{I2029} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1620 1627
(
( $pad{I2030} = $pos or 1 )
&& (
##
## pos: 1620 1623
( ( $pad{I2031} = $pos or 1 ) &&
##
## pos: 1621 1622
( ( substr( $s, $pos, 1 ) eq 'x' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2031} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2030} ) or 1 )
&&
##
## pos: 1624 1627
( ( $pad{I2032} = $pos or 1 ) &&
##
## pos: 1625 1626
( ( substr( $s, $pos, 1 ) eq 'X' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2032} ) && 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{I2029} ) && 0 ) )
##
&&
##
## pos: 1629 1632
( ( $pad{I2033} = $pos or 1 ) &&
##
## pos: 1629 1631
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2033} ) && 0 ) )
##
&&
##
## pos: 1632 1644
( ( $pad{I2034} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1633 1642
(
( ( $pad{I2035} = $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{I2035} ) && 0 ) )
&& do { while (
( ( $pad{I2035} = $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{I2035} ) && 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{I2034} ) && 0 ) )
##
&&
##
## pos: 1644 1689
( ( $pad{I2036} = $pos or 1 ) &&
##
## pos: 1644 1646
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2036} ) && 0 ) )
##
&&
##
## pos: 1689 1777
( ( $pad{I2037} = $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{I2037} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
&& ##
## pos: 1778 1915
(
##
## pos: 1778 1789
( ( $pad{I2038} = $pos or 1 ) &&
##
## pos: 1780 1787
(
( $pad{I2039} = $pos or 1 )
&& (
##
## pos: 1780 1783
( ( $pad{I2040} = $pos or 1 ) &&
##
## pos: 1781 1782
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2040} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2039} ) or 1 )
&&
##
## pos: 1784 1787
( ( $pad{I2041} = $pos or 1 ) &&
##
## pos: 1785 1786
( ( substr( $s, $pos, 1 ) eq 'O' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2041} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2038} ) && 0 ) )
##
&&
##
## pos: 1789 1833
(
( ( $pad{I2042} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2042} ) && 0 ) )
&& do { while (
( ( $pad{I2042} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2042} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 1833 1915
( ( $pad{I2043} = $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{I2043} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
&& ##
## pos: 1916 2069
(
##
## pos: 1916 1927
( ( $pad{I2044} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1918 1925
(
( $pad{I2045} = $pos or 1 )
&& (
##
## pos: 1918 1921
( ( $pad{I2046} = $pos or 1 ) &&
##
## pos: 1919 1920
( ( substr( $s, $pos, 1 ) eq 'o' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2046} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2045} ) or 1 )
&&
##
## pos: 1922 1925
( ( $pad{I2047} = $pos or 1 ) &&
##
## pos: 1923 1924
( ( substr( $s, $pos, 1 ) eq 'O' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2047} ) && 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{I2044} ) && 0 ) )
##
&&
##
## pos: 1927 1930
( ( $pad{I2048} = $pos or 1 ) &&
##
## pos: 1927 1929
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2048} ) && 0 ) )
##
&&
##
## pos: 1930 1936
( ( $pad{I2049} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 1931 1934
(
( ( $pad{I2050} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2050} ) && 0 ) )
&& do { while (
( ( $pad{I2050} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^(\d)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2050} ) && 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{I2049} ) && 0 ) )
##
&&
##
## pos: 1936 1981
( ( $pad{I2051} = $pos or 1 ) &&
##
## pos: 1936 1938
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2051} ) && 0 ) )
##
&&
##
## pos: 1981 2069
( ( $pad{I2052} = $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{I2052} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2008} ) or 1 )
&& ##
## pos: 2070 2177
(
##
## pos: 2070 2103
( ( $pad{I2053} = $pos or 1 ) &&
##
## pos: 2071 2072
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I2053} ) && 0 ) )
##
&&
##
## pos: 2103 2177
( ( $pad{I2054} = $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{I2054} ) && 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{I2055} = $pos or 1 ) &&
##
## pos: 2201 2248
(
( $pad{I2056} = $pos or 1 )
&& (
##
## pos: 2207 2231
(
##
## pos: 2207 2212
( ( $pad{I2057} = $pos or 1 ) &&
##
## pos: 2209 2211
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2057} ) && 0 ) )
##
&&
##
## pos: 2212 2231
( ( $pad{I2058} = $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{I2058} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2056} ) or 1 )
&&
##
## pos: 2232 2248
( ( $pad{I2059} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\']))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2059} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2055} ) && 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{I2060} = $pos or 1 ) &&
##
## pos: 2281 2369
(
( $pad{I2061} = $pos or 1 )
&& (
##
## pos: 2287 2311
(
##
## pos: 2287 2292
( ( $pad{I2062} = $pos or 1 ) &&
##
## pos: 2289 2291
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2062} ) && 0 ) )
##
&&
##
## pos: 2292 2311
( ( $pad{I2063} = $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{I2063} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2061} ) or 1 )
&&
##
## pos: 2312 2352
( ( $pad{I2064} = $pos or 1 ) &&
##
## pos: 2314 2347
do{
my $match =
##
## pos: 2314 2347
do {
our $I2065;
our $I2065_sizes;
unless ( $I2065 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I2065_sizes = [ sort { $b <=> $a } keys %sizes ];
$I2065 = $hash;
}
my $match = 0;
my $key;
for ( @$I2065_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I2065->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I2065, $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{I2064} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2061} ) or 1 )
&&
##
## pos: 2353 2369
( ( $pad{I2066} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\"]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2066} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2060} ) && 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{I2067} = $pos or 1 ) &&
##
## pos: 2399 2573
(
( $pad{I2068} = $pos or 1 )
&& (
##
## pos: 2405 2429
(
##
## pos: 2405 2410
( ( $pad{I2069} = $pos or 1 ) &&
##
## pos: 2407 2409
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2069} ) && 0 ) )
##
&&
##
## pos: 2410 2429
( ( $pad{I2070} = $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{I2070} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2430 2458
(
##
## pos: 2430 2436
( ( $pad{I2071} = $pos or 1 ) &&
##
## pos: 2432 2434
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2071} ) && 0 ) )
##
&&
##
## pos: 2436 2451
( ( $pad{I2072} = $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{I2072} ) && 0 ) )
##
&&
##
## pos: 2451 2458
( ( $pad{I2073} = $pos or 1 ) &&
##
## pos: 2451 2453
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2073} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2459 2491
(
##
## pos: 2459 2465
( ( $pad{I2074} = $pos or 1 ) &&
##
## pos: 2461 2463
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2074} ) && 0 ) )
##
&&
##
## pos: 2465 2484
( ( $pad{I2075} = $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{I2075} ) && 0 ) )
##
&&
##
## pos: 2484 2491
( ( $pad{I2076} = $pos or 1 ) &&
##
## pos: 2484 2486
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2076} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2492 2527
(
##
## pos: 2492 2498
( ( $pad{I2077} = $pos or 1 ) &&
##
## pos: 2494 2496
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2077} ) && 0 ) )
##
&&
##
## pos: 2498 2520
( ( $pad{I2078} = $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{I2078} ) && 0 ) )
##
&&
##
## pos: 2520 2527
( ( $pad{I2079} = $pos or 1 ) &&
##
## pos: 2520 2522
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2079} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2528 2556
(
##
## pos: 2528 2534
( ( $pad{I2080} = $pos or 1 ) &&
##
## pos: 2530 2532
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2080} ) && 0 ) )
##
&&
##
## pos: 2534 2549
( ( $pad{I2081} = $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{I2081} ) && 0 ) )
##
&&
##
## pos: 2549 2556
( ( $pad{I2082} = $pos or 1 ) &&
##
## pos: 2549 2551
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2082} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&&
##
## pos: 2557 2573
( ( $pad{I2083} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2083} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2067} ) && 0 ) )
&& do { while (
( ( $pad{I2067} = $pos or 1 ) &&
##
## pos: 2399 2573
(
( $pad{I2068} = $pos or 1 )
&& (
##
## pos: 2405 2429
(
##
## pos: 2405 2410
( ( $pad{I2069} = $pos or 1 ) &&
##
## pos: 2407 2409
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2069} ) && 0 ) )
##
&&
##
## pos: 2410 2429
( ( $pad{I2070} = $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{I2070} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2430 2458
(
##
## pos: 2430 2436
( ( $pad{I2071} = $pos or 1 ) &&
##
## pos: 2432 2434
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2071} ) && 0 ) )
##
&&
##
## pos: 2436 2451
( ( $pad{I2072} = $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{I2072} ) && 0 ) )
##
&&
##
## pos: 2451 2458
( ( $pad{I2073} = $pos or 1 ) &&
##
## pos: 2451 2453
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2073} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2459 2491
(
##
## pos: 2459 2465
( ( $pad{I2074} = $pos or 1 ) &&
##
## pos: 2461 2463
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2074} ) && 0 ) )
##
&&
##
## pos: 2465 2484
( ( $pad{I2075} = $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{I2075} ) && 0 ) )
##
&&
##
## pos: 2484 2491
( ( $pad{I2076} = $pos or 1 ) &&
##
## pos: 2484 2486
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2076} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2492 2527
(
##
## pos: 2492 2498
( ( $pad{I2077} = $pos or 1 ) &&
##
## pos: 2494 2496
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2077} ) && 0 ) )
##
&&
##
## pos: 2498 2520
( ( $pad{I2078} = $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{I2078} ) && 0 ) )
##
&&
##
## pos: 2520 2527
( ( $pad{I2079} = $pos or 1 ) &&
##
## pos: 2520 2522
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2079} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&& ##
## pos: 2528 2556
(
##
## pos: 2528 2534
( ( $pad{I2080} = $pos or 1 ) &&
##
## pos: 2530 2532
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2080} ) && 0 ) )
##
&&
##
## pos: 2534 2549
( ( $pad{I2081} = $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{I2081} ) && 0 ) )
##
&&
##
## pos: 2549 2556
( ( $pad{I2082} = $pos or 1 ) &&
##
## pos: 2549 2551
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2082} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2068} ) or 1 )
&&
##
## pos: 2557 2573
( ( $pad{I2083} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2083} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2067} ) && 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{I2084} = $pos or 1 ) &&
##
## pos: 2603 2650
(
( $pad{I2085} = $pos or 1 )
&& (
##
## pos: 2609 2633
(
##
## pos: 2609 2614
( ( $pad{I2086} = $pos or 1 ) &&
##
## pos: 2611 2613
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2086} ) && 0 ) )
##
&&
##
## pos: 2614 2633
( ( $pad{I2087} = $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{I2087} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2085} ) or 1 )
&&
##
## pos: 2634 2650
( ( $pad{I2088} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2088} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2084} ) && 0 ) )
&& do { while (
( ( $pad{I2084} = $pos or 1 ) &&
##
## pos: 2603 2650
(
( $pad{I2085} = $pos or 1 )
&& (
##
## pos: 2609 2633
(
##
## pos: 2609 2614
( ( $pad{I2086} = $pos or 1 ) &&
##
## pos: 2611 2613
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2086} ) && 0 ) )
##
&&
##
## pos: 2614 2633
( ( $pad{I2087} = $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{I2087} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2085} ) or 1 )
&&
##
## pos: 2634 2650
( ( $pad{I2088} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2088} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2084} ) && 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 2738
(
( $pad{I2089} = $pos or 1 )
&& (
##
## pos: 2680 2713
(
##
## pos: 2680 2691
( ( $pad{I2090} = $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{I2090} ) && 0 ) )
##
&&
##
## pos: 2691 2713
do { while (
( ( $pad{I2091} = $pos or 1 ) &&
##
## pos: 2692 2706
(
( $pad{I2092} = $pos or 1 )
&& (
##
## pos: 2692 2702
( ( $pad{I2093} = $pos or 1 ) &&
##
## pos: 2693 2701
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{I2093} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2092} ) or 1 )
&&
##
## pos: 2703 2706
( ( $pad{I2094} = $pos or 1 ) &&
##
## pos: 2704 2705
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2094} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2091} ) && 0 ) )) {}; $bool = 1 }
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2089} ) or 1 )
&& ##
## pos: 2714 2738
(
##
## pos: 2714 2720
( ( $pad{I2095} = $pos or 1 ) &&
##
## pos: 2716 2718
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2095} ) && 0 ) )
##
&&
##
## pos: 2720 2735
( ( $pad{I2096} = $pos or 1 ) &&
##
## pos: 2720 2733
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{I2096} ) && 0 ) )
##
&&
##
## pos: 2735 2738
( ( $pad{I2097} = $pos or 1 ) &&
##
## pos: 2735 2737
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2097} ) && 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: 2788 3072
(
( ( $pad{I2098} = $pos or 1 ) &&
##
## pos: 2789 3069
(
( $pad{I2099} = $pos or 1 )
&& (
##
## pos: 2795 2819
(
##
## pos: 2795 2800
( ( $pad{I2100} = $pos or 1 ) &&
##
## pos: 2797 2799
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2100} ) && 0 ) )
##
&&
##
## pos: 2800 2819
( ( $pad{I2101} = $pos or 1 ) &&
##
## pos: 2800 2814
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{I2101} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2820 2848
(
##
## pos: 2820 2826
( ( $pad{I2102} = $pos or 1 ) &&
##
## pos: 2822 2824
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2102} ) && 0 ) )
##
&&
##
## pos: 2826 2841
( ( $pad{I2103} = $pos or 1 ) &&
##
## pos: 2826 2836
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{I2103} ) && 0 ) )
##
&&
##
## pos: 2841 2848
( ( $pad{I2104} = $pos or 1 ) &&
##
## pos: 2841 2843
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2104} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2849 2881
(
##
## pos: 2849 2855
( ( $pad{I2105} = $pos or 1 ) &&
##
## pos: 2851 2853
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2105} ) && 0 ) )
##
&&
##
## pos: 2855 2874
( ( $pad{I2106} = $pos or 1 ) &&
##
## pos: 2855 2871
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{I2106} ) && 0 ) )
##
&&
##
## pos: 2874 2881
( ( $pad{I2107} = $pos or 1 ) &&
##
## pos: 2874 2876
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2107} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2882 2920
(
##
## pos: 2882 2888
( ( $pad{I2108} = $pos or 1 ) &&
##
## pos: 2884 2886
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2108} ) && 0 ) )
##
&&
##
## pos: 2888 2913
( ( $pad{I2109} = $pos or 1 ) &&
##
## pos: 2889 2910
(
( $pad{I2110} = $pos or 1 )
&& (
##
## pos: 2889 2905
( ( $pad{I2111} = $pos or 1 ) &&
##
## pos: 2890 2904
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{I2111} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2110} ) or 1 )
&&
##
## pos: 2906 2910
( ( $pad{I2112} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2112} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2109} ) && 0 ) )
##
&&
##
## pos: 2913 2920
( ( $pad{I2113} = $pos or 1 ) &&
##
## pos: 2913 2915
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2113} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2921 2959
(
##
## pos: 2921 2927
( ( $pad{I2114} = $pos or 1 ) &&
##
## pos: 2923 2925
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2114} ) && 0 ) )
##
&&
##
## pos: 2927 2952
( ( $pad{I2115} = $pos or 1 ) &&
##
## pos: 2928 2949
(
( $pad{I2116} = $pos or 1 )
&& (
##
## pos: 2928 2944
( ( $pad{I2117} = $pos or 1 ) &&
##
## pos: 2929 2943
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{I2117} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2116} ) or 1 )
&&
##
## pos: 2945 2949
( ( $pad{I2118} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2118} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2115} ) && 0 ) )
##
&&
##
## pos: 2952 2959
( ( $pad{I2119} = $pos or 1 ) &&
##
## pos: 2952 2954
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2119} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2960 2998
(
##
## pos: 2960 2966
( ( $pad{I2120} = $pos or 1 ) &&
##
## pos: 2962 2964
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2120} ) && 0 ) )
##
&&
##
## pos: 2966 2991
( ( $pad{I2121} = $pos or 1 ) &&
##
## pos: 2967 2988
(
( $pad{I2122} = $pos or 1 )
&& (
##
## pos: 2967 2983
( ( $pad{I2123} = $pos or 1 ) &&
##
## pos: 2968 2982
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{I2123} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2122} ) or 1 )
&&
##
## pos: 2984 2988
( ( $pad{I2124} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2124} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2121} ) && 0 ) )
##
&&
##
## pos: 2991 2998
( ( $pad{I2125} = $pos or 1 ) &&
##
## pos: 2991 2993
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2125} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2999 3033
(
##
## pos: 2999 3026
( ( $pad{I2126} = $pos or 1 ) &&
##
## pos: 3002 3024
(
( $pad{I2127} = $pos or 1 )
&& (
##
## pos: 3002 3009
( ( $pad{I2128} = $pos or 1 ) &&
##
## pos: 3003 3008
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{I2128} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3010 3014
( ( $pad{I2129} = $pos or 1 ) &&
##
## pos: 3011 3013
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2129} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3015 3019
( ( $pad{I2130} = $pos or 1 ) &&
##
## pos: 3016 3018
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2130} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3020 3024
( ( $pad{I2131} = $pos or 1 ) &&
##
## pos: 3021 3023
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2131} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2126} ) && 0 ) )
##
&&
##
## pos: 3026 3033
( ( $pad{I2132} = $pos or 1 ) &&
##
## pos: 3026 3028
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2132} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&&
##
## pos: 3034 3046
( ( $pad{I2133} = $pos or 1 ) &&
##
## pos: 3036 3041
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{I2133} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&&
##
## pos: 3047 3069
( ( $pad{I2134} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2134} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2098} ) && 0 ) )
&& do { while (
( ( $pad{I2098} = $pos or 1 ) &&
##
## pos: 2789 3069
(
( $pad{I2099} = $pos or 1 )
&& (
##
## pos: 2795 2819
(
##
## pos: 2795 2800
( ( $pad{I2100} = $pos or 1 ) &&
##
## pos: 2797 2799
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2100} ) && 0 ) )
##
&&
##
## pos: 2800 2819
( ( $pad{I2101} = $pos or 1 ) &&
##
## pos: 2800 2814
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{I2101} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2820 2848
(
##
## pos: 2820 2826
( ( $pad{I2102} = $pos or 1 ) &&
##
## pos: 2822 2824
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2102} ) && 0 ) )
##
&&
##
## pos: 2826 2841
( ( $pad{I2103} = $pos or 1 ) &&
##
## pos: 2826 2836
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{I2103} ) && 0 ) )
##
&&
##
## pos: 2841 2848
( ( $pad{I2104} = $pos or 1 ) &&
##
## pos: 2841 2843
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2104} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2849 2881
(
##
## pos: 2849 2855
( ( $pad{I2105} = $pos or 1 ) &&
##
## pos: 2851 2853
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2105} ) && 0 ) )
##
&&
##
## pos: 2855 2874
( ( $pad{I2106} = $pos or 1 ) &&
##
## pos: 2855 2871
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{I2106} ) && 0 ) )
##
&&
##
## pos: 2874 2881
( ( $pad{I2107} = $pos or 1 ) &&
##
## pos: 2874 2876
( ( substr( $s, $pos, 1 ) eq '"' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2107} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2882 2920
(
##
## pos: 2882 2888
( ( $pad{I2108} = $pos or 1 ) &&
##
## pos: 2884 2886
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2108} ) && 0 ) )
##
&&
##
## pos: 2888 2913
( ( $pad{I2109} = $pos or 1 ) &&
##
## pos: 2889 2910
(
( $pad{I2110} = $pos or 1 )
&& (
##
## pos: 2889 2905
( ( $pad{I2111} = $pos or 1 ) &&
##
## pos: 2890 2904
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{I2111} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2110} ) or 1 )
&&
##
## pos: 2906 2910
( ( $pad{I2112} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2112} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2109} ) && 0 ) )
##
&&
##
## pos: 2913 2920
( ( $pad{I2113} = $pos or 1 ) &&
##
## pos: 2913 2915
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2113} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2921 2959
(
##
## pos: 2921 2927
( ( $pad{I2114} = $pos or 1 ) &&
##
## pos: 2923 2925
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2114} ) && 0 ) )
##
&&
##
## pos: 2927 2952
( ( $pad{I2115} = $pos or 1 ) &&
##
## pos: 2928 2949
(
( $pad{I2116} = $pos or 1 )
&& (
##
## pos: 2928 2944
( ( $pad{I2117} = $pos or 1 ) &&
##
## pos: 2929 2943
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{I2117} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2116} ) or 1 )
&&
##
## pos: 2945 2949
( ( $pad{I2118} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2118} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2115} ) && 0 ) )
##
&&
##
## pos: 2952 2959
( ( $pad{I2119} = $pos or 1 ) &&
##
## pos: 2952 2954
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2119} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2960 2998
(
##
## pos: 2960 2966
( ( $pad{I2120} = $pos or 1 ) &&
##
## pos: 2962 2964
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2120} ) && 0 ) )
##
&&
##
## pos: 2966 2991
( ( $pad{I2121} = $pos or 1 ) &&
##
## pos: 2967 2988
(
( $pad{I2122} = $pos or 1 )
&& (
##
## pos: 2967 2983
( ( $pad{I2123} = $pos or 1 ) &&
##
## pos: 2968 2982
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{I2123} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2122} ) or 1 )
&&
##
## pos: 2984 2988
( ( $pad{I2124} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2124} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2121} ) && 0 ) )
##
&&
##
## pos: 2991 2998
( ( $pad{I2125} = $pos or 1 ) &&
##
## pos: 2991 2993
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2125} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&& ##
## pos: 2999 3033
(
##
## pos: 2999 3026
( ( $pad{I2126} = $pos or 1 ) &&
##
## pos: 3002 3024
(
( $pad{I2127} = $pos or 1 )
&& (
##
## pos: 3002 3009
( ( $pad{I2128} = $pos or 1 ) &&
##
## pos: 3003 3008
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{I2128} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3010 3014
( ( $pad{I2129} = $pos or 1 ) &&
##
## pos: 3011 3013
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2129} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3015 3019
( ( $pad{I2130} = $pos or 1 ) &&
##
## pos: 3016 3018
( ( substr( $s, $pos, 1 ) eq '=' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2130} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2127} ) or 1 )
&&
##
## pos: 3020 3024
( ( $pad{I2131} = $pos or 1 ) &&
##
## pos: 3021 3023
( ( substr( $s, $pos, 1 ) eq '-' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2131} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2126} ) && 0 ) )
##
&&
##
## pos: 3026 3033
( ( $pad{I2132} = $pos or 1 ) &&
##
## pos: 3026 3028
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2132} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&&
##
## pos: 3034 3046
( ( $pad{I2133} = $pos or 1 ) &&
##
## pos: 3036 3041
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{I2133} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2099} ) or 1 )
&&
##
## pos: 3047 3069
( ( $pad{I2134} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\}\)\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2134} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2098} ) && 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: 3158 3204
(
##
## pos: 3158 3177
( ( $pad{I2135} = $pos or 1 ) &&
##
## pos: 3158 3172
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{I2135} ) && 0 ) )
##
&&
##
## pos: 3177 3204
( ( $pad{I2136} = $pos or 1 ) &&
##
## pos: 3177 3203
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{I2136} ) && 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: 3238 3729
(
( $pad{I2137} = $pos or 1 )
&& (
##
## pos: 3239 3371
(
##
## pos: 3239 3244
( ( $pad{I2138} = $pos or 1 ) &&
##
## pos: 3240 3242
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2138} ) && 0 ) )
##
&&
##
## pos: 3244 3258
( ( $pad{I2139} = $pos or 1 ) &&
##
## pos: 3244 3250
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{I2139} ) && 0 ) )
##
&&
##
## pos: 3258 3262
( ( $pad{I2140} = $pos or 1 ) &&
##
## pos: 3258 3260
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2140} ) && 0 ) )
##
&&
##
## pos: 3262 3371
( ( $pad{I2141} = $pos or 1 ) &&
##
## pos: 3262 3366
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{I2141} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
&& ##
## pos: 3372 3419
(
##
## pos: 3372 3377
( ( $pad{I2142} = $pos or 1 ) &&
##
## pos: 3373 3375
( ( substr( $s, $pos, 1 ) eq '[' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2142} ) && 0 ) )
##
&&
##
## pos: 3377 3391
( ( $pad{I2143} = $pos or 1 ) &&
##
## pos: 3377 3383
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{I2143} ) && 0 ) )
##
&&
##
## pos: 3391 3395
( ( $pad{I2144} = $pos or 1 ) &&
##
## pos: 3391 3393
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2144} ) && 0 ) )
##
&&
##
## pos: 3395 3419
( ( $pad{I2145} = $pos or 1 ) &&
##
## pos: 3395 3414
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{I2145} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
&& ##
## pos: 3420 3481
(
##
## pos: 3420 3425
( ( $pad{I2146} = $pos or 1 ) &&
##
## pos: 3421 3423
( ( substr( $s, $pos, 1 ) eq '<' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2146} ) && 0 ) )
##
&&
##
## pos: 3425 3445
( ( $pad{I2147} = $pos or 1 ) &&
##
## pos: 3425 3443
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{I2147} ) && 0 ) )
##
&&
##
## pos: 3445 3481
( ( $pad{I2148} = $pos or 1 ) &&
##
## pos: 3445 3476
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{I2148} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
&& ##
## pos: 3482 3695
(
##
## pos: 3482 3487
( ( $pad{I2149} = $pos or 1 ) &&
##
## pos: 3483 3485
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2149} ) && 0 ) )
##
&&
##
## pos: 3487 3501
( ( $pad{I2150} = $pos or 1 ) &&
##
## pos: 3487 3497
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{I2150} ) && 0 ) )
##
&&
##
## pos: 3501 3512
( ( $pad{I2151} = $pos or 1 ) &&
##
## pos: 3501 3503
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2151} ) && 0 ) )
##
&&
##
## pos: 3512 3695
( ( $pad{I2152} = $pos or 1 ) &&
##
## pos: 3512 3690
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{I2152} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2137} ) or 1 )
&&
##
## pos: 3696 3729
( ( $pad{I2153} = $pos or 1 ) &&
##
## pos: 3697 3728
do {
local $::_V6_SUCCEED = 1;
$::_V6_MATCH_ = $m;
sub { die "invalid alias syntax"; }->( $m );
1;
}
##
|| ( ( $pos = $pad{I2153} ) && 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: 3765 6638
(
##
## pos: 3765 3809
( ( $pad{I2154} = $pos or 1 ) &&
##
## pos: 3765 3804
do{
my $from = $pos;
my $bool = ##
## pos: 3781 3803
(
( $pad{I2155} = $pos or 1 )
&& (
##
## pos: 3781 3786
( ( $pad{I2156} = $pos or 1 ) &&
##
## pos: 3782 3785
( ( substr( $s, $pos, 1 ) eq '!' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2156} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
&&
##
## pos: 3787 3792
( ( $pad{I2157} = $pos or 1 ) &&
##
## pos: 3788 3791
( ( substr( $s, $pos, 1 ) eq '?' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2157} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
&&
##
## pos: 3793 3798
( ( $pad{I2158} = $pos or 1 ) &&
##
## pos: 3794 3797
( ( substr( $s, $pos, 1 ) eq '.' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2158} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2155} ) or 1 )
&&
##
## pos: 3799 3803
( ( $pad{I2159} = $pos or 1 ) &&
1 # null constant
|| ( ( $pos = $pad{I2159} ) && 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{I2154} ) && 0 ) )
##
&&
##
## pos: 3809 6638
( ( $pad{I2160} = $pos or 1 ) &&
##
## pos: 3810 6636
(
( $pad{I2161} = $pos or 1 )
&& (
##
## pos: 3810 4028
(
##
## pos: 3810 3824
( ( $pad{I2162} = $pos or 1 ) &&
##
## pos: 3819 3822
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2162} ) && 0 ) )
##
&&
##
## pos: 3824 3839
( ( $pad{I2163} = $pos or 1 ) &&
##
## pos: 3824 3837
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{I2163} ) && 0 ) )
##
&&
##
## pos: 3839 3852
( ( $pad{I2164} = $pos or 1 ) &&
##
## pos: 3839 3843
( ( substr( $s, $pos, 2 ) eq '}>' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2164} ) && 0 ) )
##
&&
##
## pos: 3852 4028
( ( $pad{I2165} = $pos or 1 ) &&
##
## pos: 3852 4023
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{I2165} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
&& ##
## pos: 4029 4522
(
##
## pos: 4029 4059
( ( $pad{I2166} = $pos or 1 ) &&
##
## pos: 4038 4050
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{I2166} ) && 0 ) )
##
&&
##
## pos: 4059 4092
(
( ( $pad{I2167} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 4060 4081
(
##
## pos: 4060 4068
( ( $pad{I2168} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2168} ) && 0 ) )
##
&&
##
## pos: 4068 4081
( ( $pad{I2169} = $pos or 1 ) &&
##
## pos: 4068 4080
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{I2169} ) && 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{I2167} ) && 0 ) )
&& do { while (
( ( $pad{I2167} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 4060 4081
(
##
## pos: 4060 4068
( ( $pad{I2168} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2168} ) && 0 ) )
##
&&
##
## pos: 4068 4081
( ( $pad{I2169} = $pos or 1 ) &&
##
## pos: 4068 4080
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{I2169} ) && 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{I2167} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 4092 4103
( ( $pad{I2170} = $pos or 1 ) &&
##
## pos: 4092 4094
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2170} ) && 0 ) )
##
&&
##
## pos: 4103 4522
( ( $pad{I2171} = $pos or 1 ) &&
##
## pos: 4103 4517
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{I2171} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
&& ##
## pos: 4523 6411
(
##
## pos: 4523 4548
( ( $pad{I2172} = $pos or 1 ) &&
##
## pos: 4532 4539
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{I2172} ) && 0 ) )
##
&&
##
## pos: 4548 6411
( ( $pad{I2173} = $pos or 1 ) &&
##
## pos: 4549 6405
(
( $pad{I2174} = $pos or 1 )
&& (
##
## pos: 4549 5166
(
##
## pos: 4549 4566
( ( $pad{I2175} = $pos or 1 ) &&
##
## pos: 4560 4565
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{I2175} ) && 0 ) )
##
&&
##
## pos: 4566 4573
( ( $pad{I2176} = $pos or 1 ) &&
##
## pos: 4566 4572
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{I2176} ) && 0 ) )
##
&&
##
## pos: 4573 4586
( ( $pad{I2177} = $pos or 1 ) &&
##
## pos: 4573 4575
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2177} ) && 0 ) )
##
&&
##
## pos: 4586 5166
( ( $pad{I2178} = $pos or 1 ) &&
##
## pos: 4586 5157
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{I2178} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2174} ) or 1 )
&& ##
## pos: 5167 6146
(
##
## pos: 5167 5182
( ( $pad{I2179} = $pos or 1 ) &&
##
## pos: 5178 5181
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2179} ) && 0 ) )
##
&&
##
## pos: 5182 5199
(
( ( $pad{I2180} = $pos or 1 ) &&
##
## pos: 5182 5187
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{I2180} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 5199 5369
( ( $pad{I2181} = $pos or 1 ) &&
##
## pos: 5199 5358
do{
my $from = $pos;
my $bool = ##
## pos: 5210 5357
do { while (
( ( $pad{I2182} = $pos or 1 ) &&
##
## pos: 5224 5344
(
( $pad{I2183} = $pos or 1 )
&& (
##
## pos: 5238 5270
(
##
## pos: 5238 5243
( ( $pad{I2184} = $pos or 1 ) &&
##
## pos: 5240 5242
( ( substr( $s, $pos, 1 ) eq '\\' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2184} ) && 0 ) )
##
&&
##
## pos: 5243 5270
( ( $pad{I2185} = $pos or 1 ) &&
##
## pos: 5243 5257
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{I2185} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2183} ) or 1 )
&&
##
## pos: 5271 5319
( ( $pad{I2186} = $pos or 1 ) &&
##
## pos: 5273 5306
do{
my $match =
##
## pos: 5273 5306
do {
our $I2187;
our $I2187_sizes;
unless ( $I2187 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I2187_sizes = [ sort { $b <=> $a } keys %sizes ];
$I2187 = $hash;
}
my $match = 0;
my $key;
for ( @$I2187_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I2187->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I2187, $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{I2186} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2183} ) or 1 )
&&
##
## pos: 5320 5344
( ( $pad{I2188} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\>]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2188} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2182} ) && 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{I2181} ) && 0 ) )
##
&&
##
## pos: 5369 5382
( ( $pad{I2189} = $pos or 1 ) &&
##
## pos: 5369 5371
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2189} ) && 0 ) )
##
&&
##
## pos: 5382 6146
( ( $pad{I2190} = $pos or 1 ) &&
##
## pos: 5382 6137
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{I2190} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2174} ) or 1 )
&& ##
## pos: 6147 6405
(
##
## pos: 6147 6162
( ( $pad{I2191} = $pos or 1 ) &&
##
## pos: 6158 6160
( ( substr( $s, $pos, 1 ) eq '(' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2191} ) && 0 ) )
##
&&
##
## pos: 6162 6177
( ( $pad{I2192} = $pos or 1 ) &&
##
## pos: 6162 6175
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{I2192} ) && 0 ) )
##
&&
##
## pos: 6177 6180
( ( $pad{I2193} = $pos or 1 ) &&
##
## pos: 6177 6179
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2193} ) && 0 ) )
##
&&
##
## pos: 6180 6193
( ( $pad{I2194} = $pos or 1 ) &&
##
## pos: 6180 6182
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2194} ) && 0 ) )
##
&&
##
## pos: 6193 6405
( ( $pad{I2195} = $pos or 1 ) &&
##
## pos: 6193 6396
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{I2195} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2173} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2161} ) or 1 )
&& ##
## pos: 6412 6636
(
##
## pos: 6412 6435
( ( $pad{I2196} = $pos or 1 ) &&
##
## pos: 6421 6433
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{I2196} ) && 0 ) )
##
&&
##
## pos: 6435 6446
( ( $pad{I2197} = $pos or 1 ) &&
##
## pos: 6435 6437
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2197} ) && 0 ) )
##
&&
##
## pos: 6446 6636
( ( $pad{I2198} = $pos or 1 ) &&
##
## pos: 6446 6631
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{I2198} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2160} ) && 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: 6748 6850
(
##
## pos: 6748 6756
( ( $pad{I2199} = $pos or 1 ) &&
##
## pos: 6748 6755
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{I2199} ) && 0 ) )
##
&&
##
## pos: 6756 6767
( ( $pad{I2200} = $pos or 1 ) &&
##
## pos: 6756 6758
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2200} ) && 0 ) )
##
&&
##
## pos: 6767 6850
( ( $pad{I2201} = $pos or 1 ) &&
##
## pos: 6767 6849
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{I2201} ) && 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: 6942 7166
(
( $pad{I2202} = $pos or 1 )
&& (
##
## pos: 6942 7040
(
##
## pos: 6942 6960
(
( ( $pad{I2203} = $pos or 1 ) &&
##
## pos: 6942 6950
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{I2203} ) && 0 ) )
&& do { while (
( ( $pad{I2203} = $pos or 1 ) &&
##
## pos: 6942 6950
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{I2203} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 6960 7040
( ( $pad{I2204} = $pos or 1 ) &&
##
## pos: 6960 7035
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{I2204} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2202} ) or 1 )
&& ##
## pos: 7041 7166
(
##
## pos: 7041 7062
(
( ( $pad{I2205} = $pos or 1 ) &&
##
## pos: 7050 7052
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2205} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7062 7096
(
( ( $pad{I2206} = $pos or 1 ) &&
##
## pos: 7063 7085
(
( $pad{I2207} = $pos or 1 )
&& (
##
## pos: 7063 7073
( ( $pad{I2208} = $pos or 1 ) &&
##
## pos: 7064 7072
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{I2208} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
&&
##
## pos: 7074 7077
( ( $pad{I2209} = $pos or 1 ) &&
##
## pos: 7075 7076
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2209} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
&& ##
## pos: 7078 7085
(
##
## pos: 7078 7082
( ( $pad{I2210} = $pos or 1 ) &&
##
## pos: 7079 7081
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2210} ) && 0 ) )
##
&&
##
## pos: 7082 7085
( ( $pad{I2211} = $pos or 1 ) &&
##
## pos: 7082 7084
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2211} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2206} ) && 0 ) )
&& do { while (
( ( $pad{I2206} = $pos or 1 ) &&
##
## pos: 7063 7085
(
( $pad{I2207} = $pos or 1 )
&& (
##
## pos: 7063 7073
( ( $pad{I2208} = $pos or 1 ) &&
##
## pos: 7064 7072
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{I2208} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
&&
##
## pos: 7074 7077
( ( $pad{I2209} = $pos or 1 ) &&
##
## pos: 7075 7076
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2209} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2207} ) or 1 )
&& ##
## pos: 7078 7085
(
##
## pos: 7078 7082
( ( $pad{I2210} = $pos or 1 ) &&
##
## pos: 7079 7081
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2210} ) && 0 ) )
##
&&
##
## pos: 7082 7085
( ( $pad{I2211} = $pos or 1 ) &&
##
## pos: 7082 7084
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2211} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2206} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7096 7166
( ( $pad{I2212} = $pos or 1 ) &&
##
## pos: 7096 7165
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{I2212} ) && 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: 7257 7479
(
( $pad{I2213} = $pos or 1 )
&& (
##
## pos: 7257 7354
(
##
## pos: 7257 7275
(
( ( $pad{I2214} = $pos or 1 ) &&
##
## pos: 7257 7265
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{I2214} ) && 0 ) )
&& do { while (
( ( $pad{I2214} = $pos or 1 ) &&
##
## pos: 7257 7265
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{I2214} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7275 7354
( ( $pad{I2215} = $pos or 1 ) &&
##
## pos: 7275 7349
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{I2215} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2213} ) or 1 )
&& ##
## pos: 7355 7479
(
##
## pos: 7355 7376
(
( ( $pad{I2216} = $pos or 1 ) &&
##
## pos: 7364 7366
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2216} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7376 7410
(
( ( $pad{I2217} = $pos or 1 ) &&
##
## pos: 7377 7399
(
( $pad{I2218} = $pos or 1 )
&& (
##
## pos: 7377 7387
( ( $pad{I2219} = $pos or 1 ) &&
##
## pos: 7378 7386
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{I2219} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
&&
##
## pos: 7388 7391
( ( $pad{I2220} = $pos or 1 ) &&
##
## pos: 7389 7390
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2220} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
&& ##
## pos: 7392 7399
(
##
## pos: 7392 7396
( ( $pad{I2221} = $pos or 1 ) &&
##
## pos: 7393 7395
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2221} ) && 0 ) )
##
&&
##
## pos: 7396 7399
( ( $pad{I2222} = $pos or 1 ) &&
##
## pos: 7396 7398
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2222} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2217} ) && 0 ) )
&& do { while (
( ( $pad{I2217} = $pos or 1 ) &&
##
## pos: 7377 7399
(
( $pad{I2218} = $pos or 1 )
&& (
##
## pos: 7377 7387
( ( $pad{I2219} = $pos or 1 ) &&
##
## pos: 7378 7386
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{I2219} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
&&
##
## pos: 7388 7391
( ( $pad{I2220} = $pos or 1 ) &&
##
## pos: 7389 7390
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2220} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2218} ) or 1 )
&& ##
## pos: 7392 7399
(
##
## pos: 7392 7396
( ( $pad{I2221} = $pos or 1 ) &&
##
## pos: 7393 7395
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2221} ) && 0 ) )
##
&&
##
## pos: 7396 7399
( ( $pad{I2222} = $pos or 1 ) &&
##
## pos: 7396 7398
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2222} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2217} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7410 7479
( ( $pad{I2223} = $pos or 1 ) &&
##
## pos: 7410 7478
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{I2223} ) && 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: 7570 7790
(
( $pad{I2224} = $pos or 1 )
&& (
##
## pos: 7570 7666
(
##
## pos: 7570 7588
(
( ( $pad{I2225} = $pos or 1 ) &&
##
## pos: 7570 7578
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{I2225} ) && 0 ) )
&& do { while (
( ( $pad{I2225} = $pos or 1 ) &&
##
## pos: 7570 7578
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{I2225} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7588 7666
( ( $pad{I2226} = $pos or 1 ) &&
##
## pos: 7588 7661
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{I2226} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2224} ) or 1 )
&& ##
## pos: 7667 7790
(
##
## pos: 7667 7688
(
( ( $pad{I2227} = $pos or 1 ) &&
##
## pos: 7676 7678
( ( substr( $s, $pos, 1 ) eq '^' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2227} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 7688 7722
(
( ( $pad{I2228} = $pos or 1 ) &&
##
## pos: 7689 7711
(
( $pad{I2229} = $pos or 1 )
&& (
##
## pos: 7689 7699
( ( $pad{I2230} = $pos or 1 ) &&
##
## pos: 7690 7698
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{I2230} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
&&
##
## pos: 7700 7703
( ( $pad{I2231} = $pos or 1 ) &&
##
## pos: 7701 7702
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2231} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
&& ##
## pos: 7704 7711
(
##
## pos: 7704 7708
( ( $pad{I2232} = $pos or 1 ) &&
##
## pos: 7705 7707
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2232} ) && 0 ) )
##
&&
##
## pos: 7708 7711
( ( $pad{I2233} = $pos or 1 ) &&
##
## pos: 7708 7710
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2233} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2228} ) && 0 ) )
&& do { while (
( ( $pad{I2228} = $pos or 1 ) &&
##
## pos: 7689 7711
(
( $pad{I2229} = $pos or 1 )
&& (
##
## pos: 7689 7699
( ( $pad{I2230} = $pos or 1 ) &&
##
## pos: 7690 7698
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{I2230} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
&&
##
## pos: 7700 7703
( ( $pad{I2231} = $pos or 1 ) &&
##
## pos: 7701 7702
( ( substr( $s, $pos, 1 ) eq '_' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2231} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2229} ) or 1 )
&& ##
## pos: 7704 7711
(
##
## pos: 7704 7708
( ( $pad{I2232} = $pos or 1 ) &&
##
## pos: 7705 7707
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2232} ) && 0 ) )
##
&&
##
## pos: 7708 7711
( ( $pad{I2233} = $pos or 1 ) &&
##
## pos: 7708 7710
( ( substr( $s, $pos, 1 ) eq ':' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2233} ) && 0 ) )
##
)
##
)
)
##
|| ( ( $pos = $pad{I2228} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 7722 7790
( ( $pad{I2234} = $pos or 1 ) &&
##
## pos: 7722 7789
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{I2234} ) && 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: 7991 8141
( ( $pad{I2235} = $pos or 1 ) &&
##
## pos: 7991 8140
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{I2235} ) && 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: 8237 8452
(
##
## pos: 8237 8252
( ( $pad{I2236} = $pos or 1 ) &&
##
## pos: 8237 8247
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{I2236} ) && 0 ) )
##
&&
##
## pos: 8252 8263
( ( $pad{I2237} = $pos or 1 ) &&
##
## pos: 8252 8254
( ( substr( $s, $pos, 1 ) eq chr(39) )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2237} ) && 0 ) )
##
&&
##
## pos: 8263 8452
( ( $pad{I2238} = $pos or 1 ) &&
##
## pos: 8263 8451
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{I2238} ) && 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: 8547 8663
(
##
## pos: 8547 8554
( ( $pad{I2239} = $pos or 1 ) &&
##
## pos: 8547 8553
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{I2239} ) && 0 ) )
##
&&
##
## pos: 8554 8565
( ( $pad{I2240} = $pos or 1 ) &&
##
## pos: 8554 8556
( ( substr( $s, $pos, 1 ) eq ')' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2240} ) && 0 ) )
##
&&
##
## pos: 8565 8663
( ( $pad{I2241} = $pos or 1 ) &&
##
## pos: 8565 8662
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{I2241} ) && 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: 8757 8878
(
##
## pos: 8757 8765
( ( $pad{I2242} = $pos or 1 ) &&
##
## pos: 8757 8763
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{I2242} ) && 0 ) )
##
&&
##
## pos: 8765 8778
( ( $pad{I2243} = $pos or 1 ) &&
##
## pos: 8765 8769
( ( substr( $s, $pos, 2 ) eq ')>' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2243} ) && 0 ) )
##
&&
##
## pos: 8778 8878
( ( $pad{I2244} = $pos or 1 ) &&
##
## pos: 8778 8877
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{I2244} ) && 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: 8973 9233
(
##
## pos: 8973 8994
( ( $pad{I2245} = $pos or 1 ) &&
##
## pos: 8973 8985
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{I2245} ) && 0 ) )
##
&&
##
## pos: 8994 9027
do { while (
( ( $pad{I2246} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 8995 9016
(
##
## pos: 8995 9003
( ( $pad{I2247} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2247} ) && 0 ) )
##
&&
##
## pos: 9003 9016
( ( $pad{I2248} = $pos or 1 ) &&
##
## pos: 9003 9015
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{I2248} ) && 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{I2246} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9027 9038
( ( $pad{I2249} = $pos or 1 ) &&
##
## pos: 9027 9029
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2249} ) && 0 ) )
##
&&
##
## pos: 9038 9233
( ( $pad{I2250} = $pos or 1 ) &&
##
## pos: 9038 9232
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{I2250} ) && 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: 9328 9588
(
##
## pos: 9328 9349
( ( $pad{I2251} = $pos or 1 ) &&
##
## pos: 9328 9340
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{I2251} ) && 0 ) )
##
&&
##
## pos: 9349 9382
do { while (
( ( $pad{I2252} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 9350 9371
(
##
## pos: 9350 9358
( ( $pad{I2253} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2253} ) && 0 ) )
##
&&
##
## pos: 9358 9371
( ( $pad{I2254} = $pos or 1 ) &&
##
## pos: 9358 9370
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{I2254} ) && 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{I2252} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9382 9393
( ( $pad{I2255} = $pos or 1 ) &&
##
## pos: 9382 9384
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2255} ) && 0 ) )
##
&&
##
## pos: 9393 9588
( ( $pad{I2256} = $pos or 1 ) &&
##
## pos: 9393 9587
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{I2256} ) && 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: 9683 9954
(
##
## pos: 9683 9697
( ( $pad{I2257} = $pos or 1 ) &&
##
## pos: 9683 9695
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{I2257} ) && 0 ) )
##
&&
##
## pos: 9697 9708
( ( $pad{I2258} = $pos or 1 ) &&
##
## pos: 9697 9699
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2258} ) && 0 ) )
##
&&
##
## pos: 9708 9741
do { while (
( ( $pad{I2259} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 9709 9730
(
##
## pos: 9709 9717
( ( $pad{I2260} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[+-]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2260} ) && 0 ) )
##
&&
##
## pos: 9717 9730
( ( $pad{I2261} = $pos or 1 ) &&
##
## pos: 9717 9729
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{I2261} ) && 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{I2259} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 9741 9752
( ( $pad{I2262} = $pos or 1 ) &&
##
## pos: 9741 9743
( ( substr( $s, $pos, 1 ) eq '>' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2262} ) && 0 ) )
##
&&
##
## pos: 9752 9954
( ( $pad{I2263} = $pos or 1 ) &&
##
## pos: 9752 9953
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{I2263} ) && 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: 10049 10108
(
##
## pos: 10049 10076
( ( $pad{I2264} = $pos or 1 ) &&
##
## pos: 10049 10067
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{I2264} ) && 0 ) )
##
&&
##
## pos: 10076 10108
( ( $pad{I2265} = $pos or 1 ) &&
##
## pos: 10076 10107
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{I2265} ) && 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: 10202 10392
(
##
## pos: 10202 10217
( ( $pad{I2266} = $pos or 1 ) &&
##
## pos: 10202 10215
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{I2266} ) && 0 ) )
##
&&
##
## pos: 10217 10228
( ( $pad{I2267} = $pos or 1 ) &&
##
## pos: 10217 10219
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2267} ) && 0 ) )
##
&&
##
## pos: 10228 10392
( ( $pad{I2268} = $pos or 1 ) &&
##
## pos: 10228 10391
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{I2268} ) && 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: 10487 10538
(
##
## pos: 10487 10510
( ( $pad{I2269} = $pos or 1 ) &&
##
## pos: 10487 10501
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{I2269} ) && 0 ) )
##
&&
##
## pos: 10510 10538
( ( $pad{I2270} = $pos or 1 ) &&
##
## pos: 10510 10537
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{I2270} ) && 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: 10635 10694
( ( $pad{I2271} = $pos or 1 ) &&
##
## pos: 10635 10693
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{I2271} ) && 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: 10790 10828
(
##
## pos: 10790 10797
( ( $pad{I2272} = $pos or 1 ) &&
##
## pos: 10790 10796
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{I2272} ) && 0 ) )
##
&&
##
## pos: 10797 10808
( ( $pad{I2273} = $pos or 1 ) &&
##
## pos: 10797 10799
( ( substr( $s, $pos, 1 ) eq ']' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2273} ) && 0 ) )
##
&&
##
## pos: 10808 10828
( ( $pad{I2274} = $pos or 1 ) &&
##
## pos: 10808 10827
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{I2274} ) && 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: 10916 10979
( ( $pad{I2275} = $pos or 1 ) &&
##
## pos: 10916 10978
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{I2275} ) && 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: 11069 11131
( ( $pad{I2276} = $pos or 1 ) &&
##
## pos: 11069 11130
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{I2276} ) && 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: 11220 11282
( ( $pad{I2277} = $pos or 1 ) &&
##
## pos: 11220 11281
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{I2277} ) && 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: 11371 11433
( ( $pad{I2278} = $pos or 1 ) &&
##
## pos: 11371 11432
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{I2278} ) && 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: 11522 11583
( ( $pad{I2279} = $pos or 1 ) &&
##
## pos: 11522 11582
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{I2279} ) && 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: 11671 11733
( ( $pad{I2280} = $pos or 1 ) &&
##
## pos: 11671 11732
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{I2280} ) && 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: 11822 11884
( ( $pad{I2281} = $pos or 1 ) &&
##
## pos: 11822 11883
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{I2281} ) && 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: 11972 12034
( ( $pad{I2282} = $pos or 1 ) &&
##
## pos: 11972 12033
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{I2282} ) && 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: 12123 12184
( ( $pad{I2283} = $pos or 1 ) &&
##
## pos: 12123 12183
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{I2283} ) && 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: 12272 12334
( ( $pad{I2284} = $pos or 1 ) &&
##
## pos: 12272 12333
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{I2284} ) && 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: 12576 12638
( ( $pad{I2285} = $pos or 1 ) &&
##
## pos: 12576 12637
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{I2285} ) && 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: 12888 13065
(
##
## pos: 12888 12894
( ( $pad{I2286} = $pos or 1 ) &&
##
## pos: 12888 12893
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{I2286} ) && 0 ) )
##
&&
##
## pos: 12894 12909
( ( $pad{I2287} = $pos or 1 ) &&
##
## pos: 12894 12900
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{I2287} ) && 0 ) )
##
&&
##
## pos: 12909 13065
( ( $pad{I2288} = $pos or 1 ) &&
##
## pos: 12909 13064
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{I2288} ) && 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: 13345 13422
(
##
## pos: 13345 13351
( ( $pad{I2289} = $pos or 1 ) &&
##
## pos: 13345 13350
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{I2289} ) && 0 ) )
##
&&
##
## pos: 13351 13366
( ( $pad{I2290} = $pos or 1 ) &&
##
## pos: 13351 13357
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{I2290} ) && 0 ) )
##
&&
##
## pos: 13366 13422
( ( $pad{I2291} = $pos or 1 ) &&
##
## pos: 13366 13421
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{I2291} ) && 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: 13701 13775
(
##
## pos: 13701 13707
( ( $pad{I2292} = $pos or 1 ) &&
##
## pos: 13701 13706
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{I2292} ) && 0 ) )
##
&&
##
## pos: 13707 13722
( ( $pad{I2293} = $pos or 1 ) &&
##
## pos: 13707 13713
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{I2293} ) && 0 ) )
##
&&
##
## pos: 13722 13775
( ( $pad{I2294} = $pos or 1 ) &&
##
## pos: 13722 13774
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{I2294} ) && 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: 14048 14122
(
##
## pos: 14048 14054
( ( $pad{I2295} = $pos or 1 ) &&
##
## pos: 14048 14053
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{I2295} ) && 0 ) )
##
&&
##
## pos: 14054 14069
( ( $pad{I2296} = $pos or 1 ) &&
##
## pos: 14054 14060
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{I2296} ) && 0 ) )
##
&&
##
## pos: 14069 14122
( ( $pad{I2297} = $pos or 1 ) &&
##
## pos: 14069 14121
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{I2297} ) && 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: 14223 14297
(
##
## pos: 14223 14229
( ( $pad{I2298} = $pos or 1 ) &&
##
## pos: 14223 14228
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{I2298} ) && 0 ) )
##
&&
##
## pos: 14229 14244
( ( $pad{I2299} = $pos or 1 ) &&
##
## pos: 14229 14235
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{I2299} ) && 0 ) )
##
&&
##
## pos: 14244 14297
( ( $pad{I2300} = $pos or 1 ) &&
##
## pos: 14244 14296
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{I2300} ) && 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: 14398 14473
(
##
## pos: 14398 14404
( ( $pad{I2301} = $pos or 1 ) &&
##
## pos: 14398 14403
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{I2301} ) && 0 ) )
##
&&
##
## pos: 14404 14419
( ( $pad{I2302} = $pos or 1 ) &&
##
## pos: 14404 14410
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{I2302} ) && 0 ) )
##
&&
##
## pos: 14419 14473
( ( $pad{I2303} = $pos or 1 ) &&
##
## pos: 14419 14472
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{I2303} ) && 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: 14575 14650
(
##
## pos: 14575 14581
( ( $pad{I2304} = $pos or 1 ) &&
##
## pos: 14575 14580
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{I2304} ) && 0 ) )
##
&&
##
## pos: 14581 14596
( ( $pad{I2305} = $pos or 1 ) &&
##
## pos: 14581 14587
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{I2305} ) && 0 ) )
##
&&
##
## pos: 14596 14650
( ( $pad{I2306} = $pos or 1 ) &&
##
## pos: 14596 14649
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{I2306} ) && 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: 14745 15547
(
( $pad{I2307} = $pos or 1 )
&& (
##
## pos: 14746 15224
(
##
## pos: 14746 14789
( ( $pad{I2308} = $pos or 1 ) &&
##
## pos: 14748 14781
do{
my $match =
##
## pos: 14748 14781
do {
our $I2309;
our $I2309_sizes;
unless ( $I2309 ) {
my $hash = \%Pugs::Grammar::Rule::variables;
my %sizes = map { length($_) => 1 } keys %$hash;
$I2309_sizes = [ sort { $b <=> $a } keys %sizes ];
$I2309 = $hash;
}
my $match = 0;
my $key;
for ( @$I2309_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I2309->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I2309, $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{I2308} ) && 0 ) )
##
&&
##
## pos: 14789 15224
( ( $pad{I2310} = $pos or 1 ) &&
##
## pos: 14790 15218
(
( $pad{I2311} = $pos or 1 )
&& (
##
## pos: 14790 15131
(
##
## pos: 14790 14799
(
( ( $pad{I2312} = $pos or 1 ) &&
##
## pos: 14792 14797
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{I2312} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 14799 14804
( ( $pad{I2313} = $pos or 1 ) &&
##
## pos: 14799 14803
( ( substr( $s, $pos, 2 ) eq ':=' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2313} ) && 0 ) )
##
&&
##
## pos: 14804 14811
(
( ( $pad{I2314} = $pos or 1 ) &&
##
## pos: 14804 14809
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{I2314} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 14811 14842
( ( $pad{I2315} = $pos or 1 ) &&
##
## pos: 14811 14831
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{I2315} ) && 0 ) )
##
&&
##
## pos: 14842 15131
( ( $pad{I2316} = $pos or 1 ) &&
##
## pos: 14842 15123
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{I2316} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2311} ) or 1 )
&&
##
## pos: 15132 15218
( ( $pad{I2317} = $pos or 1 ) &&
##
## pos: 15143 15210
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{I2317} ) && 0 ) )
##
)
)
##
|| ( ( $pos = $pad{I2310} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2307} ) or 1 )
&& ##
## pos: 15225 15393
(
##
## pos: 15225 15270
( ( $pad{I2318} = $pos or 1 ) &&
##
## pos: 15227 15261
do{
my $match =
##
## pos: 15227 15261
do {
our $I2319;
our $I2319_sizes;
unless ( $I2319 ) {
my $hash = \%Pugs::Grammar::Rule::rule_terms;
my %sizes = map { length($_) => 1 } keys %$hash;
$I2319_sizes = [ sort { $b <=> $a } keys %sizes ];
$I2319 = $hash;
}
my $match = 0;
my $key;
for ( @$I2319_sizes ) {
$key = ( $pos <= length( $s )
? substr( $s, $pos, $_ )
: '' );
if ( exists $I2319->{$key} ) {
#$named{KEY} = $key;
#$::_V6_MATCH_ = $m;
#print "m: ", Dumper( $::_V6_MATCH_->data )
# if ( $key eq 'until' );
$match = Pugs::Runtime::Regex::preprocess_hash( $I2319, $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{I2318} ) && 0 ) )
##
&&
##
## pos: 15270 15393
( ( $pad{I2320} = $pos or 1 ) &&
##
## pos: 15270 15388
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{I2320} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2307} ) or 1 )
&& ##
## pos: 15394 15547
(
##
## pos: 15394 15441
( ( $pad{I2321} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?![\]\}\)\>\:\?\+\*\|\&]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2321} ) && 0 ) )
##
&&
##
## pos: 15441 15547
( ( $pad{I2322} = $pos or 1 ) &&
##
## pos: 15441 15546
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{I2322} ) && 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: 15568 15682
(
( $pad{I2323} = $pos or 1 )
&& (
##
## pos: 15569 15660
(
##
## pos: 15569 15577
( ( $pad{I2324} = $pos or 1 ) &&
##
## pos: 15572 15576
( ( substr( $s, $pos, 2 ) eq '**' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2324} ) && 0 ) )
##
&&
##
## pos: 15577 15584
(
( ( $pad{I2325} = $pos or 1 ) &&
##
## pos: 15577 15582
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{I2325} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 15584 15588
( ( $pad{I2326} = $pos or 1 ) &&
##
## pos: 15584 15586
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2326} ) && 0 ) )
##
&&
##
## pos: 15588 15603
( ( $pad{I2327} = $pos or 1 ) &&
##
## pos: 15588 15601
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{I2327} ) && 0 ) )
##
&&
##
## pos: 15603 15614
( ( $pad{I2328} = $pos or 1 ) &&
##
## pos: 15603 15605
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2328} ) && 0 ) )
##
&&
##
## pos: 15614 15660
( ( $pad{I2329} = $pos or 1 ) &&
##
## pos: 15614 15655
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{I2329} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2323} ) or 1 )
&& ##
## pos: 15661 15682
(
( ( $pad{I2330} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\*\+]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2330} ) && 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: 15708 16474
(
##
## pos: 15708 15733
( ( $pad{I2331} = $pos or 1 ) &&
##
## pos: 15708 15728
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: 15721 15727
(
( ( $pad{I2332} = $pos or 1 ) &&
##
## pos: 15721 15726
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{I2332} ) && 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{I2331} ) && 0 ) )
##
&&
##
## pos: 15733 15768
( ( $pad{I2333} = $pos or 1 ) &&
##
## pos: 15733 15763
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 15743 15762
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 15743 15762
( ( $pad{I2334} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\}\]\)]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2334} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2333} ) && 0 ) )
##
&&
##
## pos: 15768 15779
( ( $pad{I2335} = $pos or 1 ) &&
##
## pos: 15768 15774
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{I2335} ) && 0 ) )
##
&&
##
## pos: 15779 15804
( ( $pad{I2336} = $pos or 1 ) &&
##
## pos: 15779 15799
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: 15792 15798
(
( ( $pad{I2337} = $pos or 1 ) &&
##
## pos: 15792 15797
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{I2337} ) && 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{I2336} ) && 0 ) )
##
&&
##
## pos: 15804 15816
( ( $pad{I2338} = $pos or 1 ) &&
##
## pos: 15804 15811
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{I2338} ) && 0 ) )
##
&&
##
## pos: 15816 15850
( ( $pad{I2339} = $pos or 1 ) &&
##
## pos: 15816 15845
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: 15830 15844
(
( ( $pad{I2340} = $pos or 1 ) &&
##
( ( substr( $s, $pos ) =~ m/^((?:(?=[\?\+]))\X)/ )
? ( $pos += length( $1 ) or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2340} ) && 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{I2339} ) && 0 ) )
##
&&
##
## pos: 15850 15875
( ( $pad{I2341} = $pos or 1 ) &&
##
## pos: 15850 15870
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: 15863 15869
(
( ( $pad{I2342} = $pos or 1 ) &&
##
## pos: 15863 15868
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{I2342} ) && 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{I2341} ) && 0 ) )
##
&&
##
## pos: 15875 16474
( ( $pad{I2343} = $pos or 1 ) &&
##
## pos: 15875 16473
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{I2343} ) && 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: 16496 16705
(
##
## pos: 16496 16514
(
( ( $pad{I2344} = $pos or 1 ) &&
##
## pos: 16496 16508
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{I2344} ) && 0 ) )
&& do { while (
( ( $pad{I2344} = $pos or 1 ) &&
##
## pos: 16496 16508
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{I2344} ) && 0 ) )) {}; $bool = 1 }
)
##
&&
##
## pos: 16514 16705
( ( $pad{I2345} = $pos or 1 ) &&
##
## pos: 16514 16704
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{I2345} ) && 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: 16733 17013
(
##
## pos: 16733 16767
(
( ( $pad{I2346} = $pos or 1 ) &&
##
## pos: 16734 16759
(
##
## pos: 16734 16742
(
( ( $pad{I2347} = $pos or 1 ) &&
##
## pos: 16735 16740
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{I2347} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 16742 16745
( ( $pad{I2348} = $pos or 1 ) &&
##
## pos: 16742 16744
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2348} ) && 0 ) )
##
&&
##
## pos: 16745 16759
( ( $pad{I2349} = $pos or 1 ) &&
##
## pos: 16745 16758
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 16754 16757
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 16754 16757
( ( $pad{I2350} = $pos or 1 ) &&
##
## pos: 16754 16756
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2350} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2349} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2346} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 16767 16785
(
( ( $pad{I2351} = $pos or 1 ) &&
##
## pos: 16767 16775
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{I2351} ) && 0 ) )
)
##
&&
##
## pos: 16785 16834
do { while (
( ( $pad{I2352} = $pos or 1 ) &&
##
## pos: 16786 16826
(
##
## pos: 16786 16798
( ( $pad{I2353} = $pos or 1 ) &&
##
## pos: 16795 16797
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2353} ) && 0 ) )
##
&&
##
## pos: 16798 16813
( ( $pad{I2354} = $pos or 1 ) &&
##
## pos: 16798 16811
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 16807 16810
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 16807 16810
( ( $pad{I2355} = $pos or 1 ) &&
##
## pos: 16807 16809
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2355} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2354} ) && 0 ) )
##
&&
##
## pos: 16813 16826
( ( $pad{I2356} = $pos or 1 ) &&
##
## pos: 16813 16821
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{I2356} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2352} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 16834 17013
( ( $pad{I2357} = $pos or 1 ) &&
##
## pos: 16834 17012
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{I2357} ) && 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: 17041 17330
(
##
## pos: 17041 17075
(
( ( $pad{I2358} = $pos or 1 ) &&
##
## pos: 17042 17067
(
##
## pos: 17042 17050
(
( ( $pad{I2359} = $pos or 1 ) &&
##
## pos: 17043 17048
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{I2359} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17050 17053
( ( $pad{I2360} = $pos or 1 ) &&
##
## pos: 17050 17052
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2360} ) && 0 ) )
##
&&
##
## pos: 17053 17067
( ( $pad{I2361} = $pos or 1 ) &&
##
## pos: 17053 17066
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 17062 17065
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17062 17065
( ( $pad{I2362} = $pos or 1 ) &&
##
## pos: 17062 17064
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2362} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2361} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2358} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17075 17099
(
( ( $pad{I2363} = $pos or 1 ) &&
##
## pos: 17075 17089
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{I2363} ) && 0 ) )
)
##
&&
##
## pos: 17099 17153
do { while (
( ( $pad{I2364} = $pos or 1 ) &&
##
## pos: 17100 17145
(
##
## pos: 17100 17112
( ( $pad{I2365} = $pos or 1 ) &&
##
## pos: 17109 17111
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2365} ) && 0 ) )
##
&&
##
## pos: 17112 17126
( ( $pad{I2366} = $pos or 1 ) &&
##
## pos: 17112 17125
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 17121 17124
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17121 17124
( ( $pad{I2367} = $pos or 1 ) &&
##
## pos: 17121 17123
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2367} ) && 0 ) )
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2366} ) && 0 ) )
##
&&
##
## pos: 17126 17145
( ( $pad{I2368} = $pos or 1 ) &&
##
## pos: 17126 17140
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{I2368} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2364} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17153 17330
( ( $pad{I2369} = $pos or 1 ) &&
##
## pos: 17153 17329
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{I2369} ) && 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: 17357 17631
(
##
## pos: 17357 17380
(
( ( $pad{I2370} = $pos or 1 ) &&
##
## pos: 17358 17372
(
##
## pos: 17358 17366
(
( ( $pad{I2371} = $pos or 1 ) &&
##
## pos: 17359 17364
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{I2371} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17366 17369
( ( $pad{I2372} = $pos or 1 ) &&
##
## pos: 17366 17368
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2372} ) && 0 ) )
##
&&
##
## pos: 17369 17372
( ( $pad{I2373} = $pos or 1 ) &&
##
## pos: 17369 17371
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2373} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2370} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17380 17404
(
( ( $pad{I2374} = $pos or 1 ) &&
##
## pos: 17380 17394
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{I2374} ) && 0 ) )
)
##
&&
##
## pos: 17404 17447
do { while (
( ( $pad{I2375} = $pos or 1 ) &&
##
## pos: 17405 17439
(
##
## pos: 17405 17417
( ( $pad{I2376} = $pos or 1 ) &&
##
## pos: 17414 17416
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2376} ) && 0 ) )
##
&&
##
## pos: 17417 17420
( ( $pad{I2377} = $pos or 1 ) &&
##
## pos: 17417 17419
( ( substr( $s, $pos, 1 ) eq '&' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2377} ) && 0 ) )
##
&&
##
## pos: 17420 17439
( ( $pad{I2378} = $pos or 1 ) &&
##
## pos: 17420 17434
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{I2378} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2375} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17447 17631
( ( $pad{I2379} = $pos or 1 ) &&
##
## pos: 17447 17630
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{I2379} ) && 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: 17651 17915
(
##
## pos: 17651 17674
(
( ( $pad{I2380} = $pos or 1 ) &&
##
## pos: 17652 17666
(
##
## pos: 17652 17660
(
( ( $pad{I2381} = $pos or 1 ) &&
##
## pos: 17653 17658
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{I2381} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17660 17663
( ( $pad{I2382} = $pos or 1 ) &&
##
## pos: 17660 17662
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2382} ) && 0 ) )
##
&&
##
## pos: 17663 17666
( ( $pad{I2383} = $pos or 1 ) &&
##
## pos: 17663 17665
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2383} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2380} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17674 17697
(
( ( $pad{I2384} = $pos or 1 ) &&
##
## pos: 17674 17687
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{I2384} ) && 0 ) )
)
##
&&
##
## pos: 17697 17739
do { while (
( ( $pad{I2385} = $pos or 1 ) &&
##
## pos: 17698 17731
(
##
## pos: 17698 17710
( ( $pad{I2386} = $pos or 1 ) &&
##
## pos: 17707 17709
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2386} ) && 0 ) )
##
&&
##
## pos: 17710 17713
( ( $pad{I2387} = $pos or 1 ) &&
##
## pos: 17710 17712
( ( substr( $s, $pos, 1 ) eq '|' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2387} ) && 0 ) )
##
&&
##
## pos: 17713 17731
( ( $pad{I2388} = $pos or 1 ) &&
##
## pos: 17713 17726
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{I2388} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2385} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 17739 17915
( ( $pad{I2389} = $pos or 1 ) &&
##
## pos: 17739 17914
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{I2389} ) && 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: 17942 18162
(
##
## pos: 17942 17977
( ( $pad{I2390} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 17943 17971
(
( $pad{I2391} = $pos or 1 )
&& (
##
## pos: 17943 17952
( ( $pad{I2392} = $pos or 1 ) &&
##
## pos: 17944 17951
( ( substr( $s, $pos, 5 ) eq 'token' )
? ( $pos += 5 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2392} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2391} ) or 1 )
&&
##
## pos: 17953 17962
( ( $pad{I2393} = $pos or 1 ) &&
##
## pos: 17954 17961
( ( substr( $s, $pos, 5 ) eq 'regex' )
? ( $pos += 5 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2393} ) && 0 ) )
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2391} ) or 1 )
&&
##
## pos: 17963 17971
( ( $pad{I2394} = $pos or 1 ) &&
##
## pos: 17964 17970
( ( substr( $s, $pos, 4 ) eq 'rule' )
? ( $pos += 4 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2394} ) && 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{I2390} ) && 0 ) )
##
&&
##
## pos: 17977 17983
( ( $pad{I2395} = $pos or 1 ) &&
##
## pos: 17977 17982
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{I2395} ) && 0 ) )
##
&&
##
## pos: 17983 17991
( ( $pad{I2396} = $pos or 1 ) &&
##
## pos: 17983 17990
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{I2396} ) && 0 ) )
##
&&
##
## pos: 17991 17998
(
( ( $pad{I2397} = $pos or 1 ) &&
##
## pos: 17991 17996
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{I2397} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 17998 18010
( ( $pad{I2398} = $pos or 1 ) &&
##
## pos: 17998 18001
( ( substr( $s, $pos, 1 ) eq '{' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2398} ) && 0 ) )
##
&&
##
## pos: 18010 18025
(
( ( $pad{I2399} = $pos or 1 ) &&
##
## pos: 18010 18015
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{I2399} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18025 18036
( ( $pad{I2400} = $pos or 1 ) &&
##
## pos: 18025 18031
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{I2400} ) && 0 ) )
##
&&
##
## pos: 18036 18040
( ( $pad{I2401} = $pos or 1 ) &&
##
## pos: 18036 18039
( ( substr( $s, $pos, 1 ) eq '}' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2401} ) && 0 ) )
##
&&
##
## pos: 18040 18050
(
( ( $pad{I2402} = $pos or 1 ) &&
##
## pos: 18040 18043
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2402} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18050 18162
( ( $pad{I2403} = $pos or 1 ) &&
##
## pos: 18050 18161
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{I2403} ) && 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: 18224 18346
(
##
## pos: 18224 18229
( ( $pad{I2404} = $pos or 1 ) &&
##
## pos: 18224 18228
( ( substr( $s, $pos, 2 ) eq '%{' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2404} ) && 0 ) )
##
&&
##
## pos: 18229 18255
( ( $pad{I2405} = $pos or 1 ) &&
##
do{
my $hash = do {
my $bool = 1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 18230 18253
do { while (
( ( $pad{I2406} = $pos or 1 ) &&
##
## pos: 18232 18250
(
##
## pos: 18232 18248
( ( $pad{I2407} = $pos or 1 ) &&
##
## pos: 18233 18247
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool =
##
## pos: 18242 18246
do{
my $pos1 = $pos;
do {
my $pos = $pos1;
my $from = $pos;
my @match;
my %named;
$bool = 0 unless
##
## pos: 18242 18246
( ( substr( $s, $pos, 2 ) eq '%}' )
? ( $pos += 2 or 1 )
: 0
)
##
;
$bool;
};
}
##
? 0 : 1;
$bool;
};
}
##
|| ( ( $pos = $pad{I2407} ) && 0 ) )
##
&&
##
## pos: 18248 18250
( ( $pad{I2408} = $pos or 1 ) &&
##
## pos: 18248 18249
( substr( $s, $pos++, 1 ) ne '' )
##
|| ( ( $pos = $pad{I2408} ) && 0 ) )
##
)
##
|| ( ( $pos = $pad{I2406} ) && 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{I2405} ) && 0 ) )
##
&&
##
## pos: 18255 18264
( ( $pad{I2409} = $pos or 1 ) &&
##
## pos: 18255 18259
( ( substr( $s, $pos, 2 ) eq '%}' )
? ( $pos += 2 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2409} ) && 0 ) )
##
&&
##
## pos: 18264 18346
( ( $pad{I2410} = $pos or 1 ) &&
##
## pos: 18264 18345
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{I2410} ) && 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: 18366 18458
(
( $pad{I2411} = $pos or 1 )
&& (
##
## pos: 18367 18414
(
##
## pos: 18367 18385
( ( $pad{I2412} = $pos or 1 ) &&
##
## pos: 18368 18378
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{I2412} ) && 0 ) )
##
&&
##
## pos: 18385 18414
( ( $pad{I2413} = $pos or 1 ) &&
##
## pos: 18385 18409
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{I2413} ) && 0 ) )
##
)
##
)
|| (
( ( $bool = 1 ) && ( $pos = $pad{I2411} ) or 1 )
&& ##
## pos: 18415 18458
(
##
## pos: 18415 18430
( ( $pad{I2414} = $pos or 1 ) &&
##
## pos: 18416 18429
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{I2414} ) && 0 ) )
##
&&
##
## pos: 18430 18458
( ( $pad{I2415} = $pos or 1 ) &&
##
## pos: 18430 18457
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{I2415} ) && 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: 18481 18597
(
##
## pos: 18481 18488
(
( ( $pad{I2416} = $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{I2416} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18488 18498
( ( $pad{I2417} = $pos or 1 ) &&
##
## pos: 18488 18497
( ( substr( $s, $pos, 7 ) eq 'grammar' )
? ( $pos += 7 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2417} ) && 0 ) )
##
&&
##
## pos: 18498 18504
( ( $pad{I2418} = $pos or 1 ) &&
##
## pos: 18498 18503
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{I2418} ) && 0 ) )
##
&&
##
## pos: 18504 18512
( ( $pad{I2419} = $pos or 1 ) &&
##
## pos: 18504 18511
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{I2419} ) && 0 ) )
##
&&
##
## pos: 18512 18519
(
( ( $pad{I2420} = $pos or 1 ) &&
##
## pos: 18512 18517
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{I2420} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18519 18527
( ( $pad{I2421} = $pos or 1 ) &&
##
## pos: 18519 18522
( ( substr( $s, $pos, 1 ) eq ';' )
? ( $pos += 1 or 1 )
: 0
)
##
|| ( ( $pos = $pad{I2421} ) && 0 ) )
##
&&
##
## pos: 18527 18538
(
( ( $pad{I2422} = $pos or 1 ) &&
##
## pos: 18527 18532
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{I2422} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18538 18561
do { while (
( ( $pad{I2423} = $pos or 1 ) &&
##
## pos: 18539 18554
(
##
## pos: 18539 18547
( ( $pad{I2424} = $pos or 1 ) &&
##
## pos: 18540 18546
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{I2424} ) && 0 ) )
##
&&
##
## pos: 18547 18554
(
( ( $pad{I2425} = $pos or 1 ) &&
##
## pos: 18547 18552
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{I2425} ) && 0 ) )
|| ( $bool = 1 )
)
##
)
##
|| ( ( $pos = $pad{I2423} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 18561 18597
( ( $pad{I2426} = $pos or 1 ) &&
##
## pos: 18561 18596
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{I2426} ) && 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: 18617 18737
(
##
## pos: 18617 18633
(
( ( $pad{I2427} = $pos or 1 ) &&
##
## pos: 18617 18627
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{I2427} ) && 0 ) )
|| ( $bool = 1 )
)
##
&&
##
## pos: 18633 18648
do { while (
( ( $pad{I2428} = $pos or 1 ) &&
##
## pos: 18633 18642
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{I2428} ) && 0 ) )) {}; $bool = 1 }
##
&&
##
## pos: 18648 18737
( ( $pad{I2429} = $pos or 1 ) &&
##
## pos: 18648 18736
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{I2429} ) && 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;