package Cindy::CJSGrammar;
use Parse::RecDescent;
{ my $ERRORS;
package Parse::RecDescent::Cindy::CJSGrammar;
use strict;
use vars qw($skip $AUTOLOAD );
@Parse::RecDescent::Cindy::CJSGrammar::ISA = ();
$skip = '\s*';
my $selector; ;
{
local $SIG{__WARN__} = sub {0};
# PRETEND TO BE IN Parse::RecDescent NAMESPACE
*Parse::RecDescent::Cindy::CJSGrammar::AUTOLOAD = sub
{
no strict 'refs';
${"AUTOLOAD"} =~ s/^Parse::RecDescent::Cindy::CJSGrammar/Parse::RecDescent/;
goto &{${"AUTOLOAD"}};
}
}
push @Parse::RecDescent::Cindy::CJSGrammar::ISA, 'Parse::RecDescent';
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::full_injection
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"full_injection"};
Parse::RecDescent::_trace(q{Trying rule: [full_injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{injection});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [injection separator]},
Parse::RecDescent::_tracefirst($_[1]),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{full_injection});
%item = (__RULE__ => q{full_injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [injection]},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::injection($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [injection]>>},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [injection]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{injection}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [separator]},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{separator})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::separator($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [separator]>>},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [separator]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{separator}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$item[1];};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [injection separator]<<},
Parse::RecDescent::_tracefirst($text),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{full_injection},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{full_injection},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{full_injection},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::atname
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"atname"};
Parse::RecDescent::_trace(q{Trying rule: [atname]},
Parse::RecDescent::_tracefirst($_[1]),
q{atname},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/\\w[\\w\\d.:-]*/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/\\w[\\w\\d.:-]*/]},
Parse::RecDescent::_tracefirst($_[1]),
q{atname},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{atname});
%item = (__RULE__ => q{atname});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/\\w[\\w\\d.:-]*/]}, Parse::RecDescent::_tracefirst($text),
q{atname},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\w[\w\d.:-]*)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/\\w[\\w\\d.:-]*/]<<},
Parse::RecDescent::_tracefirst($text),
q{atname},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{atname},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{atname},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{atname},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{atname},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::injection_list
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"injection_list"};
Parse::RecDescent::_trace(q{Trying rule: [injection_list]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{full_injection});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [full_injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{injection_list});
%item = (__RULE__ => q{injection_list});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying repeated subrule: [full_injection]},
Parse::RecDescent::_tracefirst($text),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::full_injection, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [full_injection]>>},
Parse::RecDescent::_tracefirst($text),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [full_injection]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
$item{q{full_injection(s)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {[grep($_, @{$item[1]})];};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [full_injection]<<},
Parse::RecDescent::_tracefirst($text),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{injection_list},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{injection_list},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{injection_list},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::sub_injection_list
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"sub_injection_list"};
Parse::RecDescent::_trace(q{Trying rule: [sub_injection_list]},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{sub_injection});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [sub_injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{sub_injection_list});
%item = (__RULE__ => q{sub_injection_list});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying repeated subrule: [sub_injection]},
Parse::RecDescent::_tracefirst($text),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::sub_injection, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [sub_injection]>>},
Parse::RecDescent::_tracefirst($text),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [sub_injection]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$item{q{sub_injection(s)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {[grep($_, @{$item[1]})];};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [sub_injection]<<},
Parse::RecDescent::_tracefirst($text),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{sub_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{sub_injection_list},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{sub_injection_list},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::attribute
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"attribute"};
Parse::RecDescent::_trace(q{Trying rule: [attribute]},
Parse::RecDescent::_tracefirst($_[1]),
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/attribute/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/attribute/]},
Parse::RecDescent::_tracefirst($_[1]),
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{attribute});
%item = (__RULE__ => q{attribute});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/attribute/]}, Parse::RecDescent::_tracefirst($text),
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:attribute)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/attribute/]<<},
Parse::RecDescent::_tracefirst($text),
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{attribute},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{attribute},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{attribute},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::injection
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"injection"};
Parse::RecDescent::_trace(q{Trying rule: [injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/\\s*;/, or xpath, or /[^;]+;[^\\n]*\\n?/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/\\s*;/]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/\\s*;/]}, Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
$_savetext = $text;
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*;)/)
{
$text = $_savetext;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
$text = $_savetext;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {0;};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [/\\s*;/]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [xpath action <commit> xpath]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [action]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{action})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::action($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [action]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [action]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{action}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{xpath})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {Cindy::Injection->new(@item[1,2,4], $selector);};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [xpath action <commit> xpath]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [xpath attribute <commit> xpath atname]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[2];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [attribute]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{attribute})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::attribute($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [attribute]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [attribute]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{attribute}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{xpath})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [atname]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{atname})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::atname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [atname]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [atname]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{atname}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {Cindy::Injection->new(@item[1,2,4], $selector,
atname => $item{atname});};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [xpath attribute <commit> xpath atname]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [xpath repeat <commit> xpath condition sublist]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[3];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [repeat]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{repeat})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::repeat($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [repeat]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [repeat]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{repeat}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{xpath})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying repeated subrule: [condition]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{condition})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::condition, 0, 1, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [condition]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [condition]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{condition(?)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{Trying subrule: [sublist]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{sublist})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::sublist($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [sublist]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [sublist]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{sublist}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {Cindy::Injection->new(@item[1,2,4], $selector,
sublist => $item{sublist},
xfilter => $item{'condition(?)'}->[0]);};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [xpath repeat <commit> xpath condition sublist]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [<error...>]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[4];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { if (1) { do {
my $rule = $item[0];
$rule =~ s/_/ /g;
#WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
} unless $_noactions; undef } else {0} };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/[^;]+;[^\\n]*\\n?/ errout]},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[5];
$text = $_[1];
my $_savetext;
@item = (q{injection});
%item = (__RULE__ => q{injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/[^;]+;[^\\n]*\\n?/]}, Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[^;]+;[^\n]*\n?)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{Trying subrule: [errout]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{errout})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::errout($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [errout]>>},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [errout]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{errout}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{>>Matched production: [/[^;]+;[^\\n]*\\n?/ errout]<<},
Parse::RecDescent::_tracefirst($text),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{injection},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{injection},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{injection},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{injection},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::complete_injection_list
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"complete_injection_list"};
Parse::RecDescent::_trace(q{Trying rule: [complete_injection_list]},
Parse::RecDescent::_tracefirst($_[1]),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{usage, or errout});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [usage injection_list /\\Z/]},
Parse::RecDescent::_tracefirst($_[1]),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{complete_injection_list});
%item = (__RULE__ => q{complete_injection_list});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [usage]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::usage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [usage]>>},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [usage]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$item{q{usage}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [injection_list]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{injection_list})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::injection_list($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [injection_list]>>},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [injection_list]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$item{q{injection_list}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying terminal: [/\\Z/]}, Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{/\\Z/})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\Z)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$item{injection_list};};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [usage injection_list /\\Z/]<<},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [<error...>]},
Parse::RecDescent::_tracefirst($_[1]),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{complete_injection_list});
%item = (__RULE__ => q{complete_injection_list});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { if (1) { do {
my $rule = $item[0];
$rule =~ s/_/ /g;
#WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
} unless $_noactions; undef } else {0} };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [errout]},
Parse::RecDescent::_tracefirst($_[1]),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[2];
$text = $_[1];
my $_savetext;
@item = (q{complete_injection_list});
%item = (__RULE__ => q{complete_injection_list});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [errout]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::errout($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [errout]>>},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [errout]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$item{q{errout}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{>>Matched production: [errout]<<},
Parse::RecDescent::_tracefirst($text),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{complete_injection_list},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{complete_injection_list},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{complete_injection_list},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::usage
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"usage"};
Parse::RecDescent::_trace(q{Trying rule: [usage]},
Parse::RecDescent::_tracefirst($_[1]),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{comment});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [comment 'use' selector separator]},
Parse::RecDescent::_tracefirst($_[1]),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{usage});
%item = (__RULE__ => q{usage});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying repeated subrule: [comment]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::comment, 0, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [comment]>>},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [comment]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$item{q{comment(s?)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{Trying terminal: ['use']},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{'use'})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "use"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING1__}=$_tok;
Parse::RecDescent::_trace(q{Trying subrule: [selector]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{selector})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::selector($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [selector]>>},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [selector]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$item{q{selector}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying subrule: [separator]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{separator})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::separator($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [separator]>>},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [separator]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$item{q{separator}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$selector = $item{selector};};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [comment 'use' selector separator]<<},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [comment]},
Parse::RecDescent::_tracefirst($_[1]),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{usage});
%item = (__RULE__ => q{usage});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying repeated subrule: [comment]},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::comment, 0, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [comment]>>},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [comment]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$item{q{comment(s?)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$selector = 'xpath';};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
Parse::RecDescent::_tracefirst($text),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{usage},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{usage},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{usage},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{usage},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::selector
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"selector"};
Parse::RecDescent::_trace(q{Trying rule: [selector]},
Parse::RecDescent::_tracefirst($_[1]),
q{selector},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/css|xpath/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/css|xpath/]},
Parse::RecDescent::_tracefirst($_[1]),
q{selector},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{selector});
%item = (__RULE__ => q{selector});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/css|xpath/]}, Parse::RecDescent::_tracefirst($text),
q{selector},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:css|xpath)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/css|xpath/]<<},
Parse::RecDescent::_tracefirst($text),
q{selector},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{selector},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{selector},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{selector},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{selector},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::sublist
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"sublist"};
Parse::RecDescent::_trace(q{Trying rule: [sublist]},
Parse::RecDescent::_tracefirst($_[1]),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{'\{'});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: ['\{' <commit> sub_injection_list '\}']},
Parse::RecDescent::_tracefirst($_[1]),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{sublist});
%item = (__RULE__ => q{sublist});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "{"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING1__}=$_tok;
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{Trying subrule: [sub_injection_list]},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{sub_injection_list})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::sub_injection_list($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [sub_injection_list]>>},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [sub_injection_list]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$item{q{sub_injection_list}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{'\}'})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "}"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING2__}=$_tok;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$item[3];};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: ['\{' <commit> sub_injection_list '\}']<<},
Parse::RecDescent::_tracefirst($text),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{sublist},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{sublist},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{sublist},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::xpath
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"xpath"};
Parse::RecDescent::_trace(q{Trying rule: [xpath]},
Parse::RecDescent::_tracefirst($_[1]),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/\\"[^\\"]+\\"/, or /\\S+/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/\\"[^\\"]+\\"/]},
Parse::RecDescent::_tracefirst($_[1]),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{xpath});
%item = (__RULE__ => q{xpath});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/\\"[^\\"]+\\"/]}, Parse::RecDescent::_tracefirst($text),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\"[^\"]+\")/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$return = substr($item[1], 1, -1);};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [/\\"[^\\"]+\\"/]<<},
Parse::RecDescent::_tracefirst($text),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/\\S+/]},
Parse::RecDescent::_tracefirst($_[1]),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{xpath});
%item = (__RULE__ => q{xpath});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/\\S+/]}, Parse::RecDescent::_tracefirst($text),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\S+)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/\\S+/]<<},
Parse::RecDescent::_tracefirst($text),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{xpath},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{xpath},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{xpath},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::errout
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"errout"};
Parse::RecDescent::_trace(q{Trying rule: [errout]},
Parse::RecDescent::_tracefirst($_[1]),
q{errout},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: []},
Parse::RecDescent::_tracefirst($_[1]),
q{errout},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{errout});
%item = (__RULE__ => q{errout});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{errout},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {Cindy::Sheet::collect_errors($thisparser);};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: []<<},
Parse::RecDescent::_tracefirst($text),
q{errout},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{errout},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{errout},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{errout},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{errout},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::comment
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"comment"};
Parse::RecDescent::_trace(q{Trying rule: [comment]},
Parse::RecDescent::_tracefirst($_[1]),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/;/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
Parse::RecDescent::_trace(q{Trying production: [/;/ <commit> <skip: qr/[^\n]*/> /\\n?/]},
Parse::RecDescent::_tracefirst($_[1]),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{comment});
%item = (__RULE__ => q{comment});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/;/]}, Parse::RecDescent::_tracefirst($text),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:;)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{Trying directive: [<skip: qr/[^\n]*/>]},
Parse::RecDescent::_tracefirst($text),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { my $oldskip = $skip; $skip= qr/[^\n]*/; $oldskip };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE2__}=$_tok;
Parse::RecDescent::_trace(q{Trying terminal: [/\\n?/]}, Parse::RecDescent::_tracefirst($text),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{/\\n?/})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\n?)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN2__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/;/ <commit> <skip: qr/[^\n]*/> /\\n?/]<<},
Parse::RecDescent::_tracefirst($text),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{comment},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{comment},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{comment},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{comment},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::separator
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"separator"};
Parse::RecDescent::_trace(q{Trying rule: [separator]},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{comment, or '\}', or /\\Z/, or /[^;]+;[^\\n]*\\n?/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [comment]},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{separator});
%item = (__RULE__ => q{separator});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying repeated subrule: [comment]},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$expectation->is(q{})->at($text);
unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cindy::CJSGrammar::comment, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [comment]>>},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched repeated subrule: [comment]<< (}
. @$_tok . q{ times)},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$item{q{comment(s)}} = $_tok;
push @item, $_tok;
Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: ['\}']},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{separator});
%item = (__RULE__ => q{separator});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
$_savetext = $text;
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "}"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $_savetext;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING1__}=$_tok;
$text = $_savetext;
Parse::RecDescent::_trace(q{>>Matched production: ['\}']<<},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/\\Z/]},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[2];
$text = $_[1];
my $_savetext;
@item = (q{separator});
%item = (__RULE__ => q{separator});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/\\Z/]}, Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
$_savetext = $text;
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\Z)/)
{
$text = $_savetext;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
$text = $_savetext;
Parse::RecDescent::_trace(q{>>Matched production: [/\\Z/]<<},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [<error...>]},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[3];
$text = $_[1];
my $_savetext;
@item = (q{separator});
%item = (__RULE__ => q{separator});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { if (1) { do {push @{$thisparser->{errors}}, [qq{Expected ";" but found "}.($text=~/(.*)\n/,$1).qq{" instead.},$thisline];} unless $_noactions; undef } else {0} };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/[^;]+;[^\\n]*\\n?/ errout]},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[4];
$text = $_[1];
my $_savetext;
@item = (q{separator});
%item = (__RULE__ => q{separator});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/[^;]+;[^\\n]*\\n?/]}, Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[^;]+;[^\n]*\n?)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{Trying subrule: [errout]},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{errout})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::errout($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [errout]>>},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [errout]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$item{q{errout}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{>>Matched production: [/[^;]+;[^\\n]*\\n?/ errout]<<},
Parse::RecDescent::_tracefirst($text),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{separator},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{separator},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{separator},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{separator},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::sub_injection
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"sub_injection"};
Parse::RecDescent::_trace(q{Trying rule: [sub_injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{'\}', or full_injection});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: ['\}' <commit> <reject>]},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{sub_injection});
%item = (__RULE__ => q{sub_injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
$_savetext = $text;
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "}"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $_savetext;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING1__}=$_tok;
$text = $_savetext;
Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$_tok = do { $commit = 1 };
if (defined($_tok))
{
Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
else
{
Parse::RecDescent::_trace(q{<<Didn't match directive>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
}
last unless defined $_tok;
push @item, $item{__DIRECTIVE1__}=$_tok;
Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
undef $return;
$_tok = undef;
last unless defined $_tok;
Parse::RecDescent::_trace(q{>>Matched production: ['\}' <commit> <reject>]<<},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [full_injection]},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[1];
$text = $_[1];
my $_savetext;
@item = (q{sub_injection});
%item = (__RULE__ => q{sub_injection});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [full_injection]},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::full_injection($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [full_injection]>>},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [full_injection]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$item{q{full_injection}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{>>Matched production: [full_injection]<<},
Parse::RecDescent::_tracefirst($text),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{sub_injection},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{sub_injection},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{sub_injection},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::action
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"action"};
Parse::RecDescent::_trace(q{Trying rule: [action]},
Parse::RecDescent::_tracefirst($_[1]),
q{action},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/content|replace|copy|omit-tag|condition|comment/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/content|replace|copy|omit-tag|condition|comment/]},
Parse::RecDescent::_tracefirst($_[1]),
q{action},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{action});
%item = (__RULE__ => q{action});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/content|replace|copy|omit-tag|condition|comment/]}, Parse::RecDescent::_tracefirst($text),
q{action},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:content|replace|copy|omit-tag|condition|comment)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/content|replace|copy|omit-tag|condition|comment/]<<},
Parse::RecDescent::_tracefirst($text),
q{action},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{action},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{action},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{action},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{action},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::repeat
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"repeat"};
Parse::RecDescent::_trace(q{Trying rule: [repeat]},
Parse::RecDescent::_tracefirst($_[1]),
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{/repeat/});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [/repeat/]},
Parse::RecDescent::_tracefirst($_[1]),
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{repeat});
%item = (__RULE__ => q{repeat});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying terminal: [/repeat/]}, Parse::RecDescent::_tracefirst($text),
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{})->at($text);
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:repeat)/)
{
$text = $lastsep . $text if defined $lastsep;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
$current_match = substr($text, $-[0], $+[0] - $-[0]);
substr($text,0,length($current_match),q{});
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $current_match . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__PATTERN1__}=$current_match;
Parse::RecDescent::_trace(q{>>Matched production: [/repeat/]<<},
Parse::RecDescent::_tracefirst($text),
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{repeat},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{repeat},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{repeat},
$tracelevel)
}
$_[1] = $text;
return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
sub Parse::RecDescent::Cindy::CJSGrammar::condition
{
my $thisparser = $_[0];
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
my $thisrule = $thisparser->{"rules"}{"condition"};
Parse::RecDescent::_trace(q{Trying rule: [condition]},
Parse::RecDescent::_tracefirst($_[1]),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
my $err_at = @{$thisparser->{errors}};
my $score;
my $score_return;
my $_tok;
my $return = undef;
my $_matched=0;
my $commit=0;
my @item = ();
my %item = ();
my $repeating = $_[2];
my $_noactions = $_[3];
my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
my $_itempos = $_[5];
my %arg = ($#arg & 01) ? @arg : (@arg, undef);
my $text;
my $lastsep;
my $current_match;
my $expectation = new Parse::RecDescent::Expectation(q{xpath});
$expectation->at($_[1]);
my $thisline;
tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
while (!$_matched && !$commit)
{
Parse::RecDescent::_trace(q{Trying production: [xpath '\{']},
Parse::RecDescent::_tracefirst($_[1]),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
my $thisprod = $thisrule->{"prods"}[0];
$text = $_[1];
my $_savetext;
@item = (q{condition});
%item = (__RULE__ => q{condition});
my $repcount = 0;
Parse::RecDescent::_trace(q{Trying subrule: [xpath]},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
if (1) { no strict qw{refs};
$expectation->is(q{})->at($text);
unless (defined ($_tok = Parse::RecDescent::Cindy::CJSGrammar::xpath($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
{
Parse::RecDescent::_trace(q{<<Didn't match subrule: [xpath]>>},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
$expectation->failed();
last;
}
Parse::RecDescent::_trace(q{>>Matched subrule: [xpath]<< (return value: [}
. $_tok . q{]},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
$item{q{xpath}} = $_tok;
push @item, $_tok;
}
Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
undef $lastsep;
$expectation->is(q{'\{'})->at($text);
$_savetext = $text;
unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "{"; 1 } and
substr($text,0,length($_tok)) eq $_tok and
do { substr($text,0,length($_tok)) = ""; 1; }
)
{
$text = $_savetext;
$expectation->failed();
Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $item{__STRING1__}=$_tok;
$text = $_savetext;
Parse::RecDescent::_trace(q{Trying action},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
$_tok = ($_noactions) ? 0 : do {$item[1];};
unless (defined $_tok)
{
Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
if defined $::RD_TRACE;
last;
}
Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
. $_tok . q{])},
Parse::RecDescent::_tracefirst($text))
if defined $::RD_TRACE;
push @item, $_tok;
$item{__ACTION1__}=$_tok;
Parse::RecDescent::_trace(q{>>Matched production: [xpath '\{']<<},
Parse::RecDescent::_tracefirst($text),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
$_matched = 1;
last;
}
unless ( $_matched || defined($score) )
{
$_[1] = $text; # NOT SURE THIS IS NEEDED
Parse::RecDescent::_trace(q{<<Didn't match rule>>},
Parse::RecDescent::_tracefirst($_[1]),
q{condition},
$tracelevel)
if defined $::RD_TRACE;
return undef;
}
if (!defined($return) && defined($score))
{
Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
q{condition},
$tracelevel)
if defined $::RD_TRACE;
$return = $score_return;
}
splice @{$thisparser->{errors}}, $err_at;
$return = $item[$#item] unless defined $return;
if (defined $::RD_TRACE)
{
Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
$return . q{])}, "",
q{condition},
$tracelevel);
Parse::RecDescent::_trace(q{(consumed: [} .
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
Parse::RecDescent::_tracefirst($text),
, q{condition},
$tracelevel)
}
$_[1] = $text;
return $return;
}
}
package Cindy::CJSGrammar; sub new { my $self = bless( {
'localvars' => '',
'startcode' => '',
'namespace' => 'Parse::RecDescent::Cindy::CJSGrammar',
'rules' => {
'full_injection' => bless( {
'impcount' => 0,
'calls' => [
'injection',
'separator'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'injection',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 57
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'separator',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 57
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 57,
'code' => '{$item[1];}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'full_injection',
'vars' => '',
'changed' => 0,
'line' => 56
}, 'Parse::RecDescent::Rule' ),
'atname' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/\\\\w[\\\\w\\\\d.:-]*/',
'rdelim' => '/',
'pattern' => '\\w[\\w\\d.:-]*',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 14
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'atname',
'vars' => '',
'changed' => 0,
'line' => 14
}, 'Parse::RecDescent::Rule' ),
'injection_list' => bless( {
'impcount' => 0,
'calls' => [
'full_injection'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'full_injection',
'expected' => undef,
'min' => 1,
'argcode' => undef,
'max' => 100000000,
'matchrule' => 0,
'repspec' => 's',
'lookahead' => 0,
'line' => 66
}, 'Parse::RecDescent::Repetition' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 66,
'code' => '{[grep($_, @{$item[1]})];}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'injection_list',
'vars' => '',
'changed' => 0,
'line' => 65
}, 'Parse::RecDescent::Rule' ),
'sub_injection_list' => bless( {
'impcount' => 0,
'calls' => [
'sub_injection'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'sub_injection',
'expected' => undef,
'min' => 1,
'argcode' => undef,
'max' => 100000000,
'matchrule' => 0,
'repspec' => 's',
'lookahead' => 0,
'line' => 62
}, 'Parse::RecDescent::Repetition' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 62,
'code' => '{[grep($_, @{$item[1]})];}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'sub_injection_list',
'vars' => '',
'changed' => 0,
'line' => 62
}, 'Parse::RecDescent::Rule' ),
'attribute' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/attribute/',
'rdelim' => '/',
'pattern' => 'attribute',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 17
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'attribute',
'vars' => '',
'changed' => 0,
'line' => 17
}, 'Parse::RecDescent::Rule' ),
'injection' => bless( {
'impcount' => 0,
'calls' => [
'xpath',
'action',
'attribute',
'atname',
'repeat',
'condition',
'sublist',
'errout'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 1,
'items' => [
bless( {
'description' => '/\\\\s*;/',
'rdelim' => '/',
'pattern' => '\\s*;',
'hashname' => '__PATTERN1__',
'lookahead' => 1,
'ldelim' => '/',
'mod' => '',
'line' => 25
}, 'Parse::RecDescent::Token' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 25,
'code' => '{0;}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 26
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'action',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 26
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 26,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 26
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 27,
'code' => '{Cindy::Injection->new(@item[1,2,4], $selector);}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 2,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 28
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'attribute',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 28
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 28,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 28
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'atname',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 28
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 29,
'code' => '{Cindy::Injection->new(@item[1,2,4], $selector,
atname => $item{atname});}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 3,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 31
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'repeat',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 31
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 31,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 31
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'condition',
'expected' => undef,
'min' => 0,
'argcode' => undef,
'max' => 1,
'matchrule' => 0,
'repspec' => '?',
'lookahead' => 0,
'line' => 31
}, 'Parse::RecDescent::Repetition' ),
bless( {
'subrule' => 'sublist',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 31
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 32,
'code' => '{Cindy::Injection->new(@item[1,2,4], $selector,
sublist => $item{sublist},
xfilter => $item{\'condition(?)\'}->[0]);}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 4,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'msg' => '',
'hashname' => '__DIRECTIVE1__',
'commitonly' => '',
'lookahead' => 0,
'line' => 36
}, 'Parse::RecDescent::Error' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 5,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/[^;]+;[^\\\\n]*\\\\n?/',
'rdelim' => '/',
'pattern' => '[^;]+;[^\\n]*\\n?',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 38
}, 'Parse::RecDescent::Token' ),
bless( {
'subrule' => 'errout',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 38
}, 'Parse::RecDescent::Subrule' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'injection',
'vars' => '',
'changed' => 0,
'line' => 24
}, 'Parse::RecDescent::Rule' ),
'complete_injection_list' => bless( {
'impcount' => 0,
'calls' => [
'usage',
'injection_list',
'errout'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'usage',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 67
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'injection_list',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 67
}, 'Parse::RecDescent::Subrule' ),
bless( {
'description' => '/\\\\Z/',
'rdelim' => '/',
'pattern' => '\\Z',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 67
}, 'Parse::RecDescent::Token' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 67,
'code' => '{$item{injection_list};}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'msg' => '',
'hashname' => '__DIRECTIVE1__',
'commitonly' => '',
'lookahead' => 0,
'line' => 68
}, 'Parse::RecDescent::Error' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 2,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'subrule' => 'errout',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 68
}, 'Parse::RecDescent::Subrule' )
],
'line' => 68
}, 'Parse::RecDescent::Production' )
],
'name' => 'complete_injection_list',
'vars' => '',
'changed' => 0,
'line' => 67
}, 'Parse::RecDescent::Rule' ),
'usage' => bless( {
'impcount' => 0,
'calls' => [
'comment',
'selector',
'separator'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 1,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'comment',
'expected' => undef,
'min' => 0,
'argcode' => undef,
'max' => 100000000,
'matchrule' => 0,
'repspec' => 's?',
'lookahead' => 0,
'line' => 50
}, 'Parse::RecDescent::Repetition' ),
bless( {
'pattern' => 'use',
'hashname' => '__STRING1__',
'description' => '\'use\'',
'lookahead' => 0,
'line' => 50
}, 'Parse::RecDescent::InterpLit' ),
bless( {
'subrule' => 'selector',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 50
}, 'Parse::RecDescent::Subrule' ),
bless( {
'subrule' => 'separator',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 50
}, 'Parse::RecDescent::Subrule' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 51,
'code' => '{$selector = $item{selector};}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'comment',
'expected' => undef,
'min' => 0,
'argcode' => undef,
'max' => 100000000,
'matchrule' => 0,
'repspec' => 's?',
'lookahead' => 0,
'line' => 53
}, 'Parse::RecDescent::Repetition' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 54,
'code' => '{$selector = \'xpath\';}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'usage',
'vars' => '',
'changed' => 0,
'line' => 49
}, 'Parse::RecDescent::Rule' ),
'selector' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/css|xpath/',
'rdelim' => '/',
'pattern' => 'css|xpath',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 19
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'selector',
'vars' => '',
'changed' => 0,
'line' => 19
}, 'Parse::RecDescent::Rule' ),
'sublist' => bless( {
'impcount' => 0,
'calls' => [
'sub_injection_list'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 2,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'pattern' => '{',
'hashname' => '__STRING1__',
'description' => '\'\\{\'',
'lookahead' => 0,
'line' => 63
}, 'Parse::RecDescent::InterpLit' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 63,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'subrule' => 'sub_injection_list',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 63
}, 'Parse::RecDescent::Subrule' ),
bless( {
'pattern' => '}',
'hashname' => '__STRING2__',
'description' => '\'\\}\'',
'lookahead' => 0,
'line' => 63
}, 'Parse::RecDescent::InterpLit' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 63,
'code' => '{$item[3];}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'sublist',
'vars' => '',
'changed' => 0,
'line' => 63
}, 'Parse::RecDescent::Rule' ),
'xpath' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 1,
'items' => [
bless( {
'description' => '/\\\\"[^\\\\"]+\\\\"/',
'rdelim' => '/',
'pattern' => '\\"[^\\"]+\\"',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 11
}, 'Parse::RecDescent::Token' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 12,
'code' => '{$return = substr($item[1], 1, -1);}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/\\\\S+/',
'rdelim' => '/',
'pattern' => '\\S+',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 13
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'xpath',
'vars' => '',
'changed' => 0,
'line' => 11
}, 'Parse::RecDescent::Rule' ),
'errout' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 71,
'code' => '{Cindy::Sheet::collect_errors($thisparser);}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'errout',
'vars' => '',
'changed' => 0,
'line' => 70
}, 'Parse::RecDescent::Rule' ),
'comment' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 2,
'uncommit' => undef,
'error' => undef,
'patcount' => 2,
'actcount' => 0,
'items' => [
bless( {
'description' => '/;/',
'rdelim' => '/',
'pattern' => ';',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 42
}, 'Parse::RecDescent::Token' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 42,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'hashname' => '__DIRECTIVE2__',
'name' => '<skip: qr/[^\\n]*/>',
'lookahead' => 0,
'line' => 42,
'code' => 'my $oldskip = $skip; $skip= qr/[^\\n]*/; $oldskip'
}, 'Parse::RecDescent::Directive' ),
bless( {
'description' => '/\\\\n?/',
'rdelim' => '/',
'pattern' => '\\n?',
'hashname' => '__PATTERN2__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 42
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'comment',
'vars' => '',
'changed' => 0,
'line' => 41
}, 'Parse::RecDescent::Rule' ),
'separator' => bless( {
'impcount' => 0,
'calls' => [
'comment',
'errout'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'subrule' => 'comment',
'expected' => undef,
'min' => 1,
'argcode' => undef,
'max' => 100000000,
'matchrule' => 0,
'repspec' => 's',
'lookahead' => 0,
'line' => 43
}, 'Parse::RecDescent::Repetition' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 1,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'pattern' => '}',
'hashname' => '__STRING1__',
'description' => '\'\\}\'',
'lookahead' => 1,
'line' => 44
}, 'Parse::RecDescent::InterpLit' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 2,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/\\\\Z/',
'rdelim' => '/',
'pattern' => '\\Z',
'hashname' => '__PATTERN1__',
'lookahead' => 1,
'ldelim' => '/',
'mod' => '',
'line' => 45
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 3,
'strcount' => 0,
'dircount' => 1,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'msg' => 'Expected ";" but found "}.($text=~/(.*)\\n/,$1).qq{" instead.',
'hashname' => '__DIRECTIVE1__',
'commitonly' => '',
'lookahead' => 0,
'line' => 46
}, 'Parse::RecDescent::Error' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 4,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/[^;]+;[^\\\\n]*\\\\n?/',
'rdelim' => '/',
'pattern' => '[^;]+;[^\\n]*\\n?',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 47
}, 'Parse::RecDescent::Token' ),
bless( {
'subrule' => 'errout',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 47
}, 'Parse::RecDescent::Subrule' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'separator',
'vars' => '',
'changed' => 0,
'line' => 43
}, 'Parse::RecDescent::Rule' ),
'sub_injection' => bless( {
'impcount' => 0,
'calls' => [
'full_injection'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 1,
'dircount' => 2,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'pattern' => '}',
'hashname' => '__STRING1__',
'description' => '\'\\}\'',
'lookahead' => 1,
'line' => 60
}, 'Parse::RecDescent::InterpLit' ),
bless( {
'hashname' => '__DIRECTIVE1__',
'name' => '<commit>',
'lookahead' => 0,
'line' => 60,
'code' => '$commit = 1'
}, 'Parse::RecDescent::Directive' ),
bless( {
'hashname' => '__DIRECTIVE2__',
'name' => '<reject>',
'lookahead' => 0,
'line' => 60
}, 'Parse::RecDescent::UncondReject' )
],
'line' => undef
}, 'Parse::RecDescent::Production' ),
bless( {
'number' => 1,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 0,
'items' => [
bless( {
'subrule' => 'full_injection',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 61
}, 'Parse::RecDescent::Subrule' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'sub_injection',
'vars' => '',
'changed' => 0,
'line' => 59
}, 'Parse::RecDescent::Rule' ),
'action' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/content|replace|copy|omit-tag|condition|comment/',
'rdelim' => '/',
'pattern' => 'content|replace|copy|omit-tag|condition|comment',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 16
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'action',
'vars' => '',
'changed' => 0,
'line' => 16
}, 'Parse::RecDescent::Rule' ),
'repeat' => bless( {
'impcount' => 0,
'calls' => [],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 0,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 1,
'actcount' => 0,
'items' => [
bless( {
'description' => '/repeat/',
'rdelim' => '/',
'pattern' => 'repeat',
'hashname' => '__PATTERN1__',
'lookahead' => 0,
'ldelim' => '/',
'mod' => '',
'line' => 18
}, 'Parse::RecDescent::Token' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'repeat',
'vars' => '',
'changed' => 0,
'line' => 18
}, 'Parse::RecDescent::Rule' ),
'condition' => bless( {
'impcount' => 0,
'calls' => [
'xpath'
],
'opcount' => 0,
'prods' => [
bless( {
'number' => 0,
'strcount' => 1,
'dircount' => 0,
'uncommit' => undef,
'error' => undef,
'patcount' => 0,
'actcount' => 1,
'items' => [
bless( {
'subrule' => 'xpath',
'matchrule' => 0,
'implicit' => undef,
'argcode' => undef,
'lookahead' => 0,
'line' => 22
}, 'Parse::RecDescent::Subrule' ),
bless( {
'pattern' => '{',
'hashname' => '__STRING1__',
'description' => '\'\\{\'',
'lookahead' => 1,
'line' => 22
}, 'Parse::RecDescent::InterpLit' ),
bless( {
'hashname' => '__ACTION1__',
'lookahead' => 0,
'line' => 23,
'code' => '{$item[1];}'
}, 'Parse::RecDescent::Action' )
],
'line' => undef
}, 'Parse::RecDescent::Production' )
],
'name' => 'condition',
'vars' => '',
'changed' => 0,
'line' => 21
}, 'Parse::RecDescent::Rule' )
},
'_AUTOTREE' => undef,
'_check' => {
'thisoffset' => '',
'itempos' => '',
'prevoffset' => '',
'prevline' => '',
'prevcolumn' => '',
'thiscolumn' => ''
},
'_AUTOACTION' => undef
}, 'Parse::RecDescent' );
}