File Coverage

blib/lib/Petal/CodePerl/Parser.pm
Criterion Covered Total %
statement 3123 3685 84.7
branch 852 1996 42.6
condition 429 956 44.8
subroutine 174 178 97.7
pod 0 1 0.0
total 4578 6816 67.1


line stmt bran cond sub pod time code
1             package Petal::CodePerl::Parser;
2 1     1   235384 use Parse::RecDescent;
  1         240567  
  1         10  
3              
4             { my $ERRORS;
5              
6              
7             package Parse::RecDescent::Petal::CodePerl::Parser;
8 1     1   70 use strict;
  1         1  
  1         37  
9 1     1   5 use vars qw($skip $AUTOLOAD );
  1         2  
  1         85  
10             $skip = '';
11              
12              
13             {
14             local $SIG{__WARN__} = sub {0};
15             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
16             *Parse::RecDescent::Petal::CodePerl::Parser::AUTOLOAD = sub
17             {
18 1     1   6 no strict 'refs';
  1         2  
  1         103  
19 0     0   0 $AUTOLOAD =~ s/^Parse::RecDescent::Petal::CodePerl::Parser/Parse::RecDescent/;
20 0         0 goto &{$AUTOLOAD};
  0         0  
21             }
22             }
23              
24             push @Parse::RecDescent::Petal::CodePerl::Parser::ISA, 'Parse::RecDescent';
25             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
26             sub Parse::RecDescent::Petal::CodePerl::Parser::empty_method
27             {
28 43     43   77 my $thisparser = $_[0];
29 1     1   7 use vars q{$tracelevel};
  1         3  
  1         375  
30 43   50     129 local $tracelevel = ($tracelevel||0)+1;
31 43         61 $ERRORS = 0;
32 43         120 my $thisrule = $thisparser->{"rules"}{"empty_method"};
33            
34 43 50       102 Parse::RecDescent::_trace(q{Trying rule: [empty_method]},
35             Parse::RecDescent::_tracefirst($_[1]),
36             q{empty_method},
37             $tracelevel)
38             if defined $::RD_TRACE;
39              
40            
41 43         52 my $err_at = @{$thisparser->{errors}};
  43         78  
42              
43 43         67 my $score;
44             my $score_return;
45 0         0 my $_tok;
46 43         74 my $return = undef;
47 43         58 my $_matched=0;
48 43         53 my $commit=0;
49 43         80 my @item = ();
50 43         77 my %item = ();
51 43   33     139 my $repeating = defined($_[2]) && $_[2];
52 43   33     147 my $_noactions = defined($_[3]) && $_[3];
53 43 50       109 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  43         47  
  43         89  
54 43 50       133 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
55 43         48 my $text;
56 43         69 my $lastsep="";
57 43         147 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
58 43         1586 $expectation->at($_[1]);
59            
60 43         355 my $thisline;
61 43         195 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
62              
63            
64              
65 43   33     425 while (!$_matched && !$commit)
66             {
67            
68 43 50       91 Parse::RecDescent::_trace(q{Trying production: [separator url_segment '()']},
69             Parse::RecDescent::_tracefirst($_[1]),
70             q{empty_method},
71             $tracelevel)
72             if defined $::RD_TRACE;
73 43         90 my $thisprod = $thisrule->{"prods"}[0];
74 43         88 $text = $_[1];
75 43         48 my $_savetext;
76 43         82 @item = (q{empty_method});
77 43         114 %item = (__RULE__ => q{empty_method});
78 43         65 my $repcount = 0;
79              
80              
81 43 50       122 Parse::RecDescent::_trace(q{Trying subrule: [separator]},
82             Parse::RecDescent::_tracefirst($text),
83             q{empty_method},
84             $tracelevel)
85             if defined $::RD_TRACE;
86 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         209  
  43         50  
87 43         150 $expectation->is(q{})->at($text);
88 43 100   43   474 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::separator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  43         131  
89             {
90            
91 29 50       61 Parse::RecDescent::_trace(q{<>},
92             Parse::RecDescent::_tracefirst($text),
93             q{empty_method},
94             $tracelevel)
95             if defined $::RD_TRACE;
96 29         79 $expectation->failed();
97 29         119 last;
98             }
99 14 50       70 Parse::RecDescent::_trace(q{>>Matched subrule: [separator]<< (return value: [}
100             . $_tok . q{]},
101            
102             Parse::RecDescent::_tracefirst($text),
103             q{empty_method},
104             $tracelevel)
105             if defined $::RD_TRACE;
106 14         44 $item{q{separator}} = $_tok;
107 14         27 push @item, $_tok;
108            
109             }
110              
111 14 50       39 Parse::RecDescent::_trace(q{Trying subrule: [url_segment]},
112             Parse::RecDescent::_tracefirst($text),
113             q{empty_method},
114             $tracelevel)
115             if defined $::RD_TRACE;
116 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         964  
  14         17  
117 14         49 $expectation->is(q{url_segment})->at($text);
118 14 50   14   166 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::url_segment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  14         27  
119             {
120            
121 0 0       0 Parse::RecDescent::_trace(q{<>},
122             Parse::RecDescent::_tracefirst($text),
123             q{empty_method},
124             $tracelevel)
125             if defined $::RD_TRACE;
126 0         0 $expectation->failed();
127 0         0 last;
128             }
129 14 50       65 Parse::RecDescent::_trace(q{>>Matched subrule: [url_segment]<< (return value: [}
130             . $_tok . q{]},
131            
132             Parse::RecDescent::_tracefirst($text),
133             q{empty_method},
134             $tracelevel)
135             if defined $::RD_TRACE;
136 14         33 $item{q{url_segment}} = $_tok;
137 14         25 push @item, $_tok;
138            
139             }
140              
141 14 50       29 Parse::RecDescent::_trace(q{Trying terminal: ['()']},
142             Parse::RecDescent::_tracefirst($text),
143             q{empty_method},
144             $tracelevel)
145             if defined $::RD_TRACE;
146 14         26 $lastsep = "";
147 14         49 $expectation->is(q{'()'})->at($text);
148            
149              
150 14 50 66     165 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(\)//)
  14 100       141  
151             {
152            
153 12         42 $expectation->failed();
154 12 50       129 Parse::RecDescent::_trace(qq{<>},
155             Parse::RecDescent::_tracefirst($text))
156             if defined $::RD_TRACE;
157 12         24 last;
158             }
159 2 50       9 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
160             . $& . q{])},
161             Parse::RecDescent::_tracefirst($text))
162             if defined $::RD_TRACE;
163 2         10 push @item, $item{__STRING1__}=$&;
164            
165              
166 2 50       8 Parse::RecDescent::_trace(q{Trying action},
167             Parse::RecDescent::_tracefirst($text),
168             q{empty_method},
169             $tracelevel)
170             if defined $::RD_TRACE;
171            
172              
173 2 50       7 $_tok = ($_noactions) ? 0 : do { ['method', $item{url_segment}] };
  2         9  
174 2 50       23 unless (defined $_tok)
175             {
176 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
177             if defined $::RD_TRACE;
178 0         0 last;
179             }
180 2 50       7 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
181             . $_tok . q{])},
182             Parse::RecDescent::_tracefirst($text))
183             if defined $::RD_TRACE;
184 2         4 push @item, $_tok;
185 2         6 $item{__ACTION1__}=$_tok;
186            
187              
188              
189 2 50       7 Parse::RecDescent::_trace(q{>>Matched production: [separator url_segment '()']<<},
190             Parse::RecDescent::_tracefirst($text),
191             q{empty_method},
192             $tracelevel)
193             if defined $::RD_TRACE;
194 2         4 $_matched = 1;
195 2         5 last;
196             }
197              
198              
199 43 50 66     543 unless ( $_matched || defined($return) || defined($score) )
      66        
200             {
201            
202              
203 41         68 $_[1] = $text; # NOT SURE THIS IS NEEDED
204 41 50       126 Parse::RecDescent::_trace(q{<>},
205             Parse::RecDescent::_tracefirst($_[1]),
206             q{empty_method},
207             $tracelevel)
208             if defined $::RD_TRACE;
209 41         564 return undef;
210             }
211 2 50 33     13 if (!defined($return) && defined($score))
212             {
213 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
214             q{empty_method},
215             $tracelevel)
216             if defined $::RD_TRACE;
217 0         0 $return = $score_return;
218             }
219 2         3 splice @{$thisparser->{errors}}, $err_at;
  2         6  
220 2 50       8 $return = $item[$#item] unless defined $return;
221 2 50       8 if (defined $::RD_TRACE)
222             {
223 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
224             $return . q{])}, "",
225             q{empty_method},
226             $tracelevel);
227 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
228             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
229             Parse::RecDescent::_tracefirst($text),
230             , q{empty_method},
231             $tracelevel)
232             }
233 2         4 $_[1] = $text;
234 2         21 return $return;
235             }
236              
237             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
238             sub Parse::RecDescent::Petal::CodePerl::Parser::mod_expr_revert
239             {
240 9     9   16 my $thisparser = $_[0];
241 1     1   8 use vars q{$tracelevel};
  1         3  
  1         570  
242 9   50     31 local $tracelevel = ($tracelevel||0)+1;
243 9         12 $ERRORS = 0;
244 9         34 my $thisrule = $thisparser->{"rules"}{"mod_expr_revert"};
245            
246 9 50       21 Parse::RecDescent::_trace(q{Trying rule: [mod_expr_revert]},
247             Parse::RecDescent::_tracefirst($_[1]),
248             q{mod_expr_revert},
249             $tracelevel)
250             if defined $::RD_TRACE;
251              
252            
253 9         9 my $err_at = @{$thisparser->{errors}};
  9         24  
254              
255 9         14 my $score;
256             my $score_return;
257 0         0 my $_tok;
258 9         14 my $return = undef;
259 9         15 my $_matched=0;
260 9         29 my $commit=0;
261 9         14 my @item = ();
262 9         19 my %item = ();
263 9   33     36 my $repeating = defined($_[2]) && $_[2];
264 9   33     32 my $_noactions = defined($_[3]) && $_[3];
265 9 50       21 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  9         14  
  9         29  
266 9 50       35 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
267 9         16 my $text;
268 9         16 my $lastsep="";
269 9         33 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
270 9         310 $expectation->at($_[1]);
271            
272 9         33 my $thisline;
273 9         43 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
274              
275            
276              
277 9   33     109 while (!$_matched && !$commit)
278             {
279            
280 9 50       21 Parse::RecDescent::_trace(q{Trying production: [mod_name /\\s*/ ':' /.*/]},
281             Parse::RecDescent::_tracefirst($_[1]),
282             q{mod_expr_revert},
283             $tracelevel)
284             if defined $::RD_TRACE;
285 9         20 my $thisprod = $thisrule->{"prods"}[0];
286 9         14 $text = $_[1];
287 9         20 my $_savetext;
288 9         238 @item = (q{mod_expr_revert});
289 9         26 %item = (__RULE__ => q{mod_expr_revert});
290 9         14 my $repcount = 0;
291              
292              
293 9 50       21 Parse::RecDescent::_trace(q{Trying subrule: [mod_name]},
294             Parse::RecDescent::_tracefirst($text),
295             q{mod_expr_revert},
296             $tracelevel)
297             if defined $::RD_TRACE;
298 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         1407  
  9         9  
299 9         34 $expectation->is(q{})->at($text);
300 9 50   9   103 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mod_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  9         20  
301             {
302            
303 0 0       0 Parse::RecDescent::_trace(q{<>},
304             Parse::RecDescent::_tracefirst($text),
305             q{mod_expr_revert},
306             $tracelevel)
307             if defined $::RD_TRACE;
308 0         0 $expectation->failed();
309 0         0 last;
310             }
311 9 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [mod_name]<< (return value: [}
312             . $_tok . q{]},
313            
314             Parse::RecDescent::_tracefirst($text),
315             q{mod_expr_revert},
316             $tracelevel)
317             if defined $::RD_TRACE;
318 9         24 $item{q{mod_name}} = $_tok;
319 9         19 push @item, $_tok;
320            
321             }
322              
323 9 50       19 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
324             q{mod_expr_revert},
325             $tracelevel)
326             if defined $::RD_TRACE;
327 9         12 $lastsep = "";
328 9         28 $expectation->is(q{/\\s*/})->at($text);
329            
330              
331 9 50 33     118 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\s*)//)
  9 50       100  
332             {
333            
334 0         0 $expectation->failed();
335 0 0       0 Parse::RecDescent::_trace(q{<>},
336             Parse::RecDescent::_tracefirst($text))
337             if defined $::RD_TRACE;
338              
339 0         0 last;
340             }
341 9 50       30 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
342             . $& . q{])},
343             Parse::RecDescent::_tracefirst($text))
344             if defined $::RD_TRACE;
345 9         30 push @item, $item{__PATTERN1__}=$&;
346            
347              
348 9 50       50 Parse::RecDescent::_trace(q{Trying terminal: [':']},
349             Parse::RecDescent::_tracefirst($text),
350             q{mod_expr_revert},
351             $tracelevel)
352             if defined $::RD_TRACE;
353 9         14 $lastsep = "";
354 9         40 $expectation->is(q{':'})->at($text);
355            
356              
357 9 50 66     109 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  9 100       94  
358             {
359            
360 8         29 $expectation->failed();
361 8 50       78 Parse::RecDescent::_trace(qq{<>},
362             Parse::RecDescent::_tracefirst($text))
363             if defined $::RD_TRACE;
364 8         19 last;
365             }
366 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
367             . $& . q{])},
368             Parse::RecDescent::_tracefirst($text))
369             if defined $::RD_TRACE;
370 1         6 push @item, $item{__STRING1__}=$&;
371            
372              
373 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
374             q{mod_expr_revert},
375             $tracelevel)
376             if defined $::RD_TRACE;
377 1         4 $lastsep = "";
378 1         5 $expectation->is(q{/.*/})->at($text);
379            
380              
381 1 50 33     56 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  1 50       15  
382             {
383            
384 0         0 $expectation->failed();
385 0 0       0 Parse::RecDescent::_trace(q{<>},
386             Parse::RecDescent::_tracefirst($text))
387             if defined $::RD_TRACE;
388              
389 0         0 last;
390             }
391 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
392             . $& . q{])},
393             Parse::RecDescent::_tracefirst($text))
394             if defined $::RD_TRACE;
395 1         4 push @item, $item{__PATTERN2__}=$&;
396            
397              
398 1 50       4 Parse::RecDescent::_trace(q{Trying action},
399             Parse::RecDescent::_tracefirst($text),
400             q{mod_expr_revert},
401             $tracelevel)
402             if defined $::RD_TRACE;
403            
404              
405 1 50       29 $_tok = ($_noactions) ? 0 : do {
406              
407             # make sure Petal doesn't escape it because we will
408 1         7 my $key = "structure ".join("", @item[1, 2, 3, 4]);
409              
410 1         5 Code::Perl::Expr::callm(
411             $Petal::CodePerl::Compiler::root,
412             "get",
413             $key
414             );
415             };
416 1 50       51 unless (defined $_tok)
417             {
418 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
419             if defined $::RD_TRACE;
420 0         0 last;
421             }
422 1 50       3 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
423             . $_tok . q{])},
424             Parse::RecDescent::_tracefirst($text))
425             if defined $::RD_TRACE;
426 1         2 push @item, $_tok;
427 1         10 $item{__ACTION1__}=$_tok;
428            
429              
430              
431 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [mod_name /\\s*/ ':' /.*/]<<},
432             Parse::RecDescent::_tracefirst($text),
433             q{mod_expr_revert},
434             $tracelevel)
435             if defined $::RD_TRACE;
436 1         2 $_matched = 1;
437 1         3 last;
438             }
439              
440              
441 9 50 66     71 unless ( $_matched || defined($return) || defined($score) )
      66        
442             {
443            
444              
445 8         20 $_[1] = $text; # NOT SURE THIS IS NEEDED
446 8 50       22 Parse::RecDescent::_trace(q{<>},
447             Parse::RecDescent::_tracefirst($_[1]),
448             q{mod_expr_revert},
449             $tracelevel)
450             if defined $::RD_TRACE;
451 8         79 return undef;
452             }
453 1 50 33     7 if (!defined($return) && defined($score))
454             {
455 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
456             q{mod_expr_revert},
457             $tracelevel)
458             if defined $::RD_TRACE;
459 0         0 $return = $score_return;
460             }
461 1         2 splice @{$thisparser->{errors}}, $err_at;
  1         4  
462 1 50       4 $return = $item[$#item] unless defined $return;
463 1 50       5 if (defined $::RD_TRACE)
464             {
465 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
466             $return . q{])}, "",
467             q{mod_expr_revert},
468             $tracelevel);
469 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
470             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
471             Parse::RecDescent::_tracefirst($text),
472             , q{mod_expr_revert},
473             $tracelevel)
474             }
475 1         2 $_[1] = $text;
476 1         10 return $return;
477             }
478              
479             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
480             sub Parse::RecDescent::Petal::CodePerl::Parser::string
481             {
482 7     7   303 my $thisparser = $_[0];
483 1     1   7 use vars q{$tracelevel};
  1         2  
  1         1128  
484 7   100     43 local $tracelevel = ($tracelevel||0)+1;
485 7         14 $ERRORS = 0;
486 7         22 my $thisrule = $thisparser->{"rules"}{"string"};
487            
488 7 50       24 Parse::RecDescent::_trace(q{Trying rule: [string]},
489             Parse::RecDescent::_tracefirst($_[1]),
490             q{string},
491             $tracelevel)
492             if defined $::RD_TRACE;
493              
494            
495 7         11 my $err_at = @{$thisparser->{errors}};
  7         18  
496              
497 7         16 my $score;
498             my $score_return;
499 0         0 my $_tok;
500 7         11 my $return = undef;
501 7         13 my $_matched=0;
502 7         10 my $commit=0;
503 7         14 my @item = ();
504 7         14 my %item = ();
505 7   66     25 my $repeating = defined($_[2]) && $_[2];
506 7   66     29 my $_noactions = defined($_[3]) && $_[3];
507 7 50       20 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  7         13  
  7         20  
508 7 50       35 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
509 7         12 my $text;
510 7         14 my $lastsep="";
511 7         31 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
512 7         631918 $expectation->at($_[1]);
513            
514 7         40 my $thisline;
515 7         124 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
516              
517            
518              
519 7   33     104 while (!$_matched && !$commit)
520             {
521            
522 7 50       25 Parse::RecDescent::_trace(q{Trying production: [string_piece]},
523             Parse::RecDescent::_tracefirst($_[1]),
524             q{string},
525             $tracelevel)
526             if defined $::RD_TRACE;
527 7         17 my $thisprod = $thisrule->{"prods"}[0];
528 7         16 $text = $_[1];
529 7         14 my $_savetext;
530 7         19 @item = (q{string});
531 7         25 %item = (__RULE__ => q{string});
532 7         97 my $repcount = 0;
533              
534              
535 7 50       19 Parse::RecDescent::_trace(q{Trying repeated subrule: [string_piece]},
536             Parse::RecDescent::_tracefirst($text),
537             q{string},
538             $tracelevel)
539             if defined $::RD_TRACE;
540 7         33 $expectation->is(q{})->at($text);
541            
542 7 50       98 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Petal::CodePerl::Parser::string_piece, 0, 100000000, $_noactions,$expectation,undef)))
543             {
544 0 0       0 Parse::RecDescent::_trace(q{<>},
545             Parse::RecDescent::_tracefirst($text),
546             q{string},
547             $tracelevel)
548             if defined $::RD_TRACE;
549 0         0 last;
550             }
551 7 50       158 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [string_piece]<< (}
552             . @$_tok . q{ times)},
553            
554             Parse::RecDescent::_tracefirst($text),
555             q{string},
556             $tracelevel)
557             if defined $::RD_TRACE;
558 7         22 $item{q{string_piece(s?)}} = $_tok;
559 7         13 push @item, $_tok;
560            
561              
562              
563 7 50       17 Parse::RecDescent::_trace(q{Trying action},
564             Parse::RecDescent::_tracefirst($text),
565             q{string},
566             $tracelevel)
567             if defined $::RD_TRACE;
568            
569              
570 7 50       21 $_tok = ($_noactions) ? 0 : do {
571 7         7 Code::Perl::Expr::append(@{$item[1]})
  7         42  
572             };
573 7 50       1099 unless (defined $_tok)
574             {
575 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
576             if defined $::RD_TRACE;
577 0         0 last;
578             }
579 7 50       17 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
580             . $_tok . q{])},
581             Parse::RecDescent::_tracefirst($text))
582             if defined $::RD_TRACE;
583 7         15 push @item, $_tok;
584 7         15 $item{__ACTION1__}=$_tok;
585            
586              
587              
588 7 50       32 Parse::RecDescent::_trace(q{>>Matched production: [string_piece]<<},
589             Parse::RecDescent::_tracefirst($text),
590             q{string},
591             $tracelevel)
592             if defined $::RD_TRACE;
593 7         11 $_matched = 1;
594 7         18 last;
595             }
596              
597              
598 7 0 33     21 unless ( $_matched || defined($return) || defined($score) )
      33        
599             {
600            
601              
602 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
603 0 0       0 Parse::RecDescent::_trace(q{<>},
604             Parse::RecDescent::_tracefirst($_[1]),
605             q{string},
606             $tracelevel)
607             if defined $::RD_TRACE;
608 0         0 return undef;
609             }
610 7 50 33     49 if (!defined($return) && defined($score))
611             {
612 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
613             q{string},
614             $tracelevel)
615             if defined $::RD_TRACE;
616 0         0 $return = $score_return;
617             }
618 7         11 splice @{$thisparser->{errors}}, $err_at;
  7         32  
619 7 50       24 $return = $item[$#item] unless defined $return;
620 7 50       23 if (defined $::RD_TRACE)
621             {
622 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
623             $return . q{])}, "",
624             q{string},
625             $tracelevel);
626 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
627             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
628             Parse::RecDescent::_tracefirst($text),
629             , q{string},
630             $tracelevel)
631             }
632 7         19 $_[1] = $text;
633 7         82 return $return;
634             }
635              
636             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
637             sub Parse::RecDescent::Petal::CodePerl::Parser::path_expr
638             {
639 11     11   19 my $thisparser = $_[0];
640 1     1   7 use vars q{$tracelevel};
  1         2  
  1         825  
641 11   50     34 local $tracelevel = ($tracelevel||0)+1;
642 11         19 $ERRORS = 0;
643 11         29 my $thisrule = $thisparser->{"rules"}{"path_expr"};
644            
645 11 50       29 Parse::RecDescent::_trace(q{Trying rule: [path_expr]},
646             Parse::RecDescent::_tracefirst($_[1]),
647             q{path_expr},
648             $tracelevel)
649             if defined $::RD_TRACE;
650              
651            
652 11         14 my $err_at = @{$thisparser->{errors}};
  11         25  
653              
654 11         19 my $score;
655             my $score_return;
656 0         0 my $_tok;
657 11         13 my $return = undef;
658 11         12 my $_matched=0;
659 11         14 my $commit=0;
660 11         21 my @item = ();
661 11         20 my %item = ();
662 11   33     40 my $repeating = defined($_[2]) && $_[2];
663 11   33     34 my $_noactions = defined($_[3]) && $_[3];
664 11 50       28 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         13  
  11         26  
665 11 50       36 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
666 11         13 my $text;
667 11         16 my $lastsep="";
668 11         41 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
669 11         340 $expectation->at($_[1]);
670            
671 11         42 my $thisline;
672 11         45 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
673              
674            
675              
676 11   33     109 while (!$_matched && !$commit)
677             {
678            
679 11 50       32 Parse::RecDescent::_trace(q{Trying production: ['path:' single_path]},
680             Parse::RecDescent::_tracefirst($_[1]),
681             q{path_expr},
682             $tracelevel)
683             if defined $::RD_TRACE;
684 11         27 my $thisprod = $thisrule->{"prods"}[0];
685 11         14 $text = $_[1];
686 11         15 my $_savetext;
687 11         26 @item = (q{path_expr});
688 11         27 %item = (__RULE__ => q{path_expr});
689 11         20 my $repcount = 0;
690              
691              
692 11 50       28 Parse::RecDescent::_trace(q{Trying terminal: ['path:']},
693             Parse::RecDescent::_tracefirst($text),
694             q{path_expr},
695             $tracelevel)
696             if defined $::RD_TRACE;
697 11         16 $lastsep = "";
698 11         38 $expectation->is(q{})->at($text);
699            
700              
701 11 50 33     152 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "path:"; 1 } and
  11 50 33     77  
  11   33     20  
  11         104  
702             substr($text,0,length($_tok)) eq $_tok and
703 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
704             )
705             {
706            
707 11         34 $expectation->failed();
708 11 50       65 Parse::RecDescent::_trace(q{<>},
709             Parse::RecDescent::_tracefirst($text))
710             if defined $::RD_TRACE;
711 11         29 last;
712             }
713 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
714             . $_tok . q{])},
715             Parse::RecDescent::_tracefirst($text))
716             if defined $::RD_TRACE;
717 0         0 push @item, $item{__STRING1__}=$_tok;
718            
719              
720            
721              
722 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
723             Parse::RecDescent::_tracefirst($text),
724             q{path_expr},
725             $tracelevel)
726             if defined $::RD_TRACE;
727 0         0 $_tok = do { $commit = 1 };
  0         0  
728 0 0       0 if (defined($_tok))
729             {
730 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
731             . $_tok . q{])},
732             Parse::RecDescent::_tracefirst($text))
733             if defined $::RD_TRACE;
734             }
735             else
736             {
737 0 0       0 Parse::RecDescent::_trace(q{<>},
738             Parse::RecDescent::_tracefirst($text))
739             if defined $::RD_TRACE;
740             }
741            
742 0 0       0 last unless defined $_tok;
743 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
744            
745              
746 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [single_path]},
747             Parse::RecDescent::_tracefirst($text),
748             q{path_expr},
749             $tracelevel)
750             if defined $::RD_TRACE;
751 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         696  
  0         0  
752 0         0 $expectation->is(q{single_path})->at($text);
753 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_path($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
754             {
755            
756 0 0       0 Parse::RecDescent::_trace(q{<>},
757             Parse::RecDescent::_tracefirst($text),
758             q{path_expr},
759             $tracelevel)
760             if defined $::RD_TRACE;
761 0         0 $expectation->failed();
762 0         0 last;
763             }
764 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [single_path]<< (return value: [}
765             . $_tok . q{]},
766            
767             Parse::RecDescent::_tracefirst($text),
768             q{path_expr},
769             $tracelevel)
770             if defined $::RD_TRACE;
771 0         0 $item{q{single_path}} = $_tok;
772 0         0 push @item, $_tok;
773            
774             }
775              
776 0 0       0 Parse::RecDescent::_trace(q{Trying action},
777             Parse::RecDescent::_tracefirst($text),
778             q{path_expr},
779             $tracelevel)
780             if defined $::RD_TRACE;
781            
782              
783 0 0       0 $_tok = ($_noactions) ? 0 : do { $item{path} };
  0         0  
784 0 0       0 unless (defined $_tok)
785             {
786 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
787             if defined $::RD_TRACE;
788 0         0 last;
789             }
790 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
791             . $_tok . q{])},
792             Parse::RecDescent::_tracefirst($text))
793             if defined $::RD_TRACE;
794 0         0 push @item, $_tok;
795 0         0 $item{__ACTION1__}=$_tok;
796            
797              
798              
799 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['path:' single_path]<<},
800             Parse::RecDescent::_tracefirst($text),
801             q{path_expr},
802             $tracelevel)
803             if defined $::RD_TRACE;
804 0         0 $_matched = 1;
805 0         0 last;
806             }
807              
808              
809 11 50 33     88 unless ( $_matched || defined($return) || defined($score) )
      33        
810             {
811            
812              
813 11         17 $_[1] = $text; # NOT SURE THIS IS NEEDED
814 11 50       25 Parse::RecDescent::_trace(q{<>},
815             Parse::RecDescent::_tracefirst($_[1]),
816             q{path_expr},
817             $tracelevel)
818             if defined $::RD_TRACE;
819 11         89 return undef;
820             }
821 0 0 0     0 if (!defined($return) && defined($score))
822             {
823 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
824             q{path_expr},
825             $tracelevel)
826             if defined $::RD_TRACE;
827 0         0 $return = $score_return;
828             }
829 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
830 0 0       0 $return = $item[$#item] unless defined $return;
831 0 0       0 if (defined $::RD_TRACE)
832             {
833 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
834             $return . q{])}, "",
835             q{path_expr},
836             $tracelevel);
837 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
838             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
839             Parse::RecDescent::_tracefirst($text),
840             , q{path_expr},
841             $tracelevel)
842             }
843 0         0 $_[1] = $text;
844 0         0 return $return;
845             }
846              
847             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
848             sub Parse::RecDescent::Petal::CodePerl::Parser::_alternation_1_of_production_1_of_rule_plain_string
849             {
850 42     42   502 my $thisparser = $_[0];
851 1     1   8 use vars q{$tracelevel};
  1         3  
  1         417  
852 42   50     114 local $tracelevel = ($tracelevel||0)+1;
853 42         62 $ERRORS = 0;
854 42         79 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_plain_string"};
855            
856 42 50       79 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_plain_string]},
857             Parse::RecDescent::_tracefirst($_[1]),
858             q{_alternation_1_of_production_1_of_rule_plain_string},
859             $tracelevel)
860             if defined $::RD_TRACE;
861              
862            
863 42         37 my $err_at = @{$thisparser->{errors}};
  42         63  
864              
865 42         57 my $score;
866             my $score_return;
867 0         0 my $_tok;
868 42         53 my $return = undef;
869 42         51 my $_matched=0;
870 42         47 my $commit=0;
871 42         73 my @item = ();
872 42         57 my %item = ();
873 42   33     119 my $repeating = defined($_[2]) && $_[2];
874 42   33     111 my $_noactions = defined($_[3]) && $_[3];
875 42 50       127 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
876 42 50       91 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
877 42         50 my $text;
878 42         49 my $lastsep="";
879 42         137 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
880 42         1904 $expectation->at($_[1]);
881            
882 42         148 my $thisline;
883 42         151 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
884              
885            
886              
887 42   33     350 while (!$_matched && !$commit)
888             {
889            
890 42 50       89 Parse::RecDescent::_trace(q{Trying production: [dollar]},
891             Parse::RecDescent::_tracefirst($_[1]),
892             q{_alternation_1_of_production_1_of_rule_plain_string},
893             $tracelevel)
894             if defined $::RD_TRACE;
895 42         74 my $thisprod = $thisrule->{"prods"}[0];
896 42         51 $text = $_[1];
897 42         38 my $_savetext;
898 42         76 @item = (q{_alternation_1_of_production_1_of_rule_plain_string});
899 42         68 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_plain_string});
900 42         53 my $repcount = 0;
901              
902              
903 42 50       71 Parse::RecDescent::_trace(q{Trying subrule: [dollar]},
904             Parse::RecDescent::_tracefirst($text),
905             q{_alternation_1_of_production_1_of_rule_plain_string},
906             $tracelevel)
907             if defined $::RD_TRACE;
908 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         350  
  42         92  
909 42         116 $expectation->is(q{})->at($text);
910 42 100   42   430 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::dollar($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  42         78  
911             {
912            
913 41 50       78 Parse::RecDescent::_trace(q{<>},
914             Parse::RecDescent::_tracefirst($text),
915             q{_alternation_1_of_production_1_of_rule_plain_string},
916             $tracelevel)
917             if defined $::RD_TRACE;
918 41         96 $expectation->failed();
919 41         163 last;
920             }
921 1 50       4 Parse::RecDescent::_trace(q{>>Matched subrule: [dollar]<< (return value: [}
922             . $_tok . q{]},
923            
924             Parse::RecDescent::_tracefirst($text),
925             q{_alternation_1_of_production_1_of_rule_plain_string},
926             $tracelevel)
927             if defined $::RD_TRACE;
928 1         3 $item{q{dollar}} = $_tok;
929 1         2 push @item, $_tok;
930            
931             }
932              
933              
934 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: [dollar]<<},
935             Parse::RecDescent::_tracefirst($text),
936             q{_alternation_1_of_production_1_of_rule_plain_string},
937             $tracelevel)
938             if defined $::RD_TRACE;
939 1         2 $_matched = 1;
940 1         3 last;
941             }
942              
943              
944 42   66     265 while (!$_matched && !$commit)
945             {
946            
947 41 50       75 Parse::RecDescent::_trace(q{Trying production: [non_dollar]},
948             Parse::RecDescent::_tracefirst($_[1]),
949             q{_alternation_1_of_production_1_of_rule_plain_string},
950             $tracelevel)
951             if defined $::RD_TRACE;
952 41         77 my $thisprod = $thisrule->{"prods"}[1];
953 41         55 $text = $_[1];
954 41         42 my $_savetext;
955 41         89 @item = (q{_alternation_1_of_production_1_of_rule_plain_string});
956 41         82 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_plain_string});
957 41         50 my $repcount = 0;
958              
959              
960 41 50       112 Parse::RecDescent::_trace(q{Trying subrule: [non_dollar]},
961             Parse::RecDescent::_tracefirst($text),
962             q{_alternation_1_of_production_1_of_rule_plain_string},
963             $tracelevel)
964             if defined $::RD_TRACE;
965 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         461  
  41         48  
966 41         108 $expectation->is(q{})->at($text);
967 41 100   41   397 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::non_dollar($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  41         88  
968             {
969            
970 27 50       54 Parse::RecDescent::_trace(q{<>},
971             Parse::RecDescent::_tracefirst($text),
972             q{_alternation_1_of_production_1_of_rule_plain_string},
973             $tracelevel)
974             if defined $::RD_TRACE;
975 27         75 $expectation->failed();
976 27         256 last;
977             }
978 14 50       57 Parse::RecDescent::_trace(q{>>Matched subrule: [non_dollar]<< (return value: [}
979             . $_tok . q{]},
980            
981             Parse::RecDescent::_tracefirst($text),
982             q{_alternation_1_of_production_1_of_rule_plain_string},
983             $tracelevel)
984             if defined $::RD_TRACE;
985 14         29 $item{q{non_dollar}} = $_tok;
986 14         20 push @item, $_tok;
987            
988             }
989              
990              
991 14 50       30 Parse::RecDescent::_trace(q{>>Matched production: [non_dollar]<<},
992             Parse::RecDescent::_tracefirst($text),
993             q{_alternation_1_of_production_1_of_rule_plain_string},
994             $tracelevel)
995             if defined $::RD_TRACE;
996 14         19 $_matched = 1;
997 14         18 last;
998             }
999              
1000              
1001 42 50 66     266 unless ( $_matched || defined($return) || defined($score) )
      66        
1002             {
1003            
1004              
1005 27         38 $_[1] = $text; # NOT SURE THIS IS NEEDED
1006 27 50       52 Parse::RecDescent::_trace(q{<>},
1007             Parse::RecDescent::_tracefirst($_[1]),
1008             q{_alternation_1_of_production_1_of_rule_plain_string},
1009             $tracelevel)
1010             if defined $::RD_TRACE;
1011 27         159 return undef;
1012             }
1013 15 50 33     65 if (!defined($return) && defined($score))
1014             {
1015 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1016             q{_alternation_1_of_production_1_of_rule_plain_string},
1017             $tracelevel)
1018             if defined $::RD_TRACE;
1019 0         0 $return = $score_return;
1020             }
1021 15         17 splice @{$thisparser->{errors}}, $err_at;
  15         31  
1022 15 50       39 $return = $item[$#item] unless defined $return;
1023 15 50       52 if (defined $::RD_TRACE)
1024             {
1025 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1026             $return . q{])}, "",
1027             q{_alternation_1_of_production_1_of_rule_plain_string},
1028             $tracelevel);
1029 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1030             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1031             Parse::RecDescent::_tracefirst($text),
1032             , q{_alternation_1_of_production_1_of_rule_plain_string},
1033             $tracelevel)
1034             }
1035 15         101 $_[1] = $text;
1036 15         123 return $return;
1037             }
1038              
1039             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1040             sub Parse::RecDescent::Petal::CodePerl::Parser::single_expr
1041             {
1042 10     10   23 my $thisparser = $_[0];
1043 1     1   6 use vars q{$tracelevel};
  1         2  
  1         387  
1044 10   50     48 local $tracelevel = ($tracelevel||0)+1;
1045 10         13 $ERRORS = 0;
1046 10         24 my $thisrule = $thisparser->{"rules"}{"single_expr"};
1047            
1048 10 50       26 Parse::RecDescent::_trace(q{Trying rule: [single_expr]},
1049             Parse::RecDescent::_tracefirst($_[1]),
1050             q{single_expr},
1051             $tracelevel)
1052             if defined $::RD_TRACE;
1053              
1054            
1055 10         12 my $err_at = @{$thisparser->{errors}};
  10         24  
1056              
1057 10         19 my $score;
1058             my $score_return;
1059 0         0 my $_tok;
1060 10         17 my $return = undef;
1061 10         12 my $_matched=0;
1062 10         16 my $commit=0;
1063 10         18 my @item = ();
1064 10         23 my %item = ();
1065 10   33     44 my $repeating = defined($_[2]) && $_[2];
1066 10   33     35 my $_noactions = defined($_[3]) && $_[3];
1067 10 50       38 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  10         19  
  10         20  
1068 10 50       34 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1069 10         18 my $text;
1070 10         16 my $lastsep="";
1071 10         38 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1072 10         903 $expectation->at($_[1]);
1073            
1074 10         44 my $thisline;
1075 10         49 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1076              
1077            
1078              
1079 10   33     126 while (!$_matched && !$commit)
1080             {
1081            
1082 10 50       24 Parse::RecDescent::_trace(q{Trying production: [qual_expr]},
1083             Parse::RecDescent::_tracefirst($_[1]),
1084             q{single_expr},
1085             $tracelevel)
1086             if defined $::RD_TRACE;
1087 10         21 my $thisprod = $thisrule->{"prods"}[0];
1088 10         16 $text = $_[1];
1089 10         22 my $_savetext;
1090 10         23 @item = (q{single_expr});
1091 10         27 %item = (__RULE__ => q{single_expr});
1092 10         16 my $repcount = 0;
1093              
1094              
1095 10 50       35 Parse::RecDescent::_trace(q{Trying subrule: [qual_expr]},
1096             Parse::RecDescent::_tracefirst($text),
1097             q{single_expr},
1098             $tracelevel)
1099             if defined $::RD_TRACE;
1100 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         1059  
  10         11  
1101 10         38 $expectation->is(q{})->at($text);
1102 10 100   10   154 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::qual_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  10         26  
1103             {
1104            
1105 8 50       21 Parse::RecDescent::_trace(q{<>},
1106             Parse::RecDescent::_tracefirst($text),
1107             q{single_expr},
1108             $tracelevel)
1109             if defined $::RD_TRACE;
1110 8         19 $expectation->failed();
1111 8         37 last;
1112             }
1113 2 50       17 Parse::RecDescent::_trace(q{>>Matched subrule: [qual_expr]<< (return value: [}
1114             . $_tok . q{]},
1115            
1116             Parse::RecDescent::_tracefirst($text),
1117             q{single_expr},
1118             $tracelevel)
1119             if defined $::RD_TRACE;
1120 2         10 $item{q{qual_expr}} = $_tok;
1121 2         5 push @item, $_tok;
1122            
1123             }
1124              
1125              
1126 2 50       9 Parse::RecDescent::_trace(q{>>Matched production: [qual_expr]<<},
1127             Parse::RecDescent::_tracefirst($text),
1128             q{single_expr},
1129             $tracelevel)
1130             if defined $::RD_TRACE;
1131 2         6 $_matched = 1;
1132 2         6 last;
1133             }
1134              
1135              
1136 10   66     55 while (!$_matched && !$commit)
1137             {
1138            
1139 8 50       19 Parse::RecDescent::_trace(q{Trying production: [single_path]},
1140             Parse::RecDescent::_tracefirst($_[1]),
1141             q{single_expr},
1142             $tracelevel)
1143             if defined $::RD_TRACE;
1144 8         20 my $thisprod = $thisrule->{"prods"}[1];
1145 8         20 $text = $_[1];
1146 8         14 my $_savetext;
1147 8         27 @item = (q{single_expr});
1148 8         21 %item = (__RULE__ => q{single_expr});
1149 8         15 my $repcount = 0;
1150              
1151              
1152 8 50       16 Parse::RecDescent::_trace(q{Trying subrule: [single_path]},
1153             Parse::RecDescent::_tracefirst($text),
1154             q{single_expr},
1155             $tracelevel)
1156             if defined $::RD_TRACE;
1157 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         484  
  8         9  
1158 8         29 $expectation->is(q{})->at($text);
1159 8 50   8   131 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_path($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         16  
1160             {
1161            
1162 0 0       0 Parse::RecDescent::_trace(q{<>},
1163             Parse::RecDescent::_tracefirst($text),
1164             q{single_expr},
1165             $tracelevel)
1166             if defined $::RD_TRACE;
1167 0         0 $expectation->failed();
1168 0         0 last;
1169             }
1170 8 50       40 Parse::RecDescent::_trace(q{>>Matched subrule: [single_path]<< (return value: [}
1171             . $_tok . q{]},
1172            
1173             Parse::RecDescent::_tracefirst($text),
1174             q{single_expr},
1175             $tracelevel)
1176             if defined $::RD_TRACE;
1177 8         20 $item{q{single_path}} = $_tok;
1178 8         17 push @item, $_tok;
1179            
1180             }
1181              
1182              
1183 8 50       23 Parse::RecDescent::_trace(q{>>Matched production: [single_path]<<},
1184             Parse::RecDescent::_tracefirst($text),
1185             q{single_expr},
1186             $tracelevel)
1187             if defined $::RD_TRACE;
1188 8         11 $_matched = 1;
1189 8         17 last;
1190             }
1191              
1192              
1193 10 0 33     43 unless ( $_matched || defined($return) || defined($score) )
      33        
1194             {
1195            
1196              
1197 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1198 0 0       0 Parse::RecDescent::_trace(q{<>},
1199             Parse::RecDescent::_tracefirst($_[1]),
1200             q{single_expr},
1201             $tracelevel)
1202             if defined $::RD_TRACE;
1203 0         0 return undef;
1204             }
1205 10 50 33     51 if (!defined($return) && defined($score))
1206             {
1207 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1208             q{single_expr},
1209             $tracelevel)
1210             if defined $::RD_TRACE;
1211 0         0 $return = $score_return;
1212             }
1213 10         11 splice @{$thisparser->{errors}}, $err_at;
  10         23  
1214 10 50       24 $return = $item[$#item] unless defined $return;
1215 10 50       27 if (defined $::RD_TRACE)
1216             {
1217 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1218             $return . q{])}, "",
1219             q{single_expr},
1220             $tracelevel);
1221 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1222             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1223             Parse::RecDescent::_tracefirst($text),
1224             , q{single_expr},
1225             $tracelevel)
1226             }
1227 10         23 $_[1] = $text;
1228 10         106 return $return;
1229             }
1230              
1231             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1232             sub Parse::RecDescent::Petal::CodePerl::Parser::integer
1233             {
1234 2     2   6 my $thisparser = $_[0];
1235 1     1   6 use vars q{$tracelevel};
  1         2  
  1         831  
1236 2   50     8 local $tracelevel = ($tracelevel||0)+1;
1237 2         4 $ERRORS = 0;
1238 2         6 my $thisrule = $thisparser->{"rules"}{"integer"};
1239            
1240 2 50       6 Parse::RecDescent::_trace(q{Trying rule: [integer]},
1241             Parse::RecDescent::_tracefirst($_[1]),
1242             q{integer},
1243             $tracelevel)
1244             if defined $::RD_TRACE;
1245              
1246            
1247 2         3 my $err_at = @{$thisparser->{errors}};
  2         4  
1248              
1249 2         4 my $score;
1250             my $score_return;
1251 0         0 my $_tok;
1252 2         16 my $return = undef;
1253 2         5 my $_matched=0;
1254 2         2 my $commit=0;
1255 2         5 my @item = ();
1256 2         4 my %item = ();
1257 2   33     8 my $repeating = defined($_[2]) && $_[2];
1258 2   33     11 my $_noactions = defined($_[3]) && $_[3];
1259 2 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  2         3  
  2         5  
1260 2 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1261 2         4 my $text;
1262 2         4 my $lastsep="";
1263 2         7 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1264 2         62 $expectation->at($_[1]);
1265            
1266 2         9 my $thisline;
1267 2         9 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1268              
1269            
1270              
1271 2   33     23 while (!$_matched && !$commit)
1272             {
1273            
1274 2 50       5 Parse::RecDescent::_trace(q{Trying production: [/[0-9]+/]},
1275             Parse::RecDescent::_tracefirst($_[1]),
1276             q{integer},
1277             $tracelevel)
1278             if defined $::RD_TRACE;
1279 2         6 my $thisprod = $thisrule->{"prods"}[0];
1280 2         4 $text = $_[1];
1281 2         3 my $_savetext;
1282 2         5 @item = (q{integer});
1283 2         5 %item = (__RULE__ => q{integer});
1284 2         3 my $repcount = 0;
1285              
1286              
1287 2 50       6 Parse::RecDescent::_trace(q{Trying terminal: [/[0-9]+/]}, Parse::RecDescent::_tracefirst($text),
1288             q{integer},
1289             $tracelevel)
1290             if defined $::RD_TRACE;
1291 2         3 $lastsep = "";
1292 2         7 $expectation->is(q{})->at($text);
1293            
1294              
1295 2 50 33     42 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[0-9]+)//)
  2 50       27  
1296             {
1297            
1298 0         0 $expectation->failed();
1299 0 0       0 Parse::RecDescent::_trace(q{<>},
1300             Parse::RecDescent::_tracefirst($text))
1301             if defined $::RD_TRACE;
1302              
1303 0         0 last;
1304             }
1305 2 50       17 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1306             . $& . q{])},
1307             Parse::RecDescent::_tracefirst($text))
1308             if defined $::RD_TRACE;
1309 2         8 push @item, $item{__PATTERN1__}=$&;
1310            
1311              
1312              
1313 2 50       5 Parse::RecDescent::_trace(q{>>Matched production: [/[0-9]+/]<<},
1314             Parse::RecDescent::_tracefirst($text),
1315             q{integer},
1316             $tracelevel)
1317             if defined $::RD_TRACE;
1318 2         3 $_matched = 1;
1319 2         6 last;
1320             }
1321              
1322              
1323 2 0 33     8 unless ( $_matched || defined($return) || defined($score) )
      33        
1324             {
1325            
1326              
1327 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1328 0 0       0 Parse::RecDescent::_trace(q{<>},
1329             Parse::RecDescent::_tracefirst($_[1]),
1330             q{integer},
1331             $tracelevel)
1332             if defined $::RD_TRACE;
1333 0         0 return undef;
1334             }
1335 2 50 33     14 if (!defined($return) && defined($score))
1336             {
1337 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1338             q{integer},
1339             $tracelevel)
1340             if defined $::RD_TRACE;
1341 0         0 $return = $score_return;
1342             }
1343 2         3 splice @{$thisparser->{errors}}, $err_at;
  2         6  
1344 2 50       7 $return = $item[$#item] unless defined $return;
1345 2 50       8 if (defined $::RD_TRACE)
1346             {
1347 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1348             $return . q{])}, "",
1349             q{integer},
1350             $tracelevel);
1351 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1352             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1353             Parse::RecDescent::_tracefirst($text),
1354             , q{integer},
1355             $tracelevel)
1356             }
1357 2         11 $_[1] = $text;
1358 2         19 return $return;
1359             }
1360              
1361             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1362             sub Parse::RecDescent::Petal::CodePerl::Parser::mm_string
1363             {
1364 6     6   12 my $thisparser = $_[0];
1365 1     1   6 use vars q{$tracelevel};
  1         3  
  1         990  
1366 6   50     20 local $tracelevel = ($tracelevel||0)+1;
1367 6         10 $ERRORS = 0;
1368 6         16 my $thisrule = $thisparser->{"rules"}{"mm_string"};
1369            
1370 6 50       19 Parse::RecDescent::_trace(q{Trying rule: [mm_string]},
1371             Parse::RecDescent::_tracefirst($_[1]),
1372             q{mm_string},
1373             $tracelevel)
1374             if defined $::RD_TRACE;
1375              
1376            
1377 6         7 my $err_at = @{$thisparser->{errors}};
  6         11  
1378              
1379 6         19 my $score;
1380             my $score_return;
1381 0         0 my $_tok;
1382 6         10 my $return = undef;
1383 6         8 my $_matched=0;
1384 6         8 my $commit=0;
1385 6         12 my @item = ();
1386 6         10 my %item = ();
1387 6   33     23 my $repeating = defined($_[2]) && $_[2];
1388 6   33     24 my $_noactions = defined($_[3]) && $_[3];
1389 6 50       17 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  6         9  
  6         13  
1390 6 50       24 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1391 6         10 my $text;
1392 6         8 my $lastsep="";
1393 6         52 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1394 6         173 $expectation->at($_[1]);
1395            
1396 6         22 my $thisline;
1397 6         43 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1398              
1399            
1400              
1401 6   33     59 while (!$_matched && !$commit)
1402             {
1403            
1404 6 50       16 Parse::RecDescent::_trace(q{Trying production: ['--' /\\S+/]},
1405             Parse::RecDescent::_tracefirst($_[1]),
1406             q{mm_string},
1407             $tracelevel)
1408             if defined $::RD_TRACE;
1409 6         15 my $thisprod = $thisrule->{"prods"}[0];
1410 6         11 $text = $_[1];
1411 6         9 my $_savetext;
1412 6         11 @item = (q{mm_string});
1413 6         14 %item = (__RULE__ => q{mm_string});
1414 6         10 my $repcount = 0;
1415              
1416              
1417 6 50       12 Parse::RecDescent::_trace(q{Trying terminal: ['--']},
1418             Parse::RecDescent::_tracefirst($text),
1419             q{mm_string},
1420             $tracelevel)
1421             if defined $::RD_TRACE;
1422 6         11 $lastsep = "";
1423 6         17 $expectation->is(q{})->at($text);
1424            
1425              
1426 6 50 66     88 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\-\-//)
  6 100       69  
1427             {
1428            
1429 5         18 $expectation->failed();
1430 5 50       34 Parse::RecDescent::_trace(qq{<>},
1431             Parse::RecDescent::_tracefirst($text))
1432             if defined $::RD_TRACE;
1433 5         10 last;
1434             }
1435 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1436             . $& . q{])},
1437             Parse::RecDescent::_tracefirst($text))
1438             if defined $::RD_TRACE;
1439 1         5 push @item, $item{__STRING1__}=$&;
1440            
1441              
1442 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [/\\S+/]}, Parse::RecDescent::_tracefirst($text),
1443             q{mm_string},
1444             $tracelevel)
1445             if defined $::RD_TRACE;
1446 1         3 $lastsep = "";
1447 1         4 $expectation->is(q{/\\S+/})->at($text);
1448            
1449              
1450 1 50 33     27 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\S+)//)
  1 50       19  
1451             {
1452            
1453 0         0 $expectation->failed();
1454 0 0       0 Parse::RecDescent::_trace(q{<>},
1455             Parse::RecDescent::_tracefirst($text))
1456             if defined $::RD_TRACE;
1457              
1458 0         0 last;
1459             }
1460 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1461             . $& . q{])},
1462             Parse::RecDescent::_tracefirst($text))
1463             if defined $::RD_TRACE;
1464 1         4 push @item, $item{__PATTERN1__}=$&;
1465            
1466              
1467              
1468 1 50       96 Parse::RecDescent::_trace(q{>>Matched production: ['--' /\\S+/]<<},
1469             Parse::RecDescent::_tracefirst($text),
1470             q{mm_string},
1471             $tracelevel)
1472             if defined $::RD_TRACE;
1473 1         3 $_matched = 1;
1474 1         4 last;
1475             }
1476              
1477              
1478 6 50 66     44 unless ( $_matched || defined($return) || defined($score) )
      66        
1479             {
1480            
1481              
1482 5         7 $_[1] = $text; # NOT SURE THIS IS NEEDED
1483 5 50       12 Parse::RecDescent::_trace(q{<>},
1484             Parse::RecDescent::_tracefirst($_[1]),
1485             q{mm_string},
1486             $tracelevel)
1487             if defined $::RD_TRACE;
1488 5         51 return undef;
1489             }
1490 1 50 33     9 if (!defined($return) && defined($score))
1491             {
1492 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1493             q{mm_string},
1494             $tracelevel)
1495             if defined $::RD_TRACE;
1496 0         0 $return = $score_return;
1497             }
1498 1         2 splice @{$thisparser->{errors}}, $err_at;
  1         4  
1499 1 50       5 $return = $item[$#item] unless defined $return;
1500 1 50       5 if (defined $::RD_TRACE)
1501             {
1502 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1503             $return . q{])}, "",
1504             q{mm_string},
1505             $tracelevel);
1506 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1507             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1508             Parse::RecDescent::_tracefirst($text),
1509             , q{mm_string},
1510             $tracelevel)
1511             }
1512 1         1 $_[1] = $text;
1513 1         12 return $return;
1514             }
1515              
1516             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1517             sub Parse::RecDescent::Petal::CodePerl::Parser::qual_expr
1518             {
1519 11     11   83 my $thisparser = $_[0];
1520 1     1   6 use vars q{$tracelevel};
  1         2  
  1         378  
1521 11   100     42 local $tracelevel = ($tracelevel||0)+1;
1522 11         19 $ERRORS = 0;
1523 11         31 my $thisrule = $thisparser->{"rules"}{"qual_expr"};
1524            
1525 11 50       28 Parse::RecDescent::_trace(q{Trying rule: [qual_expr]},
1526             Parse::RecDescent::_tracefirst($_[1]),
1527             q{qual_expr},
1528             $tracelevel)
1529             if defined $::RD_TRACE;
1530              
1531            
1532 11         19 my $err_at = @{$thisparser->{errors}};
  11         29  
1533              
1534 11         16 my $score;
1535             my $score_return;
1536 0         0 my $_tok;
1537 11         17 my $return = undef;
1538 11         20 my $_matched=0;
1539 11         18 my $commit=0;
1540 11         24 my @item = ();
1541 11         20 my %item = ();
1542 11   66     48 my $repeating = defined($_[2]) && $_[2];
1543 11   66     46 my $_noactions = defined($_[3]) && $_[3];
1544 11 50       46 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         25  
  11         31  
1545 11 50       1041 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1546 11         15 my $text;
1547 11         20 my $lastsep="";
1548 11         43 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1549 11         1380 $expectation->at($_[1]);
1550            
1551 11         48 my $thisline;
1552 11         63 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1553              
1554            
1555              
1556 11   33     199 while (!$_matched && !$commit)
1557             {
1558            
1559 11 50       26 Parse::RecDescent::_trace(q{Trying production: [path_expr]},
1560             Parse::RecDescent::_tracefirst($_[1]),
1561             q{qual_expr},
1562             $tracelevel)
1563             if defined $::RD_TRACE;
1564 11         24 my $thisprod = $thisrule->{"prods"}[0];
1565 11         15 $text = $_[1];
1566 11         15 my $_savetext;
1567 11         23 @item = (q{qual_expr});
1568 11         34 %item = (__RULE__ => q{qual_expr});
1569 11         14 my $repcount = 0;
1570              
1571              
1572 11 50       24 Parse::RecDescent::_trace(q{Trying subrule: [path_expr]},
1573             Parse::RecDescent::_tracefirst($text),
1574             q{qual_expr},
1575             $tracelevel)
1576             if defined $::RD_TRACE;
1577 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         304  
  11         15  
1578 11         32 $expectation->is(q{})->at($text);
1579 11 50   11   136 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::path_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         26  
1580             {
1581            
1582 11 50       23 Parse::RecDescent::_trace(q{<>},
1583             Parse::RecDescent::_tracefirst($text),
1584             q{qual_expr},
1585             $tracelevel)
1586             if defined $::RD_TRACE;
1587 11         28 $expectation->failed();
1588 11         41 last;
1589             }
1590 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [path_expr]<< (return value: [}
1591             . $_tok . q{]},
1592            
1593             Parse::RecDescent::_tracefirst($text),
1594             q{qual_expr},
1595             $tracelevel)
1596             if defined $::RD_TRACE;
1597 0         0 $item{q{path_expr}} = $_tok;
1598 0         0 push @item, $_tok;
1599            
1600             }
1601              
1602              
1603 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [path_expr]<<},
1604             Parse::RecDescent::_tracefirst($text),
1605             q{qual_expr},
1606             $tracelevel)
1607             if defined $::RD_TRACE;
1608 0         0 $_matched = 1;
1609 0         0 last;
1610             }
1611              
1612              
1613 11   33     68 while (!$_matched && !$commit)
1614             {
1615            
1616 11 50       26 Parse::RecDescent::_trace(q{Trying production: [not_expr]},
1617             Parse::RecDescent::_tracefirst($_[1]),
1618             q{qual_expr},
1619             $tracelevel)
1620             if defined $::RD_TRACE;
1621 11         24 my $thisprod = $thisrule->{"prods"}[1];
1622 11         16 $text = $_[1];
1623 11         18 my $_savetext;
1624 11         26 @item = (q{qual_expr});
1625 11         27 %item = (__RULE__ => q{qual_expr});
1626 11         17 my $repcount = 0;
1627              
1628              
1629 11 50       28 Parse::RecDescent::_trace(q{Trying subrule: [not_expr]},
1630             Parse::RecDescent::_tracefirst($text),
1631             q{qual_expr},
1632             $tracelevel)
1633             if defined $::RD_TRACE;
1634 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         316  
  11         12  
1635 11         31 $expectation->is(q{})->at($text);
1636 11 50   11   127 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::not_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         26  
1637             {
1638            
1639 11 50       23 Parse::RecDescent::_trace(q{<>},
1640             Parse::RecDescent::_tracefirst($text),
1641             q{qual_expr},
1642             $tracelevel)
1643             if defined $::RD_TRACE;
1644 11         31 $expectation->failed();
1645 11         39 last;
1646             }
1647 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [not_expr]<< (return value: [}
1648             . $_tok . q{]},
1649            
1650             Parse::RecDescent::_tracefirst($text),
1651             q{qual_expr},
1652             $tracelevel)
1653             if defined $::RD_TRACE;
1654 0         0 $item{q{not_expr}} = $_tok;
1655 0         0 push @item, $_tok;
1656            
1657             }
1658              
1659              
1660 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [not_expr]<<},
1661             Parse::RecDescent::_tracefirst($text),
1662             q{qual_expr},
1663             $tracelevel)
1664             if defined $::RD_TRACE;
1665 0         0 $_matched = 1;
1666 0         0 last;
1667             }
1668              
1669              
1670 11   33     66 while (!$_matched && !$commit)
1671             {
1672            
1673 11 50       29 Parse::RecDescent::_trace(q{Trying production: [string_expr]},
1674             Parse::RecDescent::_tracefirst($_[1]),
1675             q{qual_expr},
1676             $tracelevel)
1677             if defined $::RD_TRACE;
1678 11         29 my $thisprod = $thisrule->{"prods"}[2];
1679 11         23 $text = $_[1];
1680 11         10 my $_savetext;
1681 11         22 @item = (q{qual_expr});
1682 11         26 %item = (__RULE__ => q{qual_expr});
1683 11         16 my $repcount = 0;
1684              
1685              
1686 11 50       24 Parse::RecDescent::_trace(q{Trying subrule: [string_expr]},
1687             Parse::RecDescent::_tracefirst($text),
1688             q{qual_expr},
1689             $tracelevel)
1690             if defined $::RD_TRACE;
1691 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         309  
  11         12  
1692 11         38 $expectation->is(q{})->at($text);
1693 11 100   11   131 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::string_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         25  
1694             {
1695            
1696 8 50       18 Parse::RecDescent::_trace(q{<>},
1697             Parse::RecDescent::_tracefirst($text),
1698             q{qual_expr},
1699             $tracelevel)
1700             if defined $::RD_TRACE;
1701 8         22 $expectation->failed();
1702 8         28 last;
1703             }
1704 3 50       149 Parse::RecDescent::_trace(q{>>Matched subrule: [string_expr]<< (return value: [}
1705             . $_tok . q{]},
1706            
1707             Parse::RecDescent::_tracefirst($text),
1708             q{qual_expr},
1709             $tracelevel)
1710             if defined $::RD_TRACE;
1711 3         8 $item{q{string_expr}} = $_tok;
1712 3         7 push @item, $_tok;
1713            
1714             }
1715              
1716              
1717 3 50       9 Parse::RecDescent::_trace(q{>>Matched production: [string_expr]<<},
1718             Parse::RecDescent::_tracefirst($text),
1719             q{qual_expr},
1720             $tracelevel)
1721             if defined $::RD_TRACE;
1722 3         5 $_matched = 1;
1723 3         8 last;
1724             }
1725              
1726              
1727 11   66     59 while (!$_matched && !$commit)
1728             {
1729            
1730 8 50       312 Parse::RecDescent::_trace(q{Trying production: [exists_expr]},
1731             Parse::RecDescent::_tracefirst($_[1]),
1732             q{qual_expr},
1733             $tracelevel)
1734             if defined $::RD_TRACE;
1735 8         22 my $thisprod = $thisrule->{"prods"}[3];
1736 8         28 $text = $_[1];
1737 8         13 my $_savetext;
1738 8         23 @item = (q{qual_expr});
1739 8         19 %item = (__RULE__ => q{qual_expr});
1740 8         15 my $repcount = 0;
1741              
1742              
1743 8 50       20 Parse::RecDescent::_trace(q{Trying subrule: [exists_expr]},
1744             Parse::RecDescent::_tracefirst($text),
1745             q{qual_expr},
1746             $tracelevel)
1747             if defined $::RD_TRACE;
1748 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         323  
  8         10  
1749 8         26 $expectation->is(q{})->at($text);
1750 8 50   8   93 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::exists_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         16  
1751             {
1752            
1753 8 50       16 Parse::RecDescent::_trace(q{<>},
1754             Parse::RecDescent::_tracefirst($text),
1755             q{qual_expr},
1756             $tracelevel)
1757             if defined $::RD_TRACE;
1758 8         32 $expectation->failed();
1759 8         71 last;
1760             }
1761 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [exists_expr]<< (return value: [}
1762             . $_tok . q{]},
1763            
1764             Parse::RecDescent::_tracefirst($text),
1765             q{qual_expr},
1766             $tracelevel)
1767             if defined $::RD_TRACE;
1768 0         0 $item{q{exists_expr}} = $_tok;
1769 0         0 push @item, $_tok;
1770            
1771             }
1772              
1773              
1774 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [exists_expr]<<},
1775             Parse::RecDescent::_tracefirst($text),
1776             q{qual_expr},
1777             $tracelevel)
1778             if defined $::RD_TRACE;
1779 0         0 $_matched = 1;
1780 0         0 last;
1781             }
1782              
1783              
1784 11   66     72 while (!$_matched && !$commit)
1785             {
1786            
1787 8 50       19 Parse::RecDescent::_trace(q{Trying production: [perl_expr]},
1788             Parse::RecDescent::_tracefirst($_[1]),
1789             q{qual_expr},
1790             $tracelevel)
1791             if defined $::RD_TRACE;
1792 8         18 my $thisprod = $thisrule->{"prods"}[4];
1793 8         14 $text = $_[1];
1794 8         10 my $_savetext;
1795 8         21 @item = (q{qual_expr});
1796 8         21 %item = (__RULE__ => q{qual_expr});
1797 8         13 my $repcount = 0;
1798              
1799              
1800 8 50       20 Parse::RecDescent::_trace(q{Trying subrule: [perl_expr]},
1801             Parse::RecDescent::_tracefirst($text),
1802             q{qual_expr},
1803             $tracelevel)
1804             if defined $::RD_TRACE;
1805 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         375  
  8         12  
1806 8         25 $expectation->is(q{})->at($text);
1807 8 50   8   89 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::perl_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         19  
1808             {
1809            
1810 8 50       22 Parse::RecDescent::_trace(q{<>},
1811             Parse::RecDescent::_tracefirst($text),
1812             q{qual_expr},
1813             $tracelevel)
1814             if defined $::RD_TRACE;
1815 8         22 $expectation->failed();
1816 8         29 last;
1817             }
1818 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [perl_expr]<< (return value: [}
1819             . $_tok . q{]},
1820            
1821             Parse::RecDescent::_tracefirst($text),
1822             q{qual_expr},
1823             $tracelevel)
1824             if defined $::RD_TRACE;
1825 0         0 $item{q{perl_expr}} = $_tok;
1826 0         0 push @item, $_tok;
1827            
1828             }
1829              
1830              
1831 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [perl_expr]<<},
1832             Parse::RecDescent::_tracefirst($text),
1833             q{qual_expr},
1834             $tracelevel)
1835             if defined $::RD_TRACE;
1836 0         0 $_matched = 1;
1837 0         0 last;
1838             }
1839              
1840              
1841 11   66     67 while (!$_matched && !$commit)
1842             {
1843            
1844 8 50       19 Parse::RecDescent::_trace(q{Trying production: [mod_expr]},
1845             Parse::RecDescent::_tracefirst($_[1]),
1846             q{qual_expr},
1847             $tracelevel)
1848             if defined $::RD_TRACE;
1849 8         19 my $thisprod = $thisrule->{"prods"}[5];
1850 8         11 $text = $_[1];
1851 8         11 my $_savetext;
1852 8         18 @item = (q{qual_expr});
1853 8         19 %item = (__RULE__ => q{qual_expr});
1854 8         14 my $repcount = 0;
1855              
1856              
1857 8 50       19 Parse::RecDescent::_trace(q{Trying subrule: [mod_expr]},
1858             Parse::RecDescent::_tracefirst($text),
1859             q{qual_expr},
1860             $tracelevel)
1861             if defined $::RD_TRACE;
1862 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         578  
  8         20  
1863 8         26 $expectation->is(q{})->at($text);
1864 8 50   8   97 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mod_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         13  
1865             {
1866            
1867 8 50       20 Parse::RecDescent::_trace(q{<>},
1868             Parse::RecDescent::_tracefirst($text),
1869             q{qual_expr},
1870             $tracelevel)
1871             if defined $::RD_TRACE;
1872 8         22 $expectation->failed();
1873 8         38 last;
1874             }
1875 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [mod_expr]<< (return value: [}
1876             . $_tok . q{]},
1877            
1878             Parse::RecDescent::_tracefirst($text),
1879             q{qual_expr},
1880             $tracelevel)
1881             if defined $::RD_TRACE;
1882 0         0 $item{q{mod_expr}} = $_tok;
1883 0         0 push @item, $_tok;
1884            
1885             }
1886              
1887              
1888 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [mod_expr]<<},
1889             Parse::RecDescent::_tracefirst($text),
1890             q{qual_expr},
1891             $tracelevel)
1892             if defined $::RD_TRACE;
1893 0         0 $_matched = 1;
1894 0         0 last;
1895             }
1896              
1897              
1898 11 50 66     91 unless ( $_matched || defined($return) || defined($score) )
      66        
1899             {
1900            
1901              
1902 8         14 $_[1] = $text; # NOT SURE THIS IS NEEDED
1903 8 50       16 Parse::RecDescent::_trace(q{<>},
1904             Parse::RecDescent::_tracefirst($_[1]),
1905             q{qual_expr},
1906             $tracelevel)
1907             if defined $::RD_TRACE;
1908 8         67 return undef;
1909             }
1910 3 50 33     20 if (!defined($return) && defined($score))
1911             {
1912 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1913             q{qual_expr},
1914             $tracelevel)
1915             if defined $::RD_TRACE;
1916 0         0 $return = $score_return;
1917             }
1918 3         7 splice @{$thisparser->{errors}}, $err_at;
  3         8  
1919 3 50       14 $return = $item[$#item] unless defined $return;
1920 3 50       10 if (defined $::RD_TRACE)
1921             {
1922 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1923             $return . q{])}, "",
1924             q{qual_expr},
1925             $tracelevel);
1926 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1927             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1928             Parse::RecDescent::_tracefirst($text),
1929             , q{qual_expr},
1930             $tracelevel)
1931             }
1932 3         7 $_[1] = $text;
1933 3         37 return $return;
1934             }
1935              
1936             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1937             sub Parse::RecDescent::Petal::CodePerl::Parser::hash_deref
1938             {
1939 29     29   40 my $thisparser = $_[0];
1940 1     1   5 use vars q{$tracelevel};
  1         1  
  1         536  
1941 29   50     108 local $tracelevel = ($tracelevel||0)+1;
1942 29         35 $ERRORS = 0;
1943 29         68 my $thisrule = $thisparser->{"rules"}{"hash_deref"};
1944            
1945 29 50       63 Parse::RecDescent::_trace(q{Trying rule: [hash_deref]},
1946             Parse::RecDescent::_tracefirst($_[1]),
1947             q{hash_deref},
1948             $tracelevel)
1949             if defined $::RD_TRACE;
1950              
1951            
1952 29         28 my $err_at = @{$thisparser->{errors}};
  29         65  
1953              
1954 29         40 my $score;
1955             my $score_return;
1956 0         0 my $_tok;
1957 29         41 my $return = undef;
1958 29         53 my $_matched=0;
1959 29         39 my $commit=0;
1960 29         53 my @item = ();
1961 29         50 my %item = ();
1962 29   33     92 my $repeating = defined($_[2]) && $_[2];
1963 29   33     87 my $_noactions = defined($_[3]) && $_[3];
1964 29 50       146 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  29         34  
  29         68  
1965 29 50       90 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1966 29         40 my $text;
1967 29         46 my $lastsep="";
1968 29         149 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1969 29         862 $expectation->at($_[1]);
1970            
1971 29         120 my $thisline;
1972 29         119 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1973              
1974            
1975              
1976 29   33     268 while (!$_matched && !$commit)
1977             {
1978            
1979 29 50       71 Parse::RecDescent::_trace(q{Trying production: ['\{' url_segment '\}']},
1980             Parse::RecDescent::_tracefirst($_[1]),
1981             q{hash_deref},
1982             $tracelevel)
1983             if defined $::RD_TRACE;
1984 29         72 my $thisprod = $thisrule->{"prods"}[0];
1985 29         219 $text = $_[1];
1986 29         29 my $_savetext;
1987 29         72 @item = (q{hash_deref});
1988 29         80 %item = (__RULE__ => q{hash_deref});
1989 29         39 my $repcount = 0;
1990              
1991              
1992 29 50       57 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
1993             Parse::RecDescent::_tracefirst($text),
1994             q{hash_deref},
1995             $tracelevel)
1996             if defined $::RD_TRACE;
1997 29         43 $lastsep = "";
1998 29         83 $expectation->is(q{})->at($text);
1999            
2000              
2001 29 50 66     307 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  29 100       244  
2002             {
2003            
2004 27         75 $expectation->failed();
2005 27 50       128 Parse::RecDescent::_trace(qq{<>},
2006             Parse::RecDescent::_tracefirst($text))
2007             if defined $::RD_TRACE;
2008 27         55 last;
2009             }
2010 2 50       10 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2011             . $& . q{])},
2012             Parse::RecDescent::_tracefirst($text))
2013             if defined $::RD_TRACE;
2014 2         8 push @item, $item{__STRING1__}=$&;
2015            
2016              
2017 2 50       7 Parse::RecDescent::_trace(q{Trying subrule: [url_segment]},
2018             Parse::RecDescent::_tracefirst($text),
2019             q{hash_deref},
2020             $tracelevel)
2021             if defined $::RD_TRACE;
2022 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         766  
  2         3  
2023 2         7 $expectation->is(q{url_segment})->at($text);
2024 2 50   2   24 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::url_segment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         5  
2025             {
2026            
2027 0 0       0 Parse::RecDescent::_trace(q{<>},
2028             Parse::RecDescent::_tracefirst($text),
2029             q{hash_deref},
2030             $tracelevel)
2031             if defined $::RD_TRACE;
2032 0         0 $expectation->failed();
2033 0         0 last;
2034             }
2035 2 50       11 Parse::RecDescent::_trace(q{>>Matched subrule: [url_segment]<< (return value: [}
2036             . $_tok . q{]},
2037            
2038             Parse::RecDescent::_tracefirst($text),
2039             q{hash_deref},
2040             $tracelevel)
2041             if defined $::RD_TRACE;
2042 2         5 $item{q{url_segment}} = $_tok;
2043 2         5 push @item, $_tok;
2044            
2045             }
2046              
2047 2 50       5 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
2048             Parse::RecDescent::_tracefirst($text),
2049             q{hash_deref},
2050             $tracelevel)
2051             if defined $::RD_TRACE;
2052 2         19 $lastsep = "";
2053 2         7 $expectation->is(q{'\}'})->at($text);
2054            
2055              
2056 2 50 33     35 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  2 50       64  
2057             {
2058            
2059 0         0 $expectation->failed();
2060 0 0       0 Parse::RecDescent::_trace(qq{<>},
2061             Parse::RecDescent::_tracefirst($text))
2062             if defined $::RD_TRACE;
2063 0         0 last;
2064             }
2065 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2066             . $& . q{])},
2067             Parse::RecDescent::_tracefirst($text))
2068             if defined $::RD_TRACE;
2069 2         9 push @item, $item{__STRING2__}=$&;
2070            
2071              
2072 2 50       6 Parse::RecDescent::_trace(q{Trying action},
2073             Parse::RecDescent::_tracefirst($text),
2074             q{hash_deref},
2075             $tracelevel)
2076             if defined $::RD_TRACE;
2077            
2078              
2079 2 50       6 $_tok = ($_noactions) ? 0 : do { ['hash', $item{url_segment}] };
  2         9  
2080 2 50       8 unless (defined $_tok)
2081             {
2082 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2083             if defined $::RD_TRACE;
2084 0         0 last;
2085             }
2086 2 50       8 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2087             . $_tok . q{])},
2088             Parse::RecDescent::_tracefirst($text))
2089             if defined $::RD_TRACE;
2090 2         3 push @item, $_tok;
2091 2         13 $item{__ACTION1__}=$_tok;
2092            
2093              
2094              
2095 2 50       13 Parse::RecDescent::_trace(q{>>Matched production: ['\{' url_segment '\}']<<},
2096             Parse::RecDescent::_tracefirst($text),
2097             q{hash_deref},
2098             $tracelevel)
2099             if defined $::RD_TRACE;
2100 2         4 $_matched = 1;
2101 2         5 last;
2102             }
2103              
2104              
2105 29 50 66     197 unless ( $_matched || defined($return) || defined($score) )
      66        
2106             {
2107            
2108              
2109 27         47 $_[1] = $text; # NOT SURE THIS IS NEEDED
2110 27 50       50 Parse::RecDescent::_trace(q{<>},
2111             Parse::RecDescent::_tracefirst($_[1]),
2112             q{hash_deref},
2113             $tracelevel)
2114             if defined $::RD_TRACE;
2115 27         185 return undef;
2116             }
2117 2 50 33     12 if (!defined($return) && defined($score))
2118             {
2119 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2120             q{hash_deref},
2121             $tracelevel)
2122             if defined $::RD_TRACE;
2123 0         0 $return = $score_return;
2124             }
2125 2         2 splice @{$thisparser->{errors}}, $err_at;
  2         6  
2126 2 50       7 $return = $item[$#item] unless defined $return;
2127 2 50       7 if (defined $::RD_TRACE)
2128             {
2129 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2130             $return . q{])}, "",
2131             q{hash_deref},
2132             $tracelevel);
2133 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2134             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2135             Parse::RecDescent::_tracefirst($text),
2136             , q{hash_deref},
2137             $tracelevel)
2138             }
2139 2         4 $_[1] = $text;
2140 2         19 return $return;
2141             }
2142              
2143             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2144             sub Parse::RecDescent::Petal::CodePerl::Parser::exists_expr
2145             {
2146 8     8   15 my $thisparser = $_[0];
2147 1     1   6 use vars q{$tracelevel};
  1         2  
  1         584  
2148 8   50     30 local $tracelevel = ($tracelevel||0)+1;
2149 8         11 $ERRORS = 0;
2150 8         20 my $thisrule = $thisparser->{"rules"}{"exists_expr"};
2151            
2152 8 50       18 Parse::RecDescent::_trace(q{Trying rule: [exists_expr]},
2153             Parse::RecDescent::_tracefirst($_[1]),
2154             q{exists_expr},
2155             $tracelevel)
2156             if defined $::RD_TRACE;
2157              
2158            
2159 8         9 my $err_at = @{$thisparser->{errors}};
  8         16  
2160              
2161 8         13 my $score;
2162             my $score_return;
2163 0         0 my $_tok;
2164 8         14 my $return = undef;
2165 8         11 my $_matched=0;
2166 8         14 my $commit=0;
2167 8         16 my @item = ();
2168 8         14 my %item = ();
2169 8   33     27 my $repeating = defined($_[2]) && $_[2];
2170 8   33     24 my $_noactions = defined($_[3]) && $_[3];
2171 8 50       26 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  8         11  
  8         15  
2172 8 50       27 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2173 8         9 my $text;
2174 8         18 my $lastsep="";
2175 8         24 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2176 8         235 $expectation->at($_[1]);
2177            
2178 8         29 my $thisline;
2179 8         41 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2180              
2181            
2182              
2183 8   33     81 while (!$_matched && !$commit)
2184             {
2185            
2186 8 50       20 Parse::RecDescent::_trace(q{Trying production: ['exists:' path_expr]},
2187             Parse::RecDescent::_tracefirst($_[1]),
2188             q{exists_expr},
2189             $tracelevel)
2190             if defined $::RD_TRACE;
2191 8         20 my $thisprod = $thisrule->{"prods"}[0];
2192 8         11 $text = $_[1];
2193 8         14 my $_savetext;
2194 8         15 @item = (q{exists_expr});
2195 8         17 %item = (__RULE__ => q{exists_expr});
2196 8         12 my $repcount = 0;
2197              
2198              
2199 8 50       19 Parse::RecDescent::_trace(q{Trying terminal: ['exists:']},
2200             Parse::RecDescent::_tracefirst($text),
2201             q{exists_expr},
2202             $tracelevel)
2203             if defined $::RD_TRACE;
2204 8         13 $lastsep = "";
2205 8         22 $expectation->is(q{})->at($text);
2206            
2207              
2208 8 50 33     94 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "exists:"; 1 } and
  8 50 33     53  
  8   33     12  
  8         55  
2209             substr($text,0,length($_tok)) eq $_tok and
2210 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
2211             )
2212             {
2213            
2214 8         23 $expectation->failed();
2215 8 50       40 Parse::RecDescent::_trace(q{<>},
2216             Parse::RecDescent::_tracefirst($text))
2217             if defined $::RD_TRACE;
2218 8         20 last;
2219             }
2220 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2221             . $_tok . q{])},
2222             Parse::RecDescent::_tracefirst($text))
2223             if defined $::RD_TRACE;
2224 0         0 push @item, $item{__STRING1__}=$_tok;
2225            
2226              
2227            
2228              
2229 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
2230             Parse::RecDescent::_tracefirst($text),
2231             q{exists_expr},
2232             $tracelevel)
2233             if defined $::RD_TRACE;
2234 0         0 $_tok = do { $commit = 1 };
  0         0  
2235 0 0       0 if (defined($_tok))
2236             {
2237 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2238             . $_tok . q{])},
2239             Parse::RecDescent::_tracefirst($text))
2240             if defined $::RD_TRACE;
2241             }
2242             else
2243             {
2244 0 0       0 Parse::RecDescent::_trace(q{<>},
2245             Parse::RecDescent::_tracefirst($text))
2246             if defined $::RD_TRACE;
2247             }
2248            
2249 0 0       0 last unless defined $_tok;
2250 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
2251            
2252              
2253 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [path_expr]},
2254             Parse::RecDescent::_tracefirst($text),
2255             q{exists_expr},
2256             $tracelevel)
2257             if defined $::RD_TRACE;
2258 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         606  
  0         0  
2259 0         0 $expectation->is(q{path_expr})->at($text);
2260 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::path_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
2261             {
2262            
2263 0 0       0 Parse::RecDescent::_trace(q{<>},
2264             Parse::RecDescent::_tracefirst($text),
2265             q{exists_expr},
2266             $tracelevel)
2267             if defined $::RD_TRACE;
2268 0         0 $expectation->failed();
2269 0         0 last;
2270             }
2271 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [path_expr]<< (return value: [}
2272             . $_tok . q{]},
2273            
2274             Parse::RecDescent::_tracefirst($text),
2275             q{exists_expr},
2276             $tracelevel)
2277             if defined $::RD_TRACE;
2278 0         0 $item{q{path_expr}} = $_tok;
2279 0         0 push @item, $_tok;
2280            
2281             }
2282              
2283 0 0       0 Parse::RecDescent::_trace(q{Trying action},
2284             Parse::RecDescent::_tracefirst($text),
2285             q{exists_expr},
2286             $tracelevel)
2287             if defined $::RD_TRACE;
2288            
2289              
2290 0 0       0 $_tok = ($_noactions) ? 0 : do { Petal::CodePerl::Expr::pathexists($item{expr}) };
  0         0  
2291 0 0       0 unless (defined $_tok)
2292             {
2293 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2294             if defined $::RD_TRACE;
2295 0         0 last;
2296             }
2297 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2298             . $_tok . q{])},
2299             Parse::RecDescent::_tracefirst($text))
2300             if defined $::RD_TRACE;
2301 0         0 push @item, $_tok;
2302 0         0 $item{__ACTION1__}=$_tok;
2303            
2304              
2305              
2306 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['exists:' path_expr]<<},
2307             Parse::RecDescent::_tracefirst($text),
2308             q{exists_expr},
2309             $tracelevel)
2310             if defined $::RD_TRACE;
2311 0         0 $_matched = 1;
2312 0         0 last;
2313             }
2314              
2315              
2316 8 50 33     54 unless ( $_matched || defined($return) || defined($score) )
      33        
2317             {
2318            
2319              
2320 8         18 $_[1] = $text; # NOT SURE THIS IS NEEDED
2321 8 50       18 Parse::RecDescent::_trace(q{<>},
2322             Parse::RecDescent::_tracefirst($_[1]),
2323             q{exists_expr},
2324             $tracelevel)
2325             if defined $::RD_TRACE;
2326 8         62 return undef;
2327             }
2328 0 0 0     0 if (!defined($return) && defined($score))
2329             {
2330 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2331             q{exists_expr},
2332             $tracelevel)
2333             if defined $::RD_TRACE;
2334 0         0 $return = $score_return;
2335             }
2336 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
2337 0 0       0 $return = $item[$#item] unless defined $return;
2338 0 0       0 if (defined $::RD_TRACE)
2339             {
2340 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2341             $return . q{])}, "",
2342             q{exists_expr},
2343             $tracelevel);
2344 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2345             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2346             Parse::RecDescent::_tracefirst($text),
2347             , q{exists_expr},
2348             $tracelevel)
2349             }
2350 0         0 $_[1] = $text;
2351 0         0 return $return;
2352             }
2353              
2354             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2355             sub Parse::RecDescent::Petal::CodePerl::Parser::dollar
2356             {
2357 42     42   191 my $thisparser = $_[0];
2358 1     1   5 use vars q{$tracelevel};
  1         1  
  1         849  
2359 42   50     109 local $tracelevel = ($tracelevel||0)+1;
2360 42         50 $ERRORS = 0;
2361 42         78 my $thisrule = $thisparser->{"rules"}{"dollar"};
2362            
2363 42 50       89 Parse::RecDescent::_trace(q{Trying rule: [dollar]},
2364             Parse::RecDescent::_tracefirst($_[1]),
2365             q{dollar},
2366             $tracelevel)
2367             if defined $::RD_TRACE;
2368              
2369            
2370 42         46 my $err_at = @{$thisparser->{errors}};
  42         75  
2371              
2372 42         56 my $score;
2373             my $score_return;
2374 0         0 my $_tok;
2375 42         49 my $return = undef;
2376 42         43 my $_matched=0;
2377 42         43 my $commit=0;
2378 42         58 my @item = ();
2379 42         51 my %item = ();
2380 42   33     114 my $repeating = defined($_[2]) && $_[2];
2381 42   33     110 my $_noactions = defined($_[3]) && $_[3];
2382 42 50       82 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  42         39  
  42         84  
2383 42 50       101 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2384 42         48 my $text;
2385 42         50 my $lastsep="";
2386 42         108 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2387 42         1235 $expectation->at($_[1]);
2388            
2389 42         233 my $thisline;
2390 42         152 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2391              
2392            
2393              
2394 42   33     415 while (!$_matched && !$commit)
2395             {
2396            
2397 42 50       79 Parse::RecDescent::_trace(q{Trying production: ['$$']},
2398             Parse::RecDescent::_tracefirst($_[1]),
2399             q{dollar},
2400             $tracelevel)
2401             if defined $::RD_TRACE;
2402 42         71 my $thisprod = $thisrule->{"prods"}[0];
2403 42         56 $text = $_[1];
2404 42         42 my $_savetext;
2405 42         69 @item = (q{dollar});
2406 42         132 %item = (__RULE__ => q{dollar});
2407 42         49 my $repcount = 0;
2408              
2409              
2410 42 50       78 Parse::RecDescent::_trace(q{Trying terminal: ['$$']},
2411             Parse::RecDescent::_tracefirst($text),
2412             q{dollar},
2413             $tracelevel)
2414             if defined $::RD_TRACE;
2415 42         49 $lastsep = "";
2416 42         112 $expectation->is(q{})->at($text);
2417            
2418              
2419 42 50 66     566 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\$\$//)
  42 100       354  
2420             {
2421            
2422 41         111 $expectation->failed();
2423 41 50       204 Parse::RecDescent::_trace(qq{<>},
2424             Parse::RecDescent::_tracefirst($text))
2425             if defined $::RD_TRACE;
2426 41         76 last;
2427             }
2428 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2429             . $& . q{])},
2430             Parse::RecDescent::_tracefirst($text))
2431             if defined $::RD_TRACE;
2432 1         4 push @item, $item{__STRING1__}=$&;
2433            
2434              
2435 1 50       4 Parse::RecDescent::_trace(q{Trying action},
2436             Parse::RecDescent::_tracefirst($text),
2437             q{dollar},
2438             $tracelevel)
2439             if defined $::RD_TRACE;
2440            
2441              
2442 1 50       4 $_tok = ($_noactions) ? 0 : do { '$' };
  1         2  
2443 1 50       4 unless (defined $_tok)
2444             {
2445 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2446             if defined $::RD_TRACE;
2447 0         0 last;
2448             }
2449 1 50       3 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2450             . $_tok . q{])},
2451             Parse::RecDescent::_tracefirst($text))
2452             if defined $::RD_TRACE;
2453 1         3 push @item, $_tok;
2454 1         3 $item{__ACTION1__}=$_tok;
2455            
2456              
2457              
2458 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: ['$$']<<},
2459             Parse::RecDescent::_tracefirst($text),
2460             q{dollar},
2461             $tracelevel)
2462             if defined $::RD_TRACE;
2463 1         1 $_matched = 1;
2464 1         2 last;
2465             }
2466              
2467              
2468 42 50 66     291 unless ( $_matched || defined($return) || defined($score) )
      66        
2469             {
2470            
2471              
2472 41         59 $_[1] = $text; # NOT SURE THIS IS NEEDED
2473 41 50       67 Parse::RecDescent::_trace(q{<>},
2474             Parse::RecDescent::_tracefirst($_[1]),
2475             q{dollar},
2476             $tracelevel)
2477             if defined $::RD_TRACE;
2478 41         281 return undef;
2479             }
2480 1 50 33     17 if (!defined($return) && defined($score))
2481             {
2482 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2483             q{dollar},
2484             $tracelevel)
2485             if defined $::RD_TRACE;
2486 0         0 $return = $score_return;
2487             }
2488 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         3  
2489 1 50       4 $return = $item[$#item] unless defined $return;
2490 1 50       4 if (defined $::RD_TRACE)
2491             {
2492 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2493             $return . q{])}, "",
2494             q{dollar},
2495             $tracelevel);
2496 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2497             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2498             Parse::RecDescent::_tracefirst($text),
2499             , q{dollar},
2500             $tracelevel)
2501             }
2502 1         2 $_[1] = $text;
2503 1         8 return $return;
2504             }
2505              
2506             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2507             sub Parse::RecDescent::Petal::CodePerl::Parser::deref
2508             {
2509 43     43   644 my $thisparser = $_[0];
2510 1     1   6 use vars q{$tracelevel};
  1         2  
  1         440  
2511 43   50     126 local $tracelevel = ($tracelevel||0)+1;
2512 43         51 $ERRORS = 0;
2513 43         110 my $thisrule = $thisparser->{"rules"}{"deref"};
2514            
2515 43 50       87 Parse::RecDescent::_trace(q{Trying rule: [deref]},
2516             Parse::RecDescent::_tracefirst($_[1]),
2517             q{deref},
2518             $tracelevel)
2519             if defined $::RD_TRACE;
2520              
2521            
2522 43         48 my $err_at = @{$thisparser->{errors}};
  43         88  
2523              
2524 43         66 my $score;
2525             my $score_return;
2526 0         0 my $_tok;
2527 43         52 my $return = undef;
2528 43         49 my $_matched=0;
2529 43         51 my $commit=0;
2530 43         67 my @item = ();
2531 43         81 my %item = ();
2532 43   33     122 my $repeating = defined($_[2]) && $_[2];
2533 43   33     124 my $_noactions = defined($_[3]) && $_[3];
2534 43 50       123 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
2535 43 50       105 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2536 43         50 my $text;
2537 43         60 my $lastsep="";
2538 43         129 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2539 43         3587 $expectation->at($_[1]);
2540            
2541 43         170 my $thisline;
2542 43         209 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2543              
2544            
2545              
2546 43   33     440 while (!$_matched && !$commit)
2547             {
2548            
2549 43 50       100 Parse::RecDescent::_trace(q{Trying production: [method_call]},
2550             Parse::RecDescent::_tracefirst($_[1]),
2551             q{deref},
2552             $tracelevel)
2553             if defined $::RD_TRACE;
2554 43         87 my $thisprod = $thisrule->{"prods"}[0];
2555 43         60 $text = $_[1];
2556 43         54 my $_savetext;
2557 43         105 @item = (q{deref});
2558 43         94 %item = (__RULE__ => q{deref});
2559 43         55 my $repcount = 0;
2560              
2561              
2562 43 50       101 Parse::RecDescent::_trace(q{Trying subrule: [method_call]},
2563             Parse::RecDescent::_tracefirst($text),
2564             q{deref},
2565             $tracelevel)
2566             if defined $::RD_TRACE;
2567 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         286  
  43         51  
2568 43         116 $expectation->is(q{})->at($text);
2569 43 100   43   454 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::method_call($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  43         89  
2570             {
2571            
2572 36 50       82 Parse::RecDescent::_trace(q{<>},
2573             Parse::RecDescent::_tracefirst($text),
2574             q{deref},
2575             $tracelevel)
2576             if defined $::RD_TRACE;
2577 36         137 $expectation->failed();
2578 36         132 last;
2579             }
2580 7 50       34 Parse::RecDescent::_trace(q{>>Matched subrule: [method_call]<< (return value: [}
2581             . $_tok . q{]},
2582            
2583             Parse::RecDescent::_tracefirst($text),
2584             q{deref},
2585             $tracelevel)
2586             if defined $::RD_TRACE;
2587 7         24 $item{q{method_call}} = $_tok;
2588 7         15 push @item, $_tok;
2589            
2590             }
2591              
2592              
2593 7 50       18 Parse::RecDescent::_trace(q{>>Matched production: [method_call]<<},
2594             Parse::RecDescent::_tracefirst($text),
2595             q{deref},
2596             $tracelevel)
2597             if defined $::RD_TRACE;
2598 7         13 $_matched = 1;
2599 7         12 last;
2600             }
2601              
2602              
2603 43   66     214 while (!$_matched && !$commit)
2604             {
2605            
2606 36 50       71 Parse::RecDescent::_trace(q{Trying production: [tal_deref]},
2607             Parse::RecDescent::_tracefirst($_[1]),
2608             q{deref},
2609             $tracelevel)
2610             if defined $::RD_TRACE;
2611 36         94 my $thisprod = $thisrule->{"prods"}[1];
2612 36         48 $text = $_[1];
2613 36         46 my $_savetext;
2614 36         80 @item = (q{deref});
2615 36         84 %item = (__RULE__ => q{deref});
2616 36         44 my $repcount = 0;
2617              
2618              
2619 36 50       80 Parse::RecDescent::_trace(q{Trying subrule: [tal_deref]},
2620             Parse::RecDescent::_tracefirst($text),
2621             q{deref},
2622             $tracelevel)
2623             if defined $::RD_TRACE;
2624 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         326  
  36         49  
2625 36         111 $expectation->is(q{})->at($text);
2626 36 100   36   380 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::tal_deref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         74  
2627             {
2628            
2629 29 50       57 Parse::RecDescent::_trace(q{<>},
2630             Parse::RecDescent::_tracefirst($text),
2631             q{deref},
2632             $tracelevel)
2633             if defined $::RD_TRACE;
2634 29         74 $expectation->failed();
2635 29         106 last;
2636             }
2637 7 50       33 Parse::RecDescent::_trace(q{>>Matched subrule: [tal_deref]<< (return value: [}
2638             . $_tok . q{]},
2639            
2640             Parse::RecDescent::_tracefirst($text),
2641             q{deref},
2642             $tracelevel)
2643             if defined $::RD_TRACE;
2644 7         19 $item{q{tal_deref}} = $_tok;
2645 7         16 push @item, $_tok;
2646            
2647             }
2648              
2649              
2650 7 50       21 Parse::RecDescent::_trace(q{>>Matched production: [tal_deref]<<},
2651             Parse::RecDescent::_tracefirst($text),
2652             q{deref},
2653             $tracelevel)
2654             if defined $::RD_TRACE;
2655 7         11 $_matched = 1;
2656 7         13 last;
2657             }
2658              
2659              
2660 43   66     181 while (!$_matched && !$commit)
2661             {
2662            
2663 29 50       71 Parse::RecDescent::_trace(q{Trying production: [hash_deref]},
2664             Parse::RecDescent::_tracefirst($_[1]),
2665             q{deref},
2666             $tracelevel)
2667             if defined $::RD_TRACE;
2668 29         72 my $thisprod = $thisrule->{"prods"}[2];
2669 29         44 $text = $_[1];
2670 29         42 my $_savetext;
2671 29         60 @item = (q{deref});
2672 29         69 %item = (__RULE__ => q{deref});
2673 29         64 my $repcount = 0;
2674              
2675              
2676 29 50       53 Parse::RecDescent::_trace(q{Trying subrule: [hash_deref]},
2677             Parse::RecDescent::_tracefirst($text),
2678             q{deref},
2679             $tracelevel)
2680             if defined $::RD_TRACE;
2681 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         297  
  29         29  
2682 29         86 $expectation->is(q{})->at($text);
2683 29 100   29   346 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::hash_deref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  29         53  
2684             {
2685            
2686 27 50       69 Parse::RecDescent::_trace(q{<>},
2687             Parse::RecDescent::_tracefirst($text),
2688             q{deref},
2689             $tracelevel)
2690             if defined $::RD_TRACE;
2691 27         85 $expectation->failed();
2692 27         118 last;
2693             }
2694 2 50       9 Parse::RecDescent::_trace(q{>>Matched subrule: [hash_deref]<< (return value: [}
2695             . $_tok . q{]},
2696            
2697             Parse::RecDescent::_tracefirst($text),
2698             q{deref},
2699             $tracelevel)
2700             if defined $::RD_TRACE;
2701 2         6 $item{q{hash_deref}} = $_tok;
2702 2         3 push @item, $_tok;
2703            
2704             }
2705              
2706              
2707 2 50       7 Parse::RecDescent::_trace(q{>>Matched production: [hash_deref]<<},
2708             Parse::RecDescent::_tracefirst($text),
2709             q{deref},
2710             $tracelevel)
2711             if defined $::RD_TRACE;
2712 2         3 $_matched = 1;
2713 2         3 last;
2714             }
2715              
2716              
2717 43   66     191 while (!$_matched && !$commit)
2718             {
2719            
2720 27 50       87 Parse::RecDescent::_trace(q{Trying production: [array_deref]},
2721             Parse::RecDescent::_tracefirst($_[1]),
2722             q{deref},
2723             $tracelevel)
2724             if defined $::RD_TRACE;
2725 27         62 my $thisprod = $thisrule->{"prods"}[3];
2726 27         41 $text = $_[1];
2727 27         28 my $_savetext;
2728 27         78 @item = (q{deref});
2729 27         65 %item = (__RULE__ => q{deref});
2730 27         36 my $repcount = 0;
2731              
2732              
2733 27 50       46 Parse::RecDescent::_trace(q{Trying subrule: [array_deref]},
2734             Parse::RecDescent::_tracefirst($text),
2735             q{deref},
2736             $tracelevel)
2737             if defined $::RD_TRACE;
2738 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         567  
  27         49  
2739 27         92 $expectation->is(q{})->at($text);
2740 27 100   27   360 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::array_deref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  27         65  
2741             {
2742            
2743 25 50       60 Parse::RecDescent::_trace(q{<>},
2744             Parse::RecDescent::_tracefirst($text),
2745             q{deref},
2746             $tracelevel)
2747             if defined $::RD_TRACE;
2748 25         75 $expectation->failed();
2749 25         94 last;
2750             }
2751 2 50       10 Parse::RecDescent::_trace(q{>>Matched subrule: [array_deref]<< (return value: [}
2752             . $_tok . q{]},
2753            
2754             Parse::RecDescent::_tracefirst($text),
2755             q{deref},
2756             $tracelevel)
2757             if defined $::RD_TRACE;
2758 2         4 $item{q{array_deref}} = $_tok;
2759 2         4 push @item, $_tok;
2760            
2761             }
2762              
2763              
2764 2 50       5 Parse::RecDescent::_trace(q{>>Matched production: [array_deref]<<},
2765             Parse::RecDescent::_tracefirst($text),
2766             q{deref},
2767             $tracelevel)
2768             if defined $::RD_TRACE;
2769 2         3 $_matched = 1;
2770 2         3 last;
2771             }
2772              
2773              
2774 43 50 66     256 unless ( $_matched || defined($return) || defined($score) )
      66        
2775             {
2776            
2777              
2778 25         39 $_[1] = $text; # NOT SURE THIS IS NEEDED
2779 25 50       55 Parse::RecDescent::_trace(q{<>},
2780             Parse::RecDescent::_tracefirst($_[1]),
2781             q{deref},
2782             $tracelevel)
2783             if defined $::RD_TRACE;
2784 25         176 return undef;
2785             }
2786 18 50 33     328 if (!defined($return) && defined($score))
2787             {
2788 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2789             q{deref},
2790             $tracelevel)
2791             if defined $::RD_TRACE;
2792 0         0 $return = $score_return;
2793             }
2794 18         27 splice @{$thisparser->{errors}}, $err_at;
  18         37  
2795 18 50       47 $return = $item[$#item] unless defined $return;
2796 18 50       44 if (defined $::RD_TRACE)
2797             {
2798 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2799             $return . q{])}, "",
2800             q{deref},
2801             $tracelevel);
2802 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2803             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2804             Parse::RecDescent::_tracefirst($text),
2805             , q{deref},
2806             $tracelevel)
2807             }
2808 18         29 $_[1] = $text;
2809 18         144 return $return;
2810             }
2811              
2812             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2813             sub Parse::RecDescent::Petal::CodePerl::Parser::mod_expr
2814             {
2815 11     11   198 my $thisparser = $_[0];
2816 1     1   6 use vars q{$tracelevel};
  1         2  
  1         350  
2817 11   100     51 local $tracelevel = ($tracelevel||0)+1;
2818 11         12 $ERRORS = 0;
2819 11         29 my $thisrule = $thisparser->{"rules"}{"mod_expr"};
2820            
2821 11 50       29 Parse::RecDescent::_trace(q{Trying rule: [mod_expr]},
2822             Parse::RecDescent::_tracefirst($_[1]),
2823             q{mod_expr},
2824             $tracelevel)
2825             if defined $::RD_TRACE;
2826              
2827            
2828 11         15 my $err_at = @{$thisparser->{errors}};
  11         21  
2829              
2830 11         18 my $score;
2831             my $score_return;
2832 0         0 my $_tok;
2833 11         17 my $return = undef;
2834 11         12 my $_matched=0;
2835 11         16 my $commit=0;
2836 11         15 my @item = ();
2837 11         18 my %item = ();
2838 11   66     44 my $repeating = defined($_[2]) && $_[2];
2839 11   66     49 my $_noactions = defined($_[3]) && $_[3];
2840 11 50       24 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         13  
  11         21  
2841 11 50       40 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2842 11         14 my $text;
2843 11         13 my $lastsep="";
2844 11         36 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2845 11         558 $expectation->at($_[1]);
2846            
2847 11         43 my $thisline;
2848 11         58 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2849              
2850            
2851              
2852 11   33     111 while (!$_matched && !$commit)
2853             {
2854            
2855 11 50       27 Parse::RecDescent::_trace(q{Trying production: [mod_expr_compile]},
2856             Parse::RecDescent::_tracefirst($_[1]),
2857             q{mod_expr},
2858             $tracelevel)
2859             if defined $::RD_TRACE;
2860 11         25 my $thisprod = $thisrule->{"prods"}[0];
2861 11         16 $text = $_[1];
2862 11         16 my $_savetext;
2863 11         20 @item = (q{mod_expr});
2864 11         55 %item = (__RULE__ => q{mod_expr});
2865 11         14 my $repcount = 0;
2866              
2867              
2868 11 50       25 Parse::RecDescent::_trace(q{Trying subrule: [mod_expr_compile]},
2869             Parse::RecDescent::_tracefirst($text),
2870             q{mod_expr},
2871             $tracelevel)
2872             if defined $::RD_TRACE;
2873 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         289  
  11         16  
2874 11         34 $expectation->is(q{})->at($text);
2875 11 100   11   139 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mod_expr_compile($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         26  
2876             {
2877            
2878 9 50       21 Parse::RecDescent::_trace(q{<>},
2879             Parse::RecDescent::_tracefirst($text),
2880             q{mod_expr},
2881             $tracelevel)
2882             if defined $::RD_TRACE;
2883 9         29 $expectation->failed();
2884 9         36 last;
2885             }
2886 2 50       12 Parse::RecDescent::_trace(q{>>Matched subrule: [mod_expr_compile]<< (return value: [}
2887             . $_tok . q{]},
2888            
2889             Parse::RecDescent::_tracefirst($text),
2890             q{mod_expr},
2891             $tracelevel)
2892             if defined $::RD_TRACE;
2893 2         5 $item{q{mod_expr_compile}} = $_tok;
2894 2         4 push @item, $_tok;
2895            
2896             }
2897              
2898              
2899 2 50       5 Parse::RecDescent::_trace(q{>>Matched production: [mod_expr_compile]<<},
2900             Parse::RecDescent::_tracefirst($text),
2901             q{mod_expr},
2902             $tracelevel)
2903             if defined $::RD_TRACE;
2904 2         2 $_matched = 1;
2905 2         5 last;
2906             }
2907              
2908              
2909 11   66     60 while (!$_matched && !$commit)
2910             {
2911            
2912 9 50       27 Parse::RecDescent::_trace(q{Trying production: [mod_expr_revert]},
2913             Parse::RecDescent::_tracefirst($_[1]),
2914             q{mod_expr},
2915             $tracelevel)
2916             if defined $::RD_TRACE;
2917 9         24 my $thisprod = $thisrule->{"prods"}[1];
2918 9         17 $text = $_[1];
2919 9         13 my $_savetext;
2920 9         71 @item = (q{mod_expr});
2921 9         27 %item = (__RULE__ => q{mod_expr});
2922 9         11 my $repcount = 0;
2923              
2924              
2925 9 50       21 Parse::RecDescent::_trace(q{Trying subrule: [mod_expr_revert]},
2926             Parse::RecDescent::_tracefirst($text),
2927             q{mod_expr},
2928             $tracelevel)
2929             if defined $::RD_TRACE;
2930 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         510  
  9         11  
2931 9         28 $expectation->is(q{})->at($text);
2932 9 100   9   106 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mod_expr_revert($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  9         20  
2933             {
2934            
2935 8 50       19 Parse::RecDescent::_trace(q{<>},
2936             Parse::RecDescent::_tracefirst($text),
2937             q{mod_expr},
2938             $tracelevel)
2939             if defined $::RD_TRACE;
2940 8         25 $expectation->failed();
2941 8         31 last;
2942             }
2943 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [mod_expr_revert]<< (return value: [}
2944             . $_tok . q{]},
2945            
2946             Parse::RecDescent::_tracefirst($text),
2947             q{mod_expr},
2948             $tracelevel)
2949             if defined $::RD_TRACE;
2950 1         3 $item{q{mod_expr_revert}} = $_tok;
2951 1         2 push @item, $_tok;
2952            
2953             }
2954              
2955              
2956 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: [mod_expr_revert]<<},
2957             Parse::RecDescent::_tracefirst($text),
2958             q{mod_expr},
2959             $tracelevel)
2960             if defined $::RD_TRACE;
2961 1         2 $_matched = 1;
2962 1         2 last;
2963             }
2964              
2965              
2966 11 50 66     80 unless ( $_matched || defined($return) || defined($score) )
      66        
2967             {
2968            
2969              
2970 8         13 $_[1] = $text; # NOT SURE THIS IS NEEDED
2971 8 50       15 Parse::RecDescent::_trace(q{<>},
2972             Parse::RecDescent::_tracefirst($_[1]),
2973             q{mod_expr},
2974             $tracelevel)
2975             if defined $::RD_TRACE;
2976 8         58 return undef;
2977             }
2978 3 50 33     17 if (!defined($return) && defined($score))
2979             {
2980 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2981             q{mod_expr},
2982             $tracelevel)
2983             if defined $::RD_TRACE;
2984 0         0 $return = $score_return;
2985             }
2986 3         4 splice @{$thisparser->{errors}}, $err_at;
  3         8  
2987 3 50       8 $return = $item[$#item] unless defined $return;
2988 3 50       9 if (defined $::RD_TRACE)
2989             {
2990 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2991             $return . q{])}, "",
2992             q{mod_expr},
2993             $tracelevel);
2994 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2995             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2996             Parse::RecDescent::_tracefirst($text),
2997             , q{mod_expr},
2998             $tracelevel)
2999             }
3000 3         6 $_[1] = $text;
3001 3         29 return $return;
3002             }
3003              
3004             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3005             sub Parse::RecDescent::Petal::CodePerl::Parser::string_argument
3006             {
3007 6     6   21 my $thisparser = $_[0];
3008 1     1   6 use vars q{$tracelevel};
  1         2  
  1         382  
3009 6   50     21 local $tracelevel = ($tracelevel||0)+1;
3010 6         10 $ERRORS = 0;
3011 6         15 my $thisrule = $thisparser->{"rules"}{"string_argument"};
3012            
3013 6 50       18 Parse::RecDescent::_trace(q{Trying rule: [string_argument]},
3014             Parse::RecDescent::_tracefirst($_[1]),
3015             q{string_argument},
3016             $tracelevel)
3017             if defined $::RD_TRACE;
3018              
3019            
3020 6         5 my $err_at = @{$thisparser->{errors}};
  6         13  
3021              
3022 6         9 my $score;
3023             my $score_return;
3024 0         0 my $_tok;
3025 6         7 my $return = undef;
3026 6         8 my $_matched=0;
3027 6         7 my $commit=0;
3028 6         11 my @item = ();
3029 6         9 my %item = ();
3030 6   33     23 my $repeating = defined($_[2]) && $_[2];
3031 6   33     23 my $_noactions = defined($_[3]) && $_[3];
3032 6 50       17 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  6         6  
  6         17  
3033 6 50       19 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3034 6         13 my $text;
3035 6         12 my $lastsep="";
3036 6         20 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3037 6         199 $expectation->at($_[1]);
3038            
3039 6         22 my $thisline;
3040 6         26 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3041              
3042            
3043              
3044 6   33     62 while (!$_matched && !$commit)
3045             {
3046            
3047 6 50       17 Parse::RecDescent::_trace(q{Trying production: [mm_string, or qq_string, or q_string]},
3048             Parse::RecDescent::_tracefirst($_[1]),
3049             q{string_argument},
3050             $tracelevel)
3051             if defined $::RD_TRACE;
3052 6         15 my $thisprod = $thisrule->{"prods"}[0];
3053 6         25 $text = $_[1];
3054 6         9 my $_savetext;
3055 6         53 @item = (q{string_argument});
3056 6         17 %item = (__RULE__ => q{string_argument});
3057 6         9 my $repcount = 0;
3058              
3059              
3060 6 50       16 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_string_argument]},
3061             Parse::RecDescent::_tracefirst($text),
3062             q{string_argument},
3063             $tracelevel)
3064             if defined $::RD_TRACE;
3065 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         620  
  6         7  
3066 6         22 $expectation->is(q{})->at($text);
3067 6 100   6   73 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::_alternation_1_of_production_1_of_rule_string_argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  6         12  
3068             {
3069            
3070 3 50       7 Parse::RecDescent::_trace(q{<>},
3071             Parse::RecDescent::_tracefirst($text),
3072             q{string_argument},
3073             $tracelevel)
3074             if defined $::RD_TRACE;
3075 3         11 $expectation->failed();
3076 3         10 last;
3077             }
3078 3 50       14 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_string_argument]<< (return value: [}
3079             . $_tok . q{]},
3080            
3081             Parse::RecDescent::_tracefirst($text),
3082             q{string_argument},
3083             $tracelevel)
3084             if defined $::RD_TRACE;
3085 3         9 $item{q{_alternation_1_of_production_1_of_rule_string_argument}} = $_tok;
3086 3         7 push @item, $_tok;
3087            
3088             }
3089              
3090 3 50       9 Parse::RecDescent::_trace(q{Trying action},
3091             Parse::RecDescent::_tracefirst($text),
3092             q{string_argument},
3093             $tracelevel)
3094             if defined $::RD_TRACE;
3095            
3096              
3097 3 50       8 $_tok = ($_noactions) ? 0 : do {
3098 3         20 Code::Perl::Expr::string($item[1])
3099             };
3100 3 50       86 unless (defined $_tok)
3101             {
3102 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3103             if defined $::RD_TRACE;
3104 0         0 last;
3105             }
3106 3 50       8 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3107             . $_tok . q{])},
3108             Parse::RecDescent::_tracefirst($text))
3109             if defined $::RD_TRACE;
3110 3         5 push @item, $_tok;
3111 3         6 $item{__ACTION1__}=$_tok;
3112            
3113              
3114              
3115 3 50       10 Parse::RecDescent::_trace(q{>>Matched production: [mm_string, or qq_string, or q_string]<<},
3116             Parse::RecDescent::_tracefirst($text),
3117             q{string_argument},
3118             $tracelevel)
3119             if defined $::RD_TRACE;
3120 3         4 $_matched = 1;
3121 3         7 last;
3122             }
3123              
3124              
3125 6 50 66     36 unless ( $_matched || defined($return) || defined($score) )
      66        
3126             {
3127            
3128              
3129 3         5 $_[1] = $text; # NOT SURE THIS IS NEEDED
3130 3 50       8 Parse::RecDescent::_trace(q{<>},
3131             Parse::RecDescent::_tracefirst($_[1]),
3132             q{string_argument},
3133             $tracelevel)
3134             if defined $::RD_TRACE;
3135 3         19 return undef;
3136             }
3137 3 50 33     17 if (!defined($return) && defined($score))
3138             {
3139 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3140             q{string_argument},
3141             $tracelevel)
3142             if defined $::RD_TRACE;
3143 0         0 $return = $score_return;
3144             }
3145 3         6 splice @{$thisparser->{errors}}, $err_at;
  3         16  
3146 3 50       8 $return = $item[$#item] unless defined $return;
3147 3 50       9 if (defined $::RD_TRACE)
3148             {
3149 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3150             $return . q{])}, "",
3151             q{string_argument},
3152             $tracelevel);
3153 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3154             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3155             Parse::RecDescent::_tracefirst($text),
3156             , q{string_argument},
3157             $tracelevel)
3158             }
3159 3         6 $_[1] = $text;
3160 3         27 return $return;
3161             }
3162              
3163             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3164             sub Parse::RecDescent::Petal::CodePerl::Parser::arg_method
3165             {
3166 41     41   76 my $thisparser = $_[0];
3167 1     1   6 use vars q{$tracelevel};
  1         1  
  1         377  
3168 41   50     127 local $tracelevel = ($tracelevel||0)+1;
3169 41         51 $ERRORS = 0;
3170 41         93 my $thisrule = $thisparser->{"rules"}{"arg_method"};
3171            
3172 41 50       95 Parse::RecDescent::_trace(q{Trying rule: [arg_method]},
3173             Parse::RecDescent::_tracefirst($_[1]),
3174             q{arg_method},
3175             $tracelevel)
3176             if defined $::RD_TRACE;
3177              
3178            
3179 41         46 my $err_at = @{$thisparser->{errors}};
  41         82  
3180              
3181 41         76 my $score;
3182             my $score_return;
3183 0         0 my $_tok;
3184 41         48 my $return = undef;
3185 41         59 my $_matched=0;
3186 41         44 my $commit=0;
3187 41         68 my @item = ();
3188 41         85 my %item = ();
3189 41   33     125 my $repeating = defined($_[2]) && $_[2];
3190 41   33     135 my $_noactions = defined($_[3]) && $_[3];
3191 41 50       99 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  41         60  
  41         87  
3192 41 50       268 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3193 41         51 my $text;
3194 41         56 my $lastsep="";
3195 41         121 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3196 41         1359 $expectation->at($_[1]);
3197            
3198 41         161 my $thisline;
3199 41         172 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3200              
3201            
3202              
3203 41   33     395 while (!$_matched && !$commit)
3204             {
3205            
3206 41 50       87 Parse::RecDescent::_trace(q{Trying production: [separator url_segment /\\s+/ ]},
3207             Parse::RecDescent::_tracefirst($_[1]),
3208             q{arg_method},
3209             $tracelevel)
3210             if defined $::RD_TRACE;
3211 41         88 my $thisprod = $thisrule->{"prods"}[0];
3212 41         56 $text = $_[1];
3213 41         50 my $_savetext;
3214 41         93 @item = (q{arg_method});
3215 41         93 %item = (__RULE__ => q{arg_method});
3216 41         40 my $repcount = 0;
3217              
3218              
3219 41 50       85 Parse::RecDescent::_trace(q{Trying subrule: [separator]},
3220             Parse::RecDescent::_tracefirst($text),
3221             q{arg_method},
3222             $tracelevel)
3223             if defined $::RD_TRACE;
3224 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         207  
  41         77  
3225 41         118 $expectation->is(q{})->at($text);
3226 41 100   41   375 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::separator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  41         80  
3227             {
3228            
3229 29 50       65 Parse::RecDescent::_trace(q{<>},
3230             Parse::RecDescent::_tracefirst($text),
3231             q{arg_method},
3232             $tracelevel)
3233             if defined $::RD_TRACE;
3234 29         120 $expectation->failed();
3235 29         112 last;
3236             }
3237 12 50       52 Parse::RecDescent::_trace(q{>>Matched subrule: [separator]<< (return value: [}
3238             . $_tok . q{]},
3239            
3240             Parse::RecDescent::_tracefirst($text),
3241             q{arg_method},
3242             $tracelevel)
3243             if defined $::RD_TRACE;
3244 12         27 $item{q{separator}} = $_tok;
3245 12         18 push @item, $_tok;
3246            
3247             }
3248              
3249 12 50       26 Parse::RecDescent::_trace(q{Trying subrule: [url_segment]},
3250             Parse::RecDescent::_tracefirst($text),
3251             q{arg_method},
3252             $tracelevel)
3253             if defined $::RD_TRACE;
3254 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         674  
  12         17  
3255 12         50 $expectation->is(q{url_segment})->at($text);
3256 12 50   12   132 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::url_segment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         31  
3257             {
3258            
3259 0 0       0 Parse::RecDescent::_trace(q{<>},
3260             Parse::RecDescent::_tracefirst($text),
3261             q{arg_method},
3262             $tracelevel)
3263             if defined $::RD_TRACE;
3264 0         0 $expectation->failed();
3265 0         0 last;
3266             }
3267 12 50       69 Parse::RecDescent::_trace(q{>>Matched subrule: [url_segment]<< (return value: [}
3268             . $_tok . q{]},
3269            
3270             Parse::RecDescent::_tracefirst($text),
3271             q{arg_method},
3272             $tracelevel)
3273             if defined $::RD_TRACE;
3274 12         28 $item{q{url_segment}} = $_tok;
3275 12         25 push @item, $_tok;
3276            
3277             }
3278              
3279 12 50       23 Parse::RecDescent::_trace(q{Trying terminal: [/\\s+/]}, Parse::RecDescent::_tracefirst($text),
3280             q{arg_method},
3281             $tracelevel)
3282             if defined $::RD_TRACE;
3283 12         23 $lastsep = "";
3284 12         45 $expectation->is(q{/\\s+/})->at($text);
3285            
3286              
3287 12 50 66     150 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\s+)//)
  12 100       122  
3288             {
3289            
3290 7         27 $expectation->failed();
3291 7 50       78 Parse::RecDescent::_trace(q{<>},
3292             Parse::RecDescent::_tracefirst($text))
3293             if defined $::RD_TRACE;
3294              
3295 7         14 last;
3296             }
3297 5 50       21 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3298             . $& . q{])},
3299             Parse::RecDescent::_tracefirst($text))
3300             if defined $::RD_TRACE;
3301 5         18 push @item, $item{__PATTERN1__}=$&;
3302            
3303              
3304 5 50       15 Parse::RecDescent::_trace(q{Trying operator: []},
3305             Parse::RecDescent::_tracefirst($text),
3306             q{arg_method},
3307             $tracelevel)
3308             if defined $::RD_TRACE;
3309 5         21 $expectation->is(q{})->at($text);
3310              
3311 5         39 $_tok = undef;
3312 5         7 OPLOOP: while (1)
3313             {
3314 5         10 $repcount = 0;
3315 5         9 my @item;
3316            
3317             # MATCH LEFTARG
3318            
3319 5 50       18 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
3320             Parse::RecDescent::_tracefirst($text),
3321             q{arg_method},
3322             $tracelevel)
3323             if defined $::RD_TRACE;
3324 1     1   8 if (1) { no strict qw{refs};
  1         13  
  1         424  
  5         7  
3325 5         19 $expectation->is(q{argument})->at($text);
3326 5 50   5   62 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  5         15  
3327             {
3328            
3329 0 0       0 Parse::RecDescent::_trace(q{<>},
3330             Parse::RecDescent::_tracefirst($text),
3331             q{arg_method},
3332             $tracelevel)
3333             if defined $::RD_TRACE;
3334 0         0 $expectation->failed();
3335 0         0 last;
3336             }
3337 5 50       23 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
3338             . $_tok . q{]},
3339            
3340             Parse::RecDescent::_tracefirst($text),
3341             q{arg_method},
3342             $tracelevel)
3343             if defined $::RD_TRACE;
3344 5         11 $item{q{argument}} = $_tok;
3345 5         14 push @item, $_tok;
3346            
3347             }
3348              
3349              
3350 5         8 $repcount++;
3351              
3352 5         7 my $savetext = $text;
3353 5         6 my $backtrack;
3354              
3355             # MATCH (OP RIGHTARG)(s)
3356 5         12 while ($repcount < 100000000)
3357             {
3358 6         8 $backtrack = 0;
3359            
3360 6 50       20 Parse::RecDescent::_trace(q{Trying terminal: [/\\s+/]}, Parse::RecDescent::_tracefirst($text),
3361             q{arg_method},
3362             $tracelevel)
3363             if defined $::RD_TRACE;
3364 6         9 $lastsep = "";
3365 6         20 $expectation->is(q{/\\s+/})->at($text);
3366            
3367              
3368 6 50 66     70 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\s+)//)
  6 100       56  
3369             {
3370            
3371 5         26 $expectation->failed();
3372 5 50       47 Parse::RecDescent::_trace(q{<>},
3373             Parse::RecDescent::_tracefirst($text))
3374             if defined $::RD_TRACE;
3375              
3376 5         10 last;
3377             }
3378 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3379             . $& . q{])},
3380             Parse::RecDescent::_tracefirst($text))
3381             if defined $::RD_TRACE;
3382 1         4 push @item, $item{__PATTERN2__}=$&;
3383            
3384              
3385 1         2 pop @item;
3386 1 50       3 if (defined $1) {push @item, $item{'argument(s)'}=$1; $backtrack=1;}
  0         0  
  0         0  
3387            
3388 1 50       4 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
3389             Parse::RecDescent::_tracefirst($text),
3390             q{arg_method},
3391             $tracelevel)
3392             if defined $::RD_TRACE;
3393 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         827  
  1         1  
3394 1         4 $expectation->is(q{argument})->at($text);
3395 1 50   1   11 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  1         2  
3396             {
3397            
3398 0 0       0 Parse::RecDescent::_trace(q{<>},
3399             Parse::RecDescent::_tracefirst($text),
3400             q{arg_method},
3401             $tracelevel)
3402             if defined $::RD_TRACE;
3403 0         0 $expectation->failed();
3404 0         0 last;
3405             }
3406 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
3407             . $_tok . q{]},
3408            
3409             Parse::RecDescent::_tracefirst($text),
3410             q{arg_method},
3411             $tracelevel)
3412             if defined $::RD_TRACE;
3413 1         3 $item{q{argument}} = $_tok;
3414 1         2 push @item, $_tok;
3415            
3416             }
3417              
3418 1         2 $savetext = $text;
3419 1         4 $repcount++;
3420             }
3421 5         8 $text = $savetext;
3422 5 50       13 pop @item if $backtrack;
3423              
3424 5 50       15 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
3425 5         13 $_tok = [ @item ];
3426 5         10 last;
3427             }
3428              
3429 5 50       16 unless ($repcount>=1)
3430             {
3431 0 0       0 Parse::RecDescent::_trace(q{<]>>},
3432             Parse::RecDescent::_tracefirst($text),
3433             q{arg_method},
3434             $tracelevel)
3435             if defined $::RD_TRACE;
3436 0         0 $expectation->failed();
3437 0         0 last;
3438             }
3439 5 50       11 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
3440 0 0       0 . qq{@{$_tok||[]}} . q{]},
3441             Parse::RecDescent::_tracefirst($text),
3442             q{arg_method},
3443             $tracelevel)
3444             if defined $::RD_TRACE;
3445              
3446 5   50     21 push @item, $item{'argument(s)'}=$_tok||[];
3447              
3448              
3449 5 50       11 Parse::RecDescent::_trace(q{Trying action},
3450             Parse::RecDescent::_tracefirst($text),
3451             q{arg_method},
3452             $tracelevel)
3453             if defined $::RD_TRACE;
3454            
3455              
3456 5 50       14 $_tok = ($_noactions) ? 0 : do {
3457 5         9 ['method', $item{url_segment}, @{$item[4]}]
  5         26  
3458             };
3459 5 50       16 unless (defined $_tok)
3460             {
3461 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3462             if defined $::RD_TRACE;
3463 0         0 last;
3464             }
3465 5 50       9 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3466             . $_tok . q{])},
3467             Parse::RecDescent::_tracefirst($text))
3468             if defined $::RD_TRACE;
3469 5         10 push @item, $_tok;
3470 5         10 $item{__ACTION1__}=$_tok;
3471            
3472              
3473              
3474 5 50       21 Parse::RecDescent::_trace(q{>>Matched production: [separator url_segment /\\s+/ ]<<},
3475             Parse::RecDescent::_tracefirst($text),
3476             q{arg_method},
3477             $tracelevel)
3478             if defined $::RD_TRACE;
3479 5         7 $_matched = 1;
3480 5         11 last;
3481             }
3482              
3483              
3484 41 50 66     299 unless ( $_matched || defined($return) || defined($score) )
      66        
3485             {
3486            
3487              
3488 36         52 $_[1] = $text; # NOT SURE THIS IS NEEDED
3489 36 50       78 Parse::RecDescent::_trace(q{<>},
3490             Parse::RecDescent::_tracefirst($_[1]),
3491             q{arg_method},
3492             $tracelevel)
3493             if defined $::RD_TRACE;
3494 36         271 return undef;
3495             }
3496 5 50 33     39 if (!defined($return) && defined($score))
3497             {
3498 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3499             q{arg_method},
3500             $tracelevel)
3501             if defined $::RD_TRACE;
3502 0         0 $return = $score_return;
3503             }
3504 5         7 splice @{$thisparser->{errors}}, $err_at;
  5         13  
3505 5 50       13 $return = $item[$#item] unless defined $return;
3506 5 50       15 if (defined $::RD_TRACE)
3507             {
3508 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3509             $return . q{])}, "",
3510             q{arg_method},
3511             $tracelevel);
3512 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3513             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3514             Parse::RecDescent::_tracefirst($text),
3515             , q{arg_method},
3516             $tracelevel)
3517             }
3518 5         12 $_[1] = $text;
3519 5         49 return $return;
3520             }
3521              
3522             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3523             sub Parse::RecDescent::Petal::CodePerl::Parser::non_dollar
3524             {
3525 41     41   54 my $thisparser = $_[0];
3526 1     1   7 use vars q{$tracelevel};
  1         2  
  1         887  
3527 41   50     113 local $tracelevel = ($tracelevel||0)+1;
3528 41         47 $ERRORS = 0;
3529 41         109 my $thisrule = $thisparser->{"rules"}{"non_dollar"};
3530            
3531 41 50       82 Parse::RecDescent::_trace(q{Trying rule: [non_dollar]},
3532             Parse::RecDescent::_tracefirst($_[1]),
3533             q{non_dollar},
3534             $tracelevel)
3535             if defined $::RD_TRACE;
3536              
3537            
3538 41         47 my $err_at = @{$thisparser->{errors}};
  41         65  
3539              
3540 41         89 my $score;
3541             my $score_return;
3542 0         0 my $_tok;
3543 41         52 my $return = undef;
3544 41         42 my $_matched=0;
3545 41         40 my $commit=0;
3546 41         59 my @item = ();
3547 41         63 my %item = ();
3548 41   33     115 my $repeating = defined($_[2]) && $_[2];
3549 41   33     99 my $_noactions = defined($_[3]) && $_[3];
3550 41 50       109 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  41         42  
  41         70  
3551 41 50       113 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3552 41         55 my $text;
3553 41         52 my $lastsep="";
3554 41         136 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3555 41         1265 $expectation->at($_[1]);
3556            
3557 41         146 my $thisline;
3558 41         156 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3559              
3560            
3561              
3562 41   33     361 while (!$_matched && !$commit)
3563             {
3564            
3565 41 50       88 Parse::RecDescent::_trace(q{Trying production: [/[^\\$]+/]},
3566             Parse::RecDescent::_tracefirst($_[1]),
3567             q{non_dollar},
3568             $tracelevel)
3569             if defined $::RD_TRACE;
3570 41         76 my $thisprod = $thisrule->{"prods"}[0];
3571 41         65 $text = $_[1];
3572 41         37 my $_savetext;
3573 41         71 @item = (q{non_dollar});
3574 41         77 %item = (__RULE__ => q{non_dollar});
3575 41         50 my $repcount = 0;
3576              
3577              
3578 41 50       91 Parse::RecDescent::_trace(q{Trying terminal: [/[^\\$]+/]}, Parse::RecDescent::_tracefirst($text),
3579             q{non_dollar},
3580             $tracelevel)
3581             if defined $::RD_TRACE;
3582 41         49 $lastsep = "";
3583 41         125 $expectation->is(q{})->at($text);
3584            
3585              
3586 41 50 66     434 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^\$]+)//)
  41 100       386  
3587             {
3588            
3589 27         78 $expectation->failed();
3590 27 50       123 Parse::RecDescent::_trace(q{<>},
3591             Parse::RecDescent::_tracefirst($text))
3592             if defined $::RD_TRACE;
3593              
3594 27         54 last;
3595             }
3596 14 50       43 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3597             . $& . q{])},
3598             Parse::RecDescent::_tracefirst($text))
3599             if defined $::RD_TRACE;
3600 14         53 push @item, $item{__PATTERN1__}=$&;
3601            
3602              
3603              
3604 14 50       26 Parse::RecDescent::_trace(q{>>Matched production: [/[^\\$]+/]<<},
3605             Parse::RecDescent::_tracefirst($text),
3606             q{non_dollar},
3607             $tracelevel)
3608             if defined $::RD_TRACE;
3609 14         21 $_matched = 1;
3610 14         30 last;
3611             }
3612              
3613              
3614 41 50 66     390 unless ( $_matched || defined($return) || defined($score) )
      66        
3615             {
3616            
3617              
3618 27         45 $_[1] = $text; # NOT SURE THIS IS NEEDED
3619 27 50       53 Parse::RecDescent::_trace(q{<>},
3620             Parse::RecDescent::_tracefirst($_[1]),
3621             q{non_dollar},
3622             $tracelevel)
3623             if defined $::RD_TRACE;
3624 27         183 return undef;
3625             }
3626 14 50 33     96 if (!defined($return) && defined($score))
3627             {
3628 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3629             q{non_dollar},
3630             $tracelevel)
3631             if defined $::RD_TRACE;
3632 0         0 $return = $score_return;
3633             }
3634 14         18 splice @{$thisparser->{errors}}, $err_at;
  14         34  
3635 14 50       44 $return = $item[$#item] unless defined $return;
3636 14 50       38 if (defined $::RD_TRACE)
3637             {
3638 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3639             $return . q{])}, "",
3640             q{non_dollar},
3641             $tracelevel);
3642 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3643             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3644             Parse::RecDescent::_tracefirst($text),
3645             , q{non_dollar},
3646             $tracelevel)
3647             }
3648 14         24 $_[1] = $text;
3649 14         304 return $return;
3650             }
3651              
3652             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3653             sub Parse::RecDescent::Petal::CodePerl::Parser::q_string
3654             {
3655 4     4   11 my $thisparser = $_[0];
3656 1     1   5 use vars q{$tracelevel};
  1         2  
  1         1356  
3657 4   50     13 local $tracelevel = ($tracelevel||0)+1;
3658 4         6 $ERRORS = 0;
3659 4         11 my $thisrule = $thisparser->{"rules"}{"q_string"};
3660            
3661 4 50       10 Parse::RecDescent::_trace(q{Trying rule: [q_string]},
3662             Parse::RecDescent::_tracefirst($_[1]),
3663             q{q_string},
3664             $tracelevel)
3665             if defined $::RD_TRACE;
3666              
3667            
3668 4         7 my $err_at = @{$thisparser->{errors}};
  4         7  
3669              
3670 4         7 my $score;
3671             my $score_return;
3672 0         0 my $_tok;
3673 4         6 my $return = undef;
3674 4         3 my $_matched=0;
3675 4         5 my $commit=0;
3676 4         8 my @item = ();
3677 4         7 my %item = ();
3678 4   33     16 my $repeating = defined($_[2]) && $_[2];
3679 4   33     14 my $_noactions = defined($_[3]) && $_[3];
3680 4 50       13 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  4         3  
  4         9  
3681 4 50       13 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3682 4         17 my $text;
3683 4         6 my $lastsep="";
3684 4         15 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3685 4         127 $expectation->at($_[1]);
3686            
3687 4         15 my $thisline;
3688 4         17 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3689              
3690            
3691              
3692 4   33     39 while (!$_matched && !$commit)
3693             {
3694            
3695 4 50       11 Parse::RecDescent::_trace(q{Trying production: [''' /[^']*/ ''']},
3696             Parse::RecDescent::_tracefirst($_[1]),
3697             q{q_string},
3698             $tracelevel)
3699             if defined $::RD_TRACE;
3700 4         8 my $thisprod = $thisrule->{"prods"}[0];
3701 4         8 $text = $_[1];
3702 4         5 my $_savetext;
3703 4         9 @item = (q{q_string});
3704 4         11 %item = (__RULE__ => q{q_string});
3705 4         5 my $repcount = 0;
3706              
3707              
3708 4 50       11 Parse::RecDescent::_trace(q{Trying terminal: [''']},
3709             Parse::RecDescent::_tracefirst($text),
3710             q{q_string},
3711             $tracelevel)
3712             if defined $::RD_TRACE;
3713 4         36 $lastsep = "";
3714 4         13 $expectation->is(q{})->at($text);
3715            
3716              
3717 4 50 33     81 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  4 100 66     29  
  4   66     7  
  4         34  
3718             substr($text,0,length($_tok)) eq $_tok and
3719 1         5 do { substr($text,0,length($_tok)) = ""; 1; }
  1         5  
3720             )
3721             {
3722            
3723 3         11 $expectation->failed();
3724 3 50       19 Parse::RecDescent::_trace(q{<>},
3725             Parse::RecDescent::_tracefirst($text))
3726             if defined $::RD_TRACE;
3727 3         6 last;
3728             }
3729 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3730             . $_tok . q{])},
3731             Parse::RecDescent::_tracefirst($text))
3732             if defined $::RD_TRACE;
3733 1         4 push @item, $item{__STRING1__}=$_tok;
3734            
3735              
3736 1 50       12 Parse::RecDescent::_trace(q{Trying terminal: [/[^']*/]}, Parse::RecDescent::_tracefirst($text),
3737             q{q_string},
3738             $tracelevel)
3739             if defined $::RD_TRACE;
3740 1         2 $lastsep = "";
3741 1         5 $expectation->is(q{/[^']*/})->at($text);
3742            
3743              
3744 1 50 33     17 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^']*)//)
  1 50       16  
3745             {
3746            
3747 0         0 $expectation->failed();
3748 0 0       0 Parse::RecDescent::_trace(q{<>},
3749             Parse::RecDescent::_tracefirst($text))
3750             if defined $::RD_TRACE;
3751              
3752 0         0 last;
3753             }
3754 1 50       6 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3755             . $& . q{])},
3756             Parse::RecDescent::_tracefirst($text))
3757             if defined $::RD_TRACE;
3758 1         4 push @item, $item{__PATTERN1__}=$&;
3759            
3760              
3761 1 50       22 Parse::RecDescent::_trace(q{Trying terminal: [''']},
3762             Parse::RecDescent::_tracefirst($text),
3763             q{q_string},
3764             $tracelevel)
3765             if defined $::RD_TRACE;
3766 1         3 $lastsep = "";
3767 1         5 $expectation->is(q{'''})->at($text);
3768            
3769              
3770 1 50 33     16 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  1 50 33     18  
  1   33     2  
  1         11  
3771             substr($text,0,length($_tok)) eq $_tok and
3772 1         2 do { substr($text,0,length($_tok)) = ""; 1; }
  1         5  
3773             )
3774             {
3775            
3776 0         0 $expectation->failed();
3777 0 0       0 Parse::RecDescent::_trace(q{<>},
3778             Parse::RecDescent::_tracefirst($text))
3779             if defined $::RD_TRACE;
3780 0         0 last;
3781             }
3782 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3783             . $_tok . q{])},
3784             Parse::RecDescent::_tracefirst($text))
3785             if defined $::RD_TRACE;
3786 1         2 push @item, $item{__STRING2__}=$_tok;
3787            
3788              
3789 1 50       4 Parse::RecDescent::_trace(q{Trying action},
3790             Parse::RecDescent::_tracefirst($text),
3791             q{q_string},
3792             $tracelevel)
3793             if defined $::RD_TRACE;
3794            
3795              
3796 1 50       5 $_tok = ($_noactions) ? 0 : do { $item[2] };
  1         23  
3797 1 50       6 unless (defined $_tok)
3798             {
3799 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3800             if defined $::RD_TRACE;
3801 0         0 last;
3802             }
3803 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3804             . $_tok . q{])},
3805             Parse::RecDescent::_tracefirst($text))
3806             if defined $::RD_TRACE;
3807 1         3 push @item, $_tok;
3808 1         3 $item{__ACTION1__}=$_tok;
3809            
3810              
3811              
3812 1 50       5 Parse::RecDescent::_trace(q{>>Matched production: [''' /[^']*/ ''']<<},
3813             Parse::RecDescent::_tracefirst($text),
3814             q{q_string},
3815             $tracelevel)
3816             if defined $::RD_TRACE;
3817 1         2 $_matched = 1;
3818 1         3 last;
3819             }
3820              
3821              
3822 4 50 66     31 unless ( $_matched || defined($return) || defined($score) )
      66        
3823             {
3824            
3825              
3826 3         9 $_[1] = $text; # NOT SURE THIS IS NEEDED
3827 3 50       9 Parse::RecDescent::_trace(q{<>},
3828             Parse::RecDescent::_tracefirst($_[1]),
3829             q{q_string},
3830             $tracelevel)
3831             if defined $::RD_TRACE;
3832 3         23 return undef;
3833             }
3834 1 50 33     8 if (!defined($return) && defined($score))
3835             {
3836 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3837             q{q_string},
3838             $tracelevel)
3839             if defined $::RD_TRACE;
3840 0         0 $return = $score_return;
3841             }
3842 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         3  
3843 1 50       5 $return = $item[$#item] unless defined $return;
3844 1 50       5 if (defined $::RD_TRACE)
3845             {
3846 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3847             $return . q{])}, "",
3848             q{q_string},
3849             $tracelevel);
3850 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3851             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3852             Parse::RecDescent::_tracefirst($text),
3853             , q{q_string},
3854             $tracelevel)
3855             }
3856 1         3 $_[1] = $text;
3857 1         21 return $return;
3858             }
3859              
3860             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3861             sub Parse::RecDescent::Petal::CodePerl::Parser::plain_string
3862             {
3863 27     27   45 my $thisparser = $_[0];
3864 1     1   6 use vars q{$tracelevel};
  1         2  
  1         886  
3865 27   50     80 local $tracelevel = ($tracelevel||0)+1;
3866 27         37 $ERRORS = 0;
3867 27         61 my $thisrule = $thisparser->{"rules"}{"plain_string"};
3868            
3869 27 50       66 Parse::RecDescent::_trace(q{Trying rule: [plain_string]},
3870             Parse::RecDescent::_tracefirst($_[1]),
3871             q{plain_string},
3872             $tracelevel)
3873             if defined $::RD_TRACE;
3874              
3875            
3876 27         35 my $err_at = @{$thisparser->{errors}};
  27         46  
3877              
3878 27         70 my $score;
3879             my $score_return;
3880 0         0 my $_tok;
3881 27         39 my $return = undef;
3882 27         27 my $_matched=0;
3883 27         32 my $commit=0;
3884 27         44 my @item = ();
3885 27         40 my %item = ();
3886 27   33     84 my $repeating = defined($_[2]) && $_[2];
3887 27   33     72 my $_noactions = defined($_[3]) && $_[3];
3888 27 50       63 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  27         30  
  27         53  
3889 27 50       78 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3890 27         52 my $text;
3891 27         30 my $lastsep="";
3892 27         82 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3893 27         916 $expectation->at($_[1]);
3894            
3895 27         102 my $thisline;
3896 27         101 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3897              
3898            
3899              
3900 27   33     241 while (!$_matched && !$commit)
3901             {
3902            
3903 27 50       63 Parse::RecDescent::_trace(q{Trying production: [dollar, or non_dollar]},
3904             Parse::RecDescent::_tracefirst($_[1]),
3905             q{plain_string},
3906             $tracelevel)
3907             if defined $::RD_TRACE;
3908 27         52 my $thisprod = $thisrule->{"prods"}[0];
3909 27         38 $text = $_[1];
3910 27         35 my $_savetext;
3911 27         52 @item = (q{plain_string});
3912 27         52 %item = (__RULE__ => q{plain_string});
3913 27         37 my $repcount = 0;
3914              
3915              
3916 27 50       54 Parse::RecDescent::_trace(q{Trying repeated subrule: [dollar, or non_dollar]},
3917             Parse::RecDescent::_tracefirst($text),
3918             q{plain_string},
3919             $tracelevel)
3920             if defined $::RD_TRACE;
3921 27         83 $expectation->is(q{})->at($text);
3922            
3923 27 100       228 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Petal::CodePerl::Parser::_alternation_1_of_production_1_of_rule_plain_string, 1, 100000000, $_noactions,$expectation,undef)))
3924             {
3925 14 50       170 Parse::RecDescent::_trace(q{<>},
3926             Parse::RecDescent::_tracefirst($text),
3927             q{plain_string},
3928             $tracelevel)
3929             if defined $::RD_TRACE;
3930 14         23 last;
3931             }
3932 13 50       163 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_plain_string]<< (}
3933             . @$_tok . q{ times)},
3934            
3935             Parse::RecDescent::_tracefirst($text),
3936             q{plain_string},
3937             $tracelevel)
3938             if defined $::RD_TRACE;
3939 13         33 $item{q{_alternation_1_of_production_1_of_rule_plain_string(s)}} = $_tok;
3940 13         17 push @item, $_tok;
3941            
3942              
3943              
3944 13 50       32 Parse::RecDescent::_trace(q{Trying action},
3945             Parse::RecDescent::_tracefirst($text),
3946             q{plain_string},
3947             $tracelevel)
3948             if defined $::RD_TRACE;
3949            
3950              
3951 13 50       37 $_tok = ($_noactions) ? 0 : do {
3952 13         19 Code::Perl::Expr::string( join("", @{$item[1]}) )
  13         73  
3953             };
3954 13 50       271 unless (defined $_tok)
3955             {
3956 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3957             if defined $::RD_TRACE;
3958 0         0 last;
3959             }
3960 13 50       28 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3961             . $_tok . q{])},
3962             Parse::RecDescent::_tracefirst($text))
3963             if defined $::RD_TRACE;
3964 13         20 push @item, $_tok;
3965 13         32 $item{__ACTION1__}=$_tok;
3966            
3967              
3968              
3969 13 50       58 Parse::RecDescent::_trace(q{>>Matched production: [dollar, or non_dollar]<<},
3970             Parse::RecDescent::_tracefirst($text),
3971             q{plain_string},
3972             $tracelevel)
3973             if defined $::RD_TRACE;
3974 13         23 $_matched = 1;
3975 13         26 last;
3976             }
3977              
3978              
3979 27 50 66     151 unless ( $_matched || defined($return) || defined($score) )
      66        
3980             {
3981            
3982              
3983 14         20 $_[1] = $text; # NOT SURE THIS IS NEEDED
3984 14 50       40 Parse::RecDescent::_trace(q{<>},
3985             Parse::RecDescent::_tracefirst($_[1]),
3986             q{plain_string},
3987             $tracelevel)
3988             if defined $::RD_TRACE;
3989 14         89 return undef;
3990             }
3991 13 50 33     61 if (!defined($return) && defined($score))
3992             {
3993 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3994             q{plain_string},
3995             $tracelevel)
3996             if defined $::RD_TRACE;
3997 0         0 $return = $score_return;
3998             }
3999 13         27 splice @{$thisparser->{errors}}, $err_at;
  13         29  
4000 13 50       42 $return = $item[$#item] unless defined $return;
4001 13 50       34 if (defined $::RD_TRACE)
4002             {
4003 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4004             $return . q{])}, "",
4005             q{plain_string},
4006             $tracelevel);
4007 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4008             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4009             Parse::RecDescent::_tracefirst($text),
4010             , q{plain_string},
4011             $tracelevel)
4012             }
4013 13         31 $_[1] = $text;
4014 13         168 return $return;
4015             }
4016              
4017             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4018             sub Parse::RecDescent::Petal::CodePerl::Parser::not_expr
4019             {
4020 11     11   23 my $thisparser = $_[0];
4021 1     1   6 use vars q{$tracelevel};
  1         1  
  1         630  
4022 11   50     34 local $tracelevel = ($tracelevel||0)+1;
4023 11         23 $ERRORS = 0;
4024 11         36 my $thisrule = $thisparser->{"rules"}{"not_expr"};
4025            
4026 11 50       29 Parse::RecDescent::_trace(q{Trying rule: [not_expr]},
4027             Parse::RecDescent::_tracefirst($_[1]),
4028             q{not_expr},
4029             $tracelevel)
4030             if defined $::RD_TRACE;
4031              
4032            
4033 11         9 my $err_at = @{$thisparser->{errors}};
  11         31  
4034              
4035 11         14 my $score;
4036             my $score_return;
4037 0         0 my $_tok;
4038 11         23 my $return = undef;
4039 11         14 my $_matched=0;
4040 11         13 my $commit=0;
4041 11         20 my @item = ();
4042 11         18 my %item = ();
4043 11   33     37 my $repeating = defined($_[2]) && $_[2];
4044 11   33     127 my $_noactions = defined($_[3]) && $_[3];
4045 11 50       23 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         20  
  11         25  
4046 11 50       32 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4047 11         12 my $text;
4048 11         25 my $lastsep="";
4049 11         36 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4050 11         316 $expectation->at($_[1]);
4051            
4052 11         43 my $thisline;
4053 11         45 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4054              
4055            
4056              
4057 11   33     171 while (!$_matched && !$commit)
4058             {
4059            
4060 11 50       35 Parse::RecDescent::_trace(q{Trying production: ['not:' expr]},
4061             Parse::RecDescent::_tracefirst($_[1]),
4062             q{not_expr},
4063             $tracelevel)
4064             if defined $::RD_TRACE;
4065 11         26 my $thisprod = $thisrule->{"prods"}[0];
4066 11         19 $text = $_[1];
4067 11         15 my $_savetext;
4068 11         24 @item = (q{not_expr});
4069 11         31 %item = (__RULE__ => q{not_expr});
4070 11         17 my $repcount = 0;
4071              
4072              
4073 11 50       23 Parse::RecDescent::_trace(q{Trying terminal: ['not:']},
4074             Parse::RecDescent::_tracefirst($text),
4075             q{not_expr},
4076             $tracelevel)
4077             if defined $::RD_TRACE;
4078 11         13 $lastsep = "";
4079 11         33 $expectation->is(q{})->at($text);
4080            
4081              
4082 11 50 33     121 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "not:"; 1 } and
  11 50 33     366  
  11   33     19  
  11         78  
4083             substr($text,0,length($_tok)) eq $_tok and
4084 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
4085             )
4086             {
4087            
4088 11         30 $expectation->failed();
4089 11 50       52 Parse::RecDescent::_trace(q{<>},
4090             Parse::RecDescent::_tracefirst($text))
4091             if defined $::RD_TRACE;
4092 11         23 last;
4093             }
4094 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4095             . $_tok . q{])},
4096             Parse::RecDescent::_tracefirst($text))
4097             if defined $::RD_TRACE;
4098 0         0 push @item, $item{__STRING1__}=$_tok;
4099            
4100              
4101            
4102              
4103 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
4104             Parse::RecDescent::_tracefirst($text),
4105             q{not_expr},
4106             $tracelevel)
4107             if defined $::RD_TRACE;
4108 0         0 $_tok = do { $commit = 1 };
  0         0  
4109 0 0       0 if (defined($_tok))
4110             {
4111 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4112             . $_tok . q{])},
4113             Parse::RecDescent::_tracefirst($text))
4114             if defined $::RD_TRACE;
4115             }
4116             else
4117             {
4118 0 0       0 Parse::RecDescent::_trace(q{<>},
4119             Parse::RecDescent::_tracefirst($text))
4120             if defined $::RD_TRACE;
4121             }
4122            
4123 0 0       0 last unless defined $_tok;
4124 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
4125            
4126              
4127 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [expr]},
4128             Parse::RecDescent::_tracefirst($text),
4129             q{not_expr},
4130             $tracelevel)
4131             if defined $::RD_TRACE;
4132 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         660  
  0         0  
4133 0         0 $expectation->is(q{expr})->at($text);
4134 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4135             {
4136            
4137 0 0       0 Parse::RecDescent::_trace(q{<>},
4138             Parse::RecDescent::_tracefirst($text),
4139             q{not_expr},
4140             $tracelevel)
4141             if defined $::RD_TRACE;
4142 0         0 $expectation->failed();
4143 0         0 last;
4144             }
4145 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [expr]<< (return value: [}
4146             . $_tok . q{]},
4147            
4148             Parse::RecDescent::_tracefirst($text),
4149             q{not_expr},
4150             $tracelevel)
4151             if defined $::RD_TRACE;
4152 0         0 $item{q{expr}} = $_tok;
4153 0         0 push @item, $_tok;
4154            
4155             }
4156              
4157 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4158             Parse::RecDescent::_tracefirst($text),
4159             q{not_expr},
4160             $tracelevel)
4161             if defined $::RD_TRACE;
4162            
4163              
4164 0 0       0 $_tok = ($_noactions) ? 0 : do {
4165 0         0 Code::Perl::Expr::not($item{expr})
4166             };
4167 0 0       0 unless (defined $_tok)
4168             {
4169 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4170             if defined $::RD_TRACE;
4171 0         0 last;
4172             }
4173 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4174             . $_tok . q{])},
4175             Parse::RecDescent::_tracefirst($text))
4176             if defined $::RD_TRACE;
4177 0         0 push @item, $_tok;
4178 0         0 $item{__ACTION1__}=$_tok;
4179            
4180              
4181              
4182 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['not:' expr]<<},
4183             Parse::RecDescent::_tracefirst($text),
4184             q{not_expr},
4185             $tracelevel)
4186             if defined $::RD_TRACE;
4187 0         0 $_matched = 1;
4188 0         0 last;
4189             }
4190              
4191              
4192 11 50 33     85 unless ( $_matched || defined($return) || defined($score) )
      33        
4193             {
4194            
4195              
4196 11         19 $_[1] = $text; # NOT SURE THIS IS NEEDED
4197 11 50       29 Parse::RecDescent::_trace(q{<>},
4198             Parse::RecDescent::_tracefirst($_[1]),
4199             q{not_expr},
4200             $tracelevel)
4201             if defined $::RD_TRACE;
4202 11         74 return undef;
4203             }
4204 0 0 0     0 if (!defined($return) && defined($score))
4205             {
4206 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4207             q{not_expr},
4208             $tracelevel)
4209             if defined $::RD_TRACE;
4210 0         0 $return = $score_return;
4211             }
4212 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4213 0 0       0 $return = $item[$#item] unless defined $return;
4214 0 0       0 if (defined $::RD_TRACE)
4215             {
4216 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4217             $return . q{])}, "",
4218             q{not_expr},
4219             $tracelevel);
4220 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4221             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4222             Parse::RecDescent::_tracefirst($text),
4223             , q{not_expr},
4224             $tracelevel)
4225             }
4226 0         0 $_[1] = $text;
4227 0         0 return $return;
4228             }
4229              
4230             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4231             sub Parse::RecDescent::Petal::CodePerl::Parser::array_deref
4232             {
4233 27     27   49 my $thisparser = $_[0];
4234 1     1   6 use vars q{$tracelevel};
  1         2  
  1         554  
4235 27   50     79 local $tracelevel = ($tracelevel||0)+1;
4236 27         46 $ERRORS = 0;
4237 27         62 my $thisrule = $thisparser->{"rules"}{"array_deref"};
4238            
4239 27 50       62 Parse::RecDescent::_trace(q{Trying rule: [array_deref]},
4240             Parse::RecDescent::_tracefirst($_[1]),
4241             q{array_deref},
4242             $tracelevel)
4243             if defined $::RD_TRACE;
4244              
4245            
4246 27         29 my $err_at = @{$thisparser->{errors}};
  27         53  
4247              
4248 27         42 my $score;
4249             my $score_return;
4250 0         0 my $_tok;
4251 27         35 my $return = undef;
4252 27         43 my $_matched=0;
4253 27         28 my $commit=0;
4254 27         62 my @item = ();
4255 27         46 my %item = ();
4256 27   33     86 my $repeating = defined($_[2]) && $_[2];
4257 27   33     83 my $_noactions = defined($_[3]) && $_[3];
4258 27 50       70 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  27         26  
  27         57  
4259 27 50       73 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4260 27         31 my $text;
4261 27         57 my $lastsep="";
4262 27         90 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4263 27         841 $expectation->at($_[1]);
4264            
4265 27         108 my $thisline;
4266 27         112 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4267              
4268            
4269              
4270 27   33     310 while (!$_matched && !$commit)
4271             {
4272            
4273 27 50       72 Parse::RecDescent::_trace(q{Trying production: ['[' integer ']']},
4274             Parse::RecDescent::_tracefirst($_[1]),
4275             q{array_deref},
4276             $tracelevel)
4277             if defined $::RD_TRACE;
4278 27         69 my $thisprod = $thisrule->{"prods"}[0];
4279 27         44 $text = $_[1];
4280 27         34 my $_savetext;
4281 27         48 @item = (q{array_deref});
4282 27         71 %item = (__RULE__ => q{array_deref});
4283 27         33 my $repcount = 0;
4284              
4285              
4286 27 50       57 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
4287             Parse::RecDescent::_tracefirst($text),
4288             q{array_deref},
4289             $tracelevel)
4290             if defined $::RD_TRACE;
4291 27         35 $lastsep = "";
4292 27         74 $expectation->is(q{})->at($text);
4293            
4294              
4295 27 50 66     305 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  27 100       237  
4296             {
4297            
4298 25         70 $expectation->failed();
4299 25 50       107 Parse::RecDescent::_trace(qq{<>},
4300             Parse::RecDescent::_tracefirst($text))
4301             if defined $::RD_TRACE;
4302 25         56 last;
4303             }
4304 2 50       9 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4305             . $& . q{])},
4306             Parse::RecDescent::_tracefirst($text))
4307             if defined $::RD_TRACE;
4308 2         8 push @item, $item{__STRING1__}=$&;
4309            
4310              
4311 2 50       5 Parse::RecDescent::_trace(q{Trying subrule: [integer]},
4312             Parse::RecDescent::_tracefirst($text),
4313             q{array_deref},
4314             $tracelevel)
4315             if defined $::RD_TRACE;
4316 1     1   8 if (1) { no strict qw{refs};
  1         1  
  1         849  
  2         4  
4317 2         7 $expectation->is(q{integer})->at($text);
4318 2 50   2   24 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::integer($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         6  
4319             {
4320            
4321 0 0       0 Parse::RecDescent::_trace(q{<>},
4322             Parse::RecDescent::_tracefirst($text),
4323             q{array_deref},
4324             $tracelevel)
4325             if defined $::RD_TRACE;
4326 0         0 $expectation->failed();
4327 0         0 last;
4328             }
4329 2 50       10 Parse::RecDescent::_trace(q{>>Matched subrule: [integer]<< (return value: [}
4330             . $_tok . q{]},
4331            
4332             Parse::RecDescent::_tracefirst($text),
4333             q{array_deref},
4334             $tracelevel)
4335             if defined $::RD_TRACE;
4336 2         6 $item{q{integer}} = $_tok;
4337 2         6 push @item, $_tok;
4338            
4339             }
4340              
4341 2 50       7 Parse::RecDescent::_trace(q{Trying terminal: [']']},
4342             Parse::RecDescent::_tracefirst($text),
4343             q{array_deref},
4344             $tracelevel)
4345             if defined $::RD_TRACE;
4346 2         3 $lastsep = "";
4347 2         7 $expectation->is(q{']'})->at($text);
4348            
4349              
4350 2 50 33     25 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  2 50       24  
4351             {
4352            
4353 0         0 $expectation->failed();
4354 0 0       0 Parse::RecDescent::_trace(qq{<>},
4355             Parse::RecDescent::_tracefirst($text))
4356             if defined $::RD_TRACE;
4357 0         0 last;
4358             }
4359 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4360             . $& . q{])},
4361             Parse::RecDescent::_tracefirst($text))
4362             if defined $::RD_TRACE;
4363 2         6 push @item, $item{__STRING2__}=$&;
4364            
4365              
4366 2 50       7 Parse::RecDescent::_trace(q{Trying action},
4367             Parse::RecDescent::_tracefirst($text),
4368             q{array_deref},
4369             $tracelevel)
4370             if defined $::RD_TRACE;
4371            
4372              
4373 2 50       9 $_tok = ($_noactions) ? 0 : do { ['array', $item{integer}] };
  2         7  
4374 2 50       7 unless (defined $_tok)
4375             {
4376 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4377             if defined $::RD_TRACE;
4378 0         0 last;
4379             }
4380 2 50       6 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4381             . $_tok . q{])},
4382             Parse::RecDescent::_tracefirst($text))
4383             if defined $::RD_TRACE;
4384 2         3 push @item, $_tok;
4385 2         6 $item{__ACTION1__}=$_tok;
4386            
4387              
4388              
4389 2 50       5 Parse::RecDescent::_trace(q{>>Matched production: ['[' integer ']']<<},
4390             Parse::RecDescent::_tracefirst($text),
4391             q{array_deref},
4392             $tracelevel)
4393             if defined $::RD_TRACE;
4394 2         4 $_matched = 1;
4395 2         5 last;
4396             }
4397              
4398              
4399 27 50 66     216 unless ( $_matched || defined($return) || defined($score) )
      66        
4400             {
4401            
4402              
4403 25         40 $_[1] = $text; # NOT SURE THIS IS NEEDED
4404 25 50       59 Parse::RecDescent::_trace(q{<>},
4405             Parse::RecDescent::_tracefirst($_[1]),
4406             q{array_deref},
4407             $tracelevel)
4408             if defined $::RD_TRACE;
4409 25         173 return undef;
4410             }
4411 2 50 33     11 if (!defined($return) && defined($score))
4412             {
4413 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4414             q{array_deref},
4415             $tracelevel)
4416             if defined $::RD_TRACE;
4417 0         0 $return = $score_return;
4418             }
4419 2         4 splice @{$thisparser->{errors}}, $err_at;
  2         5  
4420 2 50       9 $return = $item[$#item] unless defined $return;
4421 2 50       6 if (defined $::RD_TRACE)
4422             {
4423 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4424             $return . q{])}, "",
4425             q{array_deref},
4426             $tracelevel);
4427 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4428             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4429             Parse::RecDescent::_tracefirst($text),
4430             , q{array_deref},
4431             $tracelevel)
4432             }
4433 2         4 $_[1] = $text;
4434 2         18 return $return;
4435             }
4436              
4437             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4438             sub Parse::RecDescent::Petal::CodePerl::Parser::perl_expr
4439             {
4440 8     8   15 my $thisparser = $_[0];
4441 1     1   7 use vars q{$tracelevel};
  1         3  
  1         1198  
4442 8   50     22 local $tracelevel = ($tracelevel||0)+1;
4443 8         14 $ERRORS = 0;
4444 8         19 my $thisrule = $thisparser->{"rules"}{"perl_expr"};
4445            
4446 8 50       17 Parse::RecDescent::_trace(q{Trying rule: [perl_expr]},
4447             Parse::RecDescent::_tracefirst($_[1]),
4448             q{perl_expr},
4449             $tracelevel)
4450             if defined $::RD_TRACE;
4451              
4452            
4453 8         29 my $err_at = @{$thisparser->{errors}};
  8         15  
4454              
4455 8         13 my $score;
4456             my $score_return;
4457 0         0 my $_tok;
4458 8         14 my $return = undef;
4459 8         67 my $_matched=0;
4460 8         13 my $commit=0;
4461 8         12 my @item = ();
4462 8         14 my %item = ();
4463 8   33     28 my $repeating = defined($_[2]) && $_[2];
4464 8   33     26 my $_noactions = defined($_[3]) && $_[3];
4465 8 50       15 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  8         14  
  8         16  
4466 8 50       25 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4467 8         9 my $text;
4468 8         31 my $lastsep="";
4469 8         26 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4470 8         233 $expectation->at($_[1]);
4471            
4472 8         30 my $thisline;
4473 8         33 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4474              
4475            
4476              
4477 8   33     88 while (!$_matched && !$commit)
4478             {
4479 8 50       24 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
4480 8 50       21 Parse::RecDescent::_trace(q{Trying production: ['perl:' ]},
4481             Parse::RecDescent::_tracefirst($_[1]),
4482             q{perl_expr},
4483             $tracelevel)
4484             if defined $::RD_TRACE;
4485 8         16 my $thisprod = $thisrule->{"prods"}[0];
4486 8         12 $text = $_[1];
4487 8         9 my $_savetext;
4488 8         20 @item = (q{perl_expr});
4489 8         21 %item = (__RULE__ => q{perl_expr});
4490 8         11 my $repcount = 0;
4491              
4492              
4493 8 50       16 Parse::RecDescent::_trace(q{Trying terminal: ['perl:']},
4494             Parse::RecDescent::_tracefirst($text),
4495             q{perl_expr},
4496             $tracelevel)
4497             if defined $::RD_TRACE;
4498 8         13 $lastsep = "";
4499 8         23 $expectation->is(q{})->at($text);
4500            
4501              
4502 8 50 33     87 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "perl:"; 1 } and
  8 50 33     54  
  8   33     16  
  8         56  
4503             substr($text,0,length($_tok)) eq $_tok and
4504 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
4505             )
4506             {
4507            
4508 8         25 $expectation->failed();
4509 8 50       40 Parse::RecDescent::_trace(q{<>},
4510             Parse::RecDescent::_tracefirst($text))
4511             if defined $::RD_TRACE;
4512 8         16 last;
4513             }
4514 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4515             . $_tok . q{])},
4516             Parse::RecDescent::_tracefirst($text))
4517             if defined $::RD_TRACE;
4518 0         0 push @item, $item{__STRING1__}=$_tok;
4519            
4520              
4521            
4522              
4523 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
4524             Parse::RecDescent::_tracefirst($text),
4525             q{perl_expr},
4526             $tracelevel)
4527             if defined $::RD_TRACE;
4528 0         0 $_tok = do { $commit = 1 };
  0         0  
4529 0 0       0 if (defined($_tok))
4530             {
4531 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4532             . $_tok . q{])},
4533             Parse::RecDescent::_tracefirst($text))
4534             if defined $::RD_TRACE;
4535             }
4536             else
4537             {
4538 0 0       0 Parse::RecDescent::_trace(q{<>},
4539             Parse::RecDescent::_tracefirst($text))
4540             if defined $::RD_TRACE;
4541             }
4542            
4543 0 0       0 last unless defined $_tok;
4544 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
4545            
4546              
4547            
4548              
4549 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
4550             Parse::RecDescent::_tracefirst($text),
4551             q{perl_expr},
4552             $tracelevel)
4553             if defined $::RD_TRACE;
4554 0         0 $_tok = do { Text::Balanced::extract_codeblock($text,undef,$skip,'{}');
  0         0  
4555             };
4556 0 0       0 if (defined($_tok))
4557             {
4558 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4559             . $_tok . q{])},
4560             Parse::RecDescent::_tracefirst($text))
4561             if defined $::RD_TRACE;
4562             }
4563             else
4564             {
4565 0 0       0 Parse::RecDescent::_trace(q{<>},
4566             Parse::RecDescent::_tracefirst($text))
4567             if defined $::RD_TRACE;
4568             }
4569            
4570 0 0       0 last unless defined $_tok;
4571 0         0 push @item, $item{__DIRECTIVE2__}=$_tok;
4572            
4573              
4574 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4575             Parse::RecDescent::_tracefirst($text),
4576             q{perl_expr},
4577             $tracelevel)
4578             if defined $::RD_TRACE;
4579            
4580              
4581 0 0       0 $_tok = ($_noactions) ? 0 : do { Code::Perl::Expr::perl($item[2]) };
  0         0  
4582 0 0       0 unless (defined $_tok)
4583             {
4584 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4585             if defined $::RD_TRACE;
4586 0         0 last;
4587             }
4588 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4589             . $_tok . q{])},
4590             Parse::RecDescent::_tracefirst($text))
4591             if defined $::RD_TRACE;
4592 0         0 push @item, $_tok;
4593 0         0 $item{__ACTION1__}=$_tok;
4594            
4595              
4596              
4597 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['perl:' ]<<},
4598             Parse::RecDescent::_tracefirst($text),
4599             q{perl_expr},
4600             $tracelevel)
4601             if defined $::RD_TRACE;
4602 0         0 $_matched = 1;
4603 0         0 last;
4604             }
4605              
4606              
4607 8 50 33     72 unless ( $_matched || defined($return) || defined($score) )
      33        
4608             {
4609            
4610              
4611 8         16 $_[1] = $text; # NOT SURE THIS IS NEEDED
4612 8 50       16 Parse::RecDescent::_trace(q{<>},
4613             Parse::RecDescent::_tracefirst($_[1]),
4614             q{perl_expr},
4615             $tracelevel)
4616             if defined $::RD_TRACE;
4617 8         63 return undef;
4618             }
4619 0 0 0     0 if (!defined($return) && defined($score))
4620             {
4621 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4622             q{perl_expr},
4623             $tracelevel)
4624             if defined $::RD_TRACE;
4625 0         0 $return = $score_return;
4626             }
4627 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4628 0 0       0 $return = $item[$#item] unless defined $return;
4629 0 0       0 if (defined $::RD_TRACE)
4630             {
4631 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4632             $return . q{])}, "",
4633             q{perl_expr},
4634             $tracelevel);
4635 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4636             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4637             Parse::RecDescent::_tracefirst($text),
4638             , q{perl_expr},
4639             $tracelevel)
4640             }
4641 0         0 $_[1] = $text;
4642 0         0 return $return;
4643             }
4644              
4645             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4646             sub Parse::RecDescent::Petal::CodePerl::Parser::argument
4647             {
4648 6     6   12 my $thisparser = $_[0];
4649 1     1   7 use vars q{$tracelevel};
  1         2  
  1         359  
4650 6   50     24 local $tracelevel = ($tracelevel||0)+1;
4651 6         11 $ERRORS = 0;
4652 6         17 my $thisrule = $thisparser->{"rules"}{"argument"};
4653            
4654 6 50       18 Parse::RecDescent::_trace(q{Trying rule: [argument]},
4655             Parse::RecDescent::_tracefirst($_[1]),
4656             q{argument},
4657             $tracelevel)
4658             if defined $::RD_TRACE;
4659              
4660            
4661 6         8 my $err_at = @{$thisparser->{errors}};
  6         14  
4662              
4663 6         11 my $score;
4664             my $score_return;
4665 0         0 my $_tok;
4666 6         11 my $return = undef;
4667 6         9 my $_matched=0;
4668 6         7 my $commit=0;
4669 6         28 my @item = ();
4670 6         11 my %item = ();
4671 6   33     27 my $repeating = defined($_[2]) && $_[2];
4672 6   33     27 my $_noactions = defined($_[3]) && $_[3];
4673 6 50       21 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  6         8  
  6         13  
4674 6 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4675 6         8 my $text;
4676 6         11 my $lastsep="";
4677 6         19 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4678 6         275 $expectation->at($_[1]);
4679            
4680 6         26 my $thisline;
4681 6         31 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4682              
4683            
4684              
4685 6   33     64 while (!$_matched && !$commit)
4686             {
4687            
4688 6 50       15 Parse::RecDescent::_trace(q{Trying production: [string_argument]},
4689             Parse::RecDescent::_tracefirst($_[1]),
4690             q{argument},
4691             $tracelevel)
4692             if defined $::RD_TRACE;
4693 6         14 my $thisprod = $thisrule->{"prods"}[0];
4694 6         12 $text = $_[1];
4695 6         7 my $_savetext;
4696 6         16 @item = (q{argument});
4697 6         17 %item = (__RULE__ => q{argument});
4698 6         8 my $repcount = 0;
4699              
4700              
4701 6 50       18 Parse::RecDescent::_trace(q{Trying subrule: [string_argument]},
4702             Parse::RecDescent::_tracefirst($text),
4703             q{argument},
4704             $tracelevel)
4705             if defined $::RD_TRACE;
4706 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         278  
  6         8  
4707 6         18 $expectation->is(q{})->at($text);
4708 6 100   6   71 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::string_argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  6         17  
4709             {
4710            
4711 3 50       8 Parse::RecDescent::_trace(q{<>},
4712             Parse::RecDescent::_tracefirst($text),
4713             q{argument},
4714             $tracelevel)
4715             if defined $::RD_TRACE;
4716 3         8 $expectation->failed();
4717 3         11 last;
4718             }
4719 3 50       17 Parse::RecDescent::_trace(q{>>Matched subrule: [string_argument]<< (return value: [}
4720             . $_tok . q{]},
4721            
4722             Parse::RecDescent::_tracefirst($text),
4723             q{argument},
4724             $tracelevel)
4725             if defined $::RD_TRACE;
4726 3         7 $item{q{string_argument}} = $_tok;
4727 3         6 push @item, $_tok;
4728            
4729             }
4730              
4731              
4732 3 50       8 Parse::RecDescent::_trace(q{>>Matched production: [string_argument]<<},
4733             Parse::RecDescent::_tracefirst($text),
4734             q{argument},
4735             $tracelevel)
4736             if defined $::RD_TRACE;
4737 3         4 $_matched = 1;
4738 3         7 last;
4739             }
4740              
4741              
4742 6   66     27 while (!$_matched && !$commit)
4743             {
4744            
4745 3 50       11 Parse::RecDescent::_trace(q{Trying production: [expr]},
4746             Parse::RecDescent::_tracefirst($_[1]),
4747             q{argument},
4748             $tracelevel)
4749             if defined $::RD_TRACE;
4750 3         7 my $thisprod = $thisrule->{"prods"}[1];
4751 3         8 $text = $_[1];
4752 3         3 my $_savetext;
4753 3         8 @item = (q{argument});
4754 3         7 %item = (__RULE__ => q{argument});
4755 3         3 my $repcount = 0;
4756              
4757              
4758 3 50       23 Parse::RecDescent::_trace(q{Trying subrule: [expr]},
4759             Parse::RecDescent::_tracefirst($text),
4760             q{argument},
4761             $tracelevel)
4762             if defined $::RD_TRACE;
4763 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         472  
  3         3  
4764 3         10 $expectation->is(q{})->at($text);
4765 3 50   3   40 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         7  
4766             {
4767            
4768 0 0       0 Parse::RecDescent::_trace(q{<>},
4769             Parse::RecDescent::_tracefirst($text),
4770             q{argument},
4771             $tracelevel)
4772             if defined $::RD_TRACE;
4773 0         0 $expectation->failed();
4774 0         0 last;
4775             }
4776 3 50       14 Parse::RecDescent::_trace(q{>>Matched subrule: [expr]<< (return value: [}
4777             . $_tok . q{]},
4778            
4779             Parse::RecDescent::_tracefirst($text),
4780             q{argument},
4781             $tracelevel)
4782             if defined $::RD_TRACE;
4783 3         8 $item{q{expr}} = $_tok;
4784 3         5 push @item, $_tok;
4785            
4786             }
4787              
4788              
4789 3 50       8 Parse::RecDescent::_trace(q{>>Matched production: [expr]<<},
4790             Parse::RecDescent::_tracefirst($text),
4791             q{argument},
4792             $tracelevel)
4793             if defined $::RD_TRACE;
4794 3         12 $_matched = 1;
4795 3         6 last;
4796             }
4797              
4798              
4799 6 0 33     28 unless ( $_matched || defined($return) || defined($score) )
      33        
4800             {
4801            
4802              
4803 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4804 0 0       0 Parse::RecDescent::_trace(q{<>},
4805             Parse::RecDescent::_tracefirst($_[1]),
4806             q{argument},
4807             $tracelevel)
4808             if defined $::RD_TRACE;
4809 0         0 return undef;
4810             }
4811 6 50 33     30 if (!defined($return) && defined($score))
4812             {
4813 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4814             q{argument},
4815             $tracelevel)
4816             if defined $::RD_TRACE;
4817 0         0 $return = $score_return;
4818             }
4819 6         8 splice @{$thisparser->{errors}}, $err_at;
  6         13  
4820 6 50       20 $return = $item[$#item] unless defined $return;
4821 6 50       13 if (defined $::RD_TRACE)
4822             {
4823 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4824             $return . q{])}, "",
4825             q{argument},
4826             $tracelevel);
4827 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4828             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4829             Parse::RecDescent::_tracefirst($text),
4830             , q{argument},
4831             $tracelevel)
4832             }
4833 6         12 $_[1] = $text;
4834 6         58 return $return;
4835             }
4836              
4837             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4838             sub Parse::RecDescent::Petal::CodePerl::Parser::qq_string
4839             {
4840 5     5   19 my $thisparser = $_[0];
4841 1     1   5 use vars q{$tracelevel};
  1         2  
  1         1314  
4842 5   50     16 local $tracelevel = ($tracelevel||0)+1;
4843 5         7 $ERRORS = 0;
4844 5         13 my $thisrule = $thisparser->{"rules"}{"qq_string"};
4845            
4846 5 50       12 Parse::RecDescent::_trace(q{Trying rule: [qq_string]},
4847             Parse::RecDescent::_tracefirst($_[1]),
4848             q{qq_string},
4849             $tracelevel)
4850             if defined $::RD_TRACE;
4851              
4852            
4853 5         7 my $err_at = @{$thisparser->{errors}};
  5         11  
4854              
4855 5         8 my $score;
4856             my $score_return;
4857 0         0 my $_tok;
4858 5         7 my $return = undef;
4859 5         6 my $_matched=0;
4860 5         7 my $commit=0;
4861 5         11 my @item = ();
4862 5         6 my %item = ();
4863 5   33     17 my $repeating = defined($_[2]) && $_[2];
4864 5   33     15 my $_noactions = defined($_[3]) && $_[3];
4865 5 50       14 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  5         7  
  5         10  
4866 5 50       14 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4867 5         8 my $text;
4868 5         9 my $lastsep="";
4869 5         16 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4870 5         133 $expectation->at($_[1]);
4871            
4872 5         18 my $thisline;
4873 5         21 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4874              
4875            
4876              
4877 5   33     49 while (!$_matched && !$commit)
4878             {
4879            
4880 5 50       13 Parse::RecDescent::_trace(q{Trying production: ['"' /[^"]*/ '"']},
4881             Parse::RecDescent::_tracefirst($_[1]),
4882             q{qq_string},
4883             $tracelevel)
4884             if defined $::RD_TRACE;
4885 5         13 my $thisprod = $thisrule->{"prods"}[0];
4886 5         9 $text = $_[1];
4887 5         6 my $_savetext;
4888 5         11 @item = (q{qq_string});
4889 5         14 %item = (__RULE__ => q{qq_string});
4890 5         7 my $repcount = 0;
4891              
4892              
4893 5 50       18 Parse::RecDescent::_trace(q{Trying terminal: ['"']},
4894             Parse::RecDescent::_tracefirst($text),
4895             q{qq_string},
4896             $tracelevel)
4897             if defined $::RD_TRACE;
4898 5         7 $lastsep = "";
4899 5         14 $expectation->is(q{})->at($text);
4900            
4901              
4902 5 50 66     51 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\"//)
  5 100       47  
4903             {
4904            
4905 4         17 $expectation->failed();
4906 4 50       19 Parse::RecDescent::_trace(qq{<>},
4907             Parse::RecDescent::_tracefirst($text))
4908             if defined $::RD_TRACE;
4909 4         9 last;
4910             }
4911 1 50       4 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4912             . $& . q{])},
4913             Parse::RecDescent::_tracefirst($text))
4914             if defined $::RD_TRACE;
4915 1         3 push @item, $item{__STRING1__}=$&;
4916            
4917              
4918 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [/[^"]*/]}, Parse::RecDescent::_tracefirst($text),
4919             q{qq_string},
4920             $tracelevel)
4921             if defined $::RD_TRACE;
4922 1         2 $lastsep = "";
4923 1         4 $expectation->is(q{/[^"]*/})->at($text);
4924            
4925              
4926 1 50 33     16 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^"]*)//)
  1 50       29  
4927             {
4928            
4929 0         0 $expectation->failed();
4930 0 0       0 Parse::RecDescent::_trace(q{<>},
4931             Parse::RecDescent::_tracefirst($text))
4932             if defined $::RD_TRACE;
4933              
4934 0         0 last;
4935             }
4936 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4937             . $& . q{])},
4938             Parse::RecDescent::_tracefirst($text))
4939             if defined $::RD_TRACE;
4940 1         5 push @item, $item{__PATTERN1__}=$&;
4941            
4942              
4943 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: ['"']},
4944             Parse::RecDescent::_tracefirst($text),
4945             q{qq_string},
4946             $tracelevel)
4947             if defined $::RD_TRACE;
4948 1         3 $lastsep = "";
4949 1         4 $expectation->is(q{'"'})->at($text);
4950            
4951              
4952 1 50 33     16 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\"//)
  1 50       13  
4953             {
4954            
4955 0         0 $expectation->failed();
4956 0 0       0 Parse::RecDescent::_trace(qq{<>},
4957             Parse::RecDescent::_tracefirst($text))
4958             if defined $::RD_TRACE;
4959 0         0 last;
4960             }
4961 1 50       20 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4962             . $& . q{])},
4963             Parse::RecDescent::_tracefirst($text))
4964             if defined $::RD_TRACE;
4965 1         4 push @item, $item{__STRING2__}=$&;
4966            
4967              
4968 1 50       4 Parse::RecDescent::_trace(q{Trying action},
4969             Parse::RecDescent::_tracefirst($text),
4970             q{qq_string},
4971             $tracelevel)
4972             if defined $::RD_TRACE;
4973            
4974              
4975 1 50       4 $_tok = ($_noactions) ? 0 : do { $item[2] };
  1         3  
4976 1 50       5 unless (defined $_tok)
4977             {
4978 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4979             if defined $::RD_TRACE;
4980 0         0 last;
4981             }
4982 1 50       15 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4983             . $_tok . q{])},
4984             Parse::RecDescent::_tracefirst($text))
4985             if defined $::RD_TRACE;
4986 1         2 push @item, $_tok;
4987 1         3 $item{__ACTION1__}=$_tok;
4988            
4989              
4990              
4991 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: ['"' /[^"]*/ '"']<<},
4992             Parse::RecDescent::_tracefirst($text),
4993             q{qq_string},
4994             $tracelevel)
4995             if defined $::RD_TRACE;
4996 1         2 $_matched = 1;
4997 1         3 last;
4998             }
4999              
5000              
5001 5 50 66     43 unless ( $_matched || defined($return) || defined($score) )
      66        
5002             {
5003            
5004              
5005 4         6 $_[1] = $text; # NOT SURE THIS IS NEEDED
5006 4 50       11 Parse::RecDescent::_trace(q{<>},
5007             Parse::RecDescent::_tracefirst($_[1]),
5008             q{qq_string},
5009             $tracelevel)
5010             if defined $::RD_TRACE;
5011 4         28 return undef;
5012             }
5013 1 50 33     7 if (!defined($return) && defined($score))
5014             {
5015 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5016             q{qq_string},
5017             $tracelevel)
5018             if defined $::RD_TRACE;
5019 0         0 $return = $score_return;
5020             }
5021 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         3  
5022 1 50       6 $return = $item[$#item] unless defined $return;
5023 1 50       4 if (defined $::RD_TRACE)
5024             {
5025 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5026             $return . q{])}, "",
5027             q{qq_string},
5028             $tracelevel);
5029 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5030             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5031             Parse::RecDescent::_tracefirst($text),
5032             , q{qq_string},
5033             $tracelevel)
5034             }
5035 1         3 $_[1] = $text;
5036 1         12 return $return;
5037             }
5038              
5039             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5040             sub Parse::RecDescent::Petal::CodePerl::Parser::expr
5041             {
5042 8     8   20 my $thisparser = $_[0];
5043 1     1   8 use vars q{$tracelevel};
  1         2  
  1         398  
5044 8   50     35 local $tracelevel = ($tracelevel||0)+1;
5045 8         17 $ERRORS = 0;
5046 8         22 my $thisrule = $thisparser->{"rules"}{"expr"};
5047            
5048 8 50       28 Parse::RecDescent::_trace(q{Trying rule: [expr]},
5049             Parse::RecDescent::_tracefirst($_[1]),
5050             q{expr},
5051             $tracelevel)
5052             if defined $::RD_TRACE;
5053              
5054            
5055 8         14 my $err_at = @{$thisparser->{errors}};
  8         19  
5056              
5057 8         12 my $score;
5058             my $score_return;
5059 0         0 my $_tok;
5060 8         18 my $return = undef;
5061 8         12 my $_matched=0;
5062 8         13 my $commit=0;
5063 8         15 my @item = ();
5064 8         16 my %item = ();
5065 8   33     70 my $repeating = defined($_[2]) && $_[2];
5066 8   33     38 my $_noactions = defined($_[3]) && $_[3];
5067 8 50       27 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  8         10  
  8         22  
5068 8 50       31 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5069 8         14 my $text;
5070 8         16 my $lastsep="";
5071 8         25 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5072 8         261 $expectation->at($_[1]);
5073            
5074 8         30 my $thisline;
5075 8         39 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5076              
5077            
5078              
5079 8   33     85 while (!$_matched && !$commit)
5080             {
5081            
5082 8 50       23 Parse::RecDescent::_trace(q{Trying production: []},
5083             Parse::RecDescent::_tracefirst($_[1]),
5084             q{expr},
5085             $tracelevel)
5086             if defined $::RD_TRACE;
5087 8         48 my $thisprod = $thisrule->{"prods"}[0];
5088 8         16 $text = $_[1];
5089 8         12 my $_savetext;
5090 8         18 @item = (q{expr});
5091 8         22 %item = (__RULE__ => q{expr});
5092 8         12 my $repcount = 0;
5093              
5094              
5095 8 50       19 Parse::RecDescent::_trace(q{Trying operator: []},
5096             Parse::RecDescent::_tracefirst($text),
5097             q{expr},
5098             $tracelevel)
5099             if defined $::RD_TRACE;
5100 8         30 $expectation->is(q{})->at($text);
5101              
5102 8         268 $_tok = undef;
5103 8         16 OPLOOP: while (1)
5104             {
5105 8         12 $repcount = 0;
5106 8         10 my @item;
5107            
5108             # MATCH LEFTARG
5109            
5110 8 50       21 Parse::RecDescent::_trace(q{Trying subrule: [single_expr]},
5111             Parse::RecDescent::_tracefirst($text),
5112             q{expr},
5113             $tracelevel)
5114             if defined $::RD_TRACE;
5115 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         456  
  8         15  
5116 8         25 $expectation->is(q{single_expr})->at($text);
5117 8 50   8   105 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         20  
5118             {
5119            
5120 0 0       0 Parse::RecDescent::_trace(q{<>},
5121             Parse::RecDescent::_tracefirst($text),
5122             q{expr},
5123             $tracelevel)
5124             if defined $::RD_TRACE;
5125 0         0 $expectation->failed();
5126 0         0 last;
5127             }
5128 8 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [single_expr]<< (return value: [}
5129             . $_tok . q{]},
5130            
5131             Parse::RecDescent::_tracefirst($text),
5132             q{expr},
5133             $tracelevel)
5134             if defined $::RD_TRACE;
5135 8         18 $item{q{single_expr}} = $_tok;
5136 8         18 push @item, $_tok;
5137            
5138             }
5139              
5140              
5141 8         10 $repcount++;
5142              
5143 8         11 my $savetext = $text;
5144 8         12 my $backtrack;
5145              
5146             # MATCH (OP RIGHTARG)(s)
5147 8         143 while ($repcount < 100000000)
5148             {
5149 10         15 $backtrack = 0;
5150            
5151 10 50       22 Parse::RecDescent::_trace(q{Trying terminal: [/\\|/]}, Parse::RecDescent::_tracefirst($text),
5152             q{expr},
5153             $tracelevel)
5154             if defined $::RD_TRACE;
5155 10         14 $lastsep = "";
5156 10         42 $expectation->is(q{/\\|/})->at($text);
5157            
5158              
5159 10 50 66     130 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\|)//)
  10 100       100  
5160             {
5161            
5162 8         36 $expectation->failed();
5163 8 50       250 Parse::RecDescent::_trace(q{<>},
5164             Parse::RecDescent::_tracefirst($text))
5165             if defined $::RD_TRACE;
5166              
5167 8         18 last;
5168             }
5169 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5170             . $& . q{])},
5171             Parse::RecDescent::_tracefirst($text))
5172             if defined $::RD_TRACE;
5173 2         7 push @item, $item{__PATTERN1__}=$&;
5174            
5175              
5176 2         5 pop @item;
5177 2 50       7 if (defined $1) {push @item, $item{'single_expr(s?)'}=$1; $backtrack=1;}
  0         0  
  0         0  
5178            
5179 2 50       7 Parse::RecDescent::_trace(q{Trying subrule: [single_expr]},
5180             Parse::RecDescent::_tracefirst($text),
5181             q{expr},
5182             $tracelevel)
5183             if defined $::RD_TRACE;
5184 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         959  
  2         2  
5185 2         10 $expectation->is(q{single_expr})->at($text);
5186 2 50   2   28 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         6  
5187             {
5188            
5189 0 0       0 Parse::RecDescent::_trace(q{<>},
5190             Parse::RecDescent::_tracefirst($text),
5191             q{expr},
5192             $tracelevel)
5193             if defined $::RD_TRACE;
5194 0         0 $expectation->failed();
5195 0         0 last;
5196             }
5197 2 50       44 Parse::RecDescent::_trace(q{>>Matched subrule: [single_expr]<< (return value: [}
5198             . $_tok . q{]},
5199            
5200             Parse::RecDescent::_tracefirst($text),
5201             q{expr},
5202             $tracelevel)
5203             if defined $::RD_TRACE;
5204 2         7 $item{q{single_expr}} = $_tok;
5205 2         6 push @item, $_tok;
5206            
5207             }
5208              
5209 2         6 $savetext = $text;
5210 2         10 $repcount++;
5211             }
5212 8         16 $text = $savetext;
5213 8 50       16 pop @item if $backtrack;
5214              
5215            
5216 8         21 $_tok = [ @item ];
5217 8         17 last;
5218             }
5219              
5220 8 50       27 unless ($repcount>=0)
5221             {
5222 0 0       0 Parse::RecDescent::_trace(q{<]>>},
5223             Parse::RecDescent::_tracefirst($text),
5224             q{expr},
5225             $tracelevel)
5226             if defined $::RD_TRACE;
5227 0         0 $expectation->failed();
5228 0         0 last;
5229             }
5230 8 50       19 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
5231 0 0       0 . qq{@{$_tok||[]}} . q{]},
5232             Parse::RecDescent::_tracefirst($text),
5233             q{expr},
5234             $tracelevel)
5235             if defined $::RD_TRACE;
5236              
5237 8   50     34 push @item, $item{'single_expr(s?)'}=$_tok||[];
5238              
5239              
5240 8 50       15 Parse::RecDescent::_trace(q{Trying action},
5241             Parse::RecDescent::_tracefirst($text),
5242             q{expr},
5243             $tracelevel)
5244             if defined $::RD_TRACE;
5245            
5246              
5247 8 50       19 $_tok = ($_noactions) ? 0 : do {
5248 8         12 Petal::CodePerl::Expr::alternate(@{$item[1]})
  8         70  
5249             };
5250 8 50       112 unless (defined $_tok)
5251             {
5252 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5253             if defined $::RD_TRACE;
5254 0         0 last;
5255             }
5256 8 50       15 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5257             . $_tok . q{])},
5258             Parse::RecDescent::_tracefirst($text))
5259             if defined $::RD_TRACE;
5260 8         15 push @item, $_tok;
5261 8         17 $item{__ACTION1__}=$_tok;
5262            
5263              
5264              
5265 8 50       18 Parse::RecDescent::_trace(q{>>Matched production: []<<},
5266             Parse::RecDescent::_tracefirst($text),
5267             q{expr},
5268             $tracelevel)
5269             if defined $::RD_TRACE;
5270 8         10 $_matched = 1;
5271 8         16 last;
5272             }
5273              
5274              
5275 8 0 33     25 unless ( $_matched || defined($return) || defined($score) )
      33        
5276             {
5277            
5278              
5279 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
5280 0 0       0 Parse::RecDescent::_trace(q{<>},
5281             Parse::RecDescent::_tracefirst($_[1]),
5282             q{expr},
5283             $tracelevel)
5284             if defined $::RD_TRACE;
5285 0         0 return undef;
5286             }
5287 8 50 33     37 if (!defined($return) && defined($score))
5288             {
5289 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5290             q{expr},
5291             $tracelevel)
5292             if defined $::RD_TRACE;
5293 0         0 $return = $score_return;
5294             }
5295 8         11 splice @{$thisparser->{errors}}, $err_at;
  8         20  
5296 8 50       22 $return = $item[$#item] unless defined $return;
5297 8 50       19 if (defined $::RD_TRACE)
5298             {
5299 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5300             $return . q{])}, "",
5301             q{expr},
5302             $tracelevel);
5303 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5304             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5305             Parse::RecDescent::_tracefirst($text),
5306             , q{expr},
5307             $tracelevel)
5308             }
5309 8         25 $_[1] = $text;
5310 8         93 return $return;
5311             }
5312              
5313             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5314             sub Parse::RecDescent::Petal::CodePerl::Parser::single_path
5315             {
5316 27     27   777 my $thisparser = $_[0];
5317 1     1   6 use vars q{$tracelevel};
  1         2  
  1         368  
5318 27   100     178 local $tracelevel = ($tracelevel||0)+1;
5319 27         47 $ERRORS = 0;
5320 27         76 my $thisrule = $thisparser->{"rules"}{"single_path"};
5321            
5322 27 50       111 Parse::RecDescent::_trace(q{Trying rule: [single_path]},
5323             Parse::RecDescent::_tracefirst($_[1]),
5324             q{single_path},
5325             $tracelevel)
5326             if defined $::RD_TRACE;
5327              
5328            
5329 27         69 my $err_at = @{$thisparser->{errors}};
  27         60  
5330              
5331 27         54 my $score;
5332             my $score_return;
5333 0         0 my $_tok;
5334 27         44 my $return = undef;
5335 27         46 my $_matched=0;
5336 27         38 my $commit=0;
5337 27         60 my @item = ();
5338 27         60 my %item = ();
5339 27   66     117 my $repeating = defined($_[2]) && $_[2];
5340 27   66     99 my $_noactions = defined($_[3]) && $_[3];
5341 27 50       93 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  27         61  
  27         77  
5342 27 50       158 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5343 27         46 my $text;
5344 27         113 my $lastsep="";
5345 27         122 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5346 27         1396 $expectation->at($_[1]);
5347            
5348 27         116 my $thisline;
5349 27         164 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5350              
5351            
5352              
5353 27   33     939 while (!$_matched && !$commit)
5354             {
5355            
5356 27 50       90 Parse::RecDescent::_trace(q{Trying production: [url_segment deref]},
5357             Parse::RecDescent::_tracefirst($_[1]),
5358             q{single_path},
5359             $tracelevel)
5360             if defined $::RD_TRACE;
5361 27         76 my $thisprod = $thisrule->{"prods"}[0];
5362 27         52 $text = $_[1];
5363 27         41 my $_savetext;
5364 27         64 @item = (q{single_path});
5365 27         78 %item = (__RULE__ => q{single_path});
5366 27         43 my $repcount = 0;
5367              
5368              
5369 27 50       179 Parse::RecDescent::_trace(q{Trying subrule: [url_segment]},
5370             Parse::RecDescent::_tracefirst($text),
5371             q{single_path},
5372             $tracelevel)
5373             if defined $::RD_TRACE;
5374 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         871  
  27         52  
5375 27         106 $expectation->is(q{})->at($text);
5376 27 100   27   314 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::url_segment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  27         56  
5377             {
5378            
5379 2 50       9 Parse::RecDescent::_trace(q{<>},
5380             Parse::RecDescent::_tracefirst($text),
5381             q{single_path},
5382             $tracelevel)
5383             if defined $::RD_TRACE;
5384 2         5 $expectation->failed();
5385 2         8 last;
5386             }
5387 25 50       116 Parse::RecDescent::_trace(q{>>Matched subrule: [url_segment]<< (return value: [}
5388             . $_tok . q{]},
5389            
5390             Parse::RecDescent::_tracefirst($text),
5391             q{single_path},
5392             $tracelevel)
5393             if defined $::RD_TRACE;
5394 25         64 $item{q{url_segment}} = $_tok;
5395 25         53 push @item, $_tok;
5396            
5397             }
5398              
5399 25 50       69 Parse::RecDescent::_trace(q{Trying repeated subrule: [deref]},
5400             Parse::RecDescent::_tracefirst($text),
5401             q{single_path},
5402             $tracelevel)
5403             if defined $::RD_TRACE;
5404 25         85 $expectation->is(q{deref})->at($text);
5405            
5406 25 50       303 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Petal::CodePerl::Parser::deref, 0, 100000000, $_noactions,$expectation,undef)))
5407             {
5408 0 0       0 Parse::RecDescent::_trace(q{<>},
5409             Parse::RecDescent::_tracefirst($text),
5410             q{single_path},
5411             $tracelevel)
5412             if defined $::RD_TRACE;
5413 0         0 last;
5414             }
5415 25 50       350 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [deref]<< (}
5416             . @$_tok . q{ times)},
5417            
5418             Parse::RecDescent::_tracefirst($text),
5419             q{single_path},
5420             $tracelevel)
5421             if defined $::RD_TRACE;
5422 25         68 $item{q{deref(s?)}} = $_tok;
5423 25         39 push @item, $_tok;
5424            
5425              
5426              
5427 25 50       60 Parse::RecDescent::_trace(q{Trying action},
5428             Parse::RecDescent::_tracefirst($text),
5429             q{single_path},
5430             $tracelevel)
5431             if defined $::RD_TRACE;
5432            
5433              
5434 25 50       59 $_tok = ($_noactions) ? 0 : do {
5435              
5436 25         144 my $current = Code::Perl::Expr::derefh($Petal::CodePerl::Compiler::root, $item{url_segment});
5437              
5438 25         1319 foreach my $deref (@{$item[2]})
  25         81  
5439             {
5440 18         138 my ($type, $key, @others) = @$deref;
5441              
5442 18 100       102 if ($type eq 'tal')
    100          
    100          
    50          
5443             {
5444 7         80 $current = Petal::CodePerl::Expr::dereft($current, $key);
5445             }
5446             elsif ($type eq 'hash')
5447             {
5448 2         7 $current = Code::Perl::Expr::derefh($current, $key);
5449             }
5450             elsif($type eq 'array')
5451             {
5452 2         8 $current = Code::Perl::Expr::derefa($current, $key);
5453             }
5454             elsif($type eq 'method')
5455             {
5456 7         36 $current = Code::Perl::Expr::callm($current, $key, @others);
5457             }
5458             else
5459             {
5460 0         0 die "Unknown type '$type'";
5461             }
5462             }
5463              
5464 25         565 $current;
5465             };
5466 25 50       68 unless (defined $_tok)
5467             {
5468 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5469             if defined $::RD_TRACE;
5470 0         0 last;
5471             }
5472 25 50       55 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5473             . $_tok . q{])},
5474             Parse::RecDescent::_tracefirst($text))
5475             if defined $::RD_TRACE;
5476 25         43 push @item, $_tok;
5477 25         182 $item{__ACTION1__}=$_tok;
5478            
5479              
5480              
5481 25 50       85 Parse::RecDescent::_trace(q{>>Matched production: [url_segment deref]<<},
5482             Parse::RecDescent::_tracefirst($text),
5483             q{single_path},
5484             $tracelevel)
5485             if defined $::RD_TRACE;
5486 25         25 $_matched = 1;
5487 25         48 last;
5488             }
5489              
5490              
5491 27 50 66     94 unless ( $_matched || defined($return) || defined($score) )
      66        
5492             {
5493            
5494              
5495 2         6 $_[1] = $text; # NOT SURE THIS IS NEEDED
5496 2 50       5 Parse::RecDescent::_trace(q{<>},
5497             Parse::RecDescent::_tracefirst($_[1]),
5498             q{single_path},
5499             $tracelevel)
5500             if defined $::RD_TRACE;
5501 2         14 return undef;
5502             }
5503 25 50 33     119 if (!defined($return) && defined($score))
5504             {
5505 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5506             q{single_path},
5507             $tracelevel)
5508             if defined $::RD_TRACE;
5509 0         0 $return = $score_return;
5510             }
5511 25         31 splice @{$thisparser->{errors}}, $err_at;
  25         66  
5512 25 50       76 $return = $item[$#item] unless defined $return;
5513 25 50       63 if (defined $::RD_TRACE)
5514             {
5515 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5516             $return . q{])}, "",
5517             q{single_path},
5518             $tracelevel);
5519 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5520             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5521             Parse::RecDescent::_tracefirst($text),
5522             , q{single_path},
5523             $tracelevel)
5524             }
5525 25         49 $_[1] = $text;
5526 25         337 return $return;
5527             }
5528              
5529             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5530             sub Parse::RecDescent::Petal::CodePerl::Parser::string_expr
5531             {
5532 11     11   17 my $thisparser = $_[0];
5533 1     1   14 use vars q{$tracelevel};
  1         3  
  1         654  
5534 11   50     32 local $tracelevel = ($tracelevel||0)+1;
5535 11         16 $ERRORS = 0;
5536 11         29 my $thisrule = $thisparser->{"rules"}{"string_expr"};
5537            
5538 11 50       25 Parse::RecDescent::_trace(q{Trying rule: [string_expr]},
5539             Parse::RecDescent::_tracefirst($_[1]),
5540             q{string_expr},
5541             $tracelevel)
5542             if defined $::RD_TRACE;
5543              
5544            
5545 11         19 my $err_at = @{$thisparser->{errors}};
  11         21  
5546              
5547 11         17 my $score;
5548             my $score_return;
5549 0         0 my $_tok;
5550 11         15 my $return = undef;
5551 11         16 my $_matched=0;
5552 11         13 my $commit=0;
5553 11         22 my @item = ();
5554 11         19 my %item = ();
5555 11   33     40 my $repeating = defined($_[2]) && $_[2];
5556 11   33     33 my $_noactions = defined($_[3]) && $_[3];
5557 11 50       25 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         22  
  11         21  
5558 11 50       34 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5559 11         17 my $text;
5560 11         16 my $lastsep="";
5561 11         29 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5562 11         307 $expectation->at($_[1]);
5563            
5564 11         42 my $thisline;
5565 11         52 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5566              
5567            
5568              
5569 11   33     112 while (!$_matched && !$commit)
5570             {
5571            
5572 11 50       31 Parse::RecDescent::_trace(q{Trying production: ['string:' string]},
5573             Parse::RecDescent::_tracefirst($_[1]),
5574             q{string_expr},
5575             $tracelevel)
5576             if defined $::RD_TRACE;
5577 11         25 my $thisprod = $thisrule->{"prods"}[0];
5578 11         16 $text = $_[1];
5579 11         18 my $_savetext;
5580 11         25 @item = (q{string_expr});
5581 11         27 %item = (__RULE__ => q{string_expr});
5582 11         18 my $repcount = 0;
5583              
5584              
5585 11 50       27 Parse::RecDescent::_trace(q{Trying terminal: ['string:']},
5586             Parse::RecDescent::_tracefirst($text),
5587             q{string_expr},
5588             $tracelevel)
5589             if defined $::RD_TRACE;
5590 11         21 $lastsep = "";
5591 11         33 $expectation->is(q{})->at($text);
5592            
5593              
5594 11 50 33     132 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "string:"; 1 } and
  11 100 66     72  
  11   66     15  
  11         82  
5595             substr($text,0,length($_tok)) eq $_tok and
5596 3         9 do { substr($text,0,length($_tok)) = ""; 1; }
  3         19  
5597             )
5598             {
5599            
5600 8         20 $expectation->failed();
5601 8 50       40 Parse::RecDescent::_trace(q{<>},
5602             Parse::RecDescent::_tracefirst($text))
5603             if defined $::RD_TRACE;
5604 8         17 last;
5605             }
5606 3 50       11 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5607             . $_tok . q{])},
5608             Parse::RecDescent::_tracefirst($text))
5609             if defined $::RD_TRACE;
5610 3         11 push @item, $item{__STRING1__}=$_tok;
5611            
5612              
5613            
5614              
5615 3 50       10 Parse::RecDescent::_trace(q{Trying directive: []},
5616             Parse::RecDescent::_tracefirst($text),
5617             q{string_expr},
5618             $tracelevel)
5619             if defined $::RD_TRACE;
5620 3         5 $_tok = do { $commit = 1 };
  3         8  
5621 3 50       8 if (defined($_tok))
5622             {
5623 3 50       10 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
5624             . $_tok . q{])},
5625             Parse::RecDescent::_tracefirst($text))
5626             if defined $::RD_TRACE;
5627             }
5628             else
5629             {
5630 0 0       0 Parse::RecDescent::_trace(q{<>},
5631             Parse::RecDescent::_tracefirst($text))
5632             if defined $::RD_TRACE;
5633             }
5634            
5635 3 50       9 last unless defined $_tok;
5636 3         8 push @item, $item{__DIRECTIVE1__}=$_tok;
5637            
5638              
5639 3 50       28 Parse::RecDescent::_trace(q{Trying subrule: [string]},
5640             Parse::RecDescent::_tracefirst($text),
5641             q{string_expr},
5642             $tracelevel)
5643             if defined $::RD_TRACE;
5644 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         654  
  3         4  
5645 3         15 $expectation->is(q{string})->at($text);
5646 3 50   3   41 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         8  
5647             {
5648            
5649 0 0       0 Parse::RecDescent::_trace(q{<>},
5650             Parse::RecDescent::_tracefirst($text),
5651             q{string_expr},
5652             $tracelevel)
5653             if defined $::RD_TRACE;
5654 0         0 $expectation->failed();
5655 0         0 last;
5656             }
5657 3 50       21 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
5658             . $_tok . q{]},
5659            
5660             Parse::RecDescent::_tracefirst($text),
5661             q{string_expr},
5662             $tracelevel)
5663             if defined $::RD_TRACE;
5664 3         11 $item{q{string}} = $_tok;
5665 3         8 push @item, $_tok;
5666            
5667             }
5668              
5669 3 50       12 Parse::RecDescent::_trace(q{Trying action},
5670             Parse::RecDescent::_tracefirst($text),
5671             q{string_expr},
5672             $tracelevel)
5673             if defined $::RD_TRACE;
5674            
5675              
5676 3 50       8 $_tok = ($_noactions) ? 0 : do { $item{string} };
  3         8  
5677 3 50       13 unless (defined $_tok)
5678             {
5679 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5680             if defined $::RD_TRACE;
5681 0         0 last;
5682             }
5683 3 50       10 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5684             . $_tok . q{])},
5685             Parse::RecDescent::_tracefirst($text))
5686             if defined $::RD_TRACE;
5687 3         6 push @item, $_tok;
5688 3         7 $item{__ACTION1__}=$_tok;
5689            
5690              
5691              
5692 3 50       21 Parse::RecDescent::_trace(q{>>Matched production: ['string:' string]<<},
5693             Parse::RecDescent::_tracefirst($text),
5694             q{string_expr},
5695             $tracelevel)
5696             if defined $::RD_TRACE;
5697 3         6 $_matched = 1;
5698 3         9 last;
5699             }
5700              
5701              
5702 11 50 66     68 unless ( $_matched || defined($return) || defined($score) )
      66        
5703             {
5704            
5705              
5706 8         15 $_[1] = $text; # NOT SURE THIS IS NEEDED
5707 8 50       19 Parse::RecDescent::_trace(q{<>},
5708             Parse::RecDescent::_tracefirst($_[1]),
5709             q{string_expr},
5710             $tracelevel)
5711             if defined $::RD_TRACE;
5712 8         58 return undef;
5713             }
5714 3 50 33     21 if (!defined($return) && defined($score))
5715             {
5716 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5717             q{string_expr},
5718             $tracelevel)
5719             if defined $::RD_TRACE;
5720 0         0 $return = $score_return;
5721             }
5722 3         5 splice @{$thisparser->{errors}}, $err_at;
  3         8  
5723 3 50       12 $return = $item[$#item] unless defined $return;
5724 3 50       11 if (defined $::RD_TRACE)
5725             {
5726 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5727             $return . q{])}, "",
5728             q{string_expr},
5729             $tracelevel);
5730 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5731             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5732             Parse::RecDescent::_tracefirst($text),
5733             , q{string_expr},
5734             $tracelevel)
5735             }
5736 3         9 $_[1] = $text;
5737 3         40 return $return;
5738             }
5739              
5740             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5741             sub Parse::RecDescent::Petal::CodePerl::Parser::varsub
5742             {
5743 14     14   29 my $thisparser = $_[0];
5744 1     1   5 use vars q{$tracelevel};
  1         2  
  1         1291  
5745 14   50     60 local $tracelevel = ($tracelevel||0)+1;
5746 14         21 $ERRORS = 0;
5747 14         35 my $thisrule = $thisparser->{"rules"}{"varsub"};
5748            
5749 14 50       34 Parse::RecDescent::_trace(q{Trying rule: [varsub]},
5750             Parse::RecDescent::_tracefirst($_[1]),
5751             q{varsub},
5752             $tracelevel)
5753             if defined $::RD_TRACE;
5754              
5755            
5756 14         10 my $err_at = @{$thisparser->{errors}};
  14         32  
5757              
5758 14         55 my $score;
5759             my $score_return;
5760 0         0 my $_tok;
5761 14         17 my $return = undef;
5762 14         18 my $_matched=0;
5763 14         16 my $commit=0;
5764 14         22 my @item = ();
5765 14         31 my %item = ();
5766 14   33     44 my $repeating = defined($_[2]) && $_[2];
5767 14   33     41 my $_noactions = defined($_[3]) && $_[3];
5768 14 50       50 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  14         15  
  14         32  
5769 14 50       45 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5770 14         17 my $text;
5771 14         34 my $lastsep="";
5772 14         39 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5773 14         592 $expectation->at($_[1]);
5774            
5775 14         56 my $thisline;
5776 14         103 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5777              
5778            
5779              
5780 14   33     144 while (!$_matched && !$commit)
5781             {
5782            
5783 14 50       33 Parse::RecDescent::_trace(q{Trying production: ['$' single_path]},
5784             Parse::RecDescent::_tracefirst($_[1]),
5785             q{varsub},
5786             $tracelevel)
5787             if defined $::RD_TRACE;
5788 14         33 my $thisprod = $thisrule->{"prods"}[0];
5789 14         54 $text = $_[1];
5790 14         18 my $_savetext;
5791 14         33 @item = (q{varsub});
5792 14         33 %item = (__RULE__ => q{varsub});
5793 14         18 my $repcount = 0;
5794              
5795              
5796 14 50       42 Parse::RecDescent::_trace(q{Trying terminal: ['$']},
5797             Parse::RecDescent::_tracefirst($text),
5798             q{varsub},
5799             $tracelevel)
5800             if defined $::RD_TRACE;
5801 14         24 $lastsep = "";
5802 14         51 $expectation->is(q{})->at($text);
5803            
5804              
5805 14 50 66     163 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\$//)
  14 100       205  
5806             {
5807            
5808 7         25 $expectation->failed();
5809 7 50       40 Parse::RecDescent::_trace(qq{<>},
5810             Parse::RecDescent::_tracefirst($text))
5811             if defined $::RD_TRACE;
5812 7         18 last;
5813             }
5814 7 50       27 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5815             . $& . q{])},
5816             Parse::RecDescent::_tracefirst($text))
5817             if defined $::RD_TRACE;
5818 7         23 push @item, $item{__STRING1__}=$&;
5819            
5820              
5821 7 50       22 Parse::RecDescent::_trace(q{Trying subrule: [single_path]},
5822             Parse::RecDescent::_tracefirst($text),
5823             q{varsub},
5824             $tracelevel)
5825             if defined $::RD_TRACE;
5826 1     1   21 if (1) { no strict qw{refs};
  1         2  
  1         932  
  7         9  
5827 7         26 $expectation->is(q{single_path})->at($text);
5828 7 100   7   73 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_path($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  7         22  
5829             {
5830            
5831 2 50       7 Parse::RecDescent::_trace(q{<>},
5832             Parse::RecDescent::_tracefirst($text),
5833             q{varsub},
5834             $tracelevel)
5835             if defined $::RD_TRACE;
5836 2         7 $expectation->failed();
5837 2         21 last;
5838             }
5839 5 50       30 Parse::RecDescent::_trace(q{>>Matched subrule: [single_path]<< (return value: [}
5840             . $_tok . q{]},
5841            
5842             Parse::RecDescent::_tracefirst($text),
5843             q{varsub},
5844             $tracelevel)
5845             if defined $::RD_TRACE;
5846 5         16 $item{q{single_path}} = $_tok;
5847 5         10 push @item, $_tok;
5848            
5849             }
5850              
5851              
5852 5 50       18 Parse::RecDescent::_trace(q{>>Matched production: ['$' single_path]<<},
5853             Parse::RecDescent::_tracefirst($text),
5854             q{varsub},
5855             $tracelevel)
5856             if defined $::RD_TRACE;
5857 5         8 $_matched = 1;
5858 5         13 last;
5859             }
5860              
5861              
5862 14   66     90 while (!$_matched && !$commit)
5863             {
5864            
5865 9 50       23 Parse::RecDescent::_trace(q{Trying production: ['$\{' single_path '\}']},
5866             Parse::RecDescent::_tracefirst($_[1]),
5867             q{varsub},
5868             $tracelevel)
5869             if defined $::RD_TRACE;
5870 9         40 my $thisprod = $thisrule->{"prods"}[1];
5871 9         15 $text = $_[1];
5872 9         11 my $_savetext;
5873 9         26 @item = (q{varsub});
5874 9         26 %item = (__RULE__ => q{varsub});
5875 9         18 my $repcount = 0;
5876              
5877              
5878 9 50       24 Parse::RecDescent::_trace(q{Trying terminal: ['$\{']},
5879             Parse::RecDescent::_tracefirst($text),
5880             q{varsub},
5881             $tracelevel)
5882             if defined $::RD_TRACE;
5883 9         17 $lastsep = "";
5884 9         27 $expectation->is(q{})->at($text);
5885            
5886              
5887 9 50 66     106 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\$\{//)
  9 100       92  
5888             {
5889            
5890 7         23 $expectation->failed();
5891 7 50       37 Parse::RecDescent::_trace(qq{<>},
5892             Parse::RecDescent::_tracefirst($text))
5893             if defined $::RD_TRACE;
5894 7         15 last;
5895             }
5896 2 50       13 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5897             . $& . q{])},
5898             Parse::RecDescent::_tracefirst($text))
5899             if defined $::RD_TRACE;
5900 2         7 push @item, $item{__STRING1__}=$&;
5901            
5902              
5903 2 50       6 Parse::RecDescent::_trace(q{Trying subrule: [single_path]},
5904             Parse::RecDescent::_tracefirst($text),
5905             q{varsub},
5906             $tracelevel)
5907             if defined $::RD_TRACE;
5908 1     1   14 if (1) { no strict qw{refs};
  1         5  
  1         1967  
  2         4  
5909 2         7 $expectation->is(q{single_path})->at($text);
5910 2 50   2   20 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::single_path($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         4  
5911             {
5912            
5913 0 0       0 Parse::RecDescent::_trace(q{<>},
5914             Parse::RecDescent::_tracefirst($text),
5915             q{varsub},
5916             $tracelevel)
5917             if defined $::RD_TRACE;
5918 0         0 $expectation->failed();
5919 0         0 last;
5920             }
5921 2 50       15 Parse::RecDescent::_trace(q{>>Matched subrule: [single_path]<< (return value: [}
5922             . $_tok . q{]},
5923            
5924             Parse::RecDescent::_tracefirst($text),
5925             q{varsub},
5926             $tracelevel)
5927             if defined $::RD_TRACE;
5928 2         7 $item{q{single_path}} = $_tok;
5929 2         5 push @item, $_tok;
5930            
5931             }
5932              
5933 2 50       9 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
5934             Parse::RecDescent::_tracefirst($text),
5935             q{varsub},
5936             $tracelevel)
5937             if defined $::RD_TRACE;
5938 2         6 $lastsep = "";
5939 2         9 $expectation->is(q{'\}'})->at($text);
5940            
5941              
5942 2 50 33     44 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  2 50       28  
5943             {
5944            
5945 0         0 $expectation->failed();
5946 0 0       0 Parse::RecDescent::_trace(qq{<>},
5947             Parse::RecDescent::_tracefirst($text))
5948             if defined $::RD_TRACE;
5949 0         0 last;
5950             }
5951 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5952             . $& . q{])},
5953             Parse::RecDescent::_tracefirst($text))
5954             if defined $::RD_TRACE;
5955 2         8 push @item, $item{__STRING2__}=$&;
5956            
5957              
5958 2 50       7 Parse::RecDescent::_trace(q{Trying action},
5959             Parse::RecDescent::_tracefirst($text),
5960             q{varsub},
5961             $tracelevel)
5962             if defined $::RD_TRACE;
5963            
5964              
5965 2 50       6 $_tok = ($_noactions) ? 0 : do { $item{single_path} };
  2         6  
5966 2 50       7 unless (defined $_tok)
5967             {
5968 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5969             if defined $::RD_TRACE;
5970 0         0 last;
5971             }
5972 2 50       5 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5973             . $_tok . q{])},
5974             Parse::RecDescent::_tracefirst($text))
5975             if defined $::RD_TRACE;
5976 2         5 push @item, $_tok;
5977 2         6 $item{__ACTION1__}=$_tok;
5978            
5979              
5980              
5981 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: ['$\{' single_path '\}']<<},
5982             Parse::RecDescent::_tracefirst($text),
5983             q{varsub},
5984             $tracelevel)
5985             if defined $::RD_TRACE;
5986 2         4 $_matched = 1;
5987 2         7 last;
5988             }
5989              
5990              
5991 14 50 66     85 unless ( $_matched || defined($return) || defined($score) )
      66        
5992             {
5993            
5994              
5995 7         17 $_[1] = $text; # NOT SURE THIS IS NEEDED
5996 7 50       25 Parse::RecDescent::_trace(q{<>},
5997             Parse::RecDescent::_tracefirst($_[1]),
5998             q{varsub},
5999             $tracelevel)
6000             if defined $::RD_TRACE;
6001 7         58 return undef;
6002             }
6003 7 50 33     44 if (!defined($return) && defined($score))
6004             {
6005 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6006             q{varsub},
6007             $tracelevel)
6008             if defined $::RD_TRACE;
6009 0         0 $return = $score_return;
6010             }
6011 7         9 splice @{$thisparser->{errors}}, $err_at;
  7         20  
6012 7 50       26 $return = $item[$#item] unless defined $return;
6013 7 50       19 if (defined $::RD_TRACE)
6014             {
6015 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6016             $return . q{])}, "",
6017             q{varsub},
6018             $tracelevel);
6019 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6020             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6021             Parse::RecDescent::_tracefirst($text),
6022             , q{varsub},
6023             $tracelevel)
6024             }
6025 7         13 $_[1] = $text;
6026 7         83 return $return;
6027             }
6028              
6029             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6030             sub Parse::RecDescent::Petal::CodePerl::Parser::method_call
6031             {
6032 43     43   77 my $thisparser = $_[0];
6033 1     1   11 use vars q{$tracelevel};
  1         3  
  1         700  
6034 43   50     173 local $tracelevel = ($tracelevel||0)+1;
6035 43         63 $ERRORS = 0;
6036 43         93 my $thisrule = $thisparser->{"rules"}{"method_call"};
6037            
6038 43 50       85 Parse::RecDescent::_trace(q{Trying rule: [method_call]},
6039             Parse::RecDescent::_tracefirst($_[1]),
6040             q{method_call},
6041             $tracelevel)
6042             if defined $::RD_TRACE;
6043              
6044            
6045 43         49 my $err_at = @{$thisparser->{errors}};
  43         74  
6046              
6047 43         55 my $score;
6048             my $score_return;
6049 0         0 my $_tok;
6050 43         65 my $return = undef;
6051 43         51 my $_matched=0;
6052 43         52 my $commit=0;
6053 43         77 my @item = ();
6054 43         75 my %item = ();
6055 43   33     166 my $repeating = defined($_[2]) && $_[2];
6056 43   33     131 my $_noactions = defined($_[3]) && $_[3];
6057 43 50       95 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  43         51  
  43         89  
6058 43 50       116 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6059 43         58 my $text;
6060 43         64 my $lastsep="";
6061 43         133 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6062 43         2160 $expectation->at($_[1]);
6063            
6064 43         175 my $thisline;
6065 43         305 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6066              
6067            
6068              
6069 43   33     404 while (!$_matched && !$commit)
6070             {
6071            
6072 43 50       104 Parse::RecDescent::_trace(q{Trying production: [empty_method]},
6073             Parse::RecDescent::_tracefirst($_[1]),
6074             q{method_call},
6075             $tracelevel)
6076             if defined $::RD_TRACE;
6077 43         113 my $thisprod = $thisrule->{"prods"}[0];
6078 43         69 $text = $_[1];
6079 43         62 my $_savetext;
6080 43         89 @item = (q{method_call});
6081 43         102 %item = (__RULE__ => q{method_call});
6082 43         48 my $repcount = 0;
6083              
6084              
6085 43 50       97 Parse::RecDescent::_trace(q{Trying subrule: [empty_method]},
6086             Parse::RecDescent::_tracefirst($text),
6087             q{method_call},
6088             $tracelevel)
6089             if defined $::RD_TRACE;
6090 1     1   8 if (1) { no strict qw{refs};
  1         4  
  1         459  
  43         43  
6091 43         134 $expectation->is(q{})->at($text);
6092 43 100   43   1290098 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::empty_method($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  43         130  
6093             {
6094            
6095 41 50       90 Parse::RecDescent::_trace(q{<>},
6096             Parse::RecDescent::_tracefirst($text),
6097             q{method_call},
6098             $tracelevel)
6099             if defined $::RD_TRACE;
6100 41         124 $expectation->failed();
6101 41         356 last;
6102             }
6103 2 50       11 Parse::RecDescent::_trace(q{>>Matched subrule: [empty_method]<< (return value: [}
6104             . $_tok . q{]},
6105            
6106             Parse::RecDescent::_tracefirst($text),
6107             q{method_call},
6108             $tracelevel)
6109             if defined $::RD_TRACE;
6110 2         4 $item{q{empty_method}} = $_tok;
6111 2         6 push @item, $_tok;
6112            
6113             }
6114              
6115              
6116 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: [empty_method]<<},
6117             Parse::RecDescent::_tracefirst($text),
6118             q{method_call},
6119             $tracelevel)
6120             if defined $::RD_TRACE;
6121 2         3 $_matched = 1;
6122 2         3 last;
6123             }
6124              
6125              
6126 43   66     249 while (!$_matched && !$commit)
6127             {
6128            
6129 41 50       91 Parse::RecDescent::_trace(q{Trying production: [arg_method]},
6130             Parse::RecDescent::_tracefirst($_[1]),
6131             q{method_call},
6132             $tracelevel)
6133             if defined $::RD_TRACE;
6134 41         280 my $thisprod = $thisrule->{"prods"}[1];
6135 41         66 $text = $_[1];
6136 41         51 my $_savetext;
6137 41         96 @item = (q{method_call});
6138 41         102 %item = (__RULE__ => q{method_call});
6139 41         59 my $repcount = 0;
6140              
6141              
6142 41 50       91 Parse::RecDescent::_trace(q{Trying subrule: [arg_method]},
6143             Parse::RecDescent::_tracefirst($text),
6144             q{method_call},
6145             $tracelevel)
6146             if defined $::RD_TRACE;
6147 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         740  
  41         54  
6148 41         121 $expectation->is(q{})->at($text);
6149 41 100   41   464 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::arg_method($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  41         96  
6150             {
6151            
6152 36 50       73 Parse::RecDescent::_trace(q{<>},
6153             Parse::RecDescent::_tracefirst($text),
6154             q{method_call},
6155             $tracelevel)
6156             if defined $::RD_TRACE;
6157 36         109 $expectation->failed();
6158 36         139 last;
6159             }
6160 5 50       26 Parse::RecDescent::_trace(q{>>Matched subrule: [arg_method]<< (return value: [}
6161             . $_tok . q{]},
6162            
6163             Parse::RecDescent::_tracefirst($text),
6164             q{method_call},
6165             $tracelevel)
6166             if defined $::RD_TRACE;
6167 5         10 $item{q{arg_method}} = $_tok;
6168 5         12 push @item, $_tok;
6169            
6170             }
6171              
6172              
6173 5 50       18 Parse::RecDescent::_trace(q{>>Matched production: [arg_method]<<},
6174             Parse::RecDescent::_tracefirst($text),
6175             q{method_call},
6176             $tracelevel)
6177             if defined $::RD_TRACE;
6178 5         9 $_matched = 1;
6179 5         9 last;
6180             }
6181              
6182              
6183 43 50 66     310 unless ( $_matched || defined($return) || defined($score) )
      66        
6184             {
6185            
6186              
6187 36         65 $_[1] = $text; # NOT SURE THIS IS NEEDED
6188 36 50       73 Parse::RecDescent::_trace(q{<>},
6189             Parse::RecDescent::_tracefirst($_[1]),
6190             q{method_call},
6191             $tracelevel)
6192             if defined $::RD_TRACE;
6193 36         234 return undef;
6194             }
6195 7 50 33     48 if (!defined($return) && defined($score))
6196             {
6197 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6198             q{method_call},
6199             $tracelevel)
6200             if defined $::RD_TRACE;
6201 0         0 $return = $score_return;
6202             }
6203 7         9 splice @{$thisparser->{errors}}, $err_at;
  7         18  
6204 7 50       26 $return = $item[$#item] unless defined $return;
6205 7 50       19 if (defined $::RD_TRACE)
6206             {
6207 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6208             $return . q{])}, "",
6209             q{method_call},
6210             $tracelevel);
6211 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6212             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6213             Parse::RecDescent::_tracefirst($text),
6214             , q{method_call},
6215             $tracelevel)
6216             }
6217 7         16 $_[1] = $text;
6218 7         61 return $return;
6219             }
6220              
6221             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6222             sub Parse::RecDescent::Petal::CodePerl::Parser::url_segment
6223             {
6224 62     62   97 my $thisparser = $_[0];
6225 1     1   9 use vars q{$tracelevel};
  1         4  
  1         1348  
6226 62   50     198 local $tracelevel = ($tracelevel||0)+1;
6227 62         91 $ERRORS = 0;
6228 62         143 my $thisrule = $thisparser->{"rules"}{"url_segment"};
6229            
6230 62 50       173 Parse::RecDescent::_trace(q{Trying rule: [url_segment]},
6231             Parse::RecDescent::_tracefirst($_[1]),
6232             q{url_segment},
6233             $tracelevel)
6234             if defined $::RD_TRACE;
6235              
6236            
6237 62         67 my $err_at = @{$thisparser->{errors}};
  62         116  
6238              
6239 62         80 my $score;
6240             my $score_return;
6241 0         0 my $_tok;
6242 62         73 my $return = undef;
6243 62         77 my $_matched=0;
6244 62         59 my $commit=0;
6245 62         95 my @item = ();
6246 62         100 my %item = ();
6247 62   33     302 my $repeating = defined($_[2]) && $_[2];
6248 62   33     194 my $_noactions = defined($_[3]) && $_[3];
6249 62 50       138 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  62         64  
  62         133  
6250 62 50       193 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6251 62         72 my $text;
6252 62         92 my $lastsep="";
6253 62         178 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6254 62         1830 $expectation->at($_[1]);
6255            
6256 62         224 my $thisline;
6257 62         317 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6258              
6259            
6260              
6261 62   33     615 while (!$_matched && !$commit)
6262             {
6263            
6264 62 50       136 Parse::RecDescent::_trace(q{Trying production: [/[a-z0-9_\\-\\~]+/i]},
6265             Parse::RecDescent::_tracefirst($_[1]),
6266             q{url_segment},
6267             $tracelevel)
6268             if defined $::RD_TRACE;
6269 62         114 my $thisprod = $thisrule->{"prods"}[0];
6270 62         94 $text = $_[1];
6271 62         63 my $_savetext;
6272 62         182 @item = (q{url_segment});
6273 62         130 %item = (__RULE__ => q{url_segment});
6274 62         73 my $repcount = 0;
6275              
6276              
6277 62 50       130 Parse::RecDescent::_trace(q{Trying terminal: [/[a-z0-9_\\-\\~]+/i]}, Parse::RecDescent::_tracefirst($text),
6278             q{url_segment},
6279             $tracelevel)
6280             if defined $::RD_TRACE;
6281 62         78 $lastsep = "";
6282 62         164 $expectation->is(q{})->at($text);
6283            
6284              
6285 62 50 66     631 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[a-z0-9_\-\~]+)//i)
  62 100       1003  
6286             {
6287            
6288 2         7 $expectation->failed();
6289 2 50       11 Parse::RecDescent::_trace(q{<>},
6290             Parse::RecDescent::_tracefirst($text))
6291             if defined $::RD_TRACE;
6292              
6293 2         6 last;
6294             }
6295 60 50       154 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6296             . $& . q{])},
6297             Parse::RecDescent::_tracefirst($text))
6298             if defined $::RD_TRACE;
6299 60         473 push @item, $item{__PATTERN1__}=$&;
6300            
6301              
6302              
6303 60 50       400 Parse::RecDescent::_trace(q{>>Matched production: [/[a-z0-9_\\-\\~]+/i]<<},
6304             Parse::RecDescent::_tracefirst($text),
6305             q{url_segment},
6306             $tracelevel)
6307             if defined $::RD_TRACE;
6308 60         78 $_matched = 1;
6309 60         137 last;
6310             }
6311              
6312              
6313 62 50 66     413 unless ( $_matched || defined($return) || defined($score) )
      66        
6314             {
6315            
6316              
6317 2         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
6318 2 50       27 Parse::RecDescent::_trace(q{<>},
6319             Parse::RecDescent::_tracefirst($_[1]),
6320             q{url_segment},
6321             $tracelevel)
6322             if defined $::RD_TRACE;
6323 2         16 return undef;
6324             }
6325 60 50 33     282 if (!defined($return) && defined($score))
6326             {
6327 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6328             q{url_segment},
6329             $tracelevel)
6330             if defined $::RD_TRACE;
6331 0         0 $return = $score_return;
6332             }
6333 60         77 splice @{$thisparser->{errors}}, $err_at;
  60         131  
6334 60 50       166 $return = $item[$#item] unless defined $return;
6335 60 50       144 if (defined $::RD_TRACE)
6336             {
6337 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6338             $return . q{])}, "",
6339             q{url_segment},
6340             $tracelevel);
6341 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6342             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6343             Parse::RecDescent::_tracefirst($text),
6344             , q{url_segment},
6345             $tracelevel)
6346             }
6347 60         113 $_[1] = $text;
6348 60         521 return $return;
6349             }
6350              
6351             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6352             sub Parse::RecDescent::Petal::CodePerl::Parser::_alternation_1_of_production_1_of_rule_string_argument
6353             {
6354 6     6   12 my $thisparser = $_[0];
6355 1     1   8 use vars q{$tracelevel};
  1         3  
  1         636  
6356 6   50     21 local $tracelevel = ($tracelevel||0)+1;
6357 6         9 $ERRORS = 0;
6358 6         16 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_string_argument"};
6359            
6360 6 50       17 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_string_argument]},
6361             Parse::RecDescent::_tracefirst($_[1]),
6362             q{_alternation_1_of_production_1_of_rule_string_argument},
6363             $tracelevel)
6364             if defined $::RD_TRACE;
6365              
6366            
6367 6         9 my $err_at = @{$thisparser->{errors}};
  6         12  
6368              
6369 6         8 my $score;
6370             my $score_return;
6371 0         0 my $_tok;
6372 6         10 my $return = undef;
6373 6         12 my $_matched=0;
6374 6         9 my $commit=0;
6375 6         13 my @item = ();
6376 6         11 my %item = ();
6377 6   33     22 my $repeating = defined($_[2]) && $_[2];
6378 6   33     24 my $_noactions = defined($_[3]) && $_[3];
6379 6 50       17 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  6         8  
  6         15  
6380 6 50       22 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6381 6         10 my $text;
6382 6         8 my $lastsep="";
6383 6         29 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6384 6         366 $expectation->at($_[1]);
6385            
6386 6         22 my $thisline;
6387 6         25 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6388              
6389            
6390              
6391 6   33     66 while (!$_matched && !$commit)
6392             {
6393            
6394 6 50       19 Parse::RecDescent::_trace(q{Trying production: [mm_string]},
6395             Parse::RecDescent::_tracefirst($_[1]),
6396             q{_alternation_1_of_production_1_of_rule_string_argument},
6397             $tracelevel)
6398             if defined $::RD_TRACE;
6399 6         13 my $thisprod = $thisrule->{"prods"}[0];
6400 6         11 $text = $_[1];
6401 6         8 my $_savetext;
6402 6         13 @item = (q{_alternation_1_of_production_1_of_rule_string_argument});
6403 6         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_string_argument});
6404 6         9 my $repcount = 0;
6405              
6406              
6407 6 50       61 Parse::RecDescent::_trace(q{Trying subrule: [mm_string]},
6408             Parse::RecDescent::_tracefirst($text),
6409             q{_alternation_1_of_production_1_of_rule_string_argument},
6410             $tracelevel)
6411             if defined $::RD_TRACE;
6412 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         470  
  6         9  
6413 6         20 $expectation->is(q{})->at($text);
6414 6 100   6   73 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mm_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  6         12  
6415             {
6416            
6417 5 50       12 Parse::RecDescent::_trace(q{<>},
6418             Parse::RecDescent::_tracefirst($text),
6419             q{_alternation_1_of_production_1_of_rule_string_argument},
6420             $tracelevel)
6421             if defined $::RD_TRACE;
6422 5         15 $expectation->failed();
6423 5         20 last;
6424             }
6425 1 50       8 Parse::RecDescent::_trace(q{>>Matched subrule: [mm_string]<< (return value: [}
6426             . $_tok . q{]},
6427            
6428             Parse::RecDescent::_tracefirst($text),
6429             q{_alternation_1_of_production_1_of_rule_string_argument},
6430             $tracelevel)
6431             if defined $::RD_TRACE;
6432 1         3 $item{q{mm_string}} = $_tok;
6433 1         4 push @item, $_tok;
6434            
6435             }
6436              
6437              
6438 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: [mm_string]<<},
6439             Parse::RecDescent::_tracefirst($text),
6440             q{_alternation_1_of_production_1_of_rule_string_argument},
6441             $tracelevel)
6442             if defined $::RD_TRACE;
6443 1         2 $_matched = 1;
6444 1         2 last;
6445             }
6446              
6447              
6448 6   66     38 while (!$_matched && !$commit)
6449             {
6450            
6451 5 50       9 Parse::RecDescent::_trace(q{Trying production: [qq_string]},
6452             Parse::RecDescent::_tracefirst($_[1]),
6453             q{_alternation_1_of_production_1_of_rule_string_argument},
6454             $tracelevel)
6455             if defined $::RD_TRACE;
6456 5         14 my $thisprod = $thisrule->{"prods"}[1];
6457 5         8 $text = $_[1];
6458 5         6 my $_savetext;
6459 5         12 @item = (q{_alternation_1_of_production_1_of_rule_string_argument});
6460 5         14 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_string_argument});
6461 5         7 my $repcount = 0;
6462              
6463              
6464 5 50       14 Parse::RecDescent::_trace(q{Trying subrule: [qq_string]},
6465             Parse::RecDescent::_tracefirst($text),
6466             q{_alternation_1_of_production_1_of_rule_string_argument},
6467             $tracelevel)
6468             if defined $::RD_TRACE;
6469 1     1   16 if (1) { no strict qw{refs};
  1         3  
  1         464  
  5         6  
6470 5         17 $expectation->is(q{})->at($text);
6471 5 100   5   58 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::qq_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  5         20  
6472             {
6473            
6474 4 50       9 Parse::RecDescent::_trace(q{<>},
6475             Parse::RecDescent::_tracefirst($text),
6476             q{_alternation_1_of_production_1_of_rule_string_argument},
6477             $tracelevel)
6478             if defined $::RD_TRACE;
6479 4         12 $expectation->failed();
6480 4         14 last;
6481             }
6482 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [qq_string]<< (return value: [}
6483             . $_tok . q{]},
6484            
6485             Parse::RecDescent::_tracefirst($text),
6486             q{_alternation_1_of_production_1_of_rule_string_argument},
6487             $tracelevel)
6488             if defined $::RD_TRACE;
6489 1         2 $item{q{qq_string}} = $_tok;
6490 1         3 push @item, $_tok;
6491            
6492             }
6493              
6494              
6495 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [qq_string]<<},
6496             Parse::RecDescent::_tracefirst($text),
6497             q{_alternation_1_of_production_1_of_rule_string_argument},
6498             $tracelevel)
6499             if defined $::RD_TRACE;
6500 1         1 $_matched = 1;
6501 1         2 last;
6502             }
6503              
6504              
6505 6   66     43 while (!$_matched && !$commit)
6506             {
6507            
6508 4 50       12 Parse::RecDescent::_trace(q{Trying production: [q_string]},
6509             Parse::RecDescent::_tracefirst($_[1]),
6510             q{_alternation_1_of_production_1_of_rule_string_argument},
6511             $tracelevel)
6512             if defined $::RD_TRACE;
6513 4         10 my $thisprod = $thisrule->{"prods"}[2];
6514 4         8 $text = $_[1];
6515 4         5 my $_savetext;
6516 4         9 @item = (q{_alternation_1_of_production_1_of_rule_string_argument});
6517 4         9 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_string_argument});
6518 4         5 my $repcount = 0;
6519              
6520              
6521 4 50       12 Parse::RecDescent::_trace(q{Trying subrule: [q_string]},
6522             Parse::RecDescent::_tracefirst($text),
6523             q{_alternation_1_of_production_1_of_rule_string_argument},
6524             $tracelevel)
6525             if defined $::RD_TRACE;
6526 1     1   8 if (1) { no strict qw{refs};
  1         3  
  1         831  
  4         5  
6527 4         12 $expectation->is(q{})->at($text);
6528 4 100   4   42 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::q_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  4         10  
6529             {
6530            
6531 3 50       9 Parse::RecDescent::_trace(q{<>},
6532             Parse::RecDescent::_tracefirst($text),
6533             q{_alternation_1_of_production_1_of_rule_string_argument},
6534             $tracelevel)
6535             if defined $::RD_TRACE;
6536 3         9 $expectation->failed();
6537 3         11 last;
6538             }
6539 1 50       7 Parse::RecDescent::_trace(q{>>Matched subrule: [q_string]<< (return value: [}
6540             . $_tok . q{]},
6541            
6542             Parse::RecDescent::_tracefirst($text),
6543             q{_alternation_1_of_production_1_of_rule_string_argument},
6544             $tracelevel)
6545             if defined $::RD_TRACE;
6546 1         3 $item{q{q_string}} = $_tok;
6547 1         3 push @item, $_tok;
6548            
6549             }
6550              
6551              
6552 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [q_string]<<},
6553             Parse::RecDescent::_tracefirst($text),
6554             q{_alternation_1_of_production_1_of_rule_string_argument},
6555             $tracelevel)
6556             if defined $::RD_TRACE;
6557 1         2 $_matched = 1;
6558 1         2 last;
6559             }
6560              
6561              
6562 6 50 66     55 unless ( $_matched || defined($return) || defined($score) )
      66        
6563             {
6564            
6565              
6566 3         5 $_[1] = $text; # NOT SURE THIS IS NEEDED
6567 3 50       10 Parse::RecDescent::_trace(q{<>},
6568             Parse::RecDescent::_tracefirst($_[1]),
6569             q{_alternation_1_of_production_1_of_rule_string_argument},
6570             $tracelevel)
6571             if defined $::RD_TRACE;
6572 3         22 return undef;
6573             }
6574 3 50 33     54 if (!defined($return) && defined($score))
6575             {
6576 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6577             q{_alternation_1_of_production_1_of_rule_string_argument},
6578             $tracelevel)
6579             if defined $::RD_TRACE;
6580 0         0 $return = $score_return;
6581             }
6582 3         4 splice @{$thisparser->{errors}}, $err_at;
  3         8  
6583 3 50       9 $return = $item[$#item] unless defined $return;
6584 3 50       10 if (defined $::RD_TRACE)
6585             {
6586 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6587             $return . q{])}, "",
6588             q{_alternation_1_of_production_1_of_rule_string_argument},
6589             $tracelevel);
6590 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6591             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6592             Parse::RecDescent::_tracefirst($text),
6593             , q{_alternation_1_of_production_1_of_rule_string_argument},
6594             $tracelevel)
6595             }
6596 3         5 $_[1] = $text;
6597 3         28 return $return;
6598             }
6599              
6600             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6601             sub Parse::RecDescent::Petal::CodePerl::Parser::mod_name
6602             {
6603 20     20   35 my $thisparser = $_[0];
6604 1     1   10 use vars q{$tracelevel};
  1         2  
  1         1405  
6605 20   50     65 local $tracelevel = ($tracelevel||0)+1;
6606 20         27 $ERRORS = 0;
6607 20         40 my $thisrule = $thisparser->{"rules"}{"mod_name"};
6608            
6609 20 50       57 Parse::RecDescent::_trace(q{Trying rule: [mod_name]},
6610             Parse::RecDescent::_tracefirst($_[1]),
6611             q{mod_name},
6612             $tracelevel)
6613             if defined $::RD_TRACE;
6614              
6615            
6616 20         17 my $err_at = @{$thisparser->{errors}};
  20         42  
6617              
6618 20         27 my $score;
6619             my $score_return;
6620 0         0 my $_tok;
6621 20         25 my $return = undef;
6622 20         24 my $_matched=0;
6623 20         23 my $commit=0;
6624 20         31 my @item = ();
6625 20         821 my %item = ();
6626 20   33     64 my $repeating = defined($_[2]) && $_[2];
6627 20   33     83 my $_noactions = defined($_[3]) && $_[3];
6628 20 50       51 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  20         26  
  20         38  
6629 20 50       50 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6630 20         25 my $text;
6631 20         29 my $lastsep="";
6632 20         63 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6633 20         619 $expectation->at($_[1]);
6634            
6635 20         81 my $thisline;
6636 20         79 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6637              
6638            
6639              
6640 20   33     186 while (!$_matched && !$commit)
6641             {
6642            
6643 20 50       39 Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
6644             Parse::RecDescent::_tracefirst($_[1]),
6645             q{mod_name},
6646             $tracelevel)
6647             if defined $::RD_TRACE;
6648 20         42 my $thisprod = $thisrule->{"prods"}[0];
6649 20         27 $text = $_[1];
6650 20         23 my $_savetext;
6651 20         41 @item = (q{mod_name});
6652 20         39 %item = (__RULE__ => q{mod_name});
6653 20         24 my $repcount = 0;
6654              
6655              
6656 20 50       44 Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
6657             q{mod_name},
6658             $tracelevel)
6659             if defined $::RD_TRACE;
6660 20         33 $lastsep = "";
6661 20         61 $expectation->is(q{})->at($text);
6662            
6663              
6664 20 50 33     213 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\w+)//)
  20 50       231  
6665             {
6666            
6667 0         0 $expectation->failed();
6668 0 0       0 Parse::RecDescent::_trace(q{<>},
6669             Parse::RecDescent::_tracefirst($text))
6670             if defined $::RD_TRACE;
6671              
6672 0         0 last;
6673             }
6674 20 50       52 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6675             . $& . q{])},
6676             Parse::RecDescent::_tracefirst($text))
6677             if defined $::RD_TRACE;
6678 20         61 push @item, $item{__PATTERN1__}=$&;
6679            
6680              
6681              
6682 20 50       38 Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
6683             Parse::RecDescent::_tracefirst($text),
6684             q{mod_name},
6685             $tracelevel)
6686             if defined $::RD_TRACE;
6687 20         25 $_matched = 1;
6688 20         35 last;
6689             }
6690              
6691              
6692 20 0 33     49 unless ( $_matched || defined($return) || defined($score) )
      33        
6693             {
6694            
6695              
6696 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6697 0 0       0 Parse::RecDescent::_trace(q{<>},
6698             Parse::RecDescent::_tracefirst($_[1]),
6699             q{mod_name},
6700             $tracelevel)
6701             if defined $::RD_TRACE;
6702 0         0 return undef;
6703             }
6704 20 50 33     91 if (!defined($return) && defined($score))
6705             {
6706 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6707             q{mod_name},
6708             $tracelevel)
6709             if defined $::RD_TRACE;
6710 0         0 $return = $score_return;
6711             }
6712 20         26 splice @{$thisparser->{errors}}, $err_at;
  20         43  
6713 20 50       61 $return = $item[$#item] unless defined $return;
6714 20 50       69 if (defined $::RD_TRACE)
6715             {
6716 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6717             $return . q{])}, "",
6718             q{mod_name},
6719             $tracelevel);
6720 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6721             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6722             Parse::RecDescent::_tracefirst($text),
6723             , q{mod_name},
6724             $tracelevel)
6725             }
6726 20         29 $_[1] = $text;
6727 20         200 return $return;
6728             }
6729              
6730             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6731             sub Parse::RecDescent::Petal::CodePerl::Parser::only_expr
6732             {
6733 2     2   155 my $thisparser = $_[0];
6734 1     1   10 use vars q{$tracelevel};
  1         3  
  1         596  
6735 2   50     19 local $tracelevel = ($tracelevel||0)+1;
6736 2         5 $ERRORS = 0;
6737 2         8 my $thisrule = $thisparser->{"rules"}{"only_expr"};
6738            
6739 2 50       9 Parse::RecDescent::_trace(q{Trying rule: [only_expr]},
6740             Parse::RecDescent::_tracefirst($_[1]),
6741             q{only_expr},
6742             $tracelevel)
6743             if defined $::RD_TRACE;
6744              
6745            
6746 2         3 my $err_at = @{$thisparser->{errors}};
  2         7  
6747              
6748 2         6 my $score;
6749             my $score_return;
6750 0         0 my $_tok;
6751 2         5 my $return = undef;
6752 2         5 my $_matched=0;
6753 2         5 my $commit=0;
6754 2         5 my @item = ();
6755 2         6 my %item = ();
6756 2   33     9 my $repeating = defined($_[2]) && $_[2];
6757 2   33     24 my $_noactions = defined($_[3]) && $_[3];
6758 2 50       8 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  2         3  
  2         8  
6759 2 50       16 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6760 2         4 my $text;
6761 2         5 my $lastsep="";
6762 2         15 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6763 2         110 $expectation->at($_[1]);
6764            
6765 2         10 my $thisline;
6766 2         21 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6767              
6768            
6769              
6770 2   33     41 while (!$_matched && !$commit)
6771             {
6772            
6773 2 50       9 Parse::RecDescent::_trace(q{Trying production: [expr /^\\z/]},
6774             Parse::RecDescent::_tracefirst($_[1]),
6775             q{only_expr},
6776             $tracelevel)
6777             if defined $::RD_TRACE;
6778 2         6 my $thisprod = $thisrule->{"prods"}[0];
6779 2         3 $text = $_[1];
6780 2         4 my $_savetext;
6781 2         5 @item = (q{only_expr});
6782 2         6 %item = (__RULE__ => q{only_expr});
6783 2         4 my $repcount = 0;
6784              
6785              
6786 2 50       7 Parse::RecDescent::_trace(q{Trying subrule: [expr]},
6787             Parse::RecDescent::_tracefirst($text),
6788             q{only_expr},
6789             $tracelevel)
6790             if defined $::RD_TRACE;
6791 1     1   8 if (1) { no strict qw{refs};
  1         13  
  1         3986  
  2         3  
6792 2         11 $expectation->is(q{})->at($text);
6793 2 50   2   30 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         7  
6794             {
6795            
6796 0 0       0 Parse::RecDescent::_trace(q{<>},
6797             Parse::RecDescent::_tracefirst($text),
6798             q{only_expr},
6799             $tracelevel)
6800             if defined $::RD_TRACE;
6801 0         0 $expectation->failed();
6802 0         0 last;
6803             }
6804 2 50       14 Parse::RecDescent::_trace(q{>>Matched subrule: [expr]<< (return value: [}
6805             . $_tok . q{]},
6806            
6807             Parse::RecDescent::_tracefirst($text),
6808             q{only_expr},
6809             $tracelevel)
6810             if defined $::RD_TRACE;
6811 2         6 $item{q{expr}} = $_tok;
6812 2         5 push @item, $_tok;
6813            
6814             }
6815              
6816 2 50       7 Parse::RecDescent::_trace(q{Trying terminal: [/^\\z/]}, Parse::RecDescent::_tracefirst($text),
6817             q{only_expr},
6818             $tracelevel)
6819             if defined $::RD_TRACE;
6820 2         3 $lastsep = "";
6821 2         10 $expectation->is(q{/^\\z/})->at($text);
6822            
6823              
6824 2 50 33     40 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:^\z)//)
  2 50       28  
6825             {
6826            
6827 0         0 $expectation->failed();
6828 0 0       0 Parse::RecDescent::_trace(q{<>},
6829             Parse::RecDescent::_tracefirst($text))
6830             if defined $::RD_TRACE;
6831              
6832 0         0 last;
6833             }
6834 2 50       11 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6835             . $& . q{])},
6836             Parse::RecDescent::_tracefirst($text))
6837             if defined $::RD_TRACE;
6838 2         9 push @item, $item{__PATTERN1__}=$&;
6839            
6840              
6841 2 50       7 Parse::RecDescent::_trace(q{Trying action},
6842             Parse::RecDescent::_tracefirst($text),
6843             q{only_expr},
6844             $tracelevel)
6845             if defined $::RD_TRACE;
6846            
6847              
6848 2 50       8 $_tok = ($_noactions) ? 0 : do {$item{expr}};
  2         6  
6849 2 50       7 unless (defined $_tok)
6850             {
6851 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6852             if defined $::RD_TRACE;
6853 0         0 last;
6854             }
6855 2 50       6 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6856             . $_tok . q{])},
6857             Parse::RecDescent::_tracefirst($text))
6858             if defined $::RD_TRACE;
6859 2         4 push @item, $_tok;
6860 2         5 $item{__ACTION1__}=$_tok;
6861            
6862              
6863              
6864 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: [expr /^\\z/]<<},
6865             Parse::RecDescent::_tracefirst($text),
6866             q{only_expr},
6867             $tracelevel)
6868             if defined $::RD_TRACE;
6869 2         6 $_matched = 1;
6870 2         5 last;
6871             }
6872              
6873              
6874 2 0 33     8 unless ( $_matched || defined($return) || defined($score) )
      33        
6875             {
6876            
6877              
6878 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6879 0 0       0 Parse::RecDescent::_trace(q{<>},
6880             Parse::RecDescent::_tracefirst($_[1]),
6881             q{only_expr},
6882             $tracelevel)
6883             if defined $::RD_TRACE;
6884 0         0 return undef;
6885             }
6886 2 50 33     35 if (!defined($return) && defined($score))
6887             {
6888 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6889             q{only_expr},
6890             $tracelevel)
6891             if defined $::RD_TRACE;
6892 0         0 $return = $score_return;
6893             }
6894 2         4 splice @{$thisparser->{errors}}, $err_at;
  2         5  
6895 2 50       9 $return = $item[$#item] unless defined $return;
6896 2 50       9 if (defined $::RD_TRACE)
6897             {
6898 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6899             $return . q{])}, "",
6900             q{only_expr},
6901             $tracelevel);
6902 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6903             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6904             Parse::RecDescent::_tracefirst($text),
6905             , q{only_expr},
6906             $tracelevel)
6907             }
6908 2         7 $_[1] = $text;
6909 2         24 return $return;
6910             }
6911              
6912             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6913             sub Parse::RecDescent::Petal::CodePerl::Parser::tal_deref
6914             {
6915 36     36   58 my $thisparser = $_[0];
6916 1     1   14 use vars q{$tracelevel};
  1         1  
  1         849  
6917 36   50     104 local $tracelevel = ($tracelevel||0)+1;
6918 36         38 $ERRORS = 0;
6919 36         88 my $thisrule = $thisparser->{"rules"}{"tal_deref"};
6920            
6921 36 50       112 Parse::RecDescent::_trace(q{Trying rule: [tal_deref]},
6922             Parse::RecDescent::_tracefirst($_[1]),
6923             q{tal_deref},
6924             $tracelevel)
6925             if defined $::RD_TRACE;
6926              
6927            
6928 36         41 my $err_at = @{$thisparser->{errors}};
  36         73  
6929              
6930 36         54 my $score;
6931             my $score_return;
6932 0         0 my $_tok;
6933 36         35 my $return = undef;
6934 36         47 my $_matched=0;
6935 36         41 my $commit=0;
6936 36         70 my @item = ();
6937 36         60 my %item = ();
6938 36   33     94 my $repeating = defined($_[2]) && $_[2];
6939 36   33     113 my $_noactions = defined($_[3]) && $_[3];
6940 36 50       69 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  36         39  
  36         74  
6941 36 50       116 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6942 36         59 my $text;
6943 36         52 my $lastsep="";
6944 36         113 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6945 36         1145 $expectation->at($_[1]);
6946            
6947 36         199 my $thisline;
6948 36         167 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6949              
6950            
6951              
6952 36   33     335 while (!$_matched && !$commit)
6953             {
6954            
6955 36 50       80 Parse::RecDescent::_trace(q{Trying production: [separator url_segment]},
6956             Parse::RecDescent::_tracefirst($_[1]),
6957             q{tal_deref},
6958             $tracelevel)
6959             if defined $::RD_TRACE;
6960 36         72 my $thisprod = $thisrule->{"prods"}[0];
6961 36         55 $text = $_[1];
6962 36         36 my $_savetext;
6963 36         73 @item = (q{tal_deref});
6964 36         76 %item = (__RULE__ => q{tal_deref});
6965 36         41 my $repcount = 0;
6966              
6967              
6968 36 50       71 Parse::RecDescent::_trace(q{Trying subrule: [separator]},
6969             Parse::RecDescent::_tracefirst($text),
6970             q{tal_deref},
6971             $tracelevel)
6972             if defined $::RD_TRACE;
6973 1     1   8 if (1) { no strict qw{refs};
  1         4  
  1         342  
  36         39  
6974 36         116 $expectation->is(q{})->at($text);
6975 36 100   36   343 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::separator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         76  
6976             {
6977            
6978 29 50       70 Parse::RecDescent::_trace(q{<>},
6979             Parse::RecDescent::_tracefirst($text),
6980             q{tal_deref},
6981             $tracelevel)
6982             if defined $::RD_TRACE;
6983 29         88 $expectation->failed();
6984 29         109 last;
6985             }
6986 7 50       36 Parse::RecDescent::_trace(q{>>Matched subrule: [separator]<< (return value: [}
6987             . $_tok . q{]},
6988            
6989             Parse::RecDescent::_tracefirst($text),
6990             q{tal_deref},
6991             $tracelevel)
6992             if defined $::RD_TRACE;
6993 7         17 $item{q{separator}} = $_tok;
6994 7         14 push @item, $_tok;
6995            
6996             }
6997              
6998 7 50       25 Parse::RecDescent::_trace(q{Trying subrule: [url_segment]},
6999             Parse::RecDescent::_tracefirst($text),
7000             q{tal_deref},
7001             $tracelevel)
7002             if defined $::RD_TRACE;
7003 1     1   7 if (1) { no strict qw{refs};
  1         4  
  1         1052  
  7         8  
7004 7         23 $expectation->is(q{url_segment})->at($text);
7005 7 50   7   74 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::url_segment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  7         23  
7006             {
7007            
7008 0 0       0 Parse::RecDescent::_trace(q{<>},
7009             Parse::RecDescent::_tracefirst($text),
7010             q{tal_deref},
7011             $tracelevel)
7012             if defined $::RD_TRACE;
7013 0         0 $expectation->failed();
7014 0         0 last;
7015             }
7016 7 50       32 Parse::RecDescent::_trace(q{>>Matched subrule: [url_segment]<< (return value: [}
7017             . $_tok . q{]},
7018            
7019             Parse::RecDescent::_tracefirst($text),
7020             q{tal_deref},
7021             $tracelevel)
7022             if defined $::RD_TRACE;
7023 7         20 $item{q{url_segment}} = $_tok;
7024 7         15 push @item, $_tok;
7025            
7026             }
7027              
7028 7 50       22 Parse::RecDescent::_trace(q{Trying action},
7029             Parse::RecDescent::_tracefirst($text),
7030             q{tal_deref},
7031             $tracelevel)
7032             if defined $::RD_TRACE;
7033            
7034              
7035 7 50       20 $_tok = ($_noactions) ? 0 : do { ['tal', $item{url_segment}] };
  7         27  
7036 7 50       22 unless (defined $_tok)
7037             {
7038 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7039             if defined $::RD_TRACE;
7040 0         0 last;
7041             }
7042 7 50       22 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7043             . $_tok . q{])},
7044             Parse::RecDescent::_tracefirst($text))
7045             if defined $::RD_TRACE;
7046 7         12 push @item, $_tok;
7047 7         17 $item{__ACTION1__}=$_tok;
7048            
7049              
7050              
7051 7 50       29 Parse::RecDescent::_trace(q{>>Matched production: [separator url_segment]<<},
7052             Parse::RecDescent::_tracefirst($text),
7053             q{tal_deref},
7054             $tracelevel)
7055             if defined $::RD_TRACE;
7056 7         18 $_matched = 1;
7057 7         15 last;
7058             }
7059              
7060              
7061 36 50 66     292 unless ( $_matched || defined($return) || defined($score) )
      66        
7062             {
7063            
7064              
7065 29         43 $_[1] = $text; # NOT SURE THIS IS NEEDED
7066 29 50       62 Parse::RecDescent::_trace(q{<>},
7067             Parse::RecDescent::_tracefirst($_[1]),
7068             q{tal_deref},
7069             $tracelevel)
7070             if defined $::RD_TRACE;
7071 29         184 return undef;
7072             }
7073 7 50 33     45 if (!defined($return) && defined($score))
7074             {
7075 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7076             q{tal_deref},
7077             $tracelevel)
7078             if defined $::RD_TRACE;
7079 0         0 $return = $score_return;
7080             }
7081 7         9 splice @{$thisparser->{errors}}, $err_at;
  7         16  
7082 7 50       27 $return = $item[$#item] unless defined $return;
7083 7 50       25 if (defined $::RD_TRACE)
7084             {
7085 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7086             $return . q{])}, "",
7087             q{tal_deref},
7088             $tracelevel);
7089 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7090             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7091             Parse::RecDescent::_tracefirst($text),
7092             , q{tal_deref},
7093             $tracelevel)
7094             }
7095 7         13 $_[1] = $text;
7096 7         65 return $return;
7097             }
7098              
7099             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7100             sub Parse::RecDescent::Petal::CodePerl::Parser::separator
7101             {
7102 120     120   186 my $thisparser = $_[0];
7103 1     1   9 use vars q{$tracelevel};
  1         2  
  1         1388  
7104 120   50     303 local $tracelevel = ($tracelevel||0)+1;
7105 120         125 $ERRORS = 0;
7106 120         243 my $thisrule = $thisparser->{"rules"}{"separator"};
7107            
7108 120 50       228 Parse::RecDescent::_trace(q{Trying rule: [separator]},
7109             Parse::RecDescent::_tracefirst($_[1]),
7110             q{separator},
7111             $tracelevel)
7112             if defined $::RD_TRACE;
7113              
7114            
7115 120         114 my $err_at = @{$thisparser->{errors}};
  120         210  
7116              
7117 120         138 my $score;
7118             my $score_return;
7119 0         0 my $_tok;
7120 120         126 my $return = undef;
7121 120         116 my $_matched=0;
7122 120         120 my $commit=0;
7123 120         159 my @item = ();
7124 120         162 my %item = ();
7125 120   33     347 my $repeating = defined($_[2]) && $_[2];
7126 120   33     310 my $_noactions = defined($_[3]) && $_[3];
7127 120 50       209 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  120         144  
  120         340  
7128 120 50       316 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7129 120         146 my $text;
7130 120         156 my $lastsep="";
7131 120         333 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7132 120         9721 $expectation->at($_[1]);
7133            
7134 120         425 my $thisline;
7135 120         509 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7136              
7137            
7138              
7139 120   33     1076 while (!$_matched && !$commit)
7140             {
7141            
7142 120 50       233 Parse::RecDescent::_trace(q{Trying production: ['/']},
7143             Parse::RecDescent::_tracefirst($_[1]),
7144             q{separator},
7145             $tracelevel)
7146             if defined $::RD_TRACE;
7147 120         252 my $thisprod = $thisrule->{"prods"}[0];
7148 120         172 $text = $_[1];
7149 120         119 my $_savetext;
7150 120         188 @item = (q{separator});
7151 120         2501 %item = (__RULE__ => q{separator});
7152 120         301 my $repcount = 0;
7153              
7154              
7155 120 50       397 Parse::RecDescent::_trace(q{Trying terminal: ['/']},
7156             Parse::RecDescent::_tracefirst($text),
7157             q{separator},
7158             $tracelevel)
7159             if defined $::RD_TRACE;
7160 120         139 $lastsep = "";
7161 120         536 $expectation->is(q{})->at($text);
7162            
7163              
7164 120 50 66     2381 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\///)
  120 100       1073  
7165             {
7166            
7167 87         611 $expectation->failed();
7168 87 50       586 Parse::RecDescent::_trace(qq{<>},
7169             Parse::RecDescent::_tracefirst($text))
7170             if defined $::RD_TRACE;
7171 87         170 last;
7172             }
7173 33 50       98 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7174             . $& . q{])},
7175             Parse::RecDescent::_tracefirst($text))
7176             if defined $::RD_TRACE;
7177 33         112 push @item, $item{__STRING1__}=$&;
7178            
7179              
7180              
7181 33 50       76 Parse::RecDescent::_trace(q{>>Matched production: ['/']<<},
7182             Parse::RecDescent::_tracefirst($text),
7183             q{separator},
7184             $tracelevel)
7185             if defined $::RD_TRACE;
7186 33         43 $_matched = 1;
7187 33         74 last;
7188             }
7189              
7190              
7191 120   66     452 while (!$_matched && !$commit)
7192             {
7193            
7194 87 50       156 Parse::RecDescent::_trace(q{Trying production: ['.']},
7195             Parse::RecDescent::_tracefirst($_[1]),
7196             q{separator},
7197             $tracelevel)
7198             if defined $::RD_TRACE;
7199 87         158 my $thisprod = $thisrule->{"prods"}[1];
7200 87         131 $text = $_[1];
7201 87         84 my $_savetext;
7202 87         367 @item = (q{separator});
7203 87         170 %item = (__RULE__ => q{separator});
7204 87         99 my $repcount = 0;
7205              
7206              
7207 87 50       156 Parse::RecDescent::_trace(q{Trying terminal: ['.']},
7208             Parse::RecDescent::_tracefirst($text),
7209             q{separator},
7210             $tracelevel)
7211             if defined $::RD_TRACE;
7212 87         106 $lastsep = "";
7213 87         229 $expectation->is(q{})->at($text);
7214            
7215              
7216 87 50 33     1130 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\.//)
  87 50       807  
7217             {
7218            
7219 87         229 $expectation->failed();
7220 87 50       388 Parse::RecDescent::_trace(qq{<>},
7221             Parse::RecDescent::_tracefirst($text))
7222             if defined $::RD_TRACE;
7223 87         352 last;
7224             }
7225 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7226             . $& . q{])},
7227             Parse::RecDescent::_tracefirst($text))
7228             if defined $::RD_TRACE;
7229 0         0 push @item, $item{__STRING1__}=$&;
7230            
7231              
7232              
7233 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['.']<<},
7234             Parse::RecDescent::_tracefirst($text),
7235             q{separator},
7236             $tracelevel)
7237             if defined $::RD_TRACE;
7238 0         0 $_matched = 1;
7239 0         0 last;
7240             }
7241              
7242              
7243 120 50 66     604 unless ( $_matched || defined($return) || defined($score) )
      66        
7244             {
7245            
7246              
7247 87         158 $_[1] = $text; # NOT SURE THIS IS NEEDED
7248 87 50       170 Parse::RecDescent::_trace(q{<>},
7249             Parse::RecDescent::_tracefirst($_[1]),
7250             q{separator},
7251             $tracelevel)
7252             if defined $::RD_TRACE;
7253 87         877 return undef;
7254             }
7255 33 50 33     153 if (!defined($return) && defined($score))
7256             {
7257 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7258             q{separator},
7259             $tracelevel)
7260             if defined $::RD_TRACE;
7261 0         0 $return = $score_return;
7262             }
7263 33         35 splice @{$thisparser->{errors}}, $err_at;
  33         79  
7264 33 50       98 $return = $item[$#item] unless defined $return;
7265 33 50       78 if (defined $::RD_TRACE)
7266             {
7267 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7268             $return . q{])}, "",
7269             q{separator},
7270             $tracelevel);
7271 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7272             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7273             Parse::RecDescent::_tracefirst($text),
7274             , q{separator},
7275             $tracelevel)
7276             }
7277 33         60 $_[1] = $text;
7278 33         292 return $return;
7279             }
7280              
7281             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7282             sub Parse::RecDescent::Petal::CodePerl::Parser::mod_expr_compile
7283             {
7284 11     11   22 my $thisparser = $_[0];
7285 1     1   7 use vars q{$tracelevel};
  1         4  
  1         452  
7286 11   50     37 local $tracelevel = ($tracelevel||0)+1;
7287 11         16 $ERRORS = 0;
7288 11         33 my $thisrule = $thisparser->{"rules"}{"mod_expr_compile"};
7289            
7290 11 50       24 Parse::RecDescent::_trace(q{Trying rule: [mod_expr_compile]},
7291             Parse::RecDescent::_tracefirst($_[1]),
7292             q{mod_expr_compile},
7293             $tracelevel)
7294             if defined $::RD_TRACE;
7295              
7296            
7297 11         19 my $err_at = @{$thisparser->{errors}};
  11         26  
7298              
7299 11         14 my $score;
7300             my $score_return;
7301 0         0 my $_tok;
7302 11         15 my $return = undef;
7303 11         65 my $_matched=0;
7304 11         13 my $commit=0;
7305 11         21 my @item = ();
7306 11         21 my %item = ();
7307 11   33     45 my $repeating = defined($_[2]) && $_[2];
7308 11   33     39 my $_noactions = defined($_[3]) && $_[3];
7309 11 50       37 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  11         14  
  11         21  
7310 11 50       42 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7311 11         18 my $text;
7312 11         14 my $lastsep="";
7313 11         38 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7314 11         350 $expectation->at($_[1]);
7315            
7316 11         50 my $thisline;
7317 11         45 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7318              
7319            
7320              
7321 11   33     425 while (!$_matched && !$commit)
7322             {
7323            
7324 11 50       28 Parse::RecDescent::_trace(q{Trying production: [mod_name /\\s*/ ':' expr]},
7325             Parse::RecDescent::_tracefirst($_[1]),
7326             q{mod_expr_compile},
7327             $tracelevel)
7328             if defined $::RD_TRACE;
7329 11         26 my $thisprod = $thisrule->{"prods"}[0];
7330 11         19 $text = $_[1];
7331 11         14 my $_savetext;
7332 11         24 @item = (q{mod_expr_compile});
7333 11         25 %item = (__RULE__ => q{mod_expr_compile});
7334 11         18 my $repcount = 0;
7335              
7336              
7337 11 50       35 Parse::RecDescent::_trace(q{Trying subrule: [mod_name]},
7338             Parse::RecDescent::_tracefirst($text),
7339             q{mod_expr_compile},
7340             $tracelevel)
7341             if defined $::RD_TRACE;
7342 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         619  
  11         19  
7343 11         43 $expectation->is(q{})->at($text);
7344 11 50   11   134 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::mod_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         26  
7345             {
7346            
7347 0 0       0 Parse::RecDescent::_trace(q{<>},
7348             Parse::RecDescent::_tracefirst($text),
7349             q{mod_expr_compile},
7350             $tracelevel)
7351             if defined $::RD_TRACE;
7352 0         0 $expectation->failed();
7353 0         0 last;
7354             }
7355 11 50       53 Parse::RecDescent::_trace(q{>>Matched subrule: [mod_name]<< (return value: [}
7356             . $_tok . q{]},
7357            
7358             Parse::RecDescent::_tracefirst($text),
7359             q{mod_expr_compile},
7360             $tracelevel)
7361             if defined $::RD_TRACE;
7362 11         24 $item{q{mod_name}} = $_tok;
7363 11         20 push @item, $_tok;
7364            
7365             }
7366              
7367 11 50       24 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
7368             q{mod_expr_compile},
7369             $tracelevel)
7370             if defined $::RD_TRACE;
7371 11         19 $lastsep = "";
7372 11         34 $expectation->is(q{/\\s*/})->at($text);
7373            
7374              
7375 11 50 33     121 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\s*)//)
  11 50       112  
7376             {
7377            
7378 0         0 $expectation->failed();
7379 0 0       0 Parse::RecDescent::_trace(q{<>},
7380             Parse::RecDescent::_tracefirst($text))
7381             if defined $::RD_TRACE;
7382              
7383 0         0 last;
7384             }
7385 11 50       30 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7386             . $& . q{])},
7387             Parse::RecDescent::_tracefirst($text))
7388             if defined $::RD_TRACE;
7389 11         28 push @item, $item{__PATTERN1__}=$&;
7390            
7391              
7392 11 50       33 Parse::RecDescent::_trace(q{Trying terminal: [':']},
7393             Parse::RecDescent::_tracefirst($text),
7394             q{mod_expr_compile},
7395             $tracelevel)
7396             if defined $::RD_TRACE;
7397 11         17 $lastsep = "";
7398 11         35 $expectation->is(q{':'})->at($text);
7399            
7400              
7401 11 50 66     116 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  11 100       114  
7402             {
7403            
7404 8         24 $expectation->failed();
7405 8 50       90 Parse::RecDescent::_trace(qq{<>},
7406             Parse::RecDescent::_tracefirst($text))
7407             if defined $::RD_TRACE;
7408 8         17 last;
7409             }
7410 3 50       14 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7411             . $& . q{])},
7412             Parse::RecDescent::_tracefirst($text))
7413             if defined $::RD_TRACE;
7414 3         15 push @item, $item{__STRING1__}=$&;
7415            
7416              
7417 3 50       10 Parse::RecDescent::_trace(q{Trying subrule: [expr]},
7418             Parse::RecDescent::_tracefirst($text),
7419             q{mod_expr_compile},
7420             $tracelevel)
7421             if defined $::RD_TRACE;
7422 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         856  
  3         6  
7423 3         13 $expectation->is(q{expr})->at($text);
7424 3 50   3   44 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::expr($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         9  
7425             {
7426            
7427 0 0       0 Parse::RecDescent::_trace(q{<>},
7428             Parse::RecDescent::_tracefirst($text),
7429             q{mod_expr_compile},
7430             $tracelevel)
7431             if defined $::RD_TRACE;
7432 0         0 $expectation->failed();
7433 0         0 last;
7434             }
7435 3 50       17 Parse::RecDescent::_trace(q{>>Matched subrule: [expr]<< (return value: [}
7436             . $_tok . q{]},
7437            
7438             Parse::RecDescent::_tracefirst($text),
7439             q{mod_expr_compile},
7440             $tracelevel)
7441             if defined $::RD_TRACE;
7442 3         8 $item{q{expr}} = $_tok;
7443 3         8 push @item, $_tok;
7444            
7445             }
7446              
7447 3 50       9 Parse::RecDescent::_trace(q{Trying action},
7448             Parse::RecDescent::_tracefirst($text),
7449             q{mod_expr_compile},
7450             $tracelevel)
7451             if defined $::RD_TRACE;
7452            
7453              
7454 3 50       9 $_tok = ($_noactions) ? 0 : do {
7455              
7456 3         9 my $name = $item{mod_name};
7457 3         6 my $expr = $item{expr};
7458 3   50     18 my $mod = $Petal::Hash::MODIFIERS{"$name:"} || die "Modifier '$name' does not exists";
7459              
7460 3         5 my $compiled;
7461 3 100 66     52 if (UNIVERSAL::can($mod, "inline") and $Petal::CodePerl::InlineMod)
    100          
7462             {
7463 1         15 $compiled = $mod->inline($Petal::CodePerl::Compiler::root, $expr);
7464             }
7465             elsif (UNIVERSAL::can($mod, "process_value"))
7466             {
7467 1         7 $compiled = Code::Perl::Expr::callm(
7468             Code::Perl::Expr::scal("Petal::Hash::MODIFIERS{\"$name:\"}"), # this is a bit naughty
7469             "process_value",
7470             $Petal::CodePerl::Compiler::root,
7471             $item{expr}
7472             );
7473             }
7474 3         81 $compiled;
7475             };
7476 3 100       10 unless (defined $_tok)
7477             {
7478 1 50       3 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7479             if defined $::RD_TRACE;
7480 1         4 last;
7481             }
7482 2 50       7 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7483             . $_tok . q{])},
7484             Parse::RecDescent::_tracefirst($text))
7485             if defined $::RD_TRACE;
7486 2         3 push @item, $_tok;
7487 2         6 $item{__ACTION1__}=$_tok;
7488            
7489              
7490              
7491 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: [mod_name /\\s*/ ':' expr]<<},
7492             Parse::RecDescent::_tracefirst($text),
7493             q{mod_expr_compile},
7494             $tracelevel)
7495             if defined $::RD_TRACE;
7496 2         4 $_matched = 1;
7497 2         6 last;
7498             }
7499              
7500              
7501 11 50 66     90 unless ( $_matched || defined($return) || defined($score) )
      66        
7502             {
7503            
7504              
7505 9         14 $_[1] = $text; # NOT SURE THIS IS NEEDED
7506 9 50       33 Parse::RecDescent::_trace(q{<>},
7507             Parse::RecDescent::_tracefirst($_[1]),
7508             q{mod_expr_compile},
7509             $tracelevel)
7510             if defined $::RD_TRACE;
7511 9         80 return undef;
7512             }
7513 2 50 33     13 if (!defined($return) && defined($score))
7514             {
7515 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7516             q{mod_expr_compile},
7517             $tracelevel)
7518             if defined $::RD_TRACE;
7519 0         0 $return = $score_return;
7520             }
7521 2         3 splice @{$thisparser->{errors}}, $err_at;
  2         5  
7522 2 50       6 $return = $item[$#item] unless defined $return;
7523 2 50       8 if (defined $::RD_TRACE)
7524             {
7525 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7526             $return . q{])}, "",
7527             q{mod_expr_compile},
7528             $tracelevel);
7529 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7530             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7531             Parse::RecDescent::_tracefirst($text),
7532             , q{mod_expr_compile},
7533             $tracelevel)
7534             }
7535 2         4 $_[1] = $text;
7536 2         24 return $return;
7537             }
7538              
7539             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7540             sub Parse::RecDescent::Petal::CodePerl::Parser::string_piece
7541             {
7542 27     27   445 my $thisparser = $_[0];
7543 1     1   6 use vars q{$tracelevel};
  1         2  
  1         647  
7544 27   50     129 local $tracelevel = ($tracelevel||0)+1;
7545 27         37 $ERRORS = 0;
7546 27         65 my $thisrule = $thisparser->{"rules"}{"string_piece"};
7547            
7548 27 50       81 Parse::RecDescent::_trace(q{Trying rule: [string_piece]},
7549             Parse::RecDescent::_tracefirst($_[1]),
7550             q{string_piece},
7551             $tracelevel)
7552             if defined $::RD_TRACE;
7553              
7554            
7555 27         91 my $err_at = @{$thisparser->{errors}};
  27         58  
7556              
7557 27         45 my $score;
7558             my $score_return;
7559 0         0 my $_tok;
7560 27         35 my $return = undef;
7561 27         34 my $_matched=0;
7562 27         34 my $commit=0;
7563 27         47 my @item = ();
7564 27         44 my %item = ();
7565 27   33     99 my $repeating = defined($_[2]) && $_[2];
7566 27   33     74 my $_noactions = defined($_[3]) && $_[3];
7567 27 50       75 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7568 27 50       99 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7569 27         31 my $text;
7570 27         38 my $lastsep="";
7571 27         82 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7572 27         1371 $expectation->at($_[1]);
7573            
7574 27         111 my $thisline;
7575 27         175 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7576              
7577            
7578              
7579 27   33     293 while (!$_matched && !$commit)
7580             {
7581            
7582 27 50       115 Parse::RecDescent::_trace(q{Trying production: [plain_string]},
7583             Parse::RecDescent::_tracefirst($_[1]),
7584             q{string_piece},
7585             $tracelevel)
7586             if defined $::RD_TRACE;
7587 27         57 my $thisprod = $thisrule->{"prods"}[0];
7588 27         47 $text = $_[1];
7589 27         33 my $_savetext;
7590 27         59 @item = (q{string_piece});
7591 27         82 %item = (__RULE__ => q{string_piece});
7592 27         31 my $repcount = 0;
7593              
7594              
7595 27 50       72 Parse::RecDescent::_trace(q{Trying subrule: [plain_string]},
7596             Parse::RecDescent::_tracefirst($text),
7597             q{string_piece},
7598             $tracelevel)
7599             if defined $::RD_TRACE;
7600 1     1   10 if (1) { no strict qw{refs};
  1         2  
  1         436  
  27         29  
7601 27         79 $expectation->is(q{})->at($text);
7602 27 100   27   274 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::plain_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  27         64  
7603             {
7604            
7605 14 50       36 Parse::RecDescent::_trace(q{<>},
7606             Parse::RecDescent::_tracefirst($text),
7607             q{string_piece},
7608             $tracelevel)
7609             if defined $::RD_TRACE;
7610 14         49 $expectation->failed();
7611 14         51 last;
7612             }
7613 13 50       51 Parse::RecDescent::_trace(q{>>Matched subrule: [plain_string]<< (return value: [}
7614             . $_tok . q{]},
7615            
7616             Parse::RecDescent::_tracefirst($text),
7617             q{string_piece},
7618             $tracelevel)
7619             if defined $::RD_TRACE;
7620 13         25 $item{q{plain_string}} = $_tok;
7621 13         19 push @item, $_tok;
7622            
7623             }
7624              
7625              
7626 13 50       43 Parse::RecDescent::_trace(q{>>Matched production: [plain_string]<<},
7627             Parse::RecDescent::_tracefirst($text),
7628             q{string_piece},
7629             $tracelevel)
7630             if defined $::RD_TRACE;
7631 13         15 $_matched = 1;
7632 13         23 last;
7633             }
7634              
7635              
7636 27   66     116 while (!$_matched && !$commit)
7637             {
7638            
7639 14 50       33 Parse::RecDescent::_trace(q{Trying production: [varsub]},
7640             Parse::RecDescent::_tracefirst($_[1]),
7641             q{string_piece},
7642             $tracelevel)
7643             if defined $::RD_TRACE;
7644 14         46 my $thisprod = $thisrule->{"prods"}[1];
7645 14         26 $text = $_[1];
7646 14         18 my $_savetext;
7647 14         31 @item = (q{string_piece});
7648 14         33 %item = (__RULE__ => q{string_piece});
7649 14         15 my $repcount = 0;
7650              
7651              
7652 14 50       32 Parse::RecDescent::_trace(q{Trying subrule: [varsub]},
7653             Parse::RecDescent::_tracefirst($text),
7654             q{string_piece},
7655             $tracelevel)
7656             if defined $::RD_TRACE;
7657 1     1   6 if (1) { no strict qw{refs};
  1         129  
  1         470373  
  14         13  
7658 14         45 $expectation->is(q{})->at($text);
7659 14 100   14   150 unless (defined ($_tok = Parse::RecDescent::Petal::CodePerl::Parser::varsub($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  14         25  
7660             {
7661            
7662 7 50       16 Parse::RecDescent::_trace(q{<>},
7663             Parse::RecDescent::_tracefirst($text),
7664             q{string_piece},
7665             $tracelevel)
7666             if defined $::RD_TRACE;
7667 7         32 $expectation->failed();
7668 7         31 last;
7669             }
7670 7 50       35 Parse::RecDescent::_trace(q{>>Matched subrule: [varsub]<< (return value: [}
7671             . $_tok . q{]},
7672            
7673             Parse::RecDescent::_tracefirst($text),
7674             q{string_piece},
7675             $tracelevel)
7676             if defined $::RD_TRACE;
7677 7         19 $item{q{varsub}} = $_tok;
7678 7         16 push @item, $_tok;
7679            
7680             }
7681              
7682              
7683 7 50       22 Parse::RecDescent::_trace(q{>>Matched production: [varsub]<<},
7684             Parse::RecDescent::_tracefirst($text),
7685             q{string_piece},
7686             $tracelevel)
7687             if defined $::RD_TRACE;
7688 7         10 $_matched = 1;
7689 7         13 last;
7690             }
7691              
7692              
7693 27 50 66     123 unless ( $_matched || defined($return) || defined($score) )
      66        
7694             {
7695            
7696              
7697 7         14 $_[1] = $text; # NOT SURE THIS IS NEEDED
7698 7 50       62 Parse::RecDescent::_trace(q{<>},
7699             Parse::RecDescent::_tracefirst($_[1]),
7700             q{string_piece},
7701             $tracelevel)
7702             if defined $::RD_TRACE;
7703 7         54 return undef;
7704             }
7705 20 50 33     90 if (!defined($return) && defined($score))
7706             {
7707 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7708             q{string_piece},
7709             $tracelevel)
7710             if defined $::RD_TRACE;
7711 0         0 $return = $score_return;
7712             }
7713 20         27 splice @{$thisparser->{errors}}, $err_at;
  20         71  
7714 20 50       49 $return = $item[$#item] unless defined $return;
7715 20 50       43 if (defined $::RD_TRACE)
7716             {
7717 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7718             $return . q{])}, "",
7719             q{string_piece},
7720             $tracelevel);
7721 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7722             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7723             Parse::RecDescent::_tracefirst($text),
7724             , q{string_piece},
7725             $tracelevel)
7726             }
7727 20         37 $_[1] = $text;
7728 20         153 return $return;
7729             }
7730             }
7731 1     1 0 961 package Petal::CodePerl::Parser; sub new { my $self = bless( {
7732             '_AUTOTREE' => undef,
7733             'localvars' => '',
7734             'startcode' => '',
7735             '_check' => {
7736             'thisoffset' => '',
7737             'itempos' => '',
7738             'prevoffset' => '',
7739             'prevline' => '',
7740             'prevcolumn' => '',
7741             'thiscolumn' => ''
7742             },
7743             'namespace' => 'Parse::RecDescent::Petal::CodePerl::Parser',
7744             '_AUTOACTION' => undef,
7745             'rules' => {
7746             'empty_method' => bless( {
7747             'impcount' => 0,
7748             'calls' => [
7749             'separator',
7750             'url_segment'
7751             ],
7752             'opcount' => 0,
7753             'prods' => [
7754             bless( {
7755             'number' => '0',
7756             'strcount' => 1,
7757             'dircount' => 0,
7758             'uncommit' => undef,
7759             'error' => undef,
7760             'patcount' => 0,
7761             'actcount' => 1,
7762             'items' => [
7763             bless( {
7764             'subrule' => 'separator',
7765             'matchrule' => 0,
7766             'implicit' => undef,
7767             'argcode' => undef,
7768             'lookahead' => 0,
7769             'line' => 130
7770             }, 'Parse::RecDescent::Subrule' ),
7771             bless( {
7772             'subrule' => 'url_segment',
7773             'matchrule' => 0,
7774             'implicit' => undef,
7775             'argcode' => undef,
7776             'lookahead' => 0,
7777             'line' => 130
7778             }, 'Parse::RecDescent::Subrule' ),
7779             bless( {
7780             'pattern' => '()',
7781             'hashname' => '__STRING1__',
7782             'description' => '\'()\'',
7783             'lookahead' => 0,
7784             'line' => 130
7785             }, 'Parse::RecDescent::Literal' ),
7786             bless( {
7787             'hashname' => '__ACTION1__',
7788             'lookahead' => 0,
7789             'line' => 130,
7790             'code' => '{ [\'method\', $item{url_segment}] }'
7791             }, 'Parse::RecDescent::Action' )
7792             ],
7793             'line' => undef
7794             }, 'Parse::RecDescent::Production' )
7795             ],
7796             'name' => 'empty_method',
7797             'vars' => '',
7798             'changed' => 0,
7799             'line' => 130
7800             }, 'Parse::RecDescent::Rule' ),
7801             'mod_expr_revert' => bless( {
7802             'impcount' => 0,
7803             'calls' => [
7804             'mod_name'
7805             ],
7806             'opcount' => 0,
7807             'prods' => [
7808             bless( {
7809             'number' => '0',
7810             'strcount' => 1,
7811             'dircount' => 0,
7812             'uncommit' => undef,
7813             'error' => undef,
7814             'patcount' => 2,
7815             'actcount' => 1,
7816             'items' => [
7817             bless( {
7818             'subrule' => 'mod_name',
7819             'matchrule' => 0,
7820             'implicit' => undef,
7821             'argcode' => undef,
7822             'lookahead' => 0,
7823             'line' => 55
7824             }, 'Parse::RecDescent::Subrule' ),
7825             bless( {
7826             'description' => '/\\\\s*/',
7827             'rdelim' => '/',
7828             'pattern' => '\\s*',
7829             'hashname' => '__PATTERN1__',
7830             'lookahead' => 0,
7831             'ldelim' => '/',
7832             'mod' => '',
7833             'line' => 55
7834             }, 'Parse::RecDescent::Token' ),
7835             bless( {
7836             'pattern' => ':',
7837             'hashname' => '__STRING1__',
7838             'description' => '\':\'',
7839             'lookahead' => 0,
7840             'line' => 55
7841             }, 'Parse::RecDescent::Literal' ),
7842             bless( {
7843             'description' => '/.*/',
7844             'rdelim' => '/',
7845             'pattern' => '.*',
7846             'hashname' => '__PATTERN2__',
7847             'lookahead' => 0,
7848             'ldelim' => '/',
7849             'mod' => '',
7850             'line' => 55
7851             }, 'Parse::RecDescent::Token' ),
7852             bless( {
7853             'hashname' => '__ACTION1__',
7854             'lookahead' => 0,
7855             'line' => 55,
7856             'code' => '{
7857              
7858             # make sure Petal doesn\'t escape it because we will
7859             my $key = "structure ".join("", @item[1, 2, 3, 4]);
7860              
7861             Code::Perl::Expr::callm(
7862             $Petal::CodePerl::Compiler::root,
7863             "get",
7864             $key
7865             );
7866             }'
7867             }, 'Parse::RecDescent::Action' )
7868             ],
7869             'line' => undef
7870             }, 'Parse::RecDescent::Production' )
7871             ],
7872             'name' => 'mod_expr_revert',
7873             'vars' => '',
7874             'changed' => 0,
7875             'line' => 54
7876             }, 'Parse::RecDescent::Rule' ),
7877             'string' => bless( {
7878             'impcount' => 0,
7879             'calls' => [
7880             'string_piece'
7881             ],
7882             'opcount' => 0,
7883             'prods' => [
7884             bless( {
7885             'number' => '0',
7886             'strcount' => 0,
7887             'dircount' => 0,
7888             'uncommit' => undef,
7889             'error' => undef,
7890             'patcount' => 0,
7891             'actcount' => 1,
7892             'items' => [
7893             bless( {
7894             'subrule' => 'string_piece',
7895             'expected' => undef,
7896             'min' => 0,
7897             'argcode' => undef,
7898             'max' => 100000000,
7899             'matchrule' => 0,
7900             'repspec' => 's?',
7901             'lookahead' => 0,
7902             'line' => 149
7903             }, 'Parse::RecDescent::Repetition' ),
7904             bless( {
7905             'hashname' => '__ACTION1__',
7906             'lookahead' => 0,
7907             'line' => 149,
7908             'code' => '{
7909             Code::Perl::Expr::append(@{$item[1]})
7910             }'
7911             }, 'Parse::RecDescent::Action' )
7912             ],
7913             'line' => undef
7914             }, 'Parse::RecDescent::Production' )
7915             ],
7916             'name' => 'string',
7917             'vars' => '',
7918             'changed' => 0,
7919             'line' => 148
7920             }, 'Parse::RecDescent::Rule' ),
7921             'path_expr' => bless( {
7922             'impcount' => 0,
7923             'calls' => [
7924             'single_path'
7925             ],
7926             'opcount' => 0,
7927             'prods' => [
7928             bless( {
7929             'number' => '0',
7930             'strcount' => 1,
7931             'dircount' => 1,
7932             'uncommit' => undef,
7933             'error' => undef,
7934             'patcount' => 0,
7935             'actcount' => 1,
7936             'items' => [
7937             bless( {
7938             'pattern' => 'path:',
7939             'hashname' => '__STRING1__',
7940             'description' => '\'path:\'',
7941             'lookahead' => 0,
7942             'line' => 15
7943             }, 'Parse::RecDescent::InterpLit' ),
7944             bless( {
7945             'hashname' => '__DIRECTIVE1__',
7946             'name' => '',
7947             'lookahead' => 0,
7948             'line' => 15,
7949             'code' => '$commit = 1'
7950             }, 'Parse::RecDescent::Directive' ),
7951             bless( {
7952             'subrule' => 'single_path',
7953             'matchrule' => 0,
7954             'implicit' => undef,
7955             'argcode' => undef,
7956             'lookahead' => 0,
7957             'line' => 15
7958             }, 'Parse::RecDescent::Subrule' ),
7959             bless( {
7960             'hashname' => '__ACTION1__',
7961             'lookahead' => 0,
7962             'line' => 15,
7963             'code' => '{ $item{path} }'
7964             }, 'Parse::RecDescent::Action' )
7965             ],
7966             'line' => undef
7967             }, 'Parse::RecDescent::Production' )
7968             ],
7969             'name' => 'path_expr',
7970             'vars' => '',
7971             'changed' => 0,
7972             'line' => 15
7973             }, 'Parse::RecDescent::Rule' ),
7974             '_alternation_1_of_production_1_of_rule_plain_string' => bless( {
7975             'impcount' => 0,
7976             'calls' => [
7977             'dollar',
7978             'non_dollar'
7979             ],
7980             'opcount' => 0,
7981             'prods' => [
7982             bless( {
7983             'number' => '0',
7984             'strcount' => 0,
7985             'dircount' => 0,
7986             'uncommit' => undef,
7987             'error' => undef,
7988             'patcount' => 0,
7989             'actcount' => 0,
7990             'items' => [
7991             bless( {
7992             'subrule' => 'dollar',
7993             'matchrule' => 0,
7994             'implicit' => undef,
7995             'argcode' => undef,
7996             'lookahead' => 0,
7997             'line' => 169
7998             }, 'Parse::RecDescent::Subrule' )
7999             ],
8000             'line' => undef
8001             }, 'Parse::RecDescent::Production' ),
8002             bless( {
8003             'number' => '1',
8004             'strcount' => 0,
8005             'dircount' => 0,
8006             'uncommit' => undef,
8007             'error' => undef,
8008             'patcount' => 0,
8009             'actcount' => 0,
8010             'items' => [
8011             bless( {
8012             'subrule' => 'non_dollar',
8013             'matchrule' => 0,
8014             'implicit' => undef,
8015             'argcode' => undef,
8016             'lookahead' => 0,
8017             'line' => 169
8018             }, 'Parse::RecDescent::Subrule' )
8019             ],
8020             'line' => 169
8021             }, 'Parse::RecDescent::Production' )
8022             ],
8023             'name' => '_alternation_1_of_production_1_of_rule_plain_string',
8024             'vars' => '',
8025             'changed' => 0,
8026             'line' => 169
8027             }, 'Parse::RecDescent::Rule' ),
8028             'single_expr' => bless( {
8029             'impcount' => 0,
8030             'calls' => [
8031             'qual_expr',
8032             'single_path'
8033             ],
8034             'opcount' => 0,
8035             'prods' => [
8036             bless( {
8037             'number' => '0',
8038             'strcount' => 0,
8039             'dircount' => 0,
8040             'uncommit' => undef,
8041             'error' => undef,
8042             'patcount' => 0,
8043             'actcount' => 0,
8044             'items' => [
8045             bless( {
8046             'subrule' => 'qual_expr',
8047             'matchrule' => 0,
8048             'implicit' => undef,
8049             'argcode' => undef,
8050             'lookahead' => 0,
8051             'line' => 9
8052             }, 'Parse::RecDescent::Subrule' )
8053             ],
8054             'line' => undef
8055             }, 'Parse::RecDescent::Production' ),
8056             bless( {
8057             'number' => '1',
8058             'strcount' => 0,
8059             'dircount' => 0,
8060             'uncommit' => undef,
8061             'error' => undef,
8062             'patcount' => 0,
8063             'actcount' => 0,
8064             'items' => [
8065             bless( {
8066             'subrule' => 'single_path',
8067             'matchrule' => 0,
8068             'implicit' => undef,
8069             'argcode' => undef,
8070             'lookahead' => 0,
8071             'line' => 9
8072             }, 'Parse::RecDescent::Subrule' )
8073             ],
8074             'line' => 9
8075             }, 'Parse::RecDescent::Production' )
8076             ],
8077             'name' => 'single_expr',
8078             'vars' => '',
8079             'changed' => 0,
8080             'line' => 9
8081             }, 'Parse::RecDescent::Rule' ),
8082             'integer' => bless( {
8083             'impcount' => 0,
8084             'calls' => [],
8085             'opcount' => 0,
8086             'prods' => [
8087             bless( {
8088             'number' => '0',
8089             'strcount' => 0,
8090             'dircount' => 0,
8091             'uncommit' => undef,
8092             'error' => undef,
8093             'patcount' => 1,
8094             'actcount' => 0,
8095             'items' => [
8096             bless( {
8097             'description' => '/[0-9]+/',
8098             'rdelim' => '/',
8099             'pattern' => '[0-9]+',
8100             'hashname' => '__PATTERN1__',
8101             'lookahead' => 0,
8102             'ldelim' => '/',
8103             'mod' => '',
8104             'line' => 126
8105             }, 'Parse::RecDescent::Token' )
8106             ],
8107             'line' => undef
8108             }, 'Parse::RecDescent::Production' )
8109             ],
8110             'name' => 'integer',
8111             'vars' => '',
8112             'changed' => 0,
8113             'line' => 126
8114             }, 'Parse::RecDescent::Rule' ),
8115             'mm_string' => bless( {
8116             'impcount' => 0,
8117             'calls' => [],
8118             'opcount' => 0,
8119             'prods' => [
8120             bless( {
8121             'number' => '0',
8122             'strcount' => 1,
8123             'dircount' => 0,
8124             'uncommit' => undef,
8125             'error' => undef,
8126             'patcount' => 1,
8127             'actcount' => 0,
8128             'items' => [
8129             bless( {
8130             'pattern' => '--',
8131             'hashname' => '__STRING1__',
8132             'description' => '\'--\'',
8133             'lookahead' => 0,
8134             'line' => 142
8135             }, 'Parse::RecDescent::Literal' ),
8136             bless( {
8137             'description' => '/\\\\S+/',
8138             'rdelim' => '/',
8139             'pattern' => '\\S+',
8140             'hashname' => '__PATTERN1__',
8141             'lookahead' => 0,
8142             'ldelim' => '/',
8143             'mod' => '',
8144             'line' => 142
8145             }, 'Parse::RecDescent::Token' )
8146             ],
8147             'line' => undef
8148             }, 'Parse::RecDescent::Production' )
8149             ],
8150             'name' => 'mm_string',
8151             'vars' => '',
8152             'changed' => 0,
8153             'line' => 142
8154             }, 'Parse::RecDescent::Rule' ),
8155             'qual_expr' => bless( {
8156             'impcount' => 0,
8157             'calls' => [
8158             'path_expr',
8159             'not_expr',
8160             'string_expr',
8161             'exists_expr',
8162             'perl_expr',
8163             'mod_expr'
8164             ],
8165             'opcount' => 0,
8166             'prods' => [
8167             bless( {
8168             'number' => '0',
8169             'strcount' => 0,
8170             'dircount' => 0,
8171             'uncommit' => undef,
8172             'error' => undef,
8173             'patcount' => 0,
8174             'actcount' => 0,
8175             'items' => [
8176             bless( {
8177             'subrule' => 'path_expr',
8178             'matchrule' => 0,
8179             'implicit' => undef,
8180             'argcode' => undef,
8181             'lookahead' => 0,
8182             'line' => 12
8183             }, 'Parse::RecDescent::Subrule' )
8184             ],
8185             'line' => undef
8186             }, 'Parse::RecDescent::Production' ),
8187             bless( {
8188             'number' => '1',
8189             'strcount' => 0,
8190             'dircount' => 0,
8191             'uncommit' => undef,
8192             'error' => undef,
8193             'patcount' => 0,
8194             'actcount' => 0,
8195             'items' => [
8196             bless( {
8197             'subrule' => 'not_expr',
8198             'matchrule' => 0,
8199             'implicit' => undef,
8200             'argcode' => undef,
8201             'lookahead' => 0,
8202             'line' => 12
8203             }, 'Parse::RecDescent::Subrule' )
8204             ],
8205             'line' => 12
8206             }, 'Parse::RecDescent::Production' ),
8207             bless( {
8208             'number' => '2',
8209             'strcount' => 0,
8210             'dircount' => 0,
8211             'uncommit' => undef,
8212             'error' => undef,
8213             'patcount' => 0,
8214             'actcount' => 0,
8215             'items' => [
8216             bless( {
8217             'subrule' => 'string_expr',
8218             'matchrule' => 0,
8219             'implicit' => undef,
8220             'argcode' => undef,
8221             'lookahead' => 0,
8222             'line' => 12
8223             }, 'Parse::RecDescent::Subrule' )
8224             ],
8225             'line' => 12
8226             }, 'Parse::RecDescent::Production' ),
8227             bless( {
8228             'number' => '3',
8229             'strcount' => 0,
8230             'dircount' => 0,
8231             'uncommit' => undef,
8232             'error' => undef,
8233             'patcount' => 0,
8234             'actcount' => 0,
8235             'items' => [
8236             bless( {
8237             'subrule' => 'exists_expr',
8238             'matchrule' => 0,
8239             'implicit' => undef,
8240             'argcode' => undef,
8241             'lookahead' => 0,
8242             'line' => 12
8243             }, 'Parse::RecDescent::Subrule' )
8244             ],
8245             'line' => 12
8246             }, 'Parse::RecDescent::Production' ),
8247             bless( {
8248             'number' => '4',
8249             'strcount' => 0,
8250             'dircount' => 0,
8251             'uncommit' => undef,
8252             'error' => undef,
8253             'patcount' => 0,
8254             'actcount' => 0,
8255             'items' => [
8256             bless( {
8257             'subrule' => 'perl_expr',
8258             'matchrule' => 0,
8259             'implicit' => undef,
8260             'argcode' => undef,
8261             'lookahead' => 0,
8262             'line' => 13
8263             }, 'Parse::RecDescent::Subrule' )
8264             ],
8265             'line' => 12
8266             }, 'Parse::RecDescent::Production' ),
8267             bless( {
8268             'number' => '5',
8269             'strcount' => 0,
8270             'dircount' => 0,
8271             'uncommit' => undef,
8272             'error' => undef,
8273             'patcount' => 0,
8274             'actcount' => 0,
8275             'items' => [
8276             bless( {
8277             'subrule' => 'mod_expr',
8278             'matchrule' => 0,
8279             'implicit' => undef,
8280             'argcode' => undef,
8281             'lookahead' => 0,
8282             'line' => 13
8283             }, 'Parse::RecDescent::Subrule' )
8284             ],
8285             'line' => 13
8286             }, 'Parse::RecDescent::Production' )
8287             ],
8288             'name' => 'qual_expr',
8289             'vars' => '',
8290             'changed' => 0,
8291             'line' => 11
8292             }, 'Parse::RecDescent::Rule' ),
8293             'hash_deref' => bless( {
8294             'impcount' => 0,
8295             'calls' => [
8296             'url_segment'
8297             ],
8298             'opcount' => 0,
8299             'prods' => [
8300             bless( {
8301             'number' => '0',
8302             'strcount' => 2,
8303             'dircount' => 0,
8304             'uncommit' => undef,
8305             'error' => undef,
8306             'patcount' => 0,
8307             'actcount' => 1,
8308             'items' => [
8309             bless( {
8310             'pattern' => '{',
8311             'hashname' => '__STRING1__',
8312             'description' => '\'\\{\'',
8313             'lookahead' => 0,
8314             'line' => 122
8315             }, 'Parse::RecDescent::Literal' ),
8316             bless( {
8317             'subrule' => 'url_segment',
8318             'matchrule' => 0,
8319             'implicit' => undef,
8320             'argcode' => undef,
8321             'lookahead' => 0,
8322             'line' => 122
8323             }, 'Parse::RecDescent::Subrule' ),
8324             bless( {
8325             'pattern' => '}',
8326             'hashname' => '__STRING2__',
8327             'description' => '\'\\}\'',
8328             'lookahead' => 0,
8329             'line' => 122
8330             }, 'Parse::RecDescent::Literal' ),
8331             bless( {
8332             'hashname' => '__ACTION1__',
8333             'lookahead' => 0,
8334             'line' => 122,
8335             'code' => '{ [\'hash\', $item{url_segment}] }'
8336             }, 'Parse::RecDescent::Action' )
8337             ],
8338             'line' => undef
8339             }, 'Parse::RecDescent::Production' )
8340             ],
8341             'name' => 'hash_deref',
8342             'vars' => '',
8343             'changed' => 0,
8344             'line' => 122
8345             }, 'Parse::RecDescent::Rule' ),
8346             'exists_expr' => bless( {
8347             'impcount' => 0,
8348             'calls' => [
8349             'path_expr'
8350             ],
8351             'opcount' => 0,
8352             'prods' => [
8353             bless( {
8354             'number' => '0',
8355             'strcount' => 1,
8356             'dircount' => 1,
8357             'uncommit' => undef,
8358             'error' => undef,
8359             'patcount' => 0,
8360             'actcount' => 1,
8361             'items' => [
8362             bless( {
8363             'pattern' => 'exists:',
8364             'hashname' => '__STRING1__',
8365             'description' => '\'exists:\'',
8366             'lookahead' => 0,
8367             'line' => 24
8368             }, 'Parse::RecDescent::InterpLit' ),
8369             bless( {
8370             'hashname' => '__DIRECTIVE1__',
8371             'name' => '',
8372             'lookahead' => 0,
8373             'line' => 24,
8374             'code' => '$commit = 1'
8375             }, 'Parse::RecDescent::Directive' ),
8376             bless( {
8377             'subrule' => 'path_expr',
8378             'matchrule' => 0,
8379             'implicit' => undef,
8380             'argcode' => undef,
8381             'lookahead' => 0,
8382             'line' => 24
8383             }, 'Parse::RecDescent::Subrule' ),
8384             bless( {
8385             'hashname' => '__ACTION1__',
8386             'lookahead' => 0,
8387             'line' => 24,
8388             'code' => '{ Petal::CodePerl::Expr::pathexists($item{expr}) }'
8389             }, 'Parse::RecDescent::Action' )
8390             ],
8391             'line' => undef
8392             }, 'Parse::RecDescent::Production' )
8393             ],
8394             'name' => 'exists_expr',
8395             'vars' => '',
8396             'changed' => 0,
8397             'line' => 24
8398             }, 'Parse::RecDescent::Rule' ),
8399             'dollar' => bless( {
8400             'impcount' => 0,
8401             'calls' => [],
8402             'opcount' => 0,
8403             'prods' => [
8404             bless( {
8405             'number' => '0',
8406             'strcount' => 1,
8407             'dircount' => 0,
8408             'uncommit' => undef,
8409             'error' => undef,
8410             'patcount' => 0,
8411             'actcount' => 1,
8412             'items' => [
8413             bless( {
8414             'pattern' => '$$',
8415             'hashname' => '__STRING1__',
8416             'description' => '\'$$\'',
8417             'lookahead' => 0,
8418             'line' => 163
8419             }, 'Parse::RecDescent::Literal' ),
8420             bless( {
8421             'hashname' => '__ACTION1__',
8422             'lookahead' => 0,
8423             'line' => 163,
8424             'code' => '{ \'$\' }'
8425             }, 'Parse::RecDescent::Action' )
8426             ],
8427             'line' => undef
8428             }, 'Parse::RecDescent::Production' )
8429             ],
8430             'name' => 'dollar',
8431             'vars' => '',
8432             'changed' => 0,
8433             'line' => 163
8434             }, 'Parse::RecDescent::Rule' ),
8435             'deref' => bless( {
8436             'impcount' => 0,
8437             'calls' => [
8438             'method_call',
8439             'tal_deref',
8440             'hash_deref',
8441             'array_deref'
8442             ],
8443             'opcount' => 0,
8444             'prods' => [
8445             bless( {
8446             'number' => '0',
8447             'strcount' => 0,
8448             'dircount' => 0,
8449             'uncommit' => undef,
8450             'error' => undef,
8451             'patcount' => 0,
8452             'actcount' => 0,
8453             'items' => [
8454             bless( {
8455             'subrule' => 'method_call',
8456             'matchrule' => 0,
8457             'implicit' => undef,
8458             'argcode' => undef,
8459             'lookahead' => 0,
8460             'line' => 118
8461             }, 'Parse::RecDescent::Subrule' )
8462             ],
8463             'line' => undef
8464             }, 'Parse::RecDescent::Production' ),
8465             bless( {
8466             'number' => '1',
8467             'strcount' => 0,
8468             'dircount' => 0,
8469             'uncommit' => undef,
8470             'error' => undef,
8471             'patcount' => 0,
8472             'actcount' => 0,
8473             'items' => [
8474             bless( {
8475             'subrule' => 'tal_deref',
8476             'matchrule' => 0,
8477             'implicit' => undef,
8478             'argcode' => undef,
8479             'lookahead' => 0,
8480             'line' => 118
8481             }, 'Parse::RecDescent::Subrule' )
8482             ],
8483             'line' => 118
8484             }, 'Parse::RecDescent::Production' ),
8485             bless( {
8486             'number' => '2',
8487             'strcount' => 0,
8488             'dircount' => 0,
8489             'uncommit' => undef,
8490             'error' => undef,
8491             'patcount' => 0,
8492             'actcount' => 0,
8493             'items' => [
8494             bless( {
8495             'subrule' => 'hash_deref',
8496             'matchrule' => 0,
8497             'implicit' => undef,
8498             'argcode' => undef,
8499             'lookahead' => 0,
8500             'line' => 118
8501             }, 'Parse::RecDescent::Subrule' )
8502             ],
8503             'line' => 118
8504             }, 'Parse::RecDescent::Production' ),
8505             bless( {
8506             'number' => '3',
8507             'strcount' => 0,
8508             'dircount' => 0,
8509             'uncommit' => undef,
8510             'error' => undef,
8511             'patcount' => 0,
8512             'actcount' => 0,
8513             'items' => [
8514             bless( {
8515             'subrule' => 'array_deref',
8516             'matchrule' => 0,
8517             'implicit' => undef,
8518             'argcode' => undef,
8519             'lookahead' => 0,
8520             'line' => 118
8521             }, 'Parse::RecDescent::Subrule' )
8522             ],
8523             'line' => 118
8524             }, 'Parse::RecDescent::Production' )
8525             ],
8526             'name' => 'deref',
8527             'vars' => '',
8528             'changed' => 0,
8529             'line' => 118
8530             }, 'Parse::RecDescent::Rule' ),
8531             'mod_expr' => bless( {
8532             'impcount' => 0,
8533             'calls' => [
8534             'mod_expr_compile',
8535             'mod_expr_revert'
8536             ],
8537             'opcount' => 0,
8538             'prods' => [
8539             bless( {
8540             'number' => '0',
8541             'strcount' => 0,
8542             'dircount' => 0,
8543             'uncommit' => undef,
8544             'error' => undef,
8545             'patcount' => 0,
8546             'actcount' => 0,
8547             'items' => [
8548             bless( {
8549             'subrule' => 'mod_expr_compile',
8550             'matchrule' => 0,
8551             'implicit' => undef,
8552             'argcode' => undef,
8553             'lookahead' => 0,
8554             'line' => 28
8555             }, 'Parse::RecDescent::Subrule' )
8556             ],
8557             'line' => undef
8558             }, 'Parse::RecDescent::Production' ),
8559             bless( {
8560             'number' => '1',
8561             'strcount' => 0,
8562             'dircount' => 0,
8563             'uncommit' => undef,
8564             'error' => undef,
8565             'patcount' => 0,
8566             'actcount' => 0,
8567             'items' => [
8568             bless( {
8569             'subrule' => 'mod_expr_revert',
8570             'matchrule' => 0,
8571             'implicit' => undef,
8572             'argcode' => undef,
8573             'lookahead' => 0,
8574             'line' => 28
8575             }, 'Parse::RecDescent::Subrule' )
8576             ],
8577             'line' => 28
8578             }, 'Parse::RecDescent::Production' )
8579             ],
8580             'name' => 'mod_expr',
8581             'vars' => '',
8582             'changed' => 0,
8583             'line' => 28
8584             }, 'Parse::RecDescent::Rule' ),
8585             'string_argument' => bless( {
8586             'impcount' => 1,
8587             'calls' => [
8588             '_alternation_1_of_production_1_of_rule_string_argument'
8589             ],
8590             'opcount' => 0,
8591             'prods' => [
8592             bless( {
8593             'number' => '0',
8594             'strcount' => 0,
8595             'dircount' => 0,
8596             'uncommit' => undef,
8597             'error' => undef,
8598             'patcount' => 0,
8599             'actcount' => 1,
8600             'items' => [
8601             bless( {
8602             'subrule' => '_alternation_1_of_production_1_of_rule_string_argument',
8603             'matchrule' => 0,
8604             'implicit' => 'mm_string, or qq_string, or q_string',
8605             'argcode' => undef,
8606             'lookahead' => 0,
8607             'line' => 138
8608             }, 'Parse::RecDescent::Subrule' ),
8609             bless( {
8610             'hashname' => '__ACTION1__',
8611             'lookahead' => 0,
8612             'line' => 138,
8613             'code' => '{
8614             Code::Perl::Expr::string($item[1])
8615             }'
8616             }, 'Parse::RecDescent::Action' )
8617             ],
8618             'line' => undef
8619             }, 'Parse::RecDescent::Production' )
8620             ],
8621             'name' => 'string_argument',
8622             'vars' => '',
8623             'changed' => 0,
8624             'line' => 138
8625             }, 'Parse::RecDescent::Rule' ),
8626             'arg_method' => bless( {
8627             'impcount' => 0,
8628             'calls' => [
8629             'separator',
8630             'url_segment',
8631             'argument'
8632             ],
8633             'opcount' => 0,
8634             'prods' => [
8635             bless( {
8636             'number' => '0',
8637             'strcount' => 0,
8638             'dircount' => 1,
8639             'uncommit' => undef,
8640             'error' => undef,
8641             'patcount' => 2,
8642             'actcount' => 1,
8643             'op' => [],
8644             'items' => [
8645             bless( {
8646             'subrule' => 'separator',
8647             'matchrule' => 0,
8648             'implicit' => undef,
8649             'argcode' => undef,
8650             'lookahead' => 0,
8651             'line' => 132
8652             }, 'Parse::RecDescent::Subrule' ),
8653             bless( {
8654             'subrule' => 'url_segment',
8655             'matchrule' => 0,
8656             'implicit' => undef,
8657             'argcode' => undef,
8658             'lookahead' => 0,
8659             'line' => 132
8660             }, 'Parse::RecDescent::Subrule' ),
8661             bless( {
8662             'description' => '/\\\\s+/',
8663             'rdelim' => '/',
8664             'pattern' => '\\s+',
8665             'hashname' => '__PATTERN1__',
8666             'lookahead' => 0,
8667             'ldelim' => '/',
8668             'mod' => '',
8669             'line' => 132
8670             }, 'Parse::RecDescent::Token' ),
8671             bless( {
8672             'expected' => '',
8673             'min' => 1,
8674             'name' => '\'argument(s)\'',
8675             'max' => 100000000,
8676             'leftarg' => bless( {
8677             'subrule' => 'argument',
8678             'matchrule' => 0,
8679             'implicit' => undef,
8680             'argcode' => undef,
8681             'lookahead' => 0,
8682             'line' => 132
8683             }, 'Parse::RecDescent::Subrule' ),
8684             'rightarg' => bless( {
8685             'subrule' => 'argument',
8686             'matchrule' => 0,
8687             'implicit' => undef,
8688             'argcode' => undef,
8689             'lookahead' => 0,
8690             'line' => 132
8691             }, 'Parse::RecDescent::Subrule' ),
8692             'hashname' => '__DIRECTIVE1__',
8693             'type' => 'leftop',
8694             'op' => bless( {
8695             'description' => '/\\\\s+/',
8696             'rdelim' => '/',
8697             'pattern' => '\\s+',
8698             'hashname' => '__PATTERN2__',
8699             'lookahead' => 0,
8700             'ldelim' => '/',
8701             'mod' => '',
8702             'line' => 132
8703             }, 'Parse::RecDescent::Token' )
8704             }, 'Parse::RecDescent::Operator' ),
8705             bless( {
8706             'hashname' => '__ACTION1__',
8707             'lookahead' => 0,
8708             'line' => 132,
8709             'code' => '{
8710             [\'method\', $item{url_segment}, @{$item[4]}]
8711             }'
8712             }, 'Parse::RecDescent::Action' )
8713             ],
8714             'line' => undef
8715             }, 'Parse::RecDescent::Production' )
8716             ],
8717             'name' => 'arg_method',
8718             'vars' => '',
8719             'changed' => 0,
8720             'line' => 132
8721             }, 'Parse::RecDescent::Rule' ),
8722             'non_dollar' => bless( {
8723             'impcount' => 0,
8724             'calls' => [],
8725             'opcount' => 0,
8726             'prods' => [
8727             bless( {
8728             'number' => '0',
8729             'strcount' => 0,
8730             'dircount' => 0,
8731             'uncommit' => undef,
8732             'error' => undef,
8733             'patcount' => 1,
8734             'actcount' => 0,
8735             'items' => [
8736             bless( {
8737             'description' => '/[^\\\\$]+/',
8738             'rdelim' => '/',
8739             'pattern' => '[^\\$]+',
8740             'hashname' => '__PATTERN1__',
8741             'lookahead' => 0,
8742             'ldelim' => '/',
8743             'mod' => '',
8744             'line' => 165
8745             }, 'Parse::RecDescent::Token' )
8746             ],
8747             'line' => undef
8748             }, 'Parse::RecDescent::Production' )
8749             ],
8750             'name' => 'non_dollar',
8751             'vars' => '',
8752             'changed' => 0,
8753             'line' => 165
8754             }, 'Parse::RecDescent::Rule' ),
8755             'q_string' => bless( {
8756             'impcount' => 0,
8757             'calls' => [],
8758             'opcount' => 0,
8759             'prods' => [
8760             bless( {
8761             'number' => '0',
8762             'strcount' => 2,
8763             'dircount' => 0,
8764             'uncommit' => undef,
8765             'error' => undef,
8766             'patcount' => 1,
8767             'actcount' => 1,
8768             'items' => [
8769             bless( {
8770             'pattern' => '\'',
8771             'hashname' => '__STRING1__',
8772             'description' => '\'\'\'',
8773             'lookahead' => 0,
8774             'line' => 144
8775             }, 'Parse::RecDescent::InterpLit' ),
8776             bless( {
8777             'description' => '/[^\']*/',
8778             'rdelim' => '/',
8779             'pattern' => '[^\']*',
8780             'hashname' => '__PATTERN1__',
8781             'lookahead' => 0,
8782             'ldelim' => '/',
8783             'mod' => '',
8784             'line' => 144
8785             }, 'Parse::RecDescent::Token' ),
8786             bless( {
8787             'pattern' => '\'',
8788             'hashname' => '__STRING2__',
8789             'description' => '\'\'\'',
8790             'lookahead' => 0,
8791             'line' => 144
8792             }, 'Parse::RecDescent::InterpLit' ),
8793             bless( {
8794             'hashname' => '__ACTION1__',
8795             'lookahead' => 0,
8796             'line' => 144,
8797             'code' => '{ $item[2] }'
8798             }, 'Parse::RecDescent::Action' )
8799             ],
8800             'line' => undef
8801             }, 'Parse::RecDescent::Production' )
8802             ],
8803             'name' => 'q_string',
8804             'vars' => '',
8805             'changed' => 0,
8806             'line' => 144
8807             }, 'Parse::RecDescent::Rule' ),
8808             'plain_string' => bless( {
8809             'impcount' => 1,
8810             'calls' => [
8811             '_alternation_1_of_production_1_of_rule_plain_string'
8812             ],
8813             'opcount' => 0,
8814             'prods' => [
8815             bless( {
8816             'number' => '0',
8817             'strcount' => 0,
8818             'dircount' => 0,
8819             'uncommit' => undef,
8820             'error' => undef,
8821             'patcount' => 0,
8822             'actcount' => 1,
8823             'items' => [
8824             bless( {
8825             'subrule' => '_alternation_1_of_production_1_of_rule_plain_string',
8826             'expected' => 'dollar, or non_dollar',
8827             'min' => 1,
8828             'argcode' => undef,
8829             'max' => 100000000,
8830             'matchrule' => 0,
8831             'repspec' => 's',
8832             'lookahead' => 0,
8833             'line' => 159
8834             }, 'Parse::RecDescent::Repetition' ),
8835             bless( {
8836             'hashname' => '__ACTION1__',
8837             'lookahead' => 0,
8838             'line' => 159,
8839             'code' => '{
8840             Code::Perl::Expr::string( join("", @{$item[1]}) )
8841             }'
8842             }, 'Parse::RecDescent::Action' )
8843             ],
8844             'line' => undef
8845             }, 'Parse::RecDescent::Production' )
8846             ],
8847             'name' => 'plain_string',
8848             'vars' => '',
8849             'changed' => 0,
8850             'line' => 158
8851             }, 'Parse::RecDescent::Rule' ),
8852             'not_expr' => bless( {
8853             'impcount' => 0,
8854             'calls' => [
8855             'expr'
8856             ],
8857             'opcount' => 0,
8858             'prods' => [
8859             bless( {
8860             'number' => '0',
8861             'strcount' => 1,
8862             'dircount' => 1,
8863             'uncommit' => undef,
8864             'error' => undef,
8865             'patcount' => 0,
8866             'actcount' => 1,
8867             'items' => [
8868             bless( {
8869             'pattern' => 'not:',
8870             'hashname' => '__STRING1__',
8871             'description' => '\'not:\'',
8872             'lookahead' => 0,
8873             'line' => 17
8874             }, 'Parse::RecDescent::InterpLit' ),
8875             bless( {
8876             'hashname' => '__DIRECTIVE1__',
8877             'name' => '',
8878             'lookahead' => 0,
8879             'line' => 17,
8880             'code' => '$commit = 1'
8881             }, 'Parse::RecDescent::Directive' ),
8882             bless( {
8883             'subrule' => 'expr',
8884             'matchrule' => 0,
8885             'implicit' => undef,
8886             'argcode' => undef,
8887             'lookahead' => 0,
8888             'line' => 17
8889             }, 'Parse::RecDescent::Subrule' ),
8890             bless( {
8891             'hashname' => '__ACTION1__',
8892             'lookahead' => 0,
8893             'line' => 17,
8894             'code' => '{
8895             Code::Perl::Expr::not($item{expr})
8896             }'
8897             }, 'Parse::RecDescent::Action' )
8898             ],
8899             'line' => undef
8900             }, 'Parse::RecDescent::Production' )
8901             ],
8902             'name' => 'not_expr',
8903             'vars' => '',
8904             'changed' => 0,
8905             'line' => 17
8906             }, 'Parse::RecDescent::Rule' ),
8907             'array_deref' => bless( {
8908             'impcount' => 0,
8909             'calls' => [
8910             'integer'
8911             ],
8912             'opcount' => 0,
8913             'prods' => [
8914             bless( {
8915             'number' => '0',
8916             'strcount' => 2,
8917             'dircount' => 0,
8918             'uncommit' => undef,
8919             'error' => undef,
8920             'patcount' => 0,
8921             'actcount' => 1,
8922             'items' => [
8923             bless( {
8924             'pattern' => '[',
8925             'hashname' => '__STRING1__',
8926             'description' => '\'[\'',
8927             'lookahead' => 0,
8928             'line' => 124
8929             }, 'Parse::RecDescent::Literal' ),
8930             bless( {
8931             'subrule' => 'integer',
8932             'matchrule' => 0,
8933             'implicit' => undef,
8934             'argcode' => undef,
8935             'lookahead' => 0,
8936             'line' => 124
8937             }, 'Parse::RecDescent::Subrule' ),
8938             bless( {
8939             'pattern' => ']',
8940             'hashname' => '__STRING2__',
8941             'description' => '\']\'',
8942             'lookahead' => 0,
8943             'line' => 124
8944             }, 'Parse::RecDescent::Literal' ),
8945             bless( {
8946             'hashname' => '__ACTION1__',
8947             'lookahead' => 0,
8948             'line' => 124,
8949             'code' => '{ [\'array\', $item{integer}] }'
8950             }, 'Parse::RecDescent::Action' )
8951             ],
8952             'line' => undef
8953             }, 'Parse::RecDescent::Production' )
8954             ],
8955             'name' => 'array_deref',
8956             'vars' => '',
8957             'changed' => 0,
8958             'line' => 124
8959             }, 'Parse::RecDescent::Rule' ),
8960             'perl_expr' => bless( {
8961             'impcount' => 0,
8962             'calls' => [],
8963             'opcount' => 0,
8964             'prods' => [
8965             bless( {
8966             'number' => '0',
8967             'strcount' => 1,
8968             'dircount' => 2,
8969             'uncommit' => undef,
8970             'error' => undef,
8971             'patcount' => 0,
8972             'actcount' => 1,
8973             'items' => [
8974             bless( {
8975             'pattern' => 'perl:',
8976             'hashname' => '__STRING1__',
8977             'description' => '\'perl:\'',
8978             'lookahead' => 0,
8979             'line' => 26
8980             }, 'Parse::RecDescent::InterpLit' ),
8981             bless( {
8982             'hashname' => '__DIRECTIVE1__',
8983             'name' => '',
8984             'lookahead' => 0,
8985             'line' => 26,
8986             'code' => '$commit = 1'
8987             }, 'Parse::RecDescent::Directive' ),
8988             bless( {
8989             'hashname' => '__DIRECTIVE2__',
8990             'name' => '',
8991             'lookahead' => 0,
8992             'line' => 26,
8993             'code' => 'Text::Balanced::extract_codeblock($text,undef,$skip,\'{}\');
8994             '
8995             }, 'Parse::RecDescent::Directive' ),
8996             bless( {
8997             'hashname' => '__ACTION1__',
8998             'lookahead' => 0,
8999             'line' => 26,
9000             'code' => '{ Code::Perl::Expr::perl($item[2]) }'
9001             }, 'Parse::RecDescent::Action' )
9002             ],
9003             'line' => undef
9004             }, 'Parse::RecDescent::Production' )
9005             ],
9006             'name' => 'perl_expr',
9007             'vars' => '',
9008             'changed' => 0,
9009             'line' => 26
9010             }, 'Parse::RecDescent::Rule' ),
9011             'argument' => bless( {
9012             'impcount' => 0,
9013             'calls' => [
9014             'string_argument',
9015             'expr'
9016             ],
9017             'opcount' => 0,
9018             'prods' => [
9019             bless( {
9020             'number' => '0',
9021             'strcount' => 0,
9022             'dircount' => 0,
9023             'uncommit' => undef,
9024             'error' => undef,
9025             'patcount' => 0,
9026             'actcount' => 0,
9027             'items' => [
9028             bless( {
9029             'subrule' => 'string_argument',
9030             'matchrule' => 0,
9031             'implicit' => undef,
9032             'argcode' => undef,
9033             'lookahead' => 0,
9034             'line' => 136
9035             }, 'Parse::RecDescent::Subrule' )
9036             ],
9037             'line' => undef
9038             }, 'Parse::RecDescent::Production' ),
9039             bless( {
9040             'number' => '1',
9041             'strcount' => 0,
9042             'dircount' => 0,
9043             'uncommit' => undef,
9044             'error' => undef,
9045             'patcount' => 0,
9046             'actcount' => 0,
9047             'items' => [
9048             bless( {
9049             'subrule' => 'expr',
9050             'matchrule' => 0,
9051             'implicit' => undef,
9052             'argcode' => undef,
9053             'lookahead' => 0,
9054             'line' => 136
9055             }, 'Parse::RecDescent::Subrule' )
9056             ],
9057             'line' => 136
9058             }, 'Parse::RecDescent::Production' )
9059             ],
9060             'name' => 'argument',
9061             'vars' => '',
9062             'changed' => 0,
9063             'line' => 136
9064             }, 'Parse::RecDescent::Rule' ),
9065             'qq_string' => bless( {
9066             'impcount' => 0,
9067             'calls' => [],
9068             'opcount' => 0,
9069             'prods' => [
9070             bless( {
9071             'number' => '0',
9072             'strcount' => 2,
9073             'dircount' => 0,
9074             'uncommit' => undef,
9075             'error' => undef,
9076             'patcount' => 1,
9077             'actcount' => 1,
9078             'items' => [
9079             bless( {
9080             'pattern' => '"',
9081             'hashname' => '__STRING1__',
9082             'description' => '\'"\'',
9083             'lookahead' => 0,
9084             'line' => 143
9085             }, 'Parse::RecDescent::Literal' ),
9086             bless( {
9087             'description' => '/[^"]*/',
9088             'rdelim' => '/',
9089             'pattern' => '[^"]*',
9090             'hashname' => '__PATTERN1__',
9091             'lookahead' => 0,
9092             'ldelim' => '/',
9093             'mod' => '',
9094             'line' => 143
9095             }, 'Parse::RecDescent::Token' ),
9096             bless( {
9097             'pattern' => '"',
9098             'hashname' => '__STRING2__',
9099             'description' => '\'"\'',
9100             'lookahead' => 0,
9101             'line' => 143
9102             }, 'Parse::RecDescent::Literal' ),
9103             bless( {
9104             'hashname' => '__ACTION1__',
9105             'lookahead' => 0,
9106             'line' => 143,
9107             'code' => '{ $item[2] }'
9108             }, 'Parse::RecDescent::Action' )
9109             ],
9110             'line' => undef
9111             }, 'Parse::RecDescent::Production' )
9112             ],
9113             'name' => 'qq_string',
9114             'vars' => '',
9115             'changed' => 0,
9116             'line' => 143
9117             }, 'Parse::RecDescent::Rule' ),
9118             'expr' => bless( {
9119             'impcount' => 0,
9120             'calls' => [
9121             'single_expr'
9122             ],
9123             'opcount' => 0,
9124             'prods' => [
9125             bless( {
9126             'number' => '0',
9127             'strcount' => 0,
9128             'dircount' => 1,
9129             'uncommit' => undef,
9130             'error' => undef,
9131             'patcount' => 1,
9132             'actcount' => 1,
9133             'op' => [],
9134             'items' => [
9135             bless( {
9136             'expected' => '',
9137             'min' => 0,
9138             'name' => '\'single_expr(s?)\'',
9139             'max' => 100000000,
9140             'leftarg' => bless( {
9141             'subrule' => 'single_expr',
9142             'matchrule' => 0,
9143             'implicit' => undef,
9144             'argcode' => undef,
9145             'lookahead' => 0,
9146             'line' => 5
9147             }, 'Parse::RecDescent::Subrule' ),
9148             'rightarg' => bless( {
9149             'subrule' => 'single_expr',
9150             'matchrule' => 0,
9151             'implicit' => undef,
9152             'argcode' => undef,
9153             'lookahead' => 0,
9154             'line' => 5
9155             }, 'Parse::RecDescent::Subrule' ),
9156             'hashname' => '__DIRECTIVE1__',
9157             'type' => 'leftop',
9158             'op' => bless( {
9159             'description' => '/\\\\|/',
9160             'rdelim' => '/',
9161             'pattern' => '\\|',
9162             'hashname' => '__PATTERN1__',
9163             'lookahead' => 0,
9164             'ldelim' => '/',
9165             'mod' => '',
9166             'line' => 5
9167             }, 'Parse::RecDescent::Token' )
9168             }, 'Parse::RecDescent::Operator' ),
9169             bless( {
9170             'hashname' => '__ACTION1__',
9171             'lookahead' => 0,
9172             'line' => 5,
9173             'code' => '{
9174             Petal::CodePerl::Expr::alternate(@{$item[1]})
9175             }'
9176             }, 'Parse::RecDescent::Action' )
9177             ],
9178             'line' => undef
9179             }, 'Parse::RecDescent::Production' )
9180             ],
9181             'name' => 'expr',
9182             'vars' => '',
9183             'changed' => 0,
9184             'line' => 5
9185             }, 'Parse::RecDescent::Rule' ),
9186             'single_path' => bless( {
9187             'impcount' => 0,
9188             'calls' => [
9189             'url_segment',
9190             'deref'
9191             ],
9192             'opcount' => 0,
9193             'prods' => [
9194             bless( {
9195             'number' => '0',
9196             'strcount' => 0,
9197             'dircount' => 0,
9198             'uncommit' => undef,
9199             'error' => undef,
9200             'patcount' => 0,
9201             'actcount' => 1,
9202             'items' => [
9203             bless( {
9204             'subrule' => 'url_segment',
9205             'matchrule' => 0,
9206             'implicit' => undef,
9207             'argcode' => undef,
9208             'lookahead' => 0,
9209             'line' => 81
9210             }, 'Parse::RecDescent::Subrule' ),
9211             bless( {
9212             'subrule' => 'deref',
9213             'expected' => undef,
9214             'min' => 0,
9215             'argcode' => undef,
9216             'max' => 100000000,
9217             'matchrule' => 0,
9218             'repspec' => 's?',
9219             'lookahead' => 0,
9220             'line' => 81
9221             }, 'Parse::RecDescent::Repetition' ),
9222             bless( {
9223             'hashname' => '__ACTION1__',
9224             'lookahead' => 0,
9225             'line' => 81,
9226             'code' => '{
9227              
9228             my $current = Code::Perl::Expr::derefh($Petal::CodePerl::Compiler::root, $item{url_segment});
9229              
9230             foreach my $deref (@{$item[2]})
9231             {
9232             my ($type, $key, @others) = @$deref;
9233              
9234             if ($type eq \'tal\')
9235             {
9236             $current = Petal::CodePerl::Expr::dereft($current, $key);
9237             }
9238             elsif ($type eq \'hash\')
9239             {
9240             $current = Code::Perl::Expr::derefh($current, $key);
9241             }
9242             elsif($type eq \'array\')
9243             {
9244             $current = Code::Perl::Expr::derefa($current, $key);
9245             }
9246             elsif($type eq \'method\')
9247             {
9248             $current = Code::Perl::Expr::callm($current, $key, @others);
9249             }
9250             else
9251             {
9252             die "Unknown type \'$type\'";
9253             }
9254             }
9255              
9256             $current;
9257             }'
9258             }, 'Parse::RecDescent::Action' )
9259             ],
9260             'line' => undef
9261             }, 'Parse::RecDescent::Production' )
9262             ],
9263             'name' => 'single_path',
9264             'vars' => '',
9265             'changed' => 0,
9266             'line' => 79
9267             }, 'Parse::RecDescent::Rule' ),
9268             'string_expr' => bless( {
9269             'impcount' => 0,
9270             'calls' => [
9271             'string'
9272             ],
9273             'opcount' => 0,
9274             'prods' => [
9275             bless( {
9276             'number' => '0',
9277             'strcount' => 1,
9278             'dircount' => 1,
9279             'uncommit' => undef,
9280             'error' => undef,
9281             'patcount' => 0,
9282             'actcount' => 1,
9283             'items' => [
9284             bless( {
9285             'pattern' => 'string:',
9286             'hashname' => '__STRING1__',
9287             'description' => '\'string:\'',
9288             'lookahead' => 0,
9289             'line' => 22
9290             }, 'Parse::RecDescent::InterpLit' ),
9291             bless( {
9292             'hashname' => '__DIRECTIVE1__',
9293             'name' => '',
9294             'lookahead' => 0,
9295             'line' => 22,
9296             'code' => '$commit = 1'
9297             }, 'Parse::RecDescent::Directive' ),
9298             bless( {
9299             'subrule' => 'string',
9300             'matchrule' => 0,
9301             'implicit' => undef,
9302             'argcode' => undef,
9303             'lookahead' => 0,
9304             'line' => 22
9305             }, 'Parse::RecDescent::Subrule' ),
9306             bless( {
9307             'hashname' => '__ACTION1__',
9308             'lookahead' => 0,
9309             'line' => 22,
9310             'code' => '{ $item{string} }'
9311             }, 'Parse::RecDescent::Action' )
9312             ],
9313             'line' => undef
9314             }, 'Parse::RecDescent::Production' )
9315             ],
9316             'name' => 'string_expr',
9317             'vars' => '',
9318             'changed' => 0,
9319             'line' => 21
9320             }, 'Parse::RecDescent::Rule' ),
9321             'varsub' => bless( {
9322             'impcount' => 0,
9323             'calls' => [
9324             'single_path'
9325             ],
9326             'opcount' => 0,
9327             'prods' => [
9328             bless( {
9329             'number' => '0',
9330             'strcount' => 1,
9331             'dircount' => 0,
9332             'uncommit' => undef,
9333             'error' => undef,
9334             'patcount' => 0,
9335             'actcount' => 0,
9336             'items' => [
9337             bless( {
9338             'pattern' => '$',
9339             'hashname' => '__STRING1__',
9340             'description' => '\'$\'',
9341             'lookahead' => 0,
9342             'line' => 156
9343             }, 'Parse::RecDescent::Literal' ),
9344             bless( {
9345             'subrule' => 'single_path',
9346             'matchrule' => 0,
9347             'implicit' => undef,
9348             'argcode' => undef,
9349             'lookahead' => 0,
9350             'line' => 156
9351             }, 'Parse::RecDescent::Subrule' )
9352             ],
9353             'line' => undef
9354             }, 'Parse::RecDescent::Production' ),
9355             bless( {
9356             'number' => '1',
9357             'strcount' => 2,
9358             'dircount' => 0,
9359             'uncommit' => undef,
9360             'error' => undef,
9361             'patcount' => 0,
9362             'actcount' => 1,
9363             'items' => [
9364             bless( {
9365             'pattern' => '${',
9366             'hashname' => '__STRING1__',
9367             'description' => '\'$\\{\'',
9368             'lookahead' => 0,
9369             'line' => 156
9370             }, 'Parse::RecDescent::Literal' ),
9371             bless( {
9372             'subrule' => 'single_path',
9373             'matchrule' => 0,
9374             'implicit' => undef,
9375             'argcode' => undef,
9376             'lookahead' => 0,
9377             'line' => 156
9378             }, 'Parse::RecDescent::Subrule' ),
9379             bless( {
9380             'pattern' => '}',
9381             'hashname' => '__STRING2__',
9382             'description' => '\'\\}\'',
9383             'lookahead' => 0,
9384             'line' => 156
9385             }, 'Parse::RecDescent::Literal' ),
9386             bless( {
9387             'hashname' => '__ACTION1__',
9388             'lookahead' => 0,
9389             'line' => 156,
9390             'code' => '{ $item{single_path} }'
9391             }, 'Parse::RecDescent::Action' )
9392             ],
9393             'line' => 156
9394             }, 'Parse::RecDescent::Production' )
9395             ],
9396             'name' => 'varsub',
9397             'vars' => '',
9398             'changed' => 0,
9399             'line' => 156
9400             }, 'Parse::RecDescent::Rule' ),
9401             'method_call' => bless( {
9402             'impcount' => 0,
9403             'calls' => [
9404             'empty_method',
9405             'arg_method'
9406             ],
9407             'opcount' => 0,
9408             'prods' => [
9409             bless( {
9410             'number' => '0',
9411             'strcount' => 0,
9412             'dircount' => 0,
9413             'uncommit' => undef,
9414             'error' => undef,
9415             'patcount' => 0,
9416             'actcount' => 0,
9417             'items' => [
9418             bless( {
9419             'subrule' => 'empty_method',
9420             'matchrule' => 0,
9421             'implicit' => undef,
9422             'argcode' => undef,
9423             'lookahead' => 0,
9424             'line' => 128
9425             }, 'Parse::RecDescent::Subrule' )
9426             ],
9427             'line' => undef
9428             }, 'Parse::RecDescent::Production' ),
9429             bless( {
9430             'number' => '1',
9431             'strcount' => 0,
9432             'dircount' => 0,
9433             'uncommit' => undef,
9434             'error' => undef,
9435             'patcount' => 0,
9436             'actcount' => 0,
9437             'items' => [
9438             bless( {
9439             'subrule' => 'arg_method',
9440             'matchrule' => 0,
9441             'implicit' => undef,
9442             'argcode' => undef,
9443             'lookahead' => 0,
9444             'line' => 128
9445             }, 'Parse::RecDescent::Subrule' )
9446             ],
9447             'line' => 128
9448             }, 'Parse::RecDescent::Production' )
9449             ],
9450             'name' => 'method_call',
9451             'vars' => '',
9452             'changed' => 0,
9453             'line' => 128
9454             }, 'Parse::RecDescent::Rule' ),
9455             'url_segment' => bless( {
9456             'impcount' => 0,
9457             'calls' => [],
9458             'opcount' => 0,
9459             'prods' => [
9460             bless( {
9461             'number' => '0',
9462             'strcount' => 0,
9463             'dircount' => 0,
9464             'uncommit' => undef,
9465             'error' => undef,
9466             'patcount' => 1,
9467             'actcount' => 0,
9468             'items' => [
9469             bless( {
9470             'description' => '/[a-z0-9_\\\\-\\\\~]+/i',
9471             'rdelim' => '/',
9472             'pattern' => '[a-z0-9_\\-\\~]+',
9473             'hashname' => '__PATTERN1__',
9474             'lookahead' => 0,
9475             'ldelim' => '/',
9476             'mod' => 'i',
9477             'line' => 114
9478             }, 'Parse::RecDescent::Token' )
9479             ],
9480             'line' => undef
9481             }, 'Parse::RecDescent::Production' )
9482             ],
9483             'name' => 'url_segment',
9484             'vars' => '',
9485             'changed' => 0,
9486             'line' => 114
9487             }, 'Parse::RecDescent::Rule' ),
9488             '_alternation_1_of_production_1_of_rule_string_argument' => bless( {
9489             'impcount' => 0,
9490             'calls' => [
9491             'mm_string',
9492             'qq_string',
9493             'q_string'
9494             ],
9495             'opcount' => 0,
9496             'prods' => [
9497             bless( {
9498             'number' => '0',
9499             'strcount' => 0,
9500             'dircount' => 0,
9501             'uncommit' => undef,
9502             'error' => undef,
9503             'patcount' => 0,
9504             'actcount' => 0,
9505             'items' => [
9506             bless( {
9507             'subrule' => 'mm_string',
9508             'matchrule' => 0,
9509             'implicit' => undef,
9510             'argcode' => undef,
9511             'lookahead' => 0,
9512             'line' => 169
9513             }, 'Parse::RecDescent::Subrule' )
9514             ],
9515             'line' => undef
9516             }, 'Parse::RecDescent::Production' ),
9517             bless( {
9518             'number' => '1',
9519             'strcount' => 0,
9520             'dircount' => 0,
9521             'uncommit' => undef,
9522             'error' => undef,
9523             'patcount' => 0,
9524             'actcount' => 0,
9525             'items' => [
9526             bless( {
9527             'subrule' => 'qq_string',
9528             'matchrule' => 0,
9529             'implicit' => undef,
9530             'argcode' => undef,
9531             'lookahead' => 0,
9532             'line' => 169
9533             }, 'Parse::RecDescent::Subrule' )
9534             ],
9535             'line' => 169
9536             }, 'Parse::RecDescent::Production' ),
9537             bless( {
9538             'number' => '2',
9539             'strcount' => 0,
9540             'dircount' => 0,
9541             'uncommit' => undef,
9542             'error' => undef,
9543             'patcount' => 0,
9544             'actcount' => 0,
9545             'items' => [
9546             bless( {
9547             'subrule' => 'q_string',
9548             'matchrule' => 0,
9549             'implicit' => undef,
9550             'argcode' => undef,
9551             'lookahead' => 0,
9552             'line' => 169
9553             }, 'Parse::RecDescent::Subrule' )
9554             ],
9555             'line' => 169
9556             }, 'Parse::RecDescent::Production' )
9557             ],
9558             'name' => '_alternation_1_of_production_1_of_rule_string_argument',
9559             'vars' => '',
9560             'changed' => 0,
9561             'line' => 169
9562             }, 'Parse::RecDescent::Rule' ),
9563             'mod_name' => bless( {
9564             'impcount' => 0,
9565             'calls' => [],
9566             'opcount' => 0,
9567             'prods' => [
9568             bless( {
9569             'number' => '0',
9570             'strcount' => 0,
9571             'dircount' => 0,
9572             'uncommit' => undef,
9573             'error' => undef,
9574             'patcount' => 1,
9575             'actcount' => 0,
9576             'items' => [
9577             bless( {
9578             'description' => '/\\\\w+/',
9579             'rdelim' => '/',
9580             'pattern' => '\\w+',
9581             'hashname' => '__PATTERN1__',
9582             'lookahead' => 0,
9583             'ldelim' => '/',
9584             'mod' => '',
9585             'line' => 77
9586             }, 'Parse::RecDescent::Token' )
9587             ],
9588             'line' => undef
9589             }, 'Parse::RecDescent::Production' )
9590             ],
9591             'name' => 'mod_name',
9592             'vars' => '',
9593             'changed' => 0,
9594             'line' => 75
9595             }, 'Parse::RecDescent::Rule' ),
9596             'only_expr' => bless( {
9597             'impcount' => 0,
9598             'calls' => [
9599             'expr'
9600             ],
9601             'opcount' => 0,
9602             'prods' => [
9603             bless( {
9604             'number' => '0',
9605             'strcount' => 0,
9606             'dircount' => 0,
9607             'uncommit' => undef,
9608             'error' => undef,
9609             'patcount' => 1,
9610             'actcount' => 1,
9611             'items' => [
9612             bless( {
9613             'subrule' => 'expr',
9614             'matchrule' => 0,
9615             'implicit' => undef,
9616             'argcode' => undef,
9617             'lookahead' => 0,
9618             'line' => 3
9619             }, 'Parse::RecDescent::Subrule' ),
9620             bless( {
9621             'description' => '/^\\\\z/',
9622             'rdelim' => '/',
9623             'pattern' => '^\\z',
9624             'hashname' => '__PATTERN1__',
9625             'lookahead' => 0,
9626             'ldelim' => '/',
9627             'mod' => '',
9628             'line' => 3
9629             }, 'Parse::RecDescent::Token' ),
9630             bless( {
9631             'hashname' => '__ACTION1__',
9632             'lookahead' => 0,
9633             'line' => 3,
9634             'code' => '{$item{expr}}'
9635             }, 'Parse::RecDescent::Action' )
9636             ],
9637             'line' => undef
9638             }, 'Parse::RecDescent::Production' )
9639             ],
9640             'name' => 'only_expr',
9641             'vars' => '',
9642             'changed' => 0,
9643             'line' => 1
9644             }, 'Parse::RecDescent::Rule' ),
9645             'tal_deref' => bless( {
9646             'impcount' => 0,
9647             'calls' => [
9648             'separator',
9649             'url_segment'
9650             ],
9651             'opcount' => 0,
9652             'prods' => [
9653             bless( {
9654             'number' => '0',
9655             'strcount' => 0,
9656             'dircount' => 0,
9657             'uncommit' => undef,
9658             'error' => undef,
9659             'patcount' => 0,
9660             'actcount' => 1,
9661             'items' => [
9662             bless( {
9663             'subrule' => 'separator',
9664             'matchrule' => 0,
9665             'implicit' => undef,
9666             'argcode' => undef,
9667             'lookahead' => 0,
9668             'line' => 120
9669             }, 'Parse::RecDescent::Subrule' ),
9670             bless( {
9671             'subrule' => 'url_segment',
9672             'matchrule' => 0,
9673             'implicit' => undef,
9674             'argcode' => undef,
9675             'lookahead' => 0,
9676             'line' => 120
9677             }, 'Parse::RecDescent::Subrule' ),
9678             bless( {
9679             'hashname' => '__ACTION1__',
9680             'lookahead' => 0,
9681             'line' => 120,
9682             'code' => '{ [\'tal\', $item{url_segment}] }'
9683             }, 'Parse::RecDescent::Action' )
9684             ],
9685             'line' => undef
9686             }, 'Parse::RecDescent::Production' )
9687             ],
9688             'name' => 'tal_deref',
9689             'vars' => '',
9690             'changed' => 0,
9691             'line' => 120
9692             }, 'Parse::RecDescent::Rule' ),
9693             'separator' => bless( {
9694             'impcount' => 0,
9695             'calls' => [],
9696             'opcount' => 0,
9697             'prods' => [
9698             bless( {
9699             'number' => '0',
9700             'strcount' => 1,
9701             'dircount' => 0,
9702             'uncommit' => undef,
9703             'error' => undef,
9704             'patcount' => 0,
9705             'actcount' => 0,
9706             'items' => [
9707             bless( {
9708             'pattern' => '/',
9709             'hashname' => '__STRING1__',
9710             'description' => '\'/\'',
9711             'lookahead' => 0,
9712             'line' => 116
9713             }, 'Parse::RecDescent::Literal' )
9714             ],
9715             'line' => undef
9716             }, 'Parse::RecDescent::Production' ),
9717             bless( {
9718             'number' => '1',
9719             'strcount' => 1,
9720             'dircount' => 0,
9721             'uncommit' => undef,
9722             'error' => undef,
9723             'patcount' => 0,
9724             'actcount' => 0,
9725             'items' => [
9726             bless( {
9727             'pattern' => '.',
9728             'hashname' => '__STRING1__',
9729             'description' => '\'.\'',
9730             'lookahead' => 0,
9731             'line' => 116
9732             }, 'Parse::RecDescent::Literal' )
9733             ],
9734             'line' => 116
9735             }, 'Parse::RecDescent::Production' )
9736             ],
9737             'name' => 'separator',
9738             'vars' => '',
9739             'changed' => 0,
9740             'line' => 116
9741             }, 'Parse::RecDescent::Rule' ),
9742             'mod_expr_compile' => bless( {
9743             'impcount' => 0,
9744             'calls' => [
9745             'mod_name',
9746             'expr'
9747             ],
9748             'opcount' => 0,
9749             'prods' => [
9750             bless( {
9751             'number' => '0',
9752             'strcount' => 1,
9753             'dircount' => 0,
9754             'uncommit' => undef,
9755             'error' => undef,
9756             'patcount' => 1,
9757             'actcount' => 1,
9758             'items' => [
9759             bless( {
9760             'subrule' => 'mod_name',
9761             'matchrule' => 0,
9762             'implicit' => undef,
9763             'argcode' => undef,
9764             'lookahead' => 0,
9765             'line' => 31
9766             }, 'Parse::RecDescent::Subrule' ),
9767             bless( {
9768             'description' => '/\\\\s*/',
9769             'rdelim' => '/',
9770             'pattern' => '\\s*',
9771             'hashname' => '__PATTERN1__',
9772             'lookahead' => 0,
9773             'ldelim' => '/',
9774             'mod' => '',
9775             'line' => 31
9776             }, 'Parse::RecDescent::Token' ),
9777             bless( {
9778             'pattern' => ':',
9779             'hashname' => '__STRING1__',
9780             'description' => '\':\'',
9781             'lookahead' => 0,
9782             'line' => 31
9783             }, 'Parse::RecDescent::Literal' ),
9784             bless( {
9785             'subrule' => 'expr',
9786             'matchrule' => 0,
9787             'implicit' => undef,
9788             'argcode' => undef,
9789             'lookahead' => 0,
9790             'line' => 31
9791             }, 'Parse::RecDescent::Subrule' ),
9792             bless( {
9793             'hashname' => '__ACTION1__',
9794             'lookahead' => 0,
9795             'line' => 31,
9796             'code' => '{
9797              
9798             my $name = $item{mod_name};
9799             my $expr = $item{expr};
9800             my $mod = $Petal::Hash::MODIFIERS{"$name:"} || die "Modifier \'$name\' does not exists";
9801              
9802             my $compiled;
9803             if (UNIVERSAL::can($mod, "inline") and $Petal::CodePerl::InlineMod)
9804             {
9805             $compiled = $mod->inline($Petal::CodePerl::Compiler::root, $expr);
9806             }
9807             elsif (UNIVERSAL::can($mod, "process_value"))
9808             {
9809             $compiled = Code::Perl::Expr::callm(
9810             Code::Perl::Expr::scal("Petal::Hash::MODIFIERS{\\"$name:\\"}"), # this is a bit naughty
9811             "process_value",
9812             $Petal::CodePerl::Compiler::root,
9813             $item{expr}
9814             );
9815             }
9816             $compiled;
9817             }'
9818             }, 'Parse::RecDescent::Action' )
9819             ],
9820             'line' => undef
9821             }, 'Parse::RecDescent::Production' )
9822             ],
9823             'name' => 'mod_expr_compile',
9824             'vars' => '',
9825             'changed' => 0,
9826             'line' => 30
9827             }, 'Parse::RecDescent::Rule' ),
9828             'string_piece' => bless( {
9829             'impcount' => 0,
9830             'calls' => [
9831             'plain_string',
9832             'varsub'
9833             ],
9834             'opcount' => 0,
9835             'prods' => [
9836             bless( {
9837             'number' => '0',
9838             'strcount' => 0,
9839             'dircount' => 0,
9840             'uncommit' => undef,
9841             'error' => undef,
9842             'patcount' => 0,
9843             'actcount' => 0,
9844             'items' => [
9845             bless( {
9846             'subrule' => 'plain_string',
9847             'matchrule' => 0,
9848             'implicit' => undef,
9849             'argcode' => undef,
9850             'lookahead' => 0,
9851             'line' => 154
9852             }, 'Parse::RecDescent::Subrule' )
9853             ],
9854             'line' => undef
9855             }, 'Parse::RecDescent::Production' ),
9856             bless( {
9857             'number' => '1',
9858             'strcount' => 0,
9859             'dircount' => 0,
9860             'uncommit' => undef,
9861             'error' => undef,
9862             'patcount' => 0,
9863             'actcount' => 0,
9864             'items' => [
9865             bless( {
9866             'subrule' => 'varsub',
9867             'matchrule' => 0,
9868             'implicit' => undef,
9869             'argcode' => undef,
9870             'lookahead' => 0,
9871             'line' => 154
9872             }, 'Parse::RecDescent::Subrule' )
9873             ],
9874             'line' => 154
9875             }, 'Parse::RecDescent::Production' )
9876             ],
9877             'name' => 'string_piece',
9878             'vars' => '',
9879             'changed' => 0,
9880             'line' => 153
9881             }, 'Parse::RecDescent::Rule' )
9882             }
9883             }, 'Parse::RecDescent' );
9884             }