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{<>}, 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{<>}, 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{<> (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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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{<>}, 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{<>}, 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{<> (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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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 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{<>}, 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{<>}, 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: []}, 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{<>}, 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{<>}, 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{<> (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 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 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{<>}, 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{<>}, 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: []}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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 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 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{<>}, 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{<>}, 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: []}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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 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: []}, 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: []}, 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{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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: []}, 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: []}, 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{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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{<>}, 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{<> (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{<>}, 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{<>}, 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{<>}, 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: ['\{' 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{<>}, 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: []}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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_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{<>}, 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{<>}, 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{<> (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{<>}, 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{<>}, 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{<> (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{<>}, 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: [/;/ /\\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{<>}, 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: []}, 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{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying directive: []}, 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{<>}, 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{<>}, 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: [/;/ /\\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{<>}, 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{<>}, 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{<>}, 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{<>}, 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: []}, 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: []}, 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{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; 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: [/[^;]+;[^\\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{<>}, 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{<>}, 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{<>}, 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: ['\}' ]}, 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{<>}, 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: []}, 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{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Rejecting production<< (found )}, 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: ['\}' ]<<}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<>}, 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{<> (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{<>}, 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' => '', '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' => '', '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' => '', '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' => '', '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' => '', 'lookahead' => 0, 'line' => 42, 'code' => '$commit = 1' }, 'Parse::RecDescent::Directive' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', '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' => '', 'lookahead' => 0, 'line' => 60, 'code' => '$commit = 1' }, 'Parse::RecDescent::Directive' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', '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' ); }