File Coverage

lib/Cheater/Parser.pm
Criterion Covered Total %
statement 240 3892 6.1
branch 0 2288 0.0
condition 0 697 0.0
subroutine 80 164 48.7
pod 0 1 0.0
total 320 7042 4.5


line stmt bran cond sub pod time code
1             package Cheater::Parser;
2 11     11   23595 use Parse::RecDescent;
  11         676116  
  11         90  
3              
4             { my $ERRORS;
5              
6              
7             package Parse::RecDescent::Cheater::Parser;
8 11     11   682 use strict;
  11         24  
  11         373  
9 11     11   53 use vars qw($skip $AUTOLOAD );
  11         22  
  11         710  
10             @Parse::RecDescent::Cheater::Parser::ISA = ();
11             $skip = '\s*(?:(?:\#[^\n]*|/\*.*?\*/)\s*)*';
12              
13 11     11   5850 use Cheater::Parser::Util qw( parse_included_file );
  11         27  
  11         1072  
14             ;
15              
16              
17             {
18             local $SIG{__WARN__} = sub {0};
19             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
20             *Parse::RecDescent::Cheater::Parser::AUTOLOAD = sub
21             {
22 11     11   60 no strict 'refs';
  11         19  
  11         1055  
23 0     0     $AUTOLOAD =~ s/^Parse::RecDescent::Cheater::Parser/Parse::RecDescent/;
24 0           goto &{$AUTOLOAD};
  0            
25             }
26             }
27              
28             push @Parse::RecDescent::Cheater::Parser::ISA, 'Parse::RecDescent';
29             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
30             sub Parse::RecDescent::Cheater::Parser::qualified_column
31             {
32 0     0     my $thisparser = $_[0];
33 11     11   56 use vars q{$tracelevel};
  11         21  
  11         4655  
34 0   0       local $tracelevel = ($tracelevel||0)+1;
35 0           $ERRORS = 0;
36 0           my $thisrule = $thisparser->{"rules"}{"qualified_column"};
37            
38 0 0         Parse::RecDescent::_trace(q{Trying rule: [qualified_column]},
39             Parse::RecDescent::_tracefirst($_[1]),
40             q{qualified_column},
41             $tracelevel)
42             if defined $::RD_TRACE;
43              
44            
45 0           my $err_at = @{$thisparser->{errors}};
  0            
46              
47 0           my $score;
48             my $score_return;
49 0           my $_tok;
50 0           my $return = undef;
51 0           my $_matched=0;
52 0           my $commit=0;
53 0           my @item = ();
54 0           my %item = ();
55 0   0       my $repeating = defined($_[2]) && $_[2];
56 0   0       my $_noactions = defined($_[3]) && $_[3];
57 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
58 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
59 0           my $text;
60 0           my $lastsep="";
61 0           my $current_match;
62 0           my $expectation = new Parse::RecDescent::Expectation(q{table_name});
63 0           $expectation->at($_[1]);
64            
65 0           my $prevline;
66 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
67            
68 0           my $thisline;
69 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
70              
71            
72              
73 0   0       while (!$_matched && !$commit)
74             {
75            
76 0 0         Parse::RecDescent::_trace(q{Trying production: [table_name '.' <commit> column_name]},
77             Parse::RecDescent::_tracefirst($_[1]),
78             q{qualified_column},
79             $tracelevel)
80             if defined $::RD_TRACE;
81 0           my $thisprod = $thisrule->{"prods"}[0];
82 0           $text = $_[1];
83 0           my $_savetext;
84 0           @item = (q{qualified_column});
85 0           %item = (__RULE__ => q{qualified_column});
86 0           my $repcount = 0;
87              
88              
89 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
90             Parse::RecDescent::_tracefirst($text),
91             q{qualified_column},
92             $tracelevel)
93             if defined $::RD_TRACE;
94 11     11   80 if (1) { no strict qw{refs};
  11         19  
  11         5781  
  0            
95 0           $expectation->is(q{})->at($text);
96 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
97             {
98            
99 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
100             Parse::RecDescent::_tracefirst($text),
101             q{qualified_column},
102             $tracelevel)
103             if defined $::RD_TRACE;
104 0           $expectation->failed();
105 0           last;
106             }
107 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
108             . $_tok . q{]},
109            
110             Parse::RecDescent::_tracefirst($text),
111             q{qualified_column},
112             $tracelevel)
113             if defined $::RD_TRACE;
114 0           $item{q{table_name}} = $_tok;
115 0           push @item, $_tok;
116            
117             }
118              
119 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['.']},
120             Parse::RecDescent::_tracefirst($text),
121             q{qualified_column},
122             $tracelevel)
123             if defined $::RD_TRACE;
124 0           $lastsep = "";
125 0           $expectation->is(q{'.'})->at($text);
126            
127              
128 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\./)
  0 0          
129             {
130            
131 0           $expectation->failed();
132 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
133             Parse::RecDescent::_tracefirst($text))
134             if defined $::RD_TRACE;
135 0           last;
136             }
137 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
138 0           substr($text,0,length($current_match),q{});
139 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
140             . $current_match . q{])},
141             Parse::RecDescent::_tracefirst($text))
142             if defined $::RD_TRACE;
143 0           push @item, $item{__STRING1__}=$current_match;
144            
145              
146            
147              
148 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
149             Parse::RecDescent::_tracefirst($text),
150             q{qualified_column},
151             $tracelevel)
152             if defined $::RD_TRACE;
153 0           $_tok = do { $commit = 1 };
  0            
154 0 0         if (defined($_tok))
155             {
156 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
157             . $_tok . q{])},
158             Parse::RecDescent::_tracefirst($text))
159             if defined $::RD_TRACE;
160             }
161             else
162             {
163 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
164             Parse::RecDescent::_tracefirst($text))
165             if defined $::RD_TRACE;
166             }
167            
168 0 0         last unless defined $_tok;
169 0           push @item, $item{__DIRECTIVE1__}=$_tok;
170            
171              
172 0 0         Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
173             Parse::RecDescent::_tracefirst($text),
174             q{qualified_column},
175             $tracelevel)
176             if defined $::RD_TRACE;
177 11     11   68 if (1) { no strict qw{refs};
  11         22  
  11         13613  
  0            
178 0           $expectation->is(q{column_name})->at($text);
179 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
180             {
181            
182 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
183             Parse::RecDescent::_tracefirst($text),
184             q{qualified_column},
185             $tracelevel)
186             if defined $::RD_TRACE;
187 0           $expectation->failed();
188 0           last;
189             }
190 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
191             . $_tok . q{]},
192            
193             Parse::RecDescent::_tracefirst($text),
194             q{qualified_column},
195             $tracelevel)
196             if defined $::RD_TRACE;
197 0           $item{q{column_name}} = $_tok;
198 0           push @item, $_tok;
199            
200             }
201              
202 0 0         Parse::RecDescent::_trace(q{Trying action},
203             Parse::RecDescent::_tracefirst($text),
204             q{qualified_column},
205             $tracelevel)
206             if defined $::RD_TRACE;
207            
208              
209 0 0         $_tok = ($_noactions) ? 0 : do { [$item[1], $item[4]] };
  0            
210 0 0         unless (defined $_tok)
211             {
212 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
213             if defined $::RD_TRACE;
214 0           last;
215             }
216 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
217             . $_tok . q{])},
218             Parse::RecDescent::_tracefirst($text))
219             if defined $::RD_TRACE;
220 0           push @item, $_tok;
221 0           $item{__ACTION1__}=$_tok;
222            
223              
224              
225 0 0         Parse::RecDescent::_trace(q{>>Matched production: [table_name '.' <commit> column_name]<<},
226             Parse::RecDescent::_tracefirst($text),
227             q{qualified_column},
228             $tracelevel)
229             if defined $::RD_TRACE;
230 0           $_matched = 1;
231 0           last;
232             }
233              
234              
235 0           while (!$_matched)
236             {
237            
238 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
239             Parse::RecDescent::_tracefirst($_[1]),
240             q{qualified_column},
241             $tracelevel)
242             if defined $::RD_TRACE;
243 0           my $thisprod = $thisrule->{"prods"}[1];
244            
245 0           my $_savetext;
246 0           @item = (q{qualified_column});
247 0           %item = (__RULE__ => q{qualified_column});
248 0           my $repcount = 0;
249              
250              
251            
252              
253 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
254             Parse::RecDescent::_tracefirst($text),
255             q{qualified_column},
256             $tracelevel)
257             if defined $::RD_TRACE;
258 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
259 0           my $rule = $item[0];
260 0           $rule =~ s/_/ /g;
261             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
262 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
263 0           } unless $_noactions; undef } else {0} };
264 0 0         if (defined($_tok))
265             {
266 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
267             . $_tok . q{])},
268             Parse::RecDescent::_tracefirst($text))
269             if defined $::RD_TRACE;
270             }
271             else
272             {
273 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
274             Parse::RecDescent::_tracefirst($text))
275             if defined $::RD_TRACE;
276             }
277            
278 0 0         last unless defined $_tok;
279 0           push @item, $item{__DIRECTIVE1__}=$_tok;
280            
281              
282 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
283             Parse::RecDescent::_tracefirst($text),
284             q{qualified_column},
285             $tracelevel)
286             if defined $::RD_TRACE;
287 0           undef $return;
288            
289              
290 0           $_tok = undef;
291            
292 0 0         last unless defined $_tok;
293              
294              
295 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
296             Parse::RecDescent::_tracefirst($text),
297             q{qualified_column},
298             $tracelevel)
299             if defined $::RD_TRACE;
300 0           $_matched = 1;
301 0           last;
302             }
303              
304              
305 0 0 0       unless ( $_matched || defined($score) )
306             {
307            
308              
309 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
310 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
311             Parse::RecDescent::_tracefirst($_[1]),
312             q{qualified_column},
313             $tracelevel)
314             if defined $::RD_TRACE;
315 0           return undef;
316             }
317 0 0 0       if (!defined($return) && defined($score))
318             {
319 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
320             q{qualified_column},
321             $tracelevel)
322             if defined $::RD_TRACE;
323 0           $return = $score_return;
324             }
325 0           splice @{$thisparser->{errors}}, $err_at;
  0            
326 0 0         $return = $item[$#item] unless defined $return;
327 0 0         if (defined $::RD_TRACE)
328             {
329 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
330             $return . q{])}, "",
331             q{qualified_column},
332             $tracelevel);
333 0           Parse::RecDescent::_trace(q{(consumed: [} .
334             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
335             Parse::RecDescent::_tracefirst($text),
336             , q{qualified_column},
337             $tracelevel)
338             }
339 0           $_[1] = $text;
340 0           return $return;
341             }
342              
343             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
344             sub Parse::RecDescent::Cheater::Parser::int
345             {
346 0     0     my $thisparser = $_[0];
347 11     11   79 use vars q{$tracelevel};
  11         21  
  11         11525  
348 0   0       local $tracelevel = ($tracelevel||0)+1;
349 0           $ERRORS = 0;
350 0           my $thisrule = $thisparser->{"rules"}{"int"};
351            
352 0 0         Parse::RecDescent::_trace(q{Trying rule: [int]},
353             Parse::RecDescent::_tracefirst($_[1]),
354             q{int},
355             $tracelevel)
356             if defined $::RD_TRACE;
357              
358            
359 0           my $err_at = @{$thisparser->{errors}};
  0            
360              
361 0           my $score;
362             my $score_return;
363 0           my $_tok;
364 0           my $return = undef;
365 0           my $_matched=0;
366 0           my $commit=0;
367 0           my @item = ();
368 0           my %item = ();
369 0   0       my $repeating = defined($_[2]) && $_[2];
370 0   0       my $_noactions = defined($_[3]) && $_[3];
371 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
372 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
373 0           my $text;
374 0           my $lastsep="";
375 0           my $current_match;
376 0           my $expectation = new Parse::RecDescent::Expectation(q{/-?\\d+\\b/});
377 0           $expectation->at($_[1]);
378            
379 0           my $prevline;
380 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
381            
382 0           my $thisline;
383 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
384              
385            
386              
387 0   0       while (!$_matched && !$commit)
388             {
389            
390 0 0         Parse::RecDescent::_trace(q{Trying production: [/-?\\d+\\b/]},
391             Parse::RecDescent::_tracefirst($_[1]),
392             q{int},
393             $tracelevel)
394             if defined $::RD_TRACE;
395 0           my $thisprod = $thisrule->{"prods"}[0];
396 0           $text = $_[1];
397 0           my $_savetext;
398 0           @item = (q{int});
399 0           %item = (__RULE__ => q{int});
400 0           my $repcount = 0;
401              
402              
403 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/-?\\d+\\b/]}, Parse::RecDescent::_tracefirst($text),
404             q{int},
405             $tracelevel)
406             if defined $::RD_TRACE;
407 0           $lastsep = "";
408 0           $expectation->is(q{})->at($text);
409            
410              
411 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:-?\d+\b)/)
  0 0          
412             {
413            
414 0           $expectation->failed();
415 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
416             Parse::RecDescent::_tracefirst($text))
417             if defined $::RD_TRACE;
418              
419 0           last;
420             }
421 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
422 0           substr($text,0,length($current_match),q{});
423 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
424             . $current_match . q{])},
425             Parse::RecDescent::_tracefirst($text))
426             if defined $::RD_TRACE;
427 0           push @item, $item{__PATTERN1__}=$current_match;
428            
429              
430              
431 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/-?\\d+\\b/]<<},
432             Parse::RecDescent::_tracefirst($text),
433             q{int},
434             $tracelevel)
435             if defined $::RD_TRACE;
436 0           $_matched = 1;
437 0           last;
438             }
439              
440              
441 0 0 0       unless ( $_matched || defined($score) )
442             {
443            
444              
445 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
446 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
447             Parse::RecDescent::_tracefirst($_[1]),
448             q{int},
449             $tracelevel)
450             if defined $::RD_TRACE;
451 0           return undef;
452             }
453 0 0 0       if (!defined($return) && defined($score))
454             {
455 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
456             q{int},
457             $tracelevel)
458             if defined $::RD_TRACE;
459 0           $return = $score_return;
460             }
461 0           splice @{$thisparser->{errors}}, $err_at;
  0            
462 0 0         $return = $item[$#item] unless defined $return;
463 0 0         if (defined $::RD_TRACE)
464             {
465 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
466             $return . q{])}, "",
467             q{int},
468             $tracelevel);
469 0           Parse::RecDescent::_trace(q{(consumed: [} .
470             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
471             Parse::RecDescent::_tracefirst($text),
472             , q{int},
473             $tracelevel)
474             }
475 0           $_[1] = $text;
476 0           return $return;
477             }
478              
479             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
480             sub Parse::RecDescent::Cheater::Parser::number
481             {
482 0     0     my $thisparser = $_[0];
483 11     11   72 use vars q{$tracelevel};
  11         26  
  11         4736  
484 0   0       local $tracelevel = ($tracelevel||0)+1;
485 0           $ERRORS = 0;
486 0           my $thisrule = $thisparser->{"rules"}{"number"};
487            
488 0 0         Parse::RecDescent::_trace(q{Trying rule: [number]},
489             Parse::RecDescent::_tracefirst($_[1]),
490             q{number},
491             $tracelevel)
492             if defined $::RD_TRACE;
493              
494            
495 0           my $err_at = @{$thisparser->{errors}};
  0            
496              
497 0           my $score;
498             my $score_return;
499 0           my $_tok;
500 0           my $return = undef;
501 0           my $_matched=0;
502 0           my $commit=0;
503 0           my @item = ();
504 0           my %item = ();
505 0   0       my $repeating = defined($_[2]) && $_[2];
506 0   0       my $_noactions = defined($_[3]) && $_[3];
507 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
508 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
509 0           my $text;
510 0           my $lastsep="";
511 0           my $current_match;
512 0           my $expectation = new Parse::RecDescent::Expectation(q{real, or int});
513 0           $expectation->at($_[1]);
514            
515 0           my $prevline;
516 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
517            
518 0           my $thisline;
519 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
520              
521            
522              
523 0   0       while (!$_matched && !$commit)
524             {
525            
526 0 0         Parse::RecDescent::_trace(q{Trying production: [real]},
527             Parse::RecDescent::_tracefirst($_[1]),
528             q{number},
529             $tracelevel)
530             if defined $::RD_TRACE;
531 0           my $thisprod = $thisrule->{"prods"}[0];
532 0           $text = $_[1];
533 0           my $_savetext;
534 0           @item = (q{number});
535 0           %item = (__RULE__ => q{number});
536 0           my $repcount = 0;
537              
538              
539 0 0         Parse::RecDescent::_trace(q{Trying subrule: [real]},
540             Parse::RecDescent::_tracefirst($text),
541             q{number},
542             $tracelevel)
543             if defined $::RD_TRACE;
544 11     11   66 if (1) { no strict qw{refs};
  11         25  
  11         15353  
  0            
545 0           $expectation->is(q{})->at($text);
546 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::real($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
547             {
548            
549 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [real]>>},
550             Parse::RecDescent::_tracefirst($text),
551             q{number},
552             $tracelevel)
553             if defined $::RD_TRACE;
554 0           $expectation->failed();
555 0           last;
556             }
557 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [real]<< (return value: [}
558             . $_tok . q{]},
559            
560             Parse::RecDescent::_tracefirst($text),
561             q{number},
562             $tracelevel)
563             if defined $::RD_TRACE;
564 0           $item{q{real}} = $_tok;
565 0           push @item, $_tok;
566            
567             }
568              
569              
570 0 0         Parse::RecDescent::_trace(q{>>Matched production: [real]<<},
571             Parse::RecDescent::_tracefirst($text),
572             q{number},
573             $tracelevel)
574             if defined $::RD_TRACE;
575 0           $_matched = 1;
576 0           last;
577             }
578              
579              
580 0   0       while (!$_matched && !$commit)
581             {
582            
583 0 0         Parse::RecDescent::_trace(q{Trying production: [int]},
584             Parse::RecDescent::_tracefirst($_[1]),
585             q{number},
586             $tracelevel)
587             if defined $::RD_TRACE;
588 0           my $thisprod = $thisrule->{"prods"}[1];
589 0           $text = $_[1];
590 0           my $_savetext;
591 0           @item = (q{number});
592 0           %item = (__RULE__ => q{number});
593 0           my $repcount = 0;
594              
595              
596 0 0         Parse::RecDescent::_trace(q{Trying subrule: [int]},
597             Parse::RecDescent::_tracefirst($text),
598             q{number},
599             $tracelevel)
600             if defined $::RD_TRACE;
601 11     11   84 if (1) { no strict qw{refs};
  11         22  
  11         7306  
  0            
602 0           $expectation->is(q{})->at($text);
603 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::int($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
604             {
605            
606 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [int]>>},
607             Parse::RecDescent::_tracefirst($text),
608             q{number},
609             $tracelevel)
610             if defined $::RD_TRACE;
611 0           $expectation->failed();
612 0           last;
613             }
614 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [int]<< (return value: [}
615             . $_tok . q{]},
616            
617             Parse::RecDescent::_tracefirst($text),
618             q{number},
619             $tracelevel)
620             if defined $::RD_TRACE;
621 0           $item{q{int}} = $_tok;
622 0           push @item, $_tok;
623            
624             }
625              
626              
627 0 0         Parse::RecDescent::_trace(q{>>Matched production: [int]<<},
628             Parse::RecDescent::_tracefirst($text),
629             q{number},
630             $tracelevel)
631             if defined $::RD_TRACE;
632 0           $_matched = 1;
633 0           last;
634             }
635              
636              
637 0 0 0       unless ( $_matched || defined($score) )
638             {
639            
640              
641 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
642 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
643             Parse::RecDescent::_tracefirst($_[1]),
644             q{number},
645             $tracelevel)
646             if defined $::RD_TRACE;
647 0           return undef;
648             }
649 0 0 0       if (!defined($return) && defined($score))
650             {
651 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
652             q{number},
653             $tracelevel)
654             if defined $::RD_TRACE;
655 0           $return = $score_return;
656             }
657 0           splice @{$thisparser->{errors}}, $err_at;
  0            
658 0 0         $return = $item[$#item] unless defined $return;
659 0 0         if (defined $::RD_TRACE)
660             {
661 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
662             $return . q{])}, "",
663             q{number},
664             $tracelevel);
665 0           Parse::RecDescent::_trace(q{(consumed: [} .
666             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
667             Parse::RecDescent::_tracefirst($text),
668             , q{number},
669             $tracelevel)
670             }
671 0           $_[1] = $text;
672 0           return $return;
673             }
674              
675             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
676             sub Parse::RecDescent::Cheater::Parser::time
677             {
678 0     0     my $thisparser = $_[0];
679 11     11   77 use vars q{$tracelevel};
  11         22  
  11         16397  
680 0   0       local $tracelevel = ($tracelevel||0)+1;
681 0           $ERRORS = 0;
682 0           my $thisrule = $thisparser->{"rules"}{"time"};
683            
684 0 0         Parse::RecDescent::_trace(q{Trying rule: [time]},
685             Parse::RecDescent::_tracefirst($_[1]),
686             q{time},
687             $tracelevel)
688             if defined $::RD_TRACE;
689              
690            
691 0           my $err_at = @{$thisparser->{errors}};
  0            
692              
693 0           my $score;
694             my $score_return;
695 0           my $_tok;
696 0           my $return = undef;
697 0           my $_matched=0;
698 0           my $commit=0;
699 0           my @item = ();
700 0           my %item = ();
701 0   0       my $repeating = defined($_[2]) && $_[2];
702 0   0       my $_noactions = defined($_[3]) && $_[3];
703 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
704 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
705 0           my $text;
706 0           my $lastsep="";
707 0           my $current_match;
708 0           my $expectation = new Parse::RecDescent::Expectation(q{/\\b\\d\{2\}:\\d\{2\}:\\d\{2\}\\b/, or /\\b\\d\{2\}:\\d\{2\}\\b(?!:)/});
709 0           $expectation->at($_[1]);
710            
711 0           my $prevline;
712 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
713            
714 0           my $thisline;
715 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
716              
717            
718              
719 0   0       while (!$_matched && !$commit)
720             {
721            
722 0 0         Parse::RecDescent::_trace(q{Trying production: [/\\b\\d\{2\}:\\d\{2\}:\\d\{2\}\\b/]},
723             Parse::RecDescent::_tracefirst($_[1]),
724             q{time},
725             $tracelevel)
726             if defined $::RD_TRACE;
727 0           my $thisprod = $thisrule->{"prods"}[0];
728 0           $text = $_[1];
729 0           my $_savetext;
730 0           @item = (q{time});
731 0           %item = (__RULE__ => q{time});
732 0           my $repcount = 0;
733              
734              
735 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/\\b\\d\{2\}:\\d\{2\}:\\d\{2\}\\b/]}, Parse::RecDescent::_tracefirst($text),
736             q{time},
737             $tracelevel)
738             if defined $::RD_TRACE;
739 0           $lastsep = "";
740 0           $expectation->is(q{})->at($text);
741            
742              
743 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\b\d{2}:\d{2}:\d{2}\b)/)
  0 0          
744             {
745            
746 0           $expectation->failed();
747 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
748             Parse::RecDescent::_tracefirst($text))
749             if defined $::RD_TRACE;
750              
751 0           last;
752             }
753 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
754 0           substr($text,0,length($current_match),q{});
755 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
756             . $current_match . q{])},
757             Parse::RecDescent::_tracefirst($text))
758             if defined $::RD_TRACE;
759 0           push @item, $item{__PATTERN1__}=$current_match;
760            
761              
762              
763 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/\\b\\d\{2\}:\\d\{2\}:\\d\{2\}\\b/]<<},
764             Parse::RecDescent::_tracefirst($text),
765             q{time},
766             $tracelevel)
767             if defined $::RD_TRACE;
768 0           $_matched = 1;
769 0           last;
770             }
771              
772              
773 0   0       while (!$_matched && !$commit)
774             {
775            
776 0 0         Parse::RecDescent::_trace(q{Trying production: [/\\b\\d\{2\}:\\d\{2\}\\b(?!:)/]},
777             Parse::RecDescent::_tracefirst($_[1]),
778             q{time},
779             $tracelevel)
780             if defined $::RD_TRACE;
781 0           my $thisprod = $thisrule->{"prods"}[1];
782 0           $text = $_[1];
783 0           my $_savetext;
784 0           @item = (q{time});
785 0           %item = (__RULE__ => q{time});
786 0           my $repcount = 0;
787              
788              
789 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/\\b\\d\{2\}:\\d\{2\}\\b(?!:)/]}, Parse::RecDescent::_tracefirst($text),
790             q{time},
791             $tracelevel)
792             if defined $::RD_TRACE;
793 0           $lastsep = "";
794 0           $expectation->is(q{})->at($text);
795            
796              
797 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\b\d{2}:\d{2}\b(?!:))/)
  0 0          
798             {
799            
800 0           $expectation->failed();
801 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
802             Parse::RecDescent::_tracefirst($text))
803             if defined $::RD_TRACE;
804              
805 0           last;
806             }
807 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
808 0           substr($text,0,length($current_match),q{});
809 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
810             . $current_match . q{])},
811             Parse::RecDescent::_tracefirst($text))
812             if defined $::RD_TRACE;
813 0           push @item, $item{__PATTERN1__}=$current_match;
814            
815              
816 0 0         Parse::RecDescent::_trace(q{Trying action},
817             Parse::RecDescent::_tracefirst($text),
818             q{time},
819             $tracelevel)
820             if defined $::RD_TRACE;
821            
822              
823 0 0         $_tok = ($_noactions) ? 0 : do { "$item[1]:00" };
  0            
824 0 0         unless (defined $_tok)
825             {
826 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
827             if defined $::RD_TRACE;
828 0           last;
829             }
830 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
831             . $_tok . q{])},
832             Parse::RecDescent::_tracefirst($text))
833             if defined $::RD_TRACE;
834 0           push @item, $_tok;
835 0           $item{__ACTION1__}=$_tok;
836            
837              
838              
839 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/\\b\\d\{2\}:\\d\{2\}\\b(?!:)/]<<},
840             Parse::RecDescent::_tracefirst($text),
841             q{time},
842             $tracelevel)
843             if defined $::RD_TRACE;
844 0           $_matched = 1;
845 0           last;
846             }
847              
848              
849 0 0 0       unless ( $_matched || defined($score) )
850             {
851            
852              
853 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
854 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
855             Parse::RecDescent::_tracefirst($_[1]),
856             q{time},
857             $tracelevel)
858             if defined $::RD_TRACE;
859 0           return undef;
860             }
861 0 0 0       if (!defined($return) && defined($score))
862             {
863 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
864             q{time},
865             $tracelevel)
866             if defined $::RD_TRACE;
867 0           $return = $score_return;
868             }
869 0           splice @{$thisparser->{errors}}, $err_at;
  0            
870 0 0         $return = $item[$#item] unless defined $return;
871 0 0         if (defined $::RD_TRACE)
872             {
873 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
874             $return . q{])}, "",
875             q{time},
876             $tracelevel);
877 0           Parse::RecDescent::_trace(q{(consumed: [} .
878             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
879             Parse::RecDescent::_tracefirst($text),
880             , q{time},
881             $tracelevel)
882             }
883 0           $_[1] = $text;
884 0           return $return;
885             }
886              
887             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
888             sub Parse::RecDescent::Cheater::Parser::date
889             {
890 0     0     my $thisparser = $_[0];
891 11     11   70 use vars q{$tracelevel};
  11         28  
  11         10562  
892 0   0       local $tracelevel = ($tracelevel||0)+1;
893 0           $ERRORS = 0;
894 0           my $thisrule = $thisparser->{"rules"}{"date"};
895            
896 0 0         Parse::RecDescent::_trace(q{Trying rule: [date]},
897             Parse::RecDescent::_tracefirst($_[1]),
898             q{date},
899             $tracelevel)
900             if defined $::RD_TRACE;
901              
902            
903 0           my $err_at = @{$thisparser->{errors}};
  0            
904              
905 0           my $score;
906             my $score_return;
907 0           my $_tok;
908 0           my $return = undef;
909 0           my $_matched=0;
910 0           my $commit=0;
911 0           my @item = ();
912 0           my %item = ();
913 0   0       my $repeating = defined($_[2]) && $_[2];
914 0   0       my $_noactions = defined($_[3]) && $_[3];
915 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
916 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
917 0           my $text;
918 0           my $lastsep="";
919 0           my $current_match;
920 0           my $expectation = new Parse::RecDescent::Expectation(q{/\\b\\d\{4\}-\\d\{2\}-\\d\{2\}\\b/});
921 0           $expectation->at($_[1]);
922            
923 0           my $prevline;
924 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
925            
926 0           my $thisline;
927 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
928              
929            
930              
931 0   0       while (!$_matched && !$commit)
932             {
933            
934 0 0         Parse::RecDescent::_trace(q{Trying production: [/\\b\\d\{4\}-\\d\{2\}-\\d\{2\}\\b/]},
935             Parse::RecDescent::_tracefirst($_[1]),
936             q{date},
937             $tracelevel)
938             if defined $::RD_TRACE;
939 0           my $thisprod = $thisrule->{"prods"}[0];
940 0           $text = $_[1];
941 0           my $_savetext;
942 0           @item = (q{date});
943 0           %item = (__RULE__ => q{date});
944 0           my $repcount = 0;
945              
946              
947 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/\\b\\d\{4\}-\\d\{2\}-\\d\{2\}\\b/]}, Parse::RecDescent::_tracefirst($text),
948             q{date},
949             $tracelevel)
950             if defined $::RD_TRACE;
951 0           $lastsep = "";
952 0           $expectation->is(q{})->at($text);
953            
954              
955 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\b\d{4}-\d{2}-\d{2}\b)/)
  0 0          
956             {
957            
958 0           $expectation->failed();
959 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
960             Parse::RecDescent::_tracefirst($text))
961             if defined $::RD_TRACE;
962              
963 0           last;
964             }
965 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
966 0           substr($text,0,length($current_match),q{});
967 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
968             . $current_match . q{])},
969             Parse::RecDescent::_tracefirst($text))
970             if defined $::RD_TRACE;
971 0           push @item, $item{__PATTERN1__}=$current_match;
972            
973              
974              
975 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/\\b\\d\{4\}-\\d\{2\}-\\d\{2\}\\b/]<<},
976             Parse::RecDescent::_tracefirst($text),
977             q{date},
978             $tracelevel)
979             if defined $::RD_TRACE;
980 0           $_matched = 1;
981 0           last;
982             }
983              
984              
985 0 0 0       unless ( $_matched || defined($score) )
986             {
987            
988              
989 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
990 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
991             Parse::RecDescent::_tracefirst($_[1]),
992             q{date},
993             $tracelevel)
994             if defined $::RD_TRACE;
995 0           return undef;
996             }
997 0 0 0       if (!defined($return) && defined($score))
998             {
999 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1000             q{date},
1001             $tracelevel)
1002             if defined $::RD_TRACE;
1003 0           $return = $score_return;
1004             }
1005 0           splice @{$thisparser->{errors}}, $err_at;
  0            
1006 0 0         $return = $item[$#item] unless defined $return;
1007 0 0         if (defined $::RD_TRACE)
1008             {
1009 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1010             $return . q{])}, "",
1011             q{date},
1012             $tracelevel);
1013 0           Parse::RecDescent::_trace(q{(consumed: [} .
1014             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1015             Parse::RecDescent::_tracefirst($text),
1016             , q{date},
1017             $tracelevel)
1018             }
1019 0           $_[1] = $text;
1020 0           return $return;
1021             }
1022              
1023             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1024             sub Parse::RecDescent::Cheater::Parser::rows_definition
1025             {
1026 0     0     my $thisparser = $_[0];
1027 11     11   71 use vars q{$tracelevel};
  11         21  
  11         8302  
1028 0   0       local $tracelevel = ($tracelevel||0)+1;
1029 0           $ERRORS = 0;
1030 0           my $thisrule = $thisparser->{"rules"}{"rows_definition"};
1031            
1032 0 0         Parse::RecDescent::_trace(q{Trying rule: [rows_definition]},
1033             Parse::RecDescent::_tracefirst($_[1]),
1034             q{rows_definition},
1035             $tracelevel)
1036             if defined $::RD_TRACE;
1037              
1038            
1039 0           my $err_at = @{$thisparser->{errors}};
  0            
1040              
1041 0           my $score;
1042             my $score_return;
1043 0           my $_tok;
1044 0           my $return = undef;
1045 0           my $_matched=0;
1046 0           my $commit=0;
1047 0           my @item = ();
1048 0           my %item = ();
1049 0   0       my $repeating = defined($_[2]) && $_[2];
1050 0   0       my $_noactions = defined($_[3]) && $_[3];
1051 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
1052 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1053 0           my $text;
1054 0           my $lastsep="";
1055 0           my $current_match;
1056 0           my $expectation = new Parse::RecDescent::Expectation(q{/\\d+/});
1057 0           $expectation->at($_[1]);
1058            
1059 0           my $prevline;
1060 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
1061            
1062 0           my $thisline;
1063 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1064              
1065            
1066              
1067 0   0       while (!$_matched && !$commit)
1068             {
1069            
1070 0 0         Parse::RecDescent::_trace(q{Trying production: [/\\d+/ <commit> table_name]},
1071             Parse::RecDescent::_tracefirst($_[1]),
1072             q{rows_definition},
1073             $tracelevel)
1074             if defined $::RD_TRACE;
1075 0           my $thisprod = $thisrule->{"prods"}[0];
1076 0           $text = $_[1];
1077 0           my $_savetext;
1078 0           @item = (q{rows_definition});
1079 0           %item = (__RULE__ => q{rows_definition});
1080 0           my $repcount = 0;
1081              
1082              
1083 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
1084             q{rows_definition},
1085             $tracelevel)
1086             if defined $::RD_TRACE;
1087 0           $lastsep = "";
1088 0           $expectation->is(q{})->at($text);
1089            
1090              
1091 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\d+)/)
  0 0          
1092             {
1093            
1094 0           $expectation->failed();
1095 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
1096             Parse::RecDescent::_tracefirst($text))
1097             if defined $::RD_TRACE;
1098              
1099 0           last;
1100             }
1101 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
1102 0           substr($text,0,length($current_match),q{});
1103 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1104             . $current_match . q{])},
1105             Parse::RecDescent::_tracefirst($text))
1106             if defined $::RD_TRACE;
1107 0           push @item, $item{__PATTERN1__}=$current_match;
1108            
1109              
1110            
1111              
1112 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
1113             Parse::RecDescent::_tracefirst($text),
1114             q{rows_definition},
1115             $tracelevel)
1116             if defined $::RD_TRACE;
1117 0           $_tok = do { $commit = 1 };
  0            
1118 0 0         if (defined($_tok))
1119             {
1120 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1121             . $_tok . q{])},
1122             Parse::RecDescent::_tracefirst($text))
1123             if defined $::RD_TRACE;
1124             }
1125             else
1126             {
1127 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1128             Parse::RecDescent::_tracefirst($text))
1129             if defined $::RD_TRACE;
1130             }
1131            
1132 0 0         last unless defined $_tok;
1133 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1134            
1135              
1136 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
1137             Parse::RecDescent::_tracefirst($text),
1138             q{rows_definition},
1139             $tracelevel)
1140             if defined $::RD_TRACE;
1141 11     11   70 if (1) { no strict qw{refs};
  11         26  
  11         12366  
  0            
1142 0           $expectation->is(q{table_name})->at($text);
1143 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1144             {
1145            
1146 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
1147             Parse::RecDescent::_tracefirst($text),
1148             q{rows_definition},
1149             $tracelevel)
1150             if defined $::RD_TRACE;
1151 0           $expectation->failed();
1152 0           last;
1153             }
1154 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
1155             . $_tok . q{]},
1156            
1157             Parse::RecDescent::_tracefirst($text),
1158             q{rows_definition},
1159             $tracelevel)
1160             if defined $::RD_TRACE;
1161 0           $item{q{table_name}} = $_tok;
1162 0           push @item, $_tok;
1163            
1164             }
1165              
1166 0 0         Parse::RecDescent::_trace(q{Trying action},
1167             Parse::RecDescent::_tracefirst($text),
1168             q{rows_definition},
1169             $tracelevel)
1170             if defined $::RD_TRACE;
1171            
1172              
1173 0 0         $_tok = ($_noactions) ? 0 : do { ['rows', $item[1], $item[3]] };
  0            
1174 0 0         unless (defined $_tok)
1175             {
1176 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1177             if defined $::RD_TRACE;
1178 0           last;
1179             }
1180 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1181             . $_tok . q{])},
1182             Parse::RecDescent::_tracefirst($text))
1183             if defined $::RD_TRACE;
1184 0           push @item, $_tok;
1185 0           $item{__ACTION1__}=$_tok;
1186            
1187              
1188              
1189 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ <commit> table_name]<<},
1190             Parse::RecDescent::_tracefirst($text),
1191             q{rows_definition},
1192             $tracelevel)
1193             if defined $::RD_TRACE;
1194 0           $_matched = 1;
1195 0           last;
1196             }
1197              
1198              
1199 0           while (!$_matched)
1200             {
1201            
1202 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
1203             Parse::RecDescent::_tracefirst($_[1]),
1204             q{rows_definition},
1205             $tracelevel)
1206             if defined $::RD_TRACE;
1207 0           my $thisprod = $thisrule->{"prods"}[1];
1208            
1209 0           my $_savetext;
1210 0           @item = (q{rows_definition});
1211 0           %item = (__RULE__ => q{rows_definition});
1212 0           my $repcount = 0;
1213              
1214              
1215            
1216              
1217 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
1218             Parse::RecDescent::_tracefirst($text),
1219             q{rows_definition},
1220             $tracelevel)
1221             if defined $::RD_TRACE;
1222 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
1223 0           my $rule = $item[0];
1224 0           $rule =~ s/_/ /g;
1225             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
1226 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
1227 0           } unless $_noactions; undef } else {0} };
1228 0 0         if (defined($_tok))
1229             {
1230 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1231             . $_tok . q{])},
1232             Parse::RecDescent::_tracefirst($text))
1233             if defined $::RD_TRACE;
1234             }
1235             else
1236             {
1237 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1238             Parse::RecDescent::_tracefirst($text))
1239             if defined $::RD_TRACE;
1240             }
1241            
1242 0 0         last unless defined $_tok;
1243 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1244            
1245              
1246 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
1247             Parse::RecDescent::_tracefirst($text),
1248             q{rows_definition},
1249             $tracelevel)
1250             if defined $::RD_TRACE;
1251 0           undef $return;
1252            
1253              
1254 0           $_tok = undef;
1255            
1256 0 0         last unless defined $_tok;
1257              
1258              
1259 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
1260             Parse::RecDescent::_tracefirst($text),
1261             q{rows_definition},
1262             $tracelevel)
1263             if defined $::RD_TRACE;
1264 0           $_matched = 1;
1265 0           last;
1266             }
1267              
1268              
1269 0 0 0       unless ( $_matched || defined($score) )
1270             {
1271            
1272              
1273 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
1274 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1275             Parse::RecDescent::_tracefirst($_[1]),
1276             q{rows_definition},
1277             $tracelevel)
1278             if defined $::RD_TRACE;
1279 0           return undef;
1280             }
1281 0 0 0       if (!defined($return) && defined($score))
1282             {
1283 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1284             q{rows_definition},
1285             $tracelevel)
1286             if defined $::RD_TRACE;
1287 0           $return = $score_return;
1288             }
1289 0           splice @{$thisparser->{errors}}, $err_at;
  0            
1290 0 0         $return = $item[$#item] unless defined $return;
1291 0 0         if (defined $::RD_TRACE)
1292             {
1293 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1294             $return . q{])}, "",
1295             q{rows_definition},
1296             $tracelevel);
1297 0           Parse::RecDescent::_trace(q{(consumed: [} .
1298             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1299             Parse::RecDescent::_tracefirst($text),
1300             , q{rows_definition},
1301             $tracelevel)
1302             }
1303 0           $_[1] = $text;
1304 0           return $return;
1305             }
1306              
1307             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1308             sub Parse::RecDescent::Cheater::Parser::range
1309             {
1310 0     0     my $thisparser = $_[0];
1311 11     11   73 use vars q{$tracelevel};
  11         25  
  11         5023  
1312 0   0       local $tracelevel = ($tracelevel||0)+1;
1313 0           $ERRORS = 0;
1314 0           my $thisrule = $thisparser->{"rules"}{"range"};
1315            
1316 0 0         Parse::RecDescent::_trace(q{Trying rule: [range]},
1317             Parse::RecDescent::_tracefirst($_[1]),
1318             q{range},
1319             $tracelevel)
1320             if defined $::RD_TRACE;
1321              
1322            
1323 0           my $err_at = @{$thisparser->{errors}};
  0            
1324              
1325 0           my $score;
1326             my $score_return;
1327 0           my $_tok;
1328 0           my $return = undef;
1329 0           my $_matched=0;
1330 0           my $commit=0;
1331 0           my @item = ();
1332 0           my %item = ();
1333 0   0       my $repeating = defined($_[2]) && $_[2];
1334 0   0       my $_noactions = defined($_[3]) && $_[3];
1335 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
1336 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1337 0           my $text;
1338 0           my $lastsep="";
1339 0           my $current_match;
1340 0           my $expectation = new Parse::RecDescent::Expectation(q{number, or date, or time, or datetime});
1341 0           $expectation->at($_[1]);
1342            
1343 0           my $prevline;
1344 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
1345            
1346 0           my $thisline;
1347 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1348              
1349            
1350              
1351 0   0       while (!$_matched && !$commit)
1352             {
1353            
1354 0 0         Parse::RecDescent::_trace(q{Trying production: [number '..' <commit> number]},
1355             Parse::RecDescent::_tracefirst($_[1]),
1356             q{range},
1357             $tracelevel)
1358             if defined $::RD_TRACE;
1359 0           my $thisprod = $thisrule->{"prods"}[0];
1360 0           $text = $_[1];
1361 0           my $_savetext;
1362 0           @item = (q{range});
1363 0           %item = (__RULE__ => q{range});
1364 0           my $repcount = 0;
1365              
1366              
1367 0 0         Parse::RecDescent::_trace(q{Trying subrule: [number]},
1368             Parse::RecDescent::_tracefirst($text),
1369             q{range},
1370             $tracelevel)
1371             if defined $::RD_TRACE;
1372 11     11   63 if (1) { no strict qw{refs};
  11         25  
  11         6459  
  0            
1373 0           $expectation->is(q{})->at($text);
1374 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::number($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1375             {
1376            
1377 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [number]>>},
1378             Parse::RecDescent::_tracefirst($text),
1379             q{range},
1380             $tracelevel)
1381             if defined $::RD_TRACE;
1382 0           $expectation->failed();
1383 0           last;
1384             }
1385 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [number]<< (return value: [}
1386             . $_tok . q{]},
1387            
1388             Parse::RecDescent::_tracefirst($text),
1389             q{range},
1390             $tracelevel)
1391             if defined $::RD_TRACE;
1392 0           $item{q{number}} = $_tok;
1393 0           push @item, $_tok;
1394            
1395             }
1396              
1397 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['..']},
1398             Parse::RecDescent::_tracefirst($text),
1399             q{range},
1400             $tracelevel)
1401             if defined $::RD_TRACE;
1402 0           $lastsep = "";
1403 0           $expectation->is(q{'..'})->at($text);
1404            
1405              
1406 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\.\./)
  0 0          
1407             {
1408            
1409 0           $expectation->failed();
1410 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1411             Parse::RecDescent::_tracefirst($text))
1412             if defined $::RD_TRACE;
1413 0           last;
1414             }
1415 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
1416 0           substr($text,0,length($current_match),q{});
1417 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1418             . $current_match . q{])},
1419             Parse::RecDescent::_tracefirst($text))
1420             if defined $::RD_TRACE;
1421 0           push @item, $item{__STRING1__}=$current_match;
1422            
1423              
1424            
1425              
1426 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
1427             Parse::RecDescent::_tracefirst($text),
1428             q{range},
1429             $tracelevel)
1430             if defined $::RD_TRACE;
1431 0           $_tok = do { $commit = 1 };
  0            
1432 0 0         if (defined($_tok))
1433             {
1434 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1435             . $_tok . q{])},
1436             Parse::RecDescent::_tracefirst($text))
1437             if defined $::RD_TRACE;
1438             }
1439             else
1440             {
1441 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1442             Parse::RecDescent::_tracefirst($text))
1443             if defined $::RD_TRACE;
1444             }
1445            
1446 0 0         last unless defined $_tok;
1447 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1448            
1449              
1450 0 0         Parse::RecDescent::_trace(q{Trying subrule: [number]},
1451             Parse::RecDescent::_tracefirst($text),
1452             q{range},
1453             $tracelevel)
1454             if defined $::RD_TRACE;
1455 11     11   66 if (1) { no strict qw{refs};
  11         27  
  11         5492  
  0            
1456 0           $expectation->is(q{number})->at($text);
1457 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::number($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1458             {
1459            
1460 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [number]>>},
1461             Parse::RecDescent::_tracefirst($text),
1462             q{range},
1463             $tracelevel)
1464             if defined $::RD_TRACE;
1465 0           $expectation->failed();
1466 0           last;
1467             }
1468 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [number]<< (return value: [}
1469             . $_tok . q{]},
1470            
1471             Parse::RecDescent::_tracefirst($text),
1472             q{range},
1473             $tracelevel)
1474             if defined $::RD_TRACE;
1475 0           $item{q{number}} = $_tok;
1476 0           push @item, $_tok;
1477            
1478             }
1479              
1480 0 0         Parse::RecDescent::_trace(q{Trying action},
1481             Parse::RecDescent::_tracefirst($text),
1482             q{range},
1483             $tracelevel)
1484             if defined $::RD_TRACE;
1485            
1486              
1487 0 0         $_tok = ($_noactions) ? 0 : do { ['nrange', $item[1], $item[4]] };
  0            
1488 0 0         unless (defined $_tok)
1489             {
1490 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1491             if defined $::RD_TRACE;
1492 0           last;
1493             }
1494 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1495             . $_tok . q{])},
1496             Parse::RecDescent::_tracefirst($text))
1497             if defined $::RD_TRACE;
1498 0           push @item, $_tok;
1499 0           $item{__ACTION1__}=$_tok;
1500            
1501              
1502              
1503 0 0         Parse::RecDescent::_trace(q{>>Matched production: [number '..' <commit> number]<<},
1504             Parse::RecDescent::_tracefirst($text),
1505             q{range},
1506             $tracelevel)
1507             if defined $::RD_TRACE;
1508 0           $_matched = 1;
1509 0           last;
1510             }
1511              
1512              
1513 0   0       while (!$_matched && !$commit)
1514             {
1515            
1516 0 0         Parse::RecDescent::_trace(q{Trying production: [date '..' <commit> date]},
1517             Parse::RecDescent::_tracefirst($_[1]),
1518             q{range},
1519             $tracelevel)
1520             if defined $::RD_TRACE;
1521 0           my $thisprod = $thisrule->{"prods"}[1];
1522 0           $text = $_[1];
1523 0           my $_savetext;
1524 0           @item = (q{range});
1525 0           %item = (__RULE__ => q{range});
1526 0           my $repcount = 0;
1527              
1528              
1529 0 0         Parse::RecDescent::_trace(q{Trying subrule: [date]},
1530             Parse::RecDescent::_tracefirst($text),
1531             q{range},
1532             $tracelevel)
1533             if defined $::RD_TRACE;
1534 11     11   75 if (1) { no strict qw{refs};
  11         47  
  11         6535  
  0            
1535 0           $expectation->is(q{})->at($text);
1536 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::date($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1537             {
1538            
1539 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [date]>>},
1540             Parse::RecDescent::_tracefirst($text),
1541             q{range},
1542             $tracelevel)
1543             if defined $::RD_TRACE;
1544 0           $expectation->failed();
1545 0           last;
1546             }
1547 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [date]<< (return value: [}
1548             . $_tok . q{]},
1549            
1550             Parse::RecDescent::_tracefirst($text),
1551             q{range},
1552             $tracelevel)
1553             if defined $::RD_TRACE;
1554 0           $item{q{date}} = $_tok;
1555 0           push @item, $_tok;
1556            
1557             }
1558              
1559 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['..']},
1560             Parse::RecDescent::_tracefirst($text),
1561             q{range},
1562             $tracelevel)
1563             if defined $::RD_TRACE;
1564 0           $lastsep = "";
1565 0           $expectation->is(q{'..'})->at($text);
1566            
1567              
1568 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\.\./)
  0 0          
1569             {
1570            
1571 0           $expectation->failed();
1572 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1573             Parse::RecDescent::_tracefirst($text))
1574             if defined $::RD_TRACE;
1575 0           last;
1576             }
1577 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
1578 0           substr($text,0,length($current_match),q{});
1579 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1580             . $current_match . q{])},
1581             Parse::RecDescent::_tracefirst($text))
1582             if defined $::RD_TRACE;
1583 0           push @item, $item{__STRING1__}=$current_match;
1584            
1585              
1586            
1587              
1588 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
1589             Parse::RecDescent::_tracefirst($text),
1590             q{range},
1591             $tracelevel)
1592             if defined $::RD_TRACE;
1593 0           $_tok = do { $commit = 1 };
  0            
1594 0 0         if (defined($_tok))
1595             {
1596 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1597             . $_tok . q{])},
1598             Parse::RecDescent::_tracefirst($text))
1599             if defined $::RD_TRACE;
1600             }
1601             else
1602             {
1603 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1604             Parse::RecDescent::_tracefirst($text))
1605             if defined $::RD_TRACE;
1606             }
1607            
1608 0 0         last unless defined $_tok;
1609 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1610            
1611              
1612 0 0         Parse::RecDescent::_trace(q{Trying subrule: [date]},
1613             Parse::RecDescent::_tracefirst($text),
1614             q{range},
1615             $tracelevel)
1616             if defined $::RD_TRACE;
1617 11     11   192 if (1) { no strict qw{refs};
  11         32  
  11         6170  
  0            
1618 0           $expectation->is(q{date})->at($text);
1619 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::date($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1620             {
1621            
1622 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [date]>>},
1623             Parse::RecDescent::_tracefirst($text),
1624             q{range},
1625             $tracelevel)
1626             if defined $::RD_TRACE;
1627 0           $expectation->failed();
1628 0           last;
1629             }
1630 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [date]<< (return value: [}
1631             . $_tok . q{]},
1632            
1633             Parse::RecDescent::_tracefirst($text),
1634             q{range},
1635             $tracelevel)
1636             if defined $::RD_TRACE;
1637 0           $item{q{date}} = $_tok;
1638 0           push @item, $_tok;
1639            
1640             }
1641              
1642 0 0         Parse::RecDescent::_trace(q{Trying action},
1643             Parse::RecDescent::_tracefirst($text),
1644             q{range},
1645             $tracelevel)
1646             if defined $::RD_TRACE;
1647            
1648              
1649 0 0         $_tok = ($_noactions) ? 0 : do { ['drange', $item[1], $item[4]] };
  0            
1650 0 0         unless (defined $_tok)
1651             {
1652 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1653             if defined $::RD_TRACE;
1654 0           last;
1655             }
1656 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1657             . $_tok . q{])},
1658             Parse::RecDescent::_tracefirst($text))
1659             if defined $::RD_TRACE;
1660 0           push @item, $_tok;
1661 0           $item{__ACTION1__}=$_tok;
1662            
1663              
1664              
1665 0 0         Parse::RecDescent::_trace(q{>>Matched production: [date '..' <commit> date]<<},
1666             Parse::RecDescent::_tracefirst($text),
1667             q{range},
1668             $tracelevel)
1669             if defined $::RD_TRACE;
1670 0           $_matched = 1;
1671 0           last;
1672             }
1673              
1674              
1675 0   0       while (!$_matched && !$commit)
1676             {
1677            
1678 0 0         Parse::RecDescent::_trace(q{Trying production: [time '..' <commit> time]},
1679             Parse::RecDescent::_tracefirst($_[1]),
1680             q{range},
1681             $tracelevel)
1682             if defined $::RD_TRACE;
1683 0           my $thisprod = $thisrule->{"prods"}[2];
1684 0           $text = $_[1];
1685 0           my $_savetext;
1686 0           @item = (q{range});
1687 0           %item = (__RULE__ => q{range});
1688 0           my $repcount = 0;
1689              
1690              
1691 0 0         Parse::RecDescent::_trace(q{Trying subrule: [time]},
1692             Parse::RecDescent::_tracefirst($text),
1693             q{range},
1694             $tracelevel)
1695             if defined $::RD_TRACE;
1696 11     11   70 if (1) { no strict qw{refs};
  11         23  
  11         6655  
  0            
1697 0           $expectation->is(q{})->at($text);
1698 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::time($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1699             {
1700            
1701 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [time]>>},
1702             Parse::RecDescent::_tracefirst($text),
1703             q{range},
1704             $tracelevel)
1705             if defined $::RD_TRACE;
1706 0           $expectation->failed();
1707 0           last;
1708             }
1709 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [time]<< (return value: [}
1710             . $_tok . q{]},
1711            
1712             Parse::RecDescent::_tracefirst($text),
1713             q{range},
1714             $tracelevel)
1715             if defined $::RD_TRACE;
1716 0           $item{q{time}} = $_tok;
1717 0           push @item, $_tok;
1718            
1719             }
1720              
1721 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['..']},
1722             Parse::RecDescent::_tracefirst($text),
1723             q{range},
1724             $tracelevel)
1725             if defined $::RD_TRACE;
1726 0           $lastsep = "";
1727 0           $expectation->is(q{'..'})->at($text);
1728            
1729              
1730 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\.\./)
  0 0          
1731             {
1732            
1733 0           $expectation->failed();
1734 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1735             Parse::RecDescent::_tracefirst($text))
1736             if defined $::RD_TRACE;
1737 0           last;
1738             }
1739 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
1740 0           substr($text,0,length($current_match),q{});
1741 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1742             . $current_match . q{])},
1743             Parse::RecDescent::_tracefirst($text))
1744             if defined $::RD_TRACE;
1745 0           push @item, $item{__STRING1__}=$current_match;
1746            
1747              
1748            
1749              
1750 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
1751             Parse::RecDescent::_tracefirst($text),
1752             q{range},
1753             $tracelevel)
1754             if defined $::RD_TRACE;
1755 0           $_tok = do { $commit = 1 };
  0            
1756 0 0         if (defined($_tok))
1757             {
1758 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1759             . $_tok . q{])},
1760             Parse::RecDescent::_tracefirst($text))
1761             if defined $::RD_TRACE;
1762             }
1763             else
1764             {
1765 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1766             Parse::RecDescent::_tracefirst($text))
1767             if defined $::RD_TRACE;
1768             }
1769            
1770 0 0         last unless defined $_tok;
1771 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1772            
1773              
1774 0 0         Parse::RecDescent::_trace(q{Trying subrule: [time]},
1775             Parse::RecDescent::_tracefirst($text),
1776             q{range},
1777             $tracelevel)
1778             if defined $::RD_TRACE;
1779 11     11   83 if (1) { no strict qw{refs};
  11         23  
  11         6387  
  0            
1780 0           $expectation->is(q{time})->at($text);
1781 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::time($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1782             {
1783            
1784 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [time]>>},
1785             Parse::RecDescent::_tracefirst($text),
1786             q{range},
1787             $tracelevel)
1788             if defined $::RD_TRACE;
1789 0           $expectation->failed();
1790 0           last;
1791             }
1792 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [time]<< (return value: [}
1793             . $_tok . q{]},
1794            
1795             Parse::RecDescent::_tracefirst($text),
1796             q{range},
1797             $tracelevel)
1798             if defined $::RD_TRACE;
1799 0           $item{q{time}} = $_tok;
1800 0           push @item, $_tok;
1801            
1802             }
1803              
1804 0 0         Parse::RecDescent::_trace(q{Trying action},
1805             Parse::RecDescent::_tracefirst($text),
1806             q{range},
1807             $tracelevel)
1808             if defined $::RD_TRACE;
1809            
1810              
1811 0 0         $_tok = ($_noactions) ? 0 : do { ['trange', $item[1], $item[4]] };
  0            
1812 0 0         unless (defined $_tok)
1813             {
1814 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1815             if defined $::RD_TRACE;
1816 0           last;
1817             }
1818 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1819             . $_tok . q{])},
1820             Parse::RecDescent::_tracefirst($text))
1821             if defined $::RD_TRACE;
1822 0           push @item, $_tok;
1823 0           $item{__ACTION1__}=$_tok;
1824            
1825              
1826              
1827 0 0         Parse::RecDescent::_trace(q{>>Matched production: [time '..' <commit> time]<<},
1828             Parse::RecDescent::_tracefirst($text),
1829             q{range},
1830             $tracelevel)
1831             if defined $::RD_TRACE;
1832 0           $_matched = 1;
1833 0           last;
1834             }
1835              
1836              
1837 0   0       while (!$_matched && !$commit)
1838             {
1839            
1840 0 0         Parse::RecDescent::_trace(q{Trying production: [datetime '..' <commit> datetime]},
1841             Parse::RecDescent::_tracefirst($_[1]),
1842             q{range},
1843             $tracelevel)
1844             if defined $::RD_TRACE;
1845 0           my $thisprod = $thisrule->{"prods"}[3];
1846 0           $text = $_[1];
1847 0           my $_savetext;
1848 0           @item = (q{range});
1849 0           %item = (__RULE__ => q{range});
1850 0           my $repcount = 0;
1851              
1852              
1853 0 0         Parse::RecDescent::_trace(q{Trying subrule: [datetime]},
1854             Parse::RecDescent::_tracefirst($text),
1855             q{range},
1856             $tracelevel)
1857             if defined $::RD_TRACE;
1858 11     11   68 if (1) { no strict qw{refs};
  11         24  
  11         7293  
  0            
1859 0           $expectation->is(q{})->at($text);
1860 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::datetime($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1861             {
1862            
1863 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [datetime]>>},
1864             Parse::RecDescent::_tracefirst($text),
1865             q{range},
1866             $tracelevel)
1867             if defined $::RD_TRACE;
1868 0           $expectation->failed();
1869 0           last;
1870             }
1871 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [datetime]<< (return value: [}
1872             . $_tok . q{]},
1873            
1874             Parse::RecDescent::_tracefirst($text),
1875             q{range},
1876             $tracelevel)
1877             if defined $::RD_TRACE;
1878 0           $item{q{datetime}} = $_tok;
1879 0           push @item, $_tok;
1880            
1881             }
1882              
1883 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['..']},
1884             Parse::RecDescent::_tracefirst($text),
1885             q{range},
1886             $tracelevel)
1887             if defined $::RD_TRACE;
1888 0           $lastsep = "";
1889 0           $expectation->is(q{'..'})->at($text);
1890            
1891              
1892 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\.\./)
  0 0          
1893             {
1894            
1895 0           $expectation->failed();
1896 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1897             Parse::RecDescent::_tracefirst($text))
1898             if defined $::RD_TRACE;
1899 0           last;
1900             }
1901 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
1902 0           substr($text,0,length($current_match),q{});
1903 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1904             . $current_match . q{])},
1905             Parse::RecDescent::_tracefirst($text))
1906             if defined $::RD_TRACE;
1907 0           push @item, $item{__STRING1__}=$current_match;
1908            
1909              
1910            
1911              
1912 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
1913             Parse::RecDescent::_tracefirst($text),
1914             q{range},
1915             $tracelevel)
1916             if defined $::RD_TRACE;
1917 0           $_tok = do { $commit = 1 };
  0            
1918 0 0         if (defined($_tok))
1919             {
1920 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1921             . $_tok . q{])},
1922             Parse::RecDescent::_tracefirst($text))
1923             if defined $::RD_TRACE;
1924             }
1925             else
1926             {
1927 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
1928             Parse::RecDescent::_tracefirst($text))
1929             if defined $::RD_TRACE;
1930             }
1931            
1932 0 0         last unless defined $_tok;
1933 0           push @item, $item{__DIRECTIVE1__}=$_tok;
1934            
1935              
1936 0 0         Parse::RecDescent::_trace(q{Trying subrule: [datetime]},
1937             Parse::RecDescent::_tracefirst($text),
1938             q{range},
1939             $tracelevel)
1940             if defined $::RD_TRACE;
1941 11     11   66 if (1) { no strict qw{refs};
  11         29  
  11         16334  
  0            
1942 0           $expectation->is(q{datetime})->at($text);
1943 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::datetime($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
1944             {
1945            
1946 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [datetime]>>},
1947             Parse::RecDescent::_tracefirst($text),
1948             q{range},
1949             $tracelevel)
1950             if defined $::RD_TRACE;
1951 0           $expectation->failed();
1952 0           last;
1953             }
1954 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [datetime]<< (return value: [}
1955             . $_tok . q{]},
1956            
1957             Parse::RecDescent::_tracefirst($text),
1958             q{range},
1959             $tracelevel)
1960             if defined $::RD_TRACE;
1961 0           $item{q{datetime}} = $_tok;
1962 0           push @item, $_tok;
1963            
1964             }
1965              
1966 0 0         Parse::RecDescent::_trace(q{Trying action},
1967             Parse::RecDescent::_tracefirst($text),
1968             q{range},
1969             $tracelevel)
1970             if defined $::RD_TRACE;
1971            
1972              
1973 0 0         $_tok = ($_noactions) ? 0 : do { ['dtrange', $item[1], $item[4]] };
  0            
1974 0 0         unless (defined $_tok)
1975             {
1976 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1977             if defined $::RD_TRACE;
1978 0           last;
1979             }
1980 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1981             . $_tok . q{])},
1982             Parse::RecDescent::_tracefirst($text))
1983             if defined $::RD_TRACE;
1984 0           push @item, $_tok;
1985 0           $item{__ACTION1__}=$_tok;
1986            
1987              
1988              
1989 0 0         Parse::RecDescent::_trace(q{>>Matched production: [datetime '..' <commit> datetime]<<},
1990             Parse::RecDescent::_tracefirst($text),
1991             q{range},
1992             $tracelevel)
1993             if defined $::RD_TRACE;
1994 0           $_matched = 1;
1995 0           last;
1996             }
1997              
1998              
1999 0           while (!$_matched)
2000             {
2001            
2002 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
2003             Parse::RecDescent::_tracefirst($_[1]),
2004             q{range},
2005             $tracelevel)
2006             if defined $::RD_TRACE;
2007 0           my $thisprod = $thisrule->{"prods"}[4];
2008            
2009 0           my $_savetext;
2010 0           @item = (q{range});
2011 0           %item = (__RULE__ => q{range});
2012 0           my $repcount = 0;
2013              
2014              
2015            
2016              
2017 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
2018             Parse::RecDescent::_tracefirst($text),
2019             q{range},
2020             $tracelevel)
2021             if defined $::RD_TRACE;
2022 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
2023 0           my $rule = $item[0];
2024 0           $rule =~ s/_/ /g;
2025             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
2026 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
2027 0           } unless $_noactions; undef } else {0} };
2028 0 0         if (defined($_tok))
2029             {
2030 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2031             . $_tok . q{])},
2032             Parse::RecDescent::_tracefirst($text))
2033             if defined $::RD_TRACE;
2034             }
2035             else
2036             {
2037 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
2038             Parse::RecDescent::_tracefirst($text))
2039             if defined $::RD_TRACE;
2040             }
2041            
2042 0 0         last unless defined $_tok;
2043 0           push @item, $item{__DIRECTIVE1__}=$_tok;
2044            
2045              
2046 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
2047             Parse::RecDescent::_tracefirst($text),
2048             q{range},
2049             $tracelevel)
2050             if defined $::RD_TRACE;
2051 0           undef $return;
2052            
2053              
2054 0           $_tok = undef;
2055            
2056 0 0         last unless defined $_tok;
2057              
2058              
2059 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
2060             Parse::RecDescent::_tracefirst($text),
2061             q{range},
2062             $tracelevel)
2063             if defined $::RD_TRACE;
2064 0           $_matched = 1;
2065 0           last;
2066             }
2067              
2068              
2069 0 0 0       unless ( $_matched || defined($score) )
2070             {
2071            
2072              
2073 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
2074 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2075             Parse::RecDescent::_tracefirst($_[1]),
2076             q{range},
2077             $tracelevel)
2078             if defined $::RD_TRACE;
2079 0           return undef;
2080             }
2081 0 0 0       if (!defined($return) && defined($score))
2082             {
2083 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2084             q{range},
2085             $tracelevel)
2086             if defined $::RD_TRACE;
2087 0           $return = $score_return;
2088             }
2089 0           splice @{$thisparser->{errors}}, $err_at;
  0            
2090 0 0         $return = $item[$#item] unless defined $return;
2091 0 0         if (defined $::RD_TRACE)
2092             {
2093 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2094             $return . q{])}, "",
2095             q{range},
2096             $tracelevel);
2097 0           Parse::RecDescent::_trace(q{(consumed: [} .
2098             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2099             Parse::RecDescent::_tracefirst($text),
2100             , q{range},
2101             $tracelevel)
2102             }
2103 0           $_[1] = $text;
2104 0           return $return;
2105             }
2106              
2107             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2108             sub Parse::RecDescent::Cheater::Parser::type_definition
2109             {
2110 0     0     my $thisparser = $_[0];
2111 11     11   90 use vars q{$tracelevel};
  11         34  
  11         11154  
2112 0   0       local $tracelevel = ($tracelevel||0)+1;
2113 0           $ERRORS = 0;
2114 0           my $thisrule = $thisparser->{"rules"}{"type_definition"};
2115            
2116 0 0         Parse::RecDescent::_trace(q{Trying rule: [type_definition]},
2117             Parse::RecDescent::_tracefirst($_[1]),
2118             q{type_definition},
2119             $tracelevel)
2120             if defined $::RD_TRACE;
2121              
2122            
2123 0           my $err_at = @{$thisparser->{errors}};
  0            
2124              
2125 0           my $score;
2126             my $score_return;
2127 0           my $_tok;
2128 0           my $return = undef;
2129 0           my $_matched=0;
2130 0           my $commit=0;
2131 0           my @item = ();
2132 0           my %item = ();
2133 0   0       my $repeating = defined($_[2]) && $_[2];
2134 0   0       my $_noactions = defined($_[3]) && $_[3];
2135 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
2136 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2137 0           my $text;
2138 0           my $lastsep="";
2139 0           my $current_match;
2140 0           my $expectation = new Parse::RecDescent::Expectation(q{'type'});
2141 0           $expectation->at($_[1]);
2142            
2143 0           my $prevline;
2144 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
2145            
2146 0           my $thisline;
2147 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2148              
2149            
2150              
2151 0   0       while (!$_matched && !$commit)
2152             {
2153            
2154 0 0         Parse::RecDescent::_trace(q{Trying production: ['type' <commit> type '=' type domain attribute]},
2155             Parse::RecDescent::_tracefirst($_[1]),
2156             q{type_definition},
2157             $tracelevel)
2158             if defined $::RD_TRACE;
2159 0           my $thisprod = $thisrule->{"prods"}[0];
2160 0           $text = $_[1];
2161 0           my $_savetext;
2162 0           @item = (q{type_definition});
2163 0           %item = (__RULE__ => q{type_definition});
2164 0           my $repcount = 0;
2165              
2166              
2167 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['type']},
2168             Parse::RecDescent::_tracefirst($text),
2169             q{type_definition},
2170             $tracelevel)
2171             if defined $::RD_TRACE;
2172 0           $lastsep = "";
2173 0           $expectation->is(q{})->at($text);
2174            
2175              
2176 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Atype/)
  0 0          
2177             {
2178            
2179 0           $expectation->failed();
2180 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
2181             Parse::RecDescent::_tracefirst($text))
2182             if defined $::RD_TRACE;
2183 0           last;
2184             }
2185 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2186 0           substr($text,0,length($current_match),q{});
2187 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2188             . $current_match . q{])},
2189             Parse::RecDescent::_tracefirst($text))
2190             if defined $::RD_TRACE;
2191 0           push @item, $item{__STRING1__}=$current_match;
2192            
2193              
2194            
2195              
2196 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
2197             Parse::RecDescent::_tracefirst($text),
2198             q{type_definition},
2199             $tracelevel)
2200             if defined $::RD_TRACE;
2201 0           $_tok = do { $commit = 1 };
  0            
2202 0 0         if (defined($_tok))
2203             {
2204 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2205             . $_tok . q{])},
2206             Parse::RecDescent::_tracefirst($text))
2207             if defined $::RD_TRACE;
2208             }
2209             else
2210             {
2211 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
2212             Parse::RecDescent::_tracefirst($text))
2213             if defined $::RD_TRACE;
2214             }
2215            
2216 0 0         last unless defined $_tok;
2217 0           push @item, $item{__DIRECTIVE1__}=$_tok;
2218            
2219              
2220 0 0         Parse::RecDescent::_trace(q{Trying subrule: [type]},
2221             Parse::RecDescent::_tracefirst($text),
2222             q{type_definition},
2223             $tracelevel)
2224             if defined $::RD_TRACE;
2225 11     11   157 if (1) { no strict qw{refs};
  11         36  
  11         4964  
  0            
2226 0           $expectation->is(q{type})->at($text);
2227 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
2228             {
2229            
2230 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
2231             Parse::RecDescent::_tracefirst($text),
2232             q{type_definition},
2233             $tracelevel)
2234             if defined $::RD_TRACE;
2235 0           $expectation->failed();
2236 0           last;
2237             }
2238 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
2239             . $_tok . q{]},
2240            
2241             Parse::RecDescent::_tracefirst($text),
2242             q{type_definition},
2243             $tracelevel)
2244             if defined $::RD_TRACE;
2245 0           $item{q{type}} = $_tok;
2246 0           push @item, $_tok;
2247            
2248             }
2249              
2250 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['=']},
2251             Parse::RecDescent::_tracefirst($text),
2252             q{type_definition},
2253             $tracelevel)
2254             if defined $::RD_TRACE;
2255 0           $lastsep = "";
2256 0           $expectation->is(q{'='})->at($text);
2257            
2258              
2259 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\=/)
  0 0          
2260             {
2261            
2262 0           $expectation->failed();
2263 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
2264             Parse::RecDescent::_tracefirst($text))
2265             if defined $::RD_TRACE;
2266 0           last;
2267             }
2268 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2269 0           substr($text,0,length($current_match),q{});
2270 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2271             . $current_match . q{])},
2272             Parse::RecDescent::_tracefirst($text))
2273             if defined $::RD_TRACE;
2274 0           push @item, $item{__STRING2__}=$current_match;
2275            
2276              
2277 0 0         Parse::RecDescent::_trace(q{Trying subrule: [type]},
2278             Parse::RecDescent::_tracefirst($text),
2279             q{type_definition},
2280             $tracelevel)
2281             if defined $::RD_TRACE;
2282 11     11   66 if (1) { no strict qw{refs};
  11         25  
  11         17584  
  0            
2283 0           $expectation->is(q{type})->at($text);
2284 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
2285             {
2286            
2287 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
2288             Parse::RecDescent::_tracefirst($text),
2289             q{type_definition},
2290             $tracelevel)
2291             if defined $::RD_TRACE;
2292 0           $expectation->failed();
2293 0           last;
2294             }
2295 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
2296             . $_tok . q{]},
2297            
2298             Parse::RecDescent::_tracefirst($text),
2299             q{type_definition},
2300             $tracelevel)
2301             if defined $::RD_TRACE;
2302 0           $item{q{type}} = $_tok;
2303 0           push @item, $_tok;
2304            
2305             }
2306              
2307 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [domain]},
2308             Parse::RecDescent::_tracefirst($text),
2309             q{type_definition},
2310             $tracelevel)
2311             if defined $::RD_TRACE;
2312 0           $expectation->is(q{domain})->at($text);
2313            
2314 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::domain, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0            
2315             {
2316 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [domain]>>},
2317             Parse::RecDescent::_tracefirst($text),
2318             q{type_definition},
2319             $tracelevel)
2320             if defined $::RD_TRACE;
2321 0           last;
2322             }
2323 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [domain]<< (}
2324             . @$_tok . q{ times)},
2325            
2326             Parse::RecDescent::_tracefirst($text),
2327             q{type_definition},
2328             $tracelevel)
2329             if defined $::RD_TRACE;
2330 0           $item{q{domain(?)}} = $_tok;
2331 0           push @item, $_tok;
2332            
2333              
2334              
2335 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [attribute]},
2336             Parse::RecDescent::_tracefirst($text),
2337             q{type_definition},
2338             $tracelevel)
2339             if defined $::RD_TRACE;
2340 0           $expectation->is(q{attribute})->at($text);
2341            
2342 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::attribute, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  0            
2343             {
2344 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [attribute]>>},
2345             Parse::RecDescent::_tracefirst($text),
2346             q{type_definition},
2347             $tracelevel)
2348             if defined $::RD_TRACE;
2349 0           last;
2350             }
2351 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [attribute]<< (}
2352             . @$_tok . q{ times)},
2353            
2354             Parse::RecDescent::_tracefirst($text),
2355             q{type_definition},
2356             $tracelevel)
2357             if defined $::RD_TRACE;
2358 0           $item{q{attribute(s?)}} = $_tok;
2359 0           push @item, $_tok;
2360            
2361              
2362              
2363 0 0         Parse::RecDescent::_trace(q{Trying action},
2364             Parse::RecDescent::_tracefirst($text),
2365             q{type_definition},
2366             $tracelevel)
2367             if defined $::RD_TRACE;
2368            
2369              
2370 0 0         $_tok = ($_noactions) ? 0 : do {
2371 0           ['type', $item[3], $item[4], $item[5], $item[6]] };
2372 0 0         unless (defined $_tok)
2373             {
2374 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
2375             if defined $::RD_TRACE;
2376 0           last;
2377             }
2378 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2379             . $_tok . q{])},
2380             Parse::RecDescent::_tracefirst($text))
2381             if defined $::RD_TRACE;
2382 0           push @item, $_tok;
2383 0           $item{__ACTION1__}=$_tok;
2384            
2385              
2386              
2387 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['type' <commit> type '=' type domain attribute]<<},
2388             Parse::RecDescent::_tracefirst($text),
2389             q{type_definition},
2390             $tracelevel)
2391             if defined $::RD_TRACE;
2392 0           $_matched = 1;
2393 0           last;
2394             }
2395              
2396              
2397 0           while (!$_matched)
2398             {
2399            
2400 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
2401             Parse::RecDescent::_tracefirst($_[1]),
2402             q{type_definition},
2403             $tracelevel)
2404             if defined $::RD_TRACE;
2405 0           my $thisprod = $thisrule->{"prods"}[1];
2406            
2407 0           my $_savetext;
2408 0           @item = (q{type_definition});
2409 0           %item = (__RULE__ => q{type_definition});
2410 0           my $repcount = 0;
2411              
2412              
2413            
2414              
2415 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
2416             Parse::RecDescent::_tracefirst($text),
2417             q{type_definition},
2418             $tracelevel)
2419             if defined $::RD_TRACE;
2420 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
2421 0           my $rule = $item[0];
2422 0           $rule =~ s/_/ /g;
2423             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
2424 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
2425 0           } unless $_noactions; undef } else {0} };
2426 0 0         if (defined($_tok))
2427             {
2428 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2429             . $_tok . q{])},
2430             Parse::RecDescent::_tracefirst($text))
2431             if defined $::RD_TRACE;
2432             }
2433             else
2434             {
2435 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
2436             Parse::RecDescent::_tracefirst($text))
2437             if defined $::RD_TRACE;
2438             }
2439            
2440 0 0         last unless defined $_tok;
2441 0           push @item, $item{__DIRECTIVE1__}=$_tok;
2442            
2443              
2444 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
2445             Parse::RecDescent::_tracefirst($text),
2446             q{type_definition},
2447             $tracelevel)
2448             if defined $::RD_TRACE;
2449 0           undef $return;
2450            
2451              
2452 0           $_tok = undef;
2453            
2454 0 0         last unless defined $_tok;
2455              
2456              
2457 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
2458             Parse::RecDescent::_tracefirst($text),
2459             q{type_definition},
2460             $tracelevel)
2461             if defined $::RD_TRACE;
2462 0           $_matched = 1;
2463 0           last;
2464             }
2465              
2466              
2467 0 0 0       unless ( $_matched || defined($score) )
2468             {
2469            
2470              
2471 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
2472 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2473             Parse::RecDescent::_tracefirst($_[1]),
2474             q{type_definition},
2475             $tracelevel)
2476             if defined $::RD_TRACE;
2477 0           return undef;
2478             }
2479 0 0 0       if (!defined($return) && defined($score))
2480             {
2481 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2482             q{type_definition},
2483             $tracelevel)
2484             if defined $::RD_TRACE;
2485 0           $return = $score_return;
2486             }
2487 0           splice @{$thisparser->{errors}}, $err_at;
  0            
2488 0 0         $return = $item[$#item] unless defined $return;
2489 0 0         if (defined $::RD_TRACE)
2490             {
2491 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2492             $return . q{])}, "",
2493             q{type_definition},
2494             $tracelevel);
2495 0           Parse::RecDescent::_trace(q{(consumed: [} .
2496             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2497             Parse::RecDescent::_tracefirst($text),
2498             , q{type_definition},
2499             $tracelevel)
2500             }
2501 0           $_[1] = $text;
2502 0           return $return;
2503             }
2504              
2505             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2506             sub Parse::RecDescent::Cheater::Parser::string
2507             {
2508 0     0     my $thisparser = $_[0];
2509 11     11   77 use vars q{$tracelevel};
  11         22  
  11         33616  
2510 0   0       local $tracelevel = ($tracelevel||0)+1;
2511 0           $ERRORS = 0;
2512 0           my $thisrule = $thisparser->{"rules"}{"string"};
2513            
2514 0 0         Parse::RecDescent::_trace(q{Trying rule: [string]},
2515             Parse::RecDescent::_tracefirst($_[1]),
2516             q{string},
2517             $tracelevel)
2518             if defined $::RD_TRACE;
2519              
2520            
2521 0           my $err_at = @{$thisparser->{errors}};
  0            
2522              
2523 0           my $score;
2524             my $score_return;
2525 0           my $_tok;
2526 0           my $return = undef;
2527 0           my $_matched=0;
2528 0           my $commit=0;
2529 0           my @item = ();
2530 0           my %item = ();
2531 0   0       my $repeating = defined($_[2]) && $_[2];
2532 0   0       my $_noactions = defined($_[3]) && $_[3];
2533 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
2534 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2535 0           my $text;
2536 0           my $lastsep="";
2537 0           my $current_match;
2538 0           my $expectation = new Parse::RecDescent::Expectation(q{''', or '"'});
2539 0           $expectation->at($_[1]);
2540            
2541 0           my $prevline;
2542 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
2543            
2544 0           my $thisline;
2545 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2546              
2547            
2548              
2549 0   0       while (!$_matched && !$commit)
2550             {
2551            
2552 0 0         Parse::RecDescent::_trace(q{Trying production: [''' <commit> /(?:[^']|\\\\.)*/ ''']},
2553             Parse::RecDescent::_tracefirst($_[1]),
2554             q{string},
2555             $tracelevel)
2556             if defined $::RD_TRACE;
2557 0           my $thisprod = $thisrule->{"prods"}[0];
2558 0           $text = $_[1];
2559 0           my $_savetext;
2560 0           @item = (q{string});
2561 0           %item = (__RULE__ => q{string});
2562 0           my $repcount = 0;
2563              
2564              
2565 0 0         Parse::RecDescent::_trace(q{Trying terminal: [''']},
2566             Parse::RecDescent::_tracefirst($text),
2567             q{string},
2568             $tracelevel)
2569             if defined $::RD_TRACE;
2570 0           $lastsep = "";
2571 0           $expectation->is(q{})->at($text);
2572            
2573              
2574 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  0 0 0        
  0   0        
  0            
2575             substr($text,0,length($_tok)) eq $_tok and
2576 0           do { substr($text,0,length($_tok)) = ""; 1; }
  0            
2577             )
2578             {
2579            
2580 0           $expectation->failed();
2581 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2582             Parse::RecDescent::_tracefirst($text))
2583             if defined $::RD_TRACE;
2584 0           last;
2585             }
2586 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2587             . $_tok . q{])},
2588             Parse::RecDescent::_tracefirst($text))
2589             if defined $::RD_TRACE;
2590 0           push @item, $item{__STRING1__}=$_tok;
2591            
2592              
2593            
2594              
2595 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
2596             Parse::RecDescent::_tracefirst($text),
2597             q{string},
2598             $tracelevel)
2599             if defined $::RD_TRACE;
2600 0           $_tok = do { $commit = 1 };
  0            
2601 0 0         if (defined($_tok))
2602             {
2603 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2604             . $_tok . q{])},
2605             Parse::RecDescent::_tracefirst($text))
2606             if defined $::RD_TRACE;
2607             }
2608             else
2609             {
2610 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
2611             Parse::RecDescent::_tracefirst($text))
2612             if defined $::RD_TRACE;
2613             }
2614            
2615 0 0         last unless defined $_tok;
2616 0           push @item, $item{__DIRECTIVE1__}=$_tok;
2617            
2618              
2619 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/(?:[^']|\\\\.)*/]}, Parse::RecDescent::_tracefirst($text),
2620             q{string},
2621             $tracelevel)
2622             if defined $::RD_TRACE;
2623 0           $lastsep = "";
2624 0           $expectation->is(q{/(?:[^']|\\\\.)*/})->at($text);
2625            
2626              
2627 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:[^']|\\.)*)/)
  0 0          
2628             {
2629            
2630 0           $expectation->failed();
2631 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2632             Parse::RecDescent::_tracefirst($text))
2633             if defined $::RD_TRACE;
2634              
2635 0           last;
2636             }
2637 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2638 0           substr($text,0,length($current_match),q{});
2639 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2640             . $current_match . q{])},
2641             Parse::RecDescent::_tracefirst($text))
2642             if defined $::RD_TRACE;
2643 0           push @item, $item{__PATTERN1__}=$current_match;
2644            
2645              
2646 0 0         Parse::RecDescent::_trace(q{Trying terminal: [''']},
2647             Parse::RecDescent::_tracefirst($text),
2648             q{string},
2649             $tracelevel)
2650             if defined $::RD_TRACE;
2651 0           $lastsep = "";
2652 0           $expectation->is(q{'''})->at($text);
2653            
2654              
2655 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  0 0 0        
  0   0        
  0            
2656             substr($text,0,length($_tok)) eq $_tok and
2657 0           do { substr($text,0,length($_tok)) = ""; 1; }
  0            
2658             )
2659             {
2660            
2661 0           $expectation->failed();
2662 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2663             Parse::RecDescent::_tracefirst($text))
2664             if defined $::RD_TRACE;
2665 0           last;
2666             }
2667 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2668             . $_tok . q{])},
2669             Parse::RecDescent::_tracefirst($text))
2670             if defined $::RD_TRACE;
2671 0           push @item, $item{__STRING2__}=$_tok;
2672            
2673              
2674 0 0         Parse::RecDescent::_trace(q{Trying action},
2675             Parse::RecDescent::_tracefirst($text),
2676             q{string},
2677             $tracelevel)
2678             if defined $::RD_TRACE;
2679            
2680              
2681 0 0         $_tok = ($_noactions) ? 0 : do { eval "'$item[3]'" };
  0            
2682 0 0         unless (defined $_tok)
2683             {
2684 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
2685             if defined $::RD_TRACE;
2686 0           last;
2687             }
2688 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2689             . $_tok . q{])},
2690             Parse::RecDescent::_tracefirst($text))
2691             if defined $::RD_TRACE;
2692 0           push @item, $_tok;
2693 0           $item{__ACTION1__}=$_tok;
2694            
2695              
2696              
2697 0 0         Parse::RecDescent::_trace(q{>>Matched production: [''' <commit> /(?:[^']|\\\\.)*/ ''']<<},
2698             Parse::RecDescent::_tracefirst($text),
2699             q{string},
2700             $tracelevel)
2701             if defined $::RD_TRACE;
2702 0           $_matched = 1;
2703 0           last;
2704             }
2705              
2706              
2707 0   0       while (!$_matched && !$commit)
2708             {
2709            
2710 0 0         Parse::RecDescent::_trace(q{Trying production: ['"' <commit> /(?:[^"]|\\\\.)*/ '"']},
2711             Parse::RecDescent::_tracefirst($_[1]),
2712             q{string},
2713             $tracelevel)
2714             if defined $::RD_TRACE;
2715 0           my $thisprod = $thisrule->{"prods"}[1];
2716 0           $text = $_[1];
2717 0           my $_savetext;
2718 0           @item = (q{string});
2719 0           %item = (__RULE__ => q{string});
2720 0           my $repcount = 0;
2721              
2722              
2723 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['"']},
2724             Parse::RecDescent::_tracefirst($text),
2725             q{string},
2726             $tracelevel)
2727             if defined $::RD_TRACE;
2728 0           $lastsep = "";
2729 0           $expectation->is(q{})->at($text);
2730            
2731              
2732 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/)
  0 0          
2733             {
2734            
2735 0           $expectation->failed();
2736 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
2737             Parse::RecDescent::_tracefirst($text))
2738             if defined $::RD_TRACE;
2739 0           last;
2740             }
2741 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2742 0           substr($text,0,length($current_match),q{});
2743 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2744             . $current_match . q{])},
2745             Parse::RecDescent::_tracefirst($text))
2746             if defined $::RD_TRACE;
2747 0           push @item, $item{__STRING1__}=$current_match;
2748            
2749              
2750            
2751              
2752 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
2753             Parse::RecDescent::_tracefirst($text),
2754             q{string},
2755             $tracelevel)
2756             if defined $::RD_TRACE;
2757 0           $_tok = do { $commit = 1 };
  0            
2758 0 0         if (defined($_tok))
2759             {
2760 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2761             . $_tok . q{])},
2762             Parse::RecDescent::_tracefirst($text))
2763             if defined $::RD_TRACE;
2764             }
2765             else
2766             {
2767 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
2768             Parse::RecDescent::_tracefirst($text))
2769             if defined $::RD_TRACE;
2770             }
2771            
2772 0 0         last unless defined $_tok;
2773 0           push @item, $item{__DIRECTIVE1__}=$_tok;
2774            
2775              
2776 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/(?:[^"]|\\\\.)*/]}, Parse::RecDescent::_tracefirst($text),
2777             q{string},
2778             $tracelevel)
2779             if defined $::RD_TRACE;
2780 0           $lastsep = "";
2781 0           $expectation->is(q{/(?:[^"]|\\\\.)*/})->at($text);
2782            
2783              
2784 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:[^"]|\\.)*)/)
  0 0          
2785             {
2786            
2787 0           $expectation->failed();
2788 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2789             Parse::RecDescent::_tracefirst($text))
2790             if defined $::RD_TRACE;
2791              
2792 0           last;
2793             }
2794 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2795 0           substr($text,0,length($current_match),q{});
2796 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2797             . $current_match . q{])},
2798             Parse::RecDescent::_tracefirst($text))
2799             if defined $::RD_TRACE;
2800 0           push @item, $item{__PATTERN1__}=$current_match;
2801            
2802              
2803 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['"']},
2804             Parse::RecDescent::_tracefirst($text),
2805             q{string},
2806             $tracelevel)
2807             if defined $::RD_TRACE;
2808 0           $lastsep = "";
2809 0           $expectation->is(q{'"'})->at($text);
2810            
2811              
2812 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/)
  0 0          
2813             {
2814            
2815 0           $expectation->failed();
2816 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
2817             Parse::RecDescent::_tracefirst($text))
2818             if defined $::RD_TRACE;
2819 0           last;
2820             }
2821 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
2822 0           substr($text,0,length($current_match),q{});
2823 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2824             . $current_match . q{])},
2825             Parse::RecDescent::_tracefirst($text))
2826             if defined $::RD_TRACE;
2827 0           push @item, $item{__STRING2__}=$current_match;
2828            
2829              
2830 0 0         Parse::RecDescent::_trace(q{Trying action},
2831             Parse::RecDescent::_tracefirst($text),
2832             q{string},
2833             $tracelevel)
2834             if defined $::RD_TRACE;
2835            
2836              
2837 0 0         $_tok = ($_noactions) ? 0 : do { eval qq{"$item[3]"} };
  0            
2838 0 0         unless (defined $_tok)
2839             {
2840 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
2841             if defined $::RD_TRACE;
2842 0           last;
2843             }
2844 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2845             . $_tok . q{])},
2846             Parse::RecDescent::_tracefirst($text))
2847             if defined $::RD_TRACE;
2848 0           push @item, $_tok;
2849 0           $item{__ACTION1__}=$_tok;
2850            
2851              
2852              
2853 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['"' <commit> /(?:[^"]|\\\\.)*/ '"']<<},
2854             Parse::RecDescent::_tracefirst($text),
2855             q{string},
2856             $tracelevel)
2857             if defined $::RD_TRACE;
2858 0           $_matched = 1;
2859 0           last;
2860             }
2861              
2862              
2863 0 0 0       unless ( $_matched || defined($score) )
2864             {
2865            
2866              
2867 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
2868 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2869             Parse::RecDescent::_tracefirst($_[1]),
2870             q{string},
2871             $tracelevel)
2872             if defined $::RD_TRACE;
2873 0           return undef;
2874             }
2875 0 0 0       if (!defined($return) && defined($score))
2876             {
2877 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2878             q{string},
2879             $tracelevel)
2880             if defined $::RD_TRACE;
2881 0           $return = $score_return;
2882             }
2883 0           splice @{$thisparser->{errors}}, $err_at;
  0            
2884 0 0         $return = $item[$#item] unless defined $return;
2885 0 0         if (defined $::RD_TRACE)
2886             {
2887 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2888             $return . q{])}, "",
2889             q{string},
2890             $tracelevel);
2891 0           Parse::RecDescent::_trace(q{(consumed: [} .
2892             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2893             Parse::RecDescent::_tracefirst($text),
2894             , q{string},
2895             $tracelevel)
2896             }
2897 0           $_[1] = $text;
2898 0           return $return;
2899             }
2900              
2901             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2902             sub Parse::RecDescent::Cheater::Parser::datetime
2903             {
2904 0     0     my $thisparser = $_[0];
2905 11     11   97 use vars q{$tracelevel};
  11         28  
  11         4736  
2906 0   0       local $tracelevel = ($tracelevel||0)+1;
2907 0           $ERRORS = 0;
2908 0           my $thisrule = $thisparser->{"rules"}{"datetime"};
2909            
2910 0 0         Parse::RecDescent::_trace(q{Trying rule: [datetime]},
2911             Parse::RecDescent::_tracefirst($_[1]),
2912             q{datetime},
2913             $tracelevel)
2914             if defined $::RD_TRACE;
2915              
2916            
2917 0           my $err_at = @{$thisparser->{errors}};
  0            
2918              
2919 0           my $score;
2920             my $score_return;
2921 0           my $_tok;
2922 0           my $return = undef;
2923 0           my $_matched=0;
2924 0           my $commit=0;
2925 0           my @item = ();
2926 0           my %item = ();
2927 0   0       my $repeating = defined($_[2]) && $_[2];
2928 0   0       my $_noactions = defined($_[3]) && $_[3];
2929 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
2930 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2931 0           my $text;
2932 0           my $lastsep="";
2933 0           my $current_match;
2934 0           my $expectation = new Parse::RecDescent::Expectation(q{date});
2935 0           $expectation->at($_[1]);
2936            
2937 0           my $prevline;
2938 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
2939            
2940 0           my $thisline;
2941 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2942              
2943            
2944              
2945 0   0       while (!$_matched && !$commit)
2946             {
2947            
2948 0 0         Parse::RecDescent::_trace(q{Trying production: [date time]},
2949             Parse::RecDescent::_tracefirst($_[1]),
2950             q{datetime},
2951             $tracelevel)
2952             if defined $::RD_TRACE;
2953 0           my $thisprod = $thisrule->{"prods"}[0];
2954 0           $text = $_[1];
2955 0           my $_savetext;
2956 0           @item = (q{datetime});
2957 0           %item = (__RULE__ => q{datetime});
2958 0           my $repcount = 0;
2959              
2960              
2961 0 0         Parse::RecDescent::_trace(q{Trying subrule: [date]},
2962             Parse::RecDescent::_tracefirst($text),
2963             q{datetime},
2964             $tracelevel)
2965             if defined $::RD_TRACE;
2966 11     11   69 if (1) { no strict qw{refs};
  11         24  
  11         2393  
  0            
2967 0           $expectation->is(q{})->at($text);
2968 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::date($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
2969             {
2970            
2971 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [date]>>},
2972             Parse::RecDescent::_tracefirst($text),
2973             q{datetime},
2974             $tracelevel)
2975             if defined $::RD_TRACE;
2976 0           $expectation->failed();
2977 0           last;
2978             }
2979 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [date]<< (return value: [}
2980             . $_tok . q{]},
2981            
2982             Parse::RecDescent::_tracefirst($text),
2983             q{datetime},
2984             $tracelevel)
2985             if defined $::RD_TRACE;
2986 0           $item{q{date}} = $_tok;
2987 0           push @item, $_tok;
2988            
2989             }
2990              
2991 0 0         Parse::RecDescent::_trace(q{Trying subrule: [time]},
2992             Parse::RecDescent::_tracefirst($text),
2993             q{datetime},
2994             $tracelevel)
2995             if defined $::RD_TRACE;
2996 11     11   70 if (1) { no strict qw{refs};
  11         22  
  11         11807  
  0            
2997 0           $expectation->is(q{time})->at($text);
2998 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::time($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
2999             {
3000            
3001 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [time]>>},
3002             Parse::RecDescent::_tracefirst($text),
3003             q{datetime},
3004             $tracelevel)
3005             if defined $::RD_TRACE;
3006 0           $expectation->failed();
3007 0           last;
3008             }
3009 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [time]<< (return value: [}
3010             . $_tok . q{]},
3011            
3012             Parse::RecDescent::_tracefirst($text),
3013             q{datetime},
3014             $tracelevel)
3015             if defined $::RD_TRACE;
3016 0           $item{q{time}} = $_tok;
3017 0           push @item, $_tok;
3018            
3019             }
3020              
3021 0 0         Parse::RecDescent::_trace(q{Trying action},
3022             Parse::RecDescent::_tracefirst($text),
3023             q{datetime},
3024             $tracelevel)
3025             if defined $::RD_TRACE;
3026            
3027              
3028 0 0         $_tok = ($_noactions) ? 0 : do { "$item[1] $item[2]" };
  0            
3029 0 0         unless (defined $_tok)
3030             {
3031 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3032             if defined $::RD_TRACE;
3033 0           last;
3034             }
3035 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3036             . $_tok . q{])},
3037             Parse::RecDescent::_tracefirst($text))
3038             if defined $::RD_TRACE;
3039 0           push @item, $_tok;
3040 0           $item{__ACTION1__}=$_tok;
3041            
3042              
3043              
3044 0 0         Parse::RecDescent::_trace(q{>>Matched production: [date time]<<},
3045             Parse::RecDescent::_tracefirst($text),
3046             q{datetime},
3047             $tracelevel)
3048             if defined $::RD_TRACE;
3049 0           $_matched = 1;
3050 0           last;
3051             }
3052              
3053              
3054 0 0 0       unless ( $_matched || defined($score) )
3055             {
3056            
3057              
3058 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
3059 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3060             Parse::RecDescent::_tracefirst($_[1]),
3061             q{datetime},
3062             $tracelevel)
3063             if defined $::RD_TRACE;
3064 0           return undef;
3065             }
3066 0 0 0       if (!defined($return) && defined($score))
3067             {
3068 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3069             q{datetime},
3070             $tracelevel)
3071             if defined $::RD_TRACE;
3072 0           $return = $score_return;
3073             }
3074 0           splice @{$thisparser->{errors}}, $err_at;
  0            
3075 0 0         $return = $item[$#item] unless defined $return;
3076 0 0         if (defined $::RD_TRACE)
3077             {
3078 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3079             $return . q{])}, "",
3080             q{datetime},
3081             $tracelevel);
3082 0           Parse::RecDescent::_trace(q{(consumed: [} .
3083             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3084             Parse::RecDescent::_tracefirst($text),
3085             , q{datetime},
3086             $tracelevel)
3087             }
3088 0           $_[1] = $text;
3089 0           return $return;
3090             }
3091              
3092             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3093             sub Parse::RecDescent::Cheater::Parser::attribute
3094             {
3095 0     0     my $thisparser = $_[0];
3096 11     11   72 use vars q{$tracelevel};
  11         24  
  11         44347  
3097 0   0       local $tracelevel = ($tracelevel||0)+1;
3098 0           $ERRORS = 0;
3099 0           my $thisrule = $thisparser->{"rules"}{"attribute"};
3100            
3101 0 0         Parse::RecDescent::_trace(q{Trying rule: [attribute]},
3102             Parse::RecDescent::_tracefirst($_[1]),
3103             q{attribute},
3104             $tracelevel)
3105             if defined $::RD_TRACE;
3106              
3107            
3108 0           my $err_at = @{$thisparser->{errors}};
  0            
3109              
3110 0           my $score;
3111             my $score_return;
3112 0           my $_tok;
3113 0           my $return = undef;
3114 0           my $_matched=0;
3115 0           my $commit=0;
3116 0           my @item = ();
3117 0           my %item = ();
3118 0   0       my $repeating = defined($_[2]) && $_[2];
3119 0   0       my $_noactions = defined($_[3]) && $_[3];
3120 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
3121 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3122 0           my $text;
3123 0           my $lastsep="";
3124 0           my $current_match;
3125 0           my $expectation = new Parse::RecDescent::Expectation(q{'unique', or 'unsigned', or 'asc', or 'desc', or 'not', or 'for'});
3126 0           $expectation->at($_[1]);
3127            
3128 0           my $prevline;
3129 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
3130            
3131 0           my $thisline;
3132 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3133              
3134            
3135              
3136 0   0       while (!$_matched && !$commit)
3137             {
3138            
3139 0 0         Parse::RecDescent::_trace(q{Trying production: ['unique']},
3140             Parse::RecDescent::_tracefirst($_[1]),
3141             q{attribute},
3142             $tracelevel)
3143             if defined $::RD_TRACE;
3144 0           my $thisprod = $thisrule->{"prods"}[0];
3145 0           $text = $_[1];
3146 0           my $_savetext;
3147 0           @item = (q{attribute});
3148 0           %item = (__RULE__ => q{attribute});
3149 0           my $repcount = 0;
3150              
3151              
3152 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['unique']},
3153             Parse::RecDescent::_tracefirst($text),
3154             q{attribute},
3155             $tracelevel)
3156             if defined $::RD_TRACE;
3157 0           $lastsep = "";
3158 0           $expectation->is(q{})->at($text);
3159            
3160              
3161 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Aunique/)
  0 0          
3162             {
3163            
3164 0           $expectation->failed();
3165 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3166             Parse::RecDescent::_tracefirst($text))
3167             if defined $::RD_TRACE;
3168 0           last;
3169             }
3170 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3171 0           substr($text,0,length($current_match),q{});
3172 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3173             . $current_match . q{])},
3174             Parse::RecDescent::_tracefirst($text))
3175             if defined $::RD_TRACE;
3176 0           push @item, $item{__STRING1__}=$current_match;
3177            
3178              
3179              
3180 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['unique']<<},
3181             Parse::RecDescent::_tracefirst($text),
3182             q{attribute},
3183             $tracelevel)
3184             if defined $::RD_TRACE;
3185 0           $_matched = 1;
3186 0           last;
3187             }
3188              
3189              
3190 0   0       while (!$_matched && !$commit)
3191             {
3192            
3193 0 0         Parse::RecDescent::_trace(q{Trying production: ['unsigned']},
3194             Parse::RecDescent::_tracefirst($_[1]),
3195             q{attribute},
3196             $tracelevel)
3197             if defined $::RD_TRACE;
3198 0           my $thisprod = $thisrule->{"prods"}[1];
3199 0           $text = $_[1];
3200 0           my $_savetext;
3201 0           @item = (q{attribute});
3202 0           %item = (__RULE__ => q{attribute});
3203 0           my $repcount = 0;
3204              
3205              
3206 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['unsigned']},
3207             Parse::RecDescent::_tracefirst($text),
3208             q{attribute},
3209             $tracelevel)
3210             if defined $::RD_TRACE;
3211 0           $lastsep = "";
3212 0           $expectation->is(q{})->at($text);
3213            
3214              
3215 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Aunsigned/)
  0 0          
3216             {
3217            
3218 0           $expectation->failed();
3219 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3220             Parse::RecDescent::_tracefirst($text))
3221             if defined $::RD_TRACE;
3222 0           last;
3223             }
3224 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3225 0           substr($text,0,length($current_match),q{});
3226 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3227             . $current_match . q{])},
3228             Parse::RecDescent::_tracefirst($text))
3229             if defined $::RD_TRACE;
3230 0           push @item, $item{__STRING1__}=$current_match;
3231            
3232              
3233              
3234 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['unsigned']<<},
3235             Parse::RecDescent::_tracefirst($text),
3236             q{attribute},
3237             $tracelevel)
3238             if defined $::RD_TRACE;
3239 0           $_matched = 1;
3240 0           last;
3241             }
3242              
3243              
3244 0   0       while (!$_matched && !$commit)
3245             {
3246            
3247 0 0         Parse::RecDescent::_trace(q{Trying production: ['asc']},
3248             Parse::RecDescent::_tracefirst($_[1]),
3249             q{attribute},
3250             $tracelevel)
3251             if defined $::RD_TRACE;
3252 0           my $thisprod = $thisrule->{"prods"}[2];
3253 0           $text = $_[1];
3254 0           my $_savetext;
3255 0           @item = (q{attribute});
3256 0           %item = (__RULE__ => q{attribute});
3257 0           my $repcount = 0;
3258              
3259              
3260 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['asc']},
3261             Parse::RecDescent::_tracefirst($text),
3262             q{attribute},
3263             $tracelevel)
3264             if defined $::RD_TRACE;
3265 0           $lastsep = "";
3266 0           $expectation->is(q{})->at($text);
3267            
3268              
3269 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Aasc/)
  0 0          
3270             {
3271            
3272 0           $expectation->failed();
3273 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3274             Parse::RecDescent::_tracefirst($text))
3275             if defined $::RD_TRACE;
3276 0           last;
3277             }
3278 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3279 0           substr($text,0,length($current_match),q{});
3280 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3281             . $current_match . q{])},
3282             Parse::RecDescent::_tracefirst($text))
3283             if defined $::RD_TRACE;
3284 0           push @item, $item{__STRING1__}=$current_match;
3285            
3286              
3287              
3288 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['asc']<<},
3289             Parse::RecDescent::_tracefirst($text),
3290             q{attribute},
3291             $tracelevel)
3292             if defined $::RD_TRACE;
3293 0           $_matched = 1;
3294 0           last;
3295             }
3296              
3297              
3298 0   0       while (!$_matched && !$commit)
3299             {
3300            
3301 0 0         Parse::RecDescent::_trace(q{Trying production: ['desc']},
3302             Parse::RecDescent::_tracefirst($_[1]),
3303             q{attribute},
3304             $tracelevel)
3305             if defined $::RD_TRACE;
3306 0           my $thisprod = $thisrule->{"prods"}[3];
3307 0           $text = $_[1];
3308 0           my $_savetext;
3309 0           @item = (q{attribute});
3310 0           %item = (__RULE__ => q{attribute});
3311 0           my $repcount = 0;
3312              
3313              
3314 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['desc']},
3315             Parse::RecDescent::_tracefirst($text),
3316             q{attribute},
3317             $tracelevel)
3318             if defined $::RD_TRACE;
3319 0           $lastsep = "";
3320 0           $expectation->is(q{})->at($text);
3321            
3322              
3323 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Adesc/)
  0 0          
3324             {
3325            
3326 0           $expectation->failed();
3327 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3328             Parse::RecDescent::_tracefirst($text))
3329             if defined $::RD_TRACE;
3330 0           last;
3331             }
3332 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3333 0           substr($text,0,length($current_match),q{});
3334 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3335             . $current_match . q{])},
3336             Parse::RecDescent::_tracefirst($text))
3337             if defined $::RD_TRACE;
3338 0           push @item, $item{__STRING1__}=$current_match;
3339            
3340              
3341              
3342 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['desc']<<},
3343             Parse::RecDescent::_tracefirst($text),
3344             q{attribute},
3345             $tracelevel)
3346             if defined $::RD_TRACE;
3347 0           $_matched = 1;
3348 0           last;
3349             }
3350              
3351              
3352 0   0       while (!$_matched && !$commit)
3353             {
3354            
3355 0 0         Parse::RecDescent::_trace(q{Trying production: ['not' <commit> 'null']},
3356             Parse::RecDescent::_tracefirst($_[1]),
3357             q{attribute},
3358             $tracelevel)
3359             if defined $::RD_TRACE;
3360 0           my $thisprod = $thisrule->{"prods"}[4];
3361 0           $text = $_[1];
3362 0           my $_savetext;
3363 0           @item = (q{attribute});
3364 0           %item = (__RULE__ => q{attribute});
3365 0           my $repcount = 0;
3366              
3367              
3368 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['not']},
3369             Parse::RecDescent::_tracefirst($text),
3370             q{attribute},
3371             $tracelevel)
3372             if defined $::RD_TRACE;
3373 0           $lastsep = "";
3374 0           $expectation->is(q{})->at($text);
3375            
3376              
3377 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Anot/)
  0 0          
3378             {
3379            
3380 0           $expectation->failed();
3381 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3382             Parse::RecDescent::_tracefirst($text))
3383             if defined $::RD_TRACE;
3384 0           last;
3385             }
3386 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3387 0           substr($text,0,length($current_match),q{});
3388 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3389             . $current_match . q{])},
3390             Parse::RecDescent::_tracefirst($text))
3391             if defined $::RD_TRACE;
3392 0           push @item, $item{__STRING1__}=$current_match;
3393            
3394              
3395            
3396              
3397 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
3398             Parse::RecDescent::_tracefirst($text),
3399             q{attribute},
3400             $tracelevel)
3401             if defined $::RD_TRACE;
3402 0           $_tok = do { $commit = 1 };
  0            
3403 0 0         if (defined($_tok))
3404             {
3405 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
3406             . $_tok . q{])},
3407             Parse::RecDescent::_tracefirst($text))
3408             if defined $::RD_TRACE;
3409             }
3410             else
3411             {
3412 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
3413             Parse::RecDescent::_tracefirst($text))
3414             if defined $::RD_TRACE;
3415             }
3416            
3417 0 0         last unless defined $_tok;
3418 0           push @item, $item{__DIRECTIVE1__}=$_tok;
3419            
3420              
3421 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['null']},
3422             Parse::RecDescent::_tracefirst($text),
3423             q{attribute},
3424             $tracelevel)
3425             if defined $::RD_TRACE;
3426 0           $lastsep = "";
3427 0           $expectation->is(q{'null'})->at($text);
3428            
3429              
3430 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Anull/)
  0 0          
3431             {
3432            
3433 0           $expectation->failed();
3434 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3435             Parse::RecDescent::_tracefirst($text))
3436             if defined $::RD_TRACE;
3437 0           last;
3438             }
3439 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3440 0           substr($text,0,length($current_match),q{});
3441 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3442             . $current_match . q{])},
3443             Parse::RecDescent::_tracefirst($text))
3444             if defined $::RD_TRACE;
3445 0           push @item, $item{__STRING2__}=$current_match;
3446            
3447              
3448 0 0         Parse::RecDescent::_trace(q{Trying action},
3449             Parse::RecDescent::_tracefirst($text),
3450             q{attribute},
3451             $tracelevel)
3452             if defined $::RD_TRACE;
3453            
3454              
3455 0 0         $_tok = ($_noactions) ? 0 : do { "$item[1] $item[3]" };
  0            
3456 0 0         unless (defined $_tok)
3457             {
3458 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3459             if defined $::RD_TRACE;
3460 0           last;
3461             }
3462 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3463             . $_tok . q{])},
3464             Parse::RecDescent::_tracefirst($text))
3465             if defined $::RD_TRACE;
3466 0           push @item, $_tok;
3467 0           $item{__ACTION1__}=$_tok;
3468            
3469              
3470              
3471 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['not' <commit> 'null']<<},
3472             Parse::RecDescent::_tracefirst($text),
3473             q{attribute},
3474             $tracelevel)
3475             if defined $::RD_TRACE;
3476 0           $_matched = 1;
3477 0           last;
3478             }
3479              
3480              
3481 0   0       while (!$_matched && !$commit)
3482             {
3483            
3484 0 0         Parse::RecDescent::_trace(q{Trying production: ['for' string]},
3485             Parse::RecDescent::_tracefirst($_[1]),
3486             q{attribute},
3487             $tracelevel)
3488             if defined $::RD_TRACE;
3489 0           my $thisprod = $thisrule->{"prods"}[5];
3490 0           $text = $_[1];
3491 0           my $_savetext;
3492 0           @item = (q{attribute});
3493 0           %item = (__RULE__ => q{attribute});
3494 0           my $repcount = 0;
3495              
3496              
3497 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['for']},
3498             Parse::RecDescent::_tracefirst($text),
3499             q{attribute},
3500             $tracelevel)
3501             if defined $::RD_TRACE;
3502 0           $lastsep = "";
3503 0           $expectation->is(q{})->at($text);
3504            
3505              
3506 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Afor/)
  0 0          
3507             {
3508            
3509 0           $expectation->failed();
3510 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
3511             Parse::RecDescent::_tracefirst($text))
3512             if defined $::RD_TRACE;
3513 0           last;
3514             }
3515 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3516 0           substr($text,0,length($current_match),q{});
3517 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3518             . $current_match . q{])},
3519             Parse::RecDescent::_tracefirst($text))
3520             if defined $::RD_TRACE;
3521 0           push @item, $item{__STRING1__}=$current_match;
3522            
3523              
3524 0 0         Parse::RecDescent::_trace(q{Trying subrule: [string]},
3525             Parse::RecDescent::_tracefirst($text),
3526             q{attribute},
3527             $tracelevel)
3528             if defined $::RD_TRACE;
3529 11     11   104 if (1) { no strict qw{refs};
  11         29  
  11         15895  
  0            
3530 0           $expectation->is(q{string})->at($text);
3531 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
3532             {
3533            
3534 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [string]>>},
3535             Parse::RecDescent::_tracefirst($text),
3536             q{attribute},
3537             $tracelevel)
3538             if defined $::RD_TRACE;
3539 0           $expectation->failed();
3540 0           last;
3541             }
3542 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
3543             . $_tok . q{]},
3544            
3545             Parse::RecDescent::_tracefirst($text),
3546             q{attribute},
3547             $tracelevel)
3548             if defined $::RD_TRACE;
3549 0           $item{q{string}} = $_tok;
3550 0           push @item, $_tok;
3551            
3552             }
3553              
3554 0 0         Parse::RecDescent::_trace(q{Trying action},
3555             Parse::RecDescent::_tracefirst($text),
3556             q{attribute},
3557             $tracelevel)
3558             if defined $::RD_TRACE;
3559            
3560              
3561 0 0         $_tok = ($_noactions) ? 0 : do { ['for', $item{string}] };
  0            
3562 0 0         unless (defined $_tok)
3563             {
3564 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3565             if defined $::RD_TRACE;
3566 0           last;
3567             }
3568 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3569             . $_tok . q{])},
3570             Parse::RecDescent::_tracefirst($text))
3571             if defined $::RD_TRACE;
3572 0           push @item, $_tok;
3573 0           $item{__ACTION1__}=$_tok;
3574            
3575              
3576              
3577 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['for' string]<<},
3578             Parse::RecDescent::_tracefirst($text),
3579             q{attribute},
3580             $tracelevel)
3581             if defined $::RD_TRACE;
3582 0           $_matched = 1;
3583 0           last;
3584             }
3585              
3586              
3587 0           while (!$_matched)
3588             {
3589            
3590 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
3591             Parse::RecDescent::_tracefirst($_[1]),
3592             q{attribute},
3593             $tracelevel)
3594             if defined $::RD_TRACE;
3595 0           my $thisprod = $thisrule->{"prods"}[6];
3596            
3597 0           my $_savetext;
3598 0           @item = (q{attribute});
3599 0           %item = (__RULE__ => q{attribute});
3600 0           my $repcount = 0;
3601              
3602              
3603            
3604              
3605 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
3606             Parse::RecDescent::_tracefirst($text),
3607             q{attribute},
3608             $tracelevel)
3609             if defined $::RD_TRACE;
3610 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
3611 0           my $rule = $item[0];
3612 0           $rule =~ s/_/ /g;
3613             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
3614 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
3615 0           } unless $_noactions; undef } else {0} };
3616 0 0         if (defined($_tok))
3617             {
3618 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
3619             . $_tok . q{])},
3620             Parse::RecDescent::_tracefirst($text))
3621             if defined $::RD_TRACE;
3622             }
3623             else
3624             {
3625 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
3626             Parse::RecDescent::_tracefirst($text))
3627             if defined $::RD_TRACE;
3628             }
3629            
3630 0 0         last unless defined $_tok;
3631 0           push @item, $item{__DIRECTIVE1__}=$_tok;
3632            
3633              
3634 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
3635             Parse::RecDescent::_tracefirst($text),
3636             q{attribute},
3637             $tracelevel)
3638             if defined $::RD_TRACE;
3639 0           undef $return;
3640            
3641              
3642 0           $_tok = undef;
3643            
3644 0 0         last unless defined $_tok;
3645              
3646              
3647 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
3648             Parse::RecDescent::_tracefirst($text),
3649             q{attribute},
3650             $tracelevel)
3651             if defined $::RD_TRACE;
3652 0           $_matched = 1;
3653 0           last;
3654             }
3655              
3656              
3657 0 0 0       unless ( $_matched || defined($score) )
3658             {
3659            
3660              
3661 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
3662 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3663             Parse::RecDescent::_tracefirst($_[1]),
3664             q{attribute},
3665             $tracelevel)
3666             if defined $::RD_TRACE;
3667 0           return undef;
3668             }
3669 0 0 0       if (!defined($return) && defined($score))
3670             {
3671 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3672             q{attribute},
3673             $tracelevel)
3674             if defined $::RD_TRACE;
3675 0           $return = $score_return;
3676             }
3677 0           splice @{$thisparser->{errors}}, $err_at;
  0            
3678 0 0         $return = $item[$#item] unless defined $return;
3679 0 0         if (defined $::RD_TRACE)
3680             {
3681 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3682             $return . q{])}, "",
3683             q{attribute},
3684             $tracelevel);
3685 0           Parse::RecDescent::_trace(q{(consumed: [} .
3686             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3687             Parse::RecDescent::_tracefirst($text),
3688             , q{attribute},
3689             $tracelevel)
3690             }
3691 0           $_[1] = $text;
3692 0           return $return;
3693             }
3694              
3695             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3696             sub Parse::RecDescent::Cheater::Parser::identifier
3697             {
3698 0     0     my $thisparser = $_[0];
3699 11     11   87 use vars q{$tracelevel};
  11         26  
  11         10832  
3700 0   0       local $tracelevel = ($tracelevel||0)+1;
3701 0           $ERRORS = 0;
3702 0           my $thisrule = $thisparser->{"rules"}{"identifier"};
3703            
3704 0 0         Parse::RecDescent::_trace(q{Trying rule: [identifier]},
3705             Parse::RecDescent::_tracefirst($_[1]),
3706             q{identifier},
3707             $tracelevel)
3708             if defined $::RD_TRACE;
3709              
3710            
3711 0           my $err_at = @{$thisparser->{errors}};
  0            
3712              
3713 0           my $score;
3714             my $score_return;
3715 0           my $_tok;
3716 0           my $return = undef;
3717 0           my $_matched=0;
3718 0           my $commit=0;
3719 0           my @item = ();
3720 0           my %item = ();
3721 0   0       my $repeating = defined($_[2]) && $_[2];
3722 0   0       my $_noactions = defined($_[3]) && $_[3];
3723 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
3724 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3725 0           my $text;
3726 0           my $lastsep="";
3727 0           my $current_match;
3728 0           my $expectation = new Parse::RecDescent::Expectation(q{/[A-Za-z]\\w*/});
3729 0           $expectation->at($_[1]);
3730            
3731 0           my $prevline;
3732 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
3733            
3734 0           my $thisline;
3735 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3736              
3737            
3738              
3739 0   0       while (!$_matched && !$commit)
3740             {
3741            
3742 0 0         Parse::RecDescent::_trace(q{Trying production: [/[A-Za-z]\\w*/]},
3743             Parse::RecDescent::_tracefirst($_[1]),
3744             q{identifier},
3745             $tracelevel)
3746             if defined $::RD_TRACE;
3747 0           my $thisprod = $thisrule->{"prods"}[0];
3748 0           $text = $_[1];
3749 0           my $_savetext;
3750 0           @item = (q{identifier});
3751 0           %item = (__RULE__ => q{identifier});
3752 0           my $repcount = 0;
3753              
3754              
3755 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/[A-Za-z]\\w*/]}, Parse::RecDescent::_tracefirst($text),
3756             q{identifier},
3757             $tracelevel)
3758             if defined $::RD_TRACE;
3759 0           $lastsep = "";
3760 0           $expectation->is(q{})->at($text);
3761            
3762              
3763 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[A-Za-z]\w*)/)
  0 0          
3764             {
3765            
3766 0           $expectation->failed();
3767 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3768             Parse::RecDescent::_tracefirst($text))
3769             if defined $::RD_TRACE;
3770              
3771 0           last;
3772             }
3773 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
3774 0           substr($text,0,length($current_match),q{});
3775 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3776             . $current_match . q{])},
3777             Parse::RecDescent::_tracefirst($text))
3778             if defined $::RD_TRACE;
3779 0           push @item, $item{__PATTERN1__}=$current_match;
3780            
3781              
3782              
3783 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/[A-Za-z]\\w*/]<<},
3784             Parse::RecDescent::_tracefirst($text),
3785             q{identifier},
3786             $tracelevel)
3787             if defined $::RD_TRACE;
3788 0           $_matched = 1;
3789 0           last;
3790             }
3791              
3792              
3793 0 0 0       unless ( $_matched || defined($score) )
3794             {
3795            
3796              
3797 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
3798 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3799             Parse::RecDescent::_tracefirst($_[1]),
3800             q{identifier},
3801             $tracelevel)
3802             if defined $::RD_TRACE;
3803 0           return undef;
3804             }
3805 0 0 0       if (!defined($return) && defined($score))
3806             {
3807 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3808             q{identifier},
3809             $tracelevel)
3810             if defined $::RD_TRACE;
3811 0           $return = $score_return;
3812             }
3813 0           splice @{$thisparser->{errors}}, $err_at;
  0            
3814 0 0         $return = $item[$#item] unless defined $return;
3815 0 0         if (defined $::RD_TRACE)
3816             {
3817 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3818             $return . q{])}, "",
3819             q{identifier},
3820             $tracelevel);
3821 0           Parse::RecDescent::_trace(q{(consumed: [} .
3822             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3823             Parse::RecDescent::_tracefirst($text),
3824             , q{identifier},
3825             $tracelevel)
3826             }
3827 0           $_[1] = $text;
3828 0           return $return;
3829             }
3830              
3831             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3832             sub Parse::RecDescent::Cheater::Parser::domain
3833             {
3834 0     0     my $thisparser = $_[0];
3835 11     11   66 use vars q{$tracelevel};
  11         26  
  11         4581  
3836 0   0       local $tracelevel = ($tracelevel||0)+1;
3837 0           $ERRORS = 0;
3838 0           my $thisrule = $thisparser->{"rules"}{"domain"};
3839            
3840 0 0         Parse::RecDescent::_trace(q{Trying rule: [domain]},
3841             Parse::RecDescent::_tracefirst($_[1]),
3842             q{domain},
3843             $tracelevel)
3844             if defined $::RD_TRACE;
3845              
3846            
3847 0           my $err_at = @{$thisparser->{errors}};
  0            
3848              
3849 0           my $score;
3850             my $score_return;
3851 0           my $_tok;
3852 0           my $return = undef;
3853 0           my $_matched=0;
3854 0           my $commit=0;
3855 0           my @item = ();
3856 0           my %item = ();
3857 0   0       my $repeating = defined($_[2]) && $_[2];
3858 0   0       my $_noactions = defined($_[3]) && $_[3];
3859 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
3860 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3861 0           my $text;
3862 0           my $lastsep="";
3863 0           my $current_match;
3864 0           my $expectation = new Parse::RecDescent::Expectation(q{enum, or atom});
3865 0           $expectation->at($_[1]);
3866            
3867 0           my $prevline;
3868 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
3869            
3870 0           my $thisline;
3871 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3872              
3873            
3874              
3875 0   0       while (!$_matched && !$commit)
3876             {
3877            
3878 0 0         Parse::RecDescent::_trace(q{Trying production: [enum]},
3879             Parse::RecDescent::_tracefirst($_[1]),
3880             q{domain},
3881             $tracelevel)
3882             if defined $::RD_TRACE;
3883 0           my $thisprod = $thisrule->{"prods"}[0];
3884 0           $text = $_[1];
3885 0           my $_savetext;
3886 0           @item = (q{domain});
3887 0           %item = (__RULE__ => q{domain});
3888 0           my $repcount = 0;
3889              
3890              
3891 0 0         Parse::RecDescent::_trace(q{Trying subrule: [enum]},
3892             Parse::RecDescent::_tracefirst($text),
3893             q{domain},
3894             $tracelevel)
3895             if defined $::RD_TRACE;
3896 11     11   68 if (1) { no strict qw{refs};
  11         23  
  11         3969  
  0            
3897 0           $expectation->is(q{})->at($text);
3898 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::enum($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
3899             {
3900            
3901 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [enum]>>},
3902             Parse::RecDescent::_tracefirst($text),
3903             q{domain},
3904             $tracelevel)
3905             if defined $::RD_TRACE;
3906 0           $expectation->failed();
3907 0           last;
3908             }
3909 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [enum]<< (return value: [}
3910             . $_tok . q{]},
3911            
3912             Parse::RecDescent::_tracefirst($text),
3913             q{domain},
3914             $tracelevel)
3915             if defined $::RD_TRACE;
3916 0           $item{q{enum}} = $_tok;
3917 0           push @item, $_tok;
3918            
3919             }
3920              
3921              
3922 0 0         Parse::RecDescent::_trace(q{>>Matched production: [enum]<<},
3923             Parse::RecDescent::_tracefirst($text),
3924             q{domain},
3925             $tracelevel)
3926             if defined $::RD_TRACE;
3927 0           $_matched = 1;
3928 0           last;
3929             }
3930              
3931              
3932 0   0       while (!$_matched && !$commit)
3933             {
3934            
3935 0 0         Parse::RecDescent::_trace(q{Trying production: [atom]},
3936             Parse::RecDescent::_tracefirst($_[1]),
3937             q{domain},
3938             $tracelevel)
3939             if defined $::RD_TRACE;
3940 0           my $thisprod = $thisrule->{"prods"}[1];
3941 0           $text = $_[1];
3942 0           my $_savetext;
3943 0           @item = (q{domain});
3944 0           %item = (__RULE__ => q{domain});
3945 0           my $repcount = 0;
3946              
3947              
3948 0 0         Parse::RecDescent::_trace(q{Trying subrule: [atom]},
3949             Parse::RecDescent::_tracefirst($text),
3950             q{domain},
3951             $tracelevel)
3952             if defined $::RD_TRACE;
3953 11     11   61 if (1) { no strict qw{refs};
  11         23  
  11         7809  
  0            
3954 0           $expectation->is(q{})->at($text);
3955 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::atom($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
3956             {
3957            
3958 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [atom]>>},
3959             Parse::RecDescent::_tracefirst($text),
3960             q{domain},
3961             $tracelevel)
3962             if defined $::RD_TRACE;
3963 0           $expectation->failed();
3964 0           last;
3965             }
3966 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [atom]<< (return value: [}
3967             . $_tok . q{]},
3968            
3969             Parse::RecDescent::_tracefirst($text),
3970             q{domain},
3971             $tracelevel)
3972             if defined $::RD_TRACE;
3973 0           $item{q{atom}} = $_tok;
3974 0           push @item, $_tok;
3975            
3976             }
3977              
3978 0 0         Parse::RecDescent::_trace(q{Trying action},
3979             Parse::RecDescent::_tracefirst($text),
3980             q{domain},
3981             $tracelevel)
3982             if defined $::RD_TRACE;
3983            
3984              
3985 0 0         $_tok = ($_noactions) ? 0 : do { [ $item[1] ] };
  0            
3986 0 0         unless (defined $_tok)
3987             {
3988 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3989             if defined $::RD_TRACE;
3990 0           last;
3991             }
3992 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3993             . $_tok . q{])},
3994             Parse::RecDescent::_tracefirst($text))
3995             if defined $::RD_TRACE;
3996 0           push @item, $_tok;
3997 0           $item{__ACTION1__}=$_tok;
3998            
3999              
4000              
4001 0 0         Parse::RecDescent::_trace(q{>>Matched production: [atom]<<},
4002             Parse::RecDescent::_tracefirst($text),
4003             q{domain},
4004             $tracelevel)
4005             if defined $::RD_TRACE;
4006 0           $_matched = 1;
4007 0           last;
4008             }
4009              
4010              
4011 0 0 0       unless ( $_matched || defined($score) )
4012             {
4013            
4014              
4015 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
4016 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4017             Parse::RecDescent::_tracefirst($_[1]),
4018             q{domain},
4019             $tracelevel)
4020             if defined $::RD_TRACE;
4021 0           return undef;
4022             }
4023 0 0 0       if (!defined($return) && defined($score))
4024             {
4025 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4026             q{domain},
4027             $tracelevel)
4028             if defined $::RD_TRACE;
4029 0           $return = $score_return;
4030             }
4031 0           splice @{$thisparser->{errors}}, $err_at;
  0            
4032 0 0         $return = $item[$#item] unless defined $return;
4033 0 0         if (defined $::RD_TRACE)
4034             {
4035 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4036             $return . q{])}, "",
4037             q{domain},
4038             $tracelevel);
4039 0           Parse::RecDescent::_trace(q{(consumed: [} .
4040             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4041             Parse::RecDescent::_tracefirst($text),
4042             , q{domain},
4043             $tracelevel)
4044             }
4045 0           $_[1] = $text;
4046 0           return $return;
4047             }
4048              
4049             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4050             sub Parse::RecDescent::Cheater::Parser::table_definition
4051             {
4052 0     0     my $thisparser = $_[0];
4053 11     11   73 use vars q{$tracelevel};
  11         25  
  11         8976  
4054 0   0       local $tracelevel = ($tracelevel||0)+1;
4055 0           $ERRORS = 0;
4056 0           my $thisrule = $thisparser->{"rules"}{"table_definition"};
4057            
4058 0 0         Parse::RecDescent::_trace(q{Trying rule: [table_definition]},
4059             Parse::RecDescent::_tracefirst($_[1]),
4060             q{table_definition},
4061             $tracelevel)
4062             if defined $::RD_TRACE;
4063              
4064            
4065 0           my $err_at = @{$thisparser->{errors}};
  0            
4066              
4067 0           my $score;
4068             my $score_return;
4069 0           my $_tok;
4070 0           my $return = undef;
4071 0           my $_matched=0;
4072 0           my $commit=0;
4073 0           my @item = ();
4074 0           my %item = ();
4075 0   0       my $repeating = defined($_[2]) && $_[2];
4076 0   0       my $_noactions = defined($_[3]) && $_[3];
4077 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
4078 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4079 0           my $text;
4080 0           my $lastsep="";
4081 0           my $current_match;
4082 0           my $expectation = new Parse::RecDescent::Expectation(q{'table'});
4083 0           $expectation->at($_[1]);
4084            
4085 0           my $prevline;
4086 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
4087            
4088 0           my $thisline;
4089 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4090              
4091            
4092              
4093 0   0       while (!$_matched && !$commit)
4094             {
4095            
4096 0 0         Parse::RecDescent::_trace(q{Trying production: ['table' <commit> table_name '(' column_definition ')']},
4097             Parse::RecDescent::_tracefirst($_[1]),
4098             q{table_definition},
4099             $tracelevel)
4100             if defined $::RD_TRACE;
4101 0           my $thisprod = $thisrule->{"prods"}[0];
4102 0           $text = $_[1];
4103 0           my $_savetext;
4104 0           @item = (q{table_definition});
4105 0           %item = (__RULE__ => q{table_definition});
4106 0           my $repcount = 0;
4107              
4108              
4109 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['table']},
4110             Parse::RecDescent::_tracefirst($text),
4111             q{table_definition},
4112             $tracelevel)
4113             if defined $::RD_TRACE;
4114 0           $lastsep = "";
4115 0           $expectation->is(q{})->at($text);
4116            
4117              
4118 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Atable/)
  0 0          
4119             {
4120            
4121 0           $expectation->failed();
4122 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4123             Parse::RecDescent::_tracefirst($text))
4124             if defined $::RD_TRACE;
4125 0           last;
4126             }
4127 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4128 0           substr($text,0,length($current_match),q{});
4129 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4130             . $current_match . q{])},
4131             Parse::RecDescent::_tracefirst($text))
4132             if defined $::RD_TRACE;
4133 0           push @item, $item{__STRING1__}=$current_match;
4134            
4135              
4136            
4137              
4138 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
4139             Parse::RecDescent::_tracefirst($text),
4140             q{table_definition},
4141             $tracelevel)
4142             if defined $::RD_TRACE;
4143 0           $_tok = do { $commit = 1 };
  0            
4144 0 0         if (defined($_tok))
4145             {
4146 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4147             . $_tok . q{])},
4148             Parse::RecDescent::_tracefirst($text))
4149             if defined $::RD_TRACE;
4150             }
4151             else
4152             {
4153 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
4154             Parse::RecDescent::_tracefirst($text))
4155             if defined $::RD_TRACE;
4156             }
4157            
4158 0 0         last unless defined $_tok;
4159 0           push @item, $item{__DIRECTIVE1__}=$_tok;
4160            
4161              
4162 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
4163             Parse::RecDescent::_tracefirst($text),
4164             q{table_definition},
4165             $tracelevel)
4166             if defined $::RD_TRACE;
4167 11     11   70 if (1) { no strict qw{refs};
  11         30  
  11         20378  
  0            
4168 0           $expectation->is(q{table_name})->at($text);
4169 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4170             {
4171            
4172 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
4173             Parse::RecDescent::_tracefirst($text),
4174             q{table_definition},
4175             $tracelevel)
4176             if defined $::RD_TRACE;
4177 0           $expectation->failed();
4178 0           last;
4179             }
4180 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
4181             . $_tok . q{]},
4182            
4183             Parse::RecDescent::_tracefirst($text),
4184             q{table_definition},
4185             $tracelevel)
4186             if defined $::RD_TRACE;
4187 0           $item{q{table_name}} = $_tok;
4188 0           push @item, $_tok;
4189            
4190             }
4191              
4192 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['(']},
4193             Parse::RecDescent::_tracefirst($text),
4194             q{table_definition},
4195             $tracelevel)
4196             if defined $::RD_TRACE;
4197 0           $lastsep = "";
4198 0           $expectation->is(q{'('})->at($text);
4199            
4200              
4201 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\(/)
  0 0          
4202             {
4203            
4204 0           $expectation->failed();
4205 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4206             Parse::RecDescent::_tracefirst($text))
4207             if defined $::RD_TRACE;
4208 0           last;
4209             }
4210 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4211 0           substr($text,0,length($current_match),q{});
4212 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4213             . $current_match . q{])},
4214             Parse::RecDescent::_tracefirst($text))
4215             if defined $::RD_TRACE;
4216 0           push @item, $item{__STRING2__}=$current_match;
4217            
4218              
4219 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [column_definition]},
4220             Parse::RecDescent::_tracefirst($text),
4221             q{table_definition},
4222             $tracelevel)
4223             if defined $::RD_TRACE;
4224 0           $expectation->is(q{column_definition})->at($text);
4225            
4226 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::column_definition, 1, 100000000, $_noactions,$expectation,sub { \@arg })))
  0            
4227             {
4228 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [column_definition]>>},
4229             Parse::RecDescent::_tracefirst($text),
4230             q{table_definition},
4231             $tracelevel)
4232             if defined $::RD_TRACE;
4233 0           last;
4234             }
4235 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [column_definition]<< (}
4236             . @$_tok . q{ times)},
4237            
4238             Parse::RecDescent::_tracefirst($text),
4239             q{table_definition},
4240             $tracelevel)
4241             if defined $::RD_TRACE;
4242 0           $item{q{column_definition(s)}} = $_tok;
4243 0           push @item, $_tok;
4244            
4245              
4246              
4247 0 0         Parse::RecDescent::_trace(q{Trying terminal: [')']},
4248             Parse::RecDescent::_tracefirst($text),
4249             q{table_definition},
4250             $tracelevel)
4251             if defined $::RD_TRACE;
4252 0           $lastsep = "";
4253 0           $expectation->is(q{')'})->at($text);
4254            
4255              
4256 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\)/)
  0 0          
4257             {
4258            
4259 0           $expectation->failed();
4260 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4261             Parse::RecDescent::_tracefirst($text))
4262             if defined $::RD_TRACE;
4263 0           last;
4264             }
4265 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4266 0           substr($text,0,length($current_match),q{});
4267 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4268             . $current_match . q{])},
4269             Parse::RecDescent::_tracefirst($text))
4270             if defined $::RD_TRACE;
4271 0           push @item, $item{__STRING3__}=$current_match;
4272            
4273              
4274 0 0         Parse::RecDescent::_trace(q{Trying action},
4275             Parse::RecDescent::_tracefirst($text),
4276             q{table_definition},
4277             $tracelevel)
4278             if defined $::RD_TRACE;
4279            
4280              
4281 0 0         $_tok = ($_noactions) ? 0 : do { ['table', $item[3], $item[5]] };
  0            
4282 0 0         unless (defined $_tok)
4283             {
4284 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4285             if defined $::RD_TRACE;
4286 0           last;
4287             }
4288 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4289             . $_tok . q{])},
4290             Parse::RecDescent::_tracefirst($text))
4291             if defined $::RD_TRACE;
4292 0           push @item, $_tok;
4293 0           $item{__ACTION1__}=$_tok;
4294            
4295              
4296              
4297 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['table' <commit> table_name '(' column_definition ')']<<},
4298             Parse::RecDescent::_tracefirst($text),
4299             q{table_definition},
4300             $tracelevel)
4301             if defined $::RD_TRACE;
4302 0           $_matched = 1;
4303 0           last;
4304             }
4305              
4306              
4307 0           while (!$_matched)
4308             {
4309            
4310 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
4311             Parse::RecDescent::_tracefirst($_[1]),
4312             q{table_definition},
4313             $tracelevel)
4314             if defined $::RD_TRACE;
4315 0           my $thisprod = $thisrule->{"prods"}[1];
4316            
4317 0           my $_savetext;
4318 0           @item = (q{table_definition});
4319 0           %item = (__RULE__ => q{table_definition});
4320 0           my $repcount = 0;
4321              
4322              
4323            
4324              
4325 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
4326             Parse::RecDescent::_tracefirst($text),
4327             q{table_definition},
4328             $tracelevel)
4329             if defined $::RD_TRACE;
4330 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
4331 0           my $rule = $item[0];
4332 0           $rule =~ s/_/ /g;
4333             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
4334 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
4335 0           } unless $_noactions; undef } else {0} };
4336 0 0         if (defined($_tok))
4337             {
4338 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4339             . $_tok . q{])},
4340             Parse::RecDescent::_tracefirst($text))
4341             if defined $::RD_TRACE;
4342             }
4343             else
4344             {
4345 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
4346             Parse::RecDescent::_tracefirst($text))
4347             if defined $::RD_TRACE;
4348             }
4349            
4350 0 0         last unless defined $_tok;
4351 0           push @item, $item{__DIRECTIVE1__}=$_tok;
4352            
4353              
4354 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
4355             Parse::RecDescent::_tracefirst($text),
4356             q{table_definition},
4357             $tracelevel)
4358             if defined $::RD_TRACE;
4359 0           undef $return;
4360            
4361              
4362 0           $_tok = undef;
4363            
4364 0 0         last unless defined $_tok;
4365              
4366              
4367 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
4368             Parse::RecDescent::_tracefirst($text),
4369             q{table_definition},
4370             $tracelevel)
4371             if defined $::RD_TRACE;
4372 0           $_matched = 1;
4373 0           last;
4374             }
4375              
4376              
4377 0 0 0       unless ( $_matched || defined($score) )
4378             {
4379            
4380              
4381 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
4382 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4383             Parse::RecDescent::_tracefirst($_[1]),
4384             q{table_definition},
4385             $tracelevel)
4386             if defined $::RD_TRACE;
4387 0           return undef;
4388             }
4389 0 0 0       if (!defined($return) && defined($score))
4390             {
4391 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4392             q{table_definition},
4393             $tracelevel)
4394             if defined $::RD_TRACE;
4395 0           $return = $score_return;
4396             }
4397 0           splice @{$thisparser->{errors}}, $err_at;
  0            
4398 0 0         $return = $item[$#item] unless defined $return;
4399 0 0         if (defined $::RD_TRACE)
4400             {
4401 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4402             $return . q{])}, "",
4403             q{table_definition},
4404             $tracelevel);
4405 0           Parse::RecDescent::_trace(q{(consumed: [} .
4406             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4407             Parse::RecDescent::_tracefirst($text),
4408             , q{table_definition},
4409             $tracelevel)
4410             }
4411 0           $_[1] = $text;
4412 0           return $return;
4413             }
4414              
4415             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4416             sub Parse::RecDescent::Cheater::Parser::column_name
4417             {
4418 0     0     my $thisparser = $_[0];
4419 11     11   78 use vars q{$tracelevel};
  11         23  
  11         4875  
4420 0   0       local $tracelevel = ($tracelevel||0)+1;
4421 0           $ERRORS = 0;
4422 0           my $thisrule = $thisparser->{"rules"}{"column_name"};
4423            
4424 0 0         Parse::RecDescent::_trace(q{Trying rule: [column_name]},
4425             Parse::RecDescent::_tracefirst($_[1]),
4426             q{column_name},
4427             $tracelevel)
4428             if defined $::RD_TRACE;
4429              
4430            
4431 0           my $err_at = @{$thisparser->{errors}};
  0            
4432              
4433 0           my $score;
4434             my $score_return;
4435 0           my $_tok;
4436 0           my $return = undef;
4437 0           my $_matched=0;
4438 0           my $commit=0;
4439 0           my @item = ();
4440 0           my %item = ();
4441 0   0       my $repeating = defined($_[2]) && $_[2];
4442 0   0       my $_noactions = defined($_[3]) && $_[3];
4443 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
4444 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4445 0           my $text;
4446 0           my $lastsep="";
4447 0           my $current_match;
4448 0           my $expectation = new Parse::RecDescent::Expectation(q{identifier});
4449 0           $expectation->at($_[1]);
4450            
4451 0           my $prevline;
4452 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
4453            
4454 0           my $thisline;
4455 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4456              
4457            
4458              
4459 0   0       while (!$_matched && !$commit)
4460             {
4461            
4462 0 0         Parse::RecDescent::_trace(q{Trying production: [identifier]},
4463             Parse::RecDescent::_tracefirst($_[1]),
4464             q{column_name},
4465             $tracelevel)
4466             if defined $::RD_TRACE;
4467 0           my $thisprod = $thisrule->{"prods"}[0];
4468 0           $text = $_[1];
4469 0           my $_savetext;
4470 0           @item = (q{column_name});
4471 0           %item = (__RULE__ => q{column_name});
4472 0           my $repcount = 0;
4473              
4474              
4475 0 0         Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
4476             Parse::RecDescent::_tracefirst($text),
4477             q{column_name},
4478             $tracelevel)
4479             if defined $::RD_TRACE;
4480 11     11   68 if (1) { no strict qw{refs};
  11         25  
  11         22835  
  0            
4481 0           $expectation->is(q{})->at($text);
4482 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4483             {
4484            
4485 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
4486             Parse::RecDescent::_tracefirst($text),
4487             q{column_name},
4488             $tracelevel)
4489             if defined $::RD_TRACE;
4490 0           $expectation->failed();
4491 0           last;
4492             }
4493 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
4494             . $_tok . q{]},
4495            
4496             Parse::RecDescent::_tracefirst($text),
4497             q{column_name},
4498             $tracelevel)
4499             if defined $::RD_TRACE;
4500 0           $item{q{identifier}} = $_tok;
4501 0           push @item, $_tok;
4502            
4503             }
4504              
4505              
4506 0 0         Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
4507             Parse::RecDescent::_tracefirst($text),
4508             q{column_name},
4509             $tracelevel)
4510             if defined $::RD_TRACE;
4511 0           $_matched = 1;
4512 0           last;
4513             }
4514              
4515              
4516 0 0 0       unless ( $_matched || defined($score) )
4517             {
4518            
4519              
4520 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
4521 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4522             Parse::RecDescent::_tracefirst($_[1]),
4523             q{column_name},
4524             $tracelevel)
4525             if defined $::RD_TRACE;
4526 0           return undef;
4527             }
4528 0 0 0       if (!defined($return) && defined($score))
4529             {
4530 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4531             q{column_name},
4532             $tracelevel)
4533             if defined $::RD_TRACE;
4534 0           $return = $score_return;
4535             }
4536 0           splice @{$thisparser->{errors}}, $err_at;
  0            
4537 0 0         $return = $item[$#item] unless defined $return;
4538 0 0         if (defined $::RD_TRACE)
4539             {
4540 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4541             $return . q{])}, "",
4542             q{column_name},
4543             $tracelevel);
4544 0           Parse::RecDescent::_trace(q{(consumed: [} .
4545             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4546             Parse::RecDescent::_tracefirst($text),
4547             , q{column_name},
4548             $tracelevel)
4549             }
4550 0           $_[1] = $text;
4551 0           return $return;
4552             }
4553              
4554             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4555             sub Parse::RecDescent::Cheater::Parser::statement
4556             {
4557 0     0     my $thisparser = $_[0];
4558 11     11   98 use vars q{$tracelevel};
  11         40  
  11         4998  
4559 0   0       local $tracelevel = ($tracelevel||0)+1;
4560 0           $ERRORS = 0;
4561 0           my $thisrule = $thisparser->{"rules"}{"statement"};
4562            
4563 0 0         Parse::RecDescent::_trace(q{Trying rule: [statement]},
4564             Parse::RecDescent::_tracefirst($_[1]),
4565             q{statement},
4566             $tracelevel)
4567             if defined $::RD_TRACE;
4568              
4569            
4570 0           my $err_at = @{$thisparser->{errors}};
  0            
4571              
4572 0           my $score;
4573             my $score_return;
4574 0           my $_tok;
4575 0           my $return = undef;
4576 0           my $_matched=0;
4577 0           my $commit=0;
4578 0           my @item = ();
4579 0           my %item = ();
4580 0   0       my $repeating = defined($_[2]) && $_[2];
4581 0   0       my $_noactions = defined($_[3]) && $_[3];
4582 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
4583 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4584 0           my $text;
4585 0           my $lastsep="";
4586 0           my $current_match;
4587 0           my $expectation = new Parse::RecDescent::Expectation(q{table_definition, or rows_definition, or type_definition, or include_statement, or table_assignment});
4588 0           $expectation->at($_[1]);
4589            
4590 0           my $prevline;
4591 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
4592            
4593 0           my $thisline;
4594 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4595              
4596            
4597              
4598 0   0       while (!$_matched && !$commit)
4599             {
4600            
4601 0 0         Parse::RecDescent::_trace(q{Trying production: [table_definition /;?/]},
4602             Parse::RecDescent::_tracefirst($_[1]),
4603             q{statement},
4604             $tracelevel)
4605             if defined $::RD_TRACE;
4606 0           my $thisprod = $thisrule->{"prods"}[0];
4607 0           $text = $_[1];
4608 0           my $_savetext;
4609 0           @item = (q{statement});
4610 0           %item = (__RULE__ => q{statement});
4611 0           my $repcount = 0;
4612              
4613              
4614 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_definition]},
4615             Parse::RecDescent::_tracefirst($text),
4616             q{statement},
4617             $tracelevel)
4618             if defined $::RD_TRACE;
4619 11     11   69 if (1) { no strict qw{refs};
  11         31  
  11         7600  
  0            
4620 0           $expectation->is(q{})->at($text);
4621 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_definition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4622             {
4623            
4624 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_definition]>>},
4625             Parse::RecDescent::_tracefirst($text),
4626             q{statement},
4627             $tracelevel)
4628             if defined $::RD_TRACE;
4629 0           $expectation->failed();
4630 0           last;
4631             }
4632 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_definition]<< (return value: [}
4633             . $_tok . q{]},
4634            
4635             Parse::RecDescent::_tracefirst($text),
4636             q{statement},
4637             $tracelevel)
4638             if defined $::RD_TRACE;
4639 0           $item{q{table_definition}} = $_tok;
4640 0           push @item, $_tok;
4641            
4642             }
4643              
4644 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/;?/]}, Parse::RecDescent::_tracefirst($text),
4645             q{statement},
4646             $tracelevel)
4647             if defined $::RD_TRACE;
4648 0           $lastsep = "";
4649 0           $expectation->is(q{/;?/})->at($text);
4650            
4651              
4652 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:;?)/)
  0 0          
4653             {
4654            
4655 0           $expectation->failed();
4656 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4657             Parse::RecDescent::_tracefirst($text))
4658             if defined $::RD_TRACE;
4659              
4660 0           last;
4661             }
4662 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4663 0           substr($text,0,length($current_match),q{});
4664 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4665             . $current_match . q{])},
4666             Parse::RecDescent::_tracefirst($text))
4667             if defined $::RD_TRACE;
4668 0           push @item, $item{__PATTERN1__}=$current_match;
4669            
4670              
4671 0 0         Parse::RecDescent::_trace(q{Trying action},
4672             Parse::RecDescent::_tracefirst($text),
4673             q{statement},
4674             $tracelevel)
4675             if defined $::RD_TRACE;
4676            
4677              
4678 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
4679 0 0         unless (defined $_tok)
4680             {
4681 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4682             if defined $::RD_TRACE;
4683 0           last;
4684             }
4685 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4686             . $_tok . q{])},
4687             Parse::RecDescent::_tracefirst($text))
4688             if defined $::RD_TRACE;
4689 0           push @item, $_tok;
4690 0           $item{__ACTION1__}=$_tok;
4691            
4692              
4693              
4694 0 0         Parse::RecDescent::_trace(q{>>Matched production: [table_definition /;?/]<<},
4695             Parse::RecDescent::_tracefirst($text),
4696             q{statement},
4697             $tracelevel)
4698             if defined $::RD_TRACE;
4699 0           $_matched = 1;
4700 0           last;
4701             }
4702              
4703              
4704 0   0       while (!$_matched && !$commit)
4705             {
4706            
4707 0 0         Parse::RecDescent::_trace(q{Trying production: [rows_definition ';']},
4708             Parse::RecDescent::_tracefirst($_[1]),
4709             q{statement},
4710             $tracelevel)
4711             if defined $::RD_TRACE;
4712 0           my $thisprod = $thisrule->{"prods"}[1];
4713 0           $text = $_[1];
4714 0           my $_savetext;
4715 0           @item = (q{statement});
4716 0           %item = (__RULE__ => q{statement});
4717 0           my $repcount = 0;
4718              
4719              
4720 0 0         Parse::RecDescent::_trace(q{Trying subrule: [rows_definition]},
4721             Parse::RecDescent::_tracefirst($text),
4722             q{statement},
4723             $tracelevel)
4724             if defined $::RD_TRACE;
4725 11     11   67 if (1) { no strict qw{refs};
  11         29  
  11         15518  
  0            
4726 0           $expectation->is(q{})->at($text);
4727 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::rows_definition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4728             {
4729            
4730 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [rows_definition]>>},
4731             Parse::RecDescent::_tracefirst($text),
4732             q{statement},
4733             $tracelevel)
4734             if defined $::RD_TRACE;
4735 0           $expectation->failed();
4736 0           last;
4737             }
4738 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [rows_definition]<< (return value: [}
4739             . $_tok . q{]},
4740            
4741             Parse::RecDescent::_tracefirst($text),
4742             q{statement},
4743             $tracelevel)
4744             if defined $::RD_TRACE;
4745 0           $item{q{rows_definition}} = $_tok;
4746 0           push @item, $_tok;
4747            
4748             }
4749              
4750 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
4751             Parse::RecDescent::_tracefirst($text),
4752             q{statement},
4753             $tracelevel)
4754             if defined $::RD_TRACE;
4755 0           $lastsep = "";
4756 0           $expectation->is(q{';'})->at($text);
4757            
4758              
4759 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
4760             {
4761            
4762 0           $expectation->failed();
4763 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4764             Parse::RecDescent::_tracefirst($text))
4765             if defined $::RD_TRACE;
4766 0           last;
4767             }
4768 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4769 0           substr($text,0,length($current_match),q{});
4770 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4771             . $current_match . q{])},
4772             Parse::RecDescent::_tracefirst($text))
4773             if defined $::RD_TRACE;
4774 0           push @item, $item{__STRING1__}=$current_match;
4775            
4776              
4777 0 0         Parse::RecDescent::_trace(q{Trying action},
4778             Parse::RecDescent::_tracefirst($text),
4779             q{statement},
4780             $tracelevel)
4781             if defined $::RD_TRACE;
4782            
4783              
4784 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
4785 0 0         unless (defined $_tok)
4786             {
4787 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4788             if defined $::RD_TRACE;
4789 0           last;
4790             }
4791 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4792             . $_tok . q{])},
4793             Parse::RecDescent::_tracefirst($text))
4794             if defined $::RD_TRACE;
4795 0           push @item, $_tok;
4796 0           $item{__ACTION1__}=$_tok;
4797            
4798              
4799              
4800 0 0         Parse::RecDescent::_trace(q{>>Matched production: [rows_definition ';']<<},
4801             Parse::RecDescent::_tracefirst($text),
4802             q{statement},
4803             $tracelevel)
4804             if defined $::RD_TRACE;
4805 0           $_matched = 1;
4806 0           last;
4807             }
4808              
4809              
4810 0   0       while (!$_matched && !$commit)
4811             {
4812            
4813 0 0         Parse::RecDescent::_trace(q{Trying production: [type_definition ';']},
4814             Parse::RecDescent::_tracefirst($_[1]),
4815             q{statement},
4816             $tracelevel)
4817             if defined $::RD_TRACE;
4818 0           my $thisprod = $thisrule->{"prods"}[2];
4819 0           $text = $_[1];
4820 0           my $_savetext;
4821 0           @item = (q{statement});
4822 0           %item = (__RULE__ => q{statement});
4823 0           my $repcount = 0;
4824              
4825              
4826 0 0         Parse::RecDescent::_trace(q{Trying subrule: [type_definition]},
4827             Parse::RecDescent::_tracefirst($text),
4828             q{statement},
4829             $tracelevel)
4830             if defined $::RD_TRACE;
4831 11     11   77 if (1) { no strict qw{refs};
  11         24  
  11         14284  
  0            
4832 0           $expectation->is(q{})->at($text);
4833 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::type_definition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4834             {
4835            
4836 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [type_definition]>>},
4837             Parse::RecDescent::_tracefirst($text),
4838             q{statement},
4839             $tracelevel)
4840             if defined $::RD_TRACE;
4841 0           $expectation->failed();
4842 0           last;
4843             }
4844 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [type_definition]<< (return value: [}
4845             . $_tok . q{]},
4846            
4847             Parse::RecDescent::_tracefirst($text),
4848             q{statement},
4849             $tracelevel)
4850             if defined $::RD_TRACE;
4851 0           $item{q{type_definition}} = $_tok;
4852 0           push @item, $_tok;
4853            
4854             }
4855              
4856 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
4857             Parse::RecDescent::_tracefirst($text),
4858             q{statement},
4859             $tracelevel)
4860             if defined $::RD_TRACE;
4861 0           $lastsep = "";
4862 0           $expectation->is(q{';'})->at($text);
4863            
4864              
4865 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
4866             {
4867            
4868 0           $expectation->failed();
4869 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4870             Parse::RecDescent::_tracefirst($text))
4871             if defined $::RD_TRACE;
4872 0           last;
4873             }
4874 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4875 0           substr($text,0,length($current_match),q{});
4876 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4877             . $current_match . q{])},
4878             Parse::RecDescent::_tracefirst($text))
4879             if defined $::RD_TRACE;
4880 0           push @item, $item{__STRING1__}=$current_match;
4881            
4882              
4883 0 0         Parse::RecDescent::_trace(q{Trying action},
4884             Parse::RecDescent::_tracefirst($text),
4885             q{statement},
4886             $tracelevel)
4887             if defined $::RD_TRACE;
4888            
4889              
4890 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
4891 0 0         unless (defined $_tok)
4892             {
4893 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4894             if defined $::RD_TRACE;
4895 0           last;
4896             }
4897 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4898             . $_tok . q{])},
4899             Parse::RecDescent::_tracefirst($text))
4900             if defined $::RD_TRACE;
4901 0           push @item, $_tok;
4902 0           $item{__ACTION1__}=$_tok;
4903            
4904              
4905              
4906 0 0         Parse::RecDescent::_trace(q{>>Matched production: [type_definition ';']<<},
4907             Parse::RecDescent::_tracefirst($text),
4908             q{statement},
4909             $tracelevel)
4910             if defined $::RD_TRACE;
4911 0           $_matched = 1;
4912 0           last;
4913             }
4914              
4915              
4916 0   0       while (!$_matched && !$commit)
4917             {
4918            
4919 0 0         Parse::RecDescent::_trace(q{Trying production: [include_statement ';']},
4920             Parse::RecDescent::_tracefirst($_[1]),
4921             q{statement},
4922             $tracelevel)
4923             if defined $::RD_TRACE;
4924 0           my $thisprod = $thisrule->{"prods"}[3];
4925 0           $text = $_[1];
4926 0           my $_savetext;
4927 0           @item = (q{statement});
4928 0           %item = (__RULE__ => q{statement});
4929 0           my $repcount = 0;
4930              
4931              
4932 0 0         Parse::RecDescent::_trace(q{Trying subrule: [include_statement]},
4933             Parse::RecDescent::_tracefirst($text),
4934             q{statement},
4935             $tracelevel)
4936             if defined $::RD_TRACE;
4937 11     11   67 if (1) { no strict qw{refs};
  11         21  
  11         8414  
  0            
4938 0           $expectation->is(q{})->at($text);
4939 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::include_statement($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
4940             {
4941            
4942 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [include_statement]>>},
4943             Parse::RecDescent::_tracefirst($text),
4944             q{statement},
4945             $tracelevel)
4946             if defined $::RD_TRACE;
4947 0           $expectation->failed();
4948 0           last;
4949             }
4950 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [include_statement]<< (return value: [}
4951             . $_tok . q{]},
4952            
4953             Parse::RecDescent::_tracefirst($text),
4954             q{statement},
4955             $tracelevel)
4956             if defined $::RD_TRACE;
4957 0           $item{q{include_statement}} = $_tok;
4958 0           push @item, $_tok;
4959            
4960             }
4961              
4962 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
4963             Parse::RecDescent::_tracefirst($text),
4964             q{statement},
4965             $tracelevel)
4966             if defined $::RD_TRACE;
4967 0           $lastsep = "";
4968 0           $expectation->is(q{';'})->at($text);
4969            
4970              
4971 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
4972             {
4973            
4974 0           $expectation->failed();
4975 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4976             Parse::RecDescent::_tracefirst($text))
4977             if defined $::RD_TRACE;
4978 0           last;
4979             }
4980 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
4981 0           substr($text,0,length($current_match),q{});
4982 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4983             . $current_match . q{])},
4984             Parse::RecDescent::_tracefirst($text))
4985             if defined $::RD_TRACE;
4986 0           push @item, $item{__STRING1__}=$current_match;
4987            
4988              
4989 0 0         Parse::RecDescent::_trace(q{Trying action},
4990             Parse::RecDescent::_tracefirst($text),
4991             q{statement},
4992             $tracelevel)
4993             if defined $::RD_TRACE;
4994            
4995              
4996 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
4997 0 0         unless (defined $_tok)
4998             {
4999 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
5000             if defined $::RD_TRACE;
5001 0           last;
5002             }
5003 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5004             . $_tok . q{])},
5005             Parse::RecDescent::_tracefirst($text))
5006             if defined $::RD_TRACE;
5007 0           push @item, $_tok;
5008 0           $item{__ACTION1__}=$_tok;
5009            
5010              
5011              
5012 0 0         Parse::RecDescent::_trace(q{>>Matched production: [include_statement ';']<<},
5013             Parse::RecDescent::_tracefirst($text),
5014             q{statement},
5015             $tracelevel)
5016             if defined $::RD_TRACE;
5017 0           $_matched = 1;
5018 0           last;
5019             }
5020              
5021              
5022 0   0       while (!$_matched && !$commit)
5023             {
5024            
5025 0 0         Parse::RecDescent::_trace(q{Trying production: [table_assignment ';']},
5026             Parse::RecDescent::_tracefirst($_[1]),
5027             q{statement},
5028             $tracelevel)
5029             if defined $::RD_TRACE;
5030 0           my $thisprod = $thisrule->{"prods"}[4];
5031 0           $text = $_[1];
5032 0           my $_savetext;
5033 0           @item = (q{statement});
5034 0           %item = (__RULE__ => q{statement});
5035 0           my $repcount = 0;
5036              
5037              
5038 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_assignment]},
5039             Parse::RecDescent::_tracefirst($text),
5040             q{statement},
5041             $tracelevel)
5042             if defined $::RD_TRACE;
5043 11     11   82 if (1) { no strict qw{refs};
  11         42  
  11         17774  
  0            
5044 0           $expectation->is(q{})->at($text);
5045 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_assignment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5046             {
5047            
5048 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_assignment]>>},
5049             Parse::RecDescent::_tracefirst($text),
5050             q{statement},
5051             $tracelevel)
5052             if defined $::RD_TRACE;
5053 0           $expectation->failed();
5054 0           last;
5055             }
5056 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_assignment]<< (return value: [}
5057             . $_tok . q{]},
5058            
5059             Parse::RecDescent::_tracefirst($text),
5060             q{statement},
5061             $tracelevel)
5062             if defined $::RD_TRACE;
5063 0           $item{q{table_assignment}} = $_tok;
5064 0           push @item, $_tok;
5065            
5066             }
5067              
5068 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
5069             Parse::RecDescent::_tracefirst($text),
5070             q{statement},
5071             $tracelevel)
5072             if defined $::RD_TRACE;
5073 0           $lastsep = "";
5074 0           $expectation->is(q{';'})->at($text);
5075            
5076              
5077 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
5078             {
5079            
5080 0           $expectation->failed();
5081 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
5082             Parse::RecDescent::_tracefirst($text))
5083             if defined $::RD_TRACE;
5084 0           last;
5085             }
5086 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
5087 0           substr($text,0,length($current_match),q{});
5088 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5089             . $current_match . q{])},
5090             Parse::RecDescent::_tracefirst($text))
5091             if defined $::RD_TRACE;
5092 0           push @item, $item{__STRING1__}=$current_match;
5093            
5094              
5095 0 0         Parse::RecDescent::_trace(q{Trying action},
5096             Parse::RecDescent::_tracefirst($text),
5097             q{statement},
5098             $tracelevel)
5099             if defined $::RD_TRACE;
5100            
5101              
5102 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
5103 0 0         unless (defined $_tok)
5104             {
5105 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
5106             if defined $::RD_TRACE;
5107 0           last;
5108             }
5109 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5110             . $_tok . q{])},
5111             Parse::RecDescent::_tracefirst($text))
5112             if defined $::RD_TRACE;
5113 0           push @item, $_tok;
5114 0           $item{__ACTION1__}=$_tok;
5115            
5116              
5117              
5118 0 0         Parse::RecDescent::_trace(q{>>Matched production: [table_assignment ';']<<},
5119             Parse::RecDescent::_tracefirst($text),
5120             q{statement},
5121             $tracelevel)
5122             if defined $::RD_TRACE;
5123 0           $_matched = 1;
5124 0           last;
5125             }
5126              
5127              
5128 0           while (!$_matched)
5129             {
5130            
5131 0 0         Parse::RecDescent::_trace(q{Trying production: [<error...>]},
5132             Parse::RecDescent::_tracefirst($_[1]),
5133             q{statement},
5134             $tracelevel)
5135             if defined $::RD_TRACE;
5136 0           my $thisprod = $thisrule->{"prods"}[5];
5137            
5138 0           my $_savetext;
5139 0           @item = (q{statement});
5140 0           %item = (__RULE__ => q{statement});
5141 0           my $repcount = 0;
5142              
5143              
5144            
5145              
5146 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
5147             Parse::RecDescent::_tracefirst($text),
5148             q{statement},
5149             $tracelevel)
5150             if defined $::RD_TRACE;
5151 0 0         $_tok = do { if (1) { do {
  0            
  0            
5152 0           my $rule = $item[0];
5153 0           $rule =~ s/_/ /g;
5154             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
5155 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
5156 0           } unless $_noactions; undef } else {0} };
5157 0 0         if (defined($_tok))
5158             {
5159 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
5160             . $_tok . q{])},
5161             Parse::RecDescent::_tracefirst($text))
5162             if defined $::RD_TRACE;
5163             }
5164             else
5165             {
5166 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
5167             Parse::RecDescent::_tracefirst($text))
5168             if defined $::RD_TRACE;
5169             }
5170            
5171 0 0         last unless defined $_tok;
5172 0           push @item, $item{__DIRECTIVE1__}=$_tok;
5173            
5174              
5175              
5176 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
5177             Parse::RecDescent::_tracefirst($text),
5178             q{statement},
5179             $tracelevel)
5180             if defined $::RD_TRACE;
5181 0           $_matched = 1;
5182 0           last;
5183             }
5184              
5185              
5186 0 0 0       unless ( $_matched || defined($score) )
5187             {
5188            
5189              
5190 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
5191 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5192             Parse::RecDescent::_tracefirst($_[1]),
5193             q{statement},
5194             $tracelevel)
5195             if defined $::RD_TRACE;
5196 0           return undef;
5197             }
5198 0 0 0       if (!defined($return) && defined($score))
5199             {
5200 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5201             q{statement},
5202             $tracelevel)
5203             if defined $::RD_TRACE;
5204 0           $return = $score_return;
5205             }
5206 0           splice @{$thisparser->{errors}}, $err_at;
  0            
5207 0 0         $return = $item[$#item] unless defined $return;
5208 0 0         if (defined $::RD_TRACE)
5209             {
5210 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5211             $return . q{])}, "",
5212             q{statement},
5213             $tracelevel);
5214 0           Parse::RecDescent::_trace(q{(consumed: [} .
5215             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5216             Parse::RecDescent::_tracefirst($text),
5217             , q{statement},
5218             $tracelevel)
5219             }
5220 0           $_[1] = $text;
5221 0           return $return;
5222             }
5223              
5224             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5225             sub Parse::RecDescent::Cheater::Parser::file_name
5226             {
5227 0     0     my $thisparser = $_[0];
5228 11     11   90 use vars q{$tracelevel};
  11         30  
  11         5166  
5229 0   0       local $tracelevel = ($tracelevel||0)+1;
5230 0           $ERRORS = 0;
5231 0           my $thisrule = $thisparser->{"rules"}{"file_name"};
5232            
5233 0 0         Parse::RecDescent::_trace(q{Trying rule: [file_name]},
5234             Parse::RecDescent::_tracefirst($_[1]),
5235             q{file_name},
5236             $tracelevel)
5237             if defined $::RD_TRACE;
5238              
5239            
5240 0           my $err_at = @{$thisparser->{errors}};
  0            
5241              
5242 0           my $score;
5243             my $score_return;
5244 0           my $_tok;
5245 0           my $return = undef;
5246 0           my $_matched=0;
5247 0           my $commit=0;
5248 0           my @item = ();
5249 0           my %item = ();
5250 0   0       my $repeating = defined($_[2]) && $_[2];
5251 0   0       my $_noactions = defined($_[3]) && $_[3];
5252 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
5253 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5254 0           my $text;
5255 0           my $lastsep="";
5256 0           my $current_match;
5257 0           my $expectation = new Parse::RecDescent::Expectation(q{string});
5258 0           $expectation->at($_[1]);
5259            
5260 0           my $prevline;
5261 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
5262            
5263 0           my $thisline;
5264 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5265              
5266            
5267              
5268 0   0       while (!$_matched && !$commit)
5269             {
5270            
5271 0 0         Parse::RecDescent::_trace(q{Trying production: [string]},
5272             Parse::RecDescent::_tracefirst($_[1]),
5273             q{file_name},
5274             $tracelevel)
5275             if defined $::RD_TRACE;
5276 0           my $thisprod = $thisrule->{"prods"}[0];
5277 0           $text = $_[1];
5278 0           my $_savetext;
5279 0           @item = (q{file_name});
5280 0           %item = (__RULE__ => q{file_name});
5281 0           my $repcount = 0;
5282              
5283              
5284 0 0         Parse::RecDescent::_trace(q{Trying subrule: [string]},
5285             Parse::RecDescent::_tracefirst($text),
5286             q{file_name},
5287             $tracelevel)
5288             if defined $::RD_TRACE;
5289 11     11   68 if (1) { no strict qw{refs};
  11         28  
  11         5838  
  0            
5290 0           $expectation->is(q{})->at($text);
5291 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5292             {
5293            
5294 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [string]>>},
5295             Parse::RecDescent::_tracefirst($text),
5296             q{file_name},
5297             $tracelevel)
5298             if defined $::RD_TRACE;
5299 0           $expectation->failed();
5300 0           last;
5301             }
5302 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
5303             . $_tok . q{]},
5304            
5305             Parse::RecDescent::_tracefirst($text),
5306             q{file_name},
5307             $tracelevel)
5308             if defined $::RD_TRACE;
5309 0           $item{q{string}} = $_tok;
5310 0           push @item, $_tok;
5311            
5312             }
5313              
5314              
5315 0 0         Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
5316             Parse::RecDescent::_tracefirst($text),
5317             q{file_name},
5318             $tracelevel)
5319             if defined $::RD_TRACE;
5320 0           $_matched = 1;
5321 0           last;
5322             }
5323              
5324              
5325 0 0 0       unless ( $_matched || defined($score) )
5326             {
5327            
5328              
5329 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
5330 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5331             Parse::RecDescent::_tracefirst($_[1]),
5332             q{file_name},
5333             $tracelevel)
5334             if defined $::RD_TRACE;
5335 0           return undef;
5336             }
5337 0 0 0       if (!defined($return) && defined($score))
5338             {
5339 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5340             q{file_name},
5341             $tracelevel)
5342             if defined $::RD_TRACE;
5343 0           $return = $score_return;
5344             }
5345 0           splice @{$thisparser->{errors}}, $err_at;
  0            
5346 0 0         $return = $item[$#item] unless defined $return;
5347 0 0         if (defined $::RD_TRACE)
5348             {
5349 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5350             $return . q{])}, "",
5351             q{file_name},
5352             $tracelevel);
5353 0           Parse::RecDescent::_trace(q{(consumed: [} .
5354             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5355             Parse::RecDescent::_tracefirst($text),
5356             , q{file_name},
5357             $tracelevel)
5358             }
5359 0           $_[1] = $text;
5360 0           return $return;
5361             }
5362              
5363             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5364             sub Parse::RecDescent::Cheater::Parser::atom
5365             {
5366 0     0     my $thisparser = $_[0];
5367 11     11   70 use vars q{$tracelevel};
  11         34  
  11         4700  
5368 0   0       local $tracelevel = ($tracelevel||0)+1;
5369 0           $ERRORS = 0;
5370 0           my $thisrule = $thisparser->{"rules"}{"atom"};
5371            
5372 0 0         Parse::RecDescent::_trace(q{Trying rule: [atom]},
5373             Parse::RecDescent::_tracefirst($_[1]),
5374             q{atom},
5375             $tracelevel)
5376             if defined $::RD_TRACE;
5377              
5378            
5379 0           my $err_at = @{$thisparser->{errors}};
  0            
5380              
5381 0           my $score;
5382             my $score_return;
5383 0           my $_tok;
5384 0           my $return = undef;
5385 0           my $_matched=0;
5386 0           my $commit=0;
5387 0           my @item = ();
5388 0           my %item = ();
5389 0   0       my $repeating = defined($_[2]) && $_[2];
5390 0   0       my $_noactions = defined($_[3]) && $_[3];
5391 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
5392 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5393 0           my $text;
5394 0           my $lastsep="";
5395 0           my $current_match;
5396 0           my $expectation = new Parse::RecDescent::Expectation(q{range, or number, or regex, or string, or int});
5397 0           $expectation->at($_[1]);
5398            
5399 0           my $prevline;
5400 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
5401            
5402 0           my $thisline;
5403 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5404              
5405            
5406              
5407 0   0       while (!$_matched && !$commit)
5408             {
5409            
5410 0 0         Parse::RecDescent::_trace(q{Trying production: [range]},
5411             Parse::RecDescent::_tracefirst($_[1]),
5412             q{atom},
5413             $tracelevel)
5414             if defined $::RD_TRACE;
5415 0           my $thisprod = $thisrule->{"prods"}[0];
5416 0           $text = $_[1];
5417 0           my $_savetext;
5418 0           @item = (q{atom});
5419 0           %item = (__RULE__ => q{atom});
5420 0           my $repcount = 0;
5421              
5422              
5423 0 0         Parse::RecDescent::_trace(q{Trying subrule: [range]},
5424             Parse::RecDescent::_tracefirst($text),
5425             q{atom},
5426             $tracelevel)
5427             if defined $::RD_TRACE;
5428 11     11   73 if (1) { no strict qw{refs};
  11         25  
  11         4081  
  0            
5429 0           $expectation->is(q{})->at($text);
5430 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::range($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5431             {
5432            
5433 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [range]>>},
5434             Parse::RecDescent::_tracefirst($text),
5435             q{atom},
5436             $tracelevel)
5437             if defined $::RD_TRACE;
5438 0           $expectation->failed();
5439 0           last;
5440             }
5441 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [range]<< (return value: [}
5442             . $_tok . q{]},
5443            
5444             Parse::RecDescent::_tracefirst($text),
5445             q{atom},
5446             $tracelevel)
5447             if defined $::RD_TRACE;
5448 0           $item{q{range}} = $_tok;
5449 0           push @item, $_tok;
5450            
5451             }
5452              
5453              
5454 0 0         Parse::RecDescent::_trace(q{>>Matched production: [range]<<},
5455             Parse::RecDescent::_tracefirst($text),
5456             q{atom},
5457             $tracelevel)
5458             if defined $::RD_TRACE;
5459 0           $_matched = 1;
5460 0           last;
5461             }
5462              
5463              
5464 0   0       while (!$_matched && !$commit)
5465             {
5466            
5467 0 0         Parse::RecDescent::_trace(q{Trying production: [number]},
5468             Parse::RecDescent::_tracefirst($_[1]),
5469             q{atom},
5470             $tracelevel)
5471             if defined $::RD_TRACE;
5472 0           my $thisprod = $thisrule->{"prods"}[1];
5473 0           $text = $_[1];
5474 0           my $_savetext;
5475 0           @item = (q{atom});
5476 0           %item = (__RULE__ => q{atom});
5477 0           my $repcount = 0;
5478              
5479              
5480 0 0         Parse::RecDescent::_trace(q{Trying subrule: [number]},
5481             Parse::RecDescent::_tracefirst($text),
5482             q{atom},
5483             $tracelevel)
5484             if defined $::RD_TRACE;
5485 11     11   69 if (1) { no strict qw{refs};
  11         33  
  11         4003  
  0            
5486 0           $expectation->is(q{})->at($text);
5487 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::number($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5488             {
5489            
5490 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [number]>>},
5491             Parse::RecDescent::_tracefirst($text),
5492             q{atom},
5493             $tracelevel)
5494             if defined $::RD_TRACE;
5495 0           $expectation->failed();
5496 0           last;
5497             }
5498 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [number]<< (return value: [}
5499             . $_tok . q{]},
5500            
5501             Parse::RecDescent::_tracefirst($text),
5502             q{atom},
5503             $tracelevel)
5504             if defined $::RD_TRACE;
5505 0           $item{q{number}} = $_tok;
5506 0           push @item, $_tok;
5507            
5508             }
5509              
5510              
5511 0 0         Parse::RecDescent::_trace(q{>>Matched production: [number]<<},
5512             Parse::RecDescent::_tracefirst($text),
5513             q{atom},
5514             $tracelevel)
5515             if defined $::RD_TRACE;
5516 0           $_matched = 1;
5517 0           last;
5518             }
5519              
5520              
5521 0   0       while (!$_matched && !$commit)
5522             {
5523            
5524 0 0         Parse::RecDescent::_trace(q{Trying production: [regex]},
5525             Parse::RecDescent::_tracefirst($_[1]),
5526             q{atom},
5527             $tracelevel)
5528             if defined $::RD_TRACE;
5529 0           my $thisprod = $thisrule->{"prods"}[2];
5530 0           $text = $_[1];
5531 0           my $_savetext;
5532 0           @item = (q{atom});
5533 0           %item = (__RULE__ => q{atom});
5534 0           my $repcount = 0;
5535              
5536              
5537 0 0         Parse::RecDescent::_trace(q{Trying subrule: [regex]},
5538             Parse::RecDescent::_tracefirst($text),
5539             q{atom},
5540             $tracelevel)
5541             if defined $::RD_TRACE;
5542 11     11   69 if (1) { no strict qw{refs};
  11         30  
  11         4160  
  0            
5543 0           $expectation->is(q{})->at($text);
5544 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::regex($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5545             {
5546            
5547 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [regex]>>},
5548             Parse::RecDescent::_tracefirst($text),
5549             q{atom},
5550             $tracelevel)
5551             if defined $::RD_TRACE;
5552 0           $expectation->failed();
5553 0           last;
5554             }
5555 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [regex]<< (return value: [}
5556             . $_tok . q{]},
5557            
5558             Parse::RecDescent::_tracefirst($text),
5559             q{atom},
5560             $tracelevel)
5561             if defined $::RD_TRACE;
5562 0           $item{q{regex}} = $_tok;
5563 0           push @item, $_tok;
5564            
5565             }
5566              
5567              
5568 0 0         Parse::RecDescent::_trace(q{>>Matched production: [regex]<<},
5569             Parse::RecDescent::_tracefirst($text),
5570             q{atom},
5571             $tracelevel)
5572             if defined $::RD_TRACE;
5573 0           $_matched = 1;
5574 0           last;
5575             }
5576              
5577              
5578 0   0       while (!$_matched && !$commit)
5579             {
5580            
5581 0 0         Parse::RecDescent::_trace(q{Trying production: [string]},
5582             Parse::RecDescent::_tracefirst($_[1]),
5583             q{atom},
5584             $tracelevel)
5585             if defined $::RD_TRACE;
5586 0           my $thisprod = $thisrule->{"prods"}[3];
5587 0           $text = $_[1];
5588 0           my $_savetext;
5589 0           @item = (q{atom});
5590 0           %item = (__RULE__ => q{atom});
5591 0           my $repcount = 0;
5592              
5593              
5594 0 0         Parse::RecDescent::_trace(q{Trying subrule: [string]},
5595             Parse::RecDescent::_tracefirst($text),
5596             q{atom},
5597             $tracelevel)
5598             if defined $::RD_TRACE;
5599 11     11   62 if (1) { no strict qw{refs};
  11         24  
  11         4283  
  0            
5600 0           $expectation->is(q{})->at($text);
5601 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5602             {
5603            
5604 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [string]>>},
5605             Parse::RecDescent::_tracefirst($text),
5606             q{atom},
5607             $tracelevel)
5608             if defined $::RD_TRACE;
5609 0           $expectation->failed();
5610 0           last;
5611             }
5612 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
5613             . $_tok . q{]},
5614            
5615             Parse::RecDescent::_tracefirst($text),
5616             q{atom},
5617             $tracelevel)
5618             if defined $::RD_TRACE;
5619 0           $item{q{string}} = $_tok;
5620 0           push @item, $_tok;
5621            
5622             }
5623              
5624              
5625 0 0         Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
5626             Parse::RecDescent::_tracefirst($text),
5627             q{atom},
5628             $tracelevel)
5629             if defined $::RD_TRACE;
5630 0           $_matched = 1;
5631 0           last;
5632             }
5633              
5634              
5635 0   0       while (!$_matched && !$commit)
5636             {
5637            
5638 0 0         Parse::RecDescent::_trace(q{Trying production: [int]},
5639             Parse::RecDescent::_tracefirst($_[1]),
5640             q{atom},
5641             $tracelevel)
5642             if defined $::RD_TRACE;
5643 0           my $thisprod = $thisrule->{"prods"}[4];
5644 0           $text = $_[1];
5645 0           my $_savetext;
5646 0           @item = (q{atom});
5647 0           %item = (__RULE__ => q{atom});
5648 0           my $repcount = 0;
5649              
5650              
5651 0 0         Parse::RecDescent::_trace(q{Trying subrule: [int]},
5652             Parse::RecDescent::_tracefirst($text),
5653             q{atom},
5654             $tracelevel)
5655             if defined $::RD_TRACE;
5656 11     11   72 if (1) { no strict qw{refs};
  11         23  
  11         6826  
  0            
5657 0           $expectation->is(q{})->at($text);
5658 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::int($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5659             {
5660            
5661 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [int]>>},
5662             Parse::RecDescent::_tracefirst($text),
5663             q{atom},
5664             $tracelevel)
5665             if defined $::RD_TRACE;
5666 0           $expectation->failed();
5667 0           last;
5668             }
5669 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [int]<< (return value: [}
5670             . $_tok . q{]},
5671            
5672             Parse::RecDescent::_tracefirst($text),
5673             q{atom},
5674             $tracelevel)
5675             if defined $::RD_TRACE;
5676 0           $item{q{int}} = $_tok;
5677 0           push @item, $_tok;
5678            
5679             }
5680              
5681              
5682 0 0         Parse::RecDescent::_trace(q{>>Matched production: [int]<<},
5683             Parse::RecDescent::_tracefirst($text),
5684             q{atom},
5685             $tracelevel)
5686             if defined $::RD_TRACE;
5687 0           $_matched = 1;
5688 0           last;
5689             }
5690              
5691              
5692 0 0 0       unless ( $_matched || defined($score) )
5693             {
5694            
5695              
5696 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
5697 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5698             Parse::RecDescent::_tracefirst($_[1]),
5699             q{atom},
5700             $tracelevel)
5701             if defined $::RD_TRACE;
5702 0           return undef;
5703             }
5704 0 0 0       if (!defined($return) && defined($score))
5705             {
5706 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5707             q{atom},
5708             $tracelevel)
5709             if defined $::RD_TRACE;
5710 0           $return = $score_return;
5711             }
5712 0           splice @{$thisparser->{errors}}, $err_at;
  0            
5713 0 0         $return = $item[$#item] unless defined $return;
5714 0 0         if (defined $::RD_TRACE)
5715             {
5716 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5717             $return . q{])}, "",
5718             q{atom},
5719             $tracelevel);
5720 0           Parse::RecDescent::_trace(q{(consumed: [} .
5721             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5722             Parse::RecDescent::_tracefirst($text),
5723             , q{atom},
5724             $tracelevel)
5725             }
5726 0           $_[1] = $text;
5727 0           return $return;
5728             }
5729              
5730             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5731             sub Parse::RecDescent::Cheater::Parser::enum
5732             {
5733 0     0     my $thisparser = $_[0];
5734 11     11   64 use vars q{$tracelevel};
  11         20  
  11         9373  
5735 0   0       local $tracelevel = ($tracelevel||0)+1;
5736 0           $ERRORS = 0;
5737 0           my $thisrule = $thisparser->{"rules"}{"enum"};
5738            
5739 0 0         Parse::RecDescent::_trace(q{Trying rule: [enum]},
5740             Parse::RecDescent::_tracefirst($_[1]),
5741             q{enum},
5742             $tracelevel)
5743             if defined $::RD_TRACE;
5744              
5745            
5746 0           my $err_at = @{$thisparser->{errors}};
  0            
5747              
5748 0           my $score;
5749             my $score_return;
5750 0           my $_tok;
5751 0           my $return = undef;
5752 0           my $_matched=0;
5753 0           my $commit=0;
5754 0           my @item = ();
5755 0           my %item = ();
5756 0   0       my $repeating = defined($_[2]) && $_[2];
5757 0   0       my $_noactions = defined($_[3]) && $_[3];
5758 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
5759 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5760 0           my $text;
5761 0           my $lastsep="";
5762 0           my $current_match;
5763 0           my $expectation = new Parse::RecDescent::Expectation(q{'\{'});
5764 0           $expectation->at($_[1]);
5765            
5766 0           my $prevline;
5767 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
5768            
5769 0           my $thisline;
5770 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5771              
5772            
5773              
5774 0   0       while (!$_matched && !$commit)
5775             {
5776            
5777 0 0         Parse::RecDescent::_trace(q{Trying production: ['\{' <commit> <leftop: atom /,/ atom> '\}']},
5778             Parse::RecDescent::_tracefirst($_[1]),
5779             q{enum},
5780             $tracelevel)
5781             if defined $::RD_TRACE;
5782 0           my $thisprod = $thisrule->{"prods"}[0];
5783 0           $text = $_[1];
5784 0           my $_savetext;
5785 0           @item = (q{enum});
5786 0           %item = (__RULE__ => q{enum});
5787 0           my $repcount = 0;
5788              
5789              
5790 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
5791             Parse::RecDescent::_tracefirst($text),
5792             q{enum},
5793             $tracelevel)
5794             if defined $::RD_TRACE;
5795 0           $lastsep = "";
5796 0           $expectation->is(q{})->at($text);
5797            
5798              
5799 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\{/)
  0 0          
5800             {
5801            
5802 0           $expectation->failed();
5803 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
5804             Parse::RecDescent::_tracefirst($text))
5805             if defined $::RD_TRACE;
5806 0           last;
5807             }
5808 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
5809 0           substr($text,0,length($current_match),q{});
5810 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5811             . $current_match . q{])},
5812             Parse::RecDescent::_tracefirst($text))
5813             if defined $::RD_TRACE;
5814 0           push @item, $item{__STRING1__}=$current_match;
5815            
5816              
5817            
5818              
5819 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
5820             Parse::RecDescent::_tracefirst($text),
5821             q{enum},
5822             $tracelevel)
5823             if defined $::RD_TRACE;
5824 0           $_tok = do { $commit = 1 };
  0            
5825 0 0         if (defined($_tok))
5826             {
5827 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
5828             . $_tok . q{])},
5829             Parse::RecDescent::_tracefirst($text))
5830             if defined $::RD_TRACE;
5831             }
5832             else
5833             {
5834 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
5835             Parse::RecDescent::_tracefirst($text))
5836             if defined $::RD_TRACE;
5837             }
5838            
5839 0 0         last unless defined $_tok;
5840 0           push @item, $item{__DIRECTIVE1__}=$_tok;
5841            
5842              
5843 0 0         Parse::RecDescent::_trace(q{Trying operator: [<leftop: atom /,/ atom>]},
5844             Parse::RecDescent::_tracefirst($text),
5845             q{enum},
5846             $tracelevel)
5847             if defined $::RD_TRACE;
5848 0           $expectation->is(q{<leftop: atom /,/ atom>})->at($text);
5849              
5850 0           $_tok = undef;
5851 0           OPLOOP: while (1)
5852             {
5853 0           $repcount = 0;
5854 0           my @item;
5855            
5856             # MATCH LEFTARG
5857            
5858 0 0         Parse::RecDescent::_trace(q{Trying subrule: [atom]},
5859             Parse::RecDescent::_tracefirst($text),
5860             q{enum},
5861             $tracelevel)
5862             if defined $::RD_TRACE;
5863 11     11   71 if (1) { no strict qw{refs};
  11         29  
  11         5400  
  0            
5864 0           $expectation->is(q{atom})->at($text);
5865 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::atom($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5866             {
5867            
5868 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [atom]>>},
5869             Parse::RecDescent::_tracefirst($text),
5870             q{enum},
5871             $tracelevel)
5872             if defined $::RD_TRACE;
5873 0           $expectation->failed();
5874 0           last;
5875             }
5876 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [atom]<< (return value: [}
5877             . $_tok . q{]},
5878            
5879             Parse::RecDescent::_tracefirst($text),
5880             q{enum},
5881             $tracelevel)
5882             if defined $::RD_TRACE;
5883 0           $item{q{atom}} = $_tok;
5884 0           push @item, $_tok;
5885            
5886             }
5887              
5888              
5889 0           $repcount++;
5890              
5891 0           my $savetext = $text;
5892 0           my $backtrack;
5893              
5894             # MATCH (OP RIGHTARG)(s)
5895 0           while ($repcount < 100000000)
5896             {
5897 0           $backtrack = 0;
5898            
5899 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
5900             q{enum},
5901             $tracelevel)
5902             if defined $::RD_TRACE;
5903 0           $lastsep = "";
5904 0           $expectation->is(q{/,/})->at($text);
5905            
5906              
5907 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:,)/)
  0 0          
5908             {
5909            
5910 0           $expectation->failed();
5911 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5912             Parse::RecDescent::_tracefirst($text))
5913             if defined $::RD_TRACE;
5914              
5915 0           last;
5916             }
5917 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
5918 0           substr($text,0,length($current_match),q{});
5919 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5920             . $current_match . q{])},
5921             Parse::RecDescent::_tracefirst($text))
5922             if defined $::RD_TRACE;
5923 0           push @item, $item{__PATTERN1__}=$current_match;
5924            
5925              
5926 0           pop @item;
5927 0 0         if (defined $1) {push @item, $item{'atom(s?)'}=$1; $backtrack=1;}
  0            
  0            
5928            
5929 0 0         Parse::RecDescent::_trace(q{Trying subrule: [atom]},
5930             Parse::RecDescent::_tracefirst($text),
5931             q{enum},
5932             $tracelevel)
5933             if defined $::RD_TRACE;
5934 11     11   63 if (1) { no strict qw{refs};
  11         27  
  11         17287  
  0            
5935 0           $expectation->is(q{atom})->at($text);
5936 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::atom($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
5937             {
5938            
5939 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [atom]>>},
5940             Parse::RecDescent::_tracefirst($text),
5941             q{enum},
5942             $tracelevel)
5943             if defined $::RD_TRACE;
5944 0           $expectation->failed();
5945 0           last;
5946             }
5947 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [atom]<< (return value: [}
5948             . $_tok . q{]},
5949            
5950             Parse::RecDescent::_tracefirst($text),
5951             q{enum},
5952             $tracelevel)
5953             if defined $::RD_TRACE;
5954 0           $item{q{atom}} = $_tok;
5955 0           push @item, $_tok;
5956            
5957             }
5958              
5959 0           $savetext = $text;
5960 0           $repcount++;
5961             }
5962 0           $text = $savetext;
5963 0 0         pop @item if $backtrack;
5964              
5965            
5966 0           $_tok = [ @item ];
5967 0           last;
5968             }
5969              
5970 0 0         unless ($repcount>=0)
5971             {
5972 0 0         Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: atom /,/ atom>]>>},
5973             Parse::RecDescent::_tracefirst($text),
5974             q{enum},
5975             $tracelevel)
5976             if defined $::RD_TRACE;
5977 0           $expectation->failed();
5978 0           last;
5979             }
5980 0 0         Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: atom /,/ atom>]<< (return value: [}
5981 0 0         . qq{@{$_tok||[]}} . q{]},
5982             Parse::RecDescent::_tracefirst($text),
5983             q{enum},
5984             $tracelevel)
5985             if defined $::RD_TRACE;
5986              
5987 0   0       push @item, $item{'atom(s?)'}=$_tok||[];
5988              
5989              
5990 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
5991             Parse::RecDescent::_tracefirst($text),
5992             q{enum},
5993             $tracelevel)
5994             if defined $::RD_TRACE;
5995 0           $lastsep = "";
5996 0           $expectation->is(q{'\}'})->at($text);
5997            
5998              
5999 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\}/)
  0 0          
6000             {
6001            
6002 0           $expectation->failed();
6003 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6004             Parse::RecDescent::_tracefirst($text))
6005             if defined $::RD_TRACE;
6006 0           last;
6007             }
6008 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6009 0           substr($text,0,length($current_match),q{});
6010 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6011             . $current_match . q{])},
6012             Parse::RecDescent::_tracefirst($text))
6013             if defined $::RD_TRACE;
6014 0           push @item, $item{__STRING2__}=$current_match;
6015            
6016              
6017 0 0         Parse::RecDescent::_trace(q{Trying action},
6018             Parse::RecDescent::_tracefirst($text),
6019             q{enum},
6020             $tracelevel)
6021             if defined $::RD_TRACE;
6022            
6023              
6024 0 0         $_tok = ($_noactions) ? 0 : do { $item[3] };
  0            
6025 0 0         unless (defined $_tok)
6026             {
6027 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
6028             if defined $::RD_TRACE;
6029 0           last;
6030             }
6031 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6032             . $_tok . q{])},
6033             Parse::RecDescent::_tracefirst($text))
6034             if defined $::RD_TRACE;
6035 0           push @item, $_tok;
6036 0           $item{__ACTION1__}=$_tok;
6037            
6038              
6039              
6040 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['\{' <commit> <leftop: atom /,/ atom> '\}']<<},
6041             Parse::RecDescent::_tracefirst($text),
6042             q{enum},
6043             $tracelevel)
6044             if defined $::RD_TRACE;
6045 0           $_matched = 1;
6046 0           last;
6047             }
6048              
6049              
6050 0           while (!$_matched)
6051             {
6052            
6053 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
6054             Parse::RecDescent::_tracefirst($_[1]),
6055             q{enum},
6056             $tracelevel)
6057             if defined $::RD_TRACE;
6058 0           my $thisprod = $thisrule->{"prods"}[1];
6059            
6060 0           my $_savetext;
6061 0           @item = (q{enum});
6062 0           %item = (__RULE__ => q{enum});
6063 0           my $repcount = 0;
6064              
6065              
6066            
6067              
6068 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
6069             Parse::RecDescent::_tracefirst($text),
6070             q{enum},
6071             $tracelevel)
6072             if defined $::RD_TRACE;
6073 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
6074 0           my $rule = $item[0];
6075 0           $rule =~ s/_/ /g;
6076             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
6077 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
6078 0           } unless $_noactions; undef } else {0} };
6079 0 0         if (defined($_tok))
6080             {
6081 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
6082             . $_tok . q{])},
6083             Parse::RecDescent::_tracefirst($text))
6084             if defined $::RD_TRACE;
6085             }
6086             else
6087             {
6088 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
6089             Parse::RecDescent::_tracefirst($text))
6090             if defined $::RD_TRACE;
6091             }
6092            
6093 0 0         last unless defined $_tok;
6094 0           push @item, $item{__DIRECTIVE1__}=$_tok;
6095            
6096              
6097 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
6098             Parse::RecDescent::_tracefirst($text),
6099             q{enum},
6100             $tracelevel)
6101             if defined $::RD_TRACE;
6102 0           undef $return;
6103            
6104              
6105 0           $_tok = undef;
6106            
6107 0 0         last unless defined $_tok;
6108              
6109              
6110 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
6111             Parse::RecDescent::_tracefirst($text),
6112             q{enum},
6113             $tracelevel)
6114             if defined $::RD_TRACE;
6115 0           $_matched = 1;
6116 0           last;
6117             }
6118              
6119              
6120 0 0 0       unless ( $_matched || defined($score) )
6121             {
6122            
6123              
6124 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
6125 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
6126             Parse::RecDescent::_tracefirst($_[1]),
6127             q{enum},
6128             $tracelevel)
6129             if defined $::RD_TRACE;
6130 0           return undef;
6131             }
6132 0 0 0       if (!defined($return) && defined($score))
6133             {
6134 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6135             q{enum},
6136             $tracelevel)
6137             if defined $::RD_TRACE;
6138 0           $return = $score_return;
6139             }
6140 0           splice @{$thisparser->{errors}}, $err_at;
  0            
6141 0 0         $return = $item[$#item] unless defined $return;
6142 0 0         if (defined $::RD_TRACE)
6143             {
6144 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6145             $return . q{])}, "",
6146             q{enum},
6147             $tracelevel);
6148 0           Parse::RecDescent::_trace(q{(consumed: [} .
6149             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6150             Parse::RecDescent::_tracefirst($text),
6151             , q{enum},
6152             $tracelevel)
6153             }
6154 0           $_[1] = $text;
6155 0           return $return;
6156             }
6157              
6158             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6159             sub Parse::RecDescent::Cheater::Parser::column_definition
6160             {
6161 0     0     my $thisparser = $_[0];
6162 11     11   77 use vars q{$tracelevel};
  11         27  
  11         4758  
6163 0   0       local $tracelevel = ($tracelevel||0)+1;
6164 0           $ERRORS = 0;
6165 0           my $thisrule = $thisparser->{"rules"}{"column_definition"};
6166            
6167 0 0         Parse::RecDescent::_trace(q{Trying rule: [column_definition]},
6168             Parse::RecDescent::_tracefirst($_[1]),
6169             q{column_definition},
6170             $tracelevel)
6171             if defined $::RD_TRACE;
6172              
6173            
6174 0           my $err_at = @{$thisparser->{errors}};
  0            
6175              
6176 0           my $score;
6177             my $score_return;
6178 0           my $_tok;
6179 0           my $return = undef;
6180 0           my $_matched=0;
6181 0           my $commit=0;
6182 0           my @item = ();
6183 0           my %item = ();
6184 0   0       my $repeating = defined($_[2]) && $_[2];
6185 0   0       my $_noactions = defined($_[3]) && $_[3];
6186 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
6187 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6188 0           my $text;
6189 0           my $lastsep="";
6190 0           my $current_match;
6191 0           my $expectation = new Parse::RecDescent::Expectation(q{column_name});
6192 0           $expectation->at($_[1]);
6193            
6194 0           my $prevline;
6195 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
6196            
6197 0           my $thisline;
6198 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6199              
6200            
6201              
6202 0   0       while (!$_matched && !$commit)
6203             {
6204            
6205 0 0         Parse::RecDescent::_trace(q{Trying production: [column_name 'references' <commit> qualified_column attribute ';']},
6206             Parse::RecDescent::_tracefirst($_[1]),
6207             q{column_definition},
6208             $tracelevel)
6209             if defined $::RD_TRACE;
6210 0           my $thisprod = $thisrule->{"prods"}[0];
6211 0           $text = $_[1];
6212 0           my $_savetext;
6213 0           @item = (q{column_definition});
6214 0           %item = (__RULE__ => q{column_definition});
6215 0           my $repcount = 0;
6216              
6217              
6218 0 0         Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
6219             Parse::RecDescent::_tracefirst($text),
6220             q{column_definition},
6221             $tracelevel)
6222             if defined $::RD_TRACE;
6223 11     11   66 if (1) { no strict qw{refs};
  11         26  
  11         5901  
  0            
6224 0           $expectation->is(q{})->at($text);
6225 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6226             {
6227            
6228 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
6229             Parse::RecDescent::_tracefirst($text),
6230             q{column_definition},
6231             $tracelevel)
6232             if defined $::RD_TRACE;
6233 0           $expectation->failed();
6234 0           last;
6235             }
6236 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
6237             . $_tok . q{]},
6238            
6239             Parse::RecDescent::_tracefirst($text),
6240             q{column_definition},
6241             $tracelevel)
6242             if defined $::RD_TRACE;
6243 0           $item{q{column_name}} = $_tok;
6244 0           push @item, $_tok;
6245            
6246             }
6247              
6248 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['references']},
6249             Parse::RecDescent::_tracefirst($text),
6250             q{column_definition},
6251             $tracelevel)
6252             if defined $::RD_TRACE;
6253 0           $lastsep = "";
6254 0           $expectation->is(q{'references'})->at($text);
6255            
6256              
6257 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Areferences/)
  0 0          
6258             {
6259            
6260 0           $expectation->failed();
6261 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6262             Parse::RecDescent::_tracefirst($text))
6263             if defined $::RD_TRACE;
6264 0           last;
6265             }
6266 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6267 0           substr($text,0,length($current_match),q{});
6268 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6269             . $current_match . q{])},
6270             Parse::RecDescent::_tracefirst($text))
6271             if defined $::RD_TRACE;
6272 0           push @item, $item{__STRING1__}=$current_match;
6273            
6274              
6275            
6276              
6277 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
6278             Parse::RecDescent::_tracefirst($text),
6279             q{column_definition},
6280             $tracelevel)
6281             if defined $::RD_TRACE;
6282 0           $_tok = do { $commit = 1 };
  0            
6283 0 0         if (defined($_tok))
6284             {
6285 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
6286             . $_tok . q{])},
6287             Parse::RecDescent::_tracefirst($text))
6288             if defined $::RD_TRACE;
6289             }
6290             else
6291             {
6292 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
6293             Parse::RecDescent::_tracefirst($text))
6294             if defined $::RD_TRACE;
6295             }
6296            
6297 0 0         last unless defined $_tok;
6298 0           push @item, $item{__DIRECTIVE1__}=$_tok;
6299            
6300              
6301 0 0         Parse::RecDescent::_trace(q{Trying subrule: [qualified_column]},
6302             Parse::RecDescent::_tracefirst($text),
6303             q{column_definition},
6304             $tracelevel)
6305             if defined $::RD_TRACE;
6306 11     11   83 if (1) { no strict qw{refs};
  11         35  
  11         9872  
  0            
6307 0           $expectation->is(q{qualified_column})->at($text);
6308 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::qualified_column($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6309             {
6310            
6311 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [qualified_column]>>},
6312             Parse::RecDescent::_tracefirst($text),
6313             q{column_definition},
6314             $tracelevel)
6315             if defined $::RD_TRACE;
6316 0           $expectation->failed();
6317 0           last;
6318             }
6319 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [qualified_column]<< (return value: [}
6320             . $_tok . q{]},
6321            
6322             Parse::RecDescent::_tracefirst($text),
6323             q{column_definition},
6324             $tracelevel)
6325             if defined $::RD_TRACE;
6326 0           $item{q{qualified_column}} = $_tok;
6327 0           push @item, $_tok;
6328            
6329             }
6330              
6331 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [attribute]},
6332             Parse::RecDescent::_tracefirst($text),
6333             q{column_definition},
6334             $tracelevel)
6335             if defined $::RD_TRACE;
6336 0           $expectation->is(q{attribute})->at($text);
6337            
6338 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::attribute, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  0            
6339             {
6340 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [attribute]>>},
6341             Parse::RecDescent::_tracefirst($text),
6342             q{column_definition},
6343             $tracelevel)
6344             if defined $::RD_TRACE;
6345 0           last;
6346             }
6347 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [attribute]<< (}
6348             . @$_tok . q{ times)},
6349            
6350             Parse::RecDescent::_tracefirst($text),
6351             q{column_definition},
6352             $tracelevel)
6353             if defined $::RD_TRACE;
6354 0           $item{q{attribute(s?)}} = $_tok;
6355 0           push @item, $_tok;
6356            
6357              
6358              
6359 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
6360             Parse::RecDescent::_tracefirst($text),
6361             q{column_definition},
6362             $tracelevel)
6363             if defined $::RD_TRACE;
6364 0           $lastsep = "";
6365 0           $expectation->is(q{';'})->at($text);
6366            
6367              
6368 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
6369             {
6370            
6371 0           $expectation->failed();
6372 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6373             Parse::RecDescent::_tracefirst($text))
6374             if defined $::RD_TRACE;
6375 0           last;
6376             }
6377 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6378 0           substr($text,0,length($current_match),q{});
6379 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6380             . $current_match . q{])},
6381             Parse::RecDescent::_tracefirst($text))
6382             if defined $::RD_TRACE;
6383 0           push @item, $item{__STRING2__}=$current_match;
6384            
6385              
6386 0 0         Parse::RecDescent::_trace(q{Trying action},
6387             Parse::RecDescent::_tracefirst($text),
6388             q{column_definition},
6389             $tracelevel)
6390             if defined $::RD_TRACE;
6391            
6392              
6393 0 0         $_tok = ($_noactions) ? 0 : do { [ $item[1], 'refs', $item[4], $item[5] ] };
  0            
6394 0 0         unless (defined $_tok)
6395             {
6396 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
6397             if defined $::RD_TRACE;
6398 0           last;
6399             }
6400 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6401             . $_tok . q{])},
6402             Parse::RecDescent::_tracefirst($text))
6403             if defined $::RD_TRACE;
6404 0           push @item, $_tok;
6405 0           $item{__ACTION1__}=$_tok;
6406            
6407              
6408              
6409 0 0         Parse::RecDescent::_trace(q{>>Matched production: [column_name 'references' <commit> qualified_column attribute ';']<<},
6410             Parse::RecDescent::_tracefirst($text),
6411             q{column_definition},
6412             $tracelevel)
6413             if defined $::RD_TRACE;
6414 0           $_matched = 1;
6415 0           last;
6416             }
6417              
6418              
6419 0   0       while (!$_matched && !$commit)
6420             {
6421            
6422 0 0         Parse::RecDescent::_trace(q{Trying production: [column_name type domain attribute ';']},
6423             Parse::RecDescent::_tracefirst($_[1]),
6424             q{column_definition},
6425             $tracelevel)
6426             if defined $::RD_TRACE;
6427 0           my $thisprod = $thisrule->{"prods"}[1];
6428 0           $text = $_[1];
6429 0           my $_savetext;
6430 0           @item = (q{column_definition});
6431 0           %item = (__RULE__ => q{column_definition});
6432 0           my $repcount = 0;
6433              
6434              
6435 0 0         Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
6436             Parse::RecDescent::_tracefirst($text),
6437             q{column_definition},
6438             $tracelevel)
6439             if defined $::RD_TRACE;
6440 11     11   73 if (1) { no strict qw{refs};
  11         27  
  11         2548  
  0            
6441 0           $expectation->is(q{})->at($text);
6442 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6443             {
6444            
6445 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
6446             Parse::RecDescent::_tracefirst($text),
6447             q{column_definition},
6448             $tracelevel)
6449             if defined $::RD_TRACE;
6450 0           $expectation->failed();
6451 0           last;
6452             }
6453 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
6454             . $_tok . q{]},
6455            
6456             Parse::RecDescent::_tracefirst($text),
6457             q{column_definition},
6458             $tracelevel)
6459             if defined $::RD_TRACE;
6460 0           $item{q{column_name}} = $_tok;
6461 0           push @item, $_tok;
6462            
6463             }
6464              
6465 0 0         Parse::RecDescent::_trace(q{Trying subrule: [type]},
6466             Parse::RecDescent::_tracefirst($text),
6467             q{column_definition},
6468             $tracelevel)
6469             if defined $::RD_TRACE;
6470 11     11   65 if (1) { no strict qw{refs};
  11         26  
  11         13314  
  0            
6471 0           $expectation->is(q{type})->at($text);
6472 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6473             {
6474            
6475 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
6476             Parse::RecDescent::_tracefirst($text),
6477             q{column_definition},
6478             $tracelevel)
6479             if defined $::RD_TRACE;
6480 0           $expectation->failed();
6481 0           last;
6482             }
6483 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
6484             . $_tok . q{]},
6485            
6486             Parse::RecDescent::_tracefirst($text),
6487             q{column_definition},
6488             $tracelevel)
6489             if defined $::RD_TRACE;
6490 0           $item{q{type}} = $_tok;
6491 0           push @item, $_tok;
6492            
6493             }
6494              
6495 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [domain]},
6496             Parse::RecDescent::_tracefirst($text),
6497             q{column_definition},
6498             $tracelevel)
6499             if defined $::RD_TRACE;
6500 0           $expectation->is(q{domain})->at($text);
6501            
6502 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::domain, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0            
6503             {
6504 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [domain]>>},
6505             Parse::RecDescent::_tracefirst($text),
6506             q{column_definition},
6507             $tracelevel)
6508             if defined $::RD_TRACE;
6509 0           last;
6510             }
6511 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [domain]<< (}
6512             . @$_tok . q{ times)},
6513            
6514             Parse::RecDescent::_tracefirst($text),
6515             q{column_definition},
6516             $tracelevel)
6517             if defined $::RD_TRACE;
6518 0           $item{q{domain(?)}} = $_tok;
6519 0           push @item, $_tok;
6520            
6521              
6522              
6523 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [attribute]},
6524             Parse::RecDescent::_tracefirst($text),
6525             q{column_definition},
6526             $tracelevel)
6527             if defined $::RD_TRACE;
6528 0           $expectation->is(q{attribute})->at($text);
6529            
6530 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::attribute, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  0            
6531             {
6532 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [attribute]>>},
6533             Parse::RecDescent::_tracefirst($text),
6534             q{column_definition},
6535             $tracelevel)
6536             if defined $::RD_TRACE;
6537 0           last;
6538             }
6539 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [attribute]<< (}
6540             . @$_tok . q{ times)},
6541            
6542             Parse::RecDescent::_tracefirst($text),
6543             q{column_definition},
6544             $tracelevel)
6545             if defined $::RD_TRACE;
6546 0           $item{q{attribute(s?)}} = $_tok;
6547 0           push @item, $_tok;
6548            
6549              
6550              
6551 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
6552             Parse::RecDescent::_tracefirst($text),
6553             q{column_definition},
6554             $tracelevel)
6555             if defined $::RD_TRACE;
6556 0           $lastsep = "";
6557 0           $expectation->is(q{';'})->at($text);
6558            
6559              
6560 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
6561             {
6562            
6563 0           $expectation->failed();
6564 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6565             Parse::RecDescent::_tracefirst($text))
6566             if defined $::RD_TRACE;
6567 0           last;
6568             }
6569 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6570 0           substr($text,0,length($current_match),q{});
6571 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6572             . $current_match . q{])},
6573             Parse::RecDescent::_tracefirst($text))
6574             if defined $::RD_TRACE;
6575 0           push @item, $item{__STRING1__}=$current_match;
6576            
6577              
6578 0 0         Parse::RecDescent::_trace(q{Trying action},
6579             Parse::RecDescent::_tracefirst($text),
6580             q{column_definition},
6581             $tracelevel)
6582             if defined $::RD_TRACE;
6583            
6584              
6585 0 0         $_tok = ($_noactions) ? 0 : do { [$item[1], $item[2], $item[3], $item[4] ] };
  0            
6586 0 0         unless (defined $_tok)
6587             {
6588 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
6589             if defined $::RD_TRACE;
6590 0           last;
6591             }
6592 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6593             . $_tok . q{])},
6594             Parse::RecDescent::_tracefirst($text))
6595             if defined $::RD_TRACE;
6596 0           push @item, $_tok;
6597 0           $item{__ACTION1__}=$_tok;
6598            
6599              
6600              
6601 0 0         Parse::RecDescent::_trace(q{>>Matched production: [column_name type domain attribute ';']<<},
6602             Parse::RecDescent::_tracefirst($text),
6603             q{column_definition},
6604             $tracelevel)
6605             if defined $::RD_TRACE;
6606 0           $_matched = 1;
6607 0           last;
6608             }
6609              
6610              
6611 0   0       while (!$_matched && !$commit)
6612             {
6613            
6614 0 0         Parse::RecDescent::_trace(q{Trying production: [column_name '=' column_name ';']},
6615             Parse::RecDescent::_tracefirst($_[1]),
6616             q{column_definition},
6617             $tracelevel)
6618             if defined $::RD_TRACE;
6619 0           my $thisprod = $thisrule->{"prods"}[2];
6620 0           $text = $_[1];
6621 0           my $_savetext;
6622 0           @item = (q{column_definition});
6623 0           %item = (__RULE__ => q{column_definition});
6624 0           my $repcount = 0;
6625              
6626              
6627 0 0         Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
6628             Parse::RecDescent::_tracefirst($text),
6629             q{column_definition},
6630             $tracelevel)
6631             if defined $::RD_TRACE;
6632 11     11   79 if (1) { no strict qw{refs};
  11         27  
  11         5769  
  0            
6633 0           $expectation->is(q{})->at($text);
6634 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6635             {
6636            
6637 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
6638             Parse::RecDescent::_tracefirst($text),
6639             q{column_definition},
6640             $tracelevel)
6641             if defined $::RD_TRACE;
6642 0           $expectation->failed();
6643 0           last;
6644             }
6645 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
6646             . $_tok . q{]},
6647            
6648             Parse::RecDescent::_tracefirst($text),
6649             q{column_definition},
6650             $tracelevel)
6651             if defined $::RD_TRACE;
6652 0           $item{q{column_name}} = $_tok;
6653 0           push @item, $_tok;
6654            
6655             }
6656              
6657 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['=']},
6658             Parse::RecDescent::_tracefirst($text),
6659             q{column_definition},
6660             $tracelevel)
6661             if defined $::RD_TRACE;
6662 0           $lastsep = "";
6663 0           $expectation->is(q{'='})->at($text);
6664            
6665              
6666 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\=/)
  0 0          
6667             {
6668            
6669 0           $expectation->failed();
6670 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6671             Parse::RecDescent::_tracefirst($text))
6672             if defined $::RD_TRACE;
6673 0           last;
6674             }
6675 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6676 0           substr($text,0,length($current_match),q{});
6677 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6678             . $current_match . q{])},
6679             Parse::RecDescent::_tracefirst($text))
6680             if defined $::RD_TRACE;
6681 0           push @item, $item{__STRING1__}=$current_match;
6682            
6683              
6684 0 0         Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
6685             Parse::RecDescent::_tracefirst($text),
6686             q{column_definition},
6687             $tracelevel)
6688             if defined $::RD_TRACE;
6689 11     11   63 if (1) { no strict qw{refs};
  11         23  
  11         18423  
  0            
6690 0           $expectation->is(q{column_name})->at($text);
6691 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
6692             {
6693            
6694 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
6695             Parse::RecDescent::_tracefirst($text),
6696             q{column_definition},
6697             $tracelevel)
6698             if defined $::RD_TRACE;
6699 0           $expectation->failed();
6700 0           last;
6701             }
6702 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
6703             . $_tok . q{]},
6704            
6705             Parse::RecDescent::_tracefirst($text),
6706             q{column_definition},
6707             $tracelevel)
6708             if defined $::RD_TRACE;
6709 0           $item{q{column_name}} = $_tok;
6710 0           push @item, $_tok;
6711            
6712             }
6713              
6714 0 0         Parse::RecDescent::_trace(q{Trying terminal: [';']},
6715             Parse::RecDescent::_tracefirst($text),
6716             q{column_definition},
6717             $tracelevel)
6718             if defined $::RD_TRACE;
6719 0           $lastsep = "";
6720 0           $expectation->is(q{';'})->at($text);
6721            
6722              
6723 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\;/)
  0 0          
6724             {
6725            
6726 0           $expectation->failed();
6727 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
6728             Parse::RecDescent::_tracefirst($text))
6729             if defined $::RD_TRACE;
6730 0           last;
6731             }
6732 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6733 0           substr($text,0,length($current_match),q{});
6734 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6735             . $current_match . q{])},
6736             Parse::RecDescent::_tracefirst($text))
6737             if defined $::RD_TRACE;
6738 0           push @item, $item{__STRING2__}=$current_match;
6739            
6740              
6741 0 0         Parse::RecDescent::_trace(q{Trying action},
6742             Parse::RecDescent::_tracefirst($text),
6743             q{column_definition},
6744             $tracelevel)
6745             if defined $::RD_TRACE;
6746            
6747              
6748 0 0         $_tok = ($_noactions) ? 0 : do { [$item[1], '=', $item[3]] };
  0            
6749 0 0         unless (defined $_tok)
6750             {
6751 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
6752             if defined $::RD_TRACE;
6753 0           last;
6754             }
6755 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6756             . $_tok . q{])},
6757             Parse::RecDescent::_tracefirst($text))
6758             if defined $::RD_TRACE;
6759 0           push @item, $_tok;
6760 0           $item{__ACTION1__}=$_tok;
6761            
6762              
6763              
6764 0 0         Parse::RecDescent::_trace(q{>>Matched production: [column_name '=' column_name ';']<<},
6765             Parse::RecDescent::_tracefirst($text),
6766             q{column_definition},
6767             $tracelevel)
6768             if defined $::RD_TRACE;
6769 0           $_matched = 1;
6770 0           last;
6771             }
6772              
6773              
6774 0           while (!$_matched)
6775             {
6776            
6777 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
6778             Parse::RecDescent::_tracefirst($_[1]),
6779             q{column_definition},
6780             $tracelevel)
6781             if defined $::RD_TRACE;
6782 0           my $thisprod = $thisrule->{"prods"}[3];
6783            
6784 0           my $_savetext;
6785 0           @item = (q{column_definition});
6786 0           %item = (__RULE__ => q{column_definition});
6787 0           my $repcount = 0;
6788              
6789              
6790            
6791              
6792 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
6793             Parse::RecDescent::_tracefirst($text),
6794             q{column_definition},
6795             $tracelevel)
6796             if defined $::RD_TRACE;
6797 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
6798 0           my $rule = $item[0];
6799 0           $rule =~ s/_/ /g;
6800             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
6801 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
6802 0           } unless $_noactions; undef } else {0} };
6803 0 0         if (defined($_tok))
6804             {
6805 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
6806             . $_tok . q{])},
6807             Parse::RecDescent::_tracefirst($text))
6808             if defined $::RD_TRACE;
6809             }
6810             else
6811             {
6812 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
6813             Parse::RecDescent::_tracefirst($text))
6814             if defined $::RD_TRACE;
6815             }
6816            
6817 0 0         last unless defined $_tok;
6818 0           push @item, $item{__DIRECTIVE1__}=$_tok;
6819            
6820              
6821 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
6822             Parse::RecDescent::_tracefirst($text),
6823             q{column_definition},
6824             $tracelevel)
6825             if defined $::RD_TRACE;
6826 0           undef $return;
6827            
6828              
6829 0           $_tok = undef;
6830            
6831 0 0         last unless defined $_tok;
6832              
6833              
6834 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
6835             Parse::RecDescent::_tracefirst($text),
6836             q{column_definition},
6837             $tracelevel)
6838             if defined $::RD_TRACE;
6839 0           $_matched = 1;
6840 0           last;
6841             }
6842              
6843              
6844 0 0 0       unless ( $_matched || defined($score) )
6845             {
6846            
6847              
6848 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
6849 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
6850             Parse::RecDescent::_tracefirst($_[1]),
6851             q{column_definition},
6852             $tracelevel)
6853             if defined $::RD_TRACE;
6854 0           return undef;
6855             }
6856 0 0 0       if (!defined($return) && defined($score))
6857             {
6858 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6859             q{column_definition},
6860             $tracelevel)
6861             if defined $::RD_TRACE;
6862 0           $return = $score_return;
6863             }
6864 0           splice @{$thisparser->{errors}}, $err_at;
  0            
6865 0 0         $return = $item[$#item] unless defined $return;
6866 0 0         if (defined $::RD_TRACE)
6867             {
6868 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6869             $return . q{])}, "",
6870             q{column_definition},
6871             $tracelevel);
6872 0           Parse::RecDescent::_trace(q{(consumed: [} .
6873             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6874             Parse::RecDescent::_tracefirst($text),
6875             , q{column_definition},
6876             $tracelevel)
6877             }
6878 0           $_[1] = $text;
6879 0           return $return;
6880             }
6881              
6882             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6883             sub Parse::RecDescent::Cheater::Parser::real
6884             {
6885 0     0     my $thisparser = $_[0];
6886 11     11   86 use vars q{$tracelevel};
  11         21  
  11         10562  
6887 0   0       local $tracelevel = ($tracelevel||0)+1;
6888 0           $ERRORS = 0;
6889 0           my $thisrule = $thisparser->{"rules"}{"real"};
6890            
6891 0 0         Parse::RecDescent::_trace(q{Trying rule: [real]},
6892             Parse::RecDescent::_tracefirst($_[1]),
6893             q{real},
6894             $tracelevel)
6895             if defined $::RD_TRACE;
6896              
6897            
6898 0           my $err_at = @{$thisparser->{errors}};
  0            
6899              
6900 0           my $score;
6901             my $score_return;
6902 0           my $_tok;
6903 0           my $return = undef;
6904 0           my $_matched=0;
6905 0           my $commit=0;
6906 0           my @item = ();
6907 0           my %item = ();
6908 0   0       my $repeating = defined($_[2]) && $_[2];
6909 0   0       my $_noactions = defined($_[3]) && $_[3];
6910 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
6911 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6912 0           my $text;
6913 0           my $lastsep="";
6914 0           my $current_match;
6915 0           my $expectation = new Parse::RecDescent::Expectation(q{/-?\\d+\\.\\d+\\b/});
6916 0           $expectation->at($_[1]);
6917            
6918 0           my $prevline;
6919 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
6920            
6921 0           my $thisline;
6922 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6923              
6924            
6925              
6926 0   0       while (!$_matched && !$commit)
6927             {
6928            
6929 0 0         Parse::RecDescent::_trace(q{Trying production: [/-?\\d+\\.\\d+\\b/]},
6930             Parse::RecDescent::_tracefirst($_[1]),
6931             q{real},
6932             $tracelevel)
6933             if defined $::RD_TRACE;
6934 0           my $thisprod = $thisrule->{"prods"}[0];
6935 0           $text = $_[1];
6936 0           my $_savetext;
6937 0           @item = (q{real});
6938 0           %item = (__RULE__ => q{real});
6939 0           my $repcount = 0;
6940              
6941              
6942 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/-?\\d+\\.\\d+\\b/]}, Parse::RecDescent::_tracefirst($text),
6943             q{real},
6944             $tracelevel)
6945             if defined $::RD_TRACE;
6946 0           $lastsep = "";
6947 0           $expectation->is(q{})->at($text);
6948            
6949              
6950 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:-?\d+\.\d+\b)/)
  0 0          
6951             {
6952            
6953 0           $expectation->failed();
6954 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
6955             Parse::RecDescent::_tracefirst($text))
6956             if defined $::RD_TRACE;
6957              
6958 0           last;
6959             }
6960 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
6961 0           substr($text,0,length($current_match),q{});
6962 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6963             . $current_match . q{])},
6964             Parse::RecDescent::_tracefirst($text))
6965             if defined $::RD_TRACE;
6966 0           push @item, $item{__PATTERN1__}=$current_match;
6967            
6968              
6969              
6970 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/-?\\d+\\.\\d+\\b/]<<},
6971             Parse::RecDescent::_tracefirst($text),
6972             q{real},
6973             $tracelevel)
6974             if defined $::RD_TRACE;
6975 0           $_matched = 1;
6976 0           last;
6977             }
6978              
6979              
6980 0 0 0       unless ( $_matched || defined($score) )
6981             {
6982            
6983              
6984 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
6985 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
6986             Parse::RecDescent::_tracefirst($_[1]),
6987             q{real},
6988             $tracelevel)
6989             if defined $::RD_TRACE;
6990 0           return undef;
6991             }
6992 0 0 0       if (!defined($return) && defined($score))
6993             {
6994 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6995             q{real},
6996             $tracelevel)
6997             if defined $::RD_TRACE;
6998 0           $return = $score_return;
6999             }
7000 0           splice @{$thisparser->{errors}}, $err_at;
  0            
7001 0 0         $return = $item[$#item] unless defined $return;
7002 0 0         if (defined $::RD_TRACE)
7003             {
7004 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7005             $return . q{])}, "",
7006             q{real},
7007             $tracelevel);
7008 0           Parse::RecDescent::_trace(q{(consumed: [} .
7009             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7010             Parse::RecDescent::_tracefirst($text),
7011             , q{real},
7012             $tracelevel)
7013             }
7014 0           $_[1] = $text;
7015 0           return $return;
7016             }
7017              
7018             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7019             sub Parse::RecDescent::Cheater::Parser::spec
7020             {
7021 0     0     my $thisparser = $_[0];
7022 11     11   72 use vars q{$tracelevel};
  11         23  
  11         6322  
7023 0   0       local $tracelevel = ($tracelevel||0)+1;
7024 0           $ERRORS = 0;
7025 0           my $thisrule = $thisparser->{"rules"}{"spec"};
7026            
7027 0 0         Parse::RecDescent::_trace(q{Trying rule: [spec]},
7028             Parse::RecDescent::_tracefirst($_[1]),
7029             q{spec},
7030             $tracelevel)
7031             if defined $::RD_TRACE;
7032              
7033            
7034 0           my $err_at = @{$thisparser->{errors}};
  0            
7035              
7036 0           my $score;
7037             my $score_return;
7038 0           my $_tok;
7039 0           my $return = undef;
7040 0           my $_matched=0;
7041 0           my $commit=0;
7042 0           my @item = ();
7043 0           my %item = ();
7044 0   0       my $repeating = defined($_[2]) && $_[2];
7045 0   0       my $_noactions = defined($_[3]) && $_[3];
7046 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
7047 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7048 0           my $text;
7049 0           my $lastsep="";
7050 0           my $current_match;
7051 0           my $expectation = new Parse::RecDescent::Expectation(q{statement});
7052 0           $expectation->at($_[1]);
7053            
7054 0           my $prevline;
7055 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
7056            
7057 0           my $thisline;
7058 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7059              
7060            
7061              
7062 0   0       while (!$_matched && !$commit)
7063             {
7064            
7065 0 0         Parse::RecDescent::_trace(q{Trying production: [statement eof]},
7066             Parse::RecDescent::_tracefirst($_[1]),
7067             q{spec},
7068             $tracelevel)
7069             if defined $::RD_TRACE;
7070 0           my $thisprod = $thisrule->{"prods"}[0];
7071 0           $text = $_[1];
7072 0           my $_savetext;
7073 0           @item = (q{spec});
7074 0           %item = (__RULE__ => q{spec});
7075 0           my $repcount = 0;
7076              
7077              
7078 0 0         Parse::RecDescent::_trace(q{Trying repeated subrule: [statement]},
7079             Parse::RecDescent::_tracefirst($text),
7080             q{spec},
7081             $tracelevel)
7082             if defined $::RD_TRACE;
7083 0           $expectation->is(q{})->at($text);
7084            
7085 0 0   0     unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Cheater::Parser::statement, 1, 100000000, $_noactions,$expectation,sub { \@arg })))
  0            
7086             {
7087 0 0         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [statement]>>},
7088             Parse::RecDescent::_tracefirst($text),
7089             q{spec},
7090             $tracelevel)
7091             if defined $::RD_TRACE;
7092 0           last;
7093             }
7094 0 0         Parse::RecDescent::_trace(q{>>Matched repeated subrule: [statement]<< (}
7095             . @$_tok . q{ times)},
7096            
7097             Parse::RecDescent::_tracefirst($text),
7098             q{spec},
7099             $tracelevel)
7100             if defined $::RD_TRACE;
7101 0           $item{q{statement(s)}} = $_tok;
7102 0           push @item, $_tok;
7103            
7104              
7105              
7106 0 0         Parse::RecDescent::_trace(q{Trying subrule: [eof]},
7107             Parse::RecDescent::_tracefirst($text),
7108             q{spec},
7109             $tracelevel)
7110             if defined $::RD_TRACE;
7111 11     11   74 if (1) { no strict qw{refs};
  11         29  
  11         7401  
  0            
7112 0           $expectation->is(q{eof})->at($text);
7113 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::eof($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
7114             {
7115            
7116 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [eof]>>},
7117             Parse::RecDescent::_tracefirst($text),
7118             q{spec},
7119             $tracelevel)
7120             if defined $::RD_TRACE;
7121 0           $expectation->failed();
7122 0           last;
7123             }
7124 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [eof]<< (return value: [}
7125             . $_tok . q{]},
7126            
7127             Parse::RecDescent::_tracefirst($text),
7128             q{spec},
7129             $tracelevel)
7130             if defined $::RD_TRACE;
7131 0           $item{q{eof}} = $_tok;
7132 0           push @item, $_tok;
7133            
7134             }
7135              
7136 0 0         Parse::RecDescent::_trace(q{Trying action},
7137             Parse::RecDescent::_tracefirst($text),
7138             q{spec},
7139             $tracelevel)
7140             if defined $::RD_TRACE;
7141            
7142              
7143 0 0         $_tok = ($_noactions) ? 0 : do { $item[1] };
  0            
7144 0 0         unless (defined $_tok)
7145             {
7146 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
7147             if defined $::RD_TRACE;
7148 0           last;
7149             }
7150 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7151             . $_tok . q{])},
7152             Parse::RecDescent::_tracefirst($text))
7153             if defined $::RD_TRACE;
7154 0           push @item, $_tok;
7155 0           $item{__ACTION1__}=$_tok;
7156            
7157              
7158              
7159 0 0         Parse::RecDescent::_trace(q{>>Matched production: [statement eof]<<},
7160             Parse::RecDescent::_tracefirst($text),
7161             q{spec},
7162             $tracelevel)
7163             if defined $::RD_TRACE;
7164 0           $_matched = 1;
7165 0           last;
7166             }
7167              
7168              
7169 0 0 0       unless ( $_matched || defined($score) )
7170             {
7171            
7172              
7173 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
7174 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
7175             Parse::RecDescent::_tracefirst($_[1]),
7176             q{spec},
7177             $tracelevel)
7178             if defined $::RD_TRACE;
7179 0           return undef;
7180             }
7181 0 0 0       if (!defined($return) && defined($score))
7182             {
7183 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7184             q{spec},
7185             $tracelevel)
7186             if defined $::RD_TRACE;
7187 0           $return = $score_return;
7188             }
7189 0           splice @{$thisparser->{errors}}, $err_at;
  0            
7190 0 0         $return = $item[$#item] unless defined $return;
7191 0 0         if (defined $::RD_TRACE)
7192             {
7193 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7194             $return . q{])}, "",
7195             q{spec},
7196             $tracelevel);
7197 0           Parse::RecDescent::_trace(q{(consumed: [} .
7198             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7199             Parse::RecDescent::_tracefirst($text),
7200             , q{spec},
7201             $tracelevel)
7202             }
7203 0           $_[1] = $text;
7204 0           return $return;
7205             }
7206              
7207             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7208             sub Parse::RecDescent::Cheater::Parser::table_assignment
7209             {
7210 0     0     my $thisparser = $_[0];
7211 11     11   74 use vars q{$tracelevel};
  11         24  
  11         4585  
7212 0   0       local $tracelevel = ($tracelevel||0)+1;
7213 0           $ERRORS = 0;
7214 0           my $thisrule = $thisparser->{"rules"}{"table_assignment"};
7215            
7216 0 0         Parse::RecDescent::_trace(q{Trying rule: [table_assignment]},
7217             Parse::RecDescent::_tracefirst($_[1]),
7218             q{table_assignment},
7219             $tracelevel)
7220             if defined $::RD_TRACE;
7221              
7222            
7223 0           my $err_at = @{$thisparser->{errors}};
  0            
7224              
7225 0           my $score;
7226             my $score_return;
7227 0           my $_tok;
7228 0           my $return = undef;
7229 0           my $_matched=0;
7230 0           my $commit=0;
7231 0           my @item = ();
7232 0           my %item = ();
7233 0   0       my $repeating = defined($_[2]) && $_[2];
7234 0   0       my $_noactions = defined($_[3]) && $_[3];
7235 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
7236 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7237 0           my $text;
7238 0           my $lastsep="";
7239 0           my $current_match;
7240 0           my $expectation = new Parse::RecDescent::Expectation(q{table_name});
7241 0           $expectation->at($_[1]);
7242            
7243 0           my $prevline;
7244 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
7245            
7246 0           my $thisline;
7247 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7248              
7249            
7250              
7251 0   0       while (!$_matched && !$commit)
7252             {
7253            
7254 0 0         Parse::RecDescent::_trace(q{Trying production: [table_name '=' <commit> table_name]},
7255             Parse::RecDescent::_tracefirst($_[1]),
7256             q{table_assignment},
7257             $tracelevel)
7258             if defined $::RD_TRACE;
7259 0           my $thisprod = $thisrule->{"prods"}[0];
7260 0           $text = $_[1];
7261 0           my $_savetext;
7262 0           @item = (q{table_assignment});
7263 0           %item = (__RULE__ => q{table_assignment});
7264 0           my $repcount = 0;
7265              
7266              
7267 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
7268             Parse::RecDescent::_tracefirst($text),
7269             q{table_assignment},
7270             $tracelevel)
7271             if defined $::RD_TRACE;
7272 11     11   70 if (1) { no strict qw{refs};
  11         31  
  11         6152  
  0            
7273 0           $expectation->is(q{})->at($text);
7274 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
7275             {
7276            
7277 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
7278             Parse::RecDescent::_tracefirst($text),
7279             q{table_assignment},
7280             $tracelevel)
7281             if defined $::RD_TRACE;
7282 0           $expectation->failed();
7283 0           last;
7284             }
7285 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
7286             . $_tok . q{]},
7287            
7288             Parse::RecDescent::_tracefirst($text),
7289             q{table_assignment},
7290             $tracelevel)
7291             if defined $::RD_TRACE;
7292 0           $item{q{table_name}} = $_tok;
7293 0           push @item, $_tok;
7294            
7295             }
7296              
7297 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['=']},
7298             Parse::RecDescent::_tracefirst($text),
7299             q{table_assignment},
7300             $tracelevel)
7301             if defined $::RD_TRACE;
7302 0           $lastsep = "";
7303 0           $expectation->is(q{'='})->at($text);
7304            
7305              
7306 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\=/)
  0 0          
7307             {
7308            
7309 0           $expectation->failed();
7310 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
7311             Parse::RecDescent::_tracefirst($text))
7312             if defined $::RD_TRACE;
7313 0           last;
7314             }
7315 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
7316 0           substr($text,0,length($current_match),q{});
7317 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7318             . $current_match . q{])},
7319             Parse::RecDescent::_tracefirst($text))
7320             if defined $::RD_TRACE;
7321 0           push @item, $item{__STRING1__}=$current_match;
7322            
7323              
7324            
7325              
7326 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
7327             Parse::RecDescent::_tracefirst($text),
7328             q{table_assignment},
7329             $tracelevel)
7330             if defined $::RD_TRACE;
7331 0           $_tok = do { $commit = 1 };
  0            
7332 0 0         if (defined($_tok))
7333             {
7334 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
7335             . $_tok . q{])},
7336             Parse::RecDescent::_tracefirst($text))
7337             if defined $::RD_TRACE;
7338             }
7339             else
7340             {
7341 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
7342             Parse::RecDescent::_tracefirst($text))
7343             if defined $::RD_TRACE;
7344             }
7345            
7346 0 0         last unless defined $_tok;
7347 0           push @item, $item{__DIRECTIVE1__}=$_tok;
7348            
7349              
7350 0 0         Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
7351             Parse::RecDescent::_tracefirst($text),
7352             q{table_assignment},
7353             $tracelevel)
7354             if defined $::RD_TRACE;
7355 11     11   76 if (1) { no strict qw{refs};
  11         37  
  11         13011  
  0            
7356 0           $expectation->is(q{table_name})->at($text);
7357 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
7358             {
7359            
7360 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
7361             Parse::RecDescent::_tracefirst($text),
7362             q{table_assignment},
7363             $tracelevel)
7364             if defined $::RD_TRACE;
7365 0           $expectation->failed();
7366 0           last;
7367             }
7368 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
7369             . $_tok . q{]},
7370            
7371             Parse::RecDescent::_tracefirst($text),
7372             q{table_assignment},
7373             $tracelevel)
7374             if defined $::RD_TRACE;
7375 0           $item{q{table_name}} = $_tok;
7376 0           push @item, $_tok;
7377            
7378             }
7379              
7380 0 0         Parse::RecDescent::_trace(q{Trying action},
7381             Parse::RecDescent::_tracefirst($text),
7382             q{table_assignment},
7383             $tracelevel)
7384             if defined $::RD_TRACE;
7385            
7386              
7387 0 0         $_tok = ($_noactions) ? 0 : do { [ 'table_assign', $item[1], $item[4] ] };
  0            
7388 0 0         unless (defined $_tok)
7389             {
7390 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
7391             if defined $::RD_TRACE;
7392 0           last;
7393             }
7394 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7395             . $_tok . q{])},
7396             Parse::RecDescent::_tracefirst($text))
7397             if defined $::RD_TRACE;
7398 0           push @item, $_tok;
7399 0           $item{__ACTION1__}=$_tok;
7400            
7401              
7402              
7403 0 0         Parse::RecDescent::_trace(q{>>Matched production: [table_name '=' <commit> table_name]<<},
7404             Parse::RecDescent::_tracefirst($text),
7405             q{table_assignment},
7406             $tracelevel)
7407             if defined $::RD_TRACE;
7408 0           $_matched = 1;
7409 0           last;
7410             }
7411              
7412              
7413 0           while (!$_matched)
7414             {
7415            
7416 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
7417             Parse::RecDescent::_tracefirst($_[1]),
7418             q{table_assignment},
7419             $tracelevel)
7420             if defined $::RD_TRACE;
7421 0           my $thisprod = $thisrule->{"prods"}[1];
7422            
7423 0           my $_savetext;
7424 0           @item = (q{table_assignment});
7425 0           %item = (__RULE__ => q{table_assignment});
7426 0           my $repcount = 0;
7427              
7428              
7429            
7430              
7431 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
7432             Parse::RecDescent::_tracefirst($text),
7433             q{table_assignment},
7434             $tracelevel)
7435             if defined $::RD_TRACE;
7436 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
7437 0           my $rule = $item[0];
7438 0           $rule =~ s/_/ /g;
7439             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
7440 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
7441 0           } unless $_noactions; undef } else {0} };
7442 0 0         if (defined($_tok))
7443             {
7444 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
7445             . $_tok . q{])},
7446             Parse::RecDescent::_tracefirst($text))
7447             if defined $::RD_TRACE;
7448             }
7449             else
7450             {
7451 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
7452             Parse::RecDescent::_tracefirst($text))
7453             if defined $::RD_TRACE;
7454             }
7455            
7456 0 0         last unless defined $_tok;
7457 0           push @item, $item{__DIRECTIVE1__}=$_tok;
7458            
7459              
7460 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
7461             Parse::RecDescent::_tracefirst($text),
7462             q{table_assignment},
7463             $tracelevel)
7464             if defined $::RD_TRACE;
7465 0           undef $return;
7466            
7467              
7468 0           $_tok = undef;
7469            
7470 0 0         last unless defined $_tok;
7471              
7472              
7473 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
7474             Parse::RecDescent::_tracefirst($text),
7475             q{table_assignment},
7476             $tracelevel)
7477             if defined $::RD_TRACE;
7478 0           $_matched = 1;
7479 0           last;
7480             }
7481              
7482              
7483 0 0 0       unless ( $_matched || defined($score) )
7484             {
7485            
7486              
7487 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
7488 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
7489             Parse::RecDescent::_tracefirst($_[1]),
7490             q{table_assignment},
7491             $tracelevel)
7492             if defined $::RD_TRACE;
7493 0           return undef;
7494             }
7495 0 0 0       if (!defined($return) && defined($score))
7496             {
7497 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7498             q{table_assignment},
7499             $tracelevel)
7500             if defined $::RD_TRACE;
7501 0           $return = $score_return;
7502             }
7503 0           splice @{$thisparser->{errors}}, $err_at;
  0            
7504 0 0         $return = $item[$#item] unless defined $return;
7505 0 0         if (defined $::RD_TRACE)
7506             {
7507 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7508             $return . q{])}, "",
7509             q{table_assignment},
7510             $tracelevel);
7511 0           Parse::RecDescent::_trace(q{(consumed: [} .
7512             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7513             Parse::RecDescent::_tracefirst($text),
7514             , q{table_assignment},
7515             $tracelevel)
7516             }
7517 0           $_[1] = $text;
7518 0           return $return;
7519             }
7520              
7521             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7522             sub Parse::RecDescent::Cheater::Parser::include_statement
7523             {
7524 0     0     my $thisparser = $_[0];
7525 11     11   84 use vars q{$tracelevel};
  11         25  
  11         8476  
7526 0   0       local $tracelevel = ($tracelevel||0)+1;
7527 0           $ERRORS = 0;
7528 0           my $thisrule = $thisparser->{"rules"}{"include_statement"};
7529            
7530 0 0         Parse::RecDescent::_trace(q{Trying rule: [include_statement]},
7531             Parse::RecDescent::_tracefirst($_[1]),
7532             q{include_statement},
7533             $tracelevel)
7534             if defined $::RD_TRACE;
7535              
7536            
7537 0           my $err_at = @{$thisparser->{errors}};
  0            
7538              
7539 0           my $score;
7540             my $score_return;
7541 0           my $_tok;
7542 0           my $return = undef;
7543 0           my $_matched=0;
7544 0           my $commit=0;
7545 0           my @item = ();
7546 0           my %item = ();
7547 0   0       my $repeating = defined($_[2]) && $_[2];
7548 0   0       my $_noactions = defined($_[3]) && $_[3];
7549 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
7550 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7551 0           my $text;
7552 0           my $lastsep="";
7553 0           my $current_match;
7554 0           my $expectation = new Parse::RecDescent::Expectation(q{'include'});
7555 0           $expectation->at($_[1]);
7556            
7557 0           my $prevline;
7558 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
7559            
7560 0           my $thisline;
7561 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7562              
7563            
7564              
7565 0   0       while (!$_matched && !$commit)
7566             {
7567            
7568 0 0         Parse::RecDescent::_trace(q{Trying production: ['include' <commit> file_name]},
7569             Parse::RecDescent::_tracefirst($_[1]),
7570             q{include_statement},
7571             $tracelevel)
7572             if defined $::RD_TRACE;
7573 0           my $thisprod = $thisrule->{"prods"}[0];
7574 0           $text = $_[1];
7575 0           my $_savetext;
7576 0           @item = (q{include_statement});
7577 0           %item = (__RULE__ => q{include_statement});
7578 0           my $repcount = 0;
7579              
7580              
7581 0 0         Parse::RecDescent::_trace(q{Trying terminal: ['include']},
7582             Parse::RecDescent::_tracefirst($text),
7583             q{include_statement},
7584             $tracelevel)
7585             if defined $::RD_TRACE;
7586 0           $lastsep = "";
7587 0           $expectation->is(q{})->at($text);
7588            
7589              
7590 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\Ainclude/)
  0 0          
7591             {
7592            
7593 0           $expectation->failed();
7594 0 0         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
7595             Parse::RecDescent::_tracefirst($text))
7596             if defined $::RD_TRACE;
7597 0           last;
7598             }
7599 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
7600 0           substr($text,0,length($current_match),q{});
7601 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7602             . $current_match . q{])},
7603             Parse::RecDescent::_tracefirst($text))
7604             if defined $::RD_TRACE;
7605 0           push @item, $item{__STRING1__}=$current_match;
7606            
7607              
7608            
7609              
7610 0 0         Parse::RecDescent::_trace(q{Trying directive: [<commit>]},
7611             Parse::RecDescent::_tracefirst($text),
7612             q{include_statement},
7613             $tracelevel)
7614             if defined $::RD_TRACE;
7615 0           $_tok = do { $commit = 1 };
  0            
7616 0 0         if (defined($_tok))
7617             {
7618 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
7619             . $_tok . q{])},
7620             Parse::RecDescent::_tracefirst($text))
7621             if defined $::RD_TRACE;
7622             }
7623             else
7624             {
7625 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
7626             Parse::RecDescent::_tracefirst($text))
7627             if defined $::RD_TRACE;
7628             }
7629            
7630 0 0         last unless defined $_tok;
7631 0           push @item, $item{__DIRECTIVE1__}=$_tok;
7632            
7633              
7634 0 0         Parse::RecDescent::_trace(q{Trying subrule: [file_name]},
7635             Parse::RecDescent::_tracefirst($text),
7636             q{include_statement},
7637             $tracelevel)
7638             if defined $::RD_TRACE;
7639 11     11   75 if (1) { no strict qw{refs};
  11         28  
  11         12609  
  0            
7640 0           $expectation->is(q{file_name})->at($text);
7641 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::file_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
7642             {
7643            
7644 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [file_name]>>},
7645             Parse::RecDescent::_tracefirst($text),
7646             q{include_statement},
7647             $tracelevel)
7648             if defined $::RD_TRACE;
7649 0           $expectation->failed();
7650 0           last;
7651             }
7652 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [file_name]<< (return value: [}
7653             . $_tok . q{]},
7654            
7655             Parse::RecDescent::_tracefirst($text),
7656             q{include_statement},
7657             $tracelevel)
7658             if defined $::RD_TRACE;
7659 0           $item{q{file_name}} = $_tok;
7660 0           push @item, $_tok;
7661            
7662             }
7663              
7664 0 0         Parse::RecDescent::_trace(q{Trying action},
7665             Parse::RecDescent::_tracefirst($text),
7666             q{include_statement},
7667             $tracelevel)
7668             if defined $::RD_TRACE;
7669            
7670              
7671 0 0         $_tok = ($_noactions) ? 0 : do { ['include', parse_included_file($item[3], $thisline)] };
  0            
7672 0 0         unless (defined $_tok)
7673             {
7674 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
7675             if defined $::RD_TRACE;
7676 0           last;
7677             }
7678 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7679             . $_tok . q{])},
7680             Parse::RecDescent::_tracefirst($text))
7681             if defined $::RD_TRACE;
7682 0           push @item, $_tok;
7683 0           $item{__ACTION1__}=$_tok;
7684            
7685              
7686              
7687 0 0         Parse::RecDescent::_trace(q{>>Matched production: ['include' <commit> file_name]<<},
7688             Parse::RecDescent::_tracefirst($text),
7689             q{include_statement},
7690             $tracelevel)
7691             if defined $::RD_TRACE;
7692 0           $_matched = 1;
7693 0           last;
7694             }
7695              
7696              
7697 0           while (!$_matched)
7698             {
7699            
7700 0 0         Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
7701             Parse::RecDescent::_tracefirst($_[1]),
7702             q{include_statement},
7703             $tracelevel)
7704             if defined $::RD_TRACE;
7705 0           my $thisprod = $thisrule->{"prods"}[1];
7706            
7707 0           my $_savetext;
7708 0           @item = (q{include_statement});
7709 0           %item = (__RULE__ => q{include_statement});
7710 0           my $repcount = 0;
7711              
7712              
7713            
7714              
7715 0 0         Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
7716             Parse::RecDescent::_tracefirst($text),
7717             q{include_statement},
7718             $tracelevel)
7719             if defined $::RD_TRACE;
7720 0 0         $_tok = do { if ($commit) { do {
  0 0          
  0            
  0            
7721 0           my $rule = $item[0];
7722 0           $rule =~ s/_/ /g;
7723             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
7724 0           push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0            
7725 0           } unless $_noactions; undef } else {0} };
7726 0 0         if (defined($_tok))
7727             {
7728 0 0         Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
7729             . $_tok . q{])},
7730             Parse::RecDescent::_tracefirst($text))
7731             if defined $::RD_TRACE;
7732             }
7733             else
7734             {
7735 0 0         Parse::RecDescent::_trace(q{<<Didn't match directive>>},
7736             Parse::RecDescent::_tracefirst($text))
7737             if defined $::RD_TRACE;
7738             }
7739            
7740 0 0         last unless defined $_tok;
7741 0           push @item, $item{__DIRECTIVE1__}=$_tok;
7742            
7743              
7744 0 0         Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
7745             Parse::RecDescent::_tracefirst($text),
7746             q{include_statement},
7747             $tracelevel)
7748             if defined $::RD_TRACE;
7749 0           undef $return;
7750            
7751              
7752 0           $_tok = undef;
7753            
7754 0 0         last unless defined $_tok;
7755              
7756              
7757 0 0         Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
7758             Parse::RecDescent::_tracefirst($text),
7759             q{include_statement},
7760             $tracelevel)
7761             if defined $::RD_TRACE;
7762 0           $_matched = 1;
7763 0           last;
7764             }
7765              
7766              
7767 0 0 0       unless ( $_matched || defined($score) )
7768             {
7769            
7770              
7771 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
7772 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
7773             Parse::RecDescent::_tracefirst($_[1]),
7774             q{include_statement},
7775             $tracelevel)
7776             if defined $::RD_TRACE;
7777 0           return undef;
7778             }
7779 0 0 0       if (!defined($return) && defined($score))
7780             {
7781 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7782             q{include_statement},
7783             $tracelevel)
7784             if defined $::RD_TRACE;
7785 0           $return = $score_return;
7786             }
7787 0           splice @{$thisparser->{errors}}, $err_at;
  0            
7788 0 0         $return = $item[$#item] unless defined $return;
7789 0 0         if (defined $::RD_TRACE)
7790             {
7791 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7792             $return . q{])}, "",
7793             q{include_statement},
7794             $tracelevel);
7795 0           Parse::RecDescent::_trace(q{(consumed: [} .
7796             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7797             Parse::RecDescent::_tracefirst($text),
7798             , q{include_statement},
7799             $tracelevel)
7800             }
7801 0           $_[1] = $text;
7802 0           return $return;
7803             }
7804              
7805             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7806             sub Parse::RecDescent::Cheater::Parser::regex
7807             {
7808 0     0     my $thisparser = $_[0];
7809 11     11   74 use vars q{$tracelevel};
  11         25  
  11         12773  
7810 0   0       local $tracelevel = ($tracelevel||0)+1;
7811 0           $ERRORS = 0;
7812 0           my $thisrule = $thisparser->{"rules"}{"regex"};
7813            
7814 0 0         Parse::RecDescent::_trace(q{Trying rule: [regex]},
7815             Parse::RecDescent::_tracefirst($_[1]),
7816             q{regex},
7817             $tracelevel)
7818             if defined $::RD_TRACE;
7819              
7820            
7821 0           my $err_at = @{$thisparser->{errors}};
  0            
7822              
7823 0           my $score;
7824             my $score_return;
7825 0           my $_tok;
7826 0           my $return = undef;
7827 0           my $_matched=0;
7828 0           my $commit=0;
7829 0           my @item = ();
7830 0           my %item = ();
7831 0   0       my $repeating = defined($_[2]) && $_[2];
7832 0   0       my $_noactions = defined($_[3]) && $_[3];
7833 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
7834 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7835 0           my $text;
7836 0           my $lastsep="";
7837 0           my $current_match;
7838 0           my $expectation = new Parse::RecDescent::Expectation(q{/\\/(?:[^\\\\\\/]|\\\\.)*\\//});
7839 0           $expectation->at($_[1]);
7840            
7841 0           my $prevline;
7842 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
7843            
7844 0           my $thisline;
7845 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7846              
7847            
7848              
7849 0   0       while (!$_matched && !$commit)
7850             {
7851            
7852 0 0         Parse::RecDescent::_trace(q{Trying production: [/\\/(?:[^\\\\\\/]|\\\\.)*\\//]},
7853             Parse::RecDescent::_tracefirst($_[1]),
7854             q{regex},
7855             $tracelevel)
7856             if defined $::RD_TRACE;
7857 0           my $thisprod = $thisrule->{"prods"}[0];
7858 0           $text = $_[1];
7859 0           my $_savetext;
7860 0           @item = (q{regex});
7861 0           %item = (__RULE__ => q{regex});
7862 0           my $repcount = 0;
7863              
7864              
7865 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/\\/(?:[^\\\\\\/]|\\\\.)*\\//]}, Parse::RecDescent::_tracefirst($text),
7866             q{regex},
7867             $tracelevel)
7868             if defined $::RD_TRACE;
7869 0           $lastsep = "";
7870 0           $expectation->is(q{})->at($text);
7871            
7872              
7873 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\/(?:[^\\\/]|\\.)*\/)/)
  0 0          
7874             {
7875            
7876 0           $expectation->failed();
7877 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
7878             Parse::RecDescent::_tracefirst($text))
7879             if defined $::RD_TRACE;
7880              
7881 0           last;
7882             }
7883 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
7884 0           substr($text,0,length($current_match),q{});
7885 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7886             . $current_match . q{])},
7887             Parse::RecDescent::_tracefirst($text))
7888             if defined $::RD_TRACE;
7889 0           push @item, $item{__PATTERN1__}=$current_match;
7890            
7891              
7892 0 0         Parse::RecDescent::_trace(q{Trying action},
7893             Parse::RecDescent::_tracefirst($text),
7894             q{regex},
7895             $tracelevel)
7896             if defined $::RD_TRACE;
7897            
7898              
7899 0 0         $_tok = ($_noactions) ? 0 : do { my $regex = 'qr' . $item[1];
  0            
7900 0           my $re = eval $regex;
7901 0 0         if ($@) {
7902 0           die "Bad regex on line $prevline: $regex: $@";
7903             }
7904             $re
7905 0           };
7906 0 0         unless (defined $_tok)
7907             {
7908 0 0         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
7909             if defined $::RD_TRACE;
7910 0           last;
7911             }
7912 0 0         Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7913             . $_tok . q{])},
7914             Parse::RecDescent::_tracefirst($text))
7915             if defined $::RD_TRACE;
7916 0           push @item, $_tok;
7917 0           $item{__ACTION1__}=$_tok;
7918            
7919              
7920              
7921 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/\\/(?:[^\\\\\\/]|\\\\.)*\\//]<<},
7922             Parse::RecDescent::_tracefirst($text),
7923             q{regex},
7924             $tracelevel)
7925             if defined $::RD_TRACE;
7926 0           $_matched = 1;
7927 0           last;
7928             }
7929              
7930              
7931 0 0 0       unless ( $_matched || defined($score) )
7932             {
7933            
7934              
7935 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
7936 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
7937             Parse::RecDescent::_tracefirst($_[1]),
7938             q{regex},
7939             $tracelevel)
7940             if defined $::RD_TRACE;
7941 0           return undef;
7942             }
7943 0 0 0       if (!defined($return) && defined($score))
7944             {
7945 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7946             q{regex},
7947             $tracelevel)
7948             if defined $::RD_TRACE;
7949 0           $return = $score_return;
7950             }
7951 0           splice @{$thisparser->{errors}}, $err_at;
  0            
7952 0 0         $return = $item[$#item] unless defined $return;
7953 0 0         if (defined $::RD_TRACE)
7954             {
7955 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7956             $return . q{])}, "",
7957             q{regex},
7958             $tracelevel);
7959 0           Parse::RecDescent::_trace(q{(consumed: [} .
7960             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7961             Parse::RecDescent::_tracefirst($text),
7962             , q{regex},
7963             $tracelevel)
7964             }
7965 0           $_[1] = $text;
7966 0           return $return;
7967             }
7968              
7969             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7970             sub Parse::RecDescent::Cheater::Parser::eof
7971             {
7972 0     0     my $thisparser = $_[0];
7973 11     11   110 use vars q{$tracelevel};
  11         28  
  11         9959  
7974 0   0       local $tracelevel = ($tracelevel||0)+1;
7975 0           $ERRORS = 0;
7976 0           my $thisrule = $thisparser->{"rules"}{"eof"};
7977            
7978 0 0         Parse::RecDescent::_trace(q{Trying rule: [eof]},
7979             Parse::RecDescent::_tracefirst($_[1]),
7980             q{eof},
7981             $tracelevel)
7982             if defined $::RD_TRACE;
7983              
7984            
7985 0           my $err_at = @{$thisparser->{errors}};
  0            
7986              
7987 0           my $score;
7988             my $score_return;
7989 0           my $_tok;
7990 0           my $return = undef;
7991 0           my $_matched=0;
7992 0           my $commit=0;
7993 0           my @item = ();
7994 0           my %item = ();
7995 0   0       my $repeating = defined($_[2]) && $_[2];
7996 0   0       my $_noactions = defined($_[3]) && $_[3];
7997 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
7998 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7999 0           my $text;
8000 0           my $lastsep="";
8001 0           my $current_match;
8002 0           my $expectation = new Parse::RecDescent::Expectation(q{/^\\Z/});
8003 0           $expectation->at($_[1]);
8004            
8005 0           my $prevline;
8006 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
8007            
8008 0           my $thisline;
8009 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8010              
8011            
8012              
8013 0   0       while (!$_matched && !$commit)
8014             {
8015            
8016 0 0         Parse::RecDescent::_trace(q{Trying production: [/^\\Z/]},
8017             Parse::RecDescent::_tracefirst($_[1]),
8018             q{eof},
8019             $tracelevel)
8020             if defined $::RD_TRACE;
8021 0           my $thisprod = $thisrule->{"prods"}[0];
8022 0           $text = $_[1];
8023 0           my $_savetext;
8024 0           @item = (q{eof});
8025 0           %item = (__RULE__ => q{eof});
8026 0           my $repcount = 0;
8027              
8028              
8029 0 0         Parse::RecDescent::_trace(q{Trying terminal: [/^\\Z/]}, Parse::RecDescent::_tracefirst($text),
8030             q{eof},
8031             $tracelevel)
8032             if defined $::RD_TRACE;
8033 0           $lastsep = "";
8034 0           $expectation->is(q{})->at($text);
8035            
8036              
8037 0 0 0       unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^\Z)/)
  0 0          
8038             {
8039            
8040 0           $expectation->failed();
8041 0 0         Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
8042             Parse::RecDescent::_tracefirst($text))
8043             if defined $::RD_TRACE;
8044              
8045 0           last;
8046             }
8047 0           $current_match = substr($text, $-[0], $+[0] - $-[0]);
8048 0           substr($text,0,length($current_match),q{});
8049 0 0         Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8050             . $current_match . q{])},
8051             Parse::RecDescent::_tracefirst($text))
8052             if defined $::RD_TRACE;
8053 0           push @item, $item{__PATTERN1__}=$current_match;
8054            
8055              
8056              
8057 0 0         Parse::RecDescent::_trace(q{>>Matched production: [/^\\Z/]<<},
8058             Parse::RecDescent::_tracefirst($text),
8059             q{eof},
8060             $tracelevel)
8061             if defined $::RD_TRACE;
8062 0           $_matched = 1;
8063 0           last;
8064             }
8065              
8066              
8067 0 0 0       unless ( $_matched || defined($score) )
8068             {
8069            
8070              
8071 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
8072 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
8073             Parse::RecDescent::_tracefirst($_[1]),
8074             q{eof},
8075             $tracelevel)
8076             if defined $::RD_TRACE;
8077 0           return undef;
8078             }
8079 0 0 0       if (!defined($return) && defined($score))
8080             {
8081 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8082             q{eof},
8083             $tracelevel)
8084             if defined $::RD_TRACE;
8085 0           $return = $score_return;
8086             }
8087 0           splice @{$thisparser->{errors}}, $err_at;
  0            
8088 0 0         $return = $item[$#item] unless defined $return;
8089 0 0         if (defined $::RD_TRACE)
8090             {
8091 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8092             $return . q{])}, "",
8093             q{eof},
8094             $tracelevel);
8095 0           Parse::RecDescent::_trace(q{(consumed: [} .
8096             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8097             Parse::RecDescent::_tracefirst($text),
8098             , q{eof},
8099             $tracelevel)
8100             }
8101 0           $_[1] = $text;
8102 0           return $return;
8103             }
8104              
8105             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8106             sub Parse::RecDescent::Cheater::Parser::table_name
8107             {
8108 0     0     my $thisparser = $_[0];
8109 11     11   71 use vars q{$tracelevel};
  11         29  
  11         4725  
8110 0   0       local $tracelevel = ($tracelevel||0)+1;
8111 0           $ERRORS = 0;
8112 0           my $thisrule = $thisparser->{"rules"}{"table_name"};
8113            
8114 0 0         Parse::RecDescent::_trace(q{Trying rule: [table_name]},
8115             Parse::RecDescent::_tracefirst($_[1]),
8116             q{table_name},
8117             $tracelevel)
8118             if defined $::RD_TRACE;
8119              
8120            
8121 0           my $err_at = @{$thisparser->{errors}};
  0            
8122              
8123 0           my $score;
8124             my $score_return;
8125 0           my $_tok;
8126 0           my $return = undef;
8127 0           my $_matched=0;
8128 0           my $commit=0;
8129 0           my @item = ();
8130 0           my %item = ();
8131 0   0       my $repeating = defined($_[2]) && $_[2];
8132 0   0       my $_noactions = defined($_[3]) && $_[3];
8133 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
8134 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8135 0           my $text;
8136 0           my $lastsep="";
8137 0           my $current_match;
8138 0           my $expectation = new Parse::RecDescent::Expectation(q{identifier});
8139 0           $expectation->at($_[1]);
8140            
8141 0           my $prevline;
8142 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
8143            
8144 0           my $thisline;
8145 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8146              
8147            
8148              
8149 0   0       while (!$_matched && !$commit)
8150             {
8151            
8152 0 0         Parse::RecDescent::_trace(q{Trying production: [identifier]},
8153             Parse::RecDescent::_tracefirst($_[1]),
8154             q{table_name},
8155             $tracelevel)
8156             if defined $::RD_TRACE;
8157 0           my $thisprod = $thisrule->{"prods"}[0];
8158 0           $text = $_[1];
8159 0           my $_savetext;
8160 0           @item = (q{table_name});
8161 0           %item = (__RULE__ => q{table_name});
8162 0           my $repcount = 0;
8163              
8164              
8165 0 0         Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
8166             Parse::RecDescent::_tracefirst($text),
8167             q{table_name},
8168             $tracelevel)
8169             if defined $::RD_TRACE;
8170 11     11   69 if (1) { no strict qw{refs};
  11         25  
  11         5687  
  0            
8171 0           $expectation->is(q{})->at($text);
8172 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
8173             {
8174            
8175 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
8176             Parse::RecDescent::_tracefirst($text),
8177             q{table_name},
8178             $tracelevel)
8179             if defined $::RD_TRACE;
8180 0           $expectation->failed();
8181 0           last;
8182             }
8183 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
8184             . $_tok . q{]},
8185            
8186             Parse::RecDescent::_tracefirst($text),
8187             q{table_name},
8188             $tracelevel)
8189             if defined $::RD_TRACE;
8190 0           $item{q{identifier}} = $_tok;
8191 0           push @item, $_tok;
8192            
8193             }
8194              
8195              
8196 0 0         Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
8197             Parse::RecDescent::_tracefirst($text),
8198             q{table_name},
8199             $tracelevel)
8200             if defined $::RD_TRACE;
8201 0           $_matched = 1;
8202 0           last;
8203             }
8204              
8205              
8206 0 0 0       unless ( $_matched || defined($score) )
8207             {
8208            
8209              
8210 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
8211 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
8212             Parse::RecDescent::_tracefirst($_[1]),
8213             q{table_name},
8214             $tracelevel)
8215             if defined $::RD_TRACE;
8216 0           return undef;
8217             }
8218 0 0 0       if (!defined($return) && defined($score))
8219             {
8220 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8221             q{table_name},
8222             $tracelevel)
8223             if defined $::RD_TRACE;
8224 0           $return = $score_return;
8225             }
8226 0           splice @{$thisparser->{errors}}, $err_at;
  0            
8227 0 0         $return = $item[$#item] unless defined $return;
8228 0 0         if (defined $::RD_TRACE)
8229             {
8230 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8231             $return . q{])}, "",
8232             q{table_name},
8233             $tracelevel);
8234 0           Parse::RecDescent::_trace(q{(consumed: [} .
8235             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8236             Parse::RecDescent::_tracefirst($text),
8237             , q{table_name},
8238             $tracelevel)
8239             }
8240 0           $_[1] = $text;
8241 0           return $return;
8242             }
8243              
8244             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8245             sub Parse::RecDescent::Cheater::Parser::type
8246             {
8247 0     0     my $thisparser = $_[0];
8248 11     11   71 use vars q{$tracelevel};
  11         23  
  11         5001  
8249 0   0       local $tracelevel = ($tracelevel||0)+1;
8250 0           $ERRORS = 0;
8251 0           my $thisrule = $thisparser->{"rules"}{"type"};
8252            
8253 0 0         Parse::RecDescent::_trace(q{Trying rule: [type]},
8254             Parse::RecDescent::_tracefirst($_[1]),
8255             q{type},
8256             $tracelevel)
8257             if defined $::RD_TRACE;
8258              
8259            
8260 0           my $err_at = @{$thisparser->{errors}};
  0            
8261              
8262 0           my $score;
8263             my $score_return;
8264 0           my $_tok;
8265 0           my $return = undef;
8266 0           my $_matched=0;
8267 0           my $commit=0;
8268 0           my @item = ();
8269 0           my %item = ();
8270 0   0       my $repeating = defined($_[2]) && $_[2];
8271 0   0       my $_noactions = defined($_[3]) && $_[3];
8272 0 0         my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0            
  0            
8273 0 0         my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8274 0           my $text;
8275 0           my $lastsep="";
8276 0           my $current_match;
8277 0           my $expectation = new Parse::RecDescent::Expectation(q{identifier});
8278 0           $expectation->at($_[1]);
8279            
8280 0           my $prevline;
8281 0           tie $prevline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser, 1;
8282            
8283 0           my $thisline;
8284 0           tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8285              
8286            
8287              
8288 0   0       while (!$_matched && !$commit)
8289             {
8290            
8291 0 0         Parse::RecDescent::_trace(q{Trying production: [identifier]},
8292             Parse::RecDescent::_tracefirst($_[1]),
8293             q{type},
8294             $tracelevel)
8295             if defined $::RD_TRACE;
8296 0           my $thisprod = $thisrule->{"prods"}[0];
8297 0           $text = $_[1];
8298 0           my $_savetext;
8299 0           @item = (q{type});
8300 0           %item = (__RULE__ => q{type});
8301 0           my $repcount = 0;
8302              
8303              
8304 0 0         Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
8305             Parse::RecDescent::_tracefirst($text),
8306             q{type},
8307             $tracelevel)
8308             if defined $::RD_TRACE;
8309 11     11   67 if (1) { no strict qw{refs};
  11         26  
  11         83890  
  0            
8310 0           $expectation->is(q{})->at($text);
8311 0 0   0     unless (defined ($_tok = Parse::RecDescent::Cheater::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0            
8312             {
8313            
8314 0 0         Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
8315             Parse::RecDescent::_tracefirst($text),
8316             q{type},
8317             $tracelevel)
8318             if defined $::RD_TRACE;
8319 0           $expectation->failed();
8320 0           last;
8321             }
8322 0 0         Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
8323             . $_tok . q{]},
8324            
8325             Parse::RecDescent::_tracefirst($text),
8326             q{type},
8327             $tracelevel)
8328             if defined $::RD_TRACE;
8329 0           $item{q{identifier}} = $_tok;
8330 0           push @item, $_tok;
8331            
8332             }
8333              
8334              
8335 0 0         Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
8336             Parse::RecDescent::_tracefirst($text),
8337             q{type},
8338             $tracelevel)
8339             if defined $::RD_TRACE;
8340 0           $_matched = 1;
8341 0           last;
8342             }
8343              
8344              
8345 0 0 0       unless ( $_matched || defined($score) )
8346             {
8347            
8348              
8349 0           $_[1] = $text; # NOT SURE THIS IS NEEDED
8350 0 0         Parse::RecDescent::_trace(q{<<Didn't match rule>>},
8351             Parse::RecDescent::_tracefirst($_[1]),
8352             q{type},
8353             $tracelevel)
8354             if defined $::RD_TRACE;
8355 0           return undef;
8356             }
8357 0 0 0       if (!defined($return) && defined($score))
8358             {
8359 0 0         Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8360             q{type},
8361             $tracelevel)
8362             if defined $::RD_TRACE;
8363 0           $return = $score_return;
8364             }
8365 0           splice @{$thisparser->{errors}}, $err_at;
  0            
8366 0 0         $return = $item[$#item] unless defined $return;
8367 0 0         if (defined $::RD_TRACE)
8368             {
8369 0           Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8370             $return . q{])}, "",
8371             q{type},
8372             $tracelevel);
8373 0           Parse::RecDescent::_trace(q{(consumed: [} .
8374             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8375             Parse::RecDescent::_tracefirst($text),
8376             , q{type},
8377             $tracelevel)
8378             }
8379 0           $_[1] = $text;
8380 0           return $return;
8381             }
8382             }
8383 0     0 0   package Cheater::Parser; sub new { my $self = bless( {
8384             '_precompiled' => 1,
8385             'localvars' => '',
8386             'startcode' => '',
8387             'namespace' => 'Parse::RecDescent::Cheater::Parser',
8388             'rules' => {
8389             'qualified_column' => bless( {
8390             'impcount' => 0,
8391             'calls' => [
8392             'table_name',
8393             'column_name'
8394             ],
8395             'changed' => 0,
8396             'opcount' => 0,
8397             'prods' => [
8398             bless( {
8399             'number' => 0,
8400             'strcount' => 1,
8401             'dircount' => 1,
8402             'uncommit' => undef,
8403             'error' => undef,
8404             'patcount' => 0,
8405             'actcount' => 1,
8406             'items' => [
8407             bless( {
8408             'subrule' => 'table_name',
8409             'matchrule' => 0,
8410             'implicit' => undef,
8411             'argcode' => undef,
8412             'lookahead' => 0,
8413             'line' => 70
8414             }, 'Parse::RecDescent::Subrule' ),
8415             bless( {
8416             'pattern' => '.',
8417             'hashname' => '__STRING1__',
8418             'description' => '\'.\'',
8419             'lookahead' => 0,
8420             'line' => 70
8421             }, 'Parse::RecDescent::Literal' ),
8422             bless( {
8423             'hashname' => '__DIRECTIVE1__',
8424             'name' => '<commit>',
8425             'lookahead' => 0,
8426             'line' => 70,
8427             'code' => '$commit = 1'
8428             }, 'Parse::RecDescent::Directive' ),
8429             bless( {
8430             'subrule' => 'column_name',
8431             'matchrule' => 0,
8432             'implicit' => undef,
8433             'argcode' => undef,
8434             'lookahead' => 0,
8435             'line' => 70
8436             }, 'Parse::RecDescent::Subrule' ),
8437             bless( {
8438             'hashname' => '__ACTION1__',
8439             'lookahead' => 0,
8440             'line' => 71,
8441             'code' => '{ [$item[1], $item[4]] }'
8442             }, 'Parse::RecDescent::Action' )
8443             ],
8444             'line' => undef
8445             }, 'Parse::RecDescent::Production' ),
8446             bless( {
8447             'number' => 1,
8448             'strcount' => 0,
8449             'dircount' => 2,
8450             'uncommit' => 0,
8451             'error' => 1,
8452             'patcount' => 0,
8453             'actcount' => 0,
8454             'items' => [
8455             bless( {
8456             'msg' => '',
8457             'hashname' => '__DIRECTIVE1__',
8458             'commitonly' => '?',
8459             'lookahead' => 0,
8460             'line' => 72
8461             }, 'Parse::RecDescent::Error' ),
8462             bless( {
8463             'hashname' => '__DIRECTIVE2__',
8464             'name' => '<reject>',
8465             'lookahead' => 0,
8466             'line' => 72
8467             }, 'Parse::RecDescent::UncondReject' )
8468             ],
8469             'line' => 72
8470             }, 'Parse::RecDescent::Production' )
8471             ],
8472             'name' => 'qualified_column',
8473             'vars' => '',
8474             'line' => 70
8475             }, 'Parse::RecDescent::Rule' ),
8476             'int' => bless( {
8477             'impcount' => 0,
8478             'calls' => [],
8479             'changed' => 0,
8480             'opcount' => 0,
8481             'prods' => [
8482             bless( {
8483             'number' => 0,
8484             'strcount' => 0,
8485             'dircount' => 0,
8486             'uncommit' => undef,
8487             'error' => undef,
8488             'patcount' => 1,
8489             'actcount' => 0,
8490             'items' => [
8491             bless( {
8492             'pattern' => '-?\\d+\\b',
8493             'hashname' => '__PATTERN1__',
8494             'description' => '/-?\\\\d+\\\\b/',
8495             'lookahead' => 0,
8496             'rdelim' => '/',
8497             'line' => 114,
8498             'mod' => '',
8499             'ldelim' => '/'
8500             }, 'Parse::RecDescent::Token' )
8501             ],
8502             'line' => undef
8503             }, 'Parse::RecDescent::Production' )
8504             ],
8505             'name' => 'int',
8506             'vars' => '',
8507             'line' => 114
8508             }, 'Parse::RecDescent::Rule' ),
8509             'number' => bless( {
8510             'impcount' => 0,
8511             'calls' => [
8512             'real',
8513             'int'
8514             ],
8515             'changed' => 0,
8516             'opcount' => 0,
8517             'prods' => [
8518             bless( {
8519             'number' => 0,
8520             'strcount' => 0,
8521             'dircount' => 0,
8522             'uncommit' => undef,
8523             'error' => undef,
8524             'patcount' => 0,
8525             'actcount' => 0,
8526             'items' => [
8527             bless( {
8528             'subrule' => 'real',
8529             'matchrule' => 0,
8530             'implicit' => undef,
8531             'argcode' => undef,
8532             'lookahead' => 0,
8533             'line' => 109
8534             }, 'Parse::RecDescent::Subrule' )
8535             ],
8536             'line' => undef
8537             }, 'Parse::RecDescent::Production' ),
8538             bless( {
8539             'number' => 1,
8540             'strcount' => 0,
8541             'dircount' => 0,
8542             'uncommit' => undef,
8543             'error' => undef,
8544             'patcount' => 0,
8545             'actcount' => 0,
8546             'items' => [
8547             bless( {
8548             'subrule' => 'int',
8549             'matchrule' => 0,
8550             'implicit' => undef,
8551             'argcode' => undef,
8552             'lookahead' => 0,
8553             'line' => 110
8554             }, 'Parse::RecDescent::Subrule' )
8555             ],
8556             'line' => 110
8557             }, 'Parse::RecDescent::Production' )
8558             ],
8559             'name' => 'number',
8560             'vars' => '',
8561             'line' => 109
8562             }, 'Parse::RecDescent::Rule' ),
8563             'time' => bless( {
8564             'impcount' => 0,
8565             'calls' => [],
8566             'changed' => 0,
8567             'opcount' => 0,
8568             'prods' => [
8569             bless( {
8570             'number' => 0,
8571             'strcount' => 0,
8572             'dircount' => 0,
8573             'uncommit' => undef,
8574             'error' => undef,
8575             'patcount' => 1,
8576             'actcount' => 0,
8577             'items' => [
8578             bless( {
8579             'pattern' => '\\b\\d{2}:\\d{2}:\\d{2}\\b',
8580             'hashname' => '__PATTERN1__',
8581             'description' => '/\\\\b\\\\d\\{2\\}:\\\\d\\{2\\}:\\\\d\\{2\\}\\\\b/',
8582             'lookahead' => 0,
8583             'rdelim' => '/',
8584             'line' => 104,
8585             'mod' => '',
8586             'ldelim' => '/'
8587             }, 'Parse::RecDescent::Token' )
8588             ],
8589             'line' => undef
8590             }, 'Parse::RecDescent::Production' ),
8591             bless( {
8592             'number' => 1,
8593             'strcount' => 0,
8594             'dircount' => 0,
8595             'uncommit' => undef,
8596             'error' => undef,
8597             'patcount' => 1,
8598             'actcount' => 1,
8599             'items' => [
8600             bless( {
8601             'pattern' => '\\b\\d{2}:\\d{2}\\b(?!:)',
8602             'hashname' => '__PATTERN1__',
8603             'description' => '/\\\\b\\\\d\\{2\\}:\\\\d\\{2\\}\\\\b(?!:)/',
8604             'lookahead' => 0,
8605             'rdelim' => '/',
8606             'line' => 105,
8607             'mod' => '',
8608             'ldelim' => '/'
8609             }, 'Parse::RecDescent::Token' ),
8610             bless( {
8611             'hashname' => '__ACTION1__',
8612             'lookahead' => 0,
8613             'line' => 105,
8614             'code' => '{ "$item[1]:00" }'
8615             }, 'Parse::RecDescent::Action' )
8616             ],
8617             'line' => 105
8618             }, 'Parse::RecDescent::Production' )
8619             ],
8620             'name' => 'time',
8621             'vars' => '',
8622             'line' => 104
8623             }, 'Parse::RecDescent::Rule' ),
8624             'date' => bless( {
8625             'impcount' => 0,
8626             'calls' => [],
8627             'changed' => 0,
8628             'opcount' => 0,
8629             'prods' => [
8630             bless( {
8631             'number' => 0,
8632             'strcount' => 0,
8633             'dircount' => 0,
8634             'uncommit' => undef,
8635             'error' => undef,
8636             'patcount' => 1,
8637             'actcount' => 0,
8638             'items' => [
8639             bless( {
8640             'pattern' => '\\b\\d{4}-\\d{2}-\\d{2}\\b',
8641             'hashname' => '__PATTERN1__',
8642             'description' => '/\\\\b\\\\d\\{4\\}-\\\\d\\{2\\}-\\\\d\\{2\\}\\\\b/',
8643             'lookahead' => 0,
8644             'rdelim' => '/',
8645             'line' => 102,
8646             'mod' => '',
8647             'ldelim' => '/'
8648             }, 'Parse::RecDescent::Token' )
8649             ],
8650             'line' => undef
8651             }, 'Parse::RecDescent::Production' )
8652             ],
8653             'name' => 'date',
8654             'vars' => '',
8655             'line' => 102
8656             }, 'Parse::RecDescent::Rule' ),
8657             'rows_definition' => bless( {
8658             'impcount' => 0,
8659             'calls' => [
8660             'table_name'
8661             ],
8662             'changed' => 0,
8663             'opcount' => 0,
8664             'prods' => [
8665             bless( {
8666             'number' => 0,
8667             'strcount' => 0,
8668             'dircount' => 1,
8669             'uncommit' => undef,
8670             'error' => undef,
8671             'patcount' => 1,
8672             'actcount' => 1,
8673             'items' => [
8674             bless( {
8675             'pattern' => '\\d+',
8676             'hashname' => '__PATTERN1__',
8677             'description' => '/\\\\d+/',
8678             'lookahead' => 0,
8679             'rdelim' => '/',
8680             'line' => 74,
8681             'mod' => '',
8682             'ldelim' => '/'
8683             }, 'Parse::RecDescent::Token' ),
8684             bless( {
8685             'hashname' => '__DIRECTIVE1__',
8686             'name' => '<commit>',
8687             'lookahead' => 0,
8688             'line' => 74,
8689             'code' => '$commit = 1'
8690             }, 'Parse::RecDescent::Directive' ),
8691             bless( {
8692             'subrule' => 'table_name',
8693             'matchrule' => 0,
8694             'implicit' => undef,
8695             'argcode' => undef,
8696             'lookahead' => 0,
8697             'line' => 74
8698             }, 'Parse::RecDescent::Subrule' ),
8699             bless( {
8700             'hashname' => '__ACTION1__',
8701             'lookahead' => 0,
8702             'line' => 75,
8703             'code' => '{ [\'rows\', $item[1], $item[3]] }'
8704             }, 'Parse::RecDescent::Action' )
8705             ],
8706             'line' => undef
8707             }, 'Parse::RecDescent::Production' ),
8708             bless( {
8709             'number' => 1,
8710             'strcount' => 0,
8711             'dircount' => 2,
8712             'uncommit' => 0,
8713             'error' => 1,
8714             'patcount' => 0,
8715             'actcount' => 0,
8716             'items' => [
8717             bless( {
8718             'msg' => '',
8719             'hashname' => '__DIRECTIVE1__',
8720             'commitonly' => '?',
8721             'lookahead' => 0,
8722             'line' => 76
8723             }, 'Parse::RecDescent::Error' ),
8724             bless( {
8725             'hashname' => '__DIRECTIVE2__',
8726             'name' => '<reject>',
8727             'lookahead' => 0,
8728             'line' => 76
8729             }, 'Parse::RecDescent::UncondReject' )
8730             ],
8731             'line' => 76
8732             }, 'Parse::RecDescent::Production' )
8733             ],
8734             'name' => 'rows_definition',
8735             'vars' => '',
8736             'line' => 74
8737             }, 'Parse::RecDescent::Rule' ),
8738             'range' => bless( {
8739             'impcount' => 0,
8740             'calls' => [
8741             'number',
8742             'date',
8743             'time',
8744             'datetime'
8745             ],
8746             'changed' => 0,
8747             'opcount' => 0,
8748             'prods' => [
8749             bless( {
8750             'number' => 0,
8751             'strcount' => 1,
8752             'dircount' => 1,
8753             'uncommit' => undef,
8754             'error' => undef,
8755             'patcount' => 0,
8756             'actcount' => 1,
8757             'items' => [
8758             bless( {
8759             'subrule' => 'number',
8760             'matchrule' => 0,
8761             'implicit' => undef,
8762             'argcode' => undef,
8763             'lookahead' => 0,
8764             'line' => 92
8765             }, 'Parse::RecDescent::Subrule' ),
8766             bless( {
8767             'pattern' => '..',
8768             'hashname' => '__STRING1__',
8769             'description' => '\'..\'',
8770             'lookahead' => 0,
8771             'line' => 92
8772             }, 'Parse::RecDescent::Literal' ),
8773             bless( {
8774             'hashname' => '__DIRECTIVE1__',
8775             'name' => '<commit>',
8776             'lookahead' => 0,
8777             'line' => 92,
8778             'code' => '$commit = 1'
8779             }, 'Parse::RecDescent::Directive' ),
8780             bless( {
8781             'subrule' => 'number',
8782             'matchrule' => 0,
8783             'implicit' => undef,
8784             'argcode' => undef,
8785             'lookahead' => 0,
8786             'line' => 92
8787             }, 'Parse::RecDescent::Subrule' ),
8788             bless( {
8789             'hashname' => '__ACTION1__',
8790             'lookahead' => 0,
8791             'line' => 93,
8792             'code' => '{ [\'nrange\', $item[1], $item[4]] }'
8793             }, 'Parse::RecDescent::Action' )
8794             ],
8795             'line' => undef
8796             }, 'Parse::RecDescent::Production' ),
8797             bless( {
8798             'number' => 1,
8799             'strcount' => 1,
8800             'dircount' => 1,
8801             'uncommit' => undef,
8802             'error' => undef,
8803             'patcount' => 0,
8804             'actcount' => 1,
8805             'items' => [
8806             bless( {
8807             'subrule' => 'date',
8808             'matchrule' => 0,
8809             'implicit' => undef,
8810             'argcode' => undef,
8811             'lookahead' => 0,
8812             'line' => 94
8813             }, 'Parse::RecDescent::Subrule' ),
8814             bless( {
8815             'pattern' => '..',
8816             'hashname' => '__STRING1__',
8817             'description' => '\'..\'',
8818             'lookahead' => 0,
8819             'line' => 94
8820             }, 'Parse::RecDescent::Literal' ),
8821             bless( {
8822             'hashname' => '__DIRECTIVE1__',
8823             'name' => '<commit>',
8824             'lookahead' => 0,
8825             'line' => 94,
8826             'code' => '$commit = 1'
8827             }, 'Parse::RecDescent::Directive' ),
8828             bless( {
8829             'subrule' => 'date',
8830             'matchrule' => 0,
8831             'implicit' => undef,
8832             'argcode' => undef,
8833             'lookahead' => 0,
8834             'line' => 94
8835             }, 'Parse::RecDescent::Subrule' ),
8836             bless( {
8837             'hashname' => '__ACTION1__',
8838             'lookahead' => 0,
8839             'line' => 95,
8840             'code' => '{ [\'drange\', $item[1], $item[4]] }'
8841             }, 'Parse::RecDescent::Action' )
8842             ],
8843             'line' => 94
8844             }, 'Parse::RecDescent::Production' ),
8845             bless( {
8846             'number' => 2,
8847             'strcount' => 1,
8848             'dircount' => 1,
8849             'uncommit' => undef,
8850             'error' => undef,
8851             'patcount' => 0,
8852             'actcount' => 1,
8853             'items' => [
8854             bless( {
8855             'subrule' => 'time',
8856             'matchrule' => 0,
8857             'implicit' => undef,
8858             'argcode' => undef,
8859             'lookahead' => 0,
8860             'line' => 96
8861             }, 'Parse::RecDescent::Subrule' ),
8862             bless( {
8863             'pattern' => '..',
8864             'hashname' => '__STRING1__',
8865             'description' => '\'..\'',
8866             'lookahead' => 0,
8867             'line' => 96
8868             }, 'Parse::RecDescent::Literal' ),
8869             bless( {
8870             'hashname' => '__DIRECTIVE1__',
8871             'name' => '<commit>',
8872             'lookahead' => 0,
8873             'line' => 96,
8874             'code' => '$commit = 1'
8875             }, 'Parse::RecDescent::Directive' ),
8876             bless( {
8877             'subrule' => 'time',
8878             'matchrule' => 0,
8879             'implicit' => undef,
8880             'argcode' => undef,
8881             'lookahead' => 0,
8882             'line' => 96
8883             }, 'Parse::RecDescent::Subrule' ),
8884             bless( {
8885             'hashname' => '__ACTION1__',
8886             'lookahead' => 0,
8887             'line' => 97,
8888             'code' => '{ [\'trange\', $item[1], $item[4]] }'
8889             }, 'Parse::RecDescent::Action' )
8890             ],
8891             'line' => 96
8892             }, 'Parse::RecDescent::Production' ),
8893             bless( {
8894             'number' => 3,
8895             'strcount' => 1,
8896             'dircount' => 1,
8897             'uncommit' => undef,
8898             'error' => undef,
8899             'patcount' => 0,
8900             'actcount' => 1,
8901             'items' => [
8902             bless( {
8903             'subrule' => 'datetime',
8904             'matchrule' => 0,
8905             'implicit' => undef,
8906             'argcode' => undef,
8907             'lookahead' => 0,
8908             'line' => 98
8909             }, 'Parse::RecDescent::Subrule' ),
8910             bless( {
8911             'pattern' => '..',
8912             'hashname' => '__STRING1__',
8913             'description' => '\'..\'',
8914             'lookahead' => 0,
8915             'line' => 98
8916             }, 'Parse::RecDescent::Literal' ),
8917             bless( {
8918             'hashname' => '__DIRECTIVE1__',
8919             'name' => '<commit>',
8920             'lookahead' => 0,
8921             'line' => 98,
8922             'code' => '$commit = 1'
8923             }, 'Parse::RecDescent::Directive' ),
8924             bless( {
8925             'subrule' => 'datetime',
8926             'matchrule' => 0,
8927             'implicit' => undef,
8928             'argcode' => undef,
8929             'lookahead' => 0,
8930             'line' => 98
8931             }, 'Parse::RecDescent::Subrule' ),
8932             bless( {
8933             'hashname' => '__ACTION1__',
8934             'lookahead' => 0,
8935             'line' => 99,
8936             'code' => '{ [\'dtrange\', $item[1], $item[4]] }'
8937             }, 'Parse::RecDescent::Action' )
8938             ],
8939             'line' => 98
8940             }, 'Parse::RecDescent::Production' ),
8941             bless( {
8942             'number' => 4,
8943             'strcount' => 0,
8944             'dircount' => 2,
8945             'uncommit' => 0,
8946             'error' => 1,
8947             'patcount' => 0,
8948             'actcount' => 0,
8949             'items' => [
8950             bless( {
8951             'msg' => '',
8952             'hashname' => '__DIRECTIVE1__',
8953             'commitonly' => '?',
8954             'lookahead' => 0,
8955             'line' => 100
8956             }, 'Parse::RecDescent::Error' ),
8957             bless( {
8958             'hashname' => '__DIRECTIVE2__',
8959             'name' => '<reject>',
8960             'lookahead' => 0,
8961             'line' => 100
8962             }, 'Parse::RecDescent::UncondReject' )
8963             ],
8964             'line' => 100
8965             }, 'Parse::RecDescent::Production' )
8966             ],
8967             'name' => 'range',
8968             'vars' => '',
8969             'line' => 92
8970             }, 'Parse::RecDescent::Rule' ),
8971             'type_definition' => bless( {
8972             'impcount' => 0,
8973             'calls' => [
8974             'type',
8975             'domain',
8976             'attribute'
8977             ],
8978             'changed' => 0,
8979             'opcount' => 0,
8980             'prods' => [
8981             bless( {
8982             'number' => 0,
8983             'strcount' => 2,
8984             'dircount' => 1,
8985             'uncommit' => undef,
8986             'error' => undef,
8987             'patcount' => 0,
8988             'actcount' => 1,
8989             'items' => [
8990             bless( {
8991             'pattern' => 'type',
8992             'hashname' => '__STRING1__',
8993             'description' => '\'type\'',
8994             'lookahead' => 0,
8995             'line' => 78
8996             }, 'Parse::RecDescent::Literal' ),
8997             bless( {
8998             'hashname' => '__DIRECTIVE1__',
8999             'name' => '<commit>',
9000             'lookahead' => 0,
9001             'line' => 78,
9002             'code' => '$commit = 1'
9003             }, 'Parse::RecDescent::Directive' ),
9004             bless( {
9005             'subrule' => 'type',
9006             'matchrule' => 0,
9007             'implicit' => undef,
9008             'argcode' => undef,
9009             'lookahead' => 0,
9010             'line' => 78
9011             }, 'Parse::RecDescent::Subrule' ),
9012             bless( {
9013             'pattern' => '=',
9014             'hashname' => '__STRING2__',
9015             'description' => '\'=\'',
9016             'lookahead' => 0,
9017             'line' => 78
9018             }, 'Parse::RecDescent::Literal' ),
9019             bless( {
9020             'subrule' => 'type',
9021             'matchrule' => 0,
9022             'implicit' => undef,
9023             'argcode' => undef,
9024             'lookahead' => 0,
9025             'line' => 78
9026             }, 'Parse::RecDescent::Subrule' ),
9027             bless( {
9028             'subrule' => 'domain',
9029             'expected' => undef,
9030             'min' => 0,
9031             'argcode' => undef,
9032             'max' => 1,
9033             'matchrule' => 0,
9034             'repspec' => '?',
9035             'lookahead' => 0,
9036             'line' => 78
9037             }, 'Parse::RecDescent::Repetition' ),
9038             bless( {
9039             'subrule' => 'attribute',
9040             'expected' => undef,
9041             'min' => 0,
9042             'argcode' => undef,
9043             'max' => 100000000,
9044             'matchrule' => 0,
9045             'repspec' => 's?',
9046             'lookahead' => 0,
9047             'line' => 78
9048             }, 'Parse::RecDescent::Repetition' ),
9049             bless( {
9050             'hashname' => '__ACTION1__',
9051             'lookahead' => 0,
9052             'line' => 79,
9053             'code' => '{
9054             [\'type\', $item[3], $item[4], $item[5], $item[6]] }'
9055             }, 'Parse::RecDescent::Action' )
9056             ],
9057             'line' => undef
9058             }, 'Parse::RecDescent::Production' ),
9059             bless( {
9060             'number' => 1,
9061             'strcount' => 0,
9062             'dircount' => 2,
9063             'uncommit' => 0,
9064             'error' => 1,
9065             'patcount' => 0,
9066             'actcount' => 0,
9067             'items' => [
9068             bless( {
9069             'msg' => '',
9070             'hashname' => '__DIRECTIVE1__',
9071             'commitonly' => '?',
9072             'lookahead' => 0,
9073             'line' => 81
9074             }, 'Parse::RecDescent::Error' ),
9075             bless( {
9076             'hashname' => '__DIRECTIVE2__',
9077             'name' => '<reject>',
9078             'lookahead' => 0,
9079             'line' => 81
9080             }, 'Parse::RecDescent::UncondReject' )
9081             ],
9082             'line' => 81
9083             }, 'Parse::RecDescent::Production' )
9084             ],
9085             'name' => 'type_definition',
9086             'vars' => '',
9087             'line' => 78
9088             }, 'Parse::RecDescent::Rule' ),
9089             'string' => bless( {
9090             'impcount' => 0,
9091             'calls' => [],
9092             'changed' => 0,
9093             'opcount' => 0,
9094             'prods' => [
9095             bless( {
9096             'number' => 0,
9097             'strcount' => 2,
9098             'dircount' => 1,
9099             'uncommit' => undef,
9100             'error' => undef,
9101             'patcount' => 1,
9102             'actcount' => 1,
9103             'items' => [
9104             bless( {
9105             'pattern' => '\'',
9106             'hashname' => '__STRING1__',
9107             'description' => '\'\'\'',
9108             'lookahead' => 0,
9109             'line' => 65
9110             }, 'Parse::RecDescent::InterpLit' ),
9111             bless( {
9112             'hashname' => '__DIRECTIVE1__',
9113             'name' => '<commit>',
9114             'lookahead' => 0,
9115             'line' => 65,
9116             'code' => '$commit = 1'
9117             }, 'Parse::RecDescent::Directive' ),
9118             bless( {
9119             'pattern' => '(?:[^\']|\\\\.)*',
9120             'hashname' => '__PATTERN1__',
9121             'description' => '/(?:[^\']|\\\\\\\\.)*/',
9122             'lookahead' => 0,
9123             'rdelim' => '/',
9124             'line' => 65,
9125             'mod' => '',
9126             'ldelim' => '/'
9127             }, 'Parse::RecDescent::Token' ),
9128             bless( {
9129             'pattern' => '\'',
9130             'hashname' => '__STRING2__',
9131             'description' => '\'\'\'',
9132             'lookahead' => 0,
9133             'line' => 65
9134             }, 'Parse::RecDescent::InterpLit' ),
9135             bless( {
9136             'hashname' => '__ACTION1__',
9137             'lookahead' => 0,
9138             'line' => 66,
9139             'code' => '{ eval "\'$item[3]\'" }'
9140             }, 'Parse::RecDescent::Action' )
9141             ],
9142             'line' => undef
9143             }, 'Parse::RecDescent::Production' ),
9144             bless( {
9145             'number' => 1,
9146             'strcount' => 2,
9147             'dircount' => 1,
9148             'uncommit' => undef,
9149             'error' => undef,
9150             'patcount' => 1,
9151             'actcount' => 1,
9152             'items' => [
9153             bless( {
9154             'pattern' => '"',
9155             'hashname' => '__STRING1__',
9156             'description' => '\'"\'',
9157             'lookahead' => 0,
9158             'line' => 67
9159             }, 'Parse::RecDescent::Literal' ),
9160             bless( {
9161             'hashname' => '__DIRECTIVE1__',
9162             'name' => '<commit>',
9163             'lookahead' => 0,
9164             'line' => 67,
9165             'code' => '$commit = 1'
9166             }, 'Parse::RecDescent::Directive' ),
9167             bless( {
9168             'pattern' => '(?:[^"]|\\\\.)*',
9169             'hashname' => '__PATTERN1__',
9170             'description' => '/(?:[^"]|\\\\\\\\.)*/',
9171             'lookahead' => 0,
9172             'rdelim' => '/',
9173             'line' => 67,
9174             'mod' => '',
9175             'ldelim' => '/'
9176             }, 'Parse::RecDescent::Token' ),
9177             bless( {
9178             'pattern' => '"',
9179             'hashname' => '__STRING2__',
9180             'description' => '\'"\'',
9181             'lookahead' => 0,
9182             'line' => 67
9183             }, 'Parse::RecDescent::Literal' ),
9184             bless( {
9185             'hashname' => '__ACTION1__',
9186             'lookahead' => 0,
9187             'line' => 68,
9188             'code' => '{ eval qq{"$item[3]"} }'
9189             }, 'Parse::RecDescent::Action' )
9190             ],
9191             'line' => 67
9192             }, 'Parse::RecDescent::Production' )
9193             ],
9194             'name' => 'string',
9195             'vars' => '',
9196             'line' => 65
9197             }, 'Parse::RecDescent::Rule' ),
9198             'datetime' => bless( {
9199             'impcount' => 0,
9200             'calls' => [
9201             'date',
9202             'time'
9203             ],
9204             'changed' => 0,
9205             'opcount' => 0,
9206             'prods' => [
9207             bless( {
9208             'number' => 0,
9209             'strcount' => 0,
9210             'dircount' => 0,
9211             'uncommit' => undef,
9212             'error' => undef,
9213             'patcount' => 0,
9214             'actcount' => 1,
9215             'items' => [
9216             bless( {
9217             'subrule' => 'date',
9218             'matchrule' => 0,
9219             'implicit' => undef,
9220             'argcode' => undef,
9221             'lookahead' => 0,
9222             'line' => 107
9223             }, 'Parse::RecDescent::Subrule' ),
9224             bless( {
9225             'subrule' => 'time',
9226             'matchrule' => 0,
9227             'implicit' => undef,
9228             'argcode' => undef,
9229             'lookahead' => 0,
9230             'line' => 107
9231             }, 'Parse::RecDescent::Subrule' ),
9232             bless( {
9233             'hashname' => '__ACTION1__',
9234             'lookahead' => 0,
9235             'line' => 107,
9236             'code' => '{ "$item[1] $item[2]" }'
9237             }, 'Parse::RecDescent::Action' )
9238             ],
9239             'line' => undef
9240             }, 'Parse::RecDescent::Production' )
9241             ],
9242             'name' => 'datetime',
9243             'vars' => '',
9244             'line' => 107
9245             }, 'Parse::RecDescent::Rule' ),
9246             'attribute' => bless( {
9247             'impcount' => 0,
9248             'calls' => [
9249             'string'
9250             ],
9251             'changed' => 0,
9252             'opcount' => 0,
9253             'prods' => [
9254             bless( {
9255             'number' => 0,
9256             'strcount' => 1,
9257             'dircount' => 0,
9258             'uncommit' => undef,
9259             'error' => undef,
9260             'patcount' => 0,
9261             'actcount' => 0,
9262             'items' => [
9263             bless( {
9264             'pattern' => 'unique',
9265             'hashname' => '__STRING1__',
9266             'description' => '\'unique\'',
9267             'lookahead' => 0,
9268             'line' => 47
9269             }, 'Parse::RecDescent::Literal' )
9270             ],
9271             'line' => undef
9272             }, 'Parse::RecDescent::Production' ),
9273             bless( {
9274             'number' => 1,
9275             'strcount' => 1,
9276             'dircount' => 0,
9277             'uncommit' => undef,
9278             'error' => undef,
9279             'patcount' => 0,
9280             'actcount' => 0,
9281             'items' => [
9282             bless( {
9283             'pattern' => 'unsigned',
9284             'hashname' => '__STRING1__',
9285             'description' => '\'unsigned\'',
9286             'lookahead' => 0,
9287             'line' => 47
9288             }, 'Parse::RecDescent::Literal' )
9289             ],
9290             'line' => 47
9291             }, 'Parse::RecDescent::Production' ),
9292             bless( {
9293             'number' => 2,
9294             'strcount' => 1,
9295             'dircount' => 0,
9296             'uncommit' => undef,
9297             'error' => undef,
9298             'patcount' => 0,
9299             'actcount' => 0,
9300             'items' => [
9301             bless( {
9302             'pattern' => 'asc',
9303             'hashname' => '__STRING1__',
9304             'description' => '\'asc\'',
9305             'lookahead' => 0,
9306             'line' => 47
9307             }, 'Parse::RecDescent::Literal' )
9308             ],
9309             'line' => 47
9310             }, 'Parse::RecDescent::Production' ),
9311             bless( {
9312             'number' => 3,
9313             'strcount' => 1,
9314             'dircount' => 0,
9315             'uncommit' => undef,
9316             'error' => undef,
9317             'patcount' => 0,
9318             'actcount' => 0,
9319             'items' => [
9320             bless( {
9321             'pattern' => 'desc',
9322             'hashname' => '__STRING1__',
9323             'description' => '\'desc\'',
9324             'lookahead' => 0,
9325             'line' => 47
9326             }, 'Parse::RecDescent::Literal' )
9327             ],
9328             'line' => 47
9329             }, 'Parse::RecDescent::Production' ),
9330             bless( {
9331             'number' => 4,
9332             'strcount' => 2,
9333             'dircount' => 1,
9334             'uncommit' => undef,
9335             'error' => undef,
9336             'patcount' => 0,
9337             'actcount' => 1,
9338             'items' => [
9339             bless( {
9340             'pattern' => 'not',
9341             'hashname' => '__STRING1__',
9342             'description' => '\'not\'',
9343             'lookahead' => 0,
9344             'line' => 48
9345             }, 'Parse::RecDescent::Literal' ),
9346             bless( {
9347             'hashname' => '__DIRECTIVE1__',
9348             'name' => '<commit>',
9349             'lookahead' => 0,
9350             'line' => 48,
9351             'code' => '$commit = 1'
9352             }, 'Parse::RecDescent::Directive' ),
9353             bless( {
9354             'pattern' => 'null',
9355             'hashname' => '__STRING2__',
9356             'description' => '\'null\'',
9357             'lookahead' => 0,
9358             'line' => 48
9359             }, 'Parse::RecDescent::Literal' ),
9360             bless( {
9361             'hashname' => '__ACTION1__',
9362             'lookahead' => 0,
9363             'line' => 48,
9364             'code' => '{ "$item[1] $item[3]" }'
9365             }, 'Parse::RecDescent::Action' )
9366             ],
9367             'line' => 48
9368             }, 'Parse::RecDescent::Production' ),
9369             bless( {
9370             'number' => 5,
9371             'strcount' => 1,
9372             'dircount' => 0,
9373             'uncommit' => undef,
9374             'error' => undef,
9375             'patcount' => 0,
9376             'actcount' => 1,
9377             'items' => [
9378             bless( {
9379             'pattern' => 'for',
9380             'hashname' => '__STRING1__',
9381             'description' => '\'for\'',
9382             'lookahead' => 0,
9383             'line' => 49
9384             }, 'Parse::RecDescent::Literal' ),
9385             bless( {
9386             'subrule' => 'string',
9387             'matchrule' => 0,
9388             'implicit' => undef,
9389             'argcode' => undef,
9390             'lookahead' => 0,
9391             'line' => 49
9392             }, 'Parse::RecDescent::Subrule' ),
9393             bless( {
9394             'hashname' => '__ACTION1__',
9395             'lookahead' => 0,
9396             'line' => 49,
9397             'code' => '{ [\'for\', $item{string}] }'
9398             }, 'Parse::RecDescent::Action' )
9399             ],
9400             'line' => 49
9401             }, 'Parse::RecDescent::Production' ),
9402             bless( {
9403             'number' => 6,
9404             'strcount' => 0,
9405             'dircount' => 2,
9406             'uncommit' => 0,
9407             'error' => 1,
9408             'patcount' => 0,
9409             'actcount' => 0,
9410             'items' => [
9411             bless( {
9412             'msg' => '',
9413             'hashname' => '__DIRECTIVE1__',
9414             'commitonly' => '?',
9415             'lookahead' => 0,
9416             'line' => 50
9417             }, 'Parse::RecDescent::Error' ),
9418             bless( {
9419             'hashname' => '__DIRECTIVE2__',
9420             'name' => '<reject>',
9421             'lookahead' => 0,
9422             'line' => 50
9423             }, 'Parse::RecDescent::UncondReject' )
9424             ],
9425             'line' => 50
9426             }, 'Parse::RecDescent::Production' )
9427             ],
9428             'name' => 'attribute',
9429             'vars' => '',
9430             'line' => 47
9431             }, 'Parse::RecDescent::Rule' ),
9432             'identifier' => bless( {
9433             'impcount' => 0,
9434             'calls' => [],
9435             'changed' => 0,
9436             'opcount' => 0,
9437             'prods' => [
9438             bless( {
9439             'number' => 0,
9440             'strcount' => 0,
9441             'dircount' => 0,
9442             'uncommit' => undef,
9443             'error' => undef,
9444             'patcount' => 1,
9445             'actcount' => 0,
9446             'items' => [
9447             bless( {
9448             'pattern' => '[A-Za-z]\\w*',
9449             'hashname' => '__PATTERN1__',
9450             'description' => '/[A-Za-z]\\\\w*/',
9451             'lookahead' => 0,
9452             'rdelim' => '/',
9453             'line' => 116,
9454             'mod' => '',
9455             'ldelim' => '/'
9456             }, 'Parse::RecDescent::Token' )
9457             ],
9458             'line' => undef
9459             }, 'Parse::RecDescent::Production' )
9460             ],
9461             'name' => 'identifier',
9462             'vars' => '',
9463             'line' => 116
9464             }, 'Parse::RecDescent::Rule' ),
9465             'domain' => bless( {
9466             'impcount' => 0,
9467             'calls' => [
9468             'enum',
9469             'atom'
9470             ],
9471             'changed' => 0,
9472             'opcount' => 0,
9473             'prods' => [
9474             bless( {
9475             'number' => 0,
9476             'strcount' => 0,
9477             'dircount' => 0,
9478             'uncommit' => undef,
9479             'error' => undef,
9480             'patcount' => 0,
9481             'actcount' => 0,
9482             'items' => [
9483             bless( {
9484             'subrule' => 'enum',
9485             'matchrule' => 0,
9486             'implicit' => undef,
9487             'argcode' => undef,
9488             'lookahead' => 0,
9489             'line' => 52
9490             }, 'Parse::RecDescent::Subrule' )
9491             ],
9492             'line' => undef
9493             }, 'Parse::RecDescent::Production' ),
9494             bless( {
9495             'number' => 1,
9496             'strcount' => 0,
9497             'dircount' => 0,
9498             'uncommit' => undef,
9499             'error' => undef,
9500             'patcount' => 0,
9501             'actcount' => 1,
9502             'items' => [
9503             bless( {
9504             'subrule' => 'atom',
9505             'matchrule' => 0,
9506             'implicit' => undef,
9507             'argcode' => undef,
9508             'lookahead' => 0,
9509             'line' => 53
9510             }, 'Parse::RecDescent::Subrule' ),
9511             bless( {
9512             'hashname' => '__ACTION1__',
9513             'lookahead' => 0,
9514             'line' => 53,
9515             'code' => '{ [ $item[1] ] }'
9516             }, 'Parse::RecDescent::Action' )
9517             ],
9518             'line' => 53
9519             }, 'Parse::RecDescent::Production' )
9520             ],
9521             'name' => 'domain',
9522             'vars' => '',
9523             'line' => 52
9524             }, 'Parse::RecDescent::Rule' ),
9525             'table_definition' => bless( {
9526             'impcount' => 0,
9527             'calls' => [
9528             'table_name',
9529             'column_definition'
9530             ],
9531             'changed' => 0,
9532             'opcount' => 0,
9533             'prods' => [
9534             bless( {
9535             'number' => 0,
9536             'strcount' => 3,
9537             'dircount' => 1,
9538             'uncommit' => undef,
9539             'error' => undef,
9540             'patcount' => 0,
9541             'actcount' => 1,
9542             'items' => [
9543             bless( {
9544             'pattern' => 'table',
9545             'hashname' => '__STRING1__',
9546             'description' => '\'table\'',
9547             'lookahead' => 0,
9548             'line' => 29
9549             }, 'Parse::RecDescent::Literal' ),
9550             bless( {
9551             'hashname' => '__DIRECTIVE1__',
9552             'name' => '<commit>',
9553             'lookahead' => 0,
9554             'line' => 29,
9555             'code' => '$commit = 1'
9556             }, 'Parse::RecDescent::Directive' ),
9557             bless( {
9558             'subrule' => 'table_name',
9559             'matchrule' => 0,
9560             'implicit' => undef,
9561             'argcode' => undef,
9562             'lookahead' => 0,
9563             'line' => 29
9564             }, 'Parse::RecDescent::Subrule' ),
9565             bless( {
9566             'pattern' => '(',
9567             'hashname' => '__STRING2__',
9568             'description' => '\'(\'',
9569             'lookahead' => 0,
9570             'line' => 29
9571             }, 'Parse::RecDescent::Literal' ),
9572             bless( {
9573             'subrule' => 'column_definition',
9574             'expected' => undef,
9575             'min' => 1,
9576             'argcode' => undef,
9577             'max' => 100000000,
9578             'matchrule' => 0,
9579             'repspec' => 's',
9580             'lookahead' => 0,
9581             'line' => 30
9582             }, 'Parse::RecDescent::Repetition' ),
9583             bless( {
9584             'pattern' => ')',
9585             'hashname' => '__STRING3__',
9586             'description' => '\')\'',
9587             'lookahead' => 0,
9588             'line' => 31
9589             }, 'Parse::RecDescent::Literal' ),
9590             bless( {
9591             'hashname' => '__ACTION1__',
9592             'lookahead' => 0,
9593             'line' => 32,
9594             'code' => '{ [\'table\', $item[3], $item[5]] }'
9595             }, 'Parse::RecDescent::Action' )
9596             ],
9597             'line' => undef
9598             }, 'Parse::RecDescent::Production' ),
9599             bless( {
9600             'number' => 1,
9601             'strcount' => 0,
9602             'dircount' => 2,
9603             'uncommit' => 0,
9604             'error' => 1,
9605             'patcount' => 0,
9606             'actcount' => 0,
9607             'items' => [
9608             bless( {
9609             'msg' => '',
9610             'hashname' => '__DIRECTIVE1__',
9611             'commitonly' => '?',
9612             'lookahead' => 0,
9613             'line' => 33
9614             }, 'Parse::RecDescent::Error' ),
9615             bless( {
9616             'hashname' => '__DIRECTIVE2__',
9617             'name' => '<reject>',
9618             'lookahead' => 0,
9619             'line' => 33
9620             }, 'Parse::RecDescent::UncondReject' )
9621             ],
9622             'line' => 33
9623             }, 'Parse::RecDescent::Production' )
9624             ],
9625             'name' => 'table_definition',
9626             'vars' => '',
9627             'line' => 29
9628             }, 'Parse::RecDescent::Rule' ),
9629             'column_name' => bless( {
9630             'impcount' => 0,
9631             'calls' => [
9632             'identifier'
9633             ],
9634             'changed' => 0,
9635             'opcount' => 0,
9636             'prods' => [
9637             bless( {
9638             'number' => 0,
9639             'strcount' => 0,
9640             'dircount' => 0,
9641             'uncommit' => undef,
9642             'error' => undef,
9643             'patcount' => 0,
9644             'actcount' => 0,
9645             'items' => [
9646             bless( {
9647             'subrule' => 'identifier',
9648             'matchrule' => 0,
9649             'implicit' => undef,
9650             'argcode' => undef,
9651             'lookahead' => 0,
9652             'line' => 43
9653             }, 'Parse::RecDescent::Subrule' )
9654             ],
9655             'line' => undef
9656             }, 'Parse::RecDescent::Production' )
9657             ],
9658             'name' => 'column_name',
9659             'vars' => '',
9660             'line' => 43
9661             }, 'Parse::RecDescent::Rule' ),
9662             'statement' => bless( {
9663             'impcount' => 0,
9664             'calls' => [
9665             'table_definition',
9666             'rows_definition',
9667             'type_definition',
9668             'include_statement',
9669             'table_assignment'
9670             ],
9671             'changed' => 0,
9672             'opcount' => 0,
9673             'prods' => [
9674             bless( {
9675             'number' => 0,
9676             'strcount' => 0,
9677             'dircount' => 0,
9678             'uncommit' => undef,
9679             'error' => undef,
9680             'patcount' => 1,
9681             'actcount' => 1,
9682             'items' => [
9683             bless( {
9684             'subrule' => 'table_definition',
9685             'matchrule' => 0,
9686             'implicit' => undef,
9687             'argcode' => undef,
9688             'lookahead' => 0,
9689             'line' => 10
9690             }, 'Parse::RecDescent::Subrule' ),
9691             bless( {
9692             'pattern' => ';?',
9693             'hashname' => '__PATTERN1__',
9694             'description' => '/;?/',
9695             'lookahead' => 0,
9696             'rdelim' => '/',
9697             'line' => 10,
9698             'mod' => '',
9699             'ldelim' => '/'
9700             }, 'Parse::RecDescent::Token' ),
9701             bless( {
9702             'hashname' => '__ACTION1__',
9703             'lookahead' => 0,
9704             'line' => 10,
9705             'code' => '{ $item[1] }'
9706             }, 'Parse::RecDescent::Action' )
9707             ],
9708             'line' => undef
9709             }, 'Parse::RecDescent::Production' ),
9710             bless( {
9711             'number' => 1,
9712             'strcount' => 1,
9713             'dircount' => 0,
9714             'uncommit' => undef,
9715             'error' => undef,
9716             'patcount' => 0,
9717             'actcount' => 1,
9718             'items' => [
9719             bless( {
9720             'subrule' => 'rows_definition',
9721             'matchrule' => 0,
9722             'implicit' => undef,
9723             'argcode' => undef,
9724             'lookahead' => 0,
9725             'line' => 11
9726             }, 'Parse::RecDescent::Subrule' ),
9727             bless( {
9728             'pattern' => ';',
9729             'hashname' => '__STRING1__',
9730             'description' => '\';\'',
9731             'lookahead' => 0,
9732             'line' => 11
9733             }, 'Parse::RecDescent::Literal' ),
9734             bless( {
9735             'hashname' => '__ACTION1__',
9736             'lookahead' => 0,
9737             'line' => 11,
9738             'code' => '{ $item[1] }'
9739             }, 'Parse::RecDescent::Action' )
9740             ],
9741             'line' => 11
9742             }, 'Parse::RecDescent::Production' ),
9743             bless( {
9744             'number' => 2,
9745             'strcount' => 1,
9746             'dircount' => 0,
9747             'uncommit' => undef,
9748             'error' => undef,
9749             'patcount' => 0,
9750             'actcount' => 1,
9751             'items' => [
9752             bless( {
9753             'subrule' => 'type_definition',
9754             'matchrule' => 0,
9755             'implicit' => undef,
9756             'argcode' => undef,
9757             'lookahead' => 0,
9758             'line' => 12
9759             }, 'Parse::RecDescent::Subrule' ),
9760             bless( {
9761             'pattern' => ';',
9762             'hashname' => '__STRING1__',
9763             'description' => '\';\'',
9764             'lookahead' => 0,
9765             'line' => 12
9766             }, 'Parse::RecDescent::Literal' ),
9767             bless( {
9768             'hashname' => '__ACTION1__',
9769             'lookahead' => 0,
9770             'line' => 12,
9771             'code' => '{ $item[1] }'
9772             }, 'Parse::RecDescent::Action' )
9773             ],
9774             'line' => 12
9775             }, 'Parse::RecDescent::Production' ),
9776             bless( {
9777             'number' => 3,
9778             'strcount' => 1,
9779             'dircount' => 0,
9780             'uncommit' => undef,
9781             'error' => undef,
9782             'patcount' => 0,
9783             'actcount' => 1,
9784             'items' => [
9785             bless( {
9786             'subrule' => 'include_statement',
9787             'matchrule' => 0,
9788             'implicit' => undef,
9789             'argcode' => undef,
9790             'lookahead' => 0,
9791             'line' => 13
9792             }, 'Parse::RecDescent::Subrule' ),
9793             bless( {
9794             'pattern' => ';',
9795             'hashname' => '__STRING1__',
9796             'description' => '\';\'',
9797             'lookahead' => 0,
9798             'line' => 13
9799             }, 'Parse::RecDescent::Literal' ),
9800             bless( {
9801             'hashname' => '__ACTION1__',
9802             'lookahead' => 0,
9803             'line' => 13,
9804             'code' => '{ $item[1] }'
9805             }, 'Parse::RecDescent::Action' )
9806             ],
9807             'line' => 13
9808             }, 'Parse::RecDescent::Production' ),
9809             bless( {
9810             'number' => 4,
9811             'strcount' => 1,
9812             'dircount' => 0,
9813             'uncommit' => undef,
9814             'error' => undef,
9815             'patcount' => 0,
9816             'actcount' => 1,
9817             'items' => [
9818             bless( {
9819             'subrule' => 'table_assignment',
9820             'matchrule' => 0,
9821             'implicit' => undef,
9822             'argcode' => undef,
9823             'lookahead' => 0,
9824             'line' => 14
9825             }, 'Parse::RecDescent::Subrule' ),
9826             bless( {
9827             'pattern' => ';',
9828             'hashname' => '__STRING1__',
9829             'description' => '\';\'',
9830             'lookahead' => 0,
9831             'line' => 14
9832             }, 'Parse::RecDescent::Literal' ),
9833             bless( {
9834             'hashname' => '__ACTION1__',
9835             'lookahead' => 0,
9836             'line' => 14,
9837             'code' => '{ $item[1] }'
9838             }, 'Parse::RecDescent::Action' )
9839             ],
9840             'line' => 14
9841             }, 'Parse::RecDescent::Production' ),
9842             bless( {
9843             'number' => 5,
9844             'strcount' => 0,
9845             'dircount' => 1,
9846             'uncommit' => 0,
9847             'error' => 1,
9848             'patcount' => 0,
9849             'actcount' => 0,
9850             'items' => [
9851             bless( {
9852             'msg' => '',
9853             'hashname' => '__DIRECTIVE1__',
9854             'commitonly' => '',
9855             'lookahead' => 0,
9856             'line' => 15
9857             }, 'Parse::RecDescent::Error' )
9858             ],
9859             'line' => 15
9860             }, 'Parse::RecDescent::Production' )
9861             ],
9862             'name' => 'statement',
9863             'vars' => '',
9864             'line' => 10
9865             }, 'Parse::RecDescent::Rule' ),
9866             'file_name' => bless( {
9867             'impcount' => 0,
9868             'calls' => [
9869             'string'
9870             ],
9871             'changed' => 0,
9872             'opcount' => 0,
9873             'prods' => [
9874             bless( {
9875             'number' => 0,
9876             'strcount' => 0,
9877             'dircount' => 0,
9878             'uncommit' => undef,
9879             'error' => undef,
9880             'patcount' => 0,
9881             'actcount' => 0,
9882             'items' => [
9883             bless( {
9884             'subrule' => 'string',
9885             'matchrule' => 0,
9886             'implicit' => undef,
9887             'argcode' => undef,
9888             'lookahead' => 0,
9889             'line' => 25
9890             }, 'Parse::RecDescent::Subrule' )
9891             ],
9892             'line' => undef
9893             }, 'Parse::RecDescent::Production' )
9894             ],
9895             'name' => 'file_name',
9896             'vars' => '',
9897             'line' => 25
9898             }, 'Parse::RecDescent::Rule' ),
9899             'atom' => bless( {
9900             'impcount' => 0,
9901             'calls' => [
9902             'range',
9903             'number',
9904             'regex',
9905             'string',
9906             'int'
9907             ],
9908             'changed' => 0,
9909             'opcount' => 0,
9910             'prods' => [
9911             bless( {
9912             'number' => 0,
9913             'strcount' => 0,
9914             'dircount' => 0,
9915             'uncommit' => undef,
9916             'error' => undef,
9917             'patcount' => 0,
9918             'actcount' => 0,
9919             'items' => [
9920             bless( {
9921             'subrule' => 'range',
9922             'matchrule' => 0,
9923             'implicit' => undef,
9924             'argcode' => undef,
9925             'lookahead' => 0,
9926             'line' => 59
9927             }, 'Parse::RecDescent::Subrule' )
9928             ],
9929             'line' => undef
9930             }, 'Parse::RecDescent::Production' ),
9931             bless( {
9932             'number' => 1,
9933             'strcount' => 0,
9934             'dircount' => 0,
9935             'uncommit' => undef,
9936             'error' => undef,
9937             'patcount' => 0,
9938             'actcount' => 0,
9939             'items' => [
9940             bless( {
9941             'subrule' => 'number',
9942             'matchrule' => 0,
9943             'implicit' => undef,
9944             'argcode' => undef,
9945             'lookahead' => 0,
9946             'line' => 60
9947             }, 'Parse::RecDescent::Subrule' )
9948             ],
9949             'line' => 60
9950             }, 'Parse::RecDescent::Production' ),
9951             bless( {
9952             'number' => 2,
9953             'strcount' => 0,
9954             'dircount' => 0,
9955             'uncommit' => undef,
9956             'error' => undef,
9957             'patcount' => 0,
9958             'actcount' => 0,
9959             'items' => [
9960             bless( {
9961             'subrule' => 'regex',
9962             'matchrule' => 0,
9963             'implicit' => undef,
9964             'argcode' => undef,
9965             'lookahead' => 0,
9966             'line' => 61
9967             }, 'Parse::RecDescent::Subrule' )
9968             ],
9969             'line' => 61
9970             }, 'Parse::RecDescent::Production' ),
9971             bless( {
9972             'number' => 3,
9973             'strcount' => 0,
9974             'dircount' => 0,
9975             'uncommit' => undef,
9976             'error' => undef,
9977             'patcount' => 0,
9978             'actcount' => 0,
9979             'items' => [
9980             bless( {
9981             'subrule' => 'string',
9982             'matchrule' => 0,
9983             'implicit' => undef,
9984             'argcode' => undef,
9985             'lookahead' => 0,
9986             'line' => 62
9987             }, 'Parse::RecDescent::Subrule' )
9988             ],
9989             'line' => 62
9990             }, 'Parse::RecDescent::Production' ),
9991             bless( {
9992             'number' => 4,
9993             'strcount' => 0,
9994             'dircount' => 0,
9995             'uncommit' => undef,
9996             'error' => undef,
9997             'patcount' => 0,
9998             'actcount' => 0,
9999             'items' => [
10000             bless( {
10001             'subrule' => 'int',
10002             'matchrule' => 0,
10003             'implicit' => undef,
10004             'argcode' => undef,
10005             'lookahead' => 0,
10006             'line' => 63
10007             }, 'Parse::RecDescent::Subrule' )
10008             ],
10009             'line' => 63
10010             }, 'Parse::RecDescent::Production' )
10011             ],
10012             'name' => 'atom',
10013             'vars' => '',
10014             'line' => 59
10015             }, 'Parse::RecDescent::Rule' ),
10016             'enum' => bless( {
10017             'impcount' => 0,
10018             'calls' => [
10019             'atom'
10020             ],
10021             'changed' => 0,
10022             'opcount' => 0,
10023             'prods' => [
10024             bless( {
10025             'number' => 0,
10026             'strcount' => 2,
10027             'dircount' => 2,
10028             'uncommit' => undef,
10029             'error' => undef,
10030             'patcount' => 1,
10031             'actcount' => 1,
10032             'op' => [],
10033             'items' => [
10034             bless( {
10035             'pattern' => '{',
10036             'hashname' => '__STRING1__',
10037             'description' => '\'\\{\'',
10038             'lookahead' => 0,
10039             'line' => 55
10040             }, 'Parse::RecDescent::Literal' ),
10041             bless( {
10042             'hashname' => '__DIRECTIVE1__',
10043             'name' => '<commit>',
10044             'lookahead' => 0,
10045             'line' => 55,
10046             'code' => '$commit = 1'
10047             }, 'Parse::RecDescent::Directive' ),
10048             bless( {
10049             'expected' => '<leftop: atom /,/ atom>',
10050             'min' => 0,
10051             'name' => '\'atom(s?)\'',
10052             'max' => 100000000,
10053             'leftarg' => bless( {
10054             'subrule' => 'atom',
10055             'matchrule' => 0,
10056             'implicit' => undef,
10057             'argcode' => undef,
10058             'lookahead' => 0,
10059             'line' => 55
10060             }, 'Parse::RecDescent::Subrule' ),
10061             'rightarg' => bless( {
10062             'subrule' => 'atom',
10063             'matchrule' => 0,
10064             'implicit' => undef,
10065             'argcode' => undef,
10066             'lookahead' => 0,
10067             'line' => 55
10068             }, 'Parse::RecDescent::Subrule' ),
10069             'hashname' => '__DIRECTIVE2__',
10070             'type' => 'leftop',
10071             'op' => bless( {
10072             'pattern' => ',',
10073             'hashname' => '__PATTERN1__',
10074             'description' => '/,/',
10075             'lookahead' => 0,
10076             'rdelim' => '/',
10077             'line' => 55,
10078             'mod' => '',
10079             'ldelim' => '/'
10080             }, 'Parse::RecDescent::Token' )
10081             }, 'Parse::RecDescent::Operator' ),
10082             bless( {
10083             'pattern' => '}',
10084             'hashname' => '__STRING2__',
10085             'description' => '\'\\}\'',
10086             'lookahead' => 0,
10087             'line' => 55
10088             }, 'Parse::RecDescent::Literal' ),
10089             bless( {
10090             'hashname' => '__ACTION1__',
10091             'lookahead' => 0,
10092             'line' => 56,
10093             'code' => '{ $item[3] }'
10094             }, 'Parse::RecDescent::Action' )
10095             ],
10096             'line' => undef
10097             }, 'Parse::RecDescent::Production' ),
10098             bless( {
10099             'number' => 1,
10100             'strcount' => 0,
10101             'dircount' => 2,
10102             'uncommit' => 0,
10103             'error' => 1,
10104             'patcount' => 0,
10105             'actcount' => 0,
10106             'items' => [
10107             bless( {
10108             'msg' => '',
10109             'hashname' => '__DIRECTIVE1__',
10110             'commitonly' => '?',
10111             'lookahead' => 0,
10112             'line' => 57
10113             }, 'Parse::RecDescent::Error' ),
10114             bless( {
10115             'hashname' => '__DIRECTIVE2__',
10116             'name' => '<reject>',
10117             'lookahead' => 0,
10118             'line' => 57
10119             }, 'Parse::RecDescent::UncondReject' )
10120             ],
10121             'line' => 57
10122             }, 'Parse::RecDescent::Production' )
10123             ],
10124             'name' => 'enum',
10125             'vars' => '',
10126             'line' => 55
10127             }, 'Parse::RecDescent::Rule' ),
10128             'column_definition' => bless( {
10129             'impcount' => 0,
10130             'calls' => [
10131             'column_name',
10132             'qualified_column',
10133             'attribute',
10134             'type',
10135             'domain'
10136             ],
10137             'changed' => 0,
10138             'opcount' => 0,
10139             'prods' => [
10140             bless( {
10141             'number' => 0,
10142             'strcount' => 2,
10143             'dircount' => 1,
10144             'uncommit' => undef,
10145             'error' => undef,
10146             'patcount' => 0,
10147             'actcount' => 1,
10148             'items' => [
10149             bless( {
10150             'subrule' => 'column_name',
10151             'matchrule' => 0,
10152             'implicit' => undef,
10153             'argcode' => undef,
10154             'lookahead' => 0,
10155             'line' => 36
10156             }, 'Parse::RecDescent::Subrule' ),
10157             bless( {
10158             'pattern' => 'references',
10159             'hashname' => '__STRING1__',
10160             'description' => '\'references\'',
10161             'lookahead' => 0,
10162             'line' => 36
10163             }, 'Parse::RecDescent::Literal' ),
10164             bless( {
10165             'hashname' => '__DIRECTIVE1__',
10166             'name' => '<commit>',
10167             'lookahead' => 0,
10168             'line' => 36,
10169             'code' => '$commit = 1'
10170             }, 'Parse::RecDescent::Directive' ),
10171             bless( {
10172             'subrule' => 'qualified_column',
10173             'matchrule' => 0,
10174             'implicit' => undef,
10175             'argcode' => undef,
10176             'lookahead' => 0,
10177             'line' => 36
10178             }, 'Parse::RecDescent::Subrule' ),
10179             bless( {
10180             'subrule' => 'attribute',
10181             'expected' => undef,
10182             'min' => 0,
10183             'argcode' => undef,
10184             'max' => 100000000,
10185             'matchrule' => 0,
10186             'repspec' => 's?',
10187             'lookahead' => 0,
10188             'line' => 36
10189             }, 'Parse::RecDescent::Repetition' ),
10190             bless( {
10191             'pattern' => ';',
10192             'hashname' => '__STRING2__',
10193             'description' => '\';\'',
10194             'lookahead' => 0,
10195             'line' => 36
10196             }, 'Parse::RecDescent::Literal' ),
10197             bless( {
10198             'hashname' => '__ACTION1__',
10199             'lookahead' => 0,
10200             'line' => 37,
10201             'code' => '{ [ $item[1], \'refs\', $item[4], $item[5] ] }'
10202             }, 'Parse::RecDescent::Action' )
10203             ],
10204             'line' => undef
10205             }, 'Parse::RecDescent::Production' ),
10206             bless( {
10207             'number' => 1,
10208             'strcount' => 1,
10209             'dircount' => 0,
10210             'uncommit' => undef,
10211             'error' => undef,
10212             'patcount' => 0,
10213             'actcount' => 1,
10214             'items' => [
10215             bless( {
10216             'subrule' => 'column_name',
10217             'matchrule' => 0,
10218             'implicit' => undef,
10219             'argcode' => undef,
10220             'lookahead' => 0,
10221             'line' => 38
10222             }, 'Parse::RecDescent::Subrule' ),
10223             bless( {
10224             'subrule' => 'type',
10225             'matchrule' => 0,
10226             'implicit' => undef,
10227             'argcode' => undef,
10228             'lookahead' => 0,
10229             'line' => 38
10230             }, 'Parse::RecDescent::Subrule' ),
10231             bless( {
10232             'subrule' => 'domain',
10233             'expected' => undef,
10234             'min' => 0,
10235             'argcode' => undef,
10236             'max' => 1,
10237             'matchrule' => 0,
10238             'repspec' => '?',
10239             'lookahead' => 0,
10240             'line' => 38
10241             }, 'Parse::RecDescent::Repetition' ),
10242             bless( {
10243             'subrule' => 'attribute',
10244             'expected' => undef,
10245             'min' => 0,
10246             'argcode' => undef,
10247             'max' => 100000000,
10248             'matchrule' => 0,
10249             'repspec' => 's?',
10250             'lookahead' => 0,
10251             'line' => 38
10252             }, 'Parse::RecDescent::Repetition' ),
10253             bless( {
10254             'pattern' => ';',
10255             'hashname' => '__STRING1__',
10256             'description' => '\';\'',
10257             'lookahead' => 0,
10258             'line' => 38
10259             }, 'Parse::RecDescent::Literal' ),
10260             bless( {
10261             'hashname' => '__ACTION1__',
10262             'lookahead' => 0,
10263             'line' => 39,
10264             'code' => '{ [$item[1], $item[2], $item[3], $item[4] ] }'
10265             }, 'Parse::RecDescent::Action' )
10266             ],
10267             'line' => 38
10268             }, 'Parse::RecDescent::Production' ),
10269             bless( {
10270             'number' => 2,
10271             'strcount' => 2,
10272             'dircount' => 0,
10273             'uncommit' => undef,
10274             'error' => undef,
10275             'patcount' => 0,
10276             'actcount' => 1,
10277             'items' => [
10278             bless( {
10279             'subrule' => 'column_name',
10280             'matchrule' => 0,
10281             'implicit' => undef,
10282             'argcode' => undef,
10283             'lookahead' => 0,
10284             'line' => 40
10285             }, 'Parse::RecDescent::Subrule' ),
10286             bless( {
10287             'pattern' => '=',
10288             'hashname' => '__STRING1__',
10289             'description' => '\'=\'',
10290             'lookahead' => 0,
10291             'line' => 40
10292             }, 'Parse::RecDescent::Literal' ),
10293             bless( {
10294             'subrule' => 'column_name',
10295             'matchrule' => 0,
10296             'implicit' => undef,
10297             'argcode' => undef,
10298             'lookahead' => 0,
10299             'line' => 40
10300             }, 'Parse::RecDescent::Subrule' ),
10301             bless( {
10302             'pattern' => ';',
10303             'hashname' => '__STRING2__',
10304             'description' => '\';\'',
10305             'lookahead' => 0,
10306             'line' => 40
10307             }, 'Parse::RecDescent::Literal' ),
10308             bless( {
10309             'hashname' => '__ACTION1__',
10310             'lookahead' => 0,
10311             'line' => 40,
10312             'code' => '{ [$item[1], \'=\', $item[3]] }'
10313             }, 'Parse::RecDescent::Action' )
10314             ],
10315             'line' => 40
10316             }, 'Parse::RecDescent::Production' ),
10317             bless( {
10318             'number' => 3,
10319             'strcount' => 0,
10320             'dircount' => 2,
10321             'uncommit' => 0,
10322             'error' => 1,
10323             'patcount' => 0,
10324             'actcount' => 0,
10325             'items' => [
10326             bless( {
10327             'msg' => '',
10328             'hashname' => '__DIRECTIVE1__',
10329             'commitonly' => '?',
10330             'lookahead' => 0,
10331             'line' => 41
10332             }, 'Parse::RecDescent::Error' ),
10333             bless( {
10334             'hashname' => '__DIRECTIVE2__',
10335             'name' => '<reject>',
10336             'lookahead' => 0,
10337             'line' => 41
10338             }, 'Parse::RecDescent::UncondReject' )
10339             ],
10340             'line' => 41
10341             }, 'Parse::RecDescent::Production' )
10342             ],
10343             'name' => 'column_definition',
10344             'vars' => '',
10345             'line' => 35
10346             }, 'Parse::RecDescent::Rule' ),
10347             'real' => bless( {
10348             'impcount' => 0,
10349             'calls' => [],
10350             'changed' => 0,
10351             'opcount' => 0,
10352             'prods' => [
10353             bless( {
10354             'number' => 0,
10355             'strcount' => 0,
10356             'dircount' => 0,
10357             'uncommit' => undef,
10358             'error' => undef,
10359             'patcount' => 1,
10360             'actcount' => 0,
10361             'items' => [
10362             bless( {
10363             'pattern' => '-?\\d+\\.\\d+\\b',
10364             'hashname' => '__PATTERN1__',
10365             'description' => '/-?\\\\d+\\\\.\\\\d+\\\\b/',
10366             'lookahead' => 0,
10367             'rdelim' => '/',
10368             'line' => 112,
10369             'mod' => '',
10370             'ldelim' => '/'
10371             }, 'Parse::RecDescent::Token' )
10372             ],
10373             'line' => undef
10374             }, 'Parse::RecDescent::Production' )
10375             ],
10376             'name' => 'real',
10377             'vars' => '',
10378             'line' => 112
10379             }, 'Parse::RecDescent::Rule' ),
10380             'spec' => bless( {
10381             'impcount' => 0,
10382             'calls' => [
10383             'statement',
10384             'eof'
10385             ],
10386             'changed' => 0,
10387             'opcount' => 0,
10388             'prods' => [
10389             bless( {
10390             'number' => 0,
10391             'strcount' => 0,
10392             'dircount' => 0,
10393             'uncommit' => undef,
10394             'error' => undef,
10395             'patcount' => 0,
10396             'actcount' => 1,
10397             'items' => [
10398             bless( {
10399             'subrule' => 'statement',
10400             'expected' => undef,
10401             'min' => 1,
10402             'argcode' => undef,
10403             'max' => 100000000,
10404             'matchrule' => 0,
10405             'repspec' => 's',
10406             'lookahead' => 0,
10407             'line' => 5
10408             }, 'Parse::RecDescent::Repetition' ),
10409             bless( {
10410             'subrule' => 'eof',
10411             'matchrule' => 0,
10412             'implicit' => undef,
10413             'argcode' => undef,
10414             'lookahead' => 0,
10415             'line' => 5
10416             }, 'Parse::RecDescent::Subrule' ),
10417             bless( {
10418             'hashname' => '__ACTION1__',
10419             'lookahead' => 0,
10420             'line' => 6,
10421             'code' => '{ $item[1] }'
10422             }, 'Parse::RecDescent::Action' )
10423             ],
10424             'line' => undef
10425             }, 'Parse::RecDescent::Production' )
10426             ],
10427             'name' => 'spec',
10428             'vars' => '',
10429             'line' => 5
10430             }, 'Parse::RecDescent::Rule' ),
10431             'table_assignment' => bless( {
10432             'impcount' => 0,
10433             'calls' => [
10434             'table_name'
10435             ],
10436             'changed' => 0,
10437             'opcount' => 0,
10438             'prods' => [
10439             bless( {
10440             'number' => 0,
10441             'strcount' => 1,
10442             'dircount' => 1,
10443             'uncommit' => undef,
10444             'error' => undef,
10445             'patcount' => 0,
10446             'actcount' => 1,
10447             'items' => [
10448             bless( {
10449             'subrule' => 'table_name',
10450             'matchrule' => 0,
10451             'implicit' => undef,
10452             'argcode' => undef,
10453             'lookahead' => 0,
10454             'line' => 17
10455             }, 'Parse::RecDescent::Subrule' ),
10456             bless( {
10457             'pattern' => '=',
10458             'hashname' => '__STRING1__',
10459             'description' => '\'=\'',
10460             'lookahead' => 0,
10461             'line' => 17
10462             }, 'Parse::RecDescent::Literal' ),
10463             bless( {
10464             'hashname' => '__DIRECTIVE1__',
10465             'name' => '<commit>',
10466             'lookahead' => 0,
10467             'line' => 17,
10468             'code' => '$commit = 1'
10469             }, 'Parse::RecDescent::Directive' ),
10470             bless( {
10471             'subrule' => 'table_name',
10472             'matchrule' => 0,
10473             'implicit' => undef,
10474             'argcode' => undef,
10475             'lookahead' => 0,
10476             'line' => 17
10477             }, 'Parse::RecDescent::Subrule' ),
10478             bless( {
10479             'hashname' => '__ACTION1__',
10480             'lookahead' => 0,
10481             'line' => 18,
10482             'code' => '{ [ \'table_assign\', $item[1], $item[4] ] }'
10483             }, 'Parse::RecDescent::Action' )
10484             ],
10485             'line' => undef
10486             }, 'Parse::RecDescent::Production' ),
10487             bless( {
10488             'number' => 1,
10489             'strcount' => 0,
10490             'dircount' => 2,
10491             'uncommit' => 0,
10492             'error' => 1,
10493             'patcount' => 0,
10494             'actcount' => 0,
10495             'items' => [
10496             bless( {
10497             'msg' => '',
10498             'hashname' => '__DIRECTIVE1__',
10499             'commitonly' => '?',
10500             'lookahead' => 0,
10501             'line' => 19
10502             }, 'Parse::RecDescent::Error' ),
10503             bless( {
10504             'hashname' => '__DIRECTIVE2__',
10505             'name' => '<reject>',
10506             'lookahead' => 0,
10507             'line' => 19
10508             }, 'Parse::RecDescent::UncondReject' )
10509             ],
10510             'line' => 19
10511             }, 'Parse::RecDescent::Production' )
10512             ],
10513             'name' => 'table_assignment',
10514             'vars' => '',
10515             'line' => 17
10516             }, 'Parse::RecDescent::Rule' ),
10517             'include_statement' => bless( {
10518             'impcount' => 0,
10519             'calls' => [
10520             'file_name'
10521             ],
10522             'changed' => 0,
10523             'opcount' => 0,
10524             'prods' => [
10525             bless( {
10526             'number' => 0,
10527             'strcount' => 1,
10528             'dircount' => 1,
10529             'uncommit' => undef,
10530             'error' => undef,
10531             'patcount' => 0,
10532             'actcount' => 1,
10533             'items' => [
10534             bless( {
10535             'pattern' => 'include',
10536             'hashname' => '__STRING1__',
10537             'description' => '\'include\'',
10538             'lookahead' => 0,
10539             'line' => 21
10540             }, 'Parse::RecDescent::Literal' ),
10541             bless( {
10542             'hashname' => '__DIRECTIVE1__',
10543             'name' => '<commit>',
10544             'lookahead' => 0,
10545             'line' => 21,
10546             'code' => '$commit = 1'
10547             }, 'Parse::RecDescent::Directive' ),
10548             bless( {
10549             'subrule' => 'file_name',
10550             'matchrule' => 0,
10551             'implicit' => undef,
10552             'argcode' => undef,
10553             'lookahead' => 0,
10554             'line' => 21
10555             }, 'Parse::RecDescent::Subrule' ),
10556             bless( {
10557             'hashname' => '__ACTION1__',
10558             'lookahead' => 0,
10559             'line' => 22,
10560             'code' => '{ [\'include\', parse_included_file($item[3], $thisline)] }'
10561             }, 'Parse::RecDescent::Action' )
10562             ],
10563             'line' => undef
10564             }, 'Parse::RecDescent::Production' ),
10565             bless( {
10566             'number' => 1,
10567             'strcount' => 0,
10568             'dircount' => 2,
10569             'uncommit' => 0,
10570             'error' => 1,
10571             'patcount' => 0,
10572             'actcount' => 0,
10573             'items' => [
10574             bless( {
10575             'msg' => '',
10576             'hashname' => '__DIRECTIVE1__',
10577             'commitonly' => '?',
10578             'lookahead' => 0,
10579             'line' => 23
10580             }, 'Parse::RecDescent::Error' ),
10581             bless( {
10582             'hashname' => '__DIRECTIVE2__',
10583             'name' => '<reject>',
10584             'lookahead' => 0,
10585             'line' => 23
10586             }, 'Parse::RecDescent::UncondReject' )
10587             ],
10588             'line' => 23
10589             }, 'Parse::RecDescent::Production' )
10590             ],
10591             'name' => 'include_statement',
10592             'vars' => '',
10593             'line' => 21
10594             }, 'Parse::RecDescent::Rule' ),
10595             'regex' => bless( {
10596             'impcount' => 0,
10597             'calls' => [],
10598             'changed' => 0,
10599             'opcount' => 0,
10600             'prods' => [
10601             bless( {
10602             'number' => 0,
10603             'strcount' => 0,
10604             'dircount' => 0,
10605             'uncommit' => undef,
10606             'error' => undef,
10607             'patcount' => 1,
10608             'actcount' => 1,
10609             'items' => [
10610             bless( {
10611             'pattern' => '\\/(?:[^\\\\\\/]|\\\\.)*\\/',
10612             'hashname' => '__PATTERN1__',
10613             'description' => '/\\\\/(?:[^\\\\\\\\\\\\/]|\\\\\\\\.)*\\\\//',
10614             'lookahead' => 0,
10615             'rdelim' => '/',
10616             'line' => 83,
10617             'mod' => '',
10618             'ldelim' => '/'
10619             }, 'Parse::RecDescent::Token' ),
10620             bless( {
10621             'hashname' => '__ACTION1__',
10622             'lookahead' => 0,
10623             'line' => 84,
10624             'code' => '{ my $regex = \'qr\' . $item[1];
10625             my $re = eval $regex;
10626             if ($@) {
10627             die "Bad regex on line $prevline: $regex: $@";
10628             }
10629             $re
10630             }'
10631             }, 'Parse::RecDescent::Action' )
10632             ],
10633             'line' => undef
10634             }, 'Parse::RecDescent::Production' )
10635             ],
10636             'name' => 'regex',
10637             'vars' => '',
10638             'line' => 83
10639             }, 'Parse::RecDescent::Rule' ),
10640             'eof' => bless( {
10641             'impcount' => 0,
10642             'calls' => [],
10643             'changed' => 0,
10644             'opcount' => 0,
10645             'prods' => [
10646             bless( {
10647             'number' => 0,
10648             'strcount' => 0,
10649             'dircount' => 0,
10650             'uncommit' => undef,
10651             'error' => undef,
10652             'patcount' => 1,
10653             'actcount' => 0,
10654             'items' => [
10655             bless( {
10656             'pattern' => '^\\Z',
10657             'hashname' => '__PATTERN1__',
10658             'description' => '/^\\\\Z/',
10659             'lookahead' => 0,
10660             'rdelim' => '/',
10661             'line' => 8,
10662             'mod' => '',
10663             'ldelim' => '/'
10664             }, 'Parse::RecDescent::Token' )
10665             ],
10666             'line' => undef
10667             }, 'Parse::RecDescent::Production' )
10668             ],
10669             'name' => 'eof',
10670             'vars' => '',
10671             'line' => 8
10672             }, 'Parse::RecDescent::Rule' ),
10673             'table_name' => bless( {
10674             'impcount' => 0,
10675             'calls' => [
10676             'identifier'
10677             ],
10678             'changed' => 0,
10679             'opcount' => 0,
10680             'prods' => [
10681             bless( {
10682             'number' => 0,
10683             'strcount' => 0,
10684             'dircount' => 0,
10685             'uncommit' => undef,
10686             'error' => undef,
10687             'patcount' => 0,
10688             'actcount' => 0,
10689             'items' => [
10690             bless( {
10691             'subrule' => 'identifier',
10692             'matchrule' => 0,
10693             'implicit' => undef,
10694             'argcode' => undef,
10695             'lookahead' => 0,
10696             'line' => 27
10697             }, 'Parse::RecDescent::Subrule' )
10698             ],
10699             'line' => undef
10700             }, 'Parse::RecDescent::Production' )
10701             ],
10702             'name' => 'table_name',
10703             'vars' => '',
10704             'line' => 27
10705             }, 'Parse::RecDescent::Rule' ),
10706             'type' => bless( {
10707             'impcount' => 0,
10708             'calls' => [
10709             'identifier'
10710             ],
10711             'changed' => 0,
10712             'opcount' => 0,
10713             'prods' => [
10714             bless( {
10715             'number' => 0,
10716             'strcount' => 0,
10717             'dircount' => 0,
10718             'uncommit' => undef,
10719             'error' => undef,
10720             'patcount' => 0,
10721             'actcount' => 0,
10722             'items' => [
10723             bless( {
10724             'subrule' => 'identifier',
10725             'matchrule' => 0,
10726             'implicit' => undef,
10727             'argcode' => undef,
10728             'lookahead' => 0,
10729             'line' => 45
10730             }, 'Parse::RecDescent::Subrule' )
10731             ],
10732             'line' => undef
10733             }, 'Parse::RecDescent::Production' )
10734             ],
10735             'name' => 'type',
10736             'vars' => '',
10737             'line' => 45
10738             }, 'Parse::RecDescent::Rule' )
10739             },
10740             '_AUTOTREE' => undef,
10741             '_check' => {
10742             'thisoffset' => '',
10743             'itempos' => '',
10744             'prevoffset' => '',
10745             'prevline' => 1,
10746             'prevcolumn' => '',
10747             'thiscolumn' => ''
10748             },
10749             '_AUTOACTION' => undef
10750             }, 'Parse::RecDescent' );
10751             }