File Coverage

blib/lib/Text/FormBuilder/Parser.pm
Criterion Covered Total %
statement 2126 5545 38.3
branch 440 3068 14.3
condition 244 1440 16.9
subroutine 176 246 71.5
pod 0 1 0.0
total 2986 10300 28.9


line stmt bran cond sub pod time code
1             package Text::FormBuilder::Parser;
2 1     1   935 use Parse::RecDescent;
  1         32311  
  1         6  
3            
4             { my $ERRORS;
5            
6            
7             package Parse::RecDescent::Text::FormBuilder::Parser;
8 1     1   48 use strict;
  1         2  
  1         31  
9 1     1   17 use vars qw($skip $AUTOLOAD );
  1         1  
  1         94  
10             $skip = '\s*';
11            
12             my (
13             $context, # line or group
14             @sections, # master data structure
15             $section_head,
16             $section_id,
17             @lines, # lines in each section
18             $title,
19             $author,
20             $description,
21             %lists,
22             %patterns,
23             %subs, # validation subs
24             @group, # current group
25             %groups, # stored groups of fields
26             $type,
27             @options,
28             $required,
29             $list_var,
30             $size,
31             $maxlength,
32             $rows,
33             $cols,
34             );
35             $context = 'line';
36             ;
37            
38            
39             {
40             local $SIG{__WARN__} = sub {0};
41             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
42             *Parse::RecDescent::Text::FormBuilder::Parser::AUTOLOAD = sub
43             {
44 1     1   4 no strict 'refs';
  1         1  
  1         79  
45 0     0   0 $AUTOLOAD =~ s/^Parse::RecDescent::Text::FormBuilder::Parser/Parse::RecDescent/;
46 0         0 goto &{$AUTOLOAD};
  0         0  
47             }
48             }
49            
50             push @Parse::RecDescent::Text::FormBuilder::Parser::ISA, 'Parse::RecDescent';
51             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
52             sub Parse::RecDescent::Text::FormBuilder::Parser::row_col
53             {
54 0     0   0 my $thisparser = $_[0];
55 1     1   3 use vars q{$tracelevel};
  1         1  
  1         824  
56 0   0     0 local $tracelevel = ($tracelevel||0)+1;
57 0         0 $ERRORS = 0;
58 0         0 my $thisrule = $thisparser->{"rules"}{"row_col"};
59            
60 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [row_col]},
61             Parse::RecDescent::_tracefirst($_[1]),
62             q{row_col},
63             $tracelevel)
64             if defined $::RD_TRACE;
65            
66            
67 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
68            
69 0         0 my $score;
70             my $score_return;
71 0         0 my $_tok;
72 0         0 my $return = undef;
73 0         0 my $_matched=0;
74 0         0 my $commit=0;
75 0         0 my @item = ();
76 0         0 my %item = ();
77 0   0     0 my $repeating = defined($_[2]) && $_[2];
78 0   0     0 my $_noactions = defined($_[3]) && $_[3];
79 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
80 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
81 0         0 my $text;
82 0         0 my $lastsep="";
83 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
84 0         0 $expectation->at($_[1]);
85            
86 0         0 my $thisline;
87 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
88            
89            
90            
91 0   0     0 while (!$_matched && !$commit)
92             {
93            
94 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/\\d+/ /,\\s*/ /\\d+/]},
95             Parse::RecDescent::_tracefirst($_[1]),
96             q{row_col},
97             $tracelevel)
98             if defined $::RD_TRACE;
99 0         0 my $thisprod = $thisrule->{"prods"}[0];
100 0         0 $text = $_[1];
101 0         0 my $_savetext;
102 0         0 @item = (q{row_col});
103 0         0 %item = (__RULE__ => q{row_col});
104 0         0 my $repcount = 0;
105            
106            
107 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
108             q{row_col},
109             $tracelevel)
110             if defined $::RD_TRACE;
111 0         0 $lastsep = "";
112 0         0 $expectation->is(q{})->at($text);
113            
114            
115 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//)
  0 0       0  
116             {
117            
118 0         0 $expectation->failed();
119 0 0       0 Parse::RecDescent::_trace(q{<>},
120             Parse::RecDescent::_tracefirst($text))
121             if defined $::RD_TRACE;
122            
123 0         0 last;
124             }
125 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
126             . $& . q{])},
127             Parse::RecDescent::_tracefirst($text))
128             if defined $::RD_TRACE;
129 0         0 push @item, $item{__PATTERN1__}=$&;
130            
131            
132 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/,\\s*/]}, Parse::RecDescent::_tracefirst($text),
133             q{row_col},
134             $tracelevel)
135             if defined $::RD_TRACE;
136 0         0 $lastsep = "";
137 0         0 $expectation->is(q{/,\\s*/})->at($text);
138            
139            
140 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,\s*)//)
  0 0       0  
141             {
142            
143 0         0 $expectation->failed();
144 0 0       0 Parse::RecDescent::_trace(q{<>},
145             Parse::RecDescent::_tracefirst($text))
146             if defined $::RD_TRACE;
147            
148 0         0 last;
149             }
150 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
151             . $& . q{])},
152             Parse::RecDescent::_tracefirst($text))
153             if defined $::RD_TRACE;
154 0         0 push @item, $item{__PATTERN2__}=$&;
155            
156            
157 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
158             q{row_col},
159             $tracelevel)
160             if defined $::RD_TRACE;
161 0         0 $lastsep = "";
162 0         0 $expectation->is(q{/\\d+/})->at($text);
163            
164            
165 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//)
  0 0       0  
166             {
167            
168 0         0 $expectation->failed();
169 0 0       0 Parse::RecDescent::_trace(q{<>},
170             Parse::RecDescent::_tracefirst($text))
171             if defined $::RD_TRACE;
172            
173 0         0 last;
174             }
175 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
176             . $& . q{])},
177             Parse::RecDescent::_tracefirst($text))
178             if defined $::RD_TRACE;
179 0         0 push @item, $item{__PATTERN3__}=$&;
180            
181            
182 0 0       0 Parse::RecDescent::_trace(q{Trying action},
183             Parse::RecDescent::_tracefirst($text),
184             q{row_col},
185             $tracelevel)
186             if defined $::RD_TRACE;
187            
188            
189 0 0       0 $_tok = ($_noactions) ? 0 : do { $rows = $item[1]; $cols = $item[3] };
  0         0  
  0         0  
190 0 0       0 unless (defined $_tok)
191             {
192 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
193             if defined $::RD_TRACE;
194 0         0 last;
195             }
196 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
197             . $_tok . q{])},
198             Parse::RecDescent::_tracefirst($text))
199             if defined $::RD_TRACE;
200 0         0 push @item, $_tok;
201 0         0 $item{__ACTION1__}=$_tok;
202            
203            
204            
205 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ /,\\s*/ /\\d+/]<<},
206             Parse::RecDescent::_tracefirst($text),
207             q{row_col},
208             $tracelevel)
209             if defined $::RD_TRACE;
210 0         0 $_matched = 1;
211 0         0 last;
212             }
213            
214            
215 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
216             {
217            
218            
219 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
220 0 0       0 Parse::RecDescent::_trace(q{<>},
221             Parse::RecDescent::_tracefirst($_[1]),
222             q{row_col},
223             $tracelevel)
224             if defined $::RD_TRACE;
225 0         0 return undef;
226             }
227 0 0 0     0 if (!defined($return) && defined($score))
228             {
229 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
230             q{row_col},
231             $tracelevel)
232             if defined $::RD_TRACE;
233 0         0 $return = $score_return;
234             }
235 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
236 0 0       0 $return = $item[$#item] unless defined $return;
237 0 0       0 if (defined $::RD_TRACE)
238             {
239 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
240             $return . q{])}, "",
241             q{row_col},
242             $tracelevel);
243 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
244             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
245             Parse::RecDescent::_tracefirst($text),
246             , q{row_col},
247             $tracelevel)
248             }
249 0         0 $_[1] = $text;
250 0         0 return $return;
251             }
252            
253             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
254             sub Parse::RecDescent::Text::FormBuilder::Parser::group_def
255             {
256 12     12   11 my $thisparser = $_[0];
257 1     1   7 use vars q{$tracelevel};
  1         1  
  1         437  
258 12   50     25 local $tracelevel = ($tracelevel||0)+1;
259 12         8 $ERRORS = 0;
260 12         17 my $thisrule = $thisparser->{"rules"}{"group_def"};
261            
262 12 50       20 Parse::RecDescent::_trace(q{Trying rule: [group_def]},
263             Parse::RecDescent::_tracefirst($_[1]),
264             q{group_def},
265             $tracelevel)
266             if defined $::RD_TRACE;
267            
268            
269 12         6 my $err_at = @{$thisparser->{errors}};
  12         12  
270            
271 12         12 my $score;
272             my $score_return;
273 0         0 my $_tok;
274 12         12 my $return = undef;
275 12         6 my $_matched=0;
276 12         7 my $commit=0;
277 12         12 my @item = ();
278 12         11 my %item = ();
279 12   33     18 my $repeating = defined($_[2]) && $_[2];
280 12   33     22 my $_noactions = defined($_[3]) && $_[3];
281 12 50       22 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         7  
  12         15  
282 12 50       20 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
283 12         11 my $text;
284 12         11 my $lastsep="";
285 12         22 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
286 12         188 $expectation->at($_[1]);
287            
288 12         26 my $thisline;
289 12         28 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
290            
291            
292            
293 12   33     67 while (!$_matched && !$commit)
294             {
295            
296 12 50       18 Parse::RecDescent::_trace(q{Trying production: ['!group' var_name '\{' field_line '\}']},
297             Parse::RecDescent::_tracefirst($_[1]),
298             q{group_def},
299             $tracelevel)
300             if defined $::RD_TRACE;
301 12         12 my $thisprod = $thisrule->{"prods"}[0];
302 12         13 $text = $_[1];
303 12         6 my $_savetext;
304 12         14 @item = (q{group_def});
305 12         18 %item = (__RULE__ => q{group_def});
306 12         8 my $repcount = 0;
307            
308            
309 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!group']},
310             Parse::RecDescent::_tracefirst($text),
311             q{group_def},
312             $tracelevel)
313             if defined $::RD_TRACE;
314 12         7 $lastsep = "";
315 12         20 $expectation->is(q{})->at($text);
316            
317            
318 12 100 33     77 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!group//)
  12 50       72  
319             {
320            
321 12         20 $expectation->failed();
322 12 50       31 Parse::RecDescent::_trace(qq{<>},
323             Parse::RecDescent::_tracefirst($text))
324             if defined $::RD_TRACE;
325 12         15 last;
326             }
327 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
328             . $& . q{])},
329             Parse::RecDescent::_tracefirst($text))
330             if defined $::RD_TRACE;
331 0         0 push @item, $item{__STRING1__}=$&;
332            
333            
334 0 0       0 Parse::RecDescent::_trace(q{Trying action},
335             Parse::RecDescent::_tracefirst($text),
336             q{group_def},
337             $tracelevel)
338             if defined $::RD_TRACE;
339            
340            
341 0 0       0 $_tok = ($_noactions) ? 0 : do { $context = 'group' };
  0         0  
342 0 0       0 unless (defined $_tok)
343             {
344 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
345             if defined $::RD_TRACE;
346 0         0 last;
347             }
348 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
349             . $_tok . q{])},
350             Parse::RecDescent::_tracefirst($text))
351             if defined $::RD_TRACE;
352 0         0 push @item, $_tok;
353 0         0 $item{__ACTION1__}=$_tok;
354            
355            
356 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [var_name]},
357             Parse::RecDescent::_tracefirst($text),
358             q{group_def},
359             $tracelevel)
360             if defined $::RD_TRACE;
361 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         780  
  0         0  
362 0         0 $expectation->is(q{var_name})->at($text);
363 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::var_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
364             {
365            
366 0 0       0 Parse::RecDescent::_trace(q{<>},
367             Parse::RecDescent::_tracefirst($text),
368             q{group_def},
369             $tracelevel)
370             if defined $::RD_TRACE;
371 0         0 $expectation->failed();
372 0         0 last;
373             }
374 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [var_name]<< (return value: [}
375             . $_tok . q{]},
376            
377             Parse::RecDescent::_tracefirst($text),
378             q{group_def},
379             $tracelevel)
380             if defined $::RD_TRACE;
381 0         0 $item{q{var_name}} = $_tok;
382 0         0 push @item, $_tok;
383            
384             }
385            
386 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
387             Parse::RecDescent::_tracefirst($text),
388             q{group_def},
389             $tracelevel)
390             if defined $::RD_TRACE;
391 0         0 $lastsep = "";
392 0         0 $expectation->is(q{'\{'})->at($text);
393            
394            
395 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  0 0       0  
396             {
397            
398 0         0 $expectation->failed();
399 0 0       0 Parse::RecDescent::_trace(qq{<>},
400             Parse::RecDescent::_tracefirst($text))
401             if defined $::RD_TRACE;
402 0         0 last;
403             }
404 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
405             . $& . q{])},
406             Parse::RecDescent::_tracefirst($text))
407             if defined $::RD_TRACE;
408 0         0 push @item, $item{__STRING2__}=$&;
409            
410            
411 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [field_line]},
412             Parse::RecDescent::_tracefirst($text),
413             q{group_def},
414             $tracelevel)
415             if defined $::RD_TRACE;
416 0         0 $expectation->is(q{field_line})->at($text);
417            
418 0 0       0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::field_line, 1, 100000000, $_noactions,$expectation,undef)))
419             {
420 0 0       0 Parse::RecDescent::_trace(q{<>},
421             Parse::RecDescent::_tracefirst($text),
422             q{group_def},
423             $tracelevel)
424             if defined $::RD_TRACE;
425 0         0 last;
426             }
427 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [field_line]<< (}
428             . @$_tok . q{ times)},
429            
430             Parse::RecDescent::_tracefirst($text),
431             q{group_def},
432             $tracelevel)
433             if defined $::RD_TRACE;
434 0         0 $item{q{field_line(s)}} = $_tok;
435 0         0 push @item, $_tok;
436            
437            
438            
439 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
440             Parse::RecDescent::_tracefirst($text),
441             q{group_def},
442             $tracelevel)
443             if defined $::RD_TRACE;
444 0         0 $lastsep = "";
445 0         0 $expectation->is(q{'\}'})->at($text);
446            
447            
448 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  0 0       0  
449             {
450            
451 0         0 $expectation->failed();
452 0 0       0 Parse::RecDescent::_trace(qq{<>},
453             Parse::RecDescent::_tracefirst($text))
454             if defined $::RD_TRACE;
455 0         0 last;
456             }
457 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
458             . $& . q{])},
459             Parse::RecDescent::_tracefirst($text))
460             if defined $::RD_TRACE;
461 0         0 push @item, $item{__STRING3__}=$&;
462            
463            
464 0 0       0 Parse::RecDescent::_trace(q{Trying action},
465             Parse::RecDescent::_tracefirst($text),
466             q{group_def},
467             $tracelevel)
468             if defined $::RD_TRACE;
469            
470            
471 0 0       0 $_tok = ($_noactions) ? 0 : do { $context = 'line' };
  0         0  
472 0 0       0 unless (defined $_tok)
473             {
474 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
475             if defined $::RD_TRACE;
476 0         0 last;
477             }
478 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
479             . $_tok . q{])},
480             Parse::RecDescent::_tracefirst($text))
481             if defined $::RD_TRACE;
482 0         0 push @item, $_tok;
483 0         0 $item{__ACTION2__}=$_tok;
484            
485            
486 0 0       0 Parse::RecDescent::_trace(q{Trying action},
487             Parse::RecDescent::_tracefirst($text),
488             q{group_def},
489             $tracelevel)
490             if defined $::RD_TRACE;
491            
492            
493 0 0       0 $_tok = ($_noactions) ? 0 : do {
494             #warn "$item{var_name} group; context $context\n"
495 0         0 $groups{$item{var_name}} = [ @group ];
496 0         0 @group = ();
497             };
498 0 0       0 unless (defined $_tok)
499             {
500 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
501             if defined $::RD_TRACE;
502 0         0 last;
503             }
504 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
505             . $_tok . q{])},
506             Parse::RecDescent::_tracefirst($text))
507             if defined $::RD_TRACE;
508 0         0 push @item, $_tok;
509 0         0 $item{__ACTION3__}=$_tok;
510            
511            
512            
513 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!group' var_name '\{' field_line '\}']<<},
514             Parse::RecDescent::_tracefirst($text),
515             q{group_def},
516             $tracelevel)
517             if defined $::RD_TRACE;
518 0         0 $_matched = 1;
519 0         0 last;
520             }
521            
522            
523 12 50 33     60 unless ( $_matched || defined($return) || defined($score) )
      33        
524             {
525            
526            
527 12         8 $_[1] = $text; # NOT SURE THIS IS NEEDED
528 12 50       22 Parse::RecDescent::_trace(q{<>},
529             Parse::RecDescent::_tracefirst($_[1]),
530             q{group_def},
531             $tracelevel)
532             if defined $::RD_TRACE;
533 12         43 return undef;
534             }
535 0 0 0     0 if (!defined($return) && defined($score))
536             {
537 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
538             q{group_def},
539             $tracelevel)
540             if defined $::RD_TRACE;
541 0         0 $return = $score_return;
542             }
543 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
544 0 0       0 $return = $item[$#item] unless defined $return;
545 0 0       0 if (defined $::RD_TRACE)
546             {
547 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
548             $return . q{])}, "",
549             q{group_def},
550             $tracelevel);
551 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
552             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
553             Parse::RecDescent::_tracefirst($text),
554             , q{group_def},
555             $tracelevel)
556             }
557 0         0 $_[1] = $text;
558 0         0 return $return;
559             }
560            
561             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
562             sub Parse::RecDescent::Text::FormBuilder::Parser::field_size
563             {
564 3     3   26 my $thisparser = $_[0];
565 1     1   4 use vars q{$tracelevel};
  1         2  
  1         342  
566 3   50     7 local $tracelevel = ($tracelevel||0)+1;
567 3         2 $ERRORS = 0;
568 3         5 my $thisrule = $thisparser->{"rules"}{"field_size"};
569            
570 3 50       6 Parse::RecDescent::_trace(q{Trying rule: [field_size]},
571             Parse::RecDescent::_tracefirst($_[1]),
572             q{field_size},
573             $tracelevel)
574             if defined $::RD_TRACE;
575            
576            
577 3         1 my $err_at = @{$thisparser->{errors}};
  3         5  
578            
579 3         4 my $score;
580             my $score_return;
581 0         0 my $_tok;
582 3         3 my $return = undef;
583 3         2 my $_matched=0;
584 3         3 my $commit=0;
585 3         4 my @item = ();
586 3         3 my %item = ();
587 3   33     6 my $repeating = defined($_[2]) && $_[2];
588 3   33     7 my $_noactions = defined($_[3]) && $_[3];
589 3 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
590 3 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
591 3         2 my $text;
592 3         4 my $lastsep="";
593 3         6 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
594 3         50 $expectation->at($_[1]);
595            
596 3         6 my $thisline;
597 3         8 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
598            
599            
600            
601 3   33     18 while (!$_matched && !$commit)
602             {
603            
604 3 50       6 Parse::RecDescent::_trace(q{Trying production: ['[' row_col, or size ']']},
605             Parse::RecDescent::_tracefirst($_[1]),
606             q{field_size},
607             $tracelevel)
608             if defined $::RD_TRACE;
609 3         4 my $thisprod = $thisrule->{"prods"}[0];
610 3         2 $text = $_[1];
611 3         3 my $_savetext;
612 3         4 @item = (q{field_size});
613 3         7 %item = (__RULE__ => q{field_size});
614 3         2 my $repcount = 0;
615            
616            
617 3 50       4 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
618             Parse::RecDescent::_tracefirst($text),
619             q{field_size},
620             $tracelevel)
621             if defined $::RD_TRACE;
622 3         4 $lastsep = "";
623 3         6 $expectation->is(q{})->at($text);
624            
625            
626 3 50 33     34 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  3 50       20  
627             {
628            
629 3         5 $expectation->failed();
630 3 50       10 Parse::RecDescent::_trace(qq{<>},
631             Parse::RecDescent::_tracefirst($text))
632             if defined $::RD_TRACE;
633 3         4 last;
634             }
635 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
636             . $& . q{])},
637             Parse::RecDescent::_tracefirst($text))
638             if defined $::RD_TRACE;
639 0         0 push @item, $item{__STRING1__}=$&;
640            
641            
642 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_field_size]},
643             Parse::RecDescent::_tracefirst($text),
644             q{field_size},
645             $tracelevel)
646             if defined $::RD_TRACE;
647 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         425  
  0         0  
648 0         0 $expectation->is(q{row_col, or size})->at($text);
649 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_field_size($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
650             {
651            
652 0 0       0 Parse::RecDescent::_trace(q{<>},
653             Parse::RecDescent::_tracefirst($text),
654             q{field_size},
655             $tracelevel)
656             if defined $::RD_TRACE;
657 0         0 $expectation->failed();
658 0         0 last;
659             }
660 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_field_size]<< (return value: [}
661             . $_tok . q{]},
662            
663             Parse::RecDescent::_tracefirst($text),
664             q{field_size},
665             $tracelevel)
666             if defined $::RD_TRACE;
667 0         0 $item{q{_alternation_1_of_production_1_of_rule_field_size}} = $_tok;
668 0         0 push @item, $_tok;
669            
670             }
671            
672 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [']']},
673             Parse::RecDescent::_tracefirst($text),
674             q{field_size},
675             $tracelevel)
676             if defined $::RD_TRACE;
677 0         0 $lastsep = "";
678 0         0 $expectation->is(q{']'})->at($text);
679            
680            
681 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  0 0       0  
682             {
683            
684 0         0 $expectation->failed();
685 0 0       0 Parse::RecDescent::_trace(qq{<>},
686             Parse::RecDescent::_tracefirst($text))
687             if defined $::RD_TRACE;
688 0         0 last;
689             }
690 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
691             . $& . q{])},
692             Parse::RecDescent::_tracefirst($text))
693             if defined $::RD_TRACE;
694 0         0 push @item, $item{__STRING2__}=$&;
695            
696            
697            
698 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['[' row_col, or size ']']<<},
699             Parse::RecDescent::_tracefirst($text),
700             q{field_size},
701             $tracelevel)
702             if defined $::RD_TRACE;
703 0         0 $_matched = 1;
704 0         0 last;
705             }
706            
707            
708 3 50 33     16 unless ( $_matched || defined($return) || defined($score) )
      33        
709             {
710            
711            
712 3         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
713 3 50       6 Parse::RecDescent::_trace(q{<>},
714             Parse::RecDescent::_tracefirst($_[1]),
715             q{field_size},
716             $tracelevel)
717             if defined $::RD_TRACE;
718 3         10 return undef;
719             }
720 0 0 0     0 if (!defined($return) && defined($score))
721             {
722 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
723             q{field_size},
724             $tracelevel)
725             if defined $::RD_TRACE;
726 0         0 $return = $score_return;
727             }
728 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
729 0 0       0 $return = $item[$#item] unless defined $return;
730 0 0       0 if (defined $::RD_TRACE)
731             {
732 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
733             $return . q{])}, "",
734             q{field_size},
735             $tracelevel);
736 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
737             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
738             Parse::RecDescent::_tracefirst($text),
739             , q{field_size},
740             $tracelevel)
741             }
742 0         0 $_[1] = $text;
743 0         0 return $return;
744             }
745            
746             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
747             sub Parse::RecDescent::Text::FormBuilder::Parser::heading
748             {
749 12     12   11 my $thisparser = $_[0];
750 1     1   6 use vars q{$tracelevel};
  1         1  
  1         739  
751 12   50     20 local $tracelevel = ($tracelevel||0)+1;
752 12         9 $ERRORS = 0;
753 12         15 my $thisrule = $thisparser->{"rules"}{"heading"};
754            
755 12 50       16 Parse::RecDescent::_trace(q{Trying rule: [heading]},
756             Parse::RecDescent::_tracefirst($_[1]),
757             q{heading},
758             $tracelevel)
759             if defined $::RD_TRACE;
760            
761            
762 12         11 my $err_at = @{$thisparser->{errors}};
  12         16  
763            
764 12         8 my $score;
765             my $score_return;
766 0         0 my $_tok;
767 12         8 my $return = undef;
768 12         10 my $_matched=0;
769 12         7 my $commit=0;
770 12         10 my @item = ();
771 12         12 my %item = ();
772 12   33     25 my $repeating = defined($_[2]) && $_[2];
773 12   33     21 my $_noactions = defined($_[3]) && $_[3];
774 12 50       16 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         10  
  12         14  
775 12 50       25 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
776 12         10 my $text;
777 12         11 my $lastsep="";
778 12         25 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
779 12         197 $expectation->at($_[1]);
780            
781 12         24 my $thisline;
782 12         30 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
783            
784            
785            
786 12   33     61 while (!$_matched && !$commit)
787             {
788            
789 12 50       18 Parse::RecDescent::_trace(q{Trying production: ['!head' /.*/]},
790             Parse::RecDescent::_tracefirst($_[1]),
791             q{heading},
792             $tracelevel)
793             if defined $::RD_TRACE;
794 12         14 my $thisprod = $thisrule->{"prods"}[0];
795 12         11 $text = $_[1];
796 12         12 my $_savetext;
797 12         15 @item = (q{heading});
798 12         19 %item = (__RULE__ => q{heading});
799 12         12 my $repcount = 0;
800            
801            
802 12 50       14 Parse::RecDescent::_trace(q{Trying terminal: ['!head']},
803             Parse::RecDescent::_tracefirst($text),
804             q{heading},
805             $tracelevel)
806             if defined $::RD_TRACE;
807 12         9 $lastsep = "";
808 12         21 $expectation->is(q{})->at($text);
809            
810            
811 12 50 33     84 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!head//)
  12 50       76  
812             {
813            
814 12         17 $expectation->failed();
815 12 50       31 Parse::RecDescent::_trace(qq{<>},
816             Parse::RecDescent::_tracefirst($text))
817             if defined $::RD_TRACE;
818 12         16 last;
819             }
820 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
821             . $& . q{])},
822             Parse::RecDescent::_tracefirst($text))
823             if defined $::RD_TRACE;
824 0         0 push @item, $item{__STRING1__}=$&;
825            
826            
827 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
828             q{heading},
829             $tracelevel)
830             if defined $::RD_TRACE;
831 0         0 $lastsep = "";
832 0         0 $expectation->is(q{/.*/})->at($text);
833            
834            
835 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
836             {
837            
838 0         0 $expectation->failed();
839 0 0       0 Parse::RecDescent::_trace(q{<>},
840             Parse::RecDescent::_tracefirst($text))
841             if defined $::RD_TRACE;
842            
843 0         0 last;
844             }
845 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
846             . $& . q{])},
847             Parse::RecDescent::_tracefirst($text))
848             if defined $::RD_TRACE;
849 0         0 push @item, $item{__PATTERN1__}=$&;
850            
851            
852 0 0       0 Parse::RecDescent::_trace(q{Trying action},
853             Parse::RecDescent::_tracefirst($text),
854             q{heading},
855             $tracelevel)
856             if defined $::RD_TRACE;
857            
858            
859 0 0       0 $_tok = ($_noactions) ? 0 : do { push @lines, [ 'head', $item[2] ] };
  0         0  
860 0 0       0 unless (defined $_tok)
861             {
862 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
863             if defined $::RD_TRACE;
864 0         0 last;
865             }
866 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
867             . $_tok . q{])},
868             Parse::RecDescent::_tracefirst($text))
869             if defined $::RD_TRACE;
870 0         0 push @item, $_tok;
871 0         0 $item{__ACTION1__}=$_tok;
872            
873            
874            
875 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!head' /.*/]<<},
876             Parse::RecDescent::_tracefirst($text),
877             q{heading},
878             $tracelevel)
879             if defined $::RD_TRACE;
880 0         0 $_matched = 1;
881 0         0 last;
882             }
883            
884            
885 12 50 33     53 unless ( $_matched || defined($return) || defined($score) )
      33        
886             {
887            
888            
889 12         9 $_[1] = $text; # NOT SURE THIS IS NEEDED
890 12 50       18 Parse::RecDescent::_trace(q{<>},
891             Parse::RecDescent::_tracefirst($_[1]),
892             q{heading},
893             $tracelevel)
894             if defined $::RD_TRACE;
895 12         39 return undef;
896             }
897 0 0 0     0 if (!defined($return) && defined($score))
898             {
899 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
900             q{heading},
901             $tracelevel)
902             if defined $::RD_TRACE;
903 0         0 $return = $score_return;
904             }
905 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
906 0 0       0 $return = $item[$#item] unless defined $return;
907 0 0       0 if (defined $::RD_TRACE)
908             {
909 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
910             $return . q{])}, "",
911             q{heading},
912             $tracelevel);
913 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
914             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
915             Parse::RecDescent::_tracefirst($text),
916             , q{heading},
917             $tracelevel)
918             }
919 0         0 $_[1] = $text;
920 0         0 return $return;
921             }
922            
923             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
924             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_type
925             {
926 0     0   0 my $thisparser = $_[0];
927 1     1   4 use vars q{$tracelevel};
  1         2  
  1         236  
928 0   0     0 local $tracelevel = ($tracelevel||0)+1;
929 0         0 $ERRORS = 0;
930 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_type"};
931            
932 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_type]},
933             Parse::RecDescent::_tracefirst($_[1]),
934             q{_alternation_1_of_production_1_of_rule_type},
935             $tracelevel)
936             if defined $::RD_TRACE;
937            
938            
939 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
940            
941 0         0 my $score;
942             my $score_return;
943 0         0 my $_tok;
944 0         0 my $return = undef;
945 0         0 my $_matched=0;
946 0         0 my $commit=0;
947 0         0 my @item = ();
948 0         0 my %item = ();
949 0   0     0 my $repeating = defined($_[2]) && $_[2];
950 0   0     0 my $_noactions = defined($_[3]) && $_[3];
951 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
952 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
953 0         0 my $text;
954 0         0 my $lastsep="";
955 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
956 0         0 $expectation->at($_[1]);
957            
958 0         0 my $thisline;
959 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
960            
961            
962            
963 0   0     0 while (!$_matched && !$commit)
964             {
965            
966 0 0       0 Parse::RecDescent::_trace(q{Trying production: [builtin_field]},
967             Parse::RecDescent::_tracefirst($_[1]),
968             q{_alternation_1_of_production_1_of_rule_type},
969             $tracelevel)
970             if defined $::RD_TRACE;
971 0         0 my $thisprod = $thisrule->{"prods"}[0];
972 0         0 $text = $_[1];
973 0         0 my $_savetext;
974 0         0 @item = (q{_alternation_1_of_production_1_of_rule_type});
975 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_type});
976 0         0 my $repcount = 0;
977            
978            
979 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [builtin_field]},
980             Parse::RecDescent::_tracefirst($text),
981             q{_alternation_1_of_production_1_of_rule_type},
982             $tracelevel)
983             if defined $::RD_TRACE;
984 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         232  
  0         0  
985 0         0 $expectation->is(q{})->at($text);
986 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::builtin_field($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
987             {
988            
989 0 0       0 Parse::RecDescent::_trace(q{<>},
990             Parse::RecDescent::_tracefirst($text),
991             q{_alternation_1_of_production_1_of_rule_type},
992             $tracelevel)
993             if defined $::RD_TRACE;
994 0         0 $expectation->failed();
995 0         0 last;
996             }
997 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [builtin_field]<< (return value: [}
998             . $_tok . q{]},
999            
1000             Parse::RecDescent::_tracefirst($text),
1001             q{_alternation_1_of_production_1_of_rule_type},
1002             $tracelevel)
1003             if defined $::RD_TRACE;
1004 0         0 $item{q{builtin_field}} = $_tok;
1005 0         0 push @item, $_tok;
1006            
1007             }
1008            
1009            
1010 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [builtin_field]<<},
1011             Parse::RecDescent::_tracefirst($text),
1012             q{_alternation_1_of_production_1_of_rule_type},
1013             $tracelevel)
1014             if defined $::RD_TRACE;
1015 0         0 $_matched = 1;
1016 0         0 last;
1017             }
1018            
1019            
1020 0   0     0 while (!$_matched && !$commit)
1021             {
1022            
1023 0 0       0 Parse::RecDescent::_trace(q{Trying production: [var_name]},
1024             Parse::RecDescent::_tracefirst($_[1]),
1025             q{_alternation_1_of_production_1_of_rule_type},
1026             $tracelevel)
1027             if defined $::RD_TRACE;
1028 0         0 my $thisprod = $thisrule->{"prods"}[1];
1029 0         0 $text = $_[1];
1030 0         0 my $_savetext;
1031 0         0 @item = (q{_alternation_1_of_production_1_of_rule_type});
1032 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_type});
1033 0         0 my $repcount = 0;
1034            
1035            
1036 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [var_name]},
1037             Parse::RecDescent::_tracefirst($text),
1038             q{_alternation_1_of_production_1_of_rule_type},
1039             $tracelevel)
1040             if defined $::RD_TRACE;
1041 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         383  
  0         0  
1042 0         0 $expectation->is(q{})->at($text);
1043 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::var_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1044             {
1045            
1046 0 0       0 Parse::RecDescent::_trace(q{<>},
1047             Parse::RecDescent::_tracefirst($text),
1048             q{_alternation_1_of_production_1_of_rule_type},
1049             $tracelevel)
1050             if defined $::RD_TRACE;
1051 0         0 $expectation->failed();
1052 0         0 last;
1053             }
1054 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [var_name]<< (return value: [}
1055             . $_tok . q{]},
1056            
1057             Parse::RecDescent::_tracefirst($text),
1058             q{_alternation_1_of_production_1_of_rule_type},
1059             $tracelevel)
1060             if defined $::RD_TRACE;
1061 0         0 $item{q{var_name}} = $_tok;
1062 0         0 push @item, $_tok;
1063            
1064             }
1065            
1066 0 0       0 Parse::RecDescent::_trace(q{Trying action},
1067             Parse::RecDescent::_tracefirst($text),
1068             q{_alternation_1_of_production_1_of_rule_type},
1069             $tracelevel)
1070             if defined $::RD_TRACE;
1071            
1072            
1073 0 0       0 $_tok = ($_noactions) ? 0 : do { warn "[Text::FormBuilder] Using field group names directly is not (yet) supported (input line $thisline)\n"; 'text' };
  0         0  
  0         0  
1074 0 0       0 unless (defined $_tok)
1075             {
1076 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1077             if defined $::RD_TRACE;
1078 0         0 last;
1079             }
1080 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1081             . $_tok . q{])},
1082             Parse::RecDescent::_tracefirst($text))
1083             if defined $::RD_TRACE;
1084 0         0 push @item, $_tok;
1085 0         0 $item{__ACTION1__}=$_tok;
1086            
1087            
1088            
1089 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [var_name]<<},
1090             Parse::RecDescent::_tracefirst($text),
1091             q{_alternation_1_of_production_1_of_rule_type},
1092             $tracelevel)
1093             if defined $::RD_TRACE;
1094 0         0 $_matched = 1;
1095 0         0 last;
1096             }
1097            
1098            
1099 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
1100             {
1101            
1102            
1103 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1104 0 0       0 Parse::RecDescent::_trace(q{<>},
1105             Parse::RecDescent::_tracefirst($_[1]),
1106             q{_alternation_1_of_production_1_of_rule_type},
1107             $tracelevel)
1108             if defined $::RD_TRACE;
1109 0         0 return undef;
1110             }
1111 0 0 0     0 if (!defined($return) && defined($score))
1112             {
1113 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1114             q{_alternation_1_of_production_1_of_rule_type},
1115             $tracelevel)
1116             if defined $::RD_TRACE;
1117 0         0 $return = $score_return;
1118             }
1119 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1120 0 0       0 $return = $item[$#item] unless defined $return;
1121 0 0       0 if (defined $::RD_TRACE)
1122             {
1123 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1124             $return . q{])}, "",
1125             q{_alternation_1_of_production_1_of_rule_type},
1126             $tracelevel);
1127 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1128             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1129             Parse::RecDescent::_tracefirst($text),
1130             , q{_alternation_1_of_production_1_of_rule_type},
1131             $tracelevel)
1132             }
1133 0         0 $_[1] = $text;
1134 0         0 return $return;
1135             }
1136            
1137             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1138             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_validate
1139             {
1140 0     0   0 my $thisparser = $_[0];
1141 1     1   4 use vars q{$tracelevel};
  1         1  
  1         237  
1142 0   0     0 local $tracelevel = ($tracelevel||0)+1;
1143 0         0 $ERRORS = 0;
1144 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_validate"};
1145            
1146 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_validate]},
1147             Parse::RecDescent::_tracefirst($_[1]),
1148             q{_alternation_1_of_production_1_of_rule_validate},
1149             $tracelevel)
1150             if defined $::RD_TRACE;
1151            
1152            
1153 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
1154            
1155 0         0 my $score;
1156             my $score_return;
1157 0         0 my $_tok;
1158 0         0 my $return = undef;
1159 0         0 my $_matched=0;
1160 0         0 my $commit=0;
1161 0         0 my @item = ();
1162 0         0 my %item = ();
1163 0   0     0 my $repeating = defined($_[2]) && $_[2];
1164 0   0     0 my $_noactions = defined($_[3]) && $_[3];
1165 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
1166 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1167 0         0 my $text;
1168 0         0 my $lastsep="";
1169 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1170 0         0 $expectation->at($_[1]);
1171            
1172 0         0 my $thisline;
1173 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1174            
1175            
1176            
1177 0   0     0 while (!$_matched && !$commit)
1178             {
1179            
1180 0 0       0 Parse::RecDescent::_trace(q{Trying production: [optional_pattern]},
1181             Parse::RecDescent::_tracefirst($_[1]),
1182             q{_alternation_1_of_production_1_of_rule_validate},
1183             $tracelevel)
1184             if defined $::RD_TRACE;
1185 0         0 my $thisprod = $thisrule->{"prods"}[0];
1186 0         0 $text = $_[1];
1187 0         0 my $_savetext;
1188 0         0 @item = (q{_alternation_1_of_production_1_of_rule_validate});
1189 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_validate});
1190 0         0 my $repcount = 0;
1191            
1192            
1193 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [optional_pattern]},
1194             Parse::RecDescent::_tracefirst($text),
1195             q{_alternation_1_of_production_1_of_rule_validate},
1196             $tracelevel)
1197             if defined $::RD_TRACE;
1198 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         217  
  0         0  
1199 0         0 $expectation->is(q{})->at($text);
1200 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::optional_pattern($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1201             {
1202            
1203 0 0       0 Parse::RecDescent::_trace(q{<>},
1204             Parse::RecDescent::_tracefirst($text),
1205             q{_alternation_1_of_production_1_of_rule_validate},
1206             $tracelevel)
1207             if defined $::RD_TRACE;
1208 0         0 $expectation->failed();
1209 0         0 last;
1210             }
1211 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [optional_pattern]<< (return value: [}
1212             . $_tok . q{]},
1213            
1214             Parse::RecDescent::_tracefirst($text),
1215             q{_alternation_1_of_production_1_of_rule_validate},
1216             $tracelevel)
1217             if defined $::RD_TRACE;
1218 0         0 $item{q{optional_pattern}} = $_tok;
1219 0         0 push @item, $_tok;
1220            
1221             }
1222            
1223            
1224 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [optional_pattern]<<},
1225             Parse::RecDescent::_tracefirst($text),
1226             q{_alternation_1_of_production_1_of_rule_validate},
1227             $tracelevel)
1228             if defined $::RD_TRACE;
1229 0         0 $_matched = 1;
1230 0         0 last;
1231             }
1232            
1233            
1234 0   0     0 while (!$_matched && !$commit)
1235             {
1236            
1237 0 0       0 Parse::RecDescent::_trace(q{Trying production: [required_pattern]},
1238             Parse::RecDescent::_tracefirst($_[1]),
1239             q{_alternation_1_of_production_1_of_rule_validate},
1240             $tracelevel)
1241             if defined $::RD_TRACE;
1242 0         0 my $thisprod = $thisrule->{"prods"}[1];
1243 0         0 $text = $_[1];
1244 0         0 my $_savetext;
1245 0         0 @item = (q{_alternation_1_of_production_1_of_rule_validate});
1246 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_validate});
1247 0         0 my $repcount = 0;
1248            
1249            
1250 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [required_pattern]},
1251             Parse::RecDescent::_tracefirst($text),
1252             q{_alternation_1_of_production_1_of_rule_validate},
1253             $tracelevel)
1254             if defined $::RD_TRACE;
1255 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         324  
  0         0  
1256 0         0 $expectation->is(q{})->at($text);
1257 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::required_pattern($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1258             {
1259            
1260 0 0       0 Parse::RecDescent::_trace(q{<>},
1261             Parse::RecDescent::_tracefirst($text),
1262             q{_alternation_1_of_production_1_of_rule_validate},
1263             $tracelevel)
1264             if defined $::RD_TRACE;
1265 0         0 $expectation->failed();
1266 0         0 last;
1267             }
1268 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [required_pattern]<< (return value: [}
1269             . $_tok . q{]},
1270            
1271             Parse::RecDescent::_tracefirst($text),
1272             q{_alternation_1_of_production_1_of_rule_validate},
1273             $tracelevel)
1274             if defined $::RD_TRACE;
1275 0         0 $item{q{required_pattern}} = $_tok;
1276 0         0 push @item, $_tok;
1277            
1278             }
1279            
1280            
1281 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [required_pattern]<<},
1282             Parse::RecDescent::_tracefirst($text),
1283             q{_alternation_1_of_production_1_of_rule_validate},
1284             $tracelevel)
1285             if defined $::RD_TRACE;
1286 0         0 $_matched = 1;
1287 0         0 last;
1288             }
1289            
1290            
1291 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
1292             {
1293            
1294            
1295 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1296 0 0       0 Parse::RecDescent::_trace(q{<>},
1297             Parse::RecDescent::_tracefirst($_[1]),
1298             q{_alternation_1_of_production_1_of_rule_validate},
1299             $tracelevel)
1300             if defined $::RD_TRACE;
1301 0         0 return undef;
1302             }
1303 0 0 0     0 if (!defined($return) && defined($score))
1304             {
1305 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1306             q{_alternation_1_of_production_1_of_rule_validate},
1307             $tracelevel)
1308             if defined $::RD_TRACE;
1309 0         0 $return = $score_return;
1310             }
1311 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1312 0 0       0 $return = $item[$#item] unless defined $return;
1313 0 0       0 if (defined $::RD_TRACE)
1314             {
1315 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1316             $return . q{])}, "",
1317             q{_alternation_1_of_production_1_of_rule_validate},
1318             $tracelevel);
1319 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1320             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1321             Parse::RecDescent::_tracefirst($text),
1322             , q{_alternation_1_of_production_1_of_rule_validate},
1323             $tracelevel)
1324             }
1325 0         0 $_[1] = $text;
1326 0         0 return $return;
1327             }
1328            
1329             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1330             sub Parse::RecDescent::Text::FormBuilder::Parser::identifier
1331             {
1332 12     12   10 my $thisparser = $_[0];
1333 1     1   4 use vars q{$tracelevel};
  1         1  
  1         823  
1334 12   50     20 local $tracelevel = ($tracelevel||0)+1;
1335 12         10 $ERRORS = 0;
1336 12         15 my $thisrule = $thisparser->{"rules"}{"identifier"};
1337            
1338 12 50       15 Parse::RecDescent::_trace(q{Trying rule: [identifier]},
1339             Parse::RecDescent::_tracefirst($_[1]),
1340             q{identifier},
1341             $tracelevel)
1342             if defined $::RD_TRACE;
1343            
1344            
1345 12         8 my $err_at = @{$thisparser->{errors}};
  12         12  
1346            
1347 12         11 my $score;
1348             my $score_return;
1349 0         0 my $_tok;
1350 12         11 my $return = undef;
1351 12         7 my $_matched=0;
1352 12         8 my $commit=0;
1353 12         13 my @item = ();
1354 12         10 my %item = ();
1355 12   33     34 my $repeating = defined($_[2]) && $_[2];
1356 12   33     43 my $_noactions = defined($_[3]) && $_[3];
1357 12 50       17 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         10  
  12         13  
1358 12 50       22 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1359 12         9 my $text;
1360 12         9 my $lastsep="";
1361 12         23 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1362 12         193 $expectation->at($_[1]);
1363            
1364 12         24 my $thisline;
1365 12         24 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1366            
1367            
1368            
1369 12   33     70 while (!$_matched && !$commit)
1370             {
1371            
1372 12 50       17 Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
1373             Parse::RecDescent::_tracefirst($_[1]),
1374             q{identifier},
1375             $tracelevel)
1376             if defined $::RD_TRACE;
1377 12         12 my $thisprod = $thisrule->{"prods"}[0];
1378 12         11 $text = $_[1];
1379 12         11 my $_savetext;
1380 12         13 @item = (q{identifier});
1381 12         13 %item = (__RULE__ => q{identifier});
1382 12         10 my $repcount = 0;
1383            
1384            
1385 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
1386             q{identifier},
1387             $tracelevel)
1388             if defined $::RD_TRACE;
1389 12         12 $lastsep = "";
1390 12         19 $expectation->is(q{})->at($text);
1391            
1392            
1393 12 50 66     93 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\w+)//)
  12 100       79  
1394             {
1395            
1396 9         15 $expectation->failed();
1397 9 50       25 Parse::RecDescent::_trace(q{<>},
1398             Parse::RecDescent::_tracefirst($text))
1399             if defined $::RD_TRACE;
1400            
1401 9         13 last;
1402             }
1403 3 50       6 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1404             . $& . q{])},
1405             Parse::RecDescent::_tracefirst($text))
1406             if defined $::RD_TRACE;
1407 3         8 push @item, $item{__PATTERN1__}=$&;
1408            
1409            
1410            
1411 3 50       6 Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
1412             Parse::RecDescent::_tracefirst($text),
1413             q{identifier},
1414             $tracelevel)
1415             if defined $::RD_TRACE;
1416 3         2 $_matched = 1;
1417 3         4 last;
1418             }
1419            
1420            
1421 12 50 66     50 unless ( $_matched || defined($return) || defined($score) )
      66        
1422             {
1423            
1424            
1425 9         9 $_[1] = $text; # NOT SURE THIS IS NEEDED
1426 9 50       14 Parse::RecDescent::_trace(q{<>},
1427             Parse::RecDescent::_tracefirst($_[1]),
1428             q{identifier},
1429             $tracelevel)
1430             if defined $::RD_TRACE;
1431 9         33 return undef;
1432             }
1433 3 50 33     11 if (!defined($return) && defined($score))
1434             {
1435 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1436             q{identifier},
1437             $tracelevel)
1438             if defined $::RD_TRACE;
1439 0         0 $return = $score_return;
1440             }
1441 3         3 splice @{$thisparser->{errors}}, $err_at;
  3         5  
1442 3 50       6 $return = $item[$#item] unless defined $return;
1443 3 50       6 if (defined $::RD_TRACE)
1444             {
1445 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1446             $return . q{])}, "",
1447             q{identifier},
1448             $tracelevel);
1449 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1450             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1451             Parse::RecDescent::_tracefirst($text),
1452             , q{identifier},
1453             $tracelevel)
1454             }
1455 3         3 $_[1] = $text;
1456 3         13 return $return;
1457             }
1458            
1459             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1460             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_default
1461             {
1462 0     0   0 my $thisparser = $_[0];
1463 1     1   5 use vars q{$tracelevel};
  1         0  
  1         227  
1464 0   0     0 local $tracelevel = ($tracelevel||0)+1;
1465 0         0 $ERRORS = 0;
1466 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_default"};
1467            
1468 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_default]},
1469             Parse::RecDescent::_tracefirst($_[1]),
1470             q{_alternation_1_of_production_1_of_rule_default},
1471             $tracelevel)
1472             if defined $::RD_TRACE;
1473            
1474            
1475 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
1476            
1477 0         0 my $score;
1478             my $score_return;
1479 0         0 my $_tok;
1480 0         0 my $return = undef;
1481 0         0 my $_matched=0;
1482 0         0 my $commit=0;
1483 0         0 my @item = ();
1484 0         0 my %item = ();
1485 0   0     0 my $repeating = defined($_[2]) && $_[2];
1486 0   0     0 my $_noactions = defined($_[3]) && $_[3];
1487 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
1488 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1489 0         0 my $text;
1490 0         0 my $lastsep="";
1491 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1492 0         0 $expectation->at($_[1]);
1493            
1494 0         0 my $thisline;
1495 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1496            
1497            
1498            
1499 0   0     0 while (!$_matched && !$commit)
1500             {
1501            
1502 0 0       0 Parse::RecDescent::_trace(q{Trying production: [simple_multiword]},
1503             Parse::RecDescent::_tracefirst($_[1]),
1504             q{_alternation_1_of_production_1_of_rule_default},
1505             $tracelevel)
1506             if defined $::RD_TRACE;
1507 0         0 my $thisprod = $thisrule->{"prods"}[0];
1508 0         0 $text = $_[1];
1509 0         0 my $_savetext;
1510 0         0 @item = (q{_alternation_1_of_production_1_of_rule_default});
1511 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_default});
1512 0         0 my $repcount = 0;
1513            
1514            
1515 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [simple_multiword]},
1516             Parse::RecDescent::_tracefirst($text),
1517             q{_alternation_1_of_production_1_of_rule_default},
1518             $tracelevel)
1519             if defined $::RD_TRACE;
1520 1     1   3 if (1) { no strict qw{refs};
  1         2  
  1         207  
  0         0  
1521 0         0 $expectation->is(q{})->at($text);
1522 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::simple_multiword($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1523             {
1524            
1525 0 0       0 Parse::RecDescent::_trace(q{<>},
1526             Parse::RecDescent::_tracefirst($text),
1527             q{_alternation_1_of_production_1_of_rule_default},
1528             $tracelevel)
1529             if defined $::RD_TRACE;
1530 0         0 $expectation->failed();
1531 0         0 last;
1532             }
1533 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [simple_multiword]<< (return value: [}
1534             . $_tok . q{]},
1535            
1536             Parse::RecDescent::_tracefirst($text),
1537             q{_alternation_1_of_production_1_of_rule_default},
1538             $tracelevel)
1539             if defined $::RD_TRACE;
1540 0         0 $item{q{simple_multiword}} = $_tok;
1541 0         0 push @item, $_tok;
1542            
1543             }
1544            
1545            
1546 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [simple_multiword]<<},
1547             Parse::RecDescent::_tracefirst($text),
1548             q{_alternation_1_of_production_1_of_rule_default},
1549             $tracelevel)
1550             if defined $::RD_TRACE;
1551 0         0 $_matched = 1;
1552 0         0 last;
1553             }
1554            
1555            
1556 0   0     0 while (!$_matched && !$commit)
1557             {
1558            
1559 0 0       0 Parse::RecDescent::_trace(q{Trying production: [quoted_string]},
1560             Parse::RecDescent::_tracefirst($_[1]),
1561             q{_alternation_1_of_production_1_of_rule_default},
1562             $tracelevel)
1563             if defined $::RD_TRACE;
1564 0         0 my $thisprod = $thisrule->{"prods"}[1];
1565 0         0 $text = $_[1];
1566 0         0 my $_savetext;
1567 0         0 @item = (q{_alternation_1_of_production_1_of_rule_default});
1568 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_default});
1569 0         0 my $repcount = 0;
1570            
1571            
1572 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [quoted_string]},
1573             Parse::RecDescent::_tracefirst($text),
1574             q{_alternation_1_of_production_1_of_rule_default},
1575             $tracelevel)
1576             if defined $::RD_TRACE;
1577 1     1   7 if (1) { no strict qw{refs};
  1         1  
  1         312  
  0         0  
1578 0         0 $expectation->is(q{})->at($text);
1579 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::quoted_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1580             {
1581            
1582 0 0       0 Parse::RecDescent::_trace(q{<>},
1583             Parse::RecDescent::_tracefirst($text),
1584             q{_alternation_1_of_production_1_of_rule_default},
1585             $tracelevel)
1586             if defined $::RD_TRACE;
1587 0         0 $expectation->failed();
1588 0         0 last;
1589             }
1590 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [quoted_string]<< (return value: [}
1591             . $_tok . q{]},
1592            
1593             Parse::RecDescent::_tracefirst($text),
1594             q{_alternation_1_of_production_1_of_rule_default},
1595             $tracelevel)
1596             if defined $::RD_TRACE;
1597 0         0 $item{q{quoted_string}} = $_tok;
1598 0         0 push @item, $_tok;
1599            
1600             }
1601            
1602            
1603 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [quoted_string]<<},
1604             Parse::RecDescent::_tracefirst($text),
1605             q{_alternation_1_of_production_1_of_rule_default},
1606             $tracelevel)
1607             if defined $::RD_TRACE;
1608 0         0 $_matched = 1;
1609 0         0 last;
1610             }
1611            
1612            
1613 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
1614             {
1615            
1616            
1617 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1618 0 0       0 Parse::RecDescent::_trace(q{<>},
1619             Parse::RecDescent::_tracefirst($_[1]),
1620             q{_alternation_1_of_production_1_of_rule_default},
1621             $tracelevel)
1622             if defined $::RD_TRACE;
1623 0         0 return undef;
1624             }
1625 0 0 0     0 if (!defined($return) && defined($score))
1626             {
1627 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1628             q{_alternation_1_of_production_1_of_rule_default},
1629             $tracelevel)
1630             if defined $::RD_TRACE;
1631 0         0 $return = $score_return;
1632             }
1633 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1634 0 0       0 $return = $item[$#item] unless defined $return;
1635 0 0       0 if (defined $::RD_TRACE)
1636             {
1637 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1638             $return . q{])}, "",
1639             q{_alternation_1_of_production_1_of_rule_default},
1640             $tracelevel);
1641 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1642             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1643             Parse::RecDescent::_tracefirst($text),
1644             , q{_alternation_1_of_production_1_of_rule_default},
1645             $tracelevel)
1646             }
1647 0         0 $_[1] = $text;
1648 0         0 return $return;
1649             }
1650            
1651             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1652             sub Parse::RecDescent::Text::FormBuilder::Parser::blank
1653             {
1654 9     9   12 my $thisparser = $_[0];
1655 1     1   4 use vars q{$tracelevel};
  1         1  
  1         467  
1656 9   50     18 local $tracelevel = ($tracelevel||0)+1;
1657 9         10 $ERRORS = 0;
1658 9         10 my $thisrule = $thisparser->{"rules"}{"blank"};
1659            
1660 9 50       15 Parse::RecDescent::_trace(q{Trying rule: [blank]},
1661             Parse::RecDescent::_tracefirst($_[1]),
1662             q{blank},
1663             $tracelevel)
1664             if defined $::RD_TRACE;
1665            
1666            
1667 9         8 my $err_at = @{$thisparser->{errors}};
  9         13  
1668            
1669 9         6 my $score;
1670             my $score_return;
1671 0         0 my $_tok;
1672 9         8 my $return = undef;
1673 9         7 my $_matched=0;
1674 9         6 my $commit=0;
1675 9         9 my @item = ();
1676 9         8 my %item = ();
1677 9   33     19 my $repeating = defined($_[2]) && $_[2];
1678 9   33     17 my $_noactions = defined($_[3]) && $_[3];
1679 9 50       12 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  9         9  
  9         13  
1680 9 50       15 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1681 9         10 my $text;
1682 9         7 my $lastsep="";
1683 9         17 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1684 9         109 $expectation->at($_[1]);
1685            
1686 9         17 my $thisline;
1687 9         42 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1688            
1689            
1690            
1691 9   33     56 while (!$_matched && !$commit)
1692             {
1693            
1694 9 50       17 Parse::RecDescent::_trace(q{Trying production: []},
1695             Parse::RecDescent::_tracefirst($_[1]),
1696             q{blank},
1697             $tracelevel)
1698             if defined $::RD_TRACE;
1699 9         8 my $thisprod = $thisrule->{"prods"}[0];
1700 9         10 $text = $_[1];
1701 9         7 my $_savetext;
1702 9         11 @item = (q{blank});
1703 9         10 %item = (__RULE__ => q{blank});
1704 9         6 my $repcount = 0;
1705            
1706            
1707            
1708 9 50       16 Parse::RecDescent::_trace(q{>>Matched production: []<<},
1709             Parse::RecDescent::_tracefirst($text),
1710             q{blank},
1711             $tracelevel)
1712             if defined $::RD_TRACE;
1713 9         8 $_matched = 1;
1714 9         9 last;
1715             }
1716            
1717            
1718 9 0 33     19 unless ( $_matched || defined($return) || defined($score) )
      33        
1719             {
1720            
1721            
1722 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1723 0 0       0 Parse::RecDescent::_trace(q{<>},
1724             Parse::RecDescent::_tracefirst($_[1]),
1725             q{blank},
1726             $tracelevel)
1727             if defined $::RD_TRACE;
1728 0         0 return undef;
1729             }
1730 9 50 33     42 if (!defined($return) && defined($score))
1731             {
1732 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1733             q{blank},
1734             $tracelevel)
1735             if defined $::RD_TRACE;
1736 0         0 $return = $score_return;
1737             }
1738 9         7 splice @{$thisparser->{errors}}, $err_at;
  9         15  
1739 9 50       19 $return = $item[$#item] unless defined $return;
1740 9 50       13 if (defined $::RD_TRACE)
1741             {
1742 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1743             $return . q{])}, "",
1744             q{blank},
1745             $tracelevel);
1746 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1747             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1748             Parse::RecDescent::_tracefirst($text),
1749             , q{blank},
1750             $tracelevel)
1751             }
1752 9         8 $_[1] = $text;
1753 9         34 return $return;
1754             }
1755            
1756             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1757             sub Parse::RecDescent::Text::FormBuilder::Parser::validate_def
1758             {
1759 12     12   10 my $thisparser = $_[0];
1760 1     1   5 use vars q{$tracelevel};
  1         1  
  1         335  
1761 12   50     18 local $tracelevel = ($tracelevel||0)+1;
1762 12         12 $ERRORS = 0;
1763 12         14 my $thisrule = $thisparser->{"rules"}{"validate_def"};
1764            
1765 12 50       15 Parse::RecDescent::_trace(q{Trying rule: [validate_def]},
1766             Parse::RecDescent::_tracefirst($_[1]),
1767             q{validate_def},
1768             $tracelevel)
1769             if defined $::RD_TRACE;
1770            
1771            
1772 12         10 my $err_at = @{$thisparser->{errors}};
  12         14  
1773            
1774 12         9 my $score;
1775             my $score_return;
1776 0         0 my $_tok;
1777 12         8 my $return = undef;
1778 12         9 my $_matched=0;
1779 12         8 my $commit=0;
1780 12         9 my @item = ();
1781 12         17 my %item = ();
1782 12   33     23 my $repeating = defined($_[2]) && $_[2];
1783 12   33     25 my $_noactions = defined($_[3]) && $_[3];
1784 12 50       15 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         9  
  12         16  
1785 12 50       22 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1786 12         7 my $text;
1787 12         12 my $lastsep="";
1788 12         21 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1789 12         194 $expectation->at($_[1]);
1790            
1791 12         26 my $thisline;
1792 12         29 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1793            
1794            
1795            
1796 12   33     71 while (!$_matched && !$commit)
1797             {
1798 12 50       22 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
1799 12 50       15 Parse::RecDescent::_trace(q{Trying production: ['!validate' var_name ]},
1800             Parse::RecDescent::_tracefirst($_[1]),
1801             q{validate_def},
1802             $tracelevel)
1803             if defined $::RD_TRACE;
1804 12         13 my $thisprod = $thisrule->{"prods"}[0];
1805 12         12 $text = $_[1];
1806 12         8 my $_savetext;
1807 12         15 @item = (q{validate_def});
1808 12         17 %item = (__RULE__ => q{validate_def});
1809 12         15 my $repcount = 0;
1810            
1811            
1812 12 50       14 Parse::RecDescent::_trace(q{Trying terminal: ['!validate']},
1813             Parse::RecDescent::_tracefirst($text),
1814             q{validate_def},
1815             $tracelevel)
1816             if defined $::RD_TRACE;
1817 12         12 $lastsep = "";
1818 12         18 $expectation->is(q{})->at($text);
1819            
1820            
1821 12 100 33     84 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!validate//)
  12 50       70  
1822             {
1823            
1824 12         24 $expectation->failed();
1825 12 50       34 Parse::RecDescent::_trace(qq{<>},
1826             Parse::RecDescent::_tracefirst($text))
1827             if defined $::RD_TRACE;
1828 12         17 last;
1829             }
1830 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1831             . $& . q{])},
1832             Parse::RecDescent::_tracefirst($text))
1833             if defined $::RD_TRACE;
1834 0         0 push @item, $item{__STRING1__}=$&;
1835            
1836            
1837 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [var_name]},
1838             Parse::RecDescent::_tracefirst($text),
1839             q{validate_def},
1840             $tracelevel)
1841             if defined $::RD_TRACE;
1842 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         465  
  0         0  
1843 0         0 $expectation->is(q{var_name})->at($text);
1844 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::var_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1845             {
1846            
1847 0 0       0 Parse::RecDescent::_trace(q{<>},
1848             Parse::RecDescent::_tracefirst($text),
1849             q{validate_def},
1850             $tracelevel)
1851             if defined $::RD_TRACE;
1852 0         0 $expectation->failed();
1853 0         0 last;
1854             }
1855 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [var_name]<< (return value: [}
1856             . $_tok . q{]},
1857            
1858             Parse::RecDescent::_tracefirst($text),
1859             q{validate_def},
1860             $tracelevel)
1861             if defined $::RD_TRACE;
1862 0         0 $item{q{var_name}} = $_tok;
1863 0         0 push @item, $_tok;
1864            
1865             }
1866            
1867            
1868            
1869 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
1870             Parse::RecDescent::_tracefirst($text),
1871             q{validate_def},
1872             $tracelevel)
1873             if defined $::RD_TRACE;
1874 0         0 $_tok = do { Text::Balanced::extract_codeblock($text,undef,$skip,'{}');
  0         0  
1875             };
1876 0 0       0 if (defined($_tok))
1877             {
1878 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
1879             . $_tok . q{])},
1880             Parse::RecDescent::_tracefirst($text))
1881             if defined $::RD_TRACE;
1882             }
1883             else
1884             {
1885 0 0       0 Parse::RecDescent::_trace(q{<>},
1886             Parse::RecDescent::_tracefirst($text))
1887             if defined $::RD_TRACE;
1888             }
1889            
1890 0 0       0 last unless defined $_tok;
1891 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
1892            
1893            
1894 0 0       0 Parse::RecDescent::_trace(q{Trying action},
1895             Parse::RecDescent::_tracefirst($text),
1896             q{validate_def},
1897             $tracelevel)
1898             if defined $::RD_TRACE;
1899            
1900            
1901 0 0       0 $_tok = ($_noactions) ? 0 : do { $subs{$item{var_name}} = eval "sub $item[3]" };
  0         0  
1902 0 0       0 unless (defined $_tok)
1903             {
1904 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1905             if defined $::RD_TRACE;
1906 0         0 last;
1907             }
1908 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1909             . $_tok . q{])},
1910             Parse::RecDescent::_tracefirst($text))
1911             if defined $::RD_TRACE;
1912 0         0 push @item, $_tok;
1913 0         0 $item{__ACTION1__}=$_tok;
1914            
1915            
1916            
1917 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!validate' var_name ]<<},
1918             Parse::RecDescent::_tracefirst($text),
1919             q{validate_def},
1920             $tracelevel)
1921             if defined $::RD_TRACE;
1922 0         0 $_matched = 1;
1923 0         0 last;
1924             }
1925            
1926            
1927 12 50 33     57 unless ( $_matched || defined($return) || defined($score) )
      33        
1928             {
1929            
1930            
1931 12         15 $_[1] = $text; # NOT SURE THIS IS NEEDED
1932 12 50       13 Parse::RecDescent::_trace(q{<>},
1933             Parse::RecDescent::_tracefirst($_[1]),
1934             q{validate_def},
1935             $tracelevel)
1936             if defined $::RD_TRACE;
1937 12         45 return undef;
1938             }
1939 0 0 0     0 if (!defined($return) && defined($score))
1940             {
1941 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1942             q{validate_def},
1943             $tracelevel)
1944             if defined $::RD_TRACE;
1945 0         0 $return = $score_return;
1946             }
1947 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1948 0 0       0 $return = $item[$#item] unless defined $return;
1949 0 0       0 if (defined $::RD_TRACE)
1950             {
1951 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1952             $return . q{])}, "",
1953             q{validate_def},
1954             $tracelevel);
1955 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1956             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1957             Parse::RecDescent::_tracefirst($text),
1958             , q{validate_def},
1959             $tracelevel)
1960             }
1961 0         0 $_[1] = $text;
1962 0         0 return $return;
1963             }
1964            
1965             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1966             sub Parse::RecDescent::Text::FormBuilder::Parser::unknown_directive
1967             {
1968 12     12   11 my $thisparser = $_[0];
1969 1     1   3 use vars q{$tracelevel};
  1         12  
  1         718  
1970 12   50     18 local $tracelevel = ($tracelevel||0)+1;
1971 12         10 $ERRORS = 0;
1972 12         14 my $thisrule = $thisparser->{"rules"}{"unknown_directive"};
1973            
1974 12 50       19 Parse::RecDescent::_trace(q{Trying rule: [unknown_directive]},
1975             Parse::RecDescent::_tracefirst($_[1]),
1976             q{unknown_directive},
1977             $tracelevel)
1978             if defined $::RD_TRACE;
1979            
1980            
1981 12         10 my $err_at = @{$thisparser->{errors}};
  12         14  
1982            
1983 12         10 my $score;
1984             my $score_return;
1985 0         0 my $_tok;
1986 12         7 my $return = undef;
1987 12         10 my $_matched=0;
1988 12         7 my $commit=0;
1989 12         9 my @item = ();
1990 12         11 my %item = ();
1991 12   33     25 my $repeating = defined($_[2]) && $_[2];
1992 12   33     24 my $_noactions = defined($_[3]) && $_[3];
1993 12 50       14 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         12  
  12         11  
1994 12 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1995 12         8 my $text;
1996 12         13 my $lastsep="";
1997 12         21 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
1998 12         193 $expectation->at($_[1]);
1999            
2000 12         23 my $thisline;
2001 12         27 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2002            
2003            
2004            
2005 12   33     64 while (!$_matched && !$commit)
2006             {
2007            
2008 12 50       21 Parse::RecDescent::_trace(q{Trying production: [/\\!\\S*/ /.*/]},
2009             Parse::RecDescent::_tracefirst($_[1]),
2010             q{unknown_directive},
2011             $tracelevel)
2012             if defined $::RD_TRACE;
2013 12         14 my $thisprod = $thisrule->{"prods"}[0];
2014 12         9 $text = $_[1];
2015 12         9 my $_savetext;
2016 12         14 @item = (q{unknown_directive});
2017 12         14 %item = (__RULE__ => q{unknown_directive});
2018 12         11 my $repcount = 0;
2019            
2020            
2021 12 50       15 Parse::RecDescent::_trace(q{Trying terminal: [/\\!\\S*/]}, Parse::RecDescent::_tracefirst($text),
2022             q{unknown_directive},
2023             $tracelevel)
2024             if defined $::RD_TRACE;
2025 12         10 $lastsep = "";
2026 12         17 $expectation->is(q{})->at($text);
2027            
2028            
2029 12 50 33     81 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\!\S*)//)
  12 50       68  
2030             {
2031            
2032 12         22 $expectation->failed();
2033 12 50       35 Parse::RecDescent::_trace(q{<>},
2034             Parse::RecDescent::_tracefirst($text))
2035             if defined $::RD_TRACE;
2036            
2037 12         15 last;
2038             }
2039 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2040             . $& . q{])},
2041             Parse::RecDescent::_tracefirst($text))
2042             if defined $::RD_TRACE;
2043 0         0 push @item, $item{__PATTERN1__}=$&;
2044            
2045            
2046 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
2047             q{unknown_directive},
2048             $tracelevel)
2049             if defined $::RD_TRACE;
2050 0         0 $lastsep = "";
2051 0         0 $expectation->is(q{/.*/})->at($text);
2052            
2053            
2054 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
2055             {
2056            
2057 0         0 $expectation->failed();
2058 0 0       0 Parse::RecDescent::_trace(q{<>},
2059             Parse::RecDescent::_tracefirst($text))
2060             if defined $::RD_TRACE;
2061            
2062 0         0 last;
2063             }
2064 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2065             . $& . q{])},
2066             Parse::RecDescent::_tracefirst($text))
2067             if defined $::RD_TRACE;
2068 0         0 push @item, $item{__PATTERN2__}=$&;
2069            
2070            
2071 0 0       0 Parse::RecDescent::_trace(q{Trying action},
2072             Parse::RecDescent::_tracefirst($text),
2073             q{unknown_directive},
2074             $tracelevel)
2075             if defined $::RD_TRACE;
2076            
2077            
2078 0 0       0 $_tok = ($_noactions) ? 0 : do { warn "[Text::Formbuilder] Skipping unknown directive '$item[1]' at input text line $thisline\n"; };
  0         0  
2079 0 0       0 unless (defined $_tok)
2080             {
2081 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2082             if defined $::RD_TRACE;
2083 0         0 last;
2084             }
2085 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2086             . $_tok . q{])},
2087             Parse::RecDescent::_tracefirst($text))
2088             if defined $::RD_TRACE;
2089 0         0 push @item, $_tok;
2090 0         0 $item{__ACTION1__}=$_tok;
2091            
2092            
2093            
2094 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\!\\S*/ /.*/]<<},
2095             Parse::RecDescent::_tracefirst($text),
2096             q{unknown_directive},
2097             $tracelevel)
2098             if defined $::RD_TRACE;
2099 0         0 $_matched = 1;
2100 0         0 last;
2101             }
2102            
2103            
2104 12 50 33     58 unless ( $_matched || defined($return) || defined($score) )
      33        
2105             {
2106            
2107            
2108 12         11 $_[1] = $text; # NOT SURE THIS IS NEEDED
2109 12 50       18 Parse::RecDescent::_trace(q{<>},
2110             Parse::RecDescent::_tracefirst($_[1]),
2111             q{unknown_directive},
2112             $tracelevel)
2113             if defined $::RD_TRACE;
2114 12         45 return undef;
2115             }
2116 0 0 0     0 if (!defined($return) && defined($score))
2117             {
2118 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2119             q{unknown_directive},
2120             $tracelevel)
2121             if defined $::RD_TRACE;
2122 0         0 $return = $score_return;
2123             }
2124 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
2125 0 0       0 $return = $item[$#item] unless defined $return;
2126 0 0       0 if (defined $::RD_TRACE)
2127             {
2128 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2129             $return . q{])}, "",
2130             q{unknown_directive},
2131             $tracelevel);
2132 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2133             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2134             Parse::RecDescent::_tracefirst($text),
2135             , q{unknown_directive},
2136             $tracelevel)
2137             }
2138 0         0 $_[1] = $text;
2139 0         0 return $return;
2140             }
2141            
2142             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2143             sub Parse::RecDescent::Text::FormBuilder::Parser::required_pattern
2144             {
2145 0     0   0 my $thisparser = $_[0];
2146 1     1   4 use vars q{$tracelevel};
  1         1  
  1         580  
2147 0   0     0 local $tracelevel = ($tracelevel||0)+1;
2148 0         0 $ERRORS = 0;
2149 0         0 my $thisrule = $thisparser->{"rules"}{"required_pattern"};
2150            
2151 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [required_pattern]},
2152             Parse::RecDescent::_tracefirst($_[1]),
2153             q{required_pattern},
2154             $tracelevel)
2155             if defined $::RD_TRACE;
2156            
2157            
2158 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
2159            
2160 0         0 my $score;
2161             my $score_return;
2162 0         0 my $_tok;
2163 0         0 my $return = undef;
2164 0         0 my $_matched=0;
2165 0         0 my $commit=0;
2166 0         0 my @item = ();
2167 0         0 my %item = ();
2168 0   0     0 my $repeating = defined($_[2]) && $_[2];
2169 0   0     0 my $_noactions = defined($_[3]) && $_[3];
2170 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
2171 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2172 0         0 my $text;
2173 0         0 my $lastsep="";
2174 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2175 0         0 $expectation->at($_[1]);
2176            
2177 0         0 my $thisline;
2178 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2179            
2180            
2181            
2182 0   0     0 while (!$_matched && !$commit)
2183             {
2184            
2185 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/[A-Z_]+/]},
2186             Parse::RecDescent::_tracefirst($_[1]),
2187             q{required_pattern},
2188             $tracelevel)
2189             if defined $::RD_TRACE;
2190 0         0 my $thisprod = $thisrule->{"prods"}[0];
2191 0         0 $text = $_[1];
2192 0         0 my $_savetext;
2193 0         0 @item = (q{required_pattern});
2194 0         0 %item = (__RULE__ => q{required_pattern});
2195 0         0 my $repcount = 0;
2196            
2197            
2198 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[A-Z_]+/]}, Parse::RecDescent::_tracefirst($text),
2199             q{required_pattern},
2200             $tracelevel)
2201             if defined $::RD_TRACE;
2202 0         0 $lastsep = "";
2203 0         0 $expectation->is(q{})->at($text);
2204            
2205            
2206 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[A-Z_]+)//)
  0 0       0  
2207             {
2208            
2209 0         0 $expectation->failed();
2210 0 0       0 Parse::RecDescent::_trace(q{<>},
2211             Parse::RecDescent::_tracefirst($text))
2212             if defined $::RD_TRACE;
2213            
2214 0         0 last;
2215             }
2216 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2217             . $& . q{])},
2218             Parse::RecDescent::_tracefirst($text))
2219             if defined $::RD_TRACE;
2220 0         0 push @item, $item{__PATTERN1__}=$&;
2221            
2222            
2223 0 0       0 Parse::RecDescent::_trace(q{Trying action},
2224             Parse::RecDescent::_tracefirst($text),
2225             q{required_pattern},
2226             $tracelevel)
2227             if defined $::RD_TRACE;
2228            
2229            
2230 0 0       0 $_tok = ($_noactions) ? 0 : do { $required = 1; $item[1] };
  0         0  
  0         0  
2231 0 0       0 unless (defined $_tok)
2232             {
2233 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2234             if defined $::RD_TRACE;
2235 0         0 last;
2236             }
2237 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2238             . $_tok . q{])},
2239             Parse::RecDescent::_tracefirst($text))
2240             if defined $::RD_TRACE;
2241 0         0 push @item, $_tok;
2242 0         0 $item{__ACTION1__}=$_tok;
2243            
2244            
2245            
2246 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/[A-Z_]+/]<<},
2247             Parse::RecDescent::_tracefirst($text),
2248             q{required_pattern},
2249             $tracelevel)
2250             if defined $::RD_TRACE;
2251 0         0 $_matched = 1;
2252 0         0 last;
2253             }
2254            
2255            
2256 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
2257             {
2258            
2259            
2260 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
2261 0 0       0 Parse::RecDescent::_trace(q{<>},
2262             Parse::RecDescent::_tracefirst($_[1]),
2263             q{required_pattern},
2264             $tracelevel)
2265             if defined $::RD_TRACE;
2266 0         0 return undef;
2267             }
2268 0 0 0     0 if (!defined($return) && defined($score))
2269             {
2270 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2271             q{required_pattern},
2272             $tracelevel)
2273             if defined $::RD_TRACE;
2274 0         0 $return = $score_return;
2275             }
2276 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
2277 0 0       0 $return = $item[$#item] unless defined $return;
2278 0 0       0 if (defined $::RD_TRACE)
2279             {
2280 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2281             $return . q{])}, "",
2282             q{required_pattern},
2283             $tracelevel);
2284 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2285             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2286             Parse::RecDescent::_tracefirst($text),
2287             , q{required_pattern},
2288             $tracelevel)
2289             }
2290 0         0 $_[1] = $text;
2291 0         0 return $return;
2292             }
2293            
2294             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2295             sub Parse::RecDescent::Text::FormBuilder::Parser::field
2296             {
2297 12     12   10 my $thisparser = $_[0];
2298 1     1   4 use vars q{$tracelevel};
  1         1  
  1         236  
2299 12   50     20 local $tracelevel = ($tracelevel||0)+1;
2300 12         10 $ERRORS = 0;
2301 12         14 my $thisrule = $thisparser->{"rules"}{"field"};
2302            
2303 12 50       18 Parse::RecDescent::_trace(q{Trying rule: [field]},
2304             Parse::RecDescent::_tracefirst($_[1]),
2305             q{field},
2306             $tracelevel)
2307             if defined $::RD_TRACE;
2308            
2309            
2310 12         9 my $err_at = @{$thisparser->{errors}};
  12         12  
2311            
2312 12         10 my $score;
2313             my $score_return;
2314 0         0 my $_tok;
2315 12         10 my $return = undef;
2316 12         9 my $_matched=0;
2317 12         8 my $commit=0;
2318 12         11 my @item = ();
2319 12         11 my %item = ();
2320 12   33     20 my $repeating = defined($_[2]) && $_[2];
2321 12   33     20 my $_noactions = defined($_[3]) && $_[3];
2322 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         8  
  12         11  
2323 12 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2324 12         11 my $text;
2325 12         9 my $lastsep="";
2326 12         20 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2327 12         210 $expectation->at($_[1]);
2328            
2329 12         22 my $thisline;
2330 12         27 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2331            
2332            
2333            
2334 12   33     67 while (!$_matched && !$commit)
2335             {
2336            
2337 12 50       36 Parse::RecDescent::_trace(q{Trying production: [name field_size label hint type default option_list validate]},
2338             Parse::RecDescent::_tracefirst($_[1]),
2339             q{field},
2340             $tracelevel)
2341             if defined $::RD_TRACE;
2342 12         14 my $thisprod = $thisrule->{"prods"}[0];
2343 12         8 $text = $_[1];
2344 12         10 my $_savetext;
2345 12         18 @item = (q{field});
2346 12         16 %item = (__RULE__ => q{field});
2347 12         8 my $repcount = 0;
2348            
2349            
2350 12 50       15 Parse::RecDescent::_trace(q{Trying subrule: [name]},
2351             Parse::RecDescent::_tracefirst($text),
2352             q{field},
2353             $tracelevel)
2354             if defined $::RD_TRACE;
2355 1     1   3 if (1) { no strict qw{refs};
  1         2  
  1         1120  
  12         10  
2356 12         18 $expectation->is(q{})->at($text);
2357 12 100   12   65 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
2358             {
2359            
2360 9 50       12 Parse::RecDescent::_trace(q{<>},
2361             Parse::RecDescent::_tracefirst($text),
2362             q{field},
2363             $tracelevel)
2364             if defined $::RD_TRACE;
2365 9         18 $expectation->failed();
2366 9         19 last;
2367             }
2368 3 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
2369             . $_tok . q{]},
2370            
2371             Parse::RecDescent::_tracefirst($text),
2372             q{field},
2373             $tracelevel)
2374             if defined $::RD_TRACE;
2375 3         5 $item{q{name}} = $_tok;
2376 3         3 push @item, $_tok;
2377            
2378             }
2379            
2380 3 50       6 Parse::RecDescent::_trace(q{Trying repeated subrule: [field_size]},
2381             Parse::RecDescent::_tracefirst($text),
2382             q{field},
2383             $tracelevel)
2384             if defined $::RD_TRACE;
2385 3         6 $expectation->is(q{field_size})->at($text);
2386            
2387 3 50       18 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::field_size, 0, 1, $_noactions,$expectation,undef)))
2388             {
2389 0 0       0 Parse::RecDescent::_trace(q{<>},
2390             Parse::RecDescent::_tracefirst($text),
2391             q{field},
2392             $tracelevel)
2393             if defined $::RD_TRACE;
2394 0         0 last;
2395             }
2396 3 50       24 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [field_size]<< (}
2397             . @$_tok . q{ times)},
2398            
2399             Parse::RecDescent::_tracefirst($text),
2400             q{field},
2401             $tracelevel)
2402             if defined $::RD_TRACE;
2403 3         5 $item{q{field_size(?)}} = $_tok;
2404 3         3 push @item, $_tok;
2405            
2406            
2407            
2408 3 50       6 Parse::RecDescent::_trace(q{Trying repeated subrule: [label]},
2409             Parse::RecDescent::_tracefirst($text),
2410             q{field},
2411             $tracelevel)
2412             if defined $::RD_TRACE;
2413 3         4 $expectation->is(q{label})->at($text);
2414            
2415 3 50       14 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::label, 0, 1, $_noactions,$expectation,undef)))
2416             {
2417 0 0       0 Parse::RecDescent::_trace(q{<>},
2418             Parse::RecDescent::_tracefirst($text),
2419             q{field},
2420             $tracelevel)
2421             if defined $::RD_TRACE;
2422 0         0 last;
2423             }
2424 3 50       59 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [label]<< (}
2425             . @$_tok . q{ times)},
2426            
2427             Parse::RecDescent::_tracefirst($text),
2428             q{field},
2429             $tracelevel)
2430             if defined $::RD_TRACE;
2431 3         5 $item{q{label(?)}} = $_tok;
2432 3         3 push @item, $_tok;
2433            
2434            
2435            
2436 3 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: [hint]},
2437             Parse::RecDescent::_tracefirst($text),
2438             q{field},
2439             $tracelevel)
2440             if defined $::RD_TRACE;
2441 3         4 $expectation->is(q{hint})->at($text);
2442            
2443 3 50       16 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::hint, 0, 1, $_noactions,$expectation,undef)))
2444             {
2445 0 0       0 Parse::RecDescent::_trace(q{<>},
2446             Parse::RecDescent::_tracefirst($text),
2447             q{field},
2448             $tracelevel)
2449             if defined $::RD_TRACE;
2450 0         0 last;
2451             }
2452 3 50       21 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [hint]<< (}
2453             . @$_tok . q{ times)},
2454            
2455             Parse::RecDescent::_tracefirst($text),
2456             q{field},
2457             $tracelevel)
2458             if defined $::RD_TRACE;
2459 3         5 $item{q{hint(?)}} = $_tok;
2460 3         3 push @item, $_tok;
2461            
2462            
2463            
2464 3 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: [type]},
2465             Parse::RecDescent::_tracefirst($text),
2466             q{field},
2467             $tracelevel)
2468             if defined $::RD_TRACE;
2469 3         5 $expectation->is(q{type})->at($text);
2470            
2471 3 50       16 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::type, 0, 1, $_noactions,$expectation,undef)))
2472             {
2473 0 0       0 Parse::RecDescent::_trace(q{<>},
2474             Parse::RecDescent::_tracefirst($text),
2475             q{field},
2476             $tracelevel)
2477             if defined $::RD_TRACE;
2478 0         0 last;
2479             }
2480 3 50       21 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [type]<< (}
2481             . @$_tok . q{ times)},
2482            
2483             Parse::RecDescent::_tracefirst($text),
2484             q{field},
2485             $tracelevel)
2486             if defined $::RD_TRACE;
2487 3         4 $item{q{type(?)}} = $_tok;
2488 3         4 push @item, $_tok;
2489            
2490            
2491            
2492 3 50       4 Parse::RecDescent::_trace(q{Trying repeated subrule: [default]},
2493             Parse::RecDescent::_tracefirst($text),
2494             q{field},
2495             $tracelevel)
2496             if defined $::RD_TRACE;
2497 3         5 $expectation->is(q{default})->at($text);
2498            
2499 3 50       14 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::default, 0, 1, $_noactions,$expectation,undef)))
2500             {
2501 0 0       0 Parse::RecDescent::_trace(q{<>},
2502             Parse::RecDescent::_tracefirst($text),
2503             q{field},
2504             $tracelevel)
2505             if defined $::RD_TRACE;
2506 0         0 last;
2507             }
2508 3 50       21 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [default]<< (}
2509             . @$_tok . q{ times)},
2510            
2511             Parse::RecDescent::_tracefirst($text),
2512             q{field},
2513             $tracelevel)
2514             if defined $::RD_TRACE;
2515 3         5 $item{q{default(?)}} = $_tok;
2516 3         3 push @item, $_tok;
2517            
2518            
2519            
2520 3 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: [option_list]},
2521             Parse::RecDescent::_tracefirst($text),
2522             q{field},
2523             $tracelevel)
2524             if defined $::RD_TRACE;
2525 3         5 $expectation->is(q{option_list})->at($text);
2526            
2527 3 50       14 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::option_list, 0, 1, $_noactions,$expectation,undef)))
2528             {
2529 0 0       0 Parse::RecDescent::_trace(q{<>},
2530             Parse::RecDescent::_tracefirst($text),
2531             q{field},
2532             $tracelevel)
2533             if defined $::RD_TRACE;
2534 0         0 last;
2535             }
2536 3 50       22 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [option_list]<< (}
2537             . @$_tok . q{ times)},
2538            
2539             Parse::RecDescent::_tracefirst($text),
2540             q{field},
2541             $tracelevel)
2542             if defined $::RD_TRACE;
2543 3         5 $item{q{option_list(?)}} = $_tok;
2544 3         4 push @item, $_tok;
2545            
2546            
2547            
2548 3 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: [validate]},
2549             Parse::RecDescent::_tracefirst($text),
2550             q{field},
2551             $tracelevel)
2552             if defined $::RD_TRACE;
2553 3         5 $expectation->is(q{validate})->at($text);
2554            
2555 3 50       14 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::validate, 0, 1, $_noactions,$expectation,undef)))
2556             {
2557 0 0       0 Parse::RecDescent::_trace(q{<>},
2558             Parse::RecDescent::_tracefirst($text),
2559             q{field},
2560             $tracelevel)
2561             if defined $::RD_TRACE;
2562 0         0 last;
2563             }
2564 3 50       21 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [validate]<< (}
2565             . @$_tok . q{ times)},
2566            
2567             Parse::RecDescent::_tracefirst($text),
2568             q{field},
2569             $tracelevel)
2570             if defined $::RD_TRACE;
2571 3         4 $item{q{validate(?)}} = $_tok;
2572 3         3 push @item, $_tok;
2573            
2574            
2575            
2576 3 50       5 Parse::RecDescent::_trace(q{Trying action},
2577             Parse::RecDescent::_tracefirst($text),
2578             q{field},
2579             $tracelevel)
2580             if defined $::RD_TRACE;
2581            
2582            
2583 3 50       5 $_tok = ($_noactions) ? 0 : do {
2584             my $field = {
2585             name => $item{name},
2586             label => $item{'label(?)'}[0],
2587             comment => $item{'hint(?)'}[0],
2588             type => $item{'type(?)'}[0],
2589             value => $item{'default(?)'}[0],
2590             list => $list_var,
2591 3   50     21 validate => $item{'validate(?)'}[0],
2592             required => $required || 0,
2593             };
2594            
2595 3 50       9 $$field{options} = [ @options ] if @options;
2596            
2597 3 50       4 $$field{rows} = $rows if defined $rows;
2598 3 50       5 $$field{cols} = $cols if defined $cols;
2599 3 50       5 $$field{size} = $size if defined $size;
2600 3 50       5 $$field{maxlength} = $maxlength if defined $maxlength;
2601            
2602             #warn "[$thisline] field $item{name}; context $context\n";
2603 3 50       3 if ($context eq 'group') {
2604 0         0 push @group, $field;
2605             } else {
2606 3         5 push @lines, [ 'field', $field ];
2607             }
2608            
2609 3         3 $type = undef;
2610 3         1 $required = 0;
2611 3         3 $list_var = undef;
2612 3         4 $size = undef;
2613 3         2 $rows = undef;
2614 3         3 $cols = undef;
2615 3         1 $maxlength = undef;
2616 3         4 @options = ();
2617            
2618             };
2619 3 50       5 unless (defined $_tok)
2620             {
2621 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2622             if defined $::RD_TRACE;
2623 0         0 last;
2624             }
2625 3 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2626             . $_tok . q{])},
2627             Parse::RecDescent::_tracefirst($text))
2628             if defined $::RD_TRACE;
2629 3         2 push @item, $_tok;
2630 3         4 $item{__ACTION1__}=$_tok;
2631            
2632            
2633            
2634 3 50       5 Parse::RecDescent::_trace(q{>>Matched production: [name field_size label hint type default option_list validate]<<},
2635             Parse::RecDescent::_tracefirst($text),
2636             q{field},
2637             $tracelevel)
2638             if defined $::RD_TRACE;
2639 3         3 $_matched = 1;
2640 3         3 last;
2641             }
2642            
2643            
2644 12 50 66     55 unless ( $_matched || defined($return) || defined($score) )
      66        
2645             {
2646            
2647            
2648 9         11 $_[1] = $text; # NOT SURE THIS IS NEEDED
2649 9 50       11 Parse::RecDescent::_trace(q{<>},
2650             Parse::RecDescent::_tracefirst($_[1]),
2651             q{field},
2652             $tracelevel)
2653             if defined $::RD_TRACE;
2654 9         31 return undef;
2655             }
2656 3 50 33     12 if (!defined($return) && defined($score))
2657             {
2658 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2659             q{field},
2660             $tracelevel)
2661             if defined $::RD_TRACE;
2662 0         0 $return = $score_return;
2663             }
2664 3         3 splice @{$thisparser->{errors}}, $err_at;
  3         3  
2665 3 50       10 $return = $item[$#item] unless defined $return;
2666 3 50       5 if (defined $::RD_TRACE)
2667             {
2668 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2669             $return . q{])}, "",
2670             q{field},
2671             $tracelevel);
2672 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2673             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2674             Parse::RecDescent::_tracefirst($text),
2675             , q{field},
2676             $tracelevel)
2677             }
2678 3         3 $_[1] = $text;
2679 3         15 return $return;
2680             }
2681            
2682             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2683             sub Parse::RecDescent::Text::FormBuilder::Parser::line
2684             {
2685 12     12   23 my $thisparser = $_[0];
2686 1     1   4 use vars q{$tracelevel};
  1         1  
  1         334  
2687 12   50     20 local $tracelevel = ($tracelevel||0)+1;
2688 12         14 $ERRORS = 0;
2689 12         13 my $thisrule = $thisparser->{"rules"}{"line"};
2690            
2691 12 50       17 Parse::RecDescent::_trace(q{Trying rule: [line]},
2692             Parse::RecDescent::_tracefirst($_[1]),
2693             q{line},
2694             $tracelevel)
2695             if defined $::RD_TRACE;
2696            
2697            
2698 12         9 my $err_at = @{$thisparser->{errors}};
  12         13  
2699            
2700 12         11 my $score;
2701             my $score_return;
2702 0         0 my $_tok;
2703 12         6 my $return = undef;
2704 12         10 my $_matched=0;
2705 12         7 my $commit=0;
2706 12         10 my @item = ();
2707 12         12 my %item = ();
2708 12   33     21 my $repeating = defined($_[2]) && $_[2];
2709 12   33     23 my $_noactions = defined($_[3]) && $_[3];
2710 12 50       16 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         8  
  12         16  
2711 12 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2712 12         9 my $text;
2713 12         14 my $lastsep="";
2714 12         23 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2715 12         160 $expectation->at($_[1]);
2716            
2717 12         24 my $thisline;
2718 12         26 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2719            
2720            
2721            
2722 12   33     69 while (!$_matched && !$commit)
2723             {
2724 12 50       19 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
2725 12 50       15 Parse::RecDescent::_trace(q{Trying production: [ title, or author, or pattern_def, or section_head, or heading, or group_field, or unknown_directive, or field, or comment, or blank '\\n']},
2726             Parse::RecDescent::_tracefirst($_[1]),
2727             q{line},
2728             $tracelevel)
2729             if defined $::RD_TRACE;
2730 12         13 my $thisprod = $thisrule->{"prods"}[0];
2731 12         14 $text = $_[1];
2732 12         9 my $_savetext;
2733 12         16 @item = (q{line});
2734 12         14 %item = (__RULE__ => q{line});
2735 12         12 my $repcount = 0;
2736            
2737            
2738            
2739            
2740 12 50       17 Parse::RecDescent::_trace(q{Trying directive: []},
2741             Parse::RecDescent::_tracefirst($text),
2742             q{line},
2743             $tracelevel)
2744             if defined $::RD_TRACE;
2745 12         8 $_tok = do { my $oldskip = $skip; $skip='[ \t]*'; $oldskip };
  12         8  
  12         12  
  12         11  
2746 12 50       14 if (defined($_tok))
2747             {
2748 12 50       17 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
2749             . $_tok . q{])},
2750             Parse::RecDescent::_tracefirst($text))
2751             if defined $::RD_TRACE;
2752             }
2753             else
2754             {
2755 0 0       0 Parse::RecDescent::_trace(q{<>},
2756             Parse::RecDescent::_tracefirst($text))
2757             if defined $::RD_TRACE;
2758             }
2759            
2760 12 50       19 last unless defined $_tok;
2761 12         19 push @item, $item{__DIRECTIVE1__}=$_tok;
2762            
2763            
2764 12 50       19 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_line]},
2765             Parse::RecDescent::_tracefirst($text),
2766             q{line},
2767             $tracelevel)
2768             if defined $::RD_TRACE;
2769 1     1   4 if (1) { no strict qw{refs};
  1         0  
  1         442  
  12         8  
2770 12         20 $expectation->is(q{title, or author, or pattern_def, or section_head, or heading, or group_field, or unknown_directive, or field, or comment, or blank})->at($text);
2771 12 50   12   65 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_line($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         13  
2772             {
2773            
2774 0 0       0 Parse::RecDescent::_trace(q{<>},
2775             Parse::RecDescent::_tracefirst($text),
2776             q{line},
2777             $tracelevel)
2778             if defined $::RD_TRACE;
2779 0         0 $expectation->failed();
2780 0         0 last;
2781             }
2782 12 50       28 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_line]<< (return value: [}
2783             . $_tok . q{]},
2784            
2785             Parse::RecDescent::_tracefirst($text),
2786             q{line},
2787             $tracelevel)
2788             if defined $::RD_TRACE;
2789 12         16 $item{q{_alternation_1_of_production_1_of_rule_line}} = $_tok;
2790 12         13 push @item, $_tok;
2791            
2792             }
2793            
2794 12 50       15 Parse::RecDescent::_trace(q{Trying terminal: ['\\n']},
2795             Parse::RecDescent::_tracefirst($text),
2796             q{line},
2797             $tracelevel)
2798             if defined $::RD_TRACE;
2799 12         12 $lastsep = "";
2800 12         15 $expectation->is(q{'\\n'})->at($text);
2801            
2802            
2803 12 50 33     100 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "\n"; 1 } and
  12 100 66     52  
  12   66     12  
  12         51  
2804             substr($text,0,length($_tok)) eq $_tok and
2805 7         10 do { substr($text,0,length($_tok)) = ""; 1; }
  7         9  
2806             )
2807             {
2808            
2809 5         9 $expectation->failed();
2810 5 50       33 Parse::RecDescent::_trace(q{<>},
2811             Parse::RecDescent::_tracefirst($text))
2812             if defined $::RD_TRACE;
2813 5         9 last;
2814             }
2815 7 50       15 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2816             . $_tok . q{])},
2817             Parse::RecDescent::_tracefirst($text))
2818             if defined $::RD_TRACE;
2819 7         13 push @item, $item{__STRING1__}=$_tok;
2820            
2821            
2822            
2823 7 50       9 Parse::RecDescent::_trace(q{>>Matched production: [ title, or author, or pattern_def, or section_head, or heading, or group_field, or unknown_directive, or field, or comment, or blank '\\n']<<},
2824             Parse::RecDescent::_tracefirst($text),
2825             q{line},
2826             $tracelevel)
2827             if defined $::RD_TRACE;
2828 7         6 $_matched = 1;
2829 7         12 last;
2830             }
2831            
2832            
2833 12 50 66     44 unless ( $_matched || defined($return) || defined($score) )
      66        
2834             {
2835            
2836            
2837 5         5 $_[1] = $text; # NOT SURE THIS IS NEEDED
2838 5 50       8 Parse::RecDescent::_trace(q{<>},
2839             Parse::RecDescent::_tracefirst($_[1]),
2840             q{line},
2841             $tracelevel)
2842             if defined $::RD_TRACE;
2843 5         20 return undef;
2844             }
2845 7 50 33     20 if (!defined($return) && defined($score))
2846             {
2847 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2848             q{line},
2849             $tracelevel)
2850             if defined $::RD_TRACE;
2851 0         0 $return = $score_return;
2852             }
2853 7         6 splice @{$thisparser->{errors}}, $err_at;
  7         8  
2854 7 50       11 $return = $item[$#item] unless defined $return;
2855 7 50       31 if (defined $::RD_TRACE)
2856             {
2857 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2858             $return . q{])}, "",
2859             q{line},
2860             $tracelevel);
2861 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2862             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2863             Parse::RecDescent::_tracefirst($text),
2864             , q{line},
2865             $tracelevel)
2866             }
2867 7         11 $_[1] = $text;
2868 7         30 return $return;
2869             }
2870            
2871             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2872             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_form_spec
2873             {
2874 12     12   125 my $thisparser = $_[0];
2875 1     1   4 use vars q{$tracelevel};
  1         1  
  1         236  
2876 12   50     26 local $tracelevel = ($tracelevel||0)+1;
2877 12         12 $ERRORS = 0;
2878 12         14 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_form_spec"};
2879            
2880 12 50       19 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_form_spec]},
2881             Parse::RecDescent::_tracefirst($_[1]),
2882             q{_alternation_1_of_production_1_of_rule_form_spec},
2883             $tracelevel)
2884             if defined $::RD_TRACE;
2885            
2886            
2887 12         9 my $err_at = @{$thisparser->{errors}};
  12         19  
2888            
2889 12         12 my $score;
2890             my $score_return;
2891 0         0 my $_tok;
2892 12         8 my $return = undef;
2893 12         10 my $_matched=0;
2894 12         11 my $commit=0;
2895 12         10 my @item = ();
2896 12         8 my %item = ();
2897 12   33     27 my $repeating = defined($_[2]) && $_[2];
2898 12   33     28 my $_noactions = defined($_[3]) && $_[3];
2899 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
2900 12 50       23 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2901 12         8 my $text;
2902 12         13 my $lastsep="";
2903 12         28 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
2904 12         792 $expectation->at($_[1]);
2905            
2906 12         26 my $thisline;
2907 12         32 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2908            
2909            
2910            
2911 12   33     72 while (!$_matched && !$commit)
2912             {
2913            
2914 12 50       19 Parse::RecDescent::_trace(q{Trying production: [list_def]},
2915             Parse::RecDescent::_tracefirst($_[1]),
2916             q{_alternation_1_of_production_1_of_rule_form_spec},
2917             $tracelevel)
2918             if defined $::RD_TRACE;
2919 12         14 my $thisprod = $thisrule->{"prods"}[0];
2920 12         13 $text = $_[1];
2921 12         9 my $_savetext;
2922 12         15 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
2923 12         18 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
2924 12         8 my $repcount = 0;
2925            
2926            
2927 12 50       21 Parse::RecDescent::_trace(q{Trying subrule: [list_def]},
2928             Parse::RecDescent::_tracefirst($text),
2929             q{_alternation_1_of_production_1_of_rule_form_spec},
2930             $tracelevel)
2931             if defined $::RD_TRACE;
2932 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         197  
  12         11  
2933 12         20 $expectation->is(q{})->at($text);
2934 12 50   12   80 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::list_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         17  
2935             {
2936            
2937 12 50       19 Parse::RecDescent::_trace(q{<>},
2938             Parse::RecDescent::_tracefirst($text),
2939             q{_alternation_1_of_production_1_of_rule_form_spec},
2940             $tracelevel)
2941             if defined $::RD_TRACE;
2942 12         20 $expectation->failed();
2943 12         28 last;
2944             }
2945 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [list_def]<< (return value: [}
2946             . $_tok . q{]},
2947            
2948             Parse::RecDescent::_tracefirst($text),
2949             q{_alternation_1_of_production_1_of_rule_form_spec},
2950             $tracelevel)
2951             if defined $::RD_TRACE;
2952 0         0 $item{q{list_def}} = $_tok;
2953 0         0 push @item, $_tok;
2954            
2955             }
2956            
2957            
2958 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [list_def]<<},
2959             Parse::RecDescent::_tracefirst($text),
2960             q{_alternation_1_of_production_1_of_rule_form_spec},
2961             $tracelevel)
2962             if defined $::RD_TRACE;
2963 0         0 $_matched = 1;
2964 0         0 last;
2965             }
2966            
2967            
2968 12   33     50 while (!$_matched && !$commit)
2969             {
2970            
2971 12 50       15 Parse::RecDescent::_trace(q{Trying production: [description_def]},
2972             Parse::RecDescent::_tracefirst($_[1]),
2973             q{_alternation_1_of_production_1_of_rule_form_spec},
2974             $tracelevel)
2975             if defined $::RD_TRACE;
2976 12         16 my $thisprod = $thisrule->{"prods"}[1];
2977 12         10 $text = $_[1];
2978 12         12 my $_savetext;
2979 12         16 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
2980 12         17 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
2981 12         11 my $repcount = 0;
2982            
2983            
2984 12 50       22 Parse::RecDescent::_trace(q{Trying subrule: [description_def]},
2985             Parse::RecDescent::_tracefirst($text),
2986             q{_alternation_1_of_production_1_of_rule_form_spec},
2987             $tracelevel)
2988             if defined $::RD_TRACE;
2989 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         195  
  12         11  
2990 12         20 $expectation->is(q{})->at($text);
2991 12 50   12   76 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::description_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
2992             {
2993            
2994 12 50       15 Parse::RecDescent::_trace(q{<>},
2995             Parse::RecDescent::_tracefirst($text),
2996             q{_alternation_1_of_production_1_of_rule_form_spec},
2997             $tracelevel)
2998             if defined $::RD_TRACE;
2999 12         24 $expectation->failed();
3000 12         23 last;
3001             }
3002 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [description_def]<< (return value: [}
3003             . $_tok . q{]},
3004            
3005             Parse::RecDescent::_tracefirst($text),
3006             q{_alternation_1_of_production_1_of_rule_form_spec},
3007             $tracelevel)
3008             if defined $::RD_TRACE;
3009 0         0 $item{q{description_def}} = $_tok;
3010 0         0 push @item, $_tok;
3011            
3012             }
3013            
3014            
3015 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [description_def]<<},
3016             Parse::RecDescent::_tracefirst($text),
3017             q{_alternation_1_of_production_1_of_rule_form_spec},
3018             $tracelevel)
3019             if defined $::RD_TRACE;
3020 0         0 $_matched = 1;
3021 0         0 last;
3022             }
3023            
3024            
3025 12   33     49 while (!$_matched && !$commit)
3026             {
3027            
3028 12 50       15 Parse::RecDescent::_trace(q{Trying production: [validate_def]},
3029             Parse::RecDescent::_tracefirst($_[1]),
3030             q{_alternation_1_of_production_1_of_rule_form_spec},
3031             $tracelevel)
3032             if defined $::RD_TRACE;
3033 12         14 my $thisprod = $thisrule->{"prods"}[2];
3034 12         12 $text = $_[1];
3035 12         5 my $_savetext;
3036 12         19 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
3037 12         16 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
3038 12         11 my $repcount = 0;
3039            
3040            
3041 12 50       18 Parse::RecDescent::_trace(q{Trying subrule: [validate_def]},
3042             Parse::RecDescent::_tracefirst($text),
3043             q{_alternation_1_of_production_1_of_rule_form_spec},
3044             $tracelevel)
3045             if defined $::RD_TRACE;
3046 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         196  
  12         5  
3047 12         21 $expectation->is(q{})->at($text);
3048 12 50   12   72 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::validate_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
3049             {
3050            
3051 12 50       19 Parse::RecDescent::_trace(q{<>},
3052             Parse::RecDescent::_tracefirst($text),
3053             q{_alternation_1_of_production_1_of_rule_form_spec},
3054             $tracelevel)
3055             if defined $::RD_TRACE;
3056 12         19 $expectation->failed();
3057 12         23 last;
3058             }
3059 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [validate_def]<< (return value: [}
3060             . $_tok . q{]},
3061            
3062             Parse::RecDescent::_tracefirst($text),
3063             q{_alternation_1_of_production_1_of_rule_form_spec},
3064             $tracelevel)
3065             if defined $::RD_TRACE;
3066 0         0 $item{q{validate_def}} = $_tok;
3067 0         0 push @item, $_tok;
3068            
3069             }
3070            
3071            
3072 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [validate_def]<<},
3073             Parse::RecDescent::_tracefirst($text),
3074             q{_alternation_1_of_production_1_of_rule_form_spec},
3075             $tracelevel)
3076             if defined $::RD_TRACE;
3077 0         0 $_matched = 1;
3078 0         0 last;
3079             }
3080            
3081            
3082 12   33     42 while (!$_matched && !$commit)
3083             {
3084            
3085 12 50       16 Parse::RecDescent::_trace(q{Trying production: [group_def]},
3086             Parse::RecDescent::_tracefirst($_[1]),
3087             q{_alternation_1_of_production_1_of_rule_form_spec},
3088             $tracelevel)
3089             if defined $::RD_TRACE;
3090 12         14 my $thisprod = $thisrule->{"prods"}[3];
3091 12         13 $text = $_[1];
3092 12         10 my $_savetext;
3093 12         15 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
3094 12         18 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
3095 12         9 my $repcount = 0;
3096            
3097            
3098 12 50       19 Parse::RecDescent::_trace(q{Trying subrule: [group_def]},
3099             Parse::RecDescent::_tracefirst($text),
3100             q{_alternation_1_of_production_1_of_rule_form_spec},
3101             $tracelevel)
3102             if defined $::RD_TRACE;
3103 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         251  
  12         8  
3104 12         20 $expectation->is(q{})->at($text);
3105 12 50   12   69 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::group_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         19  
3106             {
3107            
3108 12 50       16 Parse::RecDescent::_trace(q{<>},
3109             Parse::RecDescent::_tracefirst($text),
3110             q{_alternation_1_of_production_1_of_rule_form_spec},
3111             $tracelevel)
3112             if defined $::RD_TRACE;
3113 12         19 $expectation->failed();
3114 12         20 last;
3115             }
3116 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [group_def]<< (return value: [}
3117             . $_tok . q{]},
3118            
3119             Parse::RecDescent::_tracefirst($text),
3120             q{_alternation_1_of_production_1_of_rule_form_spec},
3121             $tracelevel)
3122             if defined $::RD_TRACE;
3123 0         0 $item{q{group_def}} = $_tok;
3124 0         0 push @item, $_tok;
3125            
3126             }
3127            
3128            
3129 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [group_def]<<},
3130             Parse::RecDescent::_tracefirst($text),
3131             q{_alternation_1_of_production_1_of_rule_form_spec},
3132             $tracelevel)
3133             if defined $::RD_TRACE;
3134 0         0 $_matched = 1;
3135 0         0 last;
3136             }
3137            
3138            
3139 12   33     43 while (!$_matched && !$commit)
3140             {
3141            
3142 12 50       16 Parse::RecDescent::_trace(q{Trying production: [note]},
3143             Parse::RecDescent::_tracefirst($_[1]),
3144             q{_alternation_1_of_production_1_of_rule_form_spec},
3145             $tracelevel)
3146             if defined $::RD_TRACE;
3147 12         14 my $thisprod = $thisrule->{"prods"}[4];
3148 12         11 $text = $_[1];
3149 12         10 my $_savetext;
3150 12         15 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
3151 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
3152 12         11 my $repcount = 0;
3153            
3154            
3155 12 50       16 Parse::RecDescent::_trace(q{Trying subrule: [note]},
3156             Parse::RecDescent::_tracefirst($text),
3157             q{_alternation_1_of_production_1_of_rule_form_spec},
3158             $tracelevel)
3159             if defined $::RD_TRACE;
3160 1     1   7 if (1) { no strict qw{refs};
  1         0  
  1         219  
  12         10  
3161 12         21 $expectation->is(q{})->at($text);
3162 12 50   12   67 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::note($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         13  
3163             {
3164            
3165 12 50       16 Parse::RecDescent::_trace(q{<>},
3166             Parse::RecDescent::_tracefirst($text),
3167             q{_alternation_1_of_production_1_of_rule_form_spec},
3168             $tracelevel)
3169             if defined $::RD_TRACE;
3170 12         20 $expectation->failed();
3171 12         22 last;
3172             }
3173 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [note]<< (return value: [}
3174             . $_tok . q{]},
3175            
3176             Parse::RecDescent::_tracefirst($text),
3177             q{_alternation_1_of_production_1_of_rule_form_spec},
3178             $tracelevel)
3179             if defined $::RD_TRACE;
3180 0         0 $item{q{note}} = $_tok;
3181 0         0 push @item, $_tok;
3182            
3183             }
3184            
3185            
3186 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [note]<<},
3187             Parse::RecDescent::_tracefirst($text),
3188             q{_alternation_1_of_production_1_of_rule_form_spec},
3189             $tracelevel)
3190             if defined $::RD_TRACE;
3191 0         0 $_matched = 1;
3192 0         0 last;
3193             }
3194            
3195            
3196 12   33     39 while (!$_matched && !$commit)
3197             {
3198            
3199 12 50       15 Parse::RecDescent::_trace(q{Trying production: [line]},
3200             Parse::RecDescent::_tracefirst($_[1]),
3201             q{_alternation_1_of_production_1_of_rule_form_spec},
3202             $tracelevel)
3203             if defined $::RD_TRACE;
3204 12         13 my $thisprod = $thisrule->{"prods"}[5];
3205 12         7 $text = $_[1];
3206 12         11 my $_savetext;
3207 12         15 @item = (q{_alternation_1_of_production_1_of_rule_form_spec});
3208 12         19 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_form_spec});
3209 12         13 my $repcount = 0;
3210            
3211            
3212 12 50       19 Parse::RecDescent::_trace(q{Trying subrule: [line]},
3213             Parse::RecDescent::_tracefirst($text),
3214             q{_alternation_1_of_production_1_of_rule_form_spec},
3215             $tracelevel)
3216             if defined $::RD_TRACE;
3217 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         352  
  12         12  
3218 12         17 $expectation->is(q{})->at($text);
3219 12 100   12   60 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::line($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         13  
3220             {
3221            
3222 5 50       9 Parse::RecDescent::_trace(q{<>},
3223             Parse::RecDescent::_tracefirst($text),
3224             q{_alternation_1_of_production_1_of_rule_form_spec},
3225             $tracelevel)
3226             if defined $::RD_TRACE;
3227 5         11 $expectation->failed();
3228 5         10 last;
3229             }
3230 7 50       18 Parse::RecDescent::_trace(q{>>Matched subrule: [line]<< (return value: [}
3231             . $_tok . q{]},
3232            
3233             Parse::RecDescent::_tracefirst($text),
3234             q{_alternation_1_of_production_1_of_rule_form_spec},
3235             $tracelevel)
3236             if defined $::RD_TRACE;
3237 7         9 $item{q{line}} = $_tok;
3238 7         10 push @item, $_tok;
3239            
3240             }
3241            
3242            
3243 7 50       9 Parse::RecDescent::_trace(q{>>Matched production: [line]<<},
3244             Parse::RecDescent::_tracefirst($text),
3245             q{_alternation_1_of_production_1_of_rule_form_spec},
3246             $tracelevel)
3247             if defined $::RD_TRACE;
3248 7         6 $_matched = 1;
3249 7         7 last;
3250             }
3251            
3252            
3253 12 50 66     37 unless ( $_matched || defined($return) || defined($score) )
      66        
3254             {
3255            
3256            
3257 5         6 $_[1] = $text; # NOT SURE THIS IS NEEDED
3258 5 50       8 Parse::RecDescent::_trace(q{<>},
3259             Parse::RecDescent::_tracefirst($_[1]),
3260             q{_alternation_1_of_production_1_of_rule_form_spec},
3261             $tracelevel)
3262             if defined $::RD_TRACE;
3263 5         19 return undef;
3264             }
3265 7 50 33     24 if (!defined($return) && defined($score))
3266             {
3267 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3268             q{_alternation_1_of_production_1_of_rule_form_spec},
3269             $tracelevel)
3270             if defined $::RD_TRACE;
3271 0         0 $return = $score_return;
3272             }
3273 7         3 splice @{$thisparser->{errors}}, $err_at;
  7         7  
3274 7 50       14 $return = $item[$#item] unless defined $return;
3275 7 50       12 if (defined $::RD_TRACE)
3276             {
3277 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3278             $return . q{])}, "",
3279             q{_alternation_1_of_production_1_of_rule_form_spec},
3280             $tracelevel);
3281 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3282             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3283             Parse::RecDescent::_tracefirst($text),
3284             , q{_alternation_1_of_production_1_of_rule_form_spec},
3285             $tracelevel)
3286             }
3287 7         10 $_[1] = $text;
3288 7         24 return $return;
3289             }
3290            
3291             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3292             sub Parse::RecDescent::Text::FormBuilder::Parser::optional_pattern
3293             {
3294 0     0   0 my $thisparser = $_[0];
3295 1     1   4 use vars q{$tracelevel};
  1         1  
  1         697  
3296 0   0     0 local $tracelevel = ($tracelevel||0)+1;
3297 0         0 $ERRORS = 0;
3298 0         0 my $thisrule = $thisparser->{"rules"}{"optional_pattern"};
3299            
3300 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [optional_pattern]},
3301             Parse::RecDescent::_tracefirst($_[1]),
3302             q{optional_pattern},
3303             $tracelevel)
3304             if defined $::RD_TRACE;
3305            
3306            
3307 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
3308            
3309 0         0 my $score;
3310             my $score_return;
3311 0         0 my $_tok;
3312 0         0 my $return = undef;
3313 0         0 my $_matched=0;
3314 0         0 my $commit=0;
3315 0         0 my @item = ();
3316 0         0 my %item = ();
3317 0   0     0 my $repeating = defined($_[2]) && $_[2];
3318 0   0     0 my $_noactions = defined($_[3]) && $_[3];
3319 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3320 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3321 0         0 my $text;
3322 0         0 my $lastsep="";
3323 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3324 0         0 $expectation->at($_[1]);
3325            
3326 0         0 my $thisline;
3327 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3328            
3329            
3330            
3331 0   0     0 while (!$_matched && !$commit)
3332             {
3333            
3334 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/[A-Z_]+/ '?']},
3335             Parse::RecDescent::_tracefirst($_[1]),
3336             q{optional_pattern},
3337             $tracelevel)
3338             if defined $::RD_TRACE;
3339 0         0 my $thisprod = $thisrule->{"prods"}[0];
3340 0         0 $text = $_[1];
3341 0         0 my $_savetext;
3342 0         0 @item = (q{optional_pattern});
3343 0         0 %item = (__RULE__ => q{optional_pattern});
3344 0         0 my $repcount = 0;
3345            
3346            
3347 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[A-Z_]+/]}, Parse::RecDescent::_tracefirst($text),
3348             q{optional_pattern},
3349             $tracelevel)
3350             if defined $::RD_TRACE;
3351 0         0 $lastsep = "";
3352 0         0 $expectation->is(q{})->at($text);
3353            
3354            
3355 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[A-Z_]+)//)
  0 0       0  
3356             {
3357            
3358 0         0 $expectation->failed();
3359 0 0       0 Parse::RecDescent::_trace(q{<>},
3360             Parse::RecDescent::_tracefirst($text))
3361             if defined $::RD_TRACE;
3362            
3363 0         0 last;
3364             }
3365 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3366             . $& . q{])},
3367             Parse::RecDescent::_tracefirst($text))
3368             if defined $::RD_TRACE;
3369 0         0 push @item, $item{__PATTERN1__}=$&;
3370            
3371            
3372 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['?']},
3373             Parse::RecDescent::_tracefirst($text),
3374             q{optional_pattern},
3375             $tracelevel)
3376             if defined $::RD_TRACE;
3377 0         0 $lastsep = "";
3378 0         0 $expectation->is(q{'?'})->at($text);
3379            
3380            
3381 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\?//)
  0 0       0  
3382             {
3383            
3384 0         0 $expectation->failed();
3385 0 0       0 Parse::RecDescent::_trace(qq{<>},
3386             Parse::RecDescent::_tracefirst($text))
3387             if defined $::RD_TRACE;
3388 0         0 last;
3389             }
3390 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3391             . $& . q{])},
3392             Parse::RecDescent::_tracefirst($text))
3393             if defined $::RD_TRACE;
3394 0         0 push @item, $item{__STRING1__}=$&;
3395            
3396            
3397 0 0       0 Parse::RecDescent::_trace(q{Trying action},
3398             Parse::RecDescent::_tracefirst($text),
3399             q{optional_pattern},
3400             $tracelevel)
3401             if defined $::RD_TRACE;
3402            
3403            
3404 0 0       0 $_tok = ($_noactions) ? 0 : do { $required = 0; $item[1] };
  0         0  
  0         0  
3405 0 0       0 unless (defined $_tok)
3406             {
3407 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3408             if defined $::RD_TRACE;
3409 0         0 last;
3410             }
3411 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3412             . $_tok . q{])},
3413             Parse::RecDescent::_tracefirst($text))
3414             if defined $::RD_TRACE;
3415 0         0 push @item, $_tok;
3416 0         0 $item{__ACTION1__}=$_tok;
3417            
3418            
3419            
3420 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/[A-Z_]+/ '?']<<},
3421             Parse::RecDescent::_tracefirst($text),
3422             q{optional_pattern},
3423             $tracelevel)
3424             if defined $::RD_TRACE;
3425 0         0 $_matched = 1;
3426 0         0 last;
3427             }
3428            
3429            
3430 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
3431             {
3432            
3433            
3434 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3435 0 0       0 Parse::RecDescent::_trace(q{<>},
3436             Parse::RecDescent::_tracefirst($_[1]),
3437             q{optional_pattern},
3438             $tracelevel)
3439             if defined $::RD_TRACE;
3440 0         0 return undef;
3441             }
3442 0 0 0     0 if (!defined($return) && defined($score))
3443             {
3444 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3445             q{optional_pattern},
3446             $tracelevel)
3447             if defined $::RD_TRACE;
3448 0         0 $return = $score_return;
3449             }
3450 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3451 0 0       0 $return = $item[$#item] unless defined $return;
3452 0 0       0 if (defined $::RD_TRACE)
3453             {
3454 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3455             $return . q{])}, "",
3456             q{optional_pattern},
3457             $tracelevel);
3458 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3459             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3460             Parse::RecDescent::_tracefirst($text),
3461             , q{optional_pattern},
3462             $tracelevel)
3463             }
3464 0         0 $_[1] = $text;
3465 0         0 return $return;
3466             }
3467            
3468             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3469             sub Parse::RecDescent::Text::FormBuilder::Parser::option_list
3470             {
3471 3     3   20 my $thisparser = $_[0];
3472 1     1   6 use vars q{$tracelevel};
  1         2  
  1         275  
3473 3   50     7 local $tracelevel = ($tracelevel||0)+1;
3474 3         4 $ERRORS = 0;
3475 3         3 my $thisrule = $thisparser->{"rules"}{"option_list"};
3476            
3477 3 50       5 Parse::RecDescent::_trace(q{Trying rule: [option_list]},
3478             Parse::RecDescent::_tracefirst($_[1]),
3479             q{option_list},
3480             $tracelevel)
3481             if defined $::RD_TRACE;
3482            
3483            
3484 3         2 my $err_at = @{$thisparser->{errors}};
  3         3  
3485            
3486 3         2 my $score;
3487             my $score_return;
3488 0         0 my $_tok;
3489 3         4 my $return = undef;
3490 3         2 my $_matched=0;
3491 3         1 my $commit=0;
3492 3         3 my @item = ();
3493 3         4 my %item = ();
3494 3   33     6 my $repeating = defined($_[2]) && $_[2];
3495 3   33     5 my $_noactions = defined($_[3]) && $_[3];
3496 3 50       5 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3497 3 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3498 3         2 my $text;
3499 3         2 my $lastsep="";
3500 3         5 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3501 3         78 $expectation->at($_[1]);
3502            
3503 3         7 my $thisline;
3504 3         7 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3505            
3506            
3507            
3508 3   33     17 while (!$_matched && !$commit)
3509             {
3510            
3511 3 50       4 Parse::RecDescent::_trace(q{Trying production: [options]},
3512             Parse::RecDescent::_tracefirst($_[1]),
3513             q{option_list},
3514             $tracelevel)
3515             if defined $::RD_TRACE;
3516 3         4 my $thisprod = $thisrule->{"prods"}[0];
3517 3         3 $text = $_[1];
3518 3         1 my $_savetext;
3519 3         7 @item = (q{option_list});
3520 3         5 %item = (__RULE__ => q{option_list});
3521 3         2 my $repcount = 0;
3522            
3523            
3524 3 50       5 Parse::RecDescent::_trace(q{Trying subrule: [options]},
3525             Parse::RecDescent::_tracefirst($text),
3526             q{option_list},
3527             $tracelevel)
3528             if defined $::RD_TRACE;
3529 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         198  
  3         2  
3530 3         5 $expectation->is(q{})->at($text);
3531 3 50   3   19 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::options($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         4  
3532             {
3533            
3534 3 50       4 Parse::RecDescent::_trace(q{<>},
3535             Parse::RecDescent::_tracefirst($text),
3536             q{option_list},
3537             $tracelevel)
3538             if defined $::RD_TRACE;
3539 3         5 $expectation->failed();
3540 3         6 last;
3541             }
3542 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [options]<< (return value: [}
3543             . $_tok . q{]},
3544            
3545             Parse::RecDescent::_tracefirst($text),
3546             q{option_list},
3547             $tracelevel)
3548             if defined $::RD_TRACE;
3549 0         0 $item{q{options}} = $_tok;
3550 0         0 push @item, $_tok;
3551            
3552             }
3553            
3554            
3555 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [options]<<},
3556             Parse::RecDescent::_tracefirst($text),
3557             q{option_list},
3558             $tracelevel)
3559             if defined $::RD_TRACE;
3560 0         0 $_matched = 1;
3561 0         0 last;
3562             }
3563            
3564            
3565 3   33     12 while (!$_matched && !$commit)
3566             {
3567            
3568 3 50       5 Parse::RecDescent::_trace(q{Trying production: [list_var]},
3569             Parse::RecDescent::_tracefirst($_[1]),
3570             q{option_list},
3571             $tracelevel)
3572             if defined $::RD_TRACE;
3573 3         3 my $thisprod = $thisrule->{"prods"}[1];
3574 3         4 $text = $_[1];
3575 3         2 my $_savetext;
3576 3         4 @item = (q{option_list});
3577 3         4 %item = (__RULE__ => q{option_list});
3578 3         2 my $repcount = 0;
3579            
3580            
3581 3 50       5 Parse::RecDescent::_trace(q{Trying subrule: [list_var]},
3582             Parse::RecDescent::_tracefirst($text),
3583             q{option_list},
3584             $tracelevel)
3585             if defined $::RD_TRACE;
3586 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         316  
  3         2  
3587 3         5 $expectation->is(q{})->at($text);
3588 3 50   3   19 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::list_var($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         4  
3589             {
3590            
3591 3 50       4 Parse::RecDescent::_trace(q{<>},
3592             Parse::RecDescent::_tracefirst($text),
3593             q{option_list},
3594             $tracelevel)
3595             if defined $::RD_TRACE;
3596 3         6 $expectation->failed();
3597 3         6 last;
3598             }
3599 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [list_var]<< (return value: [}
3600             . $_tok . q{]},
3601            
3602             Parse::RecDescent::_tracefirst($text),
3603             q{option_list},
3604             $tracelevel)
3605             if defined $::RD_TRACE;
3606 0         0 $item{q{list_var}} = $_tok;
3607 0         0 push @item, $_tok;
3608            
3609             }
3610            
3611            
3612 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [list_var]<<},
3613             Parse::RecDescent::_tracefirst($text),
3614             q{option_list},
3615             $tracelevel)
3616             if defined $::RD_TRACE;
3617 0         0 $_matched = 1;
3618 0         0 last;
3619             }
3620            
3621            
3622 3 50 33     17 unless ( $_matched || defined($return) || defined($score) )
      33        
3623             {
3624            
3625            
3626 3         2 $_[1] = $text; # NOT SURE THIS IS NEEDED
3627 3 50       6 Parse::RecDescent::_trace(q{<>},
3628             Parse::RecDescent::_tracefirst($_[1]),
3629             q{option_list},
3630             $tracelevel)
3631             if defined $::RD_TRACE;
3632 3         8 return undef;
3633             }
3634 0 0 0     0 if (!defined($return) && defined($score))
3635             {
3636 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3637             q{option_list},
3638             $tracelevel)
3639             if defined $::RD_TRACE;
3640 0         0 $return = $score_return;
3641             }
3642 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3643 0 0       0 $return = $item[$#item] unless defined $return;
3644 0 0       0 if (defined $::RD_TRACE)
3645             {
3646 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3647             $return . q{])}, "",
3648             q{option_list},
3649             $tracelevel);
3650 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3651             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3652             Parse::RecDescent::_tracefirst($text),
3653             , q{option_list},
3654             $tracelevel)
3655             }
3656 0         0 $_[1] = $text;
3657 0         0 return $return;
3658             }
3659            
3660             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3661             sub Parse::RecDescent::Text::FormBuilder::Parser::value
3662             {
3663 0     0   0 my $thisparser = $_[0];
3664 1     1   4 use vars q{$tracelevel};
  1         8  
  1         255  
3665 0   0     0 local $tracelevel = ($tracelevel||0)+1;
3666 0         0 $ERRORS = 0;
3667 0         0 my $thisrule = $thisparser->{"rules"}{"value"};
3668            
3669 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [value]},
3670             Parse::RecDescent::_tracefirst($_[1]),
3671             q{value},
3672             $tracelevel)
3673             if defined $::RD_TRACE;
3674            
3675            
3676 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
3677            
3678 0         0 my $score;
3679             my $score_return;
3680 0         0 my $_tok;
3681 0         0 my $return = undef;
3682 0         0 my $_matched=0;
3683 0         0 my $commit=0;
3684 0         0 my @item = ();
3685 0         0 my %item = ();
3686 0   0     0 my $repeating = defined($_[2]) && $_[2];
3687 0   0     0 my $_noactions = defined($_[3]) && $_[3];
3688 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3689 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3690 0         0 my $text;
3691 0         0 my $lastsep="";
3692 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3693 0         0 $expectation->at($_[1]);
3694            
3695 0         0 my $thisline;
3696 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3697            
3698            
3699            
3700 0   0     0 while (!$_matched && !$commit)
3701             {
3702            
3703 0 0       0 Parse::RecDescent::_trace(q{Trying production: [identifier]},
3704             Parse::RecDescent::_tracefirst($_[1]),
3705             q{value},
3706             $tracelevel)
3707             if defined $::RD_TRACE;
3708 0         0 my $thisprod = $thisrule->{"prods"}[0];
3709 0         0 $text = $_[1];
3710 0         0 my $_savetext;
3711 0         0 @item = (q{value});
3712 0         0 %item = (__RULE__ => q{value});
3713 0         0 my $repcount = 0;
3714            
3715            
3716 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
3717             Parse::RecDescent::_tracefirst($text),
3718             q{value},
3719             $tracelevel)
3720             if defined $::RD_TRACE;
3721 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         295  
  0         0  
3722 0         0 $expectation->is(q{})->at($text);
3723 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
3724             {
3725            
3726 0 0       0 Parse::RecDescent::_trace(q{<>},
3727             Parse::RecDescent::_tracefirst($text),
3728             q{value},
3729             $tracelevel)
3730             if defined $::RD_TRACE;
3731 0         0 $expectation->failed();
3732 0         0 last;
3733             }
3734 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
3735             . $_tok . q{]},
3736            
3737             Parse::RecDescent::_tracefirst($text),
3738             q{value},
3739             $tracelevel)
3740             if defined $::RD_TRACE;
3741 0         0 $item{q{identifier}} = $_tok;
3742 0         0 push @item, $_tok;
3743            
3744             }
3745            
3746            
3747 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
3748             Parse::RecDescent::_tracefirst($text),
3749             q{value},
3750             $tracelevel)
3751             if defined $::RD_TRACE;
3752 0         0 $_matched = 1;
3753 0         0 last;
3754             }
3755            
3756            
3757 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
3758             {
3759            
3760            
3761 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3762 0 0       0 Parse::RecDescent::_trace(q{<>},
3763             Parse::RecDescent::_tracefirst($_[1]),
3764             q{value},
3765             $tracelevel)
3766             if defined $::RD_TRACE;
3767 0         0 return undef;
3768             }
3769 0 0 0     0 if (!defined($return) && defined($score))
3770             {
3771 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3772             q{value},
3773             $tracelevel)
3774             if defined $::RD_TRACE;
3775 0         0 $return = $score_return;
3776             }
3777 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3778 0 0       0 $return = $item[$#item] unless defined $return;
3779 0 0       0 if (defined $::RD_TRACE)
3780             {
3781 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3782             $return . q{])}, "",
3783             q{value},
3784             $tracelevel);
3785 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3786             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3787             Parse::RecDescent::_tracefirst($text),
3788             , q{value},
3789             $tracelevel)
3790             }
3791 0         0 $_[1] = $text;
3792 0         0 return $return;
3793             }
3794            
3795             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3796             sub Parse::RecDescent::Text::FormBuilder::Parser::name
3797             {
3798 12     12   10 my $thisparser = $_[0];
3799 1     1   4 use vars q{$tracelevel};
  1         1  
  1         231  
3800 12   50     18 local $tracelevel = ($tracelevel||0)+1;
3801 12         10 $ERRORS = 0;
3802 12         18 my $thisrule = $thisparser->{"rules"}{"name"};
3803            
3804 12 50       22 Parse::RecDescent::_trace(q{Trying rule: [name]},
3805             Parse::RecDescent::_tracefirst($_[1]),
3806             q{name},
3807             $tracelevel)
3808             if defined $::RD_TRACE;
3809            
3810            
3811 12         11 my $err_at = @{$thisparser->{errors}};
  12         12  
3812            
3813 12         10 my $score;
3814             my $score_return;
3815 0         0 my $_tok;
3816 12         12 my $return = undef;
3817 12         5 my $_matched=0;
3818 12         9 my $commit=0;
3819 12         12 my @item = ();
3820 12         12 my %item = ();
3821 12   33     24 my $repeating = defined($_[2]) && $_[2];
3822 12   33     22 my $_noactions = defined($_[3]) && $_[3];
3823 12 50       15 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         8  
  12         16  
3824 12 50       18 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3825 12         10 my $text;
3826 12         10 my $lastsep="";
3827 12         21 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3828 12         198 $expectation->at($_[1]);
3829            
3830 12         25 my $thisline;
3831 12         25 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3832            
3833            
3834            
3835 12   33     66 while (!$_matched && !$commit)
3836             {
3837            
3838 12 50       18 Parse::RecDescent::_trace(q{Trying production: [identifier]},
3839             Parse::RecDescent::_tracefirst($_[1]),
3840             q{name},
3841             $tracelevel)
3842             if defined $::RD_TRACE;
3843 12         13 my $thisprod = $thisrule->{"prods"}[0];
3844 12         10 $text = $_[1];
3845 12         8 my $_savetext;
3846 12         13 @item = (q{name});
3847 12         15 %item = (__RULE__ => q{name});
3848 12         10 my $repcount = 0;
3849            
3850            
3851 12 50       16 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
3852             Parse::RecDescent::_tracefirst($text),
3853             q{name},
3854             $tracelevel)
3855             if defined $::RD_TRACE;
3856 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         301  
  12         12  
3857 12         15 $expectation->is(q{})->at($text);
3858 12 100   12   68 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         23  
3859             {
3860            
3861 9 50       14 Parse::RecDescent::_trace(q{<>},
3862             Parse::RecDescent::_tracefirst($text),
3863             q{name},
3864             $tracelevel)
3865             if defined $::RD_TRACE;
3866 9         14 $expectation->failed();
3867 9         17 last;
3868             }
3869 3 50       8 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
3870             . $_tok . q{]},
3871            
3872             Parse::RecDescent::_tracefirst($text),
3873             q{name},
3874             $tracelevel)
3875             if defined $::RD_TRACE;
3876 3         4 $item{q{identifier}} = $_tok;
3877 3         4 push @item, $_tok;
3878            
3879             }
3880            
3881            
3882 3 50       6 Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
3883             Parse::RecDescent::_tracefirst($text),
3884             q{name},
3885             $tracelevel)
3886             if defined $::RD_TRACE;
3887 3         2 $_matched = 1;
3888 3         2 last;
3889             }
3890            
3891            
3892 12 50 66     59 unless ( $_matched || defined($return) || defined($score) )
      66        
3893             {
3894            
3895            
3896 9         8 $_[1] = $text; # NOT SURE THIS IS NEEDED
3897 9 50       13 Parse::RecDescent::_trace(q{<>},
3898             Parse::RecDescent::_tracefirst($_[1]),
3899             q{name},
3900             $tracelevel)
3901             if defined $::RD_TRACE;
3902 9         32 return undef;
3903             }
3904 3 50 33     11 if (!defined($return) && defined($score))
3905             {
3906 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3907             q{name},
3908             $tracelevel)
3909             if defined $::RD_TRACE;
3910 0         0 $return = $score_return;
3911             }
3912 3         2 splice @{$thisparser->{errors}}, $err_at;
  3         4  
3913 3 50       7 $return = $item[$#item] unless defined $return;
3914 3 50       4 if (defined $::RD_TRACE)
3915             {
3916 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3917             $return . q{])}, "",
3918             q{name},
3919             $tracelevel);
3920 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3921             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3922             Parse::RecDescent::_tracefirst($text),
3923             , q{name},
3924             $tracelevel)
3925             }
3926 3         4 $_[1] = $text;
3927 3         12 return $return;
3928             }
3929            
3930             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3931             sub Parse::RecDescent::Text::FormBuilder::Parser::default
3932             {
3933 3     3   22 my $thisparser = $_[0];
3934 1     1   5 use vars q{$tracelevel};
  1         1  
  1         328  
3935 3   50     6 local $tracelevel = ($tracelevel||0)+1;
3936 3         3 $ERRORS = 0;
3937 3         4 my $thisrule = $thisparser->{"rules"}{"default"};
3938            
3939 3 50       5 Parse::RecDescent::_trace(q{Trying rule: [default]},
3940             Parse::RecDescent::_tracefirst($_[1]),
3941             q{default},
3942             $tracelevel)
3943             if defined $::RD_TRACE;
3944            
3945            
3946 3         3 my $err_at = @{$thisparser->{errors}};
  3         4  
3947            
3948 3         2 my $score;
3949             my $score_return;
3950 0         0 my $_tok;
3951 3         2 my $return = undef;
3952 3         4 my $_matched=0;
3953 3         3 my $commit=0;
3954 3         3 my @item = ();
3955 3         4 my %item = ();
3956 3   33     251 my $repeating = defined($_[2]) && $_[2];
3957 3   33     8 my $_noactions = defined($_[3]) && $_[3];
3958 3 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3959 3 50       8 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3960 3         3 my $text;
3961 3         2 my $lastsep="";
3962 3         7 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
3963 3         52 $expectation->at($_[1]);
3964            
3965 3         5 my $thisline;
3966 3         10 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3967            
3968            
3969            
3970 3   33     17 while (!$_matched && !$commit)
3971             {
3972            
3973 3 50       5 Parse::RecDescent::_trace(q{Trying production: ['=' simple_multiword, or quoted_string]},
3974             Parse::RecDescent::_tracefirst($_[1]),
3975             q{default},
3976             $tracelevel)
3977             if defined $::RD_TRACE;
3978 3         3 my $thisprod = $thisrule->{"prods"}[0];
3979 3         3 $text = $_[1];
3980 3         3 my $_savetext;
3981 3         3 @item = (q{default});
3982 3         6 %item = (__RULE__ => q{default});
3983 3         2 my $repcount = 0;
3984            
3985            
3986 3 50       5 Parse::RecDescent::_trace(q{Trying terminal: ['=']},
3987             Parse::RecDescent::_tracefirst($text),
3988             q{default},
3989             $tracelevel)
3990             if defined $::RD_TRACE;
3991 3         3 $lastsep = "";
3992 3         5 $expectation->is(q{})->at($text);
3993            
3994            
3995 3 50 33     30 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\=//)
  3 50       18  
3996             {
3997            
3998 3         6 $expectation->failed();
3999 3 50       9 Parse::RecDescent::_trace(qq{<>},
4000             Parse::RecDescent::_tracefirst($text))
4001             if defined $::RD_TRACE;
4002 3         4 last;
4003             }
4004 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4005             . $& . q{])},
4006             Parse::RecDescent::_tracefirst($text))
4007             if defined $::RD_TRACE;
4008 0         0 push @item, $item{__STRING1__}=$&;
4009            
4010            
4011 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_default]},
4012             Parse::RecDescent::_tracefirst($text),
4013             q{default},
4014             $tracelevel)
4015             if defined $::RD_TRACE;
4016 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         366  
  0         0  
4017 0         0 $expectation->is(q{simple_multiword, or quoted_string})->at($text);
4018 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_default($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4019             {
4020            
4021 0 0       0 Parse::RecDescent::_trace(q{<>},
4022             Parse::RecDescent::_tracefirst($text),
4023             q{default},
4024             $tracelevel)
4025             if defined $::RD_TRACE;
4026 0         0 $expectation->failed();
4027 0         0 last;
4028             }
4029 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_default]<< (return value: [}
4030             . $_tok . q{]},
4031            
4032             Parse::RecDescent::_tracefirst($text),
4033             q{default},
4034             $tracelevel)
4035             if defined $::RD_TRACE;
4036 0         0 $item{q{_alternation_1_of_production_1_of_rule_default}} = $_tok;
4037 0         0 push @item, $_tok;
4038            
4039             }
4040            
4041 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4042             Parse::RecDescent::_tracefirst($text),
4043             q{default},
4044             $tracelevel)
4045             if defined $::RD_TRACE;
4046            
4047            
4048 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
4049 0 0       0 unless (defined $_tok)
4050             {
4051 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4052             if defined $::RD_TRACE;
4053 0         0 last;
4054             }
4055 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4056             . $_tok . q{])},
4057             Parse::RecDescent::_tracefirst($text))
4058             if defined $::RD_TRACE;
4059 0         0 push @item, $_tok;
4060 0         0 $item{__ACTION1__}=$_tok;
4061            
4062            
4063            
4064 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['=' simple_multiword, or quoted_string]<<},
4065             Parse::RecDescent::_tracefirst($text),
4066             q{default},
4067             $tracelevel)
4068             if defined $::RD_TRACE;
4069 0         0 $_matched = 1;
4070 0         0 last;
4071             }
4072            
4073            
4074 3 50 33     15 unless ( $_matched || defined($return) || defined($score) )
      33        
4075             {
4076            
4077            
4078 3         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
4079 3 50       6 Parse::RecDescent::_trace(q{<>},
4080             Parse::RecDescent::_tracefirst($_[1]),
4081             q{default},
4082             $tracelevel)
4083             if defined $::RD_TRACE;
4084 3         9 return undef;
4085             }
4086 0 0 0     0 if (!defined($return) && defined($score))
4087             {
4088 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4089             q{default},
4090             $tracelevel)
4091             if defined $::RD_TRACE;
4092 0         0 $return = $score_return;
4093             }
4094 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4095 0 0       0 $return = $item[$#item] unless defined $return;
4096 0 0       0 if (defined $::RD_TRACE)
4097             {
4098 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4099             $return . q{])}, "",
4100             q{default},
4101             $tracelevel);
4102 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4103             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4104             Parse::RecDescent::_tracefirst($text),
4105             , q{default},
4106             $tracelevel)
4107             }
4108 0         0 $_[1] = $text;
4109 0         0 return $return;
4110             }
4111            
4112             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4113             sub Parse::RecDescent::Text::FormBuilder::Parser::section_head
4114             {
4115 12     12   10 my $thisparser = $_[0];
4116 1     1   4 use vars q{$tracelevel};
  1         1  
  1         351  
4117 12   50     24 local $tracelevel = ($tracelevel||0)+1;
4118 12         9 $ERRORS = 0;
4119 12         13 my $thisrule = $thisparser->{"rules"}{"section_head"};
4120            
4121 12 50       15 Parse::RecDescent::_trace(q{Trying rule: [section_head]},
4122             Parse::RecDescent::_tracefirst($_[1]),
4123             q{section_head},
4124             $tracelevel)
4125             if defined $::RD_TRACE;
4126            
4127            
4128 12         11 my $err_at = @{$thisparser->{errors}};
  12         12  
4129            
4130 12         9 my $score;
4131             my $score_return;
4132 0         0 my $_tok;
4133 12         7 my $return = undef;
4134 12         10 my $_matched=0;
4135 12         6 my $commit=0;
4136 12         11 my @item = ();
4137 12         12 my %item = ();
4138 12   33     24 my $repeating = defined($_[2]) && $_[2];
4139 12   33     23 my $_noactions = defined($_[3]) && $_[3];
4140 12 50       15 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         11  
  12         15  
4141 12 50       20 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4142 12         9 my $text;
4143 12         11 my $lastsep="";
4144 12         24 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4145 12         183 $expectation->at($_[1]);
4146            
4147 12         25 my $thisline;
4148 12         27 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4149            
4150            
4151            
4152 12   33     75 while (!$_matched && !$commit)
4153             {
4154            
4155 12 50       19 Parse::RecDescent::_trace(q{Trying production: ['!section' identifier /.*/]},
4156             Parse::RecDescent::_tracefirst($_[1]),
4157             q{section_head},
4158             $tracelevel)
4159             if defined $::RD_TRACE;
4160 12         16 my $thisprod = $thisrule->{"prods"}[0];
4161 12         12 $text = $_[1];
4162 12         8 my $_savetext;
4163 12         12 @item = (q{section_head});
4164 12         15 %item = (__RULE__ => q{section_head});
4165 12         7 my $repcount = 0;
4166            
4167            
4168 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!section']},
4169             Parse::RecDescent::_tracefirst($text),
4170             q{section_head},
4171             $tracelevel)
4172             if defined $::RD_TRACE;
4173 12         11 $lastsep = "";
4174 12         19 $expectation->is(q{})->at($text);
4175            
4176            
4177 12 50 33     88 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!section//)
  12 50       68  
4178             {
4179            
4180 12         21 $expectation->failed();
4181 12 50       35 Parse::RecDescent::_trace(qq{<>},
4182             Parse::RecDescent::_tracefirst($text))
4183             if defined $::RD_TRACE;
4184 12         14 last;
4185             }
4186 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4187             . $& . q{])},
4188             Parse::RecDescent::_tracefirst($text))
4189             if defined $::RD_TRACE;
4190 0         0 push @item, $item{__STRING1__}=$&;
4191            
4192            
4193 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
4194             Parse::RecDescent::_tracefirst($text),
4195             q{section_head},
4196             $tracelevel)
4197             if defined $::RD_TRACE;
4198 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         523  
  0         0  
4199 0         0 $expectation->is(q{identifier})->at($text);
4200 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4201             {
4202            
4203 0 0       0 Parse::RecDescent::_trace(q{<>},
4204             Parse::RecDescent::_tracefirst($text),
4205             q{section_head},
4206             $tracelevel)
4207             if defined $::RD_TRACE;
4208 0         0 $expectation->failed();
4209 0         0 last;
4210             }
4211 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
4212             . $_tok . q{]},
4213            
4214             Parse::RecDescent::_tracefirst($text),
4215             q{section_head},
4216             $tracelevel)
4217             if defined $::RD_TRACE;
4218 0         0 $item{q{identifier}} = $_tok;
4219 0         0 push @item, $_tok;
4220            
4221             }
4222            
4223 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
4224             q{section_head},
4225             $tracelevel)
4226             if defined $::RD_TRACE;
4227 0         0 $lastsep = "";
4228 0         0 $expectation->is(q{/.*/})->at($text);
4229            
4230            
4231 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
4232             {
4233            
4234 0         0 $expectation->failed();
4235 0 0       0 Parse::RecDescent::_trace(q{<>},
4236             Parse::RecDescent::_tracefirst($text))
4237             if defined $::RD_TRACE;
4238            
4239 0         0 last;
4240             }
4241 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4242             . $& . q{])},
4243             Parse::RecDescent::_tracefirst($text))
4244             if defined $::RD_TRACE;
4245 0         0 push @item, $item{__PATTERN1__}=$&;
4246            
4247            
4248 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4249             Parse::RecDescent::_tracefirst($text),
4250             q{section_head},
4251             $tracelevel)
4252             if defined $::RD_TRACE;
4253            
4254            
4255 0 0       0 $_tok = ($_noactions) ? 0 : do {
4256             #warn "starting section $item{identifier}\n";
4257             #warn " with heading $item[3]\n" if $item[3];
4258            
4259 0 0       0 if (@lines) {
4260 0         0 push @sections,
4261             {
4262             id => $section_id,
4263             head => $section_head,
4264             lines => [ @lines ],
4265             };
4266             }
4267            
4268 0         0 $section_id = $item{identifier};
4269 0         0 $section_head = $item[3];
4270 0         0 @lines = ();
4271             };
4272 0 0       0 unless (defined $_tok)
4273             {
4274 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4275             if defined $::RD_TRACE;
4276 0         0 last;
4277             }
4278 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4279             . $_tok . q{])},
4280             Parse::RecDescent::_tracefirst($text))
4281             if defined $::RD_TRACE;
4282 0         0 push @item, $_tok;
4283 0         0 $item{__ACTION1__}=$_tok;
4284            
4285            
4286            
4287 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!section' identifier /.*/]<<},
4288             Parse::RecDescent::_tracefirst($text),
4289             q{section_head},
4290             $tracelevel)
4291             if defined $::RD_TRACE;
4292 0         0 $_matched = 1;
4293 0         0 last;
4294             }
4295            
4296            
4297 12 50 33     55 unless ( $_matched || defined($return) || defined($score) )
      33        
4298             {
4299            
4300            
4301 12         13 $_[1] = $text; # NOT SURE THIS IS NEEDED
4302 12 50       15 Parse::RecDescent::_trace(q{<>},
4303             Parse::RecDescent::_tracefirst($_[1]),
4304             q{section_head},
4305             $tracelevel)
4306             if defined $::RD_TRACE;
4307 12         42 return undef;
4308             }
4309 0 0 0     0 if (!defined($return) && defined($score))
4310             {
4311 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4312             q{section_head},
4313             $tracelevel)
4314             if defined $::RD_TRACE;
4315 0         0 $return = $score_return;
4316             }
4317 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4318 0 0       0 $return = $item[$#item] unless defined $return;
4319 0 0       0 if (defined $::RD_TRACE)
4320             {
4321 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4322             $return . q{])}, "",
4323             q{section_head},
4324             $tracelevel);
4325 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4326             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4327             Parse::RecDescent::_tracefirst($text),
4328             , q{section_head},
4329             $tracelevel)
4330             }
4331 0         0 $_[1] = $text;
4332 0         0 return $return;
4333             }
4334            
4335             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4336             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_field_line
4337             {
4338 0     0   0 my $thisparser = $_[0];
4339 1     1   4 use vars q{$tracelevel};
  1         1  
  1         236  
4340 0   0     0 local $tracelevel = ($tracelevel||0)+1;
4341 0         0 $ERRORS = 0;
4342 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_field_line"};
4343            
4344 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_field_line]},
4345             Parse::RecDescent::_tracefirst($_[1]),
4346             q{_alternation_1_of_production_1_of_rule_field_line},
4347             $tracelevel)
4348             if defined $::RD_TRACE;
4349            
4350            
4351 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
4352            
4353 0         0 my $score;
4354             my $score_return;
4355 0         0 my $_tok;
4356 0         0 my $return = undef;
4357 0         0 my $_matched=0;
4358 0         0 my $commit=0;
4359 0         0 my @item = ();
4360 0         0 my %item = ();
4361 0   0     0 my $repeating = defined($_[2]) && $_[2];
4362 0   0     0 my $_noactions = defined($_[3]) && $_[3];
4363 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
4364 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4365 0         0 my $text;
4366 0         0 my $lastsep="";
4367 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4368 0         0 $expectation->at($_[1]);
4369            
4370 0         0 my $thisline;
4371 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4372            
4373            
4374            
4375 0   0     0 while (!$_matched && !$commit)
4376             {
4377            
4378 0 0       0 Parse::RecDescent::_trace(q{Trying production: [field]},
4379             Parse::RecDescent::_tracefirst($_[1]),
4380             q{_alternation_1_of_production_1_of_rule_field_line},
4381             $tracelevel)
4382             if defined $::RD_TRACE;
4383 0         0 my $thisprod = $thisrule->{"prods"}[0];
4384 0         0 $text = $_[1];
4385 0         0 my $_savetext;
4386 0         0 @item = (q{_alternation_1_of_production_1_of_rule_field_line});
4387 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_field_line});
4388 0         0 my $repcount = 0;
4389            
4390            
4391 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [field]},
4392             Parse::RecDescent::_tracefirst($text),
4393             q{_alternation_1_of_production_1_of_rule_field_line},
4394             $tracelevel)
4395             if defined $::RD_TRACE;
4396 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         189  
  0         0  
4397 0         0 $expectation->is(q{})->at($text);
4398 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::field($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4399             {
4400            
4401 0 0       0 Parse::RecDescent::_trace(q{<>},
4402             Parse::RecDescent::_tracefirst($text),
4403             q{_alternation_1_of_production_1_of_rule_field_line},
4404             $tracelevel)
4405             if defined $::RD_TRACE;
4406 0         0 $expectation->failed();
4407 0         0 last;
4408             }
4409 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [field]<< (return value: [}
4410             . $_tok . q{]},
4411            
4412             Parse::RecDescent::_tracefirst($text),
4413             q{_alternation_1_of_production_1_of_rule_field_line},
4414             $tracelevel)
4415             if defined $::RD_TRACE;
4416 0         0 $item{q{field}} = $_tok;
4417 0         0 push @item, $_tok;
4418            
4419             }
4420            
4421            
4422 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [field]<<},
4423             Parse::RecDescent::_tracefirst($text),
4424             q{_alternation_1_of_production_1_of_rule_field_line},
4425             $tracelevel)
4426             if defined $::RD_TRACE;
4427 0         0 $_matched = 1;
4428 0         0 last;
4429             }
4430            
4431            
4432 0   0     0 while (!$_matched && !$commit)
4433             {
4434            
4435 0 0       0 Parse::RecDescent::_trace(q{Trying production: [comment]},
4436             Parse::RecDescent::_tracefirst($_[1]),
4437             q{_alternation_1_of_production_1_of_rule_field_line},
4438             $tracelevel)
4439             if defined $::RD_TRACE;
4440 0         0 my $thisprod = $thisrule->{"prods"}[1];
4441 0         0 $text = $_[1];
4442 0         0 my $_savetext;
4443 0         0 @item = (q{_alternation_1_of_production_1_of_rule_field_line});
4444 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_field_line});
4445 0         0 my $repcount = 0;
4446            
4447            
4448 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [comment]},
4449             Parse::RecDescent::_tracefirst($text),
4450             q{_alternation_1_of_production_1_of_rule_field_line},
4451             $tracelevel)
4452             if defined $::RD_TRACE;
4453 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         206  
  0         0  
4454 0         0 $expectation->is(q{})->at($text);
4455 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::comment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4456             {
4457            
4458 0 0       0 Parse::RecDescent::_trace(q{<>},
4459             Parse::RecDescent::_tracefirst($text),
4460             q{_alternation_1_of_production_1_of_rule_field_line},
4461             $tracelevel)
4462             if defined $::RD_TRACE;
4463 0         0 $expectation->failed();
4464 0         0 last;
4465             }
4466 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [comment]<< (return value: [}
4467             . $_tok . q{]},
4468            
4469             Parse::RecDescent::_tracefirst($text),
4470             q{_alternation_1_of_production_1_of_rule_field_line},
4471             $tracelevel)
4472             if defined $::RD_TRACE;
4473 0         0 $item{q{comment}} = $_tok;
4474 0         0 push @item, $_tok;
4475            
4476             }
4477            
4478            
4479 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
4480             Parse::RecDescent::_tracefirst($text),
4481             q{_alternation_1_of_production_1_of_rule_field_line},
4482             $tracelevel)
4483             if defined $::RD_TRACE;
4484 0         0 $_matched = 1;
4485 0         0 last;
4486             }
4487            
4488            
4489 0   0     0 while (!$_matched && !$commit)
4490             {
4491            
4492 0 0       0 Parse::RecDescent::_trace(q{Trying production: [blank]},
4493             Parse::RecDescent::_tracefirst($_[1]),
4494             q{_alternation_1_of_production_1_of_rule_field_line},
4495             $tracelevel)
4496             if defined $::RD_TRACE;
4497 0         0 my $thisprod = $thisrule->{"prods"}[2];
4498 0         0 $text = $_[1];
4499 0         0 my $_savetext;
4500 0         0 @item = (q{_alternation_1_of_production_1_of_rule_field_line});
4501 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_field_line});
4502 0         0 my $repcount = 0;
4503            
4504            
4505 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [blank]},
4506             Parse::RecDescent::_tracefirst($text),
4507             q{_alternation_1_of_production_1_of_rule_field_line},
4508             $tracelevel)
4509             if defined $::RD_TRACE;
4510 1     1   3 if (1) { no strict qw{refs};
  1         2  
  1         316  
  0         0  
4511 0         0 $expectation->is(q{})->at($text);
4512 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::blank($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4513             {
4514            
4515 0 0       0 Parse::RecDescent::_trace(q{<>},
4516             Parse::RecDescent::_tracefirst($text),
4517             q{_alternation_1_of_production_1_of_rule_field_line},
4518             $tracelevel)
4519             if defined $::RD_TRACE;
4520 0         0 $expectation->failed();
4521 0         0 last;
4522             }
4523 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [blank]<< (return value: [}
4524             . $_tok . q{]},
4525            
4526             Parse::RecDescent::_tracefirst($text),
4527             q{_alternation_1_of_production_1_of_rule_field_line},
4528             $tracelevel)
4529             if defined $::RD_TRACE;
4530 0         0 $item{q{blank}} = $_tok;
4531 0         0 push @item, $_tok;
4532            
4533             }
4534            
4535            
4536 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [blank]<<},
4537             Parse::RecDescent::_tracefirst($text),
4538             q{_alternation_1_of_production_1_of_rule_field_line},
4539             $tracelevel)
4540             if defined $::RD_TRACE;
4541 0         0 $_matched = 1;
4542 0         0 last;
4543             }
4544            
4545            
4546 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
4547             {
4548            
4549            
4550 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4551 0 0       0 Parse::RecDescent::_trace(q{<>},
4552             Parse::RecDescent::_tracefirst($_[1]),
4553             q{_alternation_1_of_production_1_of_rule_field_line},
4554             $tracelevel)
4555             if defined $::RD_TRACE;
4556 0         0 return undef;
4557             }
4558 0 0 0     0 if (!defined($return) && defined($score))
4559             {
4560 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4561             q{_alternation_1_of_production_1_of_rule_field_line},
4562             $tracelevel)
4563             if defined $::RD_TRACE;
4564 0         0 $return = $score_return;
4565             }
4566 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4567 0 0       0 $return = $item[$#item] unless defined $return;
4568 0 0       0 if (defined $::RD_TRACE)
4569             {
4570 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4571             $return . q{])}, "",
4572             q{_alternation_1_of_production_1_of_rule_field_line},
4573             $tracelevel);
4574 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4575             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4576             Parse::RecDescent::_tracefirst($text),
4577             , q{_alternation_1_of_production_1_of_rule_field_line},
4578             $tracelevel)
4579             }
4580 0         0 $_[1] = $text;
4581 0         0 return $return;
4582             }
4583            
4584             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4585             sub Parse::RecDescent::Text::FormBuilder::Parser::simple_multiword
4586             {
4587 0     0   0 my $thisparser = $_[0];
4588 1     1   4 use vars q{$tracelevel};
  1         1  
  1         736  
4589 0   0     0 local $tracelevel = ($tracelevel||0)+1;
4590 0         0 $ERRORS = 0;
4591 0         0 my $thisrule = $thisparser->{"rules"}{"simple_multiword"};
4592            
4593 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [simple_multiword]},
4594             Parse::RecDescent::_tracefirst($_[1]),
4595             q{simple_multiword},
4596             $tracelevel)
4597             if defined $::RD_TRACE;
4598            
4599            
4600 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
4601            
4602 0         0 my $score;
4603             my $score_return;
4604 0         0 my $_tok;
4605 0         0 my $return = undef;
4606 0         0 my $_matched=0;
4607 0         0 my $commit=0;
4608 0         0 my @item = ();
4609 0         0 my %item = ();
4610 0   0     0 my $repeating = defined($_[2]) && $_[2];
4611 0   0     0 my $_noactions = defined($_[3]) && $_[3];
4612 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
4613 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4614 0         0 my $text;
4615 0         0 my $lastsep="";
4616 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4617 0         0 $expectation->at($_[1]);
4618            
4619 0         0 my $thisline;
4620 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4621            
4622            
4623            
4624 0   0     0 while (!$_matched && !$commit)
4625             {
4626 0 0       0 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
4627 0 0       0 Parse::RecDescent::_trace(q{Trying production: [ /[\\w\\t ]+/]},
4628             Parse::RecDescent::_tracefirst($_[1]),
4629             q{simple_multiword},
4630             $tracelevel)
4631             if defined $::RD_TRACE;
4632 0         0 my $thisprod = $thisrule->{"prods"}[0];
4633 0         0 $text = $_[1];
4634 0         0 my $_savetext;
4635 0         0 @item = (q{simple_multiword});
4636 0         0 %item = (__RULE__ => q{simple_multiword});
4637 0         0 my $repcount = 0;
4638            
4639            
4640            
4641            
4642 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
4643             Parse::RecDescent::_tracefirst($text),
4644             q{simple_multiword},
4645             $tracelevel)
4646             if defined $::RD_TRACE;
4647 0         0 $_tok = do { my $oldskip = $skip; $skip=''; $oldskip };
  0         0  
  0         0  
  0         0  
4648 0 0       0 if (defined($_tok))
4649             {
4650 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
4651             . $_tok . q{])},
4652             Parse::RecDescent::_tracefirst($text))
4653             if defined $::RD_TRACE;
4654             }
4655             else
4656             {
4657 0 0       0 Parse::RecDescent::_trace(q{<>},
4658             Parse::RecDescent::_tracefirst($text))
4659             if defined $::RD_TRACE;
4660             }
4661            
4662 0 0       0 last unless defined $_tok;
4663 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
4664            
4665            
4666 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[\\w\\t ]+/]}, Parse::RecDescent::_tracefirst($text),
4667             q{simple_multiword},
4668             $tracelevel)
4669             if defined $::RD_TRACE;
4670 0         0 $lastsep = "";
4671 0         0 $expectation->is(q{/[\\w\\t ]+/})->at($text);
4672            
4673            
4674 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[\w\t ]+)//)
  0 0       0  
4675             {
4676            
4677 0         0 $expectation->failed();
4678 0 0       0 Parse::RecDescent::_trace(q{<>},
4679             Parse::RecDescent::_tracefirst($text))
4680             if defined $::RD_TRACE;
4681            
4682 0         0 last;
4683             }
4684 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4685             . $& . q{])},
4686             Parse::RecDescent::_tracefirst($text))
4687             if defined $::RD_TRACE;
4688 0         0 push @item, $item{__PATTERN1__}=$&;
4689            
4690            
4691 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4692             Parse::RecDescent::_tracefirst($text),
4693             q{simple_multiword},
4694             $tracelevel)
4695             if defined $::RD_TRACE;
4696            
4697            
4698 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
4699 0 0       0 unless (defined $_tok)
4700             {
4701 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4702             if defined $::RD_TRACE;
4703 0         0 last;
4704             }
4705 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4706             . $_tok . q{])},
4707             Parse::RecDescent::_tracefirst($text))
4708             if defined $::RD_TRACE;
4709 0         0 push @item, $_tok;
4710 0         0 $item{__ACTION1__}=$_tok;
4711            
4712            
4713            
4714 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [ /[\\w\\t ]+/]<<},
4715             Parse::RecDescent::_tracefirst($text),
4716             q{simple_multiword},
4717             $tracelevel)
4718             if defined $::RD_TRACE;
4719 0         0 $_matched = 1;
4720 0         0 last;
4721             }
4722            
4723            
4724 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
4725             {
4726            
4727            
4728 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4729 0 0       0 Parse::RecDescent::_trace(q{<>},
4730             Parse::RecDescent::_tracefirst($_[1]),
4731             q{simple_multiword},
4732             $tracelevel)
4733             if defined $::RD_TRACE;
4734 0         0 return undef;
4735             }
4736 0 0 0     0 if (!defined($return) && defined($score))
4737             {
4738 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4739             q{simple_multiword},
4740             $tracelevel)
4741             if defined $::RD_TRACE;
4742 0         0 $return = $score_return;
4743             }
4744 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4745 0 0       0 $return = $item[$#item] unless defined $return;
4746 0 0       0 if (defined $::RD_TRACE)
4747             {
4748 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4749             $return . q{])}, "",
4750             q{simple_multiword},
4751             $tracelevel);
4752 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4753             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4754             Parse::RecDescent::_tracefirst($text),
4755             , q{simple_multiword},
4756             $tracelevel)
4757             }
4758 0         0 $_[1] = $text;
4759 0         0 return $return;
4760             }
4761            
4762             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4763             sub Parse::RecDescent::Text::FormBuilder::Parser::form_spec
4764             {
4765 5     5   245 my $thisparser = $_[0];
4766 1     1   4 use vars q{$tracelevel};
  1         2  
  1         620  
4767 5   50     24 local $tracelevel = ($tracelevel||0)+1;
4768 5         6 $ERRORS = 0;
4769 5         11 my $thisrule = $thisparser->{"rules"}{"form_spec"};
4770            
4771 5 50       10 Parse::RecDescent::_trace(q{Trying rule: [form_spec]},
4772             Parse::RecDescent::_tracefirst($_[1]),
4773             q{form_spec},
4774             $tracelevel)
4775             if defined $::RD_TRACE;
4776            
4777            
4778 5         6 my $err_at = @{$thisparser->{errors}};
  5         7  
4779            
4780 5         8 my $score;
4781             my $score_return;
4782 0         0 my $_tok;
4783 5         68 my $return = undef;
4784 5         7 my $_matched=0;
4785 5         4 my $commit=0;
4786 5         6 my @item = ();
4787 5         8 my %item = ();
4788 5   33     14 my $repeating = defined($_[2]) && $_[2];
4789 5   33     12 my $_noactions = defined($_[3]) && $_[3];
4790 5 50       11 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  5         4  
  5         12  
4791 5 50       26 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4792 5         5 my $text;
4793 5         6 my $lastsep="";
4794 5         15 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4795 5         162 $expectation->at($_[1]);
4796            
4797 5         17 my $thisline;
4798 5         26 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4799            
4800            
4801            
4802 5   33     43 while (!$_matched && !$commit)
4803             {
4804            
4805 5 50       10 Parse::RecDescent::_trace(q{Trying production: [list_def, or description_def, or validate_def, or group_def, or note, or line]},
4806             Parse::RecDescent::_tracefirst($_[1]),
4807             q{form_spec},
4808             $tracelevel)
4809             if defined $::RD_TRACE;
4810 5         6 my $thisprod = $thisrule->{"prods"}[0];
4811 5         6 $text = $_[1];
4812 5         6 my $_savetext;
4813 5         6 @item = (q{form_spec});
4814 5         7 %item = (__RULE__ => q{form_spec});
4815 5         6 my $repcount = 0;
4816            
4817            
4818 5 50       7 Parse::RecDescent::_trace(q{Trying repeated subrule: [list_def, or description_def, or validate_def, or group_def, or note, or line]},
4819             Parse::RecDescent::_tracefirst($text),
4820             q{form_spec},
4821             $tracelevel)
4822             if defined $::RD_TRACE;
4823 5         11 $expectation->is(q{})->at($text);
4824            
4825 5 50       29 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_form_spec, 1, 100000000, $_noactions,$expectation,undef)))
4826             {
4827 0 0       0 Parse::RecDescent::_trace(q{<>},
4828             Parse::RecDescent::_tracefirst($text),
4829             q{form_spec},
4830             $tracelevel)
4831             if defined $::RD_TRACE;
4832 0         0 last;
4833             }
4834 5 50       52 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_form_spec]<< (}
4835             . @$_tok . q{ times)},
4836            
4837             Parse::RecDescent::_tracefirst($text),
4838             q{form_spec},
4839             $tracelevel)
4840             if defined $::RD_TRACE;
4841 5         9 $item{q{_alternation_1_of_production_1_of_rule_form_spec(s)}} = $_tok;
4842 5         11 push @item, $_tok;
4843            
4844            
4845            
4846 5 50       8 Parse::RecDescent::_trace(q{Trying action},
4847             Parse::RecDescent::_tracefirst($text),
4848             q{form_spec},
4849             $tracelevel)
4850             if defined $::RD_TRACE;
4851            
4852            
4853 5 50       9 $_tok = ($_noactions) ? 0 : do {
4854             # grab the last section, if there is any
4855 5 100       9 if (@lines) {
4856 1         5 push @sections,
4857             {
4858             id => $section_id,
4859             head => $section_head,
4860             lines => [ @lines ],
4861             };
4862             }
4863            
4864 5         5 $section_id = $item{identifier};
4865 5         6 $section_head = $item[3];
4866 5         5 @lines = ();
4867 5         31 $return = {
4868             title => $title,
4869             author => $author,
4870             description => $description,
4871             lists => \%lists,
4872             patterns => \%patterns,
4873             subs => \%subs,
4874             groups => \%groups,
4875             sections => \@sections,
4876             }
4877             };
4878 5 50       10 unless (defined $_tok)
4879             {
4880 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4881             if defined $::RD_TRACE;
4882 0         0 last;
4883             }
4884 5 50       9 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4885             . $_tok . q{])},
4886             Parse::RecDescent::_tracefirst($text))
4887             if defined $::RD_TRACE;
4888 5         4 push @item, $_tok;
4889 5         7 $item{__ACTION1__}=$_tok;
4890            
4891            
4892            
4893 5 50       8 Parse::RecDescent::_trace(q{>>Matched production: [list_def, or description_def, or validate_def, or group_def, or note, or line]<<},
4894             Parse::RecDescent::_tracefirst($text),
4895             q{form_spec},
4896             $tracelevel)
4897             if defined $::RD_TRACE;
4898 5         4 $_matched = 1;
4899 5         5 last;
4900             }
4901            
4902            
4903 5 0 33     14 unless ( $_matched || defined($return) || defined($score) )
      33        
4904             {
4905            
4906            
4907 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4908 0 0       0 Parse::RecDescent::_trace(q{<>},
4909             Parse::RecDescent::_tracefirst($_[1]),
4910             q{form_spec},
4911             $tracelevel)
4912             if defined $::RD_TRACE;
4913 0         0 return undef;
4914             }
4915 5 50 33     11 if (!defined($return) && defined($score))
4916             {
4917 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4918             q{form_spec},
4919             $tracelevel)
4920             if defined $::RD_TRACE;
4921 0         0 $return = $score_return;
4922             }
4923 5         4 splice @{$thisparser->{errors}}, $err_at;
  5         9  
4924 5 50       8 $return = $item[$#item] unless defined $return;
4925 5 50       7 if (defined $::RD_TRACE)
4926             {
4927 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4928             $return . q{])}, "",
4929             q{form_spec},
4930             $tracelevel);
4931 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4932             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4933             Parse::RecDescent::_tracefirst($text),
4934             , q{form_spec},
4935             $tracelevel)
4936             }
4937 5         5 $_[1] = $text;
4938 5         25 return $return;
4939             }
4940            
4941             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4942             sub Parse::RecDescent::Text::FormBuilder::Parser::hint
4943             {
4944 3     3   21 my $thisparser = $_[0];
4945 1     1   5 use vars q{$tracelevel};
  1         1  
  1         794  
4946 3   50     6 local $tracelevel = ($tracelevel||0)+1;
4947 3         3 $ERRORS = 0;
4948 3         4 my $thisrule = $thisparser->{"rules"}{"hint"};
4949            
4950 3 50       5 Parse::RecDescent::_trace(q{Trying rule: [hint]},
4951             Parse::RecDescent::_tracefirst($_[1]),
4952             q{hint},
4953             $tracelevel)
4954             if defined $::RD_TRACE;
4955            
4956            
4957 3         3 my $err_at = @{$thisparser->{errors}};
  3         4  
4958            
4959 3         2 my $score;
4960             my $score_return;
4961 0         0 my $_tok;
4962 3         2 my $return = undef;
4963 3         3 my $_matched=0;
4964 3         2 my $commit=0;
4965 3         3 my @item = ();
4966 3         4 my %item = ();
4967 3   33     6 my $repeating = defined($_[2]) && $_[2];
4968 3   33     7 my $_noactions = defined($_[3]) && $_[3];
4969 3 50       5 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
4970 3 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4971 3         2 my $text;
4972 3         4 my $lastsep="";
4973 3         7 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
4974 3         48 $expectation->at($_[1]);
4975            
4976 3         6 my $thisline;
4977 3         8 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4978            
4979            
4980            
4981 3   33     18 while (!$_matched && !$commit)
4982             {
4983            
4984 3 50       5 Parse::RecDescent::_trace(q{Trying production: ['[' /[^\\]]+/ ']']},
4985             Parse::RecDescent::_tracefirst($_[1]),
4986             q{hint},
4987             $tracelevel)
4988             if defined $::RD_TRACE;
4989 3         4 my $thisprod = $thisrule->{"prods"}[0];
4990 3         3 $text = $_[1];
4991 3         2 my $_savetext;
4992 3         5 @item = (q{hint});
4993 3         4 %item = (__RULE__ => q{hint});
4994 3         2 my $repcount = 0;
4995            
4996            
4997 3 50       5 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
4998             Parse::RecDescent::_tracefirst($text),
4999             q{hint},
5000             $tracelevel)
5001             if defined $::RD_TRACE;
5002 3         4 $lastsep = "";
5003 3         5 $expectation->is(q{})->at($text);
5004            
5005            
5006 3 50 33     29 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  3 50       19  
5007             {
5008            
5009 3         7 $expectation->failed();
5010 3 50       8 Parse::RecDescent::_trace(qq{<>},
5011             Parse::RecDescent::_tracefirst($text))
5012             if defined $::RD_TRACE;
5013 3         5 last;
5014             }
5015 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5016             . $& . q{])},
5017             Parse::RecDescent::_tracefirst($text))
5018             if defined $::RD_TRACE;
5019 0         0 push @item, $item{__STRING1__}=$&;
5020            
5021            
5022 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[^\\]]+/]}, Parse::RecDescent::_tracefirst($text),
5023             q{hint},
5024             $tracelevel)
5025             if defined $::RD_TRACE;
5026 0         0 $lastsep = "";
5027 0         0 $expectation->is(q{/[^\\]]+/})->at($text);
5028            
5029            
5030 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^\]]+)//)
  0 0       0  
5031             {
5032            
5033 0         0 $expectation->failed();
5034 0 0       0 Parse::RecDescent::_trace(q{<>},
5035             Parse::RecDescent::_tracefirst($text))
5036             if defined $::RD_TRACE;
5037            
5038 0         0 last;
5039             }
5040 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5041             . $& . q{])},
5042             Parse::RecDescent::_tracefirst($text))
5043             if defined $::RD_TRACE;
5044 0         0 push @item, $item{__PATTERN1__}=$&;
5045            
5046            
5047 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [']']},
5048             Parse::RecDescent::_tracefirst($text),
5049             q{hint},
5050             $tracelevel)
5051             if defined $::RD_TRACE;
5052 0         0 $lastsep = "";
5053 0         0 $expectation->is(q{']'})->at($text);
5054            
5055            
5056 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  0 0       0  
5057             {
5058            
5059 0         0 $expectation->failed();
5060 0 0       0 Parse::RecDescent::_trace(qq{<>},
5061             Parse::RecDescent::_tracefirst($text))
5062             if defined $::RD_TRACE;
5063 0         0 last;
5064             }
5065 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5066             . $& . q{])},
5067             Parse::RecDescent::_tracefirst($text))
5068             if defined $::RD_TRACE;
5069 0         0 push @item, $item{__STRING2__}=$&;
5070            
5071            
5072 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5073             Parse::RecDescent::_tracefirst($text),
5074             q{hint},
5075             $tracelevel)
5076             if defined $::RD_TRACE;
5077            
5078            
5079 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
5080 0 0       0 unless (defined $_tok)
5081             {
5082 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5083             if defined $::RD_TRACE;
5084 0         0 last;
5085             }
5086 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5087             . $_tok . q{])},
5088             Parse::RecDescent::_tracefirst($text))
5089             if defined $::RD_TRACE;
5090 0         0 push @item, $_tok;
5091 0         0 $item{__ACTION1__}=$_tok;
5092            
5093            
5094            
5095 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['[' /[^\\]]+/ ']']<<},
5096             Parse::RecDescent::_tracefirst($text),
5097             q{hint},
5098             $tracelevel)
5099             if defined $::RD_TRACE;
5100 0         0 $_matched = 1;
5101 0         0 last;
5102             }
5103            
5104            
5105 3 50 33     15 unless ( $_matched || defined($return) || defined($score) )
      33        
5106             {
5107            
5108            
5109 3         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
5110 3 50       6 Parse::RecDescent::_trace(q{<>},
5111             Parse::RecDescent::_tracefirst($_[1]),
5112             q{hint},
5113             $tracelevel)
5114             if defined $::RD_TRACE;
5115 3         9 return undef;
5116             }
5117 0 0 0     0 if (!defined($return) && defined($score))
5118             {
5119 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5120             q{hint},
5121             $tracelevel)
5122             if defined $::RD_TRACE;
5123 0         0 $return = $score_return;
5124             }
5125 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5126 0 0       0 $return = $item[$#item] unless defined $return;
5127 0 0       0 if (defined $::RD_TRACE)
5128             {
5129 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5130             $return . q{])}, "",
5131             q{hint},
5132             $tracelevel);
5133 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5134             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5135             Parse::RecDescent::_tracefirst($text),
5136             , q{hint},
5137             $tracelevel)
5138             }
5139 0         0 $_[1] = $text;
5140 0         0 return $return;
5141             }
5142            
5143             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5144             sub Parse::RecDescent::Text::FormBuilder::Parser::type
5145             {
5146 3     3   21 my $thisparser = $_[0];
5147 1     1   4 use vars q{$tracelevel};
  1         1  
  1         343  
5148 3   50     5 local $tracelevel = ($tracelevel||0)+1;
5149 3         3 $ERRORS = 0;
5150 3         4 my $thisrule = $thisparser->{"rules"}{"type"};
5151            
5152 3 50       5 Parse::RecDescent::_trace(q{Trying rule: [type]},
5153             Parse::RecDescent::_tracefirst($_[1]),
5154             q{type},
5155             $tracelevel)
5156             if defined $::RD_TRACE;
5157            
5158            
5159 3         2 my $err_at = @{$thisparser->{errors}};
  3         3  
5160            
5161 3         3 my $score;
5162             my $score_return;
5163 0         0 my $_tok;
5164 3         3 my $return = undef;
5165 3         2 my $_matched=0;
5166 3         2 my $commit=0;
5167 3         3 my @item = ();
5168 3         2 my %item = ();
5169 3   33     8 my $repeating = defined($_[2]) && $_[2];
5170 3   33     6 my $_noactions = defined($_[3]) && $_[3];
5171 3 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
5172 3 50       6 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5173 3         3 my $text;
5174 3         3 my $lastsep="";
5175 3         6 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5176 3         47 $expectation->at($_[1]);
5177            
5178 3         6 my $thisline;
5179 3         7 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5180            
5181            
5182            
5183 3   33     17 while (!$_matched && !$commit)
5184             {
5185            
5186 3 50       4 Parse::RecDescent::_trace(q{Trying production: [':' builtin_field, or var_name]},
5187             Parse::RecDescent::_tracefirst($_[1]),
5188             q{type},
5189             $tracelevel)
5190             if defined $::RD_TRACE;
5191 3         4 my $thisprod = $thisrule->{"prods"}[0];
5192 3         3 $text = $_[1];
5193 3         3 my $_savetext;
5194 3         3 @item = (q{type});
5195 3         4 %item = (__RULE__ => q{type});
5196 3         3 my $repcount = 0;
5197            
5198            
5199 3 50       4 Parse::RecDescent::_trace(q{Trying terminal: [':']},
5200             Parse::RecDescent::_tracefirst($text),
5201             q{type},
5202             $tracelevel)
5203             if defined $::RD_TRACE;
5204 3         4 $lastsep = "";
5205 3         4 $expectation->is(q{})->at($text);
5206            
5207            
5208 3 50 33     27 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  3 50       19  
5209             {
5210            
5211 3         6 $expectation->failed();
5212 3 50       8 Parse::RecDescent::_trace(qq{<>},
5213             Parse::RecDescent::_tracefirst($text))
5214             if defined $::RD_TRACE;
5215 3         5 last;
5216             }
5217 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5218             . $& . q{])},
5219             Parse::RecDescent::_tracefirst($text))
5220             if defined $::RD_TRACE;
5221 0         0 push @item, $item{__STRING1__}=$&;
5222            
5223            
5224 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_type]},
5225             Parse::RecDescent::_tracefirst($text),
5226             q{type},
5227             $tracelevel)
5228             if defined $::RD_TRACE;
5229 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         322  
  0         0  
5230 0         0 $expectation->is(q{builtin_field, or var_name})->at($text);
5231 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5232             {
5233            
5234 0 0       0 Parse::RecDescent::_trace(q{<>},
5235             Parse::RecDescent::_tracefirst($text),
5236             q{type},
5237             $tracelevel)
5238             if defined $::RD_TRACE;
5239 0         0 $expectation->failed();
5240 0         0 last;
5241             }
5242 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_type]<< (return value: [}
5243             . $_tok . q{]},
5244            
5245             Parse::RecDescent::_tracefirst($text),
5246             q{type},
5247             $tracelevel)
5248             if defined $::RD_TRACE;
5249 0         0 $item{q{_alternation_1_of_production_1_of_rule_type}} = $_tok;
5250 0         0 push @item, $_tok;
5251            
5252             }
5253            
5254            
5255 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [':' builtin_field, or var_name]<<},
5256             Parse::RecDescent::_tracefirst($text),
5257             q{type},
5258             $tracelevel)
5259             if defined $::RD_TRACE;
5260 0         0 $_matched = 1;
5261 0         0 last;
5262             }
5263            
5264            
5265 3 50 33     16 unless ( $_matched || defined($return) || defined($score) )
      33        
5266             {
5267            
5268            
5269 3         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
5270 3 50       4 Parse::RecDescent::_trace(q{<>},
5271             Parse::RecDescent::_tracefirst($_[1]),
5272             q{type},
5273             $tracelevel)
5274             if defined $::RD_TRACE;
5275 3         9 return undef;
5276             }
5277 0 0 0     0 if (!defined($return) && defined($score))
5278             {
5279 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5280             q{type},
5281             $tracelevel)
5282             if defined $::RD_TRACE;
5283 0         0 $return = $score_return;
5284             }
5285 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5286 0 0       0 $return = $item[$#item] unless defined $return;
5287 0 0       0 if (defined $::RD_TRACE)
5288             {
5289 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5290             $return . q{])}, "",
5291             q{type},
5292             $tracelevel);
5293 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5294             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5295             Parse::RecDescent::_tracefirst($text),
5296             , q{type},
5297             $tracelevel)
5298             }
5299 0         0 $_[1] = $text;
5300 0         0 return $return;
5301             }
5302            
5303             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5304             sub Parse::RecDescent::Text::FormBuilder::Parser::label
5305             {
5306 3     3   23 my $thisparser = $_[0];
5307 1     1   4 use vars q{$tracelevel};
  1         1  
  1         332  
5308 3   50     6 local $tracelevel = ($tracelevel||0)+1;
5309 3         2 $ERRORS = 0;
5310 3         4 my $thisrule = $thisparser->{"rules"}{"label"};
5311            
5312 3 50       6 Parse::RecDescent::_trace(q{Trying rule: [label]},
5313             Parse::RecDescent::_tracefirst($_[1]),
5314             q{label},
5315             $tracelevel)
5316             if defined $::RD_TRACE;
5317            
5318            
5319 3         2 my $err_at = @{$thisparser->{errors}};
  3         4  
5320            
5321 3         3 my $score;
5322             my $score_return;
5323 0         0 my $_tok;
5324 3         1 my $return = undef;
5325 3         3 my $_matched=0;
5326 3         4 my $commit=0;
5327 3         1 my @item = ();
5328 3         4 my %item = ();
5329 3   33     8 my $repeating = defined($_[2]) && $_[2];
5330 3   33     7 my $_noactions = defined($_[3]) && $_[3];
5331 3 50       5 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
5332 3 50       6 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5333 3         2 my $text;
5334 3         4 my $lastsep="";
5335 3         5 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5336 3         49 $expectation->at($_[1]);
5337            
5338 3         5 my $thisline;
5339 3         10 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5340            
5341            
5342            
5343 3   33     16 while (!$_matched && !$commit)
5344             {
5345            
5346 3 50       6 Parse::RecDescent::_trace(q{Trying production: ['|' simple_multiword, or quoted_string]},
5347             Parse::RecDescent::_tracefirst($_[1]),
5348             q{label},
5349             $tracelevel)
5350             if defined $::RD_TRACE;
5351 3         4 my $thisprod = $thisrule->{"prods"}[0];
5352 3         4 $text = $_[1];
5353 3         2 my $_savetext;
5354 3         4 @item = (q{label});
5355 3         5 %item = (__RULE__ => q{label});
5356 3         4 my $repcount = 0;
5357            
5358            
5359 3 50       4 Parse::RecDescent::_trace(q{Trying terminal: ['|']},
5360             Parse::RecDescent::_tracefirst($text),
5361             q{label},
5362             $tracelevel)
5363             if defined $::RD_TRACE;
5364 3         2 $lastsep = "";
5365 3         5 $expectation->is(q{})->at($text);
5366            
5367            
5368 3 50 33     30 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\|//)
  3 50       17  
5369             {
5370            
5371 3         6 $expectation->failed();
5372 3 50       9 Parse::RecDescent::_trace(qq{<>},
5373             Parse::RecDescent::_tracefirst($text))
5374             if defined $::RD_TRACE;
5375 3         5 last;
5376             }
5377 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5378             . $& . q{])},
5379             Parse::RecDescent::_tracefirst($text))
5380             if defined $::RD_TRACE;
5381 0         0 push @item, $item{__STRING1__}=$&;
5382            
5383            
5384 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_label]},
5385             Parse::RecDescent::_tracefirst($text),
5386             q{label},
5387             $tracelevel)
5388             if defined $::RD_TRACE;
5389 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         365  
  0         0  
5390 0         0 $expectation->is(q{simple_multiword, or quoted_string})->at($text);
5391 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_label($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5392             {
5393            
5394 0 0       0 Parse::RecDescent::_trace(q{<>},
5395             Parse::RecDescent::_tracefirst($text),
5396             q{label},
5397             $tracelevel)
5398             if defined $::RD_TRACE;
5399 0         0 $expectation->failed();
5400 0         0 last;
5401             }
5402 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_label]<< (return value: [}
5403             . $_tok . q{]},
5404            
5405             Parse::RecDescent::_tracefirst($text),
5406             q{label},
5407             $tracelevel)
5408             if defined $::RD_TRACE;
5409 0         0 $item{q{_alternation_1_of_production_1_of_rule_label}} = $_tok;
5410 0         0 push @item, $_tok;
5411            
5412             }
5413            
5414 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5415             Parse::RecDescent::_tracefirst($text),
5416             q{label},
5417             $tracelevel)
5418             if defined $::RD_TRACE;
5419            
5420            
5421 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
5422 0 0       0 unless (defined $_tok)
5423             {
5424 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5425             if defined $::RD_TRACE;
5426 0         0 last;
5427             }
5428 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5429             . $_tok . q{])},
5430             Parse::RecDescent::_tracefirst($text))
5431             if defined $::RD_TRACE;
5432 0         0 push @item, $_tok;
5433 0         0 $item{__ACTION1__}=$_tok;
5434            
5435            
5436            
5437 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['|' simple_multiword, or quoted_string]<<},
5438             Parse::RecDescent::_tracefirst($text),
5439             q{label},
5440             $tracelevel)
5441             if defined $::RD_TRACE;
5442 0         0 $_matched = 1;
5443 0         0 last;
5444             }
5445            
5446            
5447 3 50 33     17 unless ( $_matched || defined($return) || defined($score) )
      33        
5448             {
5449            
5450            
5451 3         2 $_[1] = $text; # NOT SURE THIS IS NEEDED
5452 3 50       6 Parse::RecDescent::_trace(q{<>},
5453             Parse::RecDescent::_tracefirst($_[1]),
5454             q{label},
5455             $tracelevel)
5456             if defined $::RD_TRACE;
5457 3         8 return undef;
5458             }
5459 0 0 0     0 if (!defined($return) && defined($score))
5460             {
5461 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5462             q{label},
5463             $tracelevel)
5464             if defined $::RD_TRACE;
5465 0         0 $return = $score_return;
5466             }
5467 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5468 0 0       0 $return = $item[$#item] unless defined $return;
5469 0 0       0 if (defined $::RD_TRACE)
5470             {
5471 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5472             $return . q{])}, "",
5473             q{label},
5474             $tracelevel);
5475 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5476             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5477             Parse::RecDescent::_tracefirst($text),
5478             , q{label},
5479             $tracelevel)
5480             }
5481 0         0 $_[1] = $text;
5482 0         0 return $return;
5483             }
5484            
5485             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5486             sub Parse::RecDescent::Text::FormBuilder::Parser::title
5487             {
5488 12     12   11 my $thisparser = $_[0];
5489 1     1   4 use vars q{$tracelevel};
  1         1  
  1         695  
5490 12   50     18 local $tracelevel = ($tracelevel||0)+1;
5491 12         11 $ERRORS = 0;
5492 12         13 my $thisrule = $thisparser->{"rules"}{"title"};
5493            
5494 12 50       18 Parse::RecDescent::_trace(q{Trying rule: [title]},
5495             Parse::RecDescent::_tracefirst($_[1]),
5496             q{title},
5497             $tracelevel)
5498             if defined $::RD_TRACE;
5499            
5500            
5501 12         9 my $err_at = @{$thisparser->{errors}};
  12         12  
5502            
5503 12         10 my $score;
5504             my $score_return;
5505 0         0 my $_tok;
5506 12         7 my $return = undef;
5507 12         9 my $_matched=0;
5508 12         10 my $commit=0;
5509 12         13 my @item = ();
5510 12         11 my %item = ();
5511 12   33     22 my $repeating = defined($_[2]) && $_[2];
5512 12   33     23 my $_noactions = defined($_[3]) && $_[3];
5513 12 50       16 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         8  
  12         13  
5514 12 50       22 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5515 12         5 my $text;
5516 12         14 my $lastsep="";
5517 12         19 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5518 12         177 $expectation->at($_[1]);
5519            
5520 12         26 my $thisline;
5521 12         26 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5522            
5523            
5524            
5525 12   33     66 while (!$_matched && !$commit)
5526             {
5527            
5528 12 50       17 Parse::RecDescent::_trace(q{Trying production: ['!title' /.*/]},
5529             Parse::RecDescent::_tracefirst($_[1]),
5530             q{title},
5531             $tracelevel)
5532             if defined $::RD_TRACE;
5533 12         12 my $thisprod = $thisrule->{"prods"}[0];
5534 12         12 $text = $_[1];
5535 12         8 my $_savetext;
5536 12         13 @item = (q{title});
5537 12         18 %item = (__RULE__ => q{title});
5538 12         9 my $repcount = 0;
5539            
5540            
5541 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!title']},
5542             Parse::RecDescent::_tracefirst($text),
5543             q{title},
5544             $tracelevel)
5545             if defined $::RD_TRACE;
5546 12         10 $lastsep = "";
5547 12         21 $expectation->is(q{})->at($text);
5548            
5549            
5550 12 50 33     94 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!title//)
  12 50       71  
5551             {
5552            
5553 12         20 $expectation->failed();
5554 12 50       32 Parse::RecDescent::_trace(qq{<>},
5555             Parse::RecDescent::_tracefirst($text))
5556             if defined $::RD_TRACE;
5557 12         15 last;
5558             }
5559 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5560             . $& . q{])},
5561             Parse::RecDescent::_tracefirst($text))
5562             if defined $::RD_TRACE;
5563 0         0 push @item, $item{__STRING1__}=$&;
5564            
5565            
5566 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
5567             q{title},
5568             $tracelevel)
5569             if defined $::RD_TRACE;
5570 0         0 $lastsep = "";
5571 0         0 $expectation->is(q{/.*/})->at($text);
5572            
5573            
5574 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
5575             {
5576            
5577 0         0 $expectation->failed();
5578 0 0       0 Parse::RecDescent::_trace(q{<>},
5579             Parse::RecDescent::_tracefirst($text))
5580             if defined $::RD_TRACE;
5581            
5582 0         0 last;
5583             }
5584 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5585             . $& . q{])},
5586             Parse::RecDescent::_tracefirst($text))
5587             if defined $::RD_TRACE;
5588 0         0 push @item, $item{__PATTERN1__}=$&;
5589            
5590            
5591 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5592             Parse::RecDescent::_tracefirst($text),
5593             q{title},
5594             $tracelevel)
5595             if defined $::RD_TRACE;
5596            
5597            
5598 0 0       0 $_tok = ($_noactions) ? 0 : do {
5599 0 0       0 warn "[Text::FormBuilder] Title redefined at input text line $thisline\n" if defined $title;
5600 0         0 $title = $item[2];
5601             };
5602 0 0       0 unless (defined $_tok)
5603             {
5604 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5605             if defined $::RD_TRACE;
5606 0         0 last;
5607             }
5608 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5609             . $_tok . q{])},
5610             Parse::RecDescent::_tracefirst($text))
5611             if defined $::RD_TRACE;
5612 0         0 push @item, $_tok;
5613 0         0 $item{__ACTION1__}=$_tok;
5614            
5615            
5616            
5617 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!title' /.*/]<<},
5618             Parse::RecDescent::_tracefirst($text),
5619             q{title},
5620             $tracelevel)
5621             if defined $::RD_TRACE;
5622 0         0 $_matched = 1;
5623 0         0 last;
5624             }
5625            
5626            
5627 12 50 33     55 unless ( $_matched || defined($return) || defined($score) )
      33        
5628             {
5629            
5630            
5631 12         12 $_[1] = $text; # NOT SURE THIS IS NEEDED
5632 12 50       18 Parse::RecDescent::_trace(q{<>},
5633             Parse::RecDescent::_tracefirst($_[1]),
5634             q{title},
5635             $tracelevel)
5636             if defined $::RD_TRACE;
5637 12         45 return undef;
5638             }
5639 0 0 0     0 if (!defined($return) && defined($score))
5640             {
5641 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5642             q{title},
5643             $tracelevel)
5644             if defined $::RD_TRACE;
5645 0         0 $return = $score_return;
5646             }
5647 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5648 0 0       0 $return = $item[$#item] unless defined $return;
5649 0 0       0 if (defined $::RD_TRACE)
5650             {
5651 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5652             $return . q{])}, "",
5653             q{title},
5654             $tracelevel);
5655 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5656             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5657             Parse::RecDescent::_tracefirst($text),
5658             , q{title},
5659             $tracelevel)
5660             }
5661 0         0 $_[1] = $text;
5662 0         0 return $return;
5663             }
5664            
5665             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5666             sub Parse::RecDescent::Text::FormBuilder::Parser::pattern_def
5667             {
5668 12     12   7 my $thisparser = $_[0];
5669 1     1   4 use vars q{$tracelevel};
  1         2  
  1         351  
5670 12   50     23 local $tracelevel = ($tracelevel||0)+1;
5671 12         9 $ERRORS = 0;
5672 12         14 my $thisrule = $thisparser->{"rules"}{"pattern_def"};
5673            
5674 12 50       18 Parse::RecDescent::_trace(q{Trying rule: [pattern_def]},
5675             Parse::RecDescent::_tracefirst($_[1]),
5676             q{pattern_def},
5677             $tracelevel)
5678             if defined $::RD_TRACE;
5679            
5680            
5681 12         7 my $err_at = @{$thisparser->{errors}};
  12         13  
5682            
5683 12         10 my $score;
5684             my $score_return;
5685 0         0 my $_tok;
5686 12         11 my $return = undef;
5687 12         5 my $_matched=0;
5688 12         10 my $commit=0;
5689 12         11 my @item = ();
5690 12         12 my %item = ();
5691 12   33     27 my $repeating = defined($_[2]) && $_[2];
5692 12   33     25 my $_noactions = defined($_[3]) && $_[3];
5693 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         8  
  12         14  
5694 12 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5695 12         9 my $text;
5696 12         10 my $lastsep="";
5697 12         20 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5698 12         188 $expectation->at($_[1]);
5699            
5700 12         22 my $thisline;
5701 12         30 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5702            
5703            
5704            
5705 12   33     65 while (!$_matched && !$commit)
5706             {
5707            
5708 12 50       19 Parse::RecDescent::_trace(q{Trying production: ['!pattern' var_name pattern]},
5709             Parse::RecDescent::_tracefirst($_[1]),
5710             q{pattern_def},
5711             $tracelevel)
5712             if defined $::RD_TRACE;
5713 12         13 my $thisprod = $thisrule->{"prods"}[0];
5714 12         12 $text = $_[1];
5715 12         8 my $_savetext;
5716 12         14 @item = (q{pattern_def});
5717 12         14 %item = (__RULE__ => q{pattern_def});
5718 12         12 my $repcount = 0;
5719            
5720            
5721 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!pattern']},
5722             Parse::RecDescent::_tracefirst($text),
5723             q{pattern_def},
5724             $tracelevel)
5725             if defined $::RD_TRACE;
5726 12         11 $lastsep = "";
5727 12         16 $expectation->is(q{})->at($text);
5728            
5729            
5730 12 50 33     86 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!pattern//)
  12 50       65  
5731             {
5732            
5733 12         17 $expectation->failed();
5734 12 50       37 Parse::RecDescent::_trace(qq{<>},
5735             Parse::RecDescent::_tracefirst($text))
5736             if defined $::RD_TRACE;
5737 12         13 last;
5738             }
5739 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5740             . $& . q{])},
5741             Parse::RecDescent::_tracefirst($text))
5742             if defined $::RD_TRACE;
5743 0         0 push @item, $item{__STRING1__}=$&;
5744            
5745            
5746 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [var_name]},
5747             Parse::RecDescent::_tracefirst($text),
5748             q{pattern_def},
5749             $tracelevel)
5750             if defined $::RD_TRACE;
5751 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         133  
  0         0  
5752 0         0 $expectation->is(q{var_name})->at($text);
5753 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::var_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5754             {
5755            
5756 0 0       0 Parse::RecDescent::_trace(q{<>},
5757             Parse::RecDescent::_tracefirst($text),
5758             q{pattern_def},
5759             $tracelevel)
5760             if defined $::RD_TRACE;
5761 0         0 $expectation->failed();
5762 0         0 last;
5763             }
5764 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [var_name]<< (return value: [}
5765             . $_tok . q{]},
5766            
5767             Parse::RecDescent::_tracefirst($text),
5768             q{pattern_def},
5769             $tracelevel)
5770             if defined $::RD_TRACE;
5771 0         0 $item{q{var_name}} = $_tok;
5772 0         0 push @item, $_tok;
5773            
5774             }
5775            
5776 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [pattern]},
5777             Parse::RecDescent::_tracefirst($text),
5778             q{pattern_def},
5779             $tracelevel)
5780             if defined $::RD_TRACE;
5781 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         384  
  0         0  
5782 0         0 $expectation->is(q{pattern})->at($text);
5783 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::pattern($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5784             {
5785            
5786 0 0       0 Parse::RecDescent::_trace(q{<>},
5787             Parse::RecDescent::_tracefirst($text),
5788             q{pattern_def},
5789             $tracelevel)
5790             if defined $::RD_TRACE;
5791 0         0 $expectation->failed();
5792 0         0 last;
5793             }
5794 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [pattern]<< (return value: [}
5795             . $_tok . q{]},
5796            
5797             Parse::RecDescent::_tracefirst($text),
5798             q{pattern_def},
5799             $tracelevel)
5800             if defined $::RD_TRACE;
5801 0         0 $item{q{pattern}} = $_tok;
5802 0         0 push @item, $_tok;
5803            
5804             }
5805            
5806 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5807             Parse::RecDescent::_tracefirst($text),
5808             q{pattern_def},
5809             $tracelevel)
5810             if defined $::RD_TRACE;
5811            
5812            
5813 0 0       0 $_tok = ($_noactions) ? 0 : do { $patterns{$item{var_name}} = $item{pattern} };
  0         0  
5814 0 0       0 unless (defined $_tok)
5815             {
5816 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5817             if defined $::RD_TRACE;
5818 0         0 last;
5819             }
5820 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5821             . $_tok . q{])},
5822             Parse::RecDescent::_tracefirst($text))
5823             if defined $::RD_TRACE;
5824 0         0 push @item, $_tok;
5825 0         0 $item{__ACTION1__}=$_tok;
5826            
5827            
5828            
5829 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!pattern' var_name pattern]<<},
5830             Parse::RecDescent::_tracefirst($text),
5831             q{pattern_def},
5832             $tracelevel)
5833             if defined $::RD_TRACE;
5834 0         0 $_matched = 1;
5835 0         0 last;
5836             }
5837            
5838            
5839 12 50 33     57 unless ( $_matched || defined($return) || defined($score) )
      33        
5840             {
5841            
5842            
5843 12         11 $_[1] = $text; # NOT SURE THIS IS NEEDED
5844 12 50       16 Parse::RecDescent::_trace(q{<>},
5845             Parse::RecDescent::_tracefirst($_[1]),
5846             q{pattern_def},
5847             $tracelevel)
5848             if defined $::RD_TRACE;
5849 12         40 return undef;
5850             }
5851 0 0 0     0 if (!defined($return) && defined($score))
5852             {
5853 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5854             q{pattern_def},
5855             $tracelevel)
5856             if defined $::RD_TRACE;
5857 0         0 $return = $score_return;
5858             }
5859 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5860 0 0       0 $return = $item[$#item] unless defined $return;
5861 0 0       0 if (defined $::RD_TRACE)
5862             {
5863 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5864             $return . q{])}, "",
5865             q{pattern_def},
5866             $tracelevel);
5867 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5868             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5869             Parse::RecDescent::_tracefirst($text),
5870             , q{pattern_def},
5871             $tracelevel)
5872             }
5873 0         0 $_[1] = $text;
5874 0         0 return $return;
5875             }
5876            
5877             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5878             sub Parse::RecDescent::Text::FormBuilder::Parser::dynamic_list
5879             {
5880 0     0   0 my $thisparser = $_[0];
5881 1     1   4 use vars q{$tracelevel};
  1         4  
  1         692  
5882 0   0     0 local $tracelevel = ($tracelevel||0)+1;
5883 0         0 $ERRORS = 0;
5884 0         0 my $thisrule = $thisparser->{"rules"}{"dynamic_list"};
5885            
5886 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [dynamic_list]},
5887             Parse::RecDescent::_tracefirst($_[1]),
5888             q{dynamic_list},
5889             $tracelevel)
5890             if defined $::RD_TRACE;
5891            
5892            
5893 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
5894            
5895 0         0 my $score;
5896             my $score_return;
5897 0         0 my $_tok;
5898 0         0 my $return = undef;
5899 0         0 my $_matched=0;
5900 0         0 my $commit=0;
5901 0         0 my @item = ();
5902 0         0 my %item = ();
5903 0   0     0 my $repeating = defined($_[2]) && $_[2];
5904 0   0     0 my $_noactions = defined($_[3]) && $_[3];
5905 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
5906 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5907 0         0 my $text;
5908 0         0 my $lastsep="";
5909 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
5910 0         0 $expectation->at($_[1]);
5911            
5912 0         0 my $thisline;
5913 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5914            
5915            
5916            
5917 0   0     0 while (!$_matched && !$commit)
5918             {
5919 0 0       0 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
5920 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['&' ]},
5921             Parse::RecDescent::_tracefirst($_[1]),
5922             q{dynamic_list},
5923             $tracelevel)
5924             if defined $::RD_TRACE;
5925 0         0 my $thisprod = $thisrule->{"prods"}[0];
5926 0         0 $text = $_[1];
5927 0         0 my $_savetext;
5928 0         0 @item = (q{dynamic_list});
5929 0         0 %item = (__RULE__ => q{dynamic_list});
5930 0         0 my $repcount = 0;
5931            
5932            
5933 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['&']},
5934             Parse::RecDescent::_tracefirst($text),
5935             q{dynamic_list},
5936             $tracelevel)
5937             if defined $::RD_TRACE;
5938 0         0 $lastsep = "";
5939 0         0 $expectation->is(q{})->at($text);
5940            
5941            
5942 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\&//)
  0 0       0  
5943             {
5944            
5945 0         0 $expectation->failed();
5946 0 0       0 Parse::RecDescent::_trace(qq{<>},
5947             Parse::RecDescent::_tracefirst($text))
5948             if defined $::RD_TRACE;
5949 0         0 last;
5950             }
5951 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5952             . $& . q{])},
5953             Parse::RecDescent::_tracefirst($text))
5954             if defined $::RD_TRACE;
5955 0         0 push @item, $item{__STRING1__}=$&;
5956            
5957            
5958            
5959            
5960 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
5961             Parse::RecDescent::_tracefirst($text),
5962             q{dynamic_list},
5963             $tracelevel)
5964             if defined $::RD_TRACE;
5965 0         0 $_tok = do { Text::Balanced::extract_codeblock($text,undef,$skip,'{}');
  0         0  
5966             };
5967 0 0       0 if (defined($_tok))
5968             {
5969 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
5970             . $_tok . q{])},
5971             Parse::RecDescent::_tracefirst($text))
5972             if defined $::RD_TRACE;
5973             }
5974             else
5975             {
5976 0 0       0 Parse::RecDescent::_trace(q{<>},
5977             Parse::RecDescent::_tracefirst($text))
5978             if defined $::RD_TRACE;
5979             }
5980            
5981 0 0       0 last unless defined $_tok;
5982 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
5983            
5984            
5985 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5986             Parse::RecDescent::_tracefirst($text),
5987             q{dynamic_list},
5988             $tracelevel)
5989             if defined $::RD_TRACE;
5990            
5991            
5992 0 0       0 $_tok = ($_noactions) ? 0 : do {
5993 0         0 my @results = (eval $item[2]);
5994 0 0       0 if (ref $results[0] eq 'HASH') {
5995 0         0 @options = @results;
5996             } else {
5997 0         0 @options = map { { $_ => $_ } } @results;
  0         0  
5998             }
5999             };
6000 0 0       0 unless (defined $_tok)
6001             {
6002 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6003             if defined $::RD_TRACE;
6004 0         0 last;
6005             }
6006 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6007             . $_tok . q{])},
6008             Parse::RecDescent::_tracefirst($text))
6009             if defined $::RD_TRACE;
6010 0         0 push @item, $_tok;
6011 0         0 $item{__ACTION1__}=$_tok;
6012            
6013            
6014            
6015 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['&' ]<<},
6016             Parse::RecDescent::_tracefirst($text),
6017             q{dynamic_list},
6018             $tracelevel)
6019             if defined $::RD_TRACE;
6020 0         0 $_matched = 1;
6021 0         0 last;
6022             }
6023            
6024            
6025 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
6026             {
6027            
6028            
6029 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6030 0 0       0 Parse::RecDescent::_trace(q{<>},
6031             Parse::RecDescent::_tracefirst($_[1]),
6032             q{dynamic_list},
6033             $tracelevel)
6034             if defined $::RD_TRACE;
6035 0         0 return undef;
6036             }
6037 0 0 0     0 if (!defined($return) && defined($score))
6038             {
6039 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6040             q{dynamic_list},
6041             $tracelevel)
6042             if defined $::RD_TRACE;
6043 0         0 $return = $score_return;
6044             }
6045 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6046 0 0       0 $return = $item[$#item] unless defined $return;
6047 0 0       0 if (defined $::RD_TRACE)
6048             {
6049 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6050             $return . q{])}, "",
6051             q{dynamic_list},
6052             $tracelevel);
6053 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6054             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6055             Parse::RecDescent::_tracefirst($text),
6056             , q{dynamic_list},
6057             $tracelevel)
6058             }
6059 0         0 $_[1] = $text;
6060 0         0 return $return;
6061             }
6062            
6063             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6064             sub Parse::RecDescent::Text::FormBuilder::Parser::builtin_field
6065             {
6066 0     0   0 my $thisparser = $_[0];
6067 1     1   5 use vars q{$tracelevel};
  1         1  
  1         549  
6068 0   0     0 local $tracelevel = ($tracelevel||0)+1;
6069 0         0 $ERRORS = 0;
6070 0         0 my $thisrule = $thisparser->{"rules"}{"builtin_field"};
6071            
6072 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [builtin_field]},
6073             Parse::RecDescent::_tracefirst($_[1]),
6074             q{builtin_field},
6075             $tracelevel)
6076             if defined $::RD_TRACE;
6077            
6078            
6079 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
6080            
6081 0         0 my $score;
6082             my $score_return;
6083 0         0 my $_tok;
6084 0         0 my $return = undef;
6085 0         0 my $_matched=0;
6086 0         0 my $commit=0;
6087 0         0 my @item = ();
6088 0         0 my %item = ();
6089 0   0     0 my $repeating = defined($_[2]) && $_[2];
6090 0   0     0 my $_noactions = defined($_[3]) && $_[3];
6091 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
6092 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6093 0         0 my $text;
6094 0         0 my $lastsep="";
6095 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6096 0         0 $expectation->at($_[1]);
6097            
6098 0         0 my $thisline;
6099 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6100            
6101            
6102            
6103 0   0     0 while (!$_matched && !$commit)
6104             {
6105            
6106 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/textarea|text|password|file|checkbox|radio|select|hidden|static/]},
6107             Parse::RecDescent::_tracefirst($_[1]),
6108             q{builtin_field},
6109             $tracelevel)
6110             if defined $::RD_TRACE;
6111 0         0 my $thisprod = $thisrule->{"prods"}[0];
6112 0         0 $text = $_[1];
6113 0         0 my $_savetext;
6114 0         0 @item = (q{builtin_field});
6115 0         0 %item = (__RULE__ => q{builtin_field});
6116 0         0 my $repcount = 0;
6117            
6118            
6119 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/textarea|text|password|file|checkbox|radio|select|hidden|static/]}, Parse::RecDescent::_tracefirst($text),
6120             q{builtin_field},
6121             $tracelevel)
6122             if defined $::RD_TRACE;
6123 0         0 $lastsep = "";
6124 0         0 $expectation->is(q{})->at($text);
6125            
6126            
6127 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:textarea|text|password|file|checkbox|radio|select|hidden|static)//)
  0 0       0  
6128             {
6129            
6130 0         0 $expectation->failed();
6131 0 0       0 Parse::RecDescent::_trace(q{<>},
6132             Parse::RecDescent::_tracefirst($text))
6133             if defined $::RD_TRACE;
6134            
6135 0         0 last;
6136             }
6137 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6138             . $& . q{])},
6139             Parse::RecDescent::_tracefirst($text))
6140             if defined $::RD_TRACE;
6141 0         0 push @item, $item{__PATTERN1__}=$&;
6142            
6143            
6144            
6145 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/textarea|text|password|file|checkbox|radio|select|hidden|static/]<<},
6146             Parse::RecDescent::_tracefirst($text),
6147             q{builtin_field},
6148             $tracelevel)
6149             if defined $::RD_TRACE;
6150 0         0 $_matched = 1;
6151 0         0 last;
6152             }
6153            
6154            
6155 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
6156             {
6157            
6158            
6159 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6160 0 0       0 Parse::RecDescent::_trace(q{<>},
6161             Parse::RecDescent::_tracefirst($_[1]),
6162             q{builtin_field},
6163             $tracelevel)
6164             if defined $::RD_TRACE;
6165 0         0 return undef;
6166             }
6167 0 0 0     0 if (!defined($return) && defined($score))
6168             {
6169 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6170             q{builtin_field},
6171             $tracelevel)
6172             if defined $::RD_TRACE;
6173 0         0 $return = $score_return;
6174             }
6175 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6176 0 0       0 $return = $item[$#item] unless defined $return;
6177 0 0       0 if (defined $::RD_TRACE)
6178             {
6179 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6180             $return . q{])}, "",
6181             q{builtin_field},
6182             $tracelevel);
6183 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6184             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6185             Parse::RecDescent::_tracefirst($text),
6186             , q{builtin_field},
6187             $tracelevel)
6188             }
6189 0         0 $_[1] = $text;
6190 0         0 return $return;
6191             }
6192            
6193             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6194             sub Parse::RecDescent::Text::FormBuilder::Parser::options
6195             {
6196 3     3   3 my $thisparser = $_[0];
6197 1     1   4 use vars q{$tracelevel};
  1         1  
  1         394  
6198 3   50     6 local $tracelevel = ($tracelevel||0)+1;
6199 3         4 $ERRORS = 0;
6200 3         4 my $thisrule = $thisparser->{"rules"}{"options"};
6201            
6202 3 50       5 Parse::RecDescent::_trace(q{Trying rule: [options]},
6203             Parse::RecDescent::_tracefirst($_[1]),
6204             q{options},
6205             $tracelevel)
6206             if defined $::RD_TRACE;
6207            
6208            
6209 3         3 my $err_at = @{$thisparser->{errors}};
  3         3  
6210            
6211 3         2 my $score;
6212             my $score_return;
6213 0         0 my $_tok;
6214 3         2 my $return = undef;
6215 3         3 my $_matched=0;
6216 3         2 my $commit=0;
6217 3         4 my @item = ();
6218 3         2 my %item = ();
6219 3   33     7 my $repeating = defined($_[2]) && $_[2];
6220 3   33     6 my $_noactions = defined($_[3]) && $_[3];
6221 3 50       8 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  3         2  
  3         5  
6222 3 50       5 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6223 3         3 my $text;
6224 3         4 my $lastsep="";
6225 3         5 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6226 3         47 $expectation->at($_[1]);
6227            
6228 3         6 my $thisline;
6229 3         6 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6230            
6231            
6232            
6233 3   33     15 while (!$_matched && !$commit)
6234             {
6235            
6236 3 50       6 Parse::RecDescent::_trace(q{Trying production: ['\{' '\}']},
6237             Parse::RecDescent::_tracefirst($_[1]),
6238             q{options},
6239             $tracelevel)
6240             if defined $::RD_TRACE;
6241 3         4 my $thisprod = $thisrule->{"prods"}[0];
6242 3         2 $text = $_[1];
6243 3         3 my $_savetext;
6244 3         4 @item = (q{options});
6245 3         4 %item = (__RULE__ => q{options});
6246 3         4 my $repcount = 0;
6247            
6248            
6249 3 50       4 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
6250             Parse::RecDescent::_tracefirst($text),
6251             q{options},
6252             $tracelevel)
6253             if defined $::RD_TRACE;
6254 3         4 $lastsep = "";
6255 3         4 $expectation->is(q{})->at($text);
6256            
6257            
6258 3 50 33     31 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  3 50       19  
6259             {
6260            
6261 3         5 $expectation->failed();
6262 3 50       8 Parse::RecDescent::_trace(qq{<>},
6263             Parse::RecDescent::_tracefirst($text))
6264             if defined $::RD_TRACE;
6265 3         4 last;
6266             }
6267 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6268             . $& . q{])},
6269             Parse::RecDescent::_tracefirst($text))
6270             if defined $::RD_TRACE;
6271 0         0 push @item, $item{__STRING1__}=$&;
6272            
6273            
6274 0 0       0 Parse::RecDescent::_trace(q{Trying operator: []},
6275             Parse::RecDescent::_tracefirst($text),
6276             q{options},
6277             $tracelevel)
6278             if defined $::RD_TRACE;
6279 0         0 $expectation->is(q{})->at($text);
6280            
6281 0         0 $_tok = undef;
6282 0         0 OPLOOP: while (1)
6283             {
6284 0         0 $repcount = 0;
6285 0         0 my @item;
6286            
6287             # MATCH LEFTARG
6288            
6289 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [option]},
6290             Parse::RecDescent::_tracefirst($text),
6291             q{options},
6292             $tracelevel)
6293             if defined $::RD_TRACE;
6294 1     1   25 if (1) { no strict qw{refs};
  1         1  
  1         259  
  0         0  
6295 0         0 $expectation->is(q{option})->at($text);
6296 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6297             {
6298            
6299 0 0       0 Parse::RecDescent::_trace(q{<>},
6300             Parse::RecDescent::_tracefirst($text),
6301             q{options},
6302             $tracelevel)
6303             if defined $::RD_TRACE;
6304 0         0 $expectation->failed();
6305 0         0 last;
6306             }
6307 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [}
6308             . $_tok . q{]},
6309            
6310             Parse::RecDescent::_tracefirst($text),
6311             q{options},
6312             $tracelevel)
6313             if defined $::RD_TRACE;
6314 0         0 $item{q{option}} = $_tok;
6315 0         0 push @item, $_tok;
6316            
6317             }
6318            
6319            
6320 0         0 $repcount++;
6321            
6322 0         0 my $savetext = $text;
6323 0         0 my $backtrack;
6324            
6325             # MATCH (OP RIGHTARG)(s)
6326 0         0 while ($repcount < 100000000)
6327             {
6328 0         0 $backtrack = 0;
6329            
6330 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/,\\s*/]}, Parse::RecDescent::_tracefirst($text),
6331             q{options},
6332             $tracelevel)
6333             if defined $::RD_TRACE;
6334 0         0 $lastsep = "";
6335 0         0 $expectation->is(q{/,\\s*/})->at($text);
6336            
6337            
6338 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,\s*)//)
  0 0       0  
6339             {
6340            
6341 0         0 $expectation->failed();
6342 0 0       0 Parse::RecDescent::_trace(q{<>},
6343             Parse::RecDescent::_tracefirst($text))
6344             if defined $::RD_TRACE;
6345            
6346 0         0 last;
6347             }
6348 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6349             . $& . q{])},
6350             Parse::RecDescent::_tracefirst($text))
6351             if defined $::RD_TRACE;
6352 0         0 push @item, $item{__PATTERN1__}=$&;
6353            
6354            
6355 0         0 pop @item;
6356 0 0       0 if (defined $1) {push @item, $item{'option(s)'}=$1; $backtrack=1;}
  0         0  
  0         0  
6357            
6358 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [option]},
6359             Parse::RecDescent::_tracefirst($text),
6360             q{options},
6361             $tracelevel)
6362             if defined $::RD_TRACE;
6363 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         528  
  0         0  
6364 0         0 $expectation->is(q{option})->at($text);
6365 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6366             {
6367            
6368 0 0       0 Parse::RecDescent::_trace(q{<>},
6369             Parse::RecDescent::_tracefirst($text),
6370             q{options},
6371             $tracelevel)
6372             if defined $::RD_TRACE;
6373 0         0 $expectation->failed();
6374 0         0 last;
6375             }
6376 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [}
6377             . $_tok . q{]},
6378            
6379             Parse::RecDescent::_tracefirst($text),
6380             q{options},
6381             $tracelevel)
6382             if defined $::RD_TRACE;
6383 0         0 $item{q{option}} = $_tok;
6384 0         0 push @item, $_tok;
6385            
6386             }
6387            
6388 0         0 $savetext = $text;
6389 0         0 $repcount++;
6390             }
6391 0         0 $text = $savetext;
6392 0 0       0 pop @item if $backtrack;
6393            
6394 0 0       0 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
6395 0         0 $_tok = [ @item ];
6396 0         0 last;
6397             }
6398            
6399 0 0       0 unless ($repcount>=1)
6400             {
6401 0 0       0 Parse::RecDescent::_trace(q{<]>>},
6402             Parse::RecDescent::_tracefirst($text),
6403             q{options},
6404             $tracelevel)
6405             if defined $::RD_TRACE;
6406 0         0 $expectation->failed();
6407 0         0 last;
6408             }
6409 0 0       0 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
6410 0 0       0 . qq{@{$_tok||[]}} . q{]},
6411             Parse::RecDescent::_tracefirst($text),
6412             q{options},
6413             $tracelevel)
6414             if defined $::RD_TRACE;
6415            
6416 0   0     0 push @item, $item{'option(s)'}=$_tok||[];
6417            
6418            
6419 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
6420             Parse::RecDescent::_tracefirst($text),
6421             q{options},
6422             $tracelevel)
6423             if defined $::RD_TRACE;
6424 0         0 $lastsep = "";
6425 0         0 $expectation->is(q{'\}'})->at($text);
6426            
6427            
6428 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  0 0       0  
6429             {
6430            
6431 0         0 $expectation->failed();
6432 0 0       0 Parse::RecDescent::_trace(qq{<>},
6433             Parse::RecDescent::_tracefirst($text))
6434             if defined $::RD_TRACE;
6435 0         0 last;
6436             }
6437 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6438             . $& . q{])},
6439             Parse::RecDescent::_tracefirst($text))
6440             if defined $::RD_TRACE;
6441 0         0 push @item, $item{__STRING2__}=$&;
6442            
6443            
6444            
6445 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['\{' '\}']<<},
6446             Parse::RecDescent::_tracefirst($text),
6447             q{options},
6448             $tracelevel)
6449             if defined $::RD_TRACE;
6450 0         0 $_matched = 1;
6451 0         0 last;
6452             }
6453            
6454            
6455 3 50 33     14 unless ( $_matched || defined($return) || defined($score) )
      33        
6456             {
6457            
6458            
6459 3         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
6460 3 50       7 Parse::RecDescent::_trace(q{<>},
6461             Parse::RecDescent::_tracefirst($_[1]),
6462             q{options},
6463             $tracelevel)
6464             if defined $::RD_TRACE;
6465 3         11 return undef;
6466             }
6467 0 0 0     0 if (!defined($return) && defined($score))
6468             {
6469 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6470             q{options},
6471             $tracelevel)
6472             if defined $::RD_TRACE;
6473 0         0 $return = $score_return;
6474             }
6475 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6476 0 0       0 $return = $item[$#item] unless defined $return;
6477 0 0       0 if (defined $::RD_TRACE)
6478             {
6479 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6480             $return . q{])}, "",
6481             q{options},
6482             $tracelevel);
6483 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6484             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6485             Parse::RecDescent::_tracefirst($text),
6486             , q{options},
6487             $tracelevel)
6488             }
6489 0         0 $_[1] = $text;
6490 0         0 return $return;
6491             }
6492            
6493             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6494             sub Parse::RecDescent::Text::FormBuilder::Parser::list_def
6495             {
6496 12     12   9 my $thisparser = $_[0];
6497 1     1   4 use vars q{$tracelevel};
  1         2  
  1         342  
6498 12   50     25 local $tracelevel = ($tracelevel||0)+1;
6499 12         12 $ERRORS = 0;
6500 12         18 my $thisrule = $thisparser->{"rules"}{"list_def"};
6501            
6502 12 50       22 Parse::RecDescent::_trace(q{Trying rule: [list_def]},
6503             Parse::RecDescent::_tracefirst($_[1]),
6504             q{list_def},
6505             $tracelevel)
6506             if defined $::RD_TRACE;
6507            
6508            
6509 12         9 my $err_at = @{$thisparser->{errors}};
  12         12  
6510            
6511 12         13 my $score;
6512             my $score_return;
6513 0         0 my $_tok;
6514 12         9 my $return = undef;
6515 12         9 my $_matched=0;
6516 12         8 my $commit=0;
6517 12         11 my @item = ();
6518 12         12 my %item = ();
6519 12   33     28 my $repeating = defined($_[2]) && $_[2];
6520 12   33     25 my $_noactions = defined($_[3]) && $_[3];
6521 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         11  
  12         15  
6522 12 50       20 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6523 12         8 my $text;
6524 12         16 my $lastsep="";
6525 12         19 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6526 12         203 $expectation->at($_[1]);
6527            
6528 12         22 my $thisline;
6529 12         34 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6530            
6531            
6532            
6533 12   33     69 while (!$_matched && !$commit)
6534             {
6535            
6536 12 50       22 Parse::RecDescent::_trace(q{Trying production: ['!list' var_name static_list, or dynamic_list]},
6537             Parse::RecDescent::_tracefirst($_[1]),
6538             q{list_def},
6539             $tracelevel)
6540             if defined $::RD_TRACE;
6541 12         15 my $thisprod = $thisrule->{"prods"}[0];
6542 12         14 $text = $_[1];
6543 12         12 my $_savetext;
6544 12         14 @item = (q{list_def});
6545 12         17 %item = (__RULE__ => q{list_def});
6546 12         11 my $repcount = 0;
6547            
6548            
6549 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!list']},
6550             Parse::RecDescent::_tracefirst($text),
6551             q{list_def},
6552             $tracelevel)
6553             if defined $::RD_TRACE;
6554 12         12 $lastsep = "";
6555 12         20 $expectation->is(q{})->at($text);
6556            
6557            
6558 12 100 33     111 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!list//)
  12 50       84  
6559             {
6560            
6561 12         27 $expectation->failed();
6562 12 50       35 Parse::RecDescent::_trace(qq{<>},
6563             Parse::RecDescent::_tracefirst($text))
6564             if defined $::RD_TRACE;
6565 12         20 last;
6566             }
6567 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6568             . $& . q{])},
6569             Parse::RecDescent::_tracefirst($text))
6570             if defined $::RD_TRACE;
6571 0         0 push @item, $item{__STRING1__}=$&;
6572            
6573            
6574 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [var_name]},
6575             Parse::RecDescent::_tracefirst($text),
6576             q{list_def},
6577             $tracelevel)
6578             if defined $::RD_TRACE;
6579 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         134  
  0         0  
6580 0         0 $expectation->is(q{var_name})->at($text);
6581 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::var_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6582             {
6583            
6584 0 0       0 Parse::RecDescent::_trace(q{<>},
6585             Parse::RecDescent::_tracefirst($text),
6586             q{list_def},
6587             $tracelevel)
6588             if defined $::RD_TRACE;
6589 0         0 $expectation->failed();
6590 0         0 last;
6591             }
6592 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [var_name]<< (return value: [}
6593             . $_tok . q{]},
6594            
6595             Parse::RecDescent::_tracefirst($text),
6596             q{list_def},
6597             $tracelevel)
6598             if defined $::RD_TRACE;
6599 0         0 $item{q{var_name}} = $_tok;
6600 0         0 push @item, $_tok;
6601            
6602             }
6603            
6604 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_list_def]},
6605             Parse::RecDescent::_tracefirst($text),
6606             q{list_def},
6607             $tracelevel)
6608             if defined $::RD_TRACE;
6609 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         392  
  0         0  
6610 0         0 $expectation->is(q{static_list, or dynamic_list})->at($text);
6611 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_list_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6612             {
6613            
6614 0 0       0 Parse::RecDescent::_trace(q{<>},
6615             Parse::RecDescent::_tracefirst($text),
6616             q{list_def},
6617             $tracelevel)
6618             if defined $::RD_TRACE;
6619 0         0 $expectation->failed();
6620 0         0 last;
6621             }
6622 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_list_def]<< (return value: [}
6623             . $_tok . q{]},
6624            
6625             Parse::RecDescent::_tracefirst($text),
6626             q{list_def},
6627             $tracelevel)
6628             if defined $::RD_TRACE;
6629 0         0 $item{q{_alternation_1_of_production_1_of_rule_list_def}} = $_tok;
6630 0         0 push @item, $_tok;
6631            
6632             }
6633            
6634 0 0       0 Parse::RecDescent::_trace(q{Trying action},
6635             Parse::RecDescent::_tracefirst($text),
6636             q{list_def},
6637             $tracelevel)
6638             if defined $::RD_TRACE;
6639            
6640            
6641 0 0       0 $_tok = ($_noactions) ? 0 : do { $lists{$item{var_name}} = [ @options ]; @options = () };
  0         0  
  0         0  
6642 0 0       0 unless (defined $_tok)
6643             {
6644 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6645             if defined $::RD_TRACE;
6646 0         0 last;
6647             }
6648 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6649             . $_tok . q{])},
6650             Parse::RecDescent::_tracefirst($text))
6651             if defined $::RD_TRACE;
6652 0         0 push @item, $_tok;
6653 0         0 $item{__ACTION1__}=$_tok;
6654            
6655            
6656            
6657 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!list' var_name static_list, or dynamic_list]<<},
6658             Parse::RecDescent::_tracefirst($text),
6659             q{list_def},
6660             $tracelevel)
6661             if defined $::RD_TRACE;
6662 0         0 $_matched = 1;
6663 0         0 last;
6664             }
6665            
6666            
6667 12 50 33     65 unless ( $_matched || defined($return) || defined($score) )
      33        
6668             {
6669            
6670            
6671 12         12 $_[1] = $text; # NOT SURE THIS IS NEEDED
6672 12 50       23 Parse::RecDescent::_trace(q{<>},
6673             Parse::RecDescent::_tracefirst($_[1]),
6674             q{list_def},
6675             $tracelevel)
6676             if defined $::RD_TRACE;
6677 12         63 return undef;
6678             }
6679 0 0 0     0 if (!defined($return) && defined($score))
6680             {
6681 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6682             q{list_def},
6683             $tracelevel)
6684             if defined $::RD_TRACE;
6685 0         0 $return = $score_return;
6686             }
6687 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6688 0 0       0 $return = $item[$#item] unless defined $return;
6689 0 0       0 if (defined $::RD_TRACE)
6690             {
6691 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6692             $return . q{])}, "",
6693             q{list_def},
6694             $tracelevel);
6695 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6696             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6697             Parse::RecDescent::_tracefirst($text),
6698             , q{list_def},
6699             $tracelevel)
6700             }
6701 0         0 $_[1] = $text;
6702 0         0 return $return;
6703             }
6704            
6705             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6706             sub Parse::RecDescent::Text::FormBuilder::Parser::description_def
6707             {
6708 12     12   15 my $thisparser = $_[0];
6709 1     1   3 use vars q{$tracelevel};
  1         1  
  1         369  
6710 12   50     27 local $tracelevel = ($tracelevel||0)+1;
6711 12         11 $ERRORS = 0;
6712 12         15 my $thisrule = $thisparser->{"rules"}{"description_def"};
6713            
6714 12 50       19 Parse::RecDescent::_trace(q{Trying rule: [description_def]},
6715             Parse::RecDescent::_tracefirst($_[1]),
6716             q{description_def},
6717             $tracelevel)
6718             if defined $::RD_TRACE;
6719            
6720            
6721 12         9 my $err_at = @{$thisparser->{errors}};
  12         14  
6722            
6723 12         11 my $score;
6724             my $score_return;
6725 0         0 my $_tok;
6726 12         10 my $return = undef;
6727 12         8 my $_matched=0;
6728 12         11 my $commit=0;
6729 12         13 my @item = ();
6730 12         12 my %item = ();
6731 12   33     26 my $repeating = defined($_[2]) && $_[2];
6732 12   33     26 my $_noactions = defined($_[3]) && $_[3];
6733 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         7  
  12         16  
6734 12 50       21 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6735 12         12 my $text;
6736 12         10 my $lastsep="";
6737 12         27 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6738 12         201 $expectation->at($_[1]);
6739            
6740 12         27 my $thisline;
6741 12         39 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6742            
6743            
6744            
6745 12   33     73 while (!$_matched && !$commit)
6746             {
6747            
6748 12 50       18 Parse::RecDescent::_trace(q{Trying production: ['!description' block]},
6749             Parse::RecDescent::_tracefirst($_[1]),
6750             q{description_def},
6751             $tracelevel)
6752             if defined $::RD_TRACE;
6753 12         11 my $thisprod = $thisrule->{"prods"}[0];
6754 12         10 $text = $_[1];
6755 12         11 my $_savetext;
6756 12         16 @item = (q{description_def});
6757 12         16 %item = (__RULE__ => q{description_def});
6758 12         10 my $repcount = 0;
6759            
6760            
6761 12 50       16 Parse::RecDescent::_trace(q{Trying terminal: ['!description']},
6762             Parse::RecDescent::_tracefirst($text),
6763             q{description_def},
6764             $tracelevel)
6765             if defined $::RD_TRACE;
6766 12         10 $lastsep = "";
6767 12         19 $expectation->is(q{})->at($text);
6768            
6769            
6770 12 100 33     87 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!description//)
  12 50       75  
6771             {
6772            
6773 12         19 $expectation->failed();
6774 12 50       39 Parse::RecDescent::_trace(qq{<>},
6775             Parse::RecDescent::_tracefirst($text))
6776             if defined $::RD_TRACE;
6777 12         15 last;
6778             }
6779 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6780             . $& . q{])},
6781             Parse::RecDescent::_tracefirst($text))
6782             if defined $::RD_TRACE;
6783 0         0 push @item, $item{__STRING1__}=$&;
6784            
6785            
6786 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [block]},
6787             Parse::RecDescent::_tracefirst($text),
6788             q{description_def},
6789             $tracelevel)
6790             if defined $::RD_TRACE;
6791 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         409  
  0         0  
6792 0         0 $expectation->is(q{block})->at($text);
6793 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::block($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6794             {
6795            
6796 0 0       0 Parse::RecDescent::_trace(q{<>},
6797             Parse::RecDescent::_tracefirst($text),
6798             q{description_def},
6799             $tracelevel)
6800             if defined $::RD_TRACE;
6801 0         0 $expectation->failed();
6802 0         0 last;
6803             }
6804 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [block]<< (return value: [}
6805             . $_tok . q{]},
6806            
6807             Parse::RecDescent::_tracefirst($text),
6808             q{description_def},
6809             $tracelevel)
6810             if defined $::RD_TRACE;
6811 0         0 $item{q{block}} = $_tok;
6812 0         0 push @item, $_tok;
6813            
6814             }
6815            
6816 0 0       0 Parse::RecDescent::_trace(q{Trying action},
6817             Parse::RecDescent::_tracefirst($text),
6818             q{description_def},
6819             $tracelevel)
6820             if defined $::RD_TRACE;
6821            
6822            
6823 0 0       0 $_tok = ($_noactions) ? 0 : do { warn "[Text::FormBuilder] Description redefined at input text line $thisline\n" if defined $description;
  0 0       0  
6824            
6825 0         0 $description = $item[2];
6826 0         0 $description =~ s/^{\s*|\s*}$//g;
6827             };
6828 0 0       0 unless (defined $_tok)
6829             {
6830 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6831             if defined $::RD_TRACE;
6832 0         0 last;
6833             }
6834 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6835             . $_tok . q{])},
6836             Parse::RecDescent::_tracefirst($text))
6837             if defined $::RD_TRACE;
6838 0         0 push @item, $_tok;
6839 0         0 $item{__ACTION1__}=$_tok;
6840            
6841            
6842            
6843 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!description' block]<<},
6844             Parse::RecDescent::_tracefirst($text),
6845             q{description_def},
6846             $tracelevel)
6847             if defined $::RD_TRACE;
6848 0         0 $_matched = 1;
6849 0         0 last;
6850             }
6851            
6852            
6853 12 50 33     59 unless ( $_matched || defined($return) || defined($score) )
      33        
6854             {
6855            
6856            
6857 12         9 $_[1] = $text; # NOT SURE THIS IS NEEDED
6858 12 50       20 Parse::RecDescent::_trace(q{<>},
6859             Parse::RecDescent::_tracefirst($_[1]),
6860             q{description_def},
6861             $tracelevel)
6862             if defined $::RD_TRACE;
6863 12         44 return undef;
6864             }
6865 0 0 0     0 if (!defined($return) && defined($score))
6866             {
6867 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6868             q{description_def},
6869             $tracelevel)
6870             if defined $::RD_TRACE;
6871 0         0 $return = $score_return;
6872             }
6873 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6874 0 0       0 $return = $item[$#item] unless defined $return;
6875 0 0       0 if (defined $::RD_TRACE)
6876             {
6877 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6878             $return . q{])}, "",
6879             q{description_def},
6880             $tracelevel);
6881 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6882             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6883             Parse::RecDescent::_tracefirst($text),
6884             , q{description_def},
6885             $tracelevel)
6886             }
6887 0         0 $_[1] = $text;
6888 0         0 return $return;
6889             }
6890            
6891             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6892             sub Parse::RecDescent::Text::FormBuilder::Parser::field_line
6893             {
6894 0     0   0 my $thisparser = $_[0];
6895 1     1   4 use vars q{$tracelevel};
  1         1  
  1         304  
6896 0   0     0 local $tracelevel = ($tracelevel||0)+1;
6897 0         0 $ERRORS = 0;
6898 0         0 my $thisrule = $thisparser->{"rules"}{"field_line"};
6899            
6900 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [field_line]},
6901             Parse::RecDescent::_tracefirst($_[1]),
6902             q{field_line},
6903             $tracelevel)
6904             if defined $::RD_TRACE;
6905            
6906            
6907 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
6908            
6909 0         0 my $score;
6910             my $score_return;
6911 0         0 my $_tok;
6912 0         0 my $return = undef;
6913 0         0 my $_matched=0;
6914 0         0 my $commit=0;
6915 0         0 my @item = ();
6916 0         0 my %item = ();
6917 0   0     0 my $repeating = defined($_[2]) && $_[2];
6918 0   0     0 my $_noactions = defined($_[3]) && $_[3];
6919 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
6920 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6921 0         0 my $text;
6922 0         0 my $lastsep="";
6923 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
6924 0         0 $expectation->at($_[1]);
6925            
6926 0         0 my $thisline;
6927 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6928            
6929            
6930            
6931 0   0     0 while (!$_matched && !$commit)
6932             {
6933 0 0       0 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
6934 0 0       0 Parse::RecDescent::_trace(q{Trying production: [ field, or comment, or blank '\\n']},
6935             Parse::RecDescent::_tracefirst($_[1]),
6936             q{field_line},
6937             $tracelevel)
6938             if defined $::RD_TRACE;
6939 0         0 my $thisprod = $thisrule->{"prods"}[0];
6940 0         0 $text = $_[1];
6941 0         0 my $_savetext;
6942 0         0 @item = (q{field_line});
6943 0         0 %item = (__RULE__ => q{field_line});
6944 0         0 my $repcount = 0;
6945            
6946            
6947            
6948            
6949 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
6950             Parse::RecDescent::_tracefirst($text),
6951             q{field_line},
6952             $tracelevel)
6953             if defined $::RD_TRACE;
6954 0         0 $_tok = do { my $oldskip = $skip; $skip='[ \t]*'; $oldskip };
  0         0  
  0         0  
  0         0  
6955 0 0       0 if (defined($_tok))
6956             {
6957 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
6958             . $_tok . q{])},
6959             Parse::RecDescent::_tracefirst($text))
6960             if defined $::RD_TRACE;
6961             }
6962             else
6963             {
6964 0 0       0 Parse::RecDescent::_trace(q{<>},
6965             Parse::RecDescent::_tracefirst($text))
6966             if defined $::RD_TRACE;
6967             }
6968            
6969 0 0       0 last unless defined $_tok;
6970 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
6971            
6972            
6973 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_field_line]},
6974             Parse::RecDescent::_tracefirst($text),
6975             q{field_line},
6976             $tracelevel)
6977             if defined $::RD_TRACE;
6978 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         438  
  0         0  
6979 0         0 $expectation->is(q{field, or comment, or blank})->at($text);
6980 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_field_line($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6981             {
6982            
6983 0 0       0 Parse::RecDescent::_trace(q{<>},
6984             Parse::RecDescent::_tracefirst($text),
6985             q{field_line},
6986             $tracelevel)
6987             if defined $::RD_TRACE;
6988 0         0 $expectation->failed();
6989 0         0 last;
6990             }
6991 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_field_line]<< (return value: [}
6992             . $_tok . q{]},
6993            
6994             Parse::RecDescent::_tracefirst($text),
6995             q{field_line},
6996             $tracelevel)
6997             if defined $::RD_TRACE;
6998 0         0 $item{q{_alternation_1_of_production_1_of_rule_field_line}} = $_tok;
6999 0         0 push @item, $_tok;
7000            
7001             }
7002            
7003 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\\n']},
7004             Parse::RecDescent::_tracefirst($text),
7005             q{field_line},
7006             $tracelevel)
7007             if defined $::RD_TRACE;
7008 0         0 $lastsep = "";
7009 0         0 $expectation->is(q{'\\n'})->at($text);
7010            
7011            
7012 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "\n"; 1 } and
  0 0 0     0  
  0   0     0  
  0         0  
7013             substr($text,0,length($_tok)) eq $_tok and
7014 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
7015             )
7016             {
7017            
7018 0         0 $expectation->failed();
7019 0 0       0 Parse::RecDescent::_trace(q{<>},
7020             Parse::RecDescent::_tracefirst($text))
7021             if defined $::RD_TRACE;
7022 0         0 last;
7023             }
7024 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7025             . $_tok . q{])},
7026             Parse::RecDescent::_tracefirst($text))
7027             if defined $::RD_TRACE;
7028 0         0 push @item, $item{__STRING1__}=$_tok;
7029            
7030            
7031            
7032 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [ field, or comment, or blank '\\n']<<},
7033             Parse::RecDescent::_tracefirst($text),
7034             q{field_line},
7035             $tracelevel)
7036             if defined $::RD_TRACE;
7037 0         0 $_matched = 1;
7038 0         0 last;
7039             }
7040            
7041            
7042 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
7043             {
7044            
7045            
7046 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7047 0 0       0 Parse::RecDescent::_trace(q{<>},
7048             Parse::RecDescent::_tracefirst($_[1]),
7049             q{field_line},
7050             $tracelevel)
7051             if defined $::RD_TRACE;
7052 0         0 return undef;
7053             }
7054 0 0 0     0 if (!defined($return) && defined($score))
7055             {
7056 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7057             q{field_line},
7058             $tracelevel)
7059             if defined $::RD_TRACE;
7060 0         0 $return = $score_return;
7061             }
7062 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7063 0 0       0 $return = $item[$#item] unless defined $return;
7064 0 0       0 if (defined $::RD_TRACE)
7065             {
7066 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7067             $return . q{])}, "",
7068             q{field_line},
7069             $tracelevel);
7070 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7071             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7072             Parse::RecDescent::_tracefirst($text),
7073             , q{field_line},
7074             $tracelevel)
7075             }
7076 0         0 $_[1] = $text;
7077 0         0 return $return;
7078             }
7079            
7080             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7081             sub Parse::RecDescent::Text::FormBuilder::Parser::author
7082             {
7083 12     12   11 my $thisparser = $_[0];
7084 1     1   4 use vars q{$tracelevel};
  1         1  
  1         694  
7085 12   50     24 local $tracelevel = ($tracelevel||0)+1;
7086 12         8 $ERRORS = 0;
7087 12         14 my $thisrule = $thisparser->{"rules"}{"author"};
7088            
7089 12 50       20 Parse::RecDescent::_trace(q{Trying rule: [author]},
7090             Parse::RecDescent::_tracefirst($_[1]),
7091             q{author},
7092             $tracelevel)
7093             if defined $::RD_TRACE;
7094            
7095            
7096 12         8 my $err_at = @{$thisparser->{errors}};
  12         14  
7097            
7098 12         12 my $score;
7099             my $score_return;
7100 0         0 my $_tok;
7101 12         10 my $return = undef;
7102 12         6 my $_matched=0;
7103 12         11 my $commit=0;
7104 12         32 my @item = ();
7105 12         14 my %item = ();
7106 12   33     21 my $repeating = defined($_[2]) && $_[2];
7107 12   33     28 my $_noactions = defined($_[3]) && $_[3];
7108 12 50       13 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         11  
  12         16  
7109 12 50       19 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7110 12         11 my $text;
7111 12         10 my $lastsep="";
7112 12         24 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7113 12         233 $expectation->at($_[1]);
7114            
7115 12         41 my $thisline;
7116 12         31 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7117            
7118            
7119            
7120 12   33     72 while (!$_matched && !$commit)
7121             {
7122            
7123 12 50       17 Parse::RecDescent::_trace(q{Trying production: ['!author' /.*/]},
7124             Parse::RecDescent::_tracefirst($_[1]),
7125             q{author},
7126             $tracelevel)
7127             if defined $::RD_TRACE;
7128 12         15 my $thisprod = $thisrule->{"prods"}[0];
7129 12         11 $text = $_[1];
7130 12         9 my $_savetext;
7131 12         14 @item = (q{author});
7132 12         14 %item = (__RULE__ => q{author});
7133 12         8 my $repcount = 0;
7134            
7135            
7136 12 50       18 Parse::RecDescent::_trace(q{Trying terminal: ['!author']},
7137             Parse::RecDescent::_tracefirst($text),
7138             q{author},
7139             $tracelevel)
7140             if defined $::RD_TRACE;
7141 12         12 $lastsep = "";
7142 12         20 $expectation->is(q{})->at($text);
7143            
7144            
7145 12 50 33     103 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!author//)
  12 50       77  
7146             {
7147            
7148 12         18 $expectation->failed();
7149 12 50       41 Parse::RecDescent::_trace(qq{<>},
7150             Parse::RecDescent::_tracefirst($text))
7151             if defined $::RD_TRACE;
7152 12         14 last;
7153             }
7154 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7155             . $& . q{])},
7156             Parse::RecDescent::_tracefirst($text))
7157             if defined $::RD_TRACE;
7158 0         0 push @item, $item{__STRING1__}=$&;
7159            
7160            
7161 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
7162             q{author},
7163             $tracelevel)
7164             if defined $::RD_TRACE;
7165 0         0 $lastsep = "";
7166 0         0 $expectation->is(q{/.*/})->at($text);
7167            
7168            
7169 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
7170             {
7171            
7172 0         0 $expectation->failed();
7173 0 0       0 Parse::RecDescent::_trace(q{<>},
7174             Parse::RecDescent::_tracefirst($text))
7175             if defined $::RD_TRACE;
7176            
7177 0         0 last;
7178             }
7179 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7180             . $& . q{])},
7181             Parse::RecDescent::_tracefirst($text))
7182             if defined $::RD_TRACE;
7183 0         0 push @item, $item{__PATTERN1__}=$&;
7184            
7185            
7186 0 0       0 Parse::RecDescent::_trace(q{Trying action},
7187             Parse::RecDescent::_tracefirst($text),
7188             q{author},
7189             $tracelevel)
7190             if defined $::RD_TRACE;
7191            
7192            
7193 0 0       0 $_tok = ($_noactions) ? 0 : do {
7194 0 0       0 warn "[Text::FormBuilder] Author redefined at input text line $thisline\n" if defined $author;
7195 0         0 $author = $item[2];
7196             };
7197 0 0       0 unless (defined $_tok)
7198             {
7199 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7200             if defined $::RD_TRACE;
7201 0         0 last;
7202             }
7203 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7204             . $_tok . q{])},
7205             Parse::RecDescent::_tracefirst($text))
7206             if defined $::RD_TRACE;
7207 0         0 push @item, $_tok;
7208 0         0 $item{__ACTION1__}=$_tok;
7209            
7210            
7211            
7212 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!author' /.*/]<<},
7213             Parse::RecDescent::_tracefirst($text),
7214             q{author},
7215             $tracelevel)
7216             if defined $::RD_TRACE;
7217 0         0 $_matched = 1;
7218 0         0 last;
7219             }
7220            
7221            
7222 12 50 33     58 unless ( $_matched || defined($return) || defined($score) )
      33        
7223             {
7224            
7225            
7226 12         12 $_[1] = $text; # NOT SURE THIS IS NEEDED
7227 12 50       18 Parse::RecDescent::_trace(q{<>},
7228             Parse::RecDescent::_tracefirst($_[1]),
7229             q{author},
7230             $tracelevel)
7231             if defined $::RD_TRACE;
7232 12         47 return undef;
7233             }
7234 0 0 0     0 if (!defined($return) && defined($score))
7235             {
7236 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7237             q{author},
7238             $tracelevel)
7239             if defined $::RD_TRACE;
7240 0         0 $return = $score_return;
7241             }
7242 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7243 0 0       0 $return = $item[$#item] unless defined $return;
7244 0 0       0 if (defined $::RD_TRACE)
7245             {
7246 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7247             $return . q{])}, "",
7248             q{author},
7249             $tracelevel);
7250 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7251             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7252             Parse::RecDescent::_tracefirst($text),
7253             , q{author},
7254             $tracelevel)
7255             }
7256 0         0 $_[1] = $text;
7257 0         0 return $return;
7258             }
7259            
7260             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7261             sub Parse::RecDescent::Text::FormBuilder::Parser::size
7262             {
7263 0     0   0 my $thisparser = $_[0];
7264 1     1   4 use vars q{$tracelevel};
  1         0  
  1         679  
7265 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7266 0         0 $ERRORS = 0;
7267 0         0 my $thisrule = $thisparser->{"rules"}{"size"};
7268            
7269 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [size]},
7270             Parse::RecDescent::_tracefirst($_[1]),
7271             q{size},
7272             $tracelevel)
7273             if defined $::RD_TRACE;
7274            
7275            
7276 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7277            
7278 0         0 my $score;
7279             my $score_return;
7280 0         0 my $_tok;
7281 0         0 my $return = undef;
7282 0         0 my $_matched=0;
7283 0         0 my $commit=0;
7284 0         0 my @item = ();
7285 0         0 my %item = ();
7286 0   0     0 my $repeating = defined($_[2]) && $_[2];
7287 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7288 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7289 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7290 0         0 my $text;
7291 0         0 my $lastsep="";
7292 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7293 0         0 $expectation->at($_[1]);
7294            
7295 0         0 my $thisline;
7296 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7297            
7298            
7299            
7300 0   0     0 while (!$_matched && !$commit)
7301             {
7302            
7303 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/\\d+/ bang]},
7304             Parse::RecDescent::_tracefirst($_[1]),
7305             q{size},
7306             $tracelevel)
7307             if defined $::RD_TRACE;
7308 0         0 my $thisprod = $thisrule->{"prods"}[0];
7309 0         0 $text = $_[1];
7310 0         0 my $_savetext;
7311 0         0 @item = (q{size});
7312 0         0 %item = (__RULE__ => q{size});
7313 0         0 my $repcount = 0;
7314            
7315            
7316 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
7317             q{size},
7318             $tracelevel)
7319             if defined $::RD_TRACE;
7320 0         0 $lastsep = "";
7321 0         0 $expectation->is(q{})->at($text);
7322            
7323            
7324 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//)
  0 0       0  
7325             {
7326            
7327 0         0 $expectation->failed();
7328 0 0       0 Parse::RecDescent::_trace(q{<>},
7329             Parse::RecDescent::_tracefirst($text))
7330             if defined $::RD_TRACE;
7331            
7332 0         0 last;
7333             }
7334 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7335             . $& . q{])},
7336             Parse::RecDescent::_tracefirst($text))
7337             if defined $::RD_TRACE;
7338 0         0 push @item, $item{__PATTERN1__}=$&;
7339            
7340            
7341 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [bang]},
7342             Parse::RecDescent::_tracefirst($text),
7343             q{size},
7344             $tracelevel)
7345             if defined $::RD_TRACE;
7346 0         0 $expectation->is(q{bang})->at($text);
7347            
7348 0 0       0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::bang, 0, 1, $_noactions,$expectation,undef)))
7349             {
7350 0 0       0 Parse::RecDescent::_trace(q{<>},
7351             Parse::RecDescent::_tracefirst($text),
7352             q{size},
7353             $tracelevel)
7354             if defined $::RD_TRACE;
7355 0         0 last;
7356             }
7357 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bang]<< (}
7358             . @$_tok . q{ times)},
7359            
7360             Parse::RecDescent::_tracefirst($text),
7361             q{size},
7362             $tracelevel)
7363             if defined $::RD_TRACE;
7364 0         0 $item{q{bang(?)}} = $_tok;
7365 0         0 push @item, $_tok;
7366            
7367            
7368            
7369 0 0       0 Parse::RecDescent::_trace(q{Trying action},
7370             Parse::RecDescent::_tracefirst($text),
7371             q{size},
7372             $tracelevel)
7373             if defined $::RD_TRACE;
7374            
7375            
7376 0 0       0 $_tok = ($_noactions) ? 0 : do { $maxlength = $item[1] if $item[2][0]; $size = $item[1] };
  0 0       0  
  0         0  
7377 0 0       0 unless (defined $_tok)
7378             {
7379 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7380             if defined $::RD_TRACE;
7381 0         0 last;
7382             }
7383 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7384             . $_tok . q{])},
7385             Parse::RecDescent::_tracefirst($text))
7386             if defined $::RD_TRACE;
7387 0         0 push @item, $_tok;
7388 0         0 $item{__ACTION1__}=$_tok;
7389            
7390            
7391            
7392 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ bang]<<},
7393             Parse::RecDescent::_tracefirst($text),
7394             q{size},
7395             $tracelevel)
7396             if defined $::RD_TRACE;
7397 0         0 $_matched = 1;
7398 0         0 last;
7399             }
7400            
7401            
7402 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
7403             {
7404            
7405            
7406 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7407 0 0       0 Parse::RecDescent::_trace(q{<>},
7408             Parse::RecDescent::_tracefirst($_[1]),
7409             q{size},
7410             $tracelevel)
7411             if defined $::RD_TRACE;
7412 0         0 return undef;
7413             }
7414 0 0 0     0 if (!defined($return) && defined($score))
7415             {
7416 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7417             q{size},
7418             $tracelevel)
7419             if defined $::RD_TRACE;
7420 0         0 $return = $score_return;
7421             }
7422 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7423 0 0       0 $return = $item[$#item] unless defined $return;
7424 0 0       0 if (defined $::RD_TRACE)
7425             {
7426 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7427             $return . q{])}, "",
7428             q{size},
7429             $tracelevel);
7430 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7431             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7432             Parse::RecDescent::_tracefirst($text),
7433             , q{size},
7434             $tracelevel)
7435             }
7436 0         0 $_[1] = $text;
7437 0         0 return $return;
7438             }
7439            
7440             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7441             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_label
7442             {
7443 0     0   0 my $thisparser = $_[0];
7444 1     1   5 use vars q{$tracelevel};
  1         1  
  1         233  
7445 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7446 0         0 $ERRORS = 0;
7447 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_label"};
7448            
7449 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_label]},
7450             Parse::RecDescent::_tracefirst($_[1]),
7451             q{_alternation_1_of_production_1_of_rule_label},
7452             $tracelevel)
7453             if defined $::RD_TRACE;
7454            
7455            
7456 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7457            
7458 0         0 my $score;
7459             my $score_return;
7460 0         0 my $_tok;
7461 0         0 my $return = undef;
7462 0         0 my $_matched=0;
7463 0         0 my $commit=0;
7464 0         0 my @item = ();
7465 0         0 my %item = ();
7466 0   0     0 my $repeating = defined($_[2]) && $_[2];
7467 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7468 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7469 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7470 0         0 my $text;
7471 0         0 my $lastsep="";
7472 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7473 0         0 $expectation->at($_[1]);
7474            
7475 0         0 my $thisline;
7476 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7477            
7478            
7479            
7480 0   0     0 while (!$_matched && !$commit)
7481             {
7482            
7483 0 0       0 Parse::RecDescent::_trace(q{Trying production: [simple_multiword]},
7484             Parse::RecDescent::_tracefirst($_[1]),
7485             q{_alternation_1_of_production_1_of_rule_label},
7486             $tracelevel)
7487             if defined $::RD_TRACE;
7488 0         0 my $thisprod = $thisrule->{"prods"}[0];
7489 0         0 $text = $_[1];
7490 0         0 my $_savetext;
7491 0         0 @item = (q{_alternation_1_of_production_1_of_rule_label});
7492 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_label});
7493 0         0 my $repcount = 0;
7494            
7495            
7496 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [simple_multiword]},
7497             Parse::RecDescent::_tracefirst($text),
7498             q{_alternation_1_of_production_1_of_rule_label},
7499             $tracelevel)
7500             if defined $::RD_TRACE;
7501 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         190  
  0         0  
7502 0         0 $expectation->is(q{})->at($text);
7503 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::simple_multiword($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7504             {
7505            
7506 0 0       0 Parse::RecDescent::_trace(q{<>},
7507             Parse::RecDescent::_tracefirst($text),
7508             q{_alternation_1_of_production_1_of_rule_label},
7509             $tracelevel)
7510             if defined $::RD_TRACE;
7511 0         0 $expectation->failed();
7512 0         0 last;
7513             }
7514 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [simple_multiword]<< (return value: [}
7515             . $_tok . q{]},
7516            
7517             Parse::RecDescent::_tracefirst($text),
7518             q{_alternation_1_of_production_1_of_rule_label},
7519             $tracelevel)
7520             if defined $::RD_TRACE;
7521 0         0 $item{q{simple_multiword}} = $_tok;
7522 0         0 push @item, $_tok;
7523            
7524             }
7525            
7526            
7527 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [simple_multiword]<<},
7528             Parse::RecDescent::_tracefirst($text),
7529             q{_alternation_1_of_production_1_of_rule_label},
7530             $tracelevel)
7531             if defined $::RD_TRACE;
7532 0         0 $_matched = 1;
7533 0         0 last;
7534             }
7535            
7536            
7537 0   0     0 while (!$_matched && !$commit)
7538             {
7539            
7540 0 0       0 Parse::RecDescent::_trace(q{Trying production: [quoted_string]},
7541             Parse::RecDescent::_tracefirst($_[1]),
7542             q{_alternation_1_of_production_1_of_rule_label},
7543             $tracelevel)
7544             if defined $::RD_TRACE;
7545 0         0 my $thisprod = $thisrule->{"prods"}[1];
7546 0         0 $text = $_[1];
7547 0         0 my $_savetext;
7548 0         0 @item = (q{_alternation_1_of_production_1_of_rule_label});
7549 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_label});
7550 0         0 my $repcount = 0;
7551            
7552            
7553 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [quoted_string]},
7554             Parse::RecDescent::_tracefirst($text),
7555             q{_alternation_1_of_production_1_of_rule_label},
7556             $tracelevel)
7557             if defined $::RD_TRACE;
7558 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         321  
  0         0  
7559 0         0 $expectation->is(q{})->at($text);
7560 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::quoted_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7561             {
7562            
7563 0 0       0 Parse::RecDescent::_trace(q{<>},
7564             Parse::RecDescent::_tracefirst($text),
7565             q{_alternation_1_of_production_1_of_rule_label},
7566             $tracelevel)
7567             if defined $::RD_TRACE;
7568 0         0 $expectation->failed();
7569 0         0 last;
7570             }
7571 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [quoted_string]<< (return value: [}
7572             . $_tok . q{]},
7573            
7574             Parse::RecDescent::_tracefirst($text),
7575             q{_alternation_1_of_production_1_of_rule_label},
7576             $tracelevel)
7577             if defined $::RD_TRACE;
7578 0         0 $item{q{quoted_string}} = $_tok;
7579 0         0 push @item, $_tok;
7580            
7581             }
7582            
7583            
7584 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [quoted_string]<<},
7585             Parse::RecDescent::_tracefirst($text),
7586             q{_alternation_1_of_production_1_of_rule_label},
7587             $tracelevel)
7588             if defined $::RD_TRACE;
7589 0         0 $_matched = 1;
7590 0         0 last;
7591             }
7592            
7593            
7594 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
7595             {
7596            
7597            
7598 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7599 0 0       0 Parse::RecDescent::_trace(q{<>},
7600             Parse::RecDescent::_tracefirst($_[1]),
7601             q{_alternation_1_of_production_1_of_rule_label},
7602             $tracelevel)
7603             if defined $::RD_TRACE;
7604 0         0 return undef;
7605             }
7606 0 0 0     0 if (!defined($return) && defined($score))
7607             {
7608 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7609             q{_alternation_1_of_production_1_of_rule_label},
7610             $tracelevel)
7611             if defined $::RD_TRACE;
7612 0         0 $return = $score_return;
7613             }
7614 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7615 0 0       0 $return = $item[$#item] unless defined $return;
7616 0 0       0 if (defined $::RD_TRACE)
7617             {
7618 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7619             $return . q{])}, "",
7620             q{_alternation_1_of_production_1_of_rule_label},
7621             $tracelevel);
7622 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7623             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7624             Parse::RecDescent::_tracefirst($text),
7625             , q{_alternation_1_of_production_1_of_rule_label},
7626             $tracelevel)
7627             }
7628 0         0 $_[1] = $text;
7629 0         0 return $return;
7630             }
7631            
7632             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7633             sub Parse::RecDescent::Text::FormBuilder::Parser::var_name
7634             {
7635 0     0   0 my $thisparser = $_[0];
7636 1     1   4 use vars q{$tracelevel};
  1         1  
  1         530  
7637 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7638 0         0 $ERRORS = 0;
7639 0         0 my $thisrule = $thisparser->{"rules"}{"var_name"};
7640            
7641 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [var_name]},
7642             Parse::RecDescent::_tracefirst($_[1]),
7643             q{var_name},
7644             $tracelevel)
7645             if defined $::RD_TRACE;
7646            
7647            
7648 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7649            
7650 0         0 my $score;
7651             my $score_return;
7652 0         0 my $_tok;
7653 0         0 my $return = undef;
7654 0         0 my $_matched=0;
7655 0         0 my $commit=0;
7656 0         0 my @item = ();
7657 0         0 my %item = ();
7658 0   0     0 my $repeating = defined($_[2]) && $_[2];
7659 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7660 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7661 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7662 0         0 my $text;
7663 0         0 my $lastsep="";
7664 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7665 0         0 $expectation->at($_[1]);
7666            
7667 0         0 my $thisline;
7668 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7669            
7670            
7671            
7672 0   0     0 while (!$_matched && !$commit)
7673             {
7674            
7675 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/[A-Z_]+/]},
7676             Parse::RecDescent::_tracefirst($_[1]),
7677             q{var_name},
7678             $tracelevel)
7679             if defined $::RD_TRACE;
7680 0         0 my $thisprod = $thisrule->{"prods"}[0];
7681 0         0 $text = $_[1];
7682 0         0 my $_savetext;
7683 0         0 @item = (q{var_name});
7684 0         0 %item = (__RULE__ => q{var_name});
7685 0         0 my $repcount = 0;
7686            
7687            
7688 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[A-Z_]+/]}, Parse::RecDescent::_tracefirst($text),
7689             q{var_name},
7690             $tracelevel)
7691             if defined $::RD_TRACE;
7692 0         0 $lastsep = "";
7693 0         0 $expectation->is(q{})->at($text);
7694            
7695            
7696 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[A-Z_]+)//)
  0 0       0  
7697             {
7698            
7699 0         0 $expectation->failed();
7700 0 0       0 Parse::RecDescent::_trace(q{<>},
7701             Parse::RecDescent::_tracefirst($text))
7702             if defined $::RD_TRACE;
7703            
7704 0         0 last;
7705             }
7706 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7707             . $& . q{])},
7708             Parse::RecDescent::_tracefirst($text))
7709             if defined $::RD_TRACE;
7710 0         0 push @item, $item{__PATTERN1__}=$&;
7711            
7712            
7713            
7714 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/[A-Z_]+/]<<},
7715             Parse::RecDescent::_tracefirst($text),
7716             q{var_name},
7717             $tracelevel)
7718             if defined $::RD_TRACE;
7719 0         0 $_matched = 1;
7720 0         0 last;
7721             }
7722            
7723            
7724 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
7725             {
7726            
7727            
7728 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7729 0 0       0 Parse::RecDescent::_trace(q{<>},
7730             Parse::RecDescent::_tracefirst($_[1]),
7731             q{var_name},
7732             $tracelevel)
7733             if defined $::RD_TRACE;
7734 0         0 return undef;
7735             }
7736 0 0 0     0 if (!defined($return) && defined($score))
7737             {
7738 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7739             q{var_name},
7740             $tracelevel)
7741             if defined $::RD_TRACE;
7742 0         0 $return = $score_return;
7743             }
7744 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7745 0 0       0 $return = $item[$#item] unless defined $return;
7746 0 0       0 if (defined $::RD_TRACE)
7747             {
7748 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7749             $return . q{])}, "",
7750             q{var_name},
7751             $tracelevel);
7752 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7753             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7754             Parse::RecDescent::_tracefirst($text),
7755             , q{var_name},
7756             $tracelevel)
7757             }
7758 0         0 $_[1] = $text;
7759 0         0 return $return;
7760             }
7761            
7762             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7763             sub Parse::RecDescent::Text::FormBuilder::Parser::option
7764             {
7765 0     0   0 my $thisparser = $_[0];
7766 1     1   4 use vars q{$tracelevel};
  1         1  
  1         226  
7767 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7768 0         0 $ERRORS = 0;
7769 0         0 my $thisrule = $thisparser->{"rules"}{"option"};
7770            
7771 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [option]},
7772             Parse::RecDescent::_tracefirst($_[1]),
7773             q{option},
7774             $tracelevel)
7775             if defined $::RD_TRACE;
7776            
7777            
7778 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7779            
7780 0         0 my $score;
7781             my $score_return;
7782 0         0 my $_tok;
7783 0         0 my $return = undef;
7784 0         0 my $_matched=0;
7785 0         0 my $commit=0;
7786 0         0 my @item = ();
7787 0         0 my %item = ();
7788 0   0     0 my $repeating = defined($_[2]) && $_[2];
7789 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7790 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7791 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7792 0         0 my $text;
7793 0         0 my $lastsep="";
7794 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7795 0         0 $expectation->at($_[1]);
7796            
7797 0         0 my $thisline;
7798 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7799            
7800            
7801            
7802 0   0     0 while (!$_matched && !$commit)
7803             {
7804            
7805 0 0       0 Parse::RecDescent::_trace(q{Trying production: [simple_multiword, or value, or quoted_string display_text]},
7806             Parse::RecDescent::_tracefirst($_[1]),
7807             q{option},
7808             $tracelevel)
7809             if defined $::RD_TRACE;
7810 0         0 my $thisprod = $thisrule->{"prods"}[0];
7811 0         0 $text = $_[1];
7812 0         0 my $_savetext;
7813 0         0 @item = (q{option});
7814 0         0 %item = (__RULE__ => q{option});
7815 0         0 my $repcount = 0;
7816            
7817            
7818 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_option]},
7819             Parse::RecDescent::_tracefirst($text),
7820             q{option},
7821             $tracelevel)
7822             if defined $::RD_TRACE;
7823 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         470  
  0         0  
7824 0         0 $expectation->is(q{})->at($text);
7825 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7826             {
7827            
7828 0 0       0 Parse::RecDescent::_trace(q{<>},
7829             Parse::RecDescent::_tracefirst($text),
7830             q{option},
7831             $tracelevel)
7832             if defined $::RD_TRACE;
7833 0         0 $expectation->failed();
7834 0         0 last;
7835             }
7836 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_option]<< (return value: [}
7837             . $_tok . q{]},
7838            
7839             Parse::RecDescent::_tracefirst($text),
7840             q{option},
7841             $tracelevel)
7842             if defined $::RD_TRACE;
7843 0         0 $item{q{_alternation_1_of_production_1_of_rule_option}} = $_tok;
7844 0         0 push @item, $_tok;
7845            
7846             }
7847            
7848 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [display_text]},
7849             Parse::RecDescent::_tracefirst($text),
7850             q{option},
7851             $tracelevel)
7852             if defined $::RD_TRACE;
7853 0         0 $expectation->is(q{display_text})->at($text);
7854            
7855 0 0       0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::display_text, 0, 1, $_noactions,$expectation,undef)))
7856             {
7857 0 0       0 Parse::RecDescent::_trace(q{<>},
7858             Parse::RecDescent::_tracefirst($text),
7859             q{option},
7860             $tracelevel)
7861             if defined $::RD_TRACE;
7862 0         0 last;
7863             }
7864 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [display_text]<< (}
7865             . @$_tok . q{ times)},
7866            
7867             Parse::RecDescent::_tracefirst($text),
7868             q{option},
7869             $tracelevel)
7870             if defined $::RD_TRACE;
7871 0         0 $item{q{display_text(?)}} = $_tok;
7872 0         0 push @item, $_tok;
7873            
7874            
7875            
7876 0 0       0 Parse::RecDescent::_trace(q{Trying action},
7877             Parse::RecDescent::_tracefirst($text),
7878             q{option},
7879             $tracelevel)
7880             if defined $::RD_TRACE;
7881            
7882            
7883 0 0       0 $_tok = ($_noactions) ? 0 : do { push @options, { $item[1] => $item{'display_text(?)'}[0] } };
  0         0  
7884 0 0       0 unless (defined $_tok)
7885             {
7886 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7887             if defined $::RD_TRACE;
7888 0         0 last;
7889             }
7890 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7891             . $_tok . q{])},
7892             Parse::RecDescent::_tracefirst($text))
7893             if defined $::RD_TRACE;
7894 0         0 push @item, $_tok;
7895 0         0 $item{__ACTION1__}=$_tok;
7896            
7897            
7898            
7899 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [simple_multiword, or value, or quoted_string display_text]<<},
7900             Parse::RecDescent::_tracefirst($text),
7901             q{option},
7902             $tracelevel)
7903             if defined $::RD_TRACE;
7904 0         0 $_matched = 1;
7905 0         0 last;
7906             }
7907            
7908            
7909 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
7910             {
7911            
7912            
7913 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7914 0 0       0 Parse::RecDescent::_trace(q{<>},
7915             Parse::RecDescent::_tracefirst($_[1]),
7916             q{option},
7917             $tracelevel)
7918             if defined $::RD_TRACE;
7919 0         0 return undef;
7920             }
7921 0 0 0     0 if (!defined($return) && defined($score))
7922             {
7923 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7924             q{option},
7925             $tracelevel)
7926             if defined $::RD_TRACE;
7927 0         0 $return = $score_return;
7928             }
7929 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7930 0 0       0 $return = $item[$#item] unless defined $return;
7931 0 0       0 if (defined $::RD_TRACE)
7932             {
7933 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7934             $return . q{])}, "",
7935             q{option},
7936             $tracelevel);
7937 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7938             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7939             Parse::RecDescent::_tracefirst($text),
7940             , q{option},
7941             $tracelevel)
7942             }
7943 0         0 $_[1] = $text;
7944 0         0 return $return;
7945             }
7946            
7947             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7948             sub Parse::RecDescent::Text::FormBuilder::Parser::group_field
7949             {
7950 12     12   6 my $thisparser = $_[0];
7951 1     1   4 use vars q{$tracelevel};
  1         1  
  1         327  
7952 12   50     24 local $tracelevel = ($tracelevel||0)+1;
7953 12         10 $ERRORS = 0;
7954 12         19 my $thisrule = $thisparser->{"rules"}{"group_field"};
7955            
7956 12 50       16 Parse::RecDescent::_trace(q{Trying rule: [group_field]},
7957             Parse::RecDescent::_tracefirst($_[1]),
7958             q{group_field},
7959             $tracelevel)
7960             if defined $::RD_TRACE;
7961            
7962            
7963 12         8 my $err_at = @{$thisparser->{errors}};
  12         14  
7964            
7965 12         12 my $score;
7966             my $score_return;
7967 0         0 my $_tok;
7968 12         10 my $return = undef;
7969 12         6 my $_matched=0;
7970 12         9 my $commit=0;
7971 12         11 my @item = ();
7972 12         12 my %item = ();
7973 12   33     23 my $repeating = defined($_[2]) && $_[2];
7974 12   33     22 my $_noactions = defined($_[3]) && $_[3];
7975 12 50       17 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         7  
  12         13  
7976 12 50       19 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7977 12         9 my $text;
7978 12         10 my $lastsep="";
7979 12         23 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
7980 12         190 $expectation->at($_[1]);
7981            
7982 12         23 my $thisline;
7983 12         28 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7984            
7985            
7986            
7987 12   33     64 while (!$_matched && !$commit)
7988             {
7989            
7990 12 50       17 Parse::RecDescent::_trace(q{Trying production: ['!field' group_name name label]},
7991             Parse::RecDescent::_tracefirst($_[1]),
7992             q{group_field},
7993             $tracelevel)
7994             if defined $::RD_TRACE;
7995 12         12 my $thisprod = $thisrule->{"prods"}[0];
7996 12         12 $text = $_[1];
7997 12         7 my $_savetext;
7998 12         15 @item = (q{group_field});
7999 12         15 %item = (__RULE__ => q{group_field});
8000 12         11 my $repcount = 0;
8001            
8002            
8003 12 50       14 Parse::RecDescent::_trace(q{Trying terminal: ['!field']},
8004             Parse::RecDescent::_tracefirst($text),
8005             q{group_field},
8006             $tracelevel)
8007             if defined $::RD_TRACE;
8008 12         11 $lastsep = "";
8009 12         19 $expectation->is(q{})->at($text);
8010            
8011            
8012 12 50 33     89 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!field//)
  12 50       77  
8013             {
8014            
8015 12         18 $expectation->failed();
8016 12 50       34 Parse::RecDescent::_trace(qq{<>},
8017             Parse::RecDescent::_tracefirst($text))
8018             if defined $::RD_TRACE;
8019 12         14 last;
8020             }
8021 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8022             . $& . q{])},
8023             Parse::RecDescent::_tracefirst($text))
8024             if defined $::RD_TRACE;
8025 0         0 push @item, $item{__STRING1__}=$&;
8026            
8027            
8028 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [group_name]},
8029             Parse::RecDescent::_tracefirst($text),
8030             q{group_field},
8031             $tracelevel)
8032             if defined $::RD_TRACE;
8033 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         130  
  0         0  
8034 0         0 $expectation->is(q{group_name})->at($text);
8035 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::group_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
8036             {
8037            
8038 0 0       0 Parse::RecDescent::_trace(q{<>},
8039             Parse::RecDescent::_tracefirst($text),
8040             q{group_field},
8041             $tracelevel)
8042             if defined $::RD_TRACE;
8043 0         0 $expectation->failed();
8044 0         0 last;
8045             }
8046 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [group_name]<< (return value: [}
8047             . $_tok . q{]},
8048            
8049             Parse::RecDescent::_tracefirst($text),
8050             q{group_field},
8051             $tracelevel)
8052             if defined $::RD_TRACE;
8053 0         0 $item{q{group_name}} = $_tok;
8054 0         0 push @item, $_tok;
8055            
8056             }
8057            
8058 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
8059             Parse::RecDescent::_tracefirst($text),
8060             q{group_field},
8061             $tracelevel)
8062             if defined $::RD_TRACE;
8063 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         729  
  0         0  
8064 0         0 $expectation->is(q{name})->at($text);
8065 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
8066             {
8067            
8068 0 0       0 Parse::RecDescent::_trace(q{<>},
8069             Parse::RecDescent::_tracefirst($text),
8070             q{group_field},
8071             $tracelevel)
8072             if defined $::RD_TRACE;
8073 0         0 $expectation->failed();
8074 0         0 last;
8075             }
8076 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
8077             . $_tok . q{]},
8078            
8079             Parse::RecDescent::_tracefirst($text),
8080             q{group_field},
8081             $tracelevel)
8082             if defined $::RD_TRACE;
8083 0         0 $item{q{name}} = $_tok;
8084 0         0 push @item, $_tok;
8085            
8086             }
8087            
8088 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [label]},
8089             Parse::RecDescent::_tracefirst($text),
8090             q{group_field},
8091             $tracelevel)
8092             if defined $::RD_TRACE;
8093 0         0 $expectation->is(q{label})->at($text);
8094            
8095 0 0       0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::label, 0, 1, $_noactions,$expectation,undef)))
8096             {
8097 0 0       0 Parse::RecDescent::_trace(q{<>},
8098             Parse::RecDescent::_tracefirst($text),
8099             q{group_field},
8100             $tracelevel)
8101             if defined $::RD_TRACE;
8102 0         0 last;
8103             }
8104 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [label]<< (}
8105             . @$_tok . q{ times)},
8106            
8107             Parse::RecDescent::_tracefirst($text),
8108             q{group_field},
8109             $tracelevel)
8110             if defined $::RD_TRACE;
8111 0         0 $item{q{label(?)}} = $_tok;
8112 0         0 push @item, $_tok;
8113            
8114            
8115            
8116 0 0       0 Parse::RecDescent::_trace(q{Trying action},
8117             Parse::RecDescent::_tracefirst($text),
8118             q{group_field},
8119             $tracelevel)
8120             if defined $::RD_TRACE;
8121            
8122            
8123 0 0       0 $_tok = ($_noactions) ? 0 : do {
8124 0         0 push @lines, [ 'group', { name => $item{name}, label => $item{'label(?)'}[0], group => $item{group_name} } ];
8125             };
8126 0 0       0 unless (defined $_tok)
8127             {
8128 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8129             if defined $::RD_TRACE;
8130 0         0 last;
8131             }
8132 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8133             . $_tok . q{])},
8134             Parse::RecDescent::_tracefirst($text))
8135             if defined $::RD_TRACE;
8136 0         0 push @item, $_tok;
8137 0         0 $item{__ACTION1__}=$_tok;
8138            
8139            
8140            
8141 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!field' group_name name label]<<},
8142             Parse::RecDescent::_tracefirst($text),
8143             q{group_field},
8144             $tracelevel)
8145             if defined $::RD_TRACE;
8146 0         0 $_matched = 1;
8147 0         0 last;
8148             }
8149            
8150            
8151 12 50 33     51 unless ( $_matched || defined($return) || defined($score) )
      33        
8152             {
8153            
8154            
8155 12         11 $_[1] = $text; # NOT SURE THIS IS NEEDED
8156 12 50       16 Parse::RecDescent::_trace(q{<>},
8157             Parse::RecDescent::_tracefirst($_[1]),
8158             q{group_field},
8159             $tracelevel)
8160             if defined $::RD_TRACE;
8161 12         42 return undef;
8162             }
8163 0 0 0     0 if (!defined($return) && defined($score))
8164             {
8165 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8166             q{group_field},
8167             $tracelevel)
8168             if defined $::RD_TRACE;
8169 0         0 $return = $score_return;
8170             }
8171 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
8172 0 0       0 $return = $item[$#item] unless defined $return;
8173 0 0       0 if (defined $::RD_TRACE)
8174             {
8175 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8176             $return . q{])}, "",
8177             q{group_field},
8178             $tracelevel);
8179 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8180             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8181             Parse::RecDescent::_tracefirst($text),
8182             , q{group_field},
8183             $tracelevel)
8184             }
8185 0         0 $_[1] = $text;
8186 0         0 return $return;
8187             }
8188            
8189             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8190             sub Parse::RecDescent::Text::FormBuilder::Parser::validate
8191             {
8192 3     3   23 my $thisparser = $_[0];
8193 1     1   8 use vars q{$tracelevel};
  1         1  
  1         328  
8194 3   50     5 local $tracelevel = ($tracelevel||0)+1;
8195 3         3 $ERRORS = 0;
8196 3         4 my $thisrule = $thisparser->{"rules"}{"validate"};
8197            
8198 3 50       6 Parse::RecDescent::_trace(q{Trying rule: [validate]},
8199             Parse::RecDescent::_tracefirst($_[1]),
8200             q{validate},
8201             $tracelevel)
8202             if defined $::RD_TRACE;
8203            
8204            
8205 3         2 my $err_at = @{$thisparser->{errors}};
  3         5  
8206            
8207 3         5 my $score;
8208             my $score_return;
8209 0         0 my $_tok;
8210 3         3 my $return = undef;
8211 3         3 my $_matched=0;
8212 3         3 my $commit=0;
8213 3         2 my @item = ();
8214 3         3 my %item = ();
8215 3   33     6 my $repeating = defined($_[2]) && $_[2];
8216 3   33     7 my $_noactions = defined($_[3]) && $_[3];
8217 3 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
8218 3 50       6 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8219 3         3 my $text;
8220 3         2 my $lastsep="";
8221 3         6 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
8222 3         48 $expectation->at($_[1]);
8223            
8224 3         6 my $thisline;
8225 3         7 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8226            
8227            
8228            
8229 3   33     17 while (!$_matched && !$commit)
8230             {
8231            
8232 3 50       6 Parse::RecDescent::_trace(q{Trying production: ['//' optional_pattern, or required_pattern]},
8233             Parse::RecDescent::_tracefirst($_[1]),
8234             q{validate},
8235             $tracelevel)
8236             if defined $::RD_TRACE;
8237 3         4 my $thisprod = $thisrule->{"prods"}[0];
8238 3         3 $text = $_[1];
8239 3         2 my $_savetext;
8240 3         5 @item = (q{validate});
8241 3         5 %item = (__RULE__ => q{validate});
8242 3         1 my $repcount = 0;
8243            
8244            
8245 3 50       6 Parse::RecDescent::_trace(q{Trying terminal: ['//']},
8246             Parse::RecDescent::_tracefirst($text),
8247             q{validate},
8248             $tracelevel)
8249             if defined $::RD_TRACE;
8250 3         2 $lastsep = "";
8251 3         14 $expectation->is(q{})->at($text);
8252            
8253            
8254 3 50 33     29 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/\///)
  3 50       19  
8255             {
8256            
8257 3         6 $expectation->failed();
8258 3 50       8 Parse::RecDescent::_trace(qq{<>},
8259             Parse::RecDescent::_tracefirst($text))
8260             if defined $::RD_TRACE;
8261 3         4 last;
8262             }
8263 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8264             . $& . q{])},
8265             Parse::RecDescent::_tracefirst($text))
8266             if defined $::RD_TRACE;
8267 0         0 push @item, $item{__STRING1__}=$&;
8268            
8269            
8270 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_validate]},
8271             Parse::RecDescent::_tracefirst($text),
8272             q{validate},
8273             $tracelevel)
8274             if defined $::RD_TRACE;
8275 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         372  
  0         0  
8276 0         0 $expectation->is(q{optional_pattern, or required_pattern})->at($text);
8277 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_validate($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
8278             {
8279            
8280 0 0       0 Parse::RecDescent::_trace(q{<>},
8281             Parse::RecDescent::_tracefirst($text),
8282             q{validate},
8283             $tracelevel)
8284             if defined $::RD_TRACE;
8285 0         0 $expectation->failed();
8286 0         0 last;
8287             }
8288 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_validate]<< (return value: [}
8289             . $_tok . q{]},
8290            
8291             Parse::RecDescent::_tracefirst($text),
8292             q{validate},
8293             $tracelevel)
8294             if defined $::RD_TRACE;
8295 0         0 $item{q{_alternation_1_of_production_1_of_rule_validate}} = $_tok;
8296 0         0 push @item, $_tok;
8297            
8298             }
8299            
8300 0 0       0 Parse::RecDescent::_trace(q{Trying action},
8301             Parse::RecDescent::_tracefirst($text),
8302             q{validate},
8303             $tracelevel)
8304             if defined $::RD_TRACE;
8305            
8306            
8307 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
8308 0 0       0 unless (defined $_tok)
8309             {
8310 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8311             if defined $::RD_TRACE;
8312 0         0 last;
8313             }
8314 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8315             . $_tok . q{])},
8316             Parse::RecDescent::_tracefirst($text))
8317             if defined $::RD_TRACE;
8318 0         0 push @item, $_tok;
8319 0         0 $item{__ACTION1__}=$_tok;
8320            
8321            
8322            
8323 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['//' optional_pattern, or required_pattern]<<},
8324             Parse::RecDescent::_tracefirst($text),
8325             q{validate},
8326             $tracelevel)
8327             if defined $::RD_TRACE;
8328 0         0 $_matched = 1;
8329 0         0 last;
8330             }
8331            
8332            
8333 3 50 33     15 unless ( $_matched || defined($return) || defined($score) )
      33        
8334             {
8335            
8336            
8337 3         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
8338 3 50       6 Parse::RecDescent::_trace(q{<>},
8339             Parse::RecDescent::_tracefirst($_[1]),
8340             q{validate},
8341             $tracelevel)
8342             if defined $::RD_TRACE;
8343 3         8 return undef;
8344             }
8345 0 0 0     0 if (!defined($return) && defined($score))
8346             {
8347 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8348             q{validate},
8349             $tracelevel)
8350             if defined $::RD_TRACE;
8351 0         0 $return = $score_return;
8352             }
8353 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
8354 0 0       0 $return = $item[$#item] unless defined $return;
8355 0 0       0 if (defined $::RD_TRACE)
8356             {
8357 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8358             $return . q{])}, "",
8359             q{validate},
8360             $tracelevel);
8361 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8362             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8363             Parse::RecDescent::_tracefirst($text),
8364             , q{validate},
8365             $tracelevel)
8366             }
8367 0         0 $_[1] = $text;
8368 0         0 return $return;
8369             }
8370            
8371             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8372             sub Parse::RecDescent::Text::FormBuilder::Parser::list_var
8373             {
8374 3     3   2 my $thisparser = $_[0];
8375 1     1   4 use vars q{$tracelevel};
  1         1  
  1         591  
8376 3   50     7 local $tracelevel = ($tracelevel||0)+1;
8377 3         2 $ERRORS = 0;
8378 3         5 my $thisrule = $thisparser->{"rules"}{"list_var"};
8379            
8380 3 50       4 Parse::RecDescent::_trace(q{Trying rule: [list_var]},
8381             Parse::RecDescent::_tracefirst($_[1]),
8382             q{list_var},
8383             $tracelevel)
8384             if defined $::RD_TRACE;
8385            
8386            
8387 3         3 my $err_at = @{$thisparser->{errors}};
  3         3  
8388            
8389 3         2 my $score;
8390             my $score_return;
8391 0         0 my $_tok;
8392 3         3 my $return = undef;
8393 3         1 my $_matched=0;
8394 3         4 my $commit=0;
8395 3         3 my @item = ();
8396 3         3 my %item = ();
8397 3   33     6 my $repeating = defined($_[2]) && $_[2];
8398 3   33     7 my $_noactions = defined($_[3]) && $_[3];
8399 3 50       5 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  3         2  
  3         4  
8400 3 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8401 3         2 my $text;
8402 3         2 my $lastsep="";
8403 3         7 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
8404 3         49 $expectation->at($_[1]);
8405            
8406 3         6 my $thisline;
8407 3         8 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8408            
8409            
8410            
8411 3   33     17 while (!$_matched && !$commit)
8412             {
8413            
8414 3 50       5 Parse::RecDescent::_trace(q{Trying production: [/@[A-Z_]+/]},
8415             Parse::RecDescent::_tracefirst($_[1]),
8416             q{list_var},
8417             $tracelevel)
8418             if defined $::RD_TRACE;
8419 3         4 my $thisprod = $thisrule->{"prods"}[0];
8420 3         2 $text = $_[1];
8421 3         2 my $_savetext;
8422 3         4 @item = (q{list_var});
8423 3         3 %item = (__RULE__ => q{list_var});
8424 3         4 my $repcount = 0;
8425            
8426            
8427 3 50       5 Parse::RecDescent::_trace(q{Trying terminal: [/@[A-Z_]+/]}, Parse::RecDescent::_tracefirst($text),
8428             q{list_var},
8429             $tracelevel)
8430             if defined $::RD_TRACE;
8431 3         3 $lastsep = "";
8432 3         5 $expectation->is(q{})->at($text);
8433            
8434            
8435 3 50 33     29 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:@[A-Z_]+)//)
  3 50       19  
8436             {
8437            
8438 3         4 $expectation->failed();
8439 3 50       10 Parse::RecDescent::_trace(q{<>},
8440             Parse::RecDescent::_tracefirst($text))
8441             if defined $::RD_TRACE;
8442            
8443 3         4 last;
8444             }
8445 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8446             . $& . q{])},
8447             Parse::RecDescent::_tracefirst($text))
8448             if defined $::RD_TRACE;
8449 0         0 push @item, $item{__PATTERN1__}=$&;
8450            
8451            
8452 0 0       0 Parse::RecDescent::_trace(q{Trying action},
8453             Parse::RecDescent::_tracefirst($text),
8454             q{list_var},
8455             $tracelevel)
8456             if defined $::RD_TRACE;
8457            
8458            
8459 0 0       0 $_tok = ($_noactions) ? 0 : do { $list_var = $item[1] };
  0         0  
8460 0 0       0 unless (defined $_tok)
8461             {
8462 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8463             if defined $::RD_TRACE;
8464 0         0 last;
8465             }
8466 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8467             . $_tok . q{])},
8468             Parse::RecDescent::_tracefirst($text))
8469             if defined $::RD_TRACE;
8470 0         0 push @item, $_tok;
8471 0         0 $item{__ACTION1__}=$_tok;
8472            
8473            
8474            
8475 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/@[A-Z_]+/]<<},
8476             Parse::RecDescent::_tracefirst($text),
8477             q{list_var},
8478             $tracelevel)
8479             if defined $::RD_TRACE;
8480 0         0 $_matched = 1;
8481 0         0 last;
8482             }
8483            
8484            
8485 3 50 33     20 unless ( $_matched || defined($return) || defined($score) )
      33        
8486             {
8487            
8488            
8489 3         4 $_[1] = $text; # NOT SURE THIS IS NEEDED
8490 3 50       4 Parse::RecDescent::_trace(q{<>},
8491             Parse::RecDescent::_tracefirst($_[1]),
8492             q{list_var},
8493             $tracelevel)
8494             if defined $::RD_TRACE;
8495 3         11 return undef;
8496             }
8497 0 0 0     0 if (!defined($return) && defined($score))
8498             {
8499 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8500             q{list_var},
8501             $tracelevel)
8502             if defined $::RD_TRACE;
8503 0         0 $return = $score_return;
8504             }
8505 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
8506 0 0       0 $return = $item[$#item] unless defined $return;
8507 0 0       0 if (defined $::RD_TRACE)
8508             {
8509 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8510             $return . q{])}, "",
8511             q{list_var},
8512             $tracelevel);
8513 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8514             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8515             Parse::RecDescent::_tracefirst($text),
8516             , q{list_var},
8517             $tracelevel)
8518             }
8519 0         0 $_[1] = $text;
8520 0         0 return $return;
8521             }
8522            
8523             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8524             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_line
8525             {
8526 12     12   13 my $thisparser = $_[0];
8527 1     1   4 use vars q{$tracelevel};
  1         2  
  1         228  
8528 12   50     20 local $tracelevel = ($tracelevel||0)+1;
8529 12         11 $ERRORS = 0;
8530 12         15 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_line"};
8531            
8532 12 50       16 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_line]},
8533             Parse::RecDescent::_tracefirst($_[1]),
8534             q{_alternation_1_of_production_1_of_rule_line},
8535             $tracelevel)
8536             if defined $::RD_TRACE;
8537            
8538            
8539 12         11 my $err_at = @{$thisparser->{errors}};
  12         9  
8540            
8541 12         10 my $score;
8542             my $score_return;
8543 0         0 my $_tok;
8544 12         28 my $return = undef;
8545 12         11 my $_matched=0;
8546 12         6 my $commit=0;
8547 12         13 my @item = ();
8548 12         11 my %item = ();
8549 12   33     22 my $repeating = defined($_[2]) && $_[2];
8550 12   33     23 my $_noactions = defined($_[3]) && $_[3];
8551 12 50       14 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         11  
  12         13  
8552 12 50       18 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8553 12         12 my $text;
8554 12         12 my $lastsep="";
8555 12         18 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
8556 12         1309 $expectation->at($_[1]);
8557            
8558 12         25 my $thisline;
8559 12         26 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8560            
8561            
8562            
8563 12   33     62 while (!$_matched && !$commit)
8564             {
8565            
8566 12 50       19 Parse::RecDescent::_trace(q{Trying production: [title]},
8567             Parse::RecDescent::_tracefirst($_[1]),
8568             q{_alternation_1_of_production_1_of_rule_line},
8569             $tracelevel)
8570             if defined $::RD_TRACE;
8571 12         11 my $thisprod = $thisrule->{"prods"}[0];
8572 12         13 $text = $_[1];
8573 12         8 my $_savetext;
8574 12         14 @item = (q{_alternation_1_of_production_1_of_rule_line});
8575 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8576 12         9 my $repcount = 0;
8577            
8578            
8579 12 50       18 Parse::RecDescent::_trace(q{Trying subrule: [title]},
8580             Parse::RecDescent::_tracefirst($text),
8581             q{_alternation_1_of_production_1_of_rule_line},
8582             $tracelevel)
8583             if defined $::RD_TRACE;
8584 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         199  
  12         8  
8585 12         19 $expectation->is(q{})->at($text);
8586 12 50   12   67 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::title($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         15  
8587             {
8588            
8589 12 50       15 Parse::RecDescent::_trace(q{<>},
8590             Parse::RecDescent::_tracefirst($text),
8591             q{_alternation_1_of_production_1_of_rule_line},
8592             $tracelevel)
8593             if defined $::RD_TRACE;
8594 12         23 $expectation->failed();
8595 12         25 last;
8596             }
8597 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [title]<< (return value: [}
8598             . $_tok . q{]},
8599            
8600             Parse::RecDescent::_tracefirst($text),
8601             q{_alternation_1_of_production_1_of_rule_line},
8602             $tracelevel)
8603             if defined $::RD_TRACE;
8604 0         0 $item{q{title}} = $_tok;
8605 0         0 push @item, $_tok;
8606            
8607             }
8608            
8609            
8610 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [title]<<},
8611             Parse::RecDescent::_tracefirst($text),
8612             q{_alternation_1_of_production_1_of_rule_line},
8613             $tracelevel)
8614             if defined $::RD_TRACE;
8615 0         0 $_matched = 1;
8616 0         0 last;
8617             }
8618            
8619            
8620 12   33     44 while (!$_matched && !$commit)
8621             {
8622            
8623 12 50       19 Parse::RecDescent::_trace(q{Trying production: [author]},
8624             Parse::RecDescent::_tracefirst($_[1]),
8625             q{_alternation_1_of_production_1_of_rule_line},
8626             $tracelevel)
8627             if defined $::RD_TRACE;
8628 12         14 my $thisprod = $thisrule->{"prods"}[1];
8629 12         10 $text = $_[1];
8630 12         9 my $_savetext;
8631 12         18 @item = (q{_alternation_1_of_production_1_of_rule_line});
8632 12         17 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8633 12         8 my $repcount = 0;
8634            
8635            
8636 12 50       98 Parse::RecDescent::_trace(q{Trying subrule: [author]},
8637             Parse::RecDescent::_tracefirst($text),
8638             q{_alternation_1_of_production_1_of_rule_line},
8639             $tracelevel)
8640             if defined $::RD_TRACE;
8641 1     1   3 if (1) { no strict qw{refs};
  1         2  
  1         217  
  12         9  
8642 12         19 $expectation->is(q{})->at($text);
8643 12 50   12   75 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::author($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
8644             {
8645            
8646 12 50       14 Parse::RecDescent::_trace(q{<>},
8647             Parse::RecDescent::_tracefirst($text),
8648             q{_alternation_1_of_production_1_of_rule_line},
8649             $tracelevel)
8650             if defined $::RD_TRACE;
8651 12         18 $expectation->failed();
8652 12         23 last;
8653             }
8654 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [author]<< (return value: [}
8655             . $_tok . q{]},
8656            
8657             Parse::RecDescent::_tracefirst($text),
8658             q{_alternation_1_of_production_1_of_rule_line},
8659             $tracelevel)
8660             if defined $::RD_TRACE;
8661 0         0 $item{q{author}} = $_tok;
8662 0         0 push @item, $_tok;
8663            
8664             }
8665            
8666            
8667 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [author]<<},
8668             Parse::RecDescent::_tracefirst($text),
8669             q{_alternation_1_of_production_1_of_rule_line},
8670             $tracelevel)
8671             if defined $::RD_TRACE;
8672 0         0 $_matched = 1;
8673 0         0 last;
8674             }
8675            
8676            
8677 12   33     44 while (!$_matched && !$commit)
8678             {
8679            
8680 12 50       17 Parse::RecDescent::_trace(q{Trying production: [pattern_def]},
8681             Parse::RecDescent::_tracefirst($_[1]),
8682             q{_alternation_1_of_production_1_of_rule_line},
8683             $tracelevel)
8684             if defined $::RD_TRACE;
8685 12         13 my $thisprod = $thisrule->{"prods"}[2];
8686 12         9 $text = $_[1];
8687 12         9 my $_savetext;
8688 12         17 @item = (q{_alternation_1_of_production_1_of_rule_line});
8689 12         13 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8690 12         9 my $repcount = 0;
8691            
8692            
8693 12 50       17 Parse::RecDescent::_trace(q{Trying subrule: [pattern_def]},
8694             Parse::RecDescent::_tracefirst($text),
8695             q{_alternation_1_of_production_1_of_rule_line},
8696             $tracelevel)
8697             if defined $::RD_TRACE;
8698 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         199  
  12         8  
8699 12         19 $expectation->is(q{})->at($text);
8700 12 50   12   66 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::pattern_def($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         12  
8701             {
8702            
8703 12 50       17 Parse::RecDescent::_trace(q{<>},
8704             Parse::RecDescent::_tracefirst($text),
8705             q{_alternation_1_of_production_1_of_rule_line},
8706             $tracelevel)
8707             if defined $::RD_TRACE;
8708 12         18 $expectation->failed();
8709 12         26 last;
8710             }
8711 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [pattern_def]<< (return value: [}
8712             . $_tok . q{]},
8713            
8714             Parse::RecDescent::_tracefirst($text),
8715             q{_alternation_1_of_production_1_of_rule_line},
8716             $tracelevel)
8717             if defined $::RD_TRACE;
8718 0         0 $item{q{pattern_def}} = $_tok;
8719 0         0 push @item, $_tok;
8720            
8721             }
8722            
8723            
8724 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [pattern_def]<<},
8725             Parse::RecDescent::_tracefirst($text),
8726             q{_alternation_1_of_production_1_of_rule_line},
8727             $tracelevel)
8728             if defined $::RD_TRACE;
8729 0         0 $_matched = 1;
8730 0         0 last;
8731             }
8732            
8733            
8734 12   33     39 while (!$_matched && !$commit)
8735             {
8736            
8737 12 50       16 Parse::RecDescent::_trace(q{Trying production: [section_head]},
8738             Parse::RecDescent::_tracefirst($_[1]),
8739             q{_alternation_1_of_production_1_of_rule_line},
8740             $tracelevel)
8741             if defined $::RD_TRACE;
8742 12         14 my $thisprod = $thisrule->{"prods"}[3];
8743 12         10 $text = $_[1];
8744 12         8 my $_savetext;
8745 12         18 @item = (q{_alternation_1_of_production_1_of_rule_line});
8746 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8747 12         7 my $repcount = 0;
8748            
8749            
8750 12 50       18 Parse::RecDescent::_trace(q{Trying subrule: [section_head]},
8751             Parse::RecDescent::_tracefirst($text),
8752             q{_alternation_1_of_production_1_of_rule_line},
8753             $tracelevel)
8754             if defined $::RD_TRACE;
8755 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         186  
  12         8  
8756 12         17 $expectation->is(q{})->at($text);
8757 12 50   12   65 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::section_head($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
8758             {
8759            
8760 12 50       15 Parse::RecDescent::_trace(q{<>},
8761             Parse::RecDescent::_tracefirst($text),
8762             q{_alternation_1_of_production_1_of_rule_line},
8763             $tracelevel)
8764             if defined $::RD_TRACE;
8765 12         18 $expectation->failed();
8766 12         23 last;
8767             }
8768 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [section_head]<< (return value: [}
8769             . $_tok . q{]},
8770            
8771             Parse::RecDescent::_tracefirst($text),
8772             q{_alternation_1_of_production_1_of_rule_line},
8773             $tracelevel)
8774             if defined $::RD_TRACE;
8775 0         0 $item{q{section_head}} = $_tok;
8776 0         0 push @item, $_tok;
8777            
8778             }
8779            
8780            
8781 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [section_head]<<},
8782             Parse::RecDescent::_tracefirst($text),
8783             q{_alternation_1_of_production_1_of_rule_line},
8784             $tracelevel)
8785             if defined $::RD_TRACE;
8786 0         0 $_matched = 1;
8787 0         0 last;
8788             }
8789            
8790            
8791 12   33     42 while (!$_matched && !$commit)
8792             {
8793            
8794 12 50       21 Parse::RecDescent::_trace(q{Trying production: [heading]},
8795             Parse::RecDescent::_tracefirst($_[1]),
8796             q{_alternation_1_of_production_1_of_rule_line},
8797             $tracelevel)
8798             if defined $::RD_TRACE;
8799 12         14 my $thisprod = $thisrule->{"prods"}[4];
8800 12         10 $text = $_[1];
8801 12         9 my $_savetext;
8802 12         19 @item = (q{_alternation_1_of_production_1_of_rule_line});
8803 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8804 12         9 my $repcount = 0;
8805            
8806            
8807 12 50       18 Parse::RecDescent::_trace(q{Trying subrule: [heading]},
8808             Parse::RecDescent::_tracefirst($text),
8809             q{_alternation_1_of_production_1_of_rule_line},
8810             $tracelevel)
8811             if defined $::RD_TRACE;
8812 1     1   4 if (1) { no strict qw{refs};
  1         0  
  1         202  
  12         8  
8813 12         24 $expectation->is(q{})->at($text);
8814 12 50   12   66 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::heading($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
8815             {
8816            
8817 12 50       16 Parse::RecDescent::_trace(q{<>},
8818             Parse::RecDescent::_tracefirst($text),
8819             q{_alternation_1_of_production_1_of_rule_line},
8820             $tracelevel)
8821             if defined $::RD_TRACE;
8822 12         22 $expectation->failed();
8823 12         23 last;
8824             }
8825 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [heading]<< (return value: [}
8826             . $_tok . q{]},
8827            
8828             Parse::RecDescent::_tracefirst($text),
8829             q{_alternation_1_of_production_1_of_rule_line},
8830             $tracelevel)
8831             if defined $::RD_TRACE;
8832 0         0 $item{q{heading}} = $_tok;
8833 0         0 push @item, $_tok;
8834            
8835             }
8836            
8837            
8838 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [heading]<<},
8839             Parse::RecDescent::_tracefirst($text),
8840             q{_alternation_1_of_production_1_of_rule_line},
8841             $tracelevel)
8842             if defined $::RD_TRACE;
8843 0         0 $_matched = 1;
8844 0         0 last;
8845             }
8846            
8847            
8848 12   33     41 while (!$_matched && !$commit)
8849             {
8850            
8851 12 50       18 Parse::RecDescent::_trace(q{Trying production: [group_field]},
8852             Parse::RecDescent::_tracefirst($_[1]),
8853             q{_alternation_1_of_production_1_of_rule_line},
8854             $tracelevel)
8855             if defined $::RD_TRACE;
8856 12         13 my $thisprod = $thisrule->{"prods"}[5];
8857 12         10 $text = $_[1];
8858 12         9 my $_savetext;
8859 12         17 @item = (q{_alternation_1_of_production_1_of_rule_line});
8860 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8861 12         11 my $repcount = 0;
8862            
8863            
8864 12 50       16 Parse::RecDescent::_trace(q{Trying subrule: [group_field]},
8865             Parse::RecDescent::_tracefirst($text),
8866             q{_alternation_1_of_production_1_of_rule_line},
8867             $tracelevel)
8868             if defined $::RD_TRACE;
8869 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         182  
  12         11  
8870 12         18 $expectation->is(q{})->at($text);
8871 12 50   12   73 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::group_field($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
8872             {
8873            
8874 12 50       16 Parse::RecDescent::_trace(q{<>},
8875             Parse::RecDescent::_tracefirst($text),
8876             q{_alternation_1_of_production_1_of_rule_line},
8877             $tracelevel)
8878             if defined $::RD_TRACE;
8879 12         16 $expectation->failed();
8880 12         24 last;
8881             }
8882 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [group_field]<< (return value: [}
8883             . $_tok . q{]},
8884            
8885             Parse::RecDescent::_tracefirst($text),
8886             q{_alternation_1_of_production_1_of_rule_line},
8887             $tracelevel)
8888             if defined $::RD_TRACE;
8889 0         0 $item{q{group_field}} = $_tok;
8890 0         0 push @item, $_tok;
8891            
8892             }
8893            
8894            
8895 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [group_field]<<},
8896             Parse::RecDescent::_tracefirst($text),
8897             q{_alternation_1_of_production_1_of_rule_line},
8898             $tracelevel)
8899             if defined $::RD_TRACE;
8900 0         0 $_matched = 1;
8901 0         0 last;
8902             }
8903            
8904            
8905 12   33     37 while (!$_matched && !$commit)
8906             {
8907            
8908 12 50       18 Parse::RecDescent::_trace(q{Trying production: [unknown_directive]},
8909             Parse::RecDescent::_tracefirst($_[1]),
8910             q{_alternation_1_of_production_1_of_rule_line},
8911             $tracelevel)
8912             if defined $::RD_TRACE;
8913 12         11 my $thisprod = $thisrule->{"prods"}[6];
8914 12         10 $text = $_[1];
8915 12         11 my $_savetext;
8916 12         17 @item = (q{_alternation_1_of_production_1_of_rule_line});
8917 12         15 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8918 12         14 my $repcount = 0;
8919            
8920            
8921 12 50       15 Parse::RecDescent::_trace(q{Trying subrule: [unknown_directive]},
8922             Parse::RecDescent::_tracefirst($text),
8923             q{_alternation_1_of_production_1_of_rule_line},
8924             $tracelevel)
8925             if defined $::RD_TRACE;
8926 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         169  
  12         10  
8927 12         30 $expectation->is(q{})->at($text);
8928 12 50   12   73 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::unknown_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         14  
8929             {
8930            
8931 12 50       20 Parse::RecDescent::_trace(q{<>},
8932             Parse::RecDescent::_tracefirst($text),
8933             q{_alternation_1_of_production_1_of_rule_line},
8934             $tracelevel)
8935             if defined $::RD_TRACE;
8936 12         21 $expectation->failed();
8937 12         25 last;
8938             }
8939 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [unknown_directive]<< (return value: [}
8940             . $_tok . q{]},
8941            
8942             Parse::RecDescent::_tracefirst($text),
8943             q{_alternation_1_of_production_1_of_rule_line},
8944             $tracelevel)
8945             if defined $::RD_TRACE;
8946 0         0 $item{q{unknown_directive}} = $_tok;
8947 0         0 push @item, $_tok;
8948            
8949             }
8950            
8951            
8952 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [unknown_directive]<<},
8953             Parse::RecDescent::_tracefirst($text),
8954             q{_alternation_1_of_production_1_of_rule_line},
8955             $tracelevel)
8956             if defined $::RD_TRACE;
8957 0         0 $_matched = 1;
8958 0         0 last;
8959             }
8960            
8961            
8962 12   33     38 while (!$_matched && !$commit)
8963             {
8964            
8965 12 50       26 Parse::RecDescent::_trace(q{Trying production: [field]},
8966             Parse::RecDescent::_tracefirst($_[1]),
8967             q{_alternation_1_of_production_1_of_rule_line},
8968             $tracelevel)
8969             if defined $::RD_TRACE;
8970 12         15 my $thisprod = $thisrule->{"prods"}[7];
8971 12         11 $text = $_[1];
8972 12         11 my $_savetext;
8973 12         15 @item = (q{_alternation_1_of_production_1_of_rule_line});
8974 12         18 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
8975 12         7 my $repcount = 0;
8976            
8977            
8978 12 50       18 Parse::RecDescent::_trace(q{Trying subrule: [field]},
8979             Parse::RecDescent::_tracefirst($text),
8980             q{_alternation_1_of_production_1_of_rule_line},
8981             $tracelevel)
8982             if defined $::RD_TRACE;
8983 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         203  
  12         10  
8984 12         19 $expectation->is(q{})->at($text);
8985 12 100   12   69 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::field($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         16  
8986             {
8987            
8988 9 50       15 Parse::RecDescent::_trace(q{<>},
8989             Parse::RecDescent::_tracefirst($text),
8990             q{_alternation_1_of_production_1_of_rule_line},
8991             $tracelevel)
8992             if defined $::RD_TRACE;
8993 9         17 $expectation->failed();
8994 9         20 last;
8995             }
8996 3 50       8 Parse::RecDescent::_trace(q{>>Matched subrule: [field]<< (return value: [}
8997             . $_tok . q{]},
8998            
8999             Parse::RecDescent::_tracefirst($text),
9000             q{_alternation_1_of_production_1_of_rule_line},
9001             $tracelevel)
9002             if defined $::RD_TRACE;
9003 3         4 $item{q{field}} = $_tok;
9004 3         3 push @item, $_tok;
9005            
9006             }
9007            
9008            
9009 3 50       4 Parse::RecDescent::_trace(q{>>Matched production: [field]<<},
9010             Parse::RecDescent::_tracefirst($text),
9011             q{_alternation_1_of_production_1_of_rule_line},
9012             $tracelevel)
9013             if defined $::RD_TRACE;
9014 3         3 $_matched = 1;
9015 3         3 last;
9016             }
9017            
9018            
9019 12   66     33 while (!$_matched && !$commit)
9020             {
9021            
9022 9 50       12 Parse::RecDescent::_trace(q{Trying production: [comment]},
9023             Parse::RecDescent::_tracefirst($_[1]),
9024             q{_alternation_1_of_production_1_of_rule_line},
9025             $tracelevel)
9026             if defined $::RD_TRACE;
9027 9         12 my $thisprod = $thisrule->{"prods"}[8];
9028 9         8 $text = $_[1];
9029 9         10 my $_savetext;
9030 9         13 @item = (q{_alternation_1_of_production_1_of_rule_line});
9031 9         13 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
9032 9         9 my $repcount = 0;
9033            
9034            
9035 9 50       15 Parse::RecDescent::_trace(q{Trying subrule: [comment]},
9036             Parse::RecDescent::_tracefirst($text),
9037             q{_alternation_1_of_production_1_of_rule_line},
9038             $tracelevel)
9039             if defined $::RD_TRACE;
9040 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         182  
  9         7  
9041 9         14 $expectation->is(q{})->at($text);
9042 9 50   9   59 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::comment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  9         11  
9043             {
9044            
9045 9 50       13 Parse::RecDescent::_trace(q{<>},
9046             Parse::RecDescent::_tracefirst($text),
9047             q{_alternation_1_of_production_1_of_rule_line},
9048             $tracelevel)
9049             if defined $::RD_TRACE;
9050 9         18 $expectation->failed();
9051 9         14 last;
9052             }
9053 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [comment]<< (return value: [}
9054             . $_tok . q{]},
9055            
9056             Parse::RecDescent::_tracefirst($text),
9057             q{_alternation_1_of_production_1_of_rule_line},
9058             $tracelevel)
9059             if defined $::RD_TRACE;
9060 0         0 $item{q{comment}} = $_tok;
9061 0         0 push @item, $_tok;
9062            
9063             }
9064            
9065            
9066 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
9067             Parse::RecDescent::_tracefirst($text),
9068             q{_alternation_1_of_production_1_of_rule_line},
9069             $tracelevel)
9070             if defined $::RD_TRACE;
9071 0         0 $_matched = 1;
9072 0         0 last;
9073             }
9074            
9075            
9076 12   66     41 while (!$_matched && !$commit)
9077             {
9078            
9079 9 50       13 Parse::RecDescent::_trace(q{Trying production: [blank]},
9080             Parse::RecDescent::_tracefirst($_[1]),
9081             q{_alternation_1_of_production_1_of_rule_line},
9082             $tracelevel)
9083             if defined $::RD_TRACE;
9084 9         11 my $thisprod = $thisrule->{"prods"}[9];
9085 9         10 $text = $_[1];
9086 9         6 my $_savetext;
9087 9         12 @item = (q{_alternation_1_of_production_1_of_rule_line});
9088 9         16 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_line});
9089 9         8 my $repcount = 0;
9090            
9091            
9092 9 50       12 Parse::RecDescent::_trace(q{Trying subrule: [blank]},
9093             Parse::RecDescent::_tracefirst($text),
9094             q{_alternation_1_of_production_1_of_rule_line},
9095             $tracelevel)
9096             if defined $::RD_TRACE;
9097 1     1   3 if (1) { no strict qw{refs};
  1         1  
  1         412  
  9         7  
9098 9         14 $expectation->is(q{})->at($text);
9099 9 50   9   68 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::blank($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  9         10  
9100             {
9101            
9102 0 0       0 Parse::RecDescent::_trace(q{<>},
9103             Parse::RecDescent::_tracefirst($text),
9104             q{_alternation_1_of_production_1_of_rule_line},
9105             $tracelevel)
9106             if defined $::RD_TRACE;
9107 0         0 $expectation->failed();
9108 0         0 last;
9109             }
9110 9 50       22 Parse::RecDescent::_trace(q{>>Matched subrule: [blank]<< (return value: [}
9111             . $_tok . q{]},
9112            
9113             Parse::RecDescent::_tracefirst($text),
9114             q{_alternation_1_of_production_1_of_rule_line},
9115             $tracelevel)
9116             if defined $::RD_TRACE;
9117 9         11 $item{q{blank}} = $_tok;
9118 9         10 push @item, $_tok;
9119            
9120             }
9121            
9122            
9123 9 50       12 Parse::RecDescent::_trace(q{>>Matched production: [blank]<<},
9124             Parse::RecDescent::_tracefirst($text),
9125             q{_alternation_1_of_production_1_of_rule_line},
9126             $tracelevel)
9127             if defined $::RD_TRACE;
9128 9         20 $_matched = 1;
9129 9         8 last;
9130             }
9131            
9132            
9133 12 0 33     25 unless ( $_matched || defined($return) || defined($score) )
      33        
9134             {
9135            
9136            
9137 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9138 0 0       0 Parse::RecDescent::_trace(q{<>},
9139             Parse::RecDescent::_tracefirst($_[1]),
9140             q{_alternation_1_of_production_1_of_rule_line},
9141             $tracelevel)
9142             if defined $::RD_TRACE;
9143 0         0 return undef;
9144             }
9145 12 50 33     39 if (!defined($return) && defined($score))
9146             {
9147 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9148             q{_alternation_1_of_production_1_of_rule_line},
9149             $tracelevel)
9150             if defined $::RD_TRACE;
9151 0         0 $return = $score_return;
9152             }
9153 12         10 splice @{$thisparser->{errors}}, $err_at;
  12         13  
9154 12 50       19 $return = $item[$#item] unless defined $return;
9155 12 50       22 if (defined $::RD_TRACE)
9156             {
9157 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9158             $return . q{])}, "",
9159             q{_alternation_1_of_production_1_of_rule_line},
9160             $tracelevel);
9161 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9162             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9163             Parse::RecDescent::_tracefirst($text),
9164             , q{_alternation_1_of_production_1_of_rule_line},
9165             $tracelevel)
9166             }
9167 12         13 $_[1] = $text;
9168 12         56 return $return;
9169             }
9170            
9171             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9172             sub Parse::RecDescent::Text::FormBuilder::Parser::bang
9173             {
9174 0     0   0 my $thisparser = $_[0];
9175 1     1   4 use vars q{$tracelevel};
  1         2  
  1         526  
9176 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9177 0         0 $ERRORS = 0;
9178 0         0 my $thisrule = $thisparser->{"rules"}{"bang"};
9179            
9180 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [bang]},
9181             Parse::RecDescent::_tracefirst($_[1]),
9182             q{bang},
9183             $tracelevel)
9184             if defined $::RD_TRACE;
9185            
9186            
9187 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9188            
9189 0         0 my $score;
9190             my $score_return;
9191 0         0 my $_tok;
9192 0         0 my $return = undef;
9193 0         0 my $_matched=0;
9194 0         0 my $commit=0;
9195 0         0 my @item = ();
9196 0         0 my %item = ();
9197 0   0     0 my $repeating = defined($_[2]) && $_[2];
9198 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9199 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9200 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9201 0         0 my $text;
9202 0         0 my $lastsep="";
9203 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
9204 0         0 $expectation->at($_[1]);
9205            
9206 0         0 my $thisline;
9207 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9208            
9209            
9210            
9211 0   0     0 while (!$_matched && !$commit)
9212             {
9213            
9214 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['!']},
9215             Parse::RecDescent::_tracefirst($_[1]),
9216             q{bang},
9217             $tracelevel)
9218             if defined $::RD_TRACE;
9219 0         0 my $thisprod = $thisrule->{"prods"}[0];
9220 0         0 $text = $_[1];
9221 0         0 my $_savetext;
9222 0         0 @item = (q{bang});
9223 0         0 %item = (__RULE__ => q{bang});
9224 0         0 my $repcount = 0;
9225            
9226            
9227 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['!']},
9228             Parse::RecDescent::_tracefirst($text),
9229             q{bang},
9230             $tracelevel)
9231             if defined $::RD_TRACE;
9232 0         0 $lastsep = "";
9233 0         0 $expectation->is(q{})->at($text);
9234            
9235            
9236 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!//)
  0 0       0  
9237             {
9238            
9239 0         0 $expectation->failed();
9240 0 0       0 Parse::RecDescent::_trace(qq{<>},
9241             Parse::RecDescent::_tracefirst($text))
9242             if defined $::RD_TRACE;
9243 0         0 last;
9244             }
9245 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9246             . $& . q{])},
9247             Parse::RecDescent::_tracefirst($text))
9248             if defined $::RD_TRACE;
9249 0         0 push @item, $item{__STRING1__}=$&;
9250            
9251            
9252            
9253 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!']<<},
9254             Parse::RecDescent::_tracefirst($text),
9255             q{bang},
9256             $tracelevel)
9257             if defined $::RD_TRACE;
9258 0         0 $_matched = 1;
9259 0         0 last;
9260             }
9261            
9262            
9263 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
9264             {
9265            
9266            
9267 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9268 0 0       0 Parse::RecDescent::_trace(q{<>},
9269             Parse::RecDescent::_tracefirst($_[1]),
9270             q{bang},
9271             $tracelevel)
9272             if defined $::RD_TRACE;
9273 0         0 return undef;
9274             }
9275 0 0 0     0 if (!defined($return) && defined($score))
9276             {
9277 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9278             q{bang},
9279             $tracelevel)
9280             if defined $::RD_TRACE;
9281 0         0 $return = $score_return;
9282             }
9283 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9284 0 0       0 $return = $item[$#item] unless defined $return;
9285 0 0       0 if (defined $::RD_TRACE)
9286             {
9287 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9288             $return . q{])}, "",
9289             q{bang},
9290             $tracelevel);
9291 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9292             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9293             Parse::RecDescent::_tracefirst($text),
9294             , q{bang},
9295             $tracelevel)
9296             }
9297 0         0 $_[1] = $text;
9298 0         0 return $return;
9299             }
9300            
9301             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9302             sub Parse::RecDescent::Text::FormBuilder::Parser::group_name
9303             {
9304 0     0   0 my $thisparser = $_[0];
9305 1     1   4 use vars q{$tracelevel};
  1         1  
  1         502  
9306 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9307 0         0 $ERRORS = 0;
9308 0         0 my $thisrule = $thisparser->{"rules"}{"group_name"};
9309            
9310 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [group_name]},
9311             Parse::RecDescent::_tracefirst($_[1]),
9312             q{group_name},
9313             $tracelevel)
9314             if defined $::RD_TRACE;
9315            
9316            
9317 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9318            
9319 0         0 my $score;
9320             my $score_return;
9321 0         0 my $_tok;
9322 0         0 my $return = undef;
9323 0         0 my $_matched=0;
9324 0         0 my $commit=0;
9325 0         0 my @item = ();
9326 0         0 my %item = ();
9327 0   0     0 my $repeating = defined($_[2]) && $_[2];
9328 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9329 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9330 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9331 0         0 my $text;
9332 0         0 my $lastsep="";
9333 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
9334 0         0 $expectation->at($_[1]);
9335            
9336 0         0 my $thisline;
9337 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9338            
9339            
9340            
9341 0   0     0 while (!$_matched && !$commit)
9342             {
9343            
9344 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/%[A-Z_]+/]},
9345             Parse::RecDescent::_tracefirst($_[1]),
9346             q{group_name},
9347             $tracelevel)
9348             if defined $::RD_TRACE;
9349 0         0 my $thisprod = $thisrule->{"prods"}[0];
9350 0         0 $text = $_[1];
9351 0         0 my $_savetext;
9352 0         0 @item = (q{group_name});
9353 0         0 %item = (__RULE__ => q{group_name});
9354 0         0 my $repcount = 0;
9355            
9356            
9357 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/%[A-Z_]+/]}, Parse::RecDescent::_tracefirst($text),
9358             q{group_name},
9359             $tracelevel)
9360             if defined $::RD_TRACE;
9361 0         0 $lastsep = "";
9362 0         0 $expectation->is(q{})->at($text);
9363            
9364            
9365 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:%[A-Z_]+)//)
  0 0       0  
9366             {
9367            
9368 0         0 $expectation->failed();
9369 0 0       0 Parse::RecDescent::_trace(q{<>},
9370             Parse::RecDescent::_tracefirst($text))
9371             if defined $::RD_TRACE;
9372            
9373 0         0 last;
9374             }
9375 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9376             . $& . q{])},
9377             Parse::RecDescent::_tracefirst($text))
9378             if defined $::RD_TRACE;
9379 0         0 push @item, $item{__PATTERN1__}=$&;
9380            
9381            
9382            
9383 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/%[A-Z_]+/]<<},
9384             Parse::RecDescent::_tracefirst($text),
9385             q{group_name},
9386             $tracelevel)
9387             if defined $::RD_TRACE;
9388 0         0 $_matched = 1;
9389 0         0 last;
9390             }
9391            
9392            
9393 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
9394             {
9395            
9396            
9397 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9398 0 0       0 Parse::RecDescent::_trace(q{<>},
9399             Parse::RecDescent::_tracefirst($_[1]),
9400             q{group_name},
9401             $tracelevel)
9402             if defined $::RD_TRACE;
9403 0         0 return undef;
9404             }
9405 0 0 0     0 if (!defined($return) && defined($score))
9406             {
9407 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9408             q{group_name},
9409             $tracelevel)
9410             if defined $::RD_TRACE;
9411 0         0 $return = $score_return;
9412             }
9413 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9414 0 0       0 $return = $item[$#item] unless defined $return;
9415 0 0       0 if (defined $::RD_TRACE)
9416             {
9417 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9418             $return . q{])}, "",
9419             q{group_name},
9420             $tracelevel);
9421 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9422             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9423             Parse::RecDescent::_tracefirst($text),
9424             , q{group_name},
9425             $tracelevel)
9426             }
9427 0         0 $_[1] = $text;
9428 0         0 return $return;
9429             }
9430            
9431             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9432             sub Parse::RecDescent::Text::FormBuilder::Parser::block_content
9433             {
9434 0     0   0 my $thisparser = $_[0];
9435 1     1   4 use vars q{$tracelevel};
  1         1  
  1         399  
9436 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9437 0         0 $ERRORS = 0;
9438 0         0 my $thisrule = $thisparser->{"rules"}{"block_content"};
9439            
9440 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [block_content]},
9441             Parse::RecDescent::_tracefirst($_[1]),
9442             q{block_content},
9443             $tracelevel)
9444             if defined $::RD_TRACE;
9445            
9446            
9447 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9448            
9449 0         0 my $score;
9450             my $score_return;
9451 0         0 my $_tok;
9452 0         0 my $return = undef;
9453 0         0 my $_matched=0;
9454 0         0 my $commit=0;
9455 0         0 my @item = ();
9456 0         0 my %item = ();
9457 0   0     0 my $repeating = defined($_[2]) && $_[2];
9458 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9459 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9460 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9461 0         0 my $text;
9462 0         0 my $lastsep="";
9463 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
9464 0         0 $expectation->at($_[1]);
9465            
9466 0         0 my $thisline;
9467 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9468            
9469            
9470            
9471 0   0     0 while (!$_matched && !$commit)
9472             {
9473            
9474 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/[^\\\{\\\}]+?/]},
9475             Parse::RecDescent::_tracefirst($_[1]),
9476             q{block_content},
9477             $tracelevel)
9478             if defined $::RD_TRACE;
9479 0         0 my $thisprod = $thisrule->{"prods"}[0];
9480 0         0 $text = $_[1];
9481 0         0 my $_savetext;
9482 0         0 @item = (q{block_content});
9483 0         0 %item = (__RULE__ => q{block_content});
9484 0         0 my $repcount = 0;
9485            
9486            
9487 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[^\\\{\\\}]+?/]}, Parse::RecDescent::_tracefirst($text),
9488             q{block_content},
9489             $tracelevel)
9490             if defined $::RD_TRACE;
9491 0         0 $lastsep = "";
9492 0         0 $expectation->is(q{})->at($text);
9493            
9494            
9495 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^\{\}]+?)//)
  0 0       0  
9496             {
9497            
9498 0         0 $expectation->failed();
9499 0 0       0 Parse::RecDescent::_trace(q{<>},
9500             Parse::RecDescent::_tracefirst($text))
9501             if defined $::RD_TRACE;
9502            
9503 0         0 last;
9504             }
9505 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9506             . $& . q{])},
9507             Parse::RecDescent::_tracefirst($text))
9508             if defined $::RD_TRACE;
9509 0         0 push @item, $item{__PATTERN1__}=$&;
9510            
9511            
9512            
9513 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/[^\\\{\\\}]+?/]<<},
9514             Parse::RecDescent::_tracefirst($text),
9515             q{block_content},
9516             $tracelevel)
9517             if defined $::RD_TRACE;
9518 0         0 $_matched = 1;
9519 0         0 last;
9520             }
9521            
9522            
9523 0   0     0 while (!$_matched && !$commit)
9524             {
9525            
9526 0 0       0 Parse::RecDescent::_trace(q{Trying production: [block]},
9527             Parse::RecDescent::_tracefirst($_[1]),
9528             q{block_content},
9529             $tracelevel)
9530             if defined $::RD_TRACE;
9531 0         0 my $thisprod = $thisrule->{"prods"}[1];
9532 0         0 $text = $_[1];
9533 0         0 my $_savetext;
9534 0         0 @item = (q{block_content});
9535 0         0 %item = (__RULE__ => q{block_content});
9536 0         0 my $repcount = 0;
9537            
9538            
9539 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [block]},
9540             Parse::RecDescent::_tracefirst($text),
9541             q{block_content},
9542             $tracelevel)
9543             if defined $::RD_TRACE;
9544 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         321  
  0         0  
9545 0         0 $expectation->is(q{})->at($text);
9546 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::block($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
9547             {
9548            
9549 0 0       0 Parse::RecDescent::_trace(q{<>},
9550             Parse::RecDescent::_tracefirst($text),
9551             q{block_content},
9552             $tracelevel)
9553             if defined $::RD_TRACE;
9554 0         0 $expectation->failed();
9555 0         0 last;
9556             }
9557 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [block]<< (return value: [}
9558             . $_tok . q{]},
9559            
9560             Parse::RecDescent::_tracefirst($text),
9561             q{block_content},
9562             $tracelevel)
9563             if defined $::RD_TRACE;
9564 0         0 $item{q{block}} = $_tok;
9565 0         0 push @item, $_tok;
9566            
9567             }
9568            
9569            
9570 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [block]<<},
9571             Parse::RecDescent::_tracefirst($text),
9572             q{block_content},
9573             $tracelevel)
9574             if defined $::RD_TRACE;
9575 0         0 $_matched = 1;
9576 0         0 last;
9577             }
9578            
9579            
9580 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
9581             {
9582            
9583            
9584 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9585 0 0       0 Parse::RecDescent::_trace(q{<>},
9586             Parse::RecDescent::_tracefirst($_[1]),
9587             q{block_content},
9588             $tracelevel)
9589             if defined $::RD_TRACE;
9590 0         0 return undef;
9591             }
9592 0 0 0     0 if (!defined($return) && defined($score))
9593             {
9594 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9595             q{block_content},
9596             $tracelevel)
9597             if defined $::RD_TRACE;
9598 0         0 $return = $score_return;
9599             }
9600 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9601 0 0       0 $return = $item[$#item] unless defined $return;
9602 0 0       0 if (defined $::RD_TRACE)
9603             {
9604 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9605             $return . q{])}, "",
9606             q{block_content},
9607             $tracelevel);
9608 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9609             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9610             Parse::RecDescent::_tracefirst($text),
9611             , q{block_content},
9612             $tracelevel)
9613             }
9614 0         0 $_[1] = $text;
9615 0         0 return $return;
9616             }
9617            
9618             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9619             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_field_size
9620             {
9621 0     0   0 my $thisparser = $_[0];
9622 1     1   3 use vars q{$tracelevel};
  1         1  
  1         231  
9623 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9624 0         0 $ERRORS = 0;
9625 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_field_size"};
9626            
9627 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_field_size]},
9628             Parse::RecDescent::_tracefirst($_[1]),
9629             q{_alternation_1_of_production_1_of_rule_field_size},
9630             $tracelevel)
9631             if defined $::RD_TRACE;
9632            
9633            
9634 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9635            
9636 0         0 my $score;
9637             my $score_return;
9638 0         0 my $_tok;
9639 0         0 my $return = undef;
9640 0         0 my $_matched=0;
9641 0         0 my $commit=0;
9642 0         0 my @item = ();
9643 0         0 my %item = ();
9644 0   0     0 my $repeating = defined($_[2]) && $_[2];
9645 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9646 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9647 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9648 0         0 my $text;
9649 0         0 my $lastsep="";
9650 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
9651 0         0 $expectation->at($_[1]);
9652            
9653 0         0 my $thisline;
9654 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9655            
9656            
9657            
9658 0   0     0 while (!$_matched && !$commit)
9659             {
9660            
9661 0 0       0 Parse::RecDescent::_trace(q{Trying production: [row_col]},
9662             Parse::RecDescent::_tracefirst($_[1]),
9663             q{_alternation_1_of_production_1_of_rule_field_size},
9664             $tracelevel)
9665             if defined $::RD_TRACE;
9666 0         0 my $thisprod = $thisrule->{"prods"}[0];
9667 0         0 $text = $_[1];
9668 0         0 my $_savetext;
9669 0         0 @item = (q{_alternation_1_of_production_1_of_rule_field_size});
9670 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_field_size});
9671 0         0 my $repcount = 0;
9672            
9673            
9674 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [row_col]},
9675             Parse::RecDescent::_tracefirst($text),
9676             q{_alternation_1_of_production_1_of_rule_field_size},
9677             $tracelevel)
9678             if defined $::RD_TRACE;
9679 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         217  
  0         0  
9680 0         0 $expectation->is(q{})->at($text);
9681 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::row_col($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
9682             {
9683            
9684 0 0       0 Parse::RecDescent::_trace(q{<>},
9685             Parse::RecDescent::_tracefirst($text),
9686             q{_alternation_1_of_production_1_of_rule_field_size},
9687             $tracelevel)
9688             if defined $::RD_TRACE;
9689 0         0 $expectation->failed();
9690 0         0 last;
9691             }
9692 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [row_col]<< (return value: [}
9693             . $_tok . q{]},
9694            
9695             Parse::RecDescent::_tracefirst($text),
9696             q{_alternation_1_of_production_1_of_rule_field_size},
9697             $tracelevel)
9698             if defined $::RD_TRACE;
9699 0         0 $item{q{row_col}} = $_tok;
9700 0         0 push @item, $_tok;
9701            
9702             }
9703            
9704            
9705 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [row_col]<<},
9706             Parse::RecDescent::_tracefirst($text),
9707             q{_alternation_1_of_production_1_of_rule_field_size},
9708             $tracelevel)
9709             if defined $::RD_TRACE;
9710 0         0 $_matched = 1;
9711 0         0 last;
9712             }
9713            
9714            
9715 0   0     0 while (!$_matched && !$commit)
9716             {
9717            
9718 0 0       0 Parse::RecDescent::_trace(q{Trying production: [size]},
9719             Parse::RecDescent::_tracefirst($_[1]),
9720             q{_alternation_1_of_production_1_of_rule_field_size},
9721             $tracelevel)
9722             if defined $::RD_TRACE;
9723 0         0 my $thisprod = $thisrule->{"prods"}[1];
9724 0         0 $text = $_[1];
9725 0         0 my $_savetext;
9726 0         0 @item = (q{_alternation_1_of_production_1_of_rule_field_size});
9727 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_field_size});
9728 0         0 my $repcount = 0;
9729            
9730            
9731 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [size]},
9732             Parse::RecDescent::_tracefirst($text),
9733             q{_alternation_1_of_production_1_of_rule_field_size},
9734             $tracelevel)
9735             if defined $::RD_TRACE;
9736 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         303  
  0         0  
9737 0         0 $expectation->is(q{})->at($text);
9738 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::size($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
9739             {
9740            
9741 0 0       0 Parse::RecDescent::_trace(q{<>},
9742             Parse::RecDescent::_tracefirst($text),
9743             q{_alternation_1_of_production_1_of_rule_field_size},
9744             $tracelevel)
9745             if defined $::RD_TRACE;
9746 0         0 $expectation->failed();
9747 0         0 last;
9748             }
9749 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [size]<< (return value: [}
9750             . $_tok . q{]},
9751            
9752             Parse::RecDescent::_tracefirst($text),
9753             q{_alternation_1_of_production_1_of_rule_field_size},
9754             $tracelevel)
9755             if defined $::RD_TRACE;
9756 0         0 $item{q{size}} = $_tok;
9757 0         0 push @item, $_tok;
9758            
9759             }
9760            
9761            
9762 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [size]<<},
9763             Parse::RecDescent::_tracefirst($text),
9764             q{_alternation_1_of_production_1_of_rule_field_size},
9765             $tracelevel)
9766             if defined $::RD_TRACE;
9767 0         0 $_matched = 1;
9768 0         0 last;
9769             }
9770            
9771            
9772 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
9773             {
9774            
9775            
9776 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9777 0 0       0 Parse::RecDescent::_trace(q{<>},
9778             Parse::RecDescent::_tracefirst($_[1]),
9779             q{_alternation_1_of_production_1_of_rule_field_size},
9780             $tracelevel)
9781             if defined $::RD_TRACE;
9782 0         0 return undef;
9783             }
9784 0 0 0     0 if (!defined($return) && defined($score))
9785             {
9786 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9787             q{_alternation_1_of_production_1_of_rule_field_size},
9788             $tracelevel)
9789             if defined $::RD_TRACE;
9790 0         0 $return = $score_return;
9791             }
9792 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9793 0 0       0 $return = $item[$#item] unless defined $return;
9794 0 0       0 if (defined $::RD_TRACE)
9795             {
9796 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9797             $return . q{])}, "",
9798             q{_alternation_1_of_production_1_of_rule_field_size},
9799             $tracelevel);
9800 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9801             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9802             Parse::RecDescent::_tracefirst($text),
9803             , q{_alternation_1_of_production_1_of_rule_field_size},
9804             $tracelevel)
9805             }
9806 0         0 $_[1] = $text;
9807 0         0 return $return;
9808             }
9809            
9810             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9811             sub Parse::RecDescent::Text::FormBuilder::Parser::display_text
9812             {
9813 0     0   0 my $thisparser = $_[0];
9814 1     1   3 use vars q{$tracelevel};
  1         1  
  1         786  
9815 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9816 0         0 $ERRORS = 0;
9817 0         0 my $thisrule = $thisparser->{"rules"}{"display_text"};
9818            
9819 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [display_text]},
9820             Parse::RecDescent::_tracefirst($_[1]),
9821             q{display_text},
9822             $tracelevel)
9823             if defined $::RD_TRACE;
9824            
9825            
9826 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9827            
9828 0         0 my $score;
9829             my $score_return;
9830 0         0 my $_tok;
9831 0         0 my $return = undef;
9832 0         0 my $_matched=0;
9833 0         0 my $commit=0;
9834 0         0 my @item = ();
9835 0         0 my %item = ();
9836 0   0     0 my $repeating = defined($_[2]) && $_[2];
9837 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9838 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9839 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9840 0         0 my $text;
9841 0         0 my $lastsep="";
9842 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
9843 0         0 $expectation->at($_[1]);
9844            
9845 0         0 my $thisline;
9846 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9847            
9848            
9849            
9850 0   0     0 while (!$_matched && !$commit)
9851             {
9852            
9853 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['[' /[^\\]]+/i ']']},
9854             Parse::RecDescent::_tracefirst($_[1]),
9855             q{display_text},
9856             $tracelevel)
9857             if defined $::RD_TRACE;
9858 0         0 my $thisprod = $thisrule->{"prods"}[0];
9859 0         0 $text = $_[1];
9860 0         0 my $_savetext;
9861 0         0 @item = (q{display_text});
9862 0         0 %item = (__RULE__ => q{display_text});
9863 0         0 my $repcount = 0;
9864            
9865            
9866 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
9867             Parse::RecDescent::_tracefirst($text),
9868             q{display_text},
9869             $tracelevel)
9870             if defined $::RD_TRACE;
9871 0         0 $lastsep = "";
9872 0         0 $expectation->is(q{})->at($text);
9873            
9874            
9875 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  0 0       0  
9876             {
9877            
9878 0         0 $expectation->failed();
9879 0 0       0 Parse::RecDescent::_trace(qq{<>},
9880             Parse::RecDescent::_tracefirst($text))
9881             if defined $::RD_TRACE;
9882 0         0 last;
9883             }
9884 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9885             . $& . q{])},
9886             Parse::RecDescent::_tracefirst($text))
9887             if defined $::RD_TRACE;
9888 0         0 push @item, $item{__STRING1__}=$&;
9889            
9890            
9891 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/[^\\]]+/i]}, Parse::RecDescent::_tracefirst($text),
9892             q{display_text},
9893             $tracelevel)
9894             if defined $::RD_TRACE;
9895 0         0 $lastsep = "";
9896 0         0 $expectation->is(q{/[^\\]]+/i})->at($text);
9897            
9898            
9899 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^\]]+)//i)
  0 0       0  
9900             {
9901            
9902 0         0 $expectation->failed();
9903 0 0       0 Parse::RecDescent::_trace(q{<>},
9904             Parse::RecDescent::_tracefirst($text))
9905             if defined $::RD_TRACE;
9906            
9907 0         0 last;
9908             }
9909 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9910             . $& . q{])},
9911             Parse::RecDescent::_tracefirst($text))
9912             if defined $::RD_TRACE;
9913 0         0 push @item, $item{__PATTERN1__}=$&;
9914            
9915            
9916 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [']']},
9917             Parse::RecDescent::_tracefirst($text),
9918             q{display_text},
9919             $tracelevel)
9920             if defined $::RD_TRACE;
9921 0         0 $lastsep = "";
9922 0         0 $expectation->is(q{']'})->at($text);
9923            
9924            
9925 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  0 0       0  
9926             {
9927            
9928 0         0 $expectation->failed();
9929 0 0       0 Parse::RecDescent::_trace(qq{<>},
9930             Parse::RecDescent::_tracefirst($text))
9931             if defined $::RD_TRACE;
9932 0         0 last;
9933             }
9934 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9935             . $& . q{])},
9936             Parse::RecDescent::_tracefirst($text))
9937             if defined $::RD_TRACE;
9938 0         0 push @item, $item{__STRING2__}=$&;
9939            
9940            
9941 0 0       0 Parse::RecDescent::_trace(q{Trying action},
9942             Parse::RecDescent::_tracefirst($text),
9943             q{display_text},
9944             $tracelevel)
9945             if defined $::RD_TRACE;
9946            
9947            
9948 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
9949 0 0       0 unless (defined $_tok)
9950             {
9951 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9952             if defined $::RD_TRACE;
9953 0         0 last;
9954             }
9955 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9956             . $_tok . q{])},
9957             Parse::RecDescent::_tracefirst($text))
9958             if defined $::RD_TRACE;
9959 0         0 push @item, $_tok;
9960 0         0 $item{__ACTION1__}=$_tok;
9961            
9962            
9963            
9964 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['[' /[^\\]]+/i ']']<<},
9965             Parse::RecDescent::_tracefirst($text),
9966             q{display_text},
9967             $tracelevel)
9968             if defined $::RD_TRACE;
9969 0         0 $_matched = 1;
9970 0         0 last;
9971             }
9972            
9973            
9974 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
9975             {
9976            
9977            
9978 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9979 0 0       0 Parse::RecDescent::_trace(q{<>},
9980             Parse::RecDescent::_tracefirst($_[1]),
9981             q{display_text},
9982             $tracelevel)
9983             if defined $::RD_TRACE;
9984 0         0 return undef;
9985             }
9986 0 0 0     0 if (!defined($return) && defined($score))
9987             {
9988 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9989             q{display_text},
9990             $tracelevel)
9991             if defined $::RD_TRACE;
9992 0         0 $return = $score_return;
9993             }
9994 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9995 0 0       0 $return = $item[$#item] unless defined $return;
9996 0 0       0 if (defined $::RD_TRACE)
9997             {
9998 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9999             $return . q{])}, "",
10000             q{display_text},
10001             $tracelevel);
10002 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10003             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10004             Parse::RecDescent::_tracefirst($text),
10005             , q{display_text},
10006             $tracelevel)
10007             }
10008 0         0 $_[1] = $text;
10009 0         0 return $return;
10010             }
10011            
10012             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10013             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_list_def
10014             {
10015 0     0   0 my $thisparser = $_[0];
10016 1     1   4 use vars q{$tracelevel};
  1         1  
  1         248  
10017 0   0     0 local $tracelevel = ($tracelevel||0)+1;
10018 0         0 $ERRORS = 0;
10019 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_list_def"};
10020            
10021 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_list_def]},
10022             Parse::RecDescent::_tracefirst($_[1]),
10023             q{_alternation_1_of_production_1_of_rule_list_def},
10024             $tracelevel)
10025             if defined $::RD_TRACE;
10026            
10027            
10028 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
10029            
10030 0         0 my $score;
10031             my $score_return;
10032 0         0 my $_tok;
10033 0         0 my $return = undef;
10034 0         0 my $_matched=0;
10035 0         0 my $commit=0;
10036 0         0 my @item = ();
10037 0         0 my %item = ();
10038 0   0     0 my $repeating = defined($_[2]) && $_[2];
10039 0   0     0 my $_noactions = defined($_[3]) && $_[3];
10040 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
10041 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10042 0         0 my $text;
10043 0         0 my $lastsep="";
10044 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10045 0         0 $expectation->at($_[1]);
10046            
10047 0         0 my $thisline;
10048 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10049            
10050            
10051            
10052 0   0     0 while (!$_matched && !$commit)
10053             {
10054            
10055 0 0       0 Parse::RecDescent::_trace(q{Trying production: [static_list]},
10056             Parse::RecDescent::_tracefirst($_[1]),
10057             q{_alternation_1_of_production_1_of_rule_list_def},
10058             $tracelevel)
10059             if defined $::RD_TRACE;
10060 0         0 my $thisprod = $thisrule->{"prods"}[0];
10061 0         0 $text = $_[1];
10062 0         0 my $_savetext;
10063 0         0 @item = (q{_alternation_1_of_production_1_of_rule_list_def});
10064 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_list_def});
10065 0         0 my $repcount = 0;
10066            
10067            
10068 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [static_list]},
10069             Parse::RecDescent::_tracefirst($text),
10070             q{_alternation_1_of_production_1_of_rule_list_def},
10071             $tracelevel)
10072             if defined $::RD_TRACE;
10073 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         207  
  0         0  
10074 0         0 $expectation->is(q{})->at($text);
10075 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::static_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
10076             {
10077            
10078 0 0       0 Parse::RecDescent::_trace(q{<>},
10079             Parse::RecDescent::_tracefirst($text),
10080             q{_alternation_1_of_production_1_of_rule_list_def},
10081             $tracelevel)
10082             if defined $::RD_TRACE;
10083 0         0 $expectation->failed();
10084 0         0 last;
10085             }
10086 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [static_list]<< (return value: [}
10087             . $_tok . q{]},
10088            
10089             Parse::RecDescent::_tracefirst($text),
10090             q{_alternation_1_of_production_1_of_rule_list_def},
10091             $tracelevel)
10092             if defined $::RD_TRACE;
10093 0         0 $item{q{static_list}} = $_tok;
10094 0         0 push @item, $_tok;
10095            
10096             }
10097            
10098            
10099 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [static_list]<<},
10100             Parse::RecDescent::_tracefirst($text),
10101             q{_alternation_1_of_production_1_of_rule_list_def},
10102             $tracelevel)
10103             if defined $::RD_TRACE;
10104 0         0 $_matched = 1;
10105 0         0 last;
10106             }
10107            
10108            
10109 0   0     0 while (!$_matched && !$commit)
10110             {
10111            
10112 0 0       0 Parse::RecDescent::_trace(q{Trying production: [dynamic_list]},
10113             Parse::RecDescent::_tracefirst($_[1]),
10114             q{_alternation_1_of_production_1_of_rule_list_def},
10115             $tracelevel)
10116             if defined $::RD_TRACE;
10117 0         0 my $thisprod = $thisrule->{"prods"}[1];
10118 0         0 $text = $_[1];
10119 0         0 my $_savetext;
10120 0         0 @item = (q{_alternation_1_of_production_1_of_rule_list_def});
10121 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_list_def});
10122 0         0 my $repcount = 0;
10123            
10124            
10125 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [dynamic_list]},
10126             Parse::RecDescent::_tracefirst($text),
10127             q{_alternation_1_of_production_1_of_rule_list_def},
10128             $tracelevel)
10129             if defined $::RD_TRACE;
10130 1     1   7 if (1) { no strict qw{refs};
  1         1  
  1         319  
  0         0  
10131 0         0 $expectation->is(q{})->at($text);
10132 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::dynamic_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
10133             {
10134            
10135 0 0       0 Parse::RecDescent::_trace(q{<>},
10136             Parse::RecDescent::_tracefirst($text),
10137             q{_alternation_1_of_production_1_of_rule_list_def},
10138             $tracelevel)
10139             if defined $::RD_TRACE;
10140 0         0 $expectation->failed();
10141 0         0 last;
10142             }
10143 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [dynamic_list]<< (return value: [}
10144             . $_tok . q{]},
10145            
10146             Parse::RecDescent::_tracefirst($text),
10147             q{_alternation_1_of_production_1_of_rule_list_def},
10148             $tracelevel)
10149             if defined $::RD_TRACE;
10150 0         0 $item{q{dynamic_list}} = $_tok;
10151 0         0 push @item, $_tok;
10152            
10153             }
10154            
10155            
10156 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [dynamic_list]<<},
10157             Parse::RecDescent::_tracefirst($text),
10158             q{_alternation_1_of_production_1_of_rule_list_def},
10159             $tracelevel)
10160             if defined $::RD_TRACE;
10161 0         0 $_matched = 1;
10162 0         0 last;
10163             }
10164            
10165            
10166 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
10167             {
10168            
10169            
10170 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
10171 0 0       0 Parse::RecDescent::_trace(q{<>},
10172             Parse::RecDescent::_tracefirst($_[1]),
10173             q{_alternation_1_of_production_1_of_rule_list_def},
10174             $tracelevel)
10175             if defined $::RD_TRACE;
10176 0         0 return undef;
10177             }
10178 0 0 0     0 if (!defined($return) && defined($score))
10179             {
10180 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10181             q{_alternation_1_of_production_1_of_rule_list_def},
10182             $tracelevel)
10183             if defined $::RD_TRACE;
10184 0         0 $return = $score_return;
10185             }
10186 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
10187 0 0       0 $return = $item[$#item] unless defined $return;
10188 0 0       0 if (defined $::RD_TRACE)
10189             {
10190 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10191             $return . q{])}, "",
10192             q{_alternation_1_of_production_1_of_rule_list_def},
10193             $tracelevel);
10194 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10195             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10196             Parse::RecDescent::_tracefirst($text),
10197             , q{_alternation_1_of_production_1_of_rule_list_def},
10198             $tracelevel)
10199             }
10200 0         0 $_[1] = $text;
10201 0         0 return $return;
10202             }
10203            
10204             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10205             sub Parse::RecDescent::Text::FormBuilder::Parser::quoted_string
10206             {
10207 0     0   0 my $thisparser = $_[0];
10208 1     1   5 use vars q{$tracelevel};
  1         1  
  1         906  
10209 0   0     0 local $tracelevel = ($tracelevel||0)+1;
10210 0         0 $ERRORS = 0;
10211 0         0 my $thisrule = $thisparser->{"rules"}{"quoted_string"};
10212            
10213 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [quoted_string]},
10214             Parse::RecDescent::_tracefirst($_[1]),
10215             q{quoted_string},
10216             $tracelevel)
10217             if defined $::RD_TRACE;
10218            
10219            
10220 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
10221            
10222 0         0 my $score;
10223             my $score_return;
10224 0         0 my $_tok;
10225 0         0 my $return = undef;
10226 0         0 my $_matched=0;
10227 0         0 my $commit=0;
10228 0         0 my @item = ();
10229 0         0 my %item = ();
10230 0   0     0 my $repeating = defined($_[2]) && $_[2];
10231 0   0     0 my $_noactions = defined($_[3]) && $_[3];
10232 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
10233 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10234 0         0 my $text;
10235 0         0 my $lastsep="";
10236 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10237 0         0 $expectation->at($_[1]);
10238            
10239 0         0 my $thisline;
10240 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10241            
10242            
10243            
10244 0   0     0 while (!$_matched && !$commit)
10245             {
10246 0 0       0 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
10247 0 0       0 Parse::RecDescent::_trace(q{Trying production: [ ''' /(\\\\'|[^'])*/ ''']},
10248             Parse::RecDescent::_tracefirst($_[1]),
10249             q{quoted_string},
10250             $tracelevel)
10251             if defined $::RD_TRACE;
10252 0         0 my $thisprod = $thisrule->{"prods"}[0];
10253 0         0 $text = $_[1];
10254 0         0 my $_savetext;
10255 0         0 @item = (q{quoted_string});
10256 0         0 %item = (__RULE__ => q{quoted_string});
10257 0         0 my $repcount = 0;
10258            
10259            
10260            
10261            
10262 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
10263             Parse::RecDescent::_tracefirst($text),
10264             q{quoted_string},
10265             $tracelevel)
10266             if defined $::RD_TRACE;
10267 0         0 $_tok = do { my $oldskip = $skip; $skip=''; $oldskip };
  0         0  
  0         0  
  0         0  
10268 0 0       0 if (defined($_tok))
10269             {
10270 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
10271             . $_tok . q{])},
10272             Parse::RecDescent::_tracefirst($text))
10273             if defined $::RD_TRACE;
10274             }
10275             else
10276             {
10277 0 0       0 Parse::RecDescent::_trace(q{<>},
10278             Parse::RecDescent::_tracefirst($text))
10279             if defined $::RD_TRACE;
10280             }
10281            
10282 0 0       0 last unless defined $_tok;
10283 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
10284            
10285            
10286 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [''']},
10287             Parse::RecDescent::_tracefirst($text),
10288             q{quoted_string},
10289             $tracelevel)
10290             if defined $::RD_TRACE;
10291 0         0 $lastsep = "";
10292 0         0 $expectation->is(q{'''})->at($text);
10293            
10294            
10295 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  0 0 0     0  
  0   0     0  
  0         0  
10296             substr($text,0,length($_tok)) eq $_tok and
10297 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
10298             )
10299             {
10300            
10301 0         0 $expectation->failed();
10302 0 0       0 Parse::RecDescent::_trace(q{<>},
10303             Parse::RecDescent::_tracefirst($text))
10304             if defined $::RD_TRACE;
10305 0         0 last;
10306             }
10307 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10308             . $_tok . q{])},
10309             Parse::RecDescent::_tracefirst($text))
10310             if defined $::RD_TRACE;
10311 0         0 push @item, $item{__STRING1__}=$_tok;
10312            
10313            
10314 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/(\\\\'|[^'])*/]}, Parse::RecDescent::_tracefirst($text),
10315             q{quoted_string},
10316             $tracelevel)
10317             if defined $::RD_TRACE;
10318 0         0 $lastsep = "";
10319 0         0 $expectation->is(q{/(\\\\'|[^'])*/})->at($text);
10320            
10321            
10322 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:(\\'|[^'])*)//)
  0 0       0  
10323             {
10324            
10325 0         0 $expectation->failed();
10326 0 0       0 Parse::RecDescent::_trace(q{<>},
10327             Parse::RecDescent::_tracefirst($text))
10328             if defined $::RD_TRACE;
10329            
10330 0         0 last;
10331             }
10332 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10333             . $& . q{])},
10334             Parse::RecDescent::_tracefirst($text))
10335             if defined $::RD_TRACE;
10336 0         0 push @item, $item{__PATTERN1__}=$&;
10337            
10338            
10339 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [''']},
10340             Parse::RecDescent::_tracefirst($text),
10341             q{quoted_string},
10342             $tracelevel)
10343             if defined $::RD_TRACE;
10344 0         0 $lastsep = "";
10345 0         0 $expectation->is(q{'''})->at($text);
10346            
10347            
10348 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and
  0 0 0     0  
  0   0     0  
  0         0  
10349             substr($text,0,length($_tok)) eq $_tok and
10350 0         0 do { substr($text,0,length($_tok)) = ""; 1; }
  0         0  
10351             )
10352             {
10353            
10354 0         0 $expectation->failed();
10355 0 0       0 Parse::RecDescent::_trace(q{<>},
10356             Parse::RecDescent::_tracefirst($text))
10357             if defined $::RD_TRACE;
10358 0         0 last;
10359             }
10360 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10361             . $_tok . q{])},
10362             Parse::RecDescent::_tracefirst($text))
10363             if defined $::RD_TRACE;
10364 0         0 push @item, $item{__STRING2__}=$_tok;
10365            
10366            
10367 0 0       0 Parse::RecDescent::_trace(q{Trying action},
10368             Parse::RecDescent::_tracefirst($text),
10369             q{quoted_string},
10370             $tracelevel)
10371             if defined $::RD_TRACE;
10372            
10373            
10374 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[3] =~ s/\\'/'/g; $item[3] };
  0         0  
  0         0  
10375 0 0       0 unless (defined $_tok)
10376             {
10377 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10378             if defined $::RD_TRACE;
10379 0         0 last;
10380             }
10381 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10382             . $_tok . q{])},
10383             Parse::RecDescent::_tracefirst($text))
10384             if defined $::RD_TRACE;
10385 0         0 push @item, $_tok;
10386 0         0 $item{__ACTION1__}=$_tok;
10387            
10388            
10389            
10390 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [ ''' /(\\\\'|[^'])*/ ''']<<},
10391             Parse::RecDescent::_tracefirst($text),
10392             q{quoted_string},
10393             $tracelevel)
10394             if defined $::RD_TRACE;
10395 0         0 $_matched = 1;
10396 0         0 last;
10397             }
10398            
10399            
10400 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
10401             {
10402            
10403            
10404 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
10405 0 0       0 Parse::RecDescent::_trace(q{<>},
10406             Parse::RecDescent::_tracefirst($_[1]),
10407             q{quoted_string},
10408             $tracelevel)
10409             if defined $::RD_TRACE;
10410 0         0 return undef;
10411             }
10412 0 0 0     0 if (!defined($return) && defined($score))
10413             {
10414 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10415             q{quoted_string},
10416             $tracelevel)
10417             if defined $::RD_TRACE;
10418 0         0 $return = $score_return;
10419             }
10420 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
10421 0 0       0 $return = $item[$#item] unless defined $return;
10422 0 0       0 if (defined $::RD_TRACE)
10423             {
10424 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10425             $return . q{])}, "",
10426             q{quoted_string},
10427             $tracelevel);
10428 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10429             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10430             Parse::RecDescent::_tracefirst($text),
10431             , q{quoted_string},
10432             $tracelevel)
10433             }
10434 0         0 $_[1] = $text;
10435 0         0 return $return;
10436             }
10437            
10438             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10439             sub Parse::RecDescent::Text::FormBuilder::Parser::note
10440             {
10441 12     12   13 my $thisparser = $_[0];
10442 1     1   5 use vars q{$tracelevel};
  1         1  
  1         336  
10443 12   50     16 local $tracelevel = ($tracelevel||0)+1;
10444 12         10 $ERRORS = 0;
10445 12         17 my $thisrule = $thisparser->{"rules"}{"note"};
10446            
10447 12 50       19 Parse::RecDescent::_trace(q{Trying rule: [note]},
10448             Parse::RecDescent::_tracefirst($_[1]),
10449             q{note},
10450             $tracelevel)
10451             if defined $::RD_TRACE;
10452            
10453            
10454 12         10 my $err_at = @{$thisparser->{errors}};
  12         12  
10455            
10456 12         11 my $score;
10457             my $score_return;
10458 0         0 my $_tok;
10459 12         10 my $return = undef;
10460 12         8 my $_matched=0;
10461 12         9 my $commit=0;
10462 12         12 my @item = ();
10463 12         12 my %item = ();
10464 12   33     22 my $repeating = defined($_[2]) && $_[2];
10465 12   33     22 my $_noactions = defined($_[3]) && $_[3];
10466 12 50       18 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  12         7  
  12         13  
10467 12 50       22 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10468 12         12 my $text;
10469 12         9 my $lastsep="";
10470 12         21 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10471 12         181 $expectation->at($_[1]);
10472            
10473 12         25 my $thisline;
10474 12         29 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10475            
10476            
10477            
10478 12   33     88 while (!$_matched && !$commit)
10479             {
10480            
10481 12 50       17 Parse::RecDescent::_trace(q{Trying production: ['!note' block]},
10482             Parse::RecDescent::_tracefirst($_[1]),
10483             q{note},
10484             $tracelevel)
10485             if defined $::RD_TRACE;
10486 12         11 my $thisprod = $thisrule->{"prods"}[0];
10487 12         12 $text = $_[1];
10488 12         9 my $_savetext;
10489 12         13 @item = (q{note});
10490 12         17 %item = (__RULE__ => q{note});
10491 12         9 my $repcount = 0;
10492            
10493            
10494 12 50       17 Parse::RecDescent::_trace(q{Trying terminal: ['!note']},
10495             Parse::RecDescent::_tracefirst($text),
10496             q{note},
10497             $tracelevel)
10498             if defined $::RD_TRACE;
10499 12         10 $lastsep = "";
10500 12         17 $expectation->is(q{})->at($text);
10501            
10502            
10503 12 100 33     79 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\!note//)
  12 50       80  
10504             {
10505            
10506 12         15 $expectation->failed();
10507 12 50       31 Parse::RecDescent::_trace(qq{<>},
10508             Parse::RecDescent::_tracefirst($text))
10509             if defined $::RD_TRACE;
10510 12         19 last;
10511             }
10512 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10513             . $& . q{])},
10514             Parse::RecDescent::_tracefirst($text))
10515             if defined $::RD_TRACE;
10516 0         0 push @item, $item{__STRING1__}=$&;
10517            
10518            
10519 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [block]},
10520             Parse::RecDescent::_tracefirst($text),
10521             q{note},
10522             $tracelevel)
10523             if defined $::RD_TRACE;
10524 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         400  
  0         0  
10525 0         0 $expectation->is(q{block})->at($text);
10526 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::block($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
10527             {
10528            
10529 0 0       0 Parse::RecDescent::_trace(q{<>},
10530             Parse::RecDescent::_tracefirst($text),
10531             q{note},
10532             $tracelevel)
10533             if defined $::RD_TRACE;
10534 0         0 $expectation->failed();
10535 0         0 last;
10536             }
10537 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [block]<< (return value: [}
10538             . $_tok . q{]},
10539            
10540             Parse::RecDescent::_tracefirst($text),
10541             q{note},
10542             $tracelevel)
10543             if defined $::RD_TRACE;
10544 0         0 $item{q{block}} = $_tok;
10545 0         0 push @item, $_tok;
10546            
10547             }
10548            
10549 0 0       0 Parse::RecDescent::_trace(q{Trying action},
10550             Parse::RecDescent::_tracefirst($text),
10551             q{note},
10552             $tracelevel)
10553             if defined $::RD_TRACE;
10554            
10555            
10556 0 0       0 $_tok = ($_noactions) ? 0 : do {
10557 0         0 (my $note = $item[2]) =~ s/^{\s*|\s*}$//g;
10558 0         0 push @lines, [ 'note', $note ];
10559             };
10560 0 0       0 unless (defined $_tok)
10561             {
10562 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10563             if defined $::RD_TRACE;
10564 0         0 last;
10565             }
10566 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10567             . $_tok . q{])},
10568             Parse::RecDescent::_tracefirst($text))
10569             if defined $::RD_TRACE;
10570 0         0 push @item, $_tok;
10571 0         0 $item{__ACTION1__}=$_tok;
10572            
10573            
10574            
10575 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['!note' block]<<},
10576             Parse::RecDescent::_tracefirst($text),
10577             q{note},
10578             $tracelevel)
10579             if defined $::RD_TRACE;
10580 0         0 $_matched = 1;
10581 0         0 last;
10582             }
10583            
10584            
10585 12 50 33     53 unless ( $_matched || defined($return) || defined($score) )
      33        
10586             {
10587            
10588            
10589 12         14 $_[1] = $text; # NOT SURE THIS IS NEEDED
10590 12 50       15 Parse::RecDescent::_trace(q{<>},
10591             Parse::RecDescent::_tracefirst($_[1]),
10592             q{note},
10593             $tracelevel)
10594             if defined $::RD_TRACE;
10595 12         44 return undef;
10596             }
10597 0 0 0     0 if (!defined($return) && defined($score))
10598             {
10599 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10600             q{note},
10601             $tracelevel)
10602             if defined $::RD_TRACE;
10603 0         0 $return = $score_return;
10604             }
10605 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
10606 0 0       0 $return = $item[$#item] unless defined $return;
10607 0 0       0 if (defined $::RD_TRACE)
10608             {
10609 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10610             $return . q{])}, "",
10611             q{note},
10612             $tracelevel);
10613 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10614             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10615             Parse::RecDescent::_tracefirst($text),
10616             , q{note},
10617             $tracelevel)
10618             }
10619 0         0 $_[1] = $text;
10620 0         0 return $return;
10621             }
10622            
10623             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10624             sub Parse::RecDescent::Text::FormBuilder::Parser::pattern
10625             {
10626 0     0   0 my $thisparser = $_[0];
10627 1     1   4 use vars q{$tracelevel};
  1         2  
  1         538  
10628 0   0     0 local $tracelevel = ($tracelevel||0)+1;
10629 0         0 $ERRORS = 0;
10630 0         0 my $thisrule = $thisparser->{"rules"}{"pattern"};
10631            
10632 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [pattern]},
10633             Parse::RecDescent::_tracefirst($_[1]),
10634             q{pattern},
10635             $tracelevel)
10636             if defined $::RD_TRACE;
10637            
10638            
10639 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
10640            
10641 0         0 my $score;
10642             my $score_return;
10643 0         0 my $_tok;
10644 0         0 my $return = undef;
10645 0         0 my $_matched=0;
10646 0         0 my $commit=0;
10647 0         0 my @item = ();
10648 0         0 my %item = ();
10649 0   0     0 my $repeating = defined($_[2]) && $_[2];
10650 0   0     0 my $_noactions = defined($_[3]) && $_[3];
10651 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
10652 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10653 0         0 my $text;
10654 0         0 my $lastsep="";
10655 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10656 0         0 $expectation->at($_[1]);
10657            
10658 0         0 my $thisline;
10659 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10660            
10661            
10662            
10663 0   0     0 while (!$_matched && !$commit)
10664             {
10665            
10666 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/.*/]},
10667             Parse::RecDescent::_tracefirst($_[1]),
10668             q{pattern},
10669             $tracelevel)
10670             if defined $::RD_TRACE;
10671 0         0 my $thisprod = $thisrule->{"prods"}[0];
10672 0         0 $text = $_[1];
10673 0         0 my $_savetext;
10674 0         0 @item = (q{pattern});
10675 0         0 %item = (__RULE__ => q{pattern});
10676 0         0 my $repcount = 0;
10677            
10678            
10679 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
10680             q{pattern},
10681             $tracelevel)
10682             if defined $::RD_TRACE;
10683 0         0 $lastsep = "";
10684 0         0 $expectation->is(q{})->at($text);
10685            
10686            
10687 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
10688             {
10689            
10690 0         0 $expectation->failed();
10691 0 0       0 Parse::RecDescent::_trace(q{<>},
10692             Parse::RecDescent::_tracefirst($text))
10693             if defined $::RD_TRACE;
10694            
10695 0         0 last;
10696             }
10697 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10698             . $& . q{])},
10699             Parse::RecDescent::_tracefirst($text))
10700             if defined $::RD_TRACE;
10701 0         0 push @item, $item{__PATTERN1__}=$&;
10702            
10703            
10704            
10705 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/.*/]<<},
10706             Parse::RecDescent::_tracefirst($text),
10707             q{pattern},
10708             $tracelevel)
10709             if defined $::RD_TRACE;
10710 0         0 $_matched = 1;
10711 0         0 last;
10712             }
10713            
10714            
10715 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
10716             {
10717            
10718            
10719 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
10720 0 0       0 Parse::RecDescent::_trace(q{<>},
10721             Parse::RecDescent::_tracefirst($_[1]),
10722             q{pattern},
10723             $tracelevel)
10724             if defined $::RD_TRACE;
10725 0         0 return undef;
10726             }
10727 0 0 0     0 if (!defined($return) && defined($score))
10728             {
10729 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10730             q{pattern},
10731             $tracelevel)
10732             if defined $::RD_TRACE;
10733 0         0 $return = $score_return;
10734             }
10735 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
10736 0 0       0 $return = $item[$#item] unless defined $return;
10737 0 0       0 if (defined $::RD_TRACE)
10738             {
10739 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10740             $return . q{])}, "",
10741             q{pattern},
10742             $tracelevel);
10743 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10744             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10745             Parse::RecDescent::_tracefirst($text),
10746             , q{pattern},
10747             $tracelevel)
10748             }
10749 0         0 $_[1] = $text;
10750 0         0 return $return;
10751             }
10752            
10753             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10754             sub Parse::RecDescent::Text::FormBuilder::Parser::comment
10755             {
10756 9     9   10 my $thisparser = $_[0];
10757 1     1   4 use vars q{$tracelevel};
  1         1  
  1         599  
10758 9   50     19 local $tracelevel = ($tracelevel||0)+1;
10759 9         6 $ERRORS = 0;
10760 9         11 my $thisrule = $thisparser->{"rules"}{"comment"};
10761            
10762 9 50       15 Parse::RecDescent::_trace(q{Trying rule: [comment]},
10763             Parse::RecDescent::_tracefirst($_[1]),
10764             q{comment},
10765             $tracelevel)
10766             if defined $::RD_TRACE;
10767            
10768            
10769 9         7 my $err_at = @{$thisparser->{errors}};
  9         12  
10770            
10771 9         9 my $score;
10772             my $score_return;
10773 0         0 my $_tok;
10774 9         8 my $return = undef;
10775 9         9 my $_matched=0;
10776 9         9 my $commit=0;
10777 9         9 my @item = ();
10778 9         9 my %item = ();
10779 9   33     20 my $repeating = defined($_[2]) && $_[2];
10780 9   33     21 my $_noactions = defined($_[3]) && $_[3];
10781 9 50       13 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  9         7  
  9         12  
10782 9 50       17 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10783 9         8 my $text;
10784 9         13 my $lastsep="";
10785 9         19 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10786 9         156 $expectation->at($_[1]);
10787            
10788 9         22 my $thisline;
10789 9         24 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10790            
10791            
10792            
10793 9   33     55 while (!$_matched && !$commit)
10794             {
10795            
10796 9 50       13 Parse::RecDescent::_trace(q{Trying production: ['#' /.*/]},
10797             Parse::RecDescent::_tracefirst($_[1]),
10798             q{comment},
10799             $tracelevel)
10800             if defined $::RD_TRACE;
10801 9         10 my $thisprod = $thisrule->{"prods"}[0];
10802 9         10 $text = $_[1];
10803 9         7 my $_savetext;
10804 9         30 @item = (q{comment});
10805 9         13 %item = (__RULE__ => q{comment});
10806 9         7 my $repcount = 0;
10807            
10808            
10809 9 50       15 Parse::RecDescent::_trace(q{Trying terminal: ['#']},
10810             Parse::RecDescent::_tracefirst($text),
10811             q{comment},
10812             $tracelevel)
10813             if defined $::RD_TRACE;
10814 9         7 $lastsep = "";
10815 9         22 $expectation->is(q{})->at($text);
10816            
10817            
10818 9 50 33     74 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\#//)
  9 50       55  
10819             {
10820            
10821 9         14 $expectation->failed();
10822 9 50       30 Parse::RecDescent::_trace(qq{<>},
10823             Parse::RecDescent::_tracefirst($text))
10824             if defined $::RD_TRACE;
10825 9         10 last;
10826             }
10827 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10828             . $& . q{])},
10829             Parse::RecDescent::_tracefirst($text))
10830             if defined $::RD_TRACE;
10831 0         0 push @item, $item{__STRING1__}=$&;
10832            
10833            
10834 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text),
10835             q{comment},
10836             $tracelevel)
10837             if defined $::RD_TRACE;
10838 0         0 $lastsep = "";
10839 0         0 $expectation->is(q{/.*/})->at($text);
10840            
10841            
10842 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//)
  0 0       0  
10843             {
10844            
10845 0         0 $expectation->failed();
10846 0 0       0 Parse::RecDescent::_trace(q{<>},
10847             Parse::RecDescent::_tracefirst($text))
10848             if defined $::RD_TRACE;
10849            
10850 0         0 last;
10851             }
10852 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10853             . $& . q{])},
10854             Parse::RecDescent::_tracefirst($text))
10855             if defined $::RD_TRACE;
10856 0         0 push @item, $item{__PATTERN1__}=$&;
10857            
10858            
10859            
10860 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['#' /.*/]<<},
10861             Parse::RecDescent::_tracefirst($text),
10862             q{comment},
10863             $tracelevel)
10864             if defined $::RD_TRACE;
10865 0         0 $_matched = 1;
10866 0         0 last;
10867             }
10868            
10869            
10870 9 50 33     47 unless ( $_matched || defined($return) || defined($score) )
      33        
10871             {
10872            
10873            
10874 9         8 $_[1] = $text; # NOT SURE THIS IS NEEDED
10875 9 50       13 Parse::RecDescent::_trace(q{<>},
10876             Parse::RecDescent::_tracefirst($_[1]),
10877             q{comment},
10878             $tracelevel)
10879             if defined $::RD_TRACE;
10880 9         33 return undef;
10881             }
10882 0 0 0     0 if (!defined($return) && defined($score))
10883             {
10884 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10885             q{comment},
10886             $tracelevel)
10887             if defined $::RD_TRACE;
10888 0         0 $return = $score_return;
10889             }
10890 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
10891 0 0       0 $return = $item[$#item] unless defined $return;
10892 0 0       0 if (defined $::RD_TRACE)
10893             {
10894 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10895             $return . q{])}, "",
10896             q{comment},
10897             $tracelevel);
10898 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10899             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10900             Parse::RecDescent::_tracefirst($text),
10901             , q{comment},
10902             $tracelevel)
10903             }
10904 0         0 $_[1] = $text;
10905 0         0 return $return;
10906             }
10907            
10908             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10909             sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_option
10910             {
10911 0     0   0 my $thisparser = $_[0];
10912 1     1   5 use vars q{$tracelevel};
  1         1  
  1         237  
10913 0   0     0 local $tracelevel = ($tracelevel||0)+1;
10914 0         0 $ERRORS = 0;
10915 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_option"};
10916            
10917 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_option]},
10918             Parse::RecDescent::_tracefirst($_[1]),
10919             q{_alternation_1_of_production_1_of_rule_option},
10920             $tracelevel)
10921             if defined $::RD_TRACE;
10922            
10923            
10924 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
10925            
10926 0         0 my $score;
10927             my $score_return;
10928 0         0 my $_tok;
10929 0         0 my $return = undef;
10930 0         0 my $_matched=0;
10931 0         0 my $commit=0;
10932 0         0 my @item = ();
10933 0         0 my %item = ();
10934 0   0     0 my $repeating = defined($_[2]) && $_[2];
10935 0   0     0 my $_noactions = defined($_[3]) && $_[3];
10936 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
10937 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10938 0         0 my $text;
10939 0         0 my $lastsep="";
10940 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
10941 0         0 $expectation->at($_[1]);
10942            
10943 0         0 my $thisline;
10944 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10945            
10946            
10947            
10948 0   0     0 while (!$_matched && !$commit)
10949             {
10950            
10951 0 0       0 Parse::RecDescent::_trace(q{Trying production: [simple_multiword]},
10952             Parse::RecDescent::_tracefirst($_[1]),
10953             q{_alternation_1_of_production_1_of_rule_option},
10954             $tracelevel)
10955             if defined $::RD_TRACE;
10956 0         0 my $thisprod = $thisrule->{"prods"}[0];
10957 0         0 $text = $_[1];
10958 0         0 my $_savetext;
10959 0         0 @item = (q{_alternation_1_of_production_1_of_rule_option});
10960 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_option});
10961 0         0 my $repcount = 0;
10962            
10963            
10964 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [simple_multiword]},
10965             Parse::RecDescent::_tracefirst($text),
10966             q{_alternation_1_of_production_1_of_rule_option},
10967             $tracelevel)
10968             if defined $::RD_TRACE;
10969 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         200  
  0         0  
10970 0         0 $expectation->is(q{})->at($text);
10971 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::simple_multiword($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
10972             {
10973            
10974 0 0       0 Parse::RecDescent::_trace(q{<>},
10975             Parse::RecDescent::_tracefirst($text),
10976             q{_alternation_1_of_production_1_of_rule_option},
10977             $tracelevel)
10978             if defined $::RD_TRACE;
10979 0         0 $expectation->failed();
10980 0         0 last;
10981             }
10982 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [simple_multiword]<< (return value: [}
10983             . $_tok . q{]},
10984            
10985             Parse::RecDescent::_tracefirst($text),
10986             q{_alternation_1_of_production_1_of_rule_option},
10987             $tracelevel)
10988             if defined $::RD_TRACE;
10989 0         0 $item{q{simple_multiword}} = $_tok;
10990 0         0 push @item, $_tok;
10991            
10992             }
10993            
10994            
10995 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [simple_multiword]<<},
10996             Parse::RecDescent::_tracefirst($text),
10997             q{_alternation_1_of_production_1_of_rule_option},
10998             $tracelevel)
10999             if defined $::RD_TRACE;
11000 0         0 $_matched = 1;
11001 0         0 last;
11002             }
11003            
11004            
11005 0   0     0 while (!$_matched && !$commit)
11006             {
11007            
11008 0 0       0 Parse::RecDescent::_trace(q{Trying production: [value]},
11009             Parse::RecDescent::_tracefirst($_[1]),
11010             q{_alternation_1_of_production_1_of_rule_option},
11011             $tracelevel)
11012             if defined $::RD_TRACE;
11013 0         0 my $thisprod = $thisrule->{"prods"}[1];
11014 0         0 $text = $_[1];
11015 0         0 my $_savetext;
11016 0         0 @item = (q{_alternation_1_of_production_1_of_rule_option});
11017 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_option});
11018 0         0 my $repcount = 0;
11019            
11020            
11021 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [value]},
11022             Parse::RecDescent::_tracefirst($text),
11023             q{_alternation_1_of_production_1_of_rule_option},
11024             $tracelevel)
11025             if defined $::RD_TRACE;
11026 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         193  
  0         0  
11027 0         0 $expectation->is(q{})->at($text);
11028 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::value($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
11029             {
11030            
11031 0 0       0 Parse::RecDescent::_trace(q{<>},
11032             Parse::RecDescent::_tracefirst($text),
11033             q{_alternation_1_of_production_1_of_rule_option},
11034             $tracelevel)
11035             if defined $::RD_TRACE;
11036 0         0 $expectation->failed();
11037 0         0 last;
11038             }
11039 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [}
11040             . $_tok . q{]},
11041            
11042             Parse::RecDescent::_tracefirst($text),
11043             q{_alternation_1_of_production_1_of_rule_option},
11044             $tracelevel)
11045             if defined $::RD_TRACE;
11046 0         0 $item{q{value}} = $_tok;
11047 0         0 push @item, $_tok;
11048            
11049             }
11050            
11051            
11052 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [value]<<},
11053             Parse::RecDescent::_tracefirst($text),
11054             q{_alternation_1_of_production_1_of_rule_option},
11055             $tracelevel)
11056             if defined $::RD_TRACE;
11057 0         0 $_matched = 1;
11058 0         0 last;
11059             }
11060            
11061            
11062 0   0     0 while (!$_matched && !$commit)
11063             {
11064            
11065 0 0       0 Parse::RecDescent::_trace(q{Trying production: [quoted_string]},
11066             Parse::RecDescent::_tracefirst($_[1]),
11067             q{_alternation_1_of_production_1_of_rule_option},
11068             $tracelevel)
11069             if defined $::RD_TRACE;
11070 0         0 my $thisprod = $thisrule->{"prods"}[2];
11071 0         0 $text = $_[1];
11072 0         0 my $_savetext;
11073 0         0 @item = (q{_alternation_1_of_production_1_of_rule_option});
11074 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_option});
11075 0         0 my $repcount = 0;
11076            
11077            
11078 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [quoted_string]},
11079             Parse::RecDescent::_tracefirst($text),
11080             q{_alternation_1_of_production_1_of_rule_option},
11081             $tracelevel)
11082             if defined $::RD_TRACE;
11083 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         311  
  0         0  
11084 0         0 $expectation->is(q{})->at($text);
11085 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::quoted_string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
11086             {
11087            
11088 0 0       0 Parse::RecDescent::_trace(q{<>},
11089             Parse::RecDescent::_tracefirst($text),
11090             q{_alternation_1_of_production_1_of_rule_option},
11091             $tracelevel)
11092             if defined $::RD_TRACE;
11093 0         0 $expectation->failed();
11094 0         0 last;
11095             }
11096 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [quoted_string]<< (return value: [}
11097             . $_tok . q{]},
11098            
11099             Parse::RecDescent::_tracefirst($text),
11100             q{_alternation_1_of_production_1_of_rule_option},
11101             $tracelevel)
11102             if defined $::RD_TRACE;
11103 0         0 $item{q{quoted_string}} = $_tok;
11104 0         0 push @item, $_tok;
11105            
11106             }
11107            
11108            
11109 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [quoted_string]<<},
11110             Parse::RecDescent::_tracefirst($text),
11111             q{_alternation_1_of_production_1_of_rule_option},
11112             $tracelevel)
11113             if defined $::RD_TRACE;
11114 0         0 $_matched = 1;
11115 0         0 last;
11116             }
11117            
11118            
11119 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
11120             {
11121            
11122            
11123 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11124 0 0       0 Parse::RecDescent::_trace(q{<>},
11125             Parse::RecDescent::_tracefirst($_[1]),
11126             q{_alternation_1_of_production_1_of_rule_option},
11127             $tracelevel)
11128             if defined $::RD_TRACE;
11129 0         0 return undef;
11130             }
11131 0 0 0     0 if (!defined($return) && defined($score))
11132             {
11133 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11134             q{_alternation_1_of_production_1_of_rule_option},
11135             $tracelevel)
11136             if defined $::RD_TRACE;
11137 0         0 $return = $score_return;
11138             }
11139 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
11140 0 0       0 $return = $item[$#item] unless defined $return;
11141 0 0       0 if (defined $::RD_TRACE)
11142             {
11143 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11144             $return . q{])}, "",
11145             q{_alternation_1_of_production_1_of_rule_option},
11146             $tracelevel);
11147 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11148             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11149             Parse::RecDescent::_tracefirst($text),
11150             , q{_alternation_1_of_production_1_of_rule_option},
11151             $tracelevel)
11152             }
11153 0         0 $_[1] = $text;
11154 0         0 return $return;
11155             }
11156            
11157             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11158             sub Parse::RecDescent::Text::FormBuilder::Parser::block
11159             {
11160 0     0   0 my $thisparser = $_[0];
11161 1     1   4 use vars q{$tracelevel};
  1         1  
  1         871  
11162 0   0     0 local $tracelevel = ($tracelevel||0)+1;
11163 0         0 $ERRORS = 0;
11164 0         0 my $thisrule = $thisparser->{"rules"}{"block"};
11165            
11166 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [block]},
11167             Parse::RecDescent::_tracefirst($_[1]),
11168             q{block},
11169             $tracelevel)
11170             if defined $::RD_TRACE;
11171            
11172            
11173 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
11174            
11175 0         0 my $score;
11176             my $score_return;
11177 0         0 my $_tok;
11178 0         0 my $return = undef;
11179 0         0 my $_matched=0;
11180 0         0 my $commit=0;
11181 0         0 my @item = ();
11182 0         0 my %item = ();
11183 0   0     0 my $repeating = defined($_[2]) && $_[2];
11184 0   0     0 my $_noactions = defined($_[3]) && $_[3];
11185 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
11186 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11187 0         0 my $text;
11188 0         0 my $lastsep="";
11189 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
11190 0         0 $expectation->at($_[1]);
11191            
11192 0         0 my $thisline;
11193 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11194            
11195            
11196            
11197 0   0     0 while (!$_matched && !$commit)
11198             {
11199 0 0       0 local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip;
11200 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['\{' block_content '\}']},
11201             Parse::RecDescent::_tracefirst($_[1]),
11202             q{block},
11203             $tracelevel)
11204             if defined $::RD_TRACE;
11205 0         0 my $thisprod = $thisrule->{"prods"}[0];
11206 0         0 $text = $_[1];
11207 0         0 my $_savetext;
11208 0         0 @item = (q{block});
11209 0         0 %item = (__RULE__ => q{block});
11210 0         0 my $repcount = 0;
11211            
11212            
11213 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
11214             Parse::RecDescent::_tracefirst($text),
11215             q{block},
11216             $tracelevel)
11217             if defined $::RD_TRACE;
11218 0         0 $lastsep = "";
11219 0         0 $expectation->is(q{})->at($text);
11220            
11221            
11222 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  0 0       0  
11223             {
11224            
11225 0         0 $expectation->failed();
11226 0 0       0 Parse::RecDescent::_trace(qq{<>},
11227             Parse::RecDescent::_tracefirst($text))
11228             if defined $::RD_TRACE;
11229 0         0 last;
11230             }
11231 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11232             . $& . q{])},
11233             Parse::RecDescent::_tracefirst($text))
11234             if defined $::RD_TRACE;
11235 0         0 push @item, $item{__STRING1__}=$&;
11236            
11237            
11238            
11239            
11240 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
11241             Parse::RecDescent::_tracefirst($text),
11242             q{block},
11243             $tracelevel)
11244             if defined $::RD_TRACE;
11245 0         0 $_tok = do { my $oldskip = $skip; $skip=''; $oldskip };
  0         0  
  0         0  
  0         0  
11246 0 0       0 if (defined($_tok))
11247             {
11248 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
11249             . $_tok . q{])},
11250             Parse::RecDescent::_tracefirst($text))
11251             if defined $::RD_TRACE;
11252             }
11253             else
11254             {
11255 0 0       0 Parse::RecDescent::_trace(q{<>},
11256             Parse::RecDescent::_tracefirst($text))
11257             if defined $::RD_TRACE;
11258             }
11259            
11260 0 0       0 last unless defined $_tok;
11261 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
11262            
11263            
11264 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [block_content]},
11265             Parse::RecDescent::_tracefirst($text),
11266             q{block},
11267             $tracelevel)
11268             if defined $::RD_TRACE;
11269 0         0 $expectation->is(q{block_content})->at($text);
11270            
11271 0 0       0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Text::FormBuilder::Parser::block_content, 1, 100000000, $_noactions,$expectation,undef)))
11272             {
11273 0 0       0 Parse::RecDescent::_trace(q{<>},
11274             Parse::RecDescent::_tracefirst($text),
11275             q{block},
11276             $tracelevel)
11277             if defined $::RD_TRACE;
11278 0         0 last;
11279             }
11280 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [block_content]<< (}
11281             . @$_tok . q{ times)},
11282            
11283             Parse::RecDescent::_tracefirst($text),
11284             q{block},
11285             $tracelevel)
11286             if defined $::RD_TRACE;
11287 0         0 $item{q{block_content(s)}} = $_tok;
11288 0         0 push @item, $_tok;
11289            
11290            
11291            
11292 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
11293             Parse::RecDescent::_tracefirst($text),
11294             q{block},
11295             $tracelevel)
11296             if defined $::RD_TRACE;
11297 0         0 $lastsep = "";
11298 0         0 $expectation->is(q{'\}'})->at($text);
11299            
11300            
11301 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  0 0       0  
11302             {
11303            
11304 0         0 $expectation->failed();
11305 0 0       0 Parse::RecDescent::_trace(qq{<>},
11306             Parse::RecDescent::_tracefirst($text))
11307             if defined $::RD_TRACE;
11308 0         0 last;
11309             }
11310 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11311             . $& . q{])},
11312             Parse::RecDescent::_tracefirst($text))
11313             if defined $::RD_TRACE;
11314 0         0 push @item, $item{__STRING2__}=$&;
11315            
11316            
11317 0 0       0 Parse::RecDescent::_trace(q{Trying action},
11318             Parse::RecDescent::_tracefirst($text),
11319             q{block},
11320             $tracelevel)
11321             if defined $::RD_TRACE;
11322            
11323            
11324 0 0       0 $_tok = ($_noactions) ? 0 : do {
11325 0         0 '{' . join('', @{ $item[3] }) . '}';
  0         0  
11326             };
11327 0 0       0 unless (defined $_tok)
11328             {
11329 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
11330             if defined $::RD_TRACE;
11331 0         0 last;
11332             }
11333 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
11334             . $_tok . q{])},
11335             Parse::RecDescent::_tracefirst($text))
11336             if defined $::RD_TRACE;
11337 0         0 push @item, $_tok;
11338 0         0 $item{__ACTION1__}=$_tok;
11339            
11340            
11341            
11342 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['\{' block_content '\}']<<},
11343             Parse::RecDescent::_tracefirst($text),
11344             q{block},
11345             $tracelevel)
11346             if defined $::RD_TRACE;
11347 0         0 $_matched = 1;
11348 0         0 last;
11349             }
11350            
11351            
11352 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
11353             {
11354            
11355            
11356 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11357 0 0       0 Parse::RecDescent::_trace(q{<>},
11358             Parse::RecDescent::_tracefirst($_[1]),
11359             q{block},
11360             $tracelevel)
11361             if defined $::RD_TRACE;
11362 0         0 return undef;
11363             }
11364 0 0 0     0 if (!defined($return) && defined($score))
11365             {
11366 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11367             q{block},
11368             $tracelevel)
11369             if defined $::RD_TRACE;
11370 0         0 $return = $score_return;
11371             }
11372 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
11373 0 0       0 $return = $item[$#item] unless defined $return;
11374 0 0       0 if (defined $::RD_TRACE)
11375             {
11376 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11377             $return . q{])}, "",
11378             q{block},
11379             $tracelevel);
11380 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11381             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11382             Parse::RecDescent::_tracefirst($text),
11383             , q{block},
11384             $tracelevel)
11385             }
11386 0         0 $_[1] = $text;
11387 0         0 return $return;
11388             }
11389            
11390             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11391             sub Parse::RecDescent::Text::FormBuilder::Parser::static_list
11392             {
11393 0     0   0 my $thisparser = $_[0];
11394 1     1   4 use vars q{$tracelevel};
  1         2  
  1         374  
11395 0   0     0 local $tracelevel = ($tracelevel||0)+1;
11396 0         0 $ERRORS = 0;
11397 0         0 my $thisrule = $thisparser->{"rules"}{"static_list"};
11398            
11399 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [static_list]},
11400             Parse::RecDescent::_tracefirst($_[1]),
11401             q{static_list},
11402             $tracelevel)
11403             if defined $::RD_TRACE;
11404            
11405            
11406 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
11407            
11408 0         0 my $score;
11409             my $score_return;
11410 0         0 my $_tok;
11411 0         0 my $return = undef;
11412 0         0 my $_matched=0;
11413 0         0 my $commit=0;
11414 0         0 my @item = ();
11415 0         0 my %item = ();
11416 0   0     0 my $repeating = defined($_[2]) && $_[2];
11417 0   0     0 my $_noactions = defined($_[3]) && $_[3];
11418 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
11419 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11420 0         0 my $text;
11421 0         0 my $lastsep="";
11422 0         0 my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
11423 0         0 $expectation->at($_[1]);
11424            
11425 0         0 my $thisline;
11426 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11427            
11428            
11429            
11430 0   0     0 while (!$_matched && !$commit)
11431             {
11432            
11433 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['\{' /,?/ '\}']},
11434             Parse::RecDescent::_tracefirst($_[1]),
11435             q{static_list},
11436             $tracelevel)
11437             if defined $::RD_TRACE;
11438 0         0 my $thisprod = $thisrule->{"prods"}[0];
11439 0         0 $text = $_[1];
11440 0         0 my $_savetext;
11441 0         0 @item = (q{static_list});
11442 0         0 %item = (__RULE__ => q{static_list});
11443 0         0 my $repcount = 0;
11444            
11445            
11446 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
11447             Parse::RecDescent::_tracefirst($text),
11448             q{static_list},
11449             $tracelevel)
11450             if defined $::RD_TRACE;
11451 0         0 $lastsep = "";
11452 0         0 $expectation->is(q{})->at($text);
11453            
11454            
11455 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  0 0       0  
11456             {
11457            
11458 0         0 $expectation->failed();
11459 0 0       0 Parse::RecDescent::_trace(qq{<>},
11460             Parse::RecDescent::_tracefirst($text))
11461             if defined $::RD_TRACE;
11462 0         0 last;
11463             }
11464 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11465             . $& . q{])},
11466             Parse::RecDescent::_tracefirst($text))
11467             if defined $::RD_TRACE;
11468 0         0 push @item, $item{__STRING1__}=$&;
11469            
11470            
11471 0 0       0 Parse::RecDescent::_trace(q{Trying operator: []},
11472             Parse::RecDescent::_tracefirst($text),
11473             q{static_list},
11474             $tracelevel)
11475             if defined $::RD_TRACE;
11476 0         0 $expectation->is(q{})->at($text);
11477            
11478 0         0 $_tok = undef;
11479 0         0 OPLOOP: while (1)
11480             {
11481 0         0 $repcount = 0;
11482 0         0 my @item;
11483            
11484             # MATCH LEFTARG
11485            
11486 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [option]},
11487             Parse::RecDescent::_tracefirst($text),
11488             q{static_list},
11489             $tracelevel)
11490             if defined $::RD_TRACE;
11491 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         262  
  0         0  
11492 0         0 $expectation->is(q{option})->at($text);
11493 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
11494             {
11495            
11496 0 0       0 Parse::RecDescent::_trace(q{<>},
11497             Parse::RecDescent::_tracefirst($text),
11498             q{static_list},
11499             $tracelevel)
11500             if defined $::RD_TRACE;
11501 0         0 $expectation->failed();
11502 0         0 last;
11503             }
11504 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [}
11505             . $_tok . q{]},
11506            
11507             Parse::RecDescent::_tracefirst($text),
11508             q{static_list},
11509             $tracelevel)
11510             if defined $::RD_TRACE;
11511 0         0 $item{q{option}} = $_tok;
11512 0         0 push @item, $_tok;
11513            
11514             }
11515            
11516            
11517 0         0 $repcount++;
11518            
11519 0         0 my $savetext = $text;
11520 0         0 my $backtrack;
11521            
11522             # MATCH (OP RIGHTARG)(s)
11523 0         0 while ($repcount < 100000000)
11524             {
11525 0         0 $backtrack = 0;
11526            
11527 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/,\\s*/]}, Parse::RecDescent::_tracefirst($text),
11528             q{static_list},
11529             $tracelevel)
11530             if defined $::RD_TRACE;
11531 0         0 $lastsep = "";
11532 0         0 $expectation->is(q{/,\\s*/})->at($text);
11533            
11534            
11535 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,\s*)//)
  0 0       0  
11536             {
11537            
11538 0         0 $expectation->failed();
11539 0 0       0 Parse::RecDescent::_trace(q{<>},
11540             Parse::RecDescent::_tracefirst($text))
11541             if defined $::RD_TRACE;
11542            
11543 0         0 last;
11544             }
11545 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11546             . $& . q{])},
11547             Parse::RecDescent::_tracefirst($text))
11548             if defined $::RD_TRACE;
11549 0         0 push @item, $item{__PATTERN1__}=$&;
11550            
11551            
11552 0         0 pop @item;
11553 0 0       0 if (defined $1) {push @item, $item{'option(s)'}=$1; $backtrack=1;}
  0         0  
  0         0  
11554            
11555 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [option]},
11556             Parse::RecDescent::_tracefirst($text),
11557             q{static_list},
11558             $tracelevel)
11559             if defined $::RD_TRACE;
11560 1     1   4 if (1) { no strict qw{refs};
  1         1  
  1         6024  
  0         0  
11561 0         0 $expectation->is(q{option})->at($text);
11562 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
11563             {
11564            
11565 0 0       0 Parse::RecDescent::_trace(q{<>},
11566             Parse::RecDescent::_tracefirst($text),
11567             q{static_list},
11568             $tracelevel)
11569             if defined $::RD_TRACE;
11570 0         0 $expectation->failed();
11571 0         0 last;
11572             }
11573 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [}
11574             . $_tok . q{]},
11575            
11576             Parse::RecDescent::_tracefirst($text),
11577             q{static_list},
11578             $tracelevel)
11579             if defined $::RD_TRACE;
11580 0         0 $item{q{option}} = $_tok;
11581 0         0 push @item, $_tok;
11582            
11583             }
11584            
11585 0         0 $savetext = $text;
11586 0         0 $repcount++;
11587             }
11588 0         0 $text = $savetext;
11589 0 0       0 pop @item if $backtrack;
11590            
11591 0 0       0 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
11592 0         0 $_tok = [ @item ];
11593 0         0 last;
11594             }
11595            
11596 0 0       0 unless ($repcount>=1)
11597             {
11598 0 0       0 Parse::RecDescent::_trace(q{<]>>},
11599             Parse::RecDescent::_tracefirst($text),
11600             q{static_list},
11601             $tracelevel)
11602             if defined $::RD_TRACE;
11603 0         0 $expectation->failed();
11604 0         0 last;
11605             }
11606 0 0       0 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
11607 0 0       0 . qq{@{$_tok||[]}} . q{]},
11608             Parse::RecDescent::_tracefirst($text),
11609             q{static_list},
11610             $tracelevel)
11611             if defined $::RD_TRACE;
11612            
11613 0   0     0 push @item, $item{'option(s)'}=$_tok||[];
11614            
11615            
11616 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/,?/]}, Parse::RecDescent::_tracefirst($text),
11617             q{static_list},
11618             $tracelevel)
11619             if defined $::RD_TRACE;
11620 0         0 $lastsep = "";
11621 0         0 $expectation->is(q{/,?/})->at($text);
11622            
11623            
11624 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,?)//)
  0 0       0  
11625             {
11626            
11627 0         0 $expectation->failed();
11628 0 0       0 Parse::RecDescent::_trace(q{<>},
11629             Parse::RecDescent::_tracefirst($text))
11630             if defined $::RD_TRACE;
11631            
11632 0         0 last;
11633             }
11634 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11635             . $& . q{])},
11636             Parse::RecDescent::_tracefirst($text))
11637             if defined $::RD_TRACE;
11638 0         0 push @item, $item{__PATTERN2__}=$&;
11639            
11640            
11641 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
11642             Parse::RecDescent::_tracefirst($text),
11643             q{static_list},
11644             $tracelevel)
11645             if defined $::RD_TRACE;
11646 0         0 $lastsep = "";
11647 0         0 $expectation->is(q{'\}'})->at($text);
11648            
11649            
11650 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  0 0       0  
11651             {
11652            
11653 0         0 $expectation->failed();
11654 0 0       0 Parse::RecDescent::_trace(qq{<>},
11655             Parse::RecDescent::_tracefirst($text))
11656             if defined $::RD_TRACE;
11657 0         0 last;
11658             }
11659 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11660             . $& . q{])},
11661             Parse::RecDescent::_tracefirst($text))
11662             if defined $::RD_TRACE;
11663 0         0 push @item, $item{__STRING2__}=$&;
11664            
11665            
11666            
11667 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['\{' /,?/ '\}']<<},
11668             Parse::RecDescent::_tracefirst($text),
11669             q{static_list},
11670             $tracelevel)
11671             if defined $::RD_TRACE;
11672 0         0 $_matched = 1;
11673 0         0 last;
11674             }
11675            
11676            
11677 0 0 0     0 unless ( $_matched || defined($return) || defined($score) )
      0        
11678             {
11679            
11680            
11681 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11682 0 0       0 Parse::RecDescent::_trace(q{<>},
11683             Parse::RecDescent::_tracefirst($_[1]),
11684             q{static_list},
11685             $tracelevel)
11686             if defined $::RD_TRACE;
11687 0         0 return undef;
11688             }
11689 0 0 0     0 if (!defined($return) && defined($score))
11690             {
11691 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11692             q{static_list},
11693             $tracelevel)
11694             if defined $::RD_TRACE;
11695 0         0 $return = $score_return;
11696             }
11697 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
11698 0 0       0 $return = $item[$#item] unless defined $return;
11699 0 0       0 if (defined $::RD_TRACE)
11700             {
11701 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11702             $return . q{])}, "",
11703             q{static_list},
11704             $tracelevel);
11705 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11706             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11707             Parse::RecDescent::_tracefirst($text),
11708             , q{static_list},
11709             $tracelevel)
11710             }
11711 0         0 $_[1] = $text;
11712 0         0 return $return;
11713             }
11714             }
11715 3     3 0 2485 package Text::FormBuilder::Parser; sub new { my $self = bless( {
11716             '_AUTOTREE' => undef,
11717             'localvars' => '',
11718             'startcode' => '',
11719             '_check' => {
11720             'thisoffset' => '',
11721             'itempos' => '',
11722             'prevoffset' => '',
11723             'prevline' => '',
11724             'prevcolumn' => '',
11725             'thiscolumn' => ''
11726             },
11727             'namespace' => 'Parse::RecDescent::Text::FormBuilder::Parser',
11728             '_AUTOACTION' => undef,
11729             'rules' => {
11730             'row_col' => bless( {
11731             'impcount' => 0,
11732             'calls' => [],
11733             'changed' => 0,
11734             'opcount' => 0,
11735             'prods' => [
11736             bless( {
11737             'number' => '0',
11738             'strcount' => 0,
11739             'dircount' => 0,
11740             'uncommit' => undef,
11741             'error' => undef,
11742             'patcount' => 3,
11743             'actcount' => 1,
11744             'items' => [
11745             bless( {
11746             'pattern' => '\\d+',
11747             'hashname' => '__PATTERN1__',
11748             'description' => '/\\\\d+/',
11749             'lookahead' => 0,
11750             'rdelim' => '/',
11751             'line' => 202,
11752             'mod' => '',
11753             'ldelim' => '/'
11754             }, 'Parse::RecDescent::Token' ),
11755             bless( {
11756             'pattern' => ',\\s*',
11757             'hashname' => '__PATTERN2__',
11758             'description' => '/,\\\\s*/',
11759             'lookahead' => 0,
11760             'rdelim' => '/',
11761             'line' => 202,
11762             'mod' => '',
11763             'ldelim' => '/'
11764             }, 'Parse::RecDescent::Token' ),
11765             bless( {
11766             'pattern' => '\\d+',
11767             'hashname' => '__PATTERN3__',
11768             'description' => '/\\\\d+/',
11769             'lookahead' => 0,
11770             'rdelim' => '/',
11771             'line' => 202,
11772             'mod' => '',
11773             'ldelim' => '/'
11774             }, 'Parse::RecDescent::Token' ),
11775             bless( {
11776             'hashname' => '__ACTION1__',
11777             'lookahead' => 0,
11778             'line' => 203,
11779             'code' => '{ $rows = $item[1]; $cols = $item[3] }'
11780             }, 'Parse::RecDescent::Action' )
11781             ],
11782             'line' => undef
11783             }, 'Parse::RecDescent::Production' )
11784             ],
11785             'name' => 'row_col',
11786             'vars' => '',
11787             'line' => 202
11788             }, 'Parse::RecDescent::Rule' ),
11789             'group_def' => bless( {
11790             'impcount' => 0,
11791             'calls' => [
11792             'var_name',
11793             'field_line'
11794             ],
11795             'changed' => 0,
11796             'opcount' => 0,
11797             'prods' => [
11798             bless( {
11799             'number' => '0',
11800             'strcount' => 3,
11801             'dircount' => 0,
11802             'uncommit' => undef,
11803             'error' => undef,
11804             'patcount' => 0,
11805             'actcount' => 3,
11806             'items' => [
11807             bless( {
11808             'pattern' => '!group',
11809             'hashname' => '__STRING1__',
11810             'description' => '\'!group\'',
11811             'lookahead' => 0,
11812             'line' => 80
11813             }, 'Parse::RecDescent::Literal' ),
11814             bless( {
11815             'hashname' => '__ACTION1__',
11816             'lookahead' => 0,
11817             'line' => 80,
11818             'code' => '{ $context = \'group\' }'
11819             }, 'Parse::RecDescent::Action' ),
11820             bless( {
11821             'subrule' => 'var_name',
11822             'matchrule' => 0,
11823             'implicit' => undef,
11824             'argcode' => undef,
11825             'lookahead' => 0,
11826             'line' => 80
11827             }, 'Parse::RecDescent::Subrule' ),
11828             bless( {
11829             'pattern' => '{',
11830             'hashname' => '__STRING2__',
11831             'description' => '\'\\{\'',
11832             'lookahead' => 0,
11833             'line' => 80
11834             }, 'Parse::RecDescent::Literal' ),
11835             bless( {
11836             'subrule' => 'field_line',
11837             'expected' => undef,
11838             'min' => 1,
11839             'argcode' => undef,
11840             'max' => 100000000,
11841             'matchrule' => 0,
11842             'repspec' => 's',
11843             'lookahead' => 0,
11844             'line' => 80
11845             }, 'Parse::RecDescent::Repetition' ),
11846             bless( {
11847             'pattern' => '}',
11848             'hashname' => '__STRING3__',
11849             'description' => '\'\\}\'',
11850             'lookahead' => 0,
11851             'line' => 80
11852             }, 'Parse::RecDescent::Literal' ),
11853             bless( {
11854             'hashname' => '__ACTION2__',
11855             'lookahead' => 0,
11856             'line' => 80,
11857             'code' => '{ $context = \'line\' }'
11858             }, 'Parse::RecDescent::Action' ),
11859             bless( {
11860             'hashname' => '__ACTION3__',
11861             'lookahead' => 0,
11862             'line' => 81,
11863             'code' => '{
11864             #warn "$item{var_name} group; context $context\\n"
11865             $groups{$item{var_name}} = [ @group ];
11866             @group = ();
11867             }'
11868             }, 'Parse::RecDescent::Action' )
11869             ],
11870             'line' => undef
11871             }, 'Parse::RecDescent::Production' )
11872             ],
11873             'name' => 'group_def',
11874             'vars' => '',
11875             'line' => 80
11876             }, 'Parse::RecDescent::Rule' ),
11877             'field_size' => bless( {
11878             'impcount' => 1,
11879             'calls' => [
11880             '_alternation_1_of_production_1_of_rule_field_size'
11881             ],
11882             'changed' => 0,
11883             'opcount' => 0,
11884             'prods' => [
11885             bless( {
11886             'number' => '0',
11887             'strcount' => 2,
11888             'dircount' => 0,
11889             'uncommit' => undef,
11890             'error' => undef,
11891             'patcount' => 0,
11892             'actcount' => 0,
11893             'items' => [
11894             bless( {
11895             'pattern' => '[',
11896             'hashname' => '__STRING1__',
11897             'description' => '\'[\'',
11898             'lookahead' => 0,
11899             'line' => 195
11900             }, 'Parse::RecDescent::Literal' ),
11901             bless( {
11902             'subrule' => '_alternation_1_of_production_1_of_rule_field_size',
11903             'matchrule' => 0,
11904             'implicit' => 'row_col, or size',
11905             'argcode' => undef,
11906             'lookahead' => 0,
11907             'line' => 195
11908             }, 'Parse::RecDescent::Subrule' ),
11909             bless( {
11910             'pattern' => ']',
11911             'hashname' => '__STRING2__',
11912             'description' => '\']\'',
11913             'lookahead' => 0,
11914             'line' => 195
11915             }, 'Parse::RecDescent::Literal' )
11916             ],
11917             'line' => undef
11918             }, 'Parse::RecDescent::Production' )
11919             ],
11920             'name' => 'field_size',
11921             'vars' => '',
11922             'line' => 195
11923             }, 'Parse::RecDescent::Rule' ),
11924             'heading' => bless( {
11925             'impcount' => 0,
11926             'calls' => [],
11927             'changed' => 0,
11928             'opcount' => 0,
11929             'prods' => [
11930             bless( {
11931             'number' => '0',
11932             'strcount' => 1,
11933             'dircount' => 0,
11934             'uncommit' => undef,
11935             'error' => undef,
11936             'patcount' => 1,
11937             'actcount' => 1,
11938             'items' => [
11939             bless( {
11940             'pattern' => '!head',
11941             'hashname' => '__STRING1__',
11942             'description' => '\'!head\'',
11943             'lookahead' => 0,
11944             'line' => 144
11945             }, 'Parse::RecDescent::Literal' ),
11946             bless( {
11947             'pattern' => '.*',
11948             'hashname' => '__PATTERN1__',
11949             'description' => '/.*/',
11950             'lookahead' => 0,
11951             'rdelim' => '/',
11952             'line' => 144,
11953             'mod' => '',
11954             'ldelim' => '/'
11955             }, 'Parse::RecDescent::Token' ),
11956             bless( {
11957             'hashname' => '__ACTION1__',
11958             'lookahead' => 0,
11959             'line' => 144,
11960             'code' => '{ push @lines, [ \'head\', $item[2] ] }'
11961             }, 'Parse::RecDescent::Action' )
11962             ],
11963             'line' => undef
11964             }, 'Parse::RecDescent::Production' )
11965             ],
11966             'name' => 'heading',
11967             'vars' => '',
11968             'line' => 144
11969             }, 'Parse::RecDescent::Rule' ),
11970             '_alternation_1_of_production_1_of_rule_type' => bless( {
11971             'impcount' => 0,
11972             'calls' => [
11973             'builtin_field',
11974             'var_name'
11975             ],
11976             'changed' => 0,
11977             'opcount' => 0,
11978             'prods' => [
11979             bless( {
11980             'number' => '0',
11981             'strcount' => 0,
11982             'dircount' => 0,
11983             'uncommit' => undef,
11984             'error' => undef,
11985             'patcount' => 0,
11986             'actcount' => 0,
11987             'items' => [
11988             bless( {
11989             'subrule' => 'builtin_field',
11990             'matchrule' => 0,
11991             'implicit' => undef,
11992             'argcode' => undef,
11993             'lookahead' => 0,
11994             'line' => 252
11995             }, 'Parse::RecDescent::Subrule' )
11996             ],
11997             'line' => undef
11998             }, 'Parse::RecDescent::Production' ),
11999             bless( {
12000             'number' => '1',
12001             'strcount' => 0,
12002             'dircount' => 0,
12003             'uncommit' => undef,
12004             'error' => undef,
12005             'patcount' => 0,
12006             'actcount' => 1,
12007             'items' => [
12008             bless( {
12009             'subrule' => 'var_name',
12010             'matchrule' => 0,
12011             'implicit' => undef,
12012             'argcode' => undef,
12013             'lookahead' => 0,
12014             'line' => 252
12015             }, 'Parse::RecDescent::Subrule' ),
12016             bless( {
12017             'hashname' => '__ACTION1__',
12018             'lookahead' => 0,
12019             'line' => 252,
12020             'code' => '{ warn "[Text::FormBuilder] Using field group names directly is not (yet) supported (input line $thisline)\\n"; \'text\' }'
12021             }, 'Parse::RecDescent::Action' )
12022             ],
12023             'line' => 252
12024             }, 'Parse::RecDescent::Production' )
12025             ],
12026             'name' => '_alternation_1_of_production_1_of_rule_type',
12027             'vars' => '',
12028             'line' => 252
12029             }, 'Parse::RecDescent::Rule' ),
12030             '_alternation_1_of_production_1_of_rule_validate' => bless( {
12031             'impcount' => 0,
12032             'calls' => [
12033             'optional_pattern',
12034             'required_pattern'
12035             ],
12036             'changed' => 0,
12037             'opcount' => 0,
12038             'prods' => [
12039             bless( {
12040             'number' => '0',
12041             'strcount' => 0,
12042             'dircount' => 0,
12043             'uncommit' => undef,
12044             'error' => undef,
12045             'patcount' => 0,
12046             'actcount' => 0,
12047             'items' => [
12048             bless( {
12049             'subrule' => 'optional_pattern',
12050             'matchrule' => 0,
12051             'implicit' => undef,
12052             'argcode' => undef,
12053             'lookahead' => 0,
12054             'line' => 252
12055             }, 'Parse::RecDescent::Subrule' )
12056             ],
12057             'line' => undef
12058             }, 'Parse::RecDescent::Production' ),
12059             bless( {
12060             'number' => '1',
12061             'strcount' => 0,
12062             'dircount' => 0,
12063             'uncommit' => undef,
12064             'error' => undef,
12065             'patcount' => 0,
12066             'actcount' => 0,
12067             'items' => [
12068             bless( {
12069             'subrule' => 'required_pattern',
12070             'matchrule' => 0,
12071             'implicit' => undef,
12072             'argcode' => undef,
12073             'lookahead' => 0,
12074             'line' => 252
12075             }, 'Parse::RecDescent::Subrule' )
12076             ],
12077             'line' => 252
12078             }, 'Parse::RecDescent::Production' )
12079             ],
12080             'name' => '_alternation_1_of_production_1_of_rule_validate',
12081             'vars' => '',
12082             'line' => 252
12083             }, 'Parse::RecDescent::Rule' ),
12084             'identifier' => bless( {
12085             'impcount' => 0,
12086             'calls' => [],
12087             'changed' => 0,
12088             'opcount' => 0,
12089             'prods' => [
12090             bless( {
12091             'number' => '0',
12092             'strcount' => 0,
12093             'dircount' => 0,
12094             'uncommit' => undef,
12095             'error' => undef,
12096             'patcount' => 1,
12097             'actcount' => 0,
12098             'items' => [
12099             bless( {
12100             'pattern' => '\\w+',
12101             'hashname' => '__PATTERN1__',
12102             'description' => '/\\\\w+/',
12103             'lookahead' => 0,
12104             'rdelim' => '/',
12105             'line' => 247,
12106             'mod' => '',
12107             'ldelim' => '/'
12108             }, 'Parse::RecDescent::Token' )
12109             ],
12110             'line' => undef
12111             }, 'Parse::RecDescent::Production' )
12112             ],
12113             'name' => 'identifier',
12114             'vars' => '',
12115             'line' => 247
12116             }, 'Parse::RecDescent::Rule' ),
12117             '_alternation_1_of_production_1_of_rule_default' => bless( {
12118             'impcount' => 0,
12119             'calls' => [
12120             'simple_multiword',
12121             'quoted_string'
12122             ],
12123             'changed' => 0,
12124             'opcount' => 0,
12125             'prods' => [
12126             bless( {
12127             'number' => '0',
12128             'strcount' => 0,
12129             'dircount' => 0,
12130             'uncommit' => undef,
12131             'error' => undef,
12132             'patcount' => 0,
12133             'actcount' => 0,
12134             'items' => [
12135             bless( {
12136             'subrule' => 'simple_multiword',
12137             'matchrule' => 0,
12138             'implicit' => undef,
12139             'argcode' => undef,
12140             'lookahead' => 0,
12141             'line' => 252
12142             }, 'Parse::RecDescent::Subrule' )
12143             ],
12144             'line' => undef
12145             }, 'Parse::RecDescent::Production' ),
12146             bless( {
12147             'number' => '1',
12148             'strcount' => 0,
12149             'dircount' => 0,
12150             'uncommit' => undef,
12151             'error' => undef,
12152             'patcount' => 0,
12153             'actcount' => 0,
12154             'items' => [
12155             bless( {
12156             'subrule' => 'quoted_string',
12157             'matchrule' => 0,
12158             'implicit' => undef,
12159             'argcode' => undef,
12160             'lookahead' => 0,
12161             'line' => 252
12162             }, 'Parse::RecDescent::Subrule' )
12163             ],
12164             'line' => 252
12165             }, 'Parse::RecDescent::Production' )
12166             ],
12167             'name' => '_alternation_1_of_production_1_of_rule_default',
12168             'vars' => '',
12169             'line' => 252
12170             }, 'Parse::RecDescent::Rule' ),
12171             'blank' => bless( {
12172             'impcount' => 0,
12173             'calls' => [],
12174             'changed' => 0,
12175             'opcount' => 0,
12176             'prods' => [
12177             bless( {
12178             'number' => '0',
12179             'strcount' => 0,
12180             'dircount' => 0,
12181             'uncommit' => undef,
12182             'error' => undef,
12183             'patcount' => 0,
12184             'actcount' => 0,
12185             'items' => [],
12186             'line' => undef
12187             }, 'Parse::RecDescent::Production' )
12188             ],
12189             'name' => 'blank',
12190             'vars' => '',
12191             'line' => 245
12192             }, 'Parse::RecDescent::Rule' ),
12193             'validate_def' => bless( {
12194             'impcount' => 0,
12195             'calls' => [
12196             'var_name'
12197             ],
12198             'changed' => 0,
12199             'opcount' => 0,
12200             'prods' => [
12201             bless( {
12202             'number' => '0',
12203             'strcount' => 1,
12204             'dircount' => 1,
12205             'uncommit' => undef,
12206             'error' => undef,
12207             'patcount' => 0,
12208             'actcount' => 1,
12209             'items' => [
12210             bless( {
12211             'pattern' => '!validate',
12212             'hashname' => '__STRING1__',
12213             'description' => '\'!validate\'',
12214             'lookahead' => 0,
12215             'line' => 77
12216             }, 'Parse::RecDescent::Literal' ),
12217             bless( {
12218             'subrule' => 'var_name',
12219             'matchrule' => 0,
12220             'implicit' => undef,
12221             'argcode' => undef,
12222             'lookahead' => 0,
12223             'line' => 77
12224             }, 'Parse::RecDescent::Subrule' ),
12225             bless( {
12226             'hashname' => '__DIRECTIVE1__',
12227             'name' => '',
12228             'lookahead' => 0,
12229             'line' => 77,
12230             'code' => 'Text::Balanced::extract_codeblock($text,undef,$skip,\'{}\');
12231             '
12232             }, 'Parse::RecDescent::Directive' ),
12233             bless( {
12234             'hashname' => '__ACTION1__',
12235             'lookahead' => 0,
12236             'line' => 78,
12237             'code' => '{ $subs{$item{var_name}} = eval "sub $item[3]" }'
12238             }, 'Parse::RecDescent::Action' )
12239             ],
12240             'line' => undef
12241             }, 'Parse::RecDescent::Production' )
12242             ],
12243             'name' => 'validate_def',
12244             'vars' => '',
12245             'line' => 77
12246             }, 'Parse::RecDescent::Rule' ),
12247             'unknown_directive' => bless( {
12248             'impcount' => 0,
12249             'calls' => [],
12250             'changed' => 0,
12251             'opcount' => 0,
12252             'prods' => [
12253             bless( {
12254             'number' => '0',
12255             'strcount' => 0,
12256             'dircount' => 0,
12257             'uncommit' => undef,
12258             'error' => undef,
12259             'patcount' => 2,
12260             'actcount' => 1,
12261             'items' => [
12262             bless( {
12263             'pattern' => '\\!\\S*',
12264             'hashname' => '__PATTERN1__',
12265             'description' => '/\\\\!\\\\S*/',
12266             'lookahead' => 0,
12267             'rdelim' => '/',
12268             'line' => 250,
12269             'mod' => '',
12270             'ldelim' => '/'
12271             }, 'Parse::RecDescent::Token' ),
12272             bless( {
12273             'pattern' => '.*',
12274             'hashname' => '__PATTERN2__',
12275             'description' => '/.*/',
12276             'lookahead' => 0,
12277             'rdelim' => '/',
12278             'line' => 250,
12279             'mod' => '',
12280             'ldelim' => '/'
12281             }, 'Parse::RecDescent::Token' ),
12282             bless( {
12283             'hashname' => '__ACTION1__',
12284             'lookahead' => 0,
12285             'line' => 251,
12286             'code' => '{ warn "[Text::Formbuilder] Skipping unknown directive \'$item[1]\' at input text line $thisline\\n"; }'
12287             }, 'Parse::RecDescent::Action' )
12288             ],
12289             'line' => undef
12290             }, 'Parse::RecDescent::Production' )
12291             ],
12292             'name' => 'unknown_directive',
12293             'vars' => '',
12294             'line' => 249
12295             }, 'Parse::RecDescent::Rule' ),
12296             'required_pattern' => bless( {
12297             'impcount' => 0,
12298             'calls' => [],
12299             'changed' => 0,
12300             'opcount' => 0,
12301             'prods' => [
12302             bless( {
12303             'number' => '0',
12304             'strcount' => 0,
12305             'dircount' => 0,
12306             'uncommit' => undef,
12307             'error' => undef,
12308             'patcount' => 1,
12309             'actcount' => 1,
12310             'items' => [
12311             bless( {
12312             'pattern' => '[A-Z_]+',
12313             'hashname' => '__PATTERN1__',
12314             'description' => '/[A-Z_]+/',
12315             'lookahead' => 0,
12316             'rdelim' => '/',
12317             'line' => 242,
12318             'mod' => '',
12319             'ldelim' => '/'
12320             }, 'Parse::RecDescent::Token' ),
12321             bless( {
12322             'hashname' => '__ACTION1__',
12323             'lookahead' => 0,
12324             'line' => 242,
12325             'code' => '{ $required = 1; $item[1] }'
12326             }, 'Parse::RecDescent::Action' )
12327             ],
12328             'line' => undef
12329             }, 'Parse::RecDescent::Production' )
12330             ],
12331             'name' => 'required_pattern',
12332             'vars' => '',
12333             'line' => 242
12334             }, 'Parse::RecDescent::Rule' ),
12335             'field' => bless( {
12336             'impcount' => 0,
12337             'calls' => [
12338             'name',
12339             'field_size',
12340             'label',
12341             'hint',
12342             'type',
12343             'default',
12344             'option_list',
12345             'validate'
12346             ],
12347             'changed' => 0,
12348             'opcount' => 0,
12349             'prods' => [
12350             bless( {
12351             'number' => '0',
12352             'strcount' => 0,
12353             'dircount' => 0,
12354             'uncommit' => undef,
12355             'error' => undef,
12356             'patcount' => 0,
12357             'actcount' => 1,
12358             'items' => [
12359             bless( {
12360             'subrule' => 'name',
12361             'matchrule' => 0,
12362             'implicit' => undef,
12363             'argcode' => undef,
12364             'lookahead' => 0,
12365             'line' => 153
12366             }, 'Parse::RecDescent::Subrule' ),
12367             bless( {
12368             'subrule' => 'field_size',
12369             'expected' => undef,
12370             'min' => 0,
12371             'argcode' => undef,
12372             'max' => 1,
12373             'matchrule' => 0,
12374             'repspec' => '?',
12375             'lookahead' => 0,
12376             'line' => 153
12377             }, 'Parse::RecDescent::Repetition' ),
12378             bless( {
12379             'subrule' => 'label',
12380             'expected' => undef,
12381             'min' => 0,
12382             'argcode' => undef,
12383             'max' => 1,
12384             'matchrule' => 0,
12385             'repspec' => '?',
12386             'lookahead' => 0,
12387             'line' => 153
12388             }, 'Parse::RecDescent::Repetition' ),
12389             bless( {
12390             'subrule' => 'hint',
12391             'expected' => undef,
12392             'min' => 0,
12393             'argcode' => undef,
12394             'max' => 1,
12395             'matchrule' => 0,
12396             'repspec' => '?',
12397             'lookahead' => 0,
12398             'line' => 153
12399             }, 'Parse::RecDescent::Repetition' ),
12400             bless( {
12401             'subrule' => 'type',
12402             'expected' => undef,
12403             'min' => 0,
12404             'argcode' => undef,
12405             'max' => 1,
12406             'matchrule' => 0,
12407             'repspec' => '?',
12408             'lookahead' => 0,
12409             'line' => 153
12410             }, 'Parse::RecDescent::Repetition' ),
12411             bless( {
12412             'subrule' => 'default',
12413             'expected' => undef,
12414             'min' => 0,
12415             'argcode' => undef,
12416             'max' => 1,
12417             'matchrule' => 0,
12418             'repspec' => '?',
12419             'lookahead' => 0,
12420             'line' => 153
12421             }, 'Parse::RecDescent::Repetition' ),
12422             bless( {
12423             'subrule' => 'option_list',
12424             'expected' => undef,
12425             'min' => 0,
12426             'argcode' => undef,
12427             'max' => 1,
12428             'matchrule' => 0,
12429             'repspec' => '?',
12430             'lookahead' => 0,
12431             'line' => 153
12432             }, 'Parse::RecDescent::Repetition' ),
12433             bless( {
12434             'subrule' => 'validate',
12435             'expected' => undef,
12436             'min' => 0,
12437             'argcode' => undef,
12438             'max' => 1,
12439             'matchrule' => 0,
12440             'repspec' => '?',
12441             'lookahead' => 0,
12442             'line' => 153
12443             }, 'Parse::RecDescent::Repetition' ),
12444             bless( {
12445             'hashname' => '__ACTION1__',
12446             'lookahead' => 0,
12447             'line' => 154,
12448             'code' => '{
12449             my $field = {
12450             name => $item{name},
12451             label => $item{\'label(?)\'}[0],
12452             comment => $item{\'hint(?)\'}[0],
12453             type => $item{\'type(?)\'}[0],
12454             value => $item{\'default(?)\'}[0],
12455             list => $list_var,
12456             validate => $item{\'validate(?)\'}[0],
12457             required => $required || 0,
12458             };
12459            
12460             $$field{options} = [ @options ] if @options;
12461            
12462             $$field{rows} = $rows if defined $rows;
12463             $$field{cols} = $cols if defined $cols;
12464             $$field{size} = $size if defined $size;
12465             $$field{maxlength} = $maxlength if defined $maxlength;
12466            
12467             #warn "[$thisline] field $item{name}; context $context\\n";
12468             if ($context eq \'group\') {
12469             push @group, $field;
12470             } else {
12471             push @lines, [ \'field\', $field ];
12472             }
12473            
12474             $type = undef;
12475             $required = 0;
12476             $list_var = undef;
12477             $size = undef;
12478             $rows = undef;
12479             $cols = undef;
12480             $maxlength = undef;
12481             @options = ();
12482            
12483             }'
12484             }, 'Parse::RecDescent::Action' )
12485             ],
12486             'line' => undef
12487             }, 'Parse::RecDescent::Production' )
12488             ],
12489             'name' => 'field',
12490             'vars' => '',
12491             'line' => 153
12492             }, 'Parse::RecDescent::Rule' ),
12493             'line' => bless( {
12494             'impcount' => 1,
12495             'calls' => [
12496             '_alternation_1_of_production_1_of_rule_line'
12497             ],
12498             'changed' => 0,
12499             'opcount' => 0,
12500             'prods' => [
12501             bless( {
12502             'number' => '0',
12503             'strcount' => 1,
12504             'dircount' => 1,
12505             'uncommit' => undef,
12506             'error' => undef,
12507             'patcount' => 0,
12508             'actcount' => 0,
12509             'items' => [
12510             bless( {
12511             'hashname' => '__DIRECTIVE1__',
12512             'name' => '',
12513             'lookahead' => 0,
12514             'line' => 106,
12515             'code' => 'my $oldskip = $skip; $skip=\'[ \\t]*\'; $oldskip'
12516             }, 'Parse::RecDescent::Directive' ),
12517             bless( {
12518             'subrule' => '_alternation_1_of_production_1_of_rule_line',
12519             'matchrule' => 0,
12520             'implicit' => 'title, or author, or pattern_def, or section_head, or heading, or group_field, or unknown_directive, or field, or comment, or blank',
12521             'argcode' => undef,
12522             'lookahead' => 0,
12523             'line' => 106
12524             }, 'Parse::RecDescent::Subrule' ),
12525             bless( {
12526             'pattern' => '\\n',
12527             'hashname' => '__STRING1__',
12528             'description' => '\'\\\\n\'',
12529             'lookahead' => 0,
12530             'line' => 106
12531             }, 'Parse::RecDescent::InterpLit' )
12532             ],
12533             'line' => undef
12534             }, 'Parse::RecDescent::Production' )
12535             ],
12536             'name' => 'line',
12537             'vars' => '',
12538             'line' => 106
12539             }, 'Parse::RecDescent::Rule' ),
12540             '_alternation_1_of_production_1_of_rule_form_spec' => bless( {
12541             'impcount' => 0,
12542             'calls' => [
12543             'list_def',
12544             'description_def',
12545             'validate_def',
12546             'group_def',
12547             'note',
12548             'line'
12549             ],
12550             'changed' => 0,
12551             'opcount' => 0,
12552             'prods' => [
12553             bless( {
12554             'number' => '0',
12555             'strcount' => 0,
12556             'dircount' => 0,
12557             'uncommit' => undef,
12558             'error' => undef,
12559             'patcount' => 0,
12560             'actcount' => 0,
12561             'items' => [
12562             bless( {
12563             'subrule' => 'list_def',
12564             'matchrule' => 0,
12565             'implicit' => undef,
12566             'argcode' => undef,
12567             'lookahead' => 0,
12568             'line' => 252
12569             }, 'Parse::RecDescent::Subrule' )
12570             ],
12571             'line' => undef
12572             }, 'Parse::RecDescent::Production' ),
12573             bless( {
12574             'number' => '1',
12575             'strcount' => 0,
12576             'dircount' => 0,
12577             'uncommit' => undef,
12578             'error' => undef,
12579             'patcount' => 0,
12580             'actcount' => 0,
12581             'items' => [
12582             bless( {
12583             'subrule' => 'description_def',
12584             'matchrule' => 0,
12585             'implicit' => undef,
12586             'argcode' => undef,
12587             'lookahead' => 0,
12588             'line' => 252
12589             }, 'Parse::RecDescent::Subrule' )
12590             ],
12591             'line' => 252
12592             }, 'Parse::RecDescent::Production' ),
12593             bless( {
12594             'number' => '2',
12595             'strcount' => 0,
12596             'dircount' => 0,
12597             'uncommit' => undef,
12598             'error' => undef,
12599             'patcount' => 0,
12600             'actcount' => 0,
12601             'items' => [
12602             bless( {
12603             'subrule' => 'validate_def',
12604             'matchrule' => 0,
12605             'implicit' => undef,
12606             'argcode' => undef,
12607             'lookahead' => 0,
12608             'line' => 252
12609             }, 'Parse::RecDescent::Subrule' )
12610             ],
12611             'line' => 252
12612             }, 'Parse::RecDescent::Production' ),
12613             bless( {
12614             'number' => '3',
12615             'strcount' => 0,
12616             'dircount' => 0,
12617             'uncommit' => undef,
12618             'error' => undef,
12619             'patcount' => 0,
12620             'actcount' => 0,
12621             'items' => [
12622             bless( {
12623             'subrule' => 'group_def',
12624             'matchrule' => 0,
12625             'implicit' => undef,
12626             'argcode' => undef,
12627             'lookahead' => 0,
12628             'line' => 252
12629             }, 'Parse::RecDescent::Subrule' )
12630             ],
12631             'line' => 252
12632             }, 'Parse::RecDescent::Production' ),
12633             bless( {
12634             'number' => '4',
12635             'strcount' => 0,
12636             'dircount' => 0,
12637             'uncommit' => undef,
12638             'error' => undef,
12639             'patcount' => 0,
12640             'actcount' => 0,
12641             'items' => [
12642             bless( {
12643             'subrule' => 'note',
12644             'matchrule' => 0,
12645             'implicit' => undef,
12646             'argcode' => undef,
12647             'lookahead' => 0,
12648             'line' => 252
12649             }, 'Parse::RecDescent::Subrule' )
12650             ],
12651             'line' => 252
12652             }, 'Parse::RecDescent::Production' ),
12653             bless( {
12654             'number' => '5',
12655             'strcount' => 0,
12656             'dircount' => 0,
12657             'uncommit' => undef,
12658             'error' => undef,
12659             'patcount' => 0,
12660             'actcount' => 0,
12661             'items' => [
12662             bless( {
12663             'subrule' => 'line',
12664             'matchrule' => 0,
12665             'implicit' => undef,
12666             'argcode' => undef,
12667             'lookahead' => 0,
12668             'line' => 252
12669             }, 'Parse::RecDescent::Subrule' )
12670             ],
12671             'line' => 252
12672             }, 'Parse::RecDescent::Production' )
12673             ],
12674             'name' => '_alternation_1_of_production_1_of_rule_form_spec',
12675             'vars' => '',
12676             'line' => 252
12677             }, 'Parse::RecDescent::Rule' ),
12678             'optional_pattern' => bless( {
12679             'impcount' => 0,
12680             'calls' => [],
12681             'changed' => 0,
12682             'opcount' => 0,
12683             'prods' => [
12684             bless( {
12685             'number' => '0',
12686             'strcount' => 1,
12687             'dircount' => 0,
12688             'uncommit' => undef,
12689             'error' => undef,
12690             'patcount' => 1,
12691             'actcount' => 1,
12692             'items' => [
12693             bless( {
12694             'pattern' => '[A-Z_]+',
12695             'hashname' => '__PATTERN1__',
12696             'description' => '/[A-Z_]+/',
12697             'lookahead' => 0,
12698             'rdelim' => '/',
12699             'line' => 240,
12700             'mod' => '',
12701             'ldelim' => '/'
12702             }, 'Parse::RecDescent::Token' ),
12703             bless( {
12704             'pattern' => '?',
12705             'hashname' => '__STRING1__',
12706             'description' => '\'?\'',
12707             'lookahead' => 0,
12708             'line' => 240
12709             }, 'Parse::RecDescent::Literal' ),
12710             bless( {
12711             'hashname' => '__ACTION1__',
12712             'lookahead' => 0,
12713             'line' => 240,
12714             'code' => '{ $required = 0; $item[1] }'
12715             }, 'Parse::RecDescent::Action' )
12716             ],
12717             'line' => undef
12718             }, 'Parse::RecDescent::Production' )
12719             ],
12720             'name' => 'optional_pattern',
12721             'vars' => '',
12722             'line' => 240
12723             }, 'Parse::RecDescent::Rule' ),
12724             'option_list' => bless( {
12725             'impcount' => 0,
12726             'calls' => [
12727             'options',
12728             'list_var'
12729             ],
12730             'changed' => 0,
12731             'opcount' => 0,
12732             'prods' => [
12733             bless( {
12734             'number' => '0',
12735             'strcount' => 0,
12736             'dircount' => 0,
12737             'uncommit' => undef,
12738             'error' => undef,
12739             'patcount' => 0,
12740             'actcount' => 0,
12741             'items' => [
12742             bless( {
12743             'subrule' => 'options',
12744             'matchrule' => 0,
12745             'implicit' => undef,
12746             'argcode' => undef,
12747             'lookahead' => 0,
12748             'line' => 225
12749             }, 'Parse::RecDescent::Subrule' )
12750             ],
12751             'line' => undef
12752             }, 'Parse::RecDescent::Production' ),
12753             bless( {
12754             'number' => '1',
12755             'strcount' => 0,
12756             'dircount' => 0,
12757             'uncommit' => undef,
12758             'error' => undef,
12759             'patcount' => 0,
12760             'actcount' => 0,
12761             'items' => [
12762             bless( {
12763             'subrule' => 'list_var',
12764             'matchrule' => 0,
12765             'implicit' => undef,
12766             'argcode' => undef,
12767             'lookahead' => 0,
12768             'line' => 225
12769             }, 'Parse::RecDescent::Subrule' )
12770             ],
12771             'line' => 225
12772             }, 'Parse::RecDescent::Production' )
12773             ],
12774             'name' => 'option_list',
12775             'vars' => '',
12776             'line' => 225
12777             }, 'Parse::RecDescent::Rule' ),
12778             'value' => bless( {
12779             'impcount' => 0,
12780             'calls' => [
12781             'identifier'
12782             ],
12783             'changed' => 0,
12784             'opcount' => 0,
12785             'prods' => [
12786             bless( {
12787             'number' => '0',
12788             'strcount' => 0,
12789             'dircount' => 0,
12790             'uncommit' => undef,
12791             'error' => undef,
12792             'patcount' => 0,
12793             'actcount' => 0,
12794             'items' => [
12795             bless( {
12796             'subrule' => 'identifier',
12797             'matchrule' => 0,
12798             'implicit' => undef,
12799             'argcode' => undef,
12800             'lookahead' => 0,
12801             'line' => 234
12802             }, 'Parse::RecDescent::Subrule' )
12803             ],
12804             'line' => undef
12805             }, 'Parse::RecDescent::Production' )
12806             ],
12807             'name' => 'value',
12808             'vars' => '',
12809             'line' => 234
12810             }, 'Parse::RecDescent::Rule' ),
12811             'name' => bless( {
12812             'impcount' => 0,
12813             'calls' => [
12814             'identifier'
12815             ],
12816             'changed' => 0,
12817             'opcount' => 0,
12818             'prods' => [
12819             bless( {
12820             'number' => '0',
12821             'strcount' => 0,
12822             'dircount' => 0,
12823             'uncommit' => undef,
12824             'error' => undef,
12825             'patcount' => 0,
12826             'actcount' => 0,
12827             'items' => [
12828             bless( {
12829             'subrule' => 'identifier',
12830             'matchrule' => 0,
12831             'implicit' => undef,
12832             'argcode' => undef,
12833             'lookahead' => 0,
12834             'line' => 191
12835             }, 'Parse::RecDescent::Subrule' )
12836             ],
12837             'line' => undef
12838             }, 'Parse::RecDescent::Production' )
12839             ],
12840             'name' => 'name',
12841             'vars' => '',
12842             'line' => 191
12843             }, 'Parse::RecDescent::Rule' ),
12844             'default' => bless( {
12845             'impcount' => 1,
12846             'calls' => [
12847             '_alternation_1_of_production_1_of_rule_default'
12848             ],
12849             'changed' => 0,
12850             'opcount' => 0,
12851             'prods' => [
12852             bless( {
12853             'number' => '0',
12854             'strcount' => 1,
12855             'dircount' => 0,
12856             'uncommit' => undef,
12857             'error' => undef,
12858             'patcount' => 0,
12859             'actcount' => 1,
12860             'items' => [
12861             bless( {
12862             'pattern' => '=',
12863             'hashname' => '__STRING1__',
12864             'description' => '\'=\'',
12865             'lookahead' => 0,
12866             'line' => 215
12867             }, 'Parse::RecDescent::Literal' ),
12868             bless( {
12869             'subrule' => '_alternation_1_of_production_1_of_rule_default',
12870             'matchrule' => 0,
12871             'implicit' => 'simple_multiword, or quoted_string',
12872             'argcode' => undef,
12873             'lookahead' => 0,
12874             'line' => 215
12875             }, 'Parse::RecDescent::Subrule' ),
12876             bless( {
12877             'hashname' => '__ACTION1__',
12878             'lookahead' => 0,
12879             'line' => 215,
12880             'code' => '{ $item[2] }'
12881             }, 'Parse::RecDescent::Action' )
12882             ],
12883             'line' => undef
12884             }, 'Parse::RecDescent::Production' )
12885             ],
12886             'name' => 'default',
12887             'vars' => '',
12888             'line' => 215
12889             }, 'Parse::RecDescent::Rule' ),
12890             'section_head' => bless( {
12891             'impcount' => 0,
12892             'calls' => [
12893             'identifier'
12894             ],
12895             'changed' => 0,
12896             'opcount' => 0,
12897             'prods' => [
12898             bless( {
12899             'number' => '0',
12900             'strcount' => 1,
12901             'dircount' => 0,
12902             'uncommit' => undef,
12903             'error' => undef,
12904             'patcount' => 1,
12905             'actcount' => 1,
12906             'items' => [
12907             bless( {
12908             'pattern' => '!section',
12909             'hashname' => '__STRING1__',
12910             'description' => '\'!section\'',
12911             'lookahead' => 0,
12912             'line' => 125
12913             }, 'Parse::RecDescent::Literal' ),
12914             bless( {
12915             'subrule' => 'identifier',
12916             'matchrule' => 0,
12917             'implicit' => undef,
12918             'argcode' => undef,
12919             'lookahead' => 0,
12920             'line' => 125
12921             }, 'Parse::RecDescent::Subrule' ),
12922             bless( {
12923             'pattern' => '.*',
12924             'hashname' => '__PATTERN1__',
12925             'description' => '/.*/',
12926             'lookahead' => 0,
12927             'rdelim' => '/',
12928             'line' => 125,
12929             'mod' => '',
12930             'ldelim' => '/'
12931             }, 'Parse::RecDescent::Token' ),
12932             bless( {
12933             'hashname' => '__ACTION1__',
12934             'lookahead' => 0,
12935             'line' => 126,
12936             'code' => '{
12937             #warn "starting section $item{identifier}\\n";
12938             #warn " with heading $item[3]\\n" if $item[3];
12939            
12940             if (@lines) {
12941             push @sections,
12942             {
12943             id => $section_id,
12944             head => $section_head,
12945             lines => [ @lines ],
12946             };
12947             }
12948            
12949             $section_id = $item{identifier};
12950             $section_head = $item[3];
12951             @lines = ();
12952             }'
12953             }, 'Parse::RecDescent::Action' )
12954             ],
12955             'line' => undef
12956             }, 'Parse::RecDescent::Production' )
12957             ],
12958             'name' => 'section_head',
12959             'vars' => '',
12960             'line' => 125
12961             }, 'Parse::RecDescent::Rule' ),
12962             '_alternation_1_of_production_1_of_rule_field_line' => bless( {
12963             'impcount' => 0,
12964             'calls' => [
12965             'field',
12966             'comment',
12967             'blank'
12968             ],
12969             'changed' => 0,
12970             'opcount' => 0,
12971             'prods' => [
12972             bless( {
12973             'number' => '0',
12974             'strcount' => 0,
12975             'dircount' => 0,
12976             'uncommit' => undef,
12977             'error' => undef,
12978             'patcount' => 0,
12979             'actcount' => 0,
12980             'items' => [
12981             bless( {
12982             'subrule' => 'field',
12983             'matchrule' => 0,
12984             'implicit' => undef,
12985             'argcode' => undef,
12986             'lookahead' => 0,
12987             'line' => 252
12988             }, 'Parse::RecDescent::Subrule' )
12989             ],
12990             'line' => undef
12991             }, 'Parse::RecDescent::Production' ),
12992             bless( {
12993             'number' => '1',
12994             'strcount' => 0,
12995             'dircount' => 0,
12996             'uncommit' => undef,
12997             'error' => undef,
12998             'patcount' => 0,
12999             'actcount' => 0,
13000             'items' => [
13001             bless( {
13002             'subrule' => 'comment',
13003             'matchrule' => 0,
13004             'implicit' => undef,
13005             'argcode' => undef,
13006             'lookahead' => 0,
13007             'line' => 252
13008             }, 'Parse::RecDescent::Subrule' )
13009             ],
13010             'line' => 252
13011             }, 'Parse::RecDescent::Production' ),
13012             bless( {
13013             'number' => '2',
13014             'strcount' => 0,
13015             'dircount' => 0,
13016             'uncommit' => undef,
13017             'error' => undef,
13018             'patcount' => 0,
13019             'actcount' => 0,
13020             'items' => [
13021             bless( {
13022             'subrule' => 'blank',
13023             'matchrule' => 0,
13024             'implicit' => undef,
13025             'argcode' => undef,
13026             'lookahead' => 0,
13027             'line' => 252
13028             }, 'Parse::RecDescent::Subrule' )
13029             ],
13030             'line' => 252
13031             }, 'Parse::RecDescent::Production' )
13032             ],
13033             'name' => '_alternation_1_of_production_1_of_rule_field_line',
13034             'vars' => '',
13035             'line' => 252
13036             }, 'Parse::RecDescent::Rule' ),
13037             'simple_multiword' => bless( {
13038             'impcount' => 0,
13039             'calls' => [],
13040             'changed' => 0,
13041             'opcount' => 0,
13042             'prods' => [
13043             bless( {
13044             'number' => '0',
13045             'strcount' => 0,
13046             'dircount' => 1,
13047             'uncommit' => undef,
13048             'error' => undef,
13049             'patcount' => 1,
13050             'actcount' => 1,
13051             'items' => [
13052             bless( {
13053             'hashname' => '__DIRECTIVE1__',
13054             'name' => '',
13055             'lookahead' => 0,
13056             'line' => 218,
13057             'code' => 'my $oldskip = $skip; $skip=\'\'; $oldskip'
13058             }, 'Parse::RecDescent::Directive' ),
13059             bless( {
13060             'pattern' => '[\\w\\t ]+',
13061             'hashname' => '__PATTERN1__',
13062             'description' => '/[\\\\w\\\\t ]+/',
13063             'lookahead' => 0,
13064             'rdelim' => '/',
13065             'line' => 218,
13066             'mod' => '',
13067             'ldelim' => '/'
13068             }, 'Parse::RecDescent::Token' ),
13069             bless( {
13070             'hashname' => '__ACTION1__',
13071             'lookahead' => 0,
13072             'line' => 218,
13073             'code' => '{ $item[2] }'
13074             }, 'Parse::RecDescent::Action' )
13075             ],
13076             'line' => undef
13077             }, 'Parse::RecDescent::Production' )
13078             ],
13079             'name' => 'simple_multiword',
13080             'vars' => '',
13081             'line' => 217
13082             }, 'Parse::RecDescent::Rule' ),
13083             'form_spec' => bless( {
13084             'impcount' => 1,
13085             'calls' => [
13086             '_alternation_1_of_production_1_of_rule_form_spec'
13087             ],
13088             'changed' => 0,
13089             'opcount' => 0,
13090             'prods' => [
13091             bless( {
13092             'number' => '0',
13093             'strcount' => 0,
13094             'dircount' => 0,
13095             'uncommit' => undef,
13096             'error' => undef,
13097             'patcount' => 0,
13098             'actcount' => 1,
13099             'items' => [
13100             bless( {
13101             'subrule' => '_alternation_1_of_production_1_of_rule_form_spec',
13102             'expected' => 'list_def, or description_def, or validate_def, or group_def, or note, or line',
13103             'min' => 1,
13104             'argcode' => undef,
13105             'max' => 100000000,
13106             'matchrule' => 0,
13107             'repspec' => 's',
13108             'lookahead' => 0,
13109             'line' => 28
13110             }, 'Parse::RecDescent::Repetition' ),
13111             bless( {
13112             'hashname' => '__ACTION1__',
13113             'lookahead' => 0,
13114             'line' => 29,
13115             'code' => '{
13116             # grab the last section, if there is any
13117             if (@lines) {
13118             push @sections,
13119             {
13120             id => $section_id,
13121             head => $section_head,
13122             lines => [ @lines ],
13123             };
13124             }
13125            
13126             $section_id = $item{identifier};
13127             $section_head = $item[3];
13128             @lines = ();
13129             $return = {
13130             title => $title,
13131             author => $author,
13132             description => $description,
13133             lists => \\%lists,
13134             patterns => \\%patterns,
13135             subs => \\%subs,
13136             groups => \\%groups,
13137             sections => \\@sections,
13138             }
13139             }'
13140             }, 'Parse::RecDescent::Action' )
13141             ],
13142             'line' => undef
13143             }, 'Parse::RecDescent::Production' )
13144             ],
13145             'name' => 'form_spec',
13146             'vars' => '',
13147             'line' => 28
13148             }, 'Parse::RecDescent::Rule' ),
13149             'hint' => bless( {
13150             'impcount' => 0,
13151             'calls' => [],
13152             'changed' => 0,
13153             'opcount' => 0,
13154             'prods' => [
13155             bless( {
13156             'number' => '0',
13157             'strcount' => 2,
13158             'dircount' => 0,
13159             'uncommit' => undef,
13160             'error' => undef,
13161             'patcount' => 1,
13162             'actcount' => 1,
13163             'items' => [
13164             bless( {
13165             'pattern' => '[',
13166             'hashname' => '__STRING1__',
13167             'description' => '\'[\'',
13168             'lookahead' => 0,
13169             'line' => 207
13170             }, 'Parse::RecDescent::Literal' ),
13171             bless( {
13172             'pattern' => '[^\\]]+',
13173             'hashname' => '__PATTERN1__',
13174             'description' => '/[^\\\\]]+/',
13175             'lookahead' => 0,
13176             'rdelim' => '/',
13177             'line' => 207,
13178             'mod' => '',
13179             'ldelim' => '/'
13180             }, 'Parse::RecDescent::Token' ),
13181             bless( {
13182             'pattern' => ']',
13183             'hashname' => '__STRING2__',
13184             'description' => '\']\'',
13185             'lookahead' => 0,
13186             'line' => 207
13187             }, 'Parse::RecDescent::Literal' ),
13188             bless( {
13189             'hashname' => '__ACTION1__',
13190             'lookahead' => 0,
13191             'line' => 207,
13192             'code' => '{ $item[2] }'
13193             }, 'Parse::RecDescent::Action' )
13194             ],
13195             'line' => undef
13196             }, 'Parse::RecDescent::Production' )
13197             ],
13198             'name' => 'hint',
13199             'vars' => '',
13200             'line' => 207
13201             }, 'Parse::RecDescent::Rule' ),
13202             'type' => bless( {
13203             'impcount' => 1,
13204             'calls' => [
13205             '_alternation_1_of_production_1_of_rule_type'
13206             ],
13207             'changed' => 0,
13208             'opcount' => 0,
13209             'prods' => [
13210             bless( {
13211             'number' => '0',
13212             'strcount' => 1,
13213             'dircount' => 0,
13214             'uncommit' => undef,
13215             'error' => undef,
13216             'patcount' => 0,
13217             'actcount' => 0,
13218             'items' => [
13219             bless( {
13220             'pattern' => ':',
13221             'hashname' => '__STRING1__',
13222             'description' => '\':\'',
13223             'lookahead' => 0,
13224             'line' => 210
13225             }, 'Parse::RecDescent::Literal' ),
13226             bless( {
13227             'subrule' => '_alternation_1_of_production_1_of_rule_type',
13228             'matchrule' => 0,
13229             'implicit' => 'builtin_field, or var_name',
13230             'argcode' => undef,
13231             'lookahead' => 0,
13232             'line' => 210
13233             }, 'Parse::RecDescent::Subrule' )
13234             ],
13235             'line' => undef
13236             }, 'Parse::RecDescent::Production' )
13237             ],
13238             'name' => 'type',
13239             'vars' => '',
13240             'line' => 209
13241             }, 'Parse::RecDescent::Rule' ),
13242             'label' => bless( {
13243             'impcount' => 1,
13244             'calls' => [
13245             '_alternation_1_of_production_1_of_rule_label'
13246             ],
13247             'changed' => 0,
13248             'opcount' => 0,
13249             'prods' => [
13250             bless( {
13251             'number' => '0',
13252             'strcount' => 1,
13253             'dircount' => 0,
13254             'uncommit' => undef,
13255             'error' => undef,
13256             'patcount' => 0,
13257             'actcount' => 1,
13258             'items' => [
13259             bless( {
13260             'pattern' => '|',
13261             'hashname' => '__STRING1__',
13262             'description' => '\'|\'',
13263             'lookahead' => 0,
13264             'line' => 205
13265             }, 'Parse::RecDescent::Literal' ),
13266             bless( {
13267             'subrule' => '_alternation_1_of_production_1_of_rule_label',
13268             'matchrule' => 0,
13269             'implicit' => 'simple_multiword, or quoted_string',
13270             'argcode' => undef,
13271             'lookahead' => 0,
13272             'line' => 205
13273             }, 'Parse::RecDescent::Subrule' ),
13274             bless( {
13275             'hashname' => '__ACTION1__',
13276             'lookahead' => 0,
13277             'line' => 205,
13278             'code' => '{ $item[2] }'
13279             }, 'Parse::RecDescent::Action' )
13280             ],
13281             'line' => undef
13282             }, 'Parse::RecDescent::Production' )
13283             ],
13284             'name' => 'label',
13285             'vars' => '',
13286             'line' => 205
13287             }, 'Parse::RecDescent::Rule' ),
13288             'title' => bless( {
13289             'impcount' => 0,
13290             'calls' => [],
13291             'changed' => 0,
13292             'opcount' => 0,
13293             'prods' => [
13294             bless( {
13295             'number' => '0',
13296             'strcount' => 1,
13297             'dircount' => 0,
13298             'uncommit' => undef,
13299             'error' => undef,
13300             'patcount' => 1,
13301             'actcount' => 1,
13302             'items' => [
13303             bless( {
13304             'pattern' => '!title',
13305             'hashname' => '__STRING1__',
13306             'description' => '\'!title\'',
13307             'lookahead' => 0,
13308             'line' => 108
13309             }, 'Parse::RecDescent::Literal' ),
13310             bless( {
13311             'pattern' => '.*',
13312             'hashname' => '__PATTERN1__',
13313             'description' => '/.*/',
13314             'lookahead' => 0,
13315             'rdelim' => '/',
13316             'line' => 108,
13317             'mod' => '',
13318             'ldelim' => '/'
13319             }, 'Parse::RecDescent::Token' ),
13320             bless( {
13321             'hashname' => '__ACTION1__',
13322             'lookahead' => 0,
13323             'line' => 109,
13324             'code' => '{
13325             warn "[Text::FormBuilder] Title redefined at input text line $thisline\\n" if defined $title;
13326             $title = $item[2];
13327             }'
13328             }, 'Parse::RecDescent::Action' )
13329             ],
13330             'line' => undef
13331             }, 'Parse::RecDescent::Production' )
13332             ],
13333             'name' => 'title',
13334             'vars' => '',
13335             'line' => 108
13336             }, 'Parse::RecDescent::Rule' ),
13337             'pattern_def' => bless( {
13338             'impcount' => 0,
13339             'calls' => [
13340             'var_name',
13341             'pattern'
13342             ],
13343             'changed' => 0,
13344             'opcount' => 0,
13345             'prods' => [
13346             bless( {
13347             'number' => '0',
13348             'strcount' => 1,
13349             'dircount' => 0,
13350             'uncommit' => undef,
13351             'error' => undef,
13352             'patcount' => 0,
13353             'actcount' => 1,
13354             'items' => [
13355             bless( {
13356             'pattern' => '!pattern',
13357             'hashname' => '__STRING1__',
13358             'description' => '\'!pattern\'',
13359             'lookahead' => 0,
13360             'line' => 120
13361             }, 'Parse::RecDescent::Literal' ),
13362             bless( {
13363             'subrule' => 'var_name',
13364             'matchrule' => 0,
13365             'implicit' => undef,
13366             'argcode' => undef,
13367             'lookahead' => 0,
13368             'line' => 120
13369             }, 'Parse::RecDescent::Subrule' ),
13370             bless( {
13371             'subrule' => 'pattern',
13372             'matchrule' => 0,
13373             'implicit' => undef,
13374             'argcode' => undef,
13375             'lookahead' => 0,
13376             'line' => 120
13377             }, 'Parse::RecDescent::Subrule' ),
13378             bless( {
13379             'hashname' => '__ACTION1__',
13380             'lookahead' => 0,
13381             'line' => 121,
13382             'code' => '{ $patterns{$item{var_name}} = $item{pattern} }'
13383             }, 'Parse::RecDescent::Action' )
13384             ],
13385             'line' => undef
13386             }, 'Parse::RecDescent::Production' )
13387             ],
13388             'name' => 'pattern_def',
13389             'vars' => '',
13390             'line' => 120
13391             }, 'Parse::RecDescent::Rule' ),
13392             'dynamic_list' => bless( {
13393             'impcount' => 0,
13394             'calls' => [],
13395             'changed' => 0,
13396             'opcount' => 0,
13397             'prods' => [
13398             bless( {
13399             'number' => '0',
13400             'strcount' => 1,
13401             'dircount' => 1,
13402             'uncommit' => undef,
13403             'error' => undef,
13404             'patcount' => 0,
13405             'actcount' => 1,
13406             'items' => [
13407             bless( {
13408             'pattern' => '&',
13409             'hashname' => '__STRING1__',
13410             'description' => '\'&\'',
13411             'lookahead' => 0,
13412             'line' => 60
13413             }, 'Parse::RecDescent::Literal' ),
13414             bless( {
13415             'hashname' => '__DIRECTIVE1__',
13416             'name' => '',
13417             'lookahead' => 0,
13418             'line' => 60,
13419             'code' => 'Text::Balanced::extract_codeblock($text,undef,$skip,\'{}\');
13420             '
13421             }, 'Parse::RecDescent::Directive' ),
13422             bless( {
13423             'hashname' => '__ACTION1__',
13424             'lookahead' => 0,
13425             'line' => 61,
13426             'code' => '{
13427             my @results = (eval $item[2]);
13428             if (ref $results[0] eq \'HASH\') {
13429             @options = @results;
13430             } else {
13431             @options = map { { $_ => $_ } } @results;
13432             }
13433             }'
13434             }, 'Parse::RecDescent::Action' )
13435             ],
13436             'line' => undef
13437             }, 'Parse::RecDescent::Production' )
13438             ],
13439             'name' => 'dynamic_list',
13440             'vars' => '',
13441             'line' => 60
13442             }, 'Parse::RecDescent::Rule' ),
13443             'builtin_field' => bless( {
13444             'impcount' => 0,
13445             'calls' => [],
13446             'changed' => 0,
13447             'opcount' => 0,
13448             'prods' => [
13449             bless( {
13450             'number' => '0',
13451             'strcount' => 0,
13452             'dircount' => 0,
13453             'uncommit' => undef,
13454             'error' => undef,
13455             'patcount' => 1,
13456             'actcount' => 0,
13457             'items' => [
13458             bless( {
13459             'pattern' => 'textarea|text|password|file|checkbox|radio|select|hidden|static',
13460             'hashname' => '__PATTERN1__',
13461             'description' => '/textarea|text|password|file|checkbox|radio|select|hidden|static/',
13462             'lookahead' => 0,
13463             'rdelim' => '/',
13464             'line' => 212,
13465             'mod' => '',
13466             'ldelim' => '/'
13467             }, 'Parse::RecDescent::Token' )
13468             ],
13469             'line' => undef
13470             }, 'Parse::RecDescent::Production' )
13471             ],
13472             'name' => 'builtin_field',
13473             'vars' => '',
13474             'line' => 212
13475             }, 'Parse::RecDescent::Rule' ),
13476             'options' => bless( {
13477             'impcount' => 0,
13478             'calls' => [
13479             'option'
13480             ],
13481             'changed' => 0,
13482             'opcount' => 0,
13483             'prods' => [
13484             bless( {
13485             'number' => '0',
13486             'strcount' => 2,
13487             'dircount' => 1,
13488             'uncommit' => undef,
13489             'error' => undef,
13490             'patcount' => 1,
13491             'actcount' => 0,
13492             'op' => [],
13493             'items' => [
13494             bless( {
13495             'pattern' => '{',
13496             'hashname' => '__STRING1__',
13497             'description' => '\'\\{\'',
13498             'lookahead' => 0,
13499             'line' => 227
13500             }, 'Parse::RecDescent::Literal' ),
13501             bless( {
13502             'expected' => '',
13503             'min' => 1,
13504             'name' => '\'option(s)\'',
13505             'max' => 100000000,
13506             'leftarg' => bless( {
13507             'subrule' => 'option',
13508             'matchrule' => 0,
13509             'implicit' => undef,
13510             'argcode' => undef,
13511             'lookahead' => 0,
13512             'line' => 227
13513             }, 'Parse::RecDescent::Subrule' ),
13514             'rightarg' => bless( {
13515             'subrule' => 'option',
13516             'matchrule' => 0,
13517             'implicit' => undef,
13518             'argcode' => undef,
13519             'lookahead' => 0,
13520             'line' => 227
13521             }, 'Parse::RecDescent::Subrule' ),
13522             'hashname' => '__DIRECTIVE1__',
13523             'type' => 'leftop',
13524             'op' => bless( {
13525             'pattern' => ',\\s*',
13526             'hashname' => '__PATTERN1__',
13527             'description' => '/,\\\\s*/',
13528             'lookahead' => 0,
13529             'rdelim' => '/',
13530             'line' => 227,
13531             'mod' => '',
13532             'ldelim' => '/'
13533             }, 'Parse::RecDescent::Token' )
13534             }, 'Parse::RecDescent::Operator' ),
13535             bless( {
13536             'pattern' => '}',
13537             'hashname' => '__STRING2__',
13538             'description' => '\'\\}\'',
13539             'lookahead' => 0,
13540             'line' => 227
13541             }, 'Parse::RecDescent::Literal' )
13542             ],
13543             'line' => undef
13544             }, 'Parse::RecDescent::Production' )
13545             ],
13546             'name' => 'options',
13547             'vars' => '',
13548             'line' => 227
13549             }, 'Parse::RecDescent::Rule' ),
13550             'list_def' => bless( {
13551             'impcount' => 1,
13552             'calls' => [
13553             'var_name',
13554             '_alternation_1_of_production_1_of_rule_list_def'
13555             ],
13556             'changed' => 0,
13557             'opcount' => 0,
13558             'prods' => [
13559             bless( {
13560             'number' => '0',
13561             'strcount' => 1,
13562             'dircount' => 0,
13563             'uncommit' => undef,
13564             'error' => undef,
13565             'patcount' => 0,
13566             'actcount' => 1,
13567             'items' => [
13568             bless( {
13569             'pattern' => '!list',
13570             'hashname' => '__STRING1__',
13571             'description' => '\'!list\'',
13572             'lookahead' => 0,
13573             'line' => 55
13574             }, 'Parse::RecDescent::Literal' ),
13575             bless( {
13576             'subrule' => 'var_name',
13577             'matchrule' => 0,
13578             'implicit' => undef,
13579             'argcode' => undef,
13580             'lookahead' => 0,
13581             'line' => 55
13582             }, 'Parse::RecDescent::Subrule' ),
13583             bless( {
13584             'subrule' => '_alternation_1_of_production_1_of_rule_list_def',
13585             'matchrule' => 0,
13586             'implicit' => 'static_list, or dynamic_list',
13587             'argcode' => undef,
13588             'lookahead' => 0,
13589             'line' => 55
13590             }, 'Parse::RecDescent::Subrule' ),
13591             bless( {
13592             'hashname' => '__ACTION1__',
13593             'lookahead' => 0,
13594             'line' => 56,
13595             'code' => '{ $lists{$item{var_name}} = [ @options ]; @options = () }'
13596             }, 'Parse::RecDescent::Action' )
13597             ],
13598             'line' => undef
13599             }, 'Parse::RecDescent::Production' )
13600             ],
13601             'name' => 'list_def',
13602             'vars' => '',
13603             'line' => 55
13604             }, 'Parse::RecDescent::Rule' ),
13605             'description_def' => bless( {
13606             'impcount' => 0,
13607             'calls' => [
13608             'block'
13609             ],
13610             'changed' => 0,
13611             'opcount' => 0,
13612             'prods' => [
13613             bless( {
13614             'number' => '0',
13615             'strcount' => 1,
13616             'dircount' => 0,
13617             'uncommit' => undef,
13618             'error' => undef,
13619             'patcount' => 0,
13620             'actcount' => 1,
13621             'items' => [
13622             bless( {
13623             'pattern' => '!description',
13624             'hashname' => '__STRING1__',
13625             'description' => '\'!description\'',
13626             'lookahead' => 0,
13627             'line' => 70
13628             }, 'Parse::RecDescent::Literal' ),
13629             bless( {
13630             'subrule' => 'block',
13631             'matchrule' => 0,
13632             'implicit' => undef,
13633             'argcode' => undef,
13634             'lookahead' => 0,
13635             'line' => 70
13636             }, 'Parse::RecDescent::Subrule' ),
13637             bless( {
13638             'hashname' => '__ACTION1__',
13639             'lookahead' => 0,
13640             'line' => 71,
13641             'code' => '{ warn "[Text::FormBuilder] Description redefined at input text line $thisline\\n" if defined $description;
13642            
13643             $description = $item[2];
13644             $description =~ s/^{\\s*|\\s*}$//g;
13645             }'
13646             }, 'Parse::RecDescent::Action' )
13647             ],
13648             'line' => undef
13649             }, 'Parse::RecDescent::Production' )
13650             ],
13651             'name' => 'description_def',
13652             'vars' => '',
13653             'line' => 70
13654             }, 'Parse::RecDescent::Rule' ),
13655             'field_line' => bless( {
13656             'impcount' => 1,
13657             'calls' => [
13658             '_alternation_1_of_production_1_of_rule_field_line'
13659             ],
13660             'changed' => 0,
13661             'opcount' => 0,
13662             'prods' => [
13663             bless( {
13664             'number' => '0',
13665             'strcount' => 1,
13666             'dircount' => 1,
13667             'uncommit' => undef,
13668             'error' => undef,
13669             'patcount' => 0,
13670             'actcount' => 0,
13671             'items' => [
13672             bless( {
13673             'hashname' => '__DIRECTIVE1__',
13674             'name' => '',
13675             'lookahead' => 0,
13676             'line' => 105,
13677             'code' => 'my $oldskip = $skip; $skip=\'[ \\t]*\'; $oldskip'
13678             }, 'Parse::RecDescent::Directive' ),
13679             bless( {
13680             'subrule' => '_alternation_1_of_production_1_of_rule_field_line',
13681             'matchrule' => 0,
13682             'implicit' => 'field, or comment, or blank',
13683             'argcode' => undef,
13684             'lookahead' => 0,
13685             'line' => 105
13686             }, 'Parse::RecDescent::Subrule' ),
13687             bless( {
13688             'pattern' => '\\n',
13689             'hashname' => '__STRING1__',
13690             'description' => '\'\\\\n\'',
13691             'lookahead' => 0,
13692             'line' => 105
13693             }, 'Parse::RecDescent::InterpLit' )
13694             ],
13695             'line' => undef
13696             }, 'Parse::RecDescent::Production' )
13697             ],
13698             'name' => 'field_line',
13699             'vars' => '',
13700             'line' => 105
13701             }, 'Parse::RecDescent::Rule' ),
13702             'author' => bless( {
13703             'impcount' => 0,
13704             'calls' => [],
13705             'changed' => 0,
13706             'opcount' => 0,
13707             'prods' => [
13708             bless( {
13709             'number' => '0',
13710             'strcount' => 1,
13711             'dircount' => 0,
13712             'uncommit' => undef,
13713             'error' => undef,
13714             'patcount' => 1,
13715             'actcount' => 1,
13716             'items' => [
13717             bless( {
13718             'pattern' => '!author',
13719             'hashname' => '__STRING1__',
13720             'description' => '\'!author\'',
13721             'lookahead' => 0,
13722             'line' => 114
13723             }, 'Parse::RecDescent::Literal' ),
13724             bless( {
13725             'pattern' => '.*',
13726             'hashname' => '__PATTERN1__',
13727             'description' => '/.*/',
13728             'lookahead' => 0,
13729             'rdelim' => '/',
13730             'line' => 114,
13731             'mod' => '',
13732             'ldelim' => '/'
13733             }, 'Parse::RecDescent::Token' ),
13734             bless( {
13735             'hashname' => '__ACTION1__',
13736             'lookahead' => 0,
13737             'line' => 115,
13738             'code' => '{
13739             warn "[Text::FormBuilder] Author redefined at input text line $thisline\\n" if defined $author;
13740             $author = $item[2];
13741             }'
13742             }, 'Parse::RecDescent::Action' )
13743             ],
13744             'line' => undef
13745             }, 'Parse::RecDescent::Production' )
13746             ],
13747             'name' => 'author',
13748             'vars' => '',
13749             'line' => 114
13750             }, 'Parse::RecDescent::Rule' ),
13751             'size' => bless( {
13752             'impcount' => 0,
13753             'calls' => [
13754             'bang'
13755             ],
13756             'changed' => 0,
13757             'opcount' => 0,
13758             'prods' => [
13759             bless( {
13760             'number' => '0',
13761             'strcount' => 0,
13762             'dircount' => 0,
13763             'uncommit' => undef,
13764             'error' => undef,
13765             'patcount' => 1,
13766             'actcount' => 1,
13767             'items' => [
13768             bless( {
13769             'pattern' => '\\d+',
13770             'hashname' => '__PATTERN1__',
13771             'description' => '/\\\\d+/',
13772             'lookahead' => 0,
13773             'rdelim' => '/',
13774             'line' => 197,
13775             'mod' => '',
13776             'ldelim' => '/'
13777             }, 'Parse::RecDescent::Token' ),
13778             bless( {
13779             'subrule' => 'bang',
13780             'expected' => undef,
13781             'min' => 0,
13782             'argcode' => undef,
13783             'max' => 1,
13784             'matchrule' => 0,
13785             'repspec' => '?',
13786             'lookahead' => 0,
13787             'line' => 197
13788             }, 'Parse::RecDescent::Repetition' ),
13789             bless( {
13790             'hashname' => '__ACTION1__',
13791             'lookahead' => 0,
13792             'line' => 198,
13793             'code' => '{ $maxlength = $item[1] if $item[2][0]; $size = $item[1] }'
13794             }, 'Parse::RecDescent::Action' )
13795             ],
13796             'line' => undef
13797             }, 'Parse::RecDescent::Production' )
13798             ],
13799             'name' => 'size',
13800             'vars' => '',
13801             'line' => 197
13802             }, 'Parse::RecDescent::Rule' ),
13803             '_alternation_1_of_production_1_of_rule_label' => bless( {
13804             'impcount' => 0,
13805             'calls' => [
13806             'simple_multiword',
13807             'quoted_string'
13808             ],
13809             'changed' => 0,
13810             'opcount' => 0,
13811             'prods' => [
13812             bless( {
13813             'number' => '0',
13814             'strcount' => 0,
13815             'dircount' => 0,
13816             'uncommit' => undef,
13817             'error' => undef,
13818             'patcount' => 0,
13819             'actcount' => 0,
13820             'items' => [
13821             bless( {
13822             'subrule' => 'simple_multiword',
13823             'matchrule' => 0,
13824             'implicit' => undef,
13825             'argcode' => undef,
13826             'lookahead' => 0,
13827             'line' => 252
13828             }, 'Parse::RecDescent::Subrule' )
13829             ],
13830             'line' => undef
13831             }, 'Parse::RecDescent::Production' ),
13832             bless( {
13833             'number' => '1',
13834             'strcount' => 0,
13835             'dircount' => 0,
13836             'uncommit' => undef,
13837             'error' => undef,
13838             'patcount' => 0,
13839             'actcount' => 0,
13840             'items' => [
13841             bless( {
13842             'subrule' => 'quoted_string',
13843             'matchrule' => 0,
13844             'implicit' => undef,
13845             'argcode' => undef,
13846             'lookahead' => 0,
13847             'line' => 252
13848             }, 'Parse::RecDescent::Subrule' )
13849             ],
13850             'line' => 252
13851             }, 'Parse::RecDescent::Production' )
13852             ],
13853             'name' => '_alternation_1_of_production_1_of_rule_label',
13854             'vars' => '',
13855             'line' => 252
13856             }, 'Parse::RecDescent::Rule' ),
13857             'var_name' => bless( {
13858             'impcount' => 0,
13859             'calls' => [],
13860             'changed' => 0,
13861             'opcount' => 0,
13862             'prods' => [
13863             bless( {
13864             'number' => '0',
13865             'strcount' => 0,
13866             'dircount' => 0,
13867             'uncommit' => undef,
13868             'error' => undef,
13869             'patcount' => 1,
13870             'actcount' => 0,
13871             'items' => [
13872             bless( {
13873             'pattern' => '[A-Z_]+',
13874             'hashname' => '__PATTERN1__',
13875             'description' => '/[A-Z_]+/',
13876             'lookahead' => 0,
13877             'rdelim' => '/',
13878             'line' => 193,
13879             'mod' => '',
13880             'ldelim' => '/'
13881             }, 'Parse::RecDescent::Token' )
13882             ],
13883             'line' => undef
13884             }, 'Parse::RecDescent::Production' )
13885             ],
13886             'name' => 'var_name',
13887             'vars' => '',
13888             'line' => 193
13889             }, 'Parse::RecDescent::Rule' ),
13890             'option' => bless( {
13891             'impcount' => 1,
13892             'calls' => [
13893             '_alternation_1_of_production_1_of_rule_option',
13894             'display_text'
13895             ],
13896             'changed' => 0,
13897             'opcount' => 0,
13898             'prods' => [
13899             bless( {
13900             'number' => '0',
13901             'strcount' => 0,
13902             'dircount' => 0,
13903             'uncommit' => undef,
13904             'error' => undef,
13905             'patcount' => 0,
13906             'actcount' => 1,
13907             'items' => [
13908             bless( {
13909             'subrule' => '_alternation_1_of_production_1_of_rule_option',
13910             'matchrule' => 0,
13911             'implicit' => 'simple_multiword, or value, or quoted_string',
13912             'argcode' => undef,
13913             'lookahead' => 0,
13914             'line' => 231
13915             }, 'Parse::RecDescent::Subrule' ),
13916             bless( {
13917             'subrule' => 'display_text',
13918             'expected' => undef,
13919             'min' => 0,
13920             'argcode' => undef,
13921             'max' => 1,
13922             'matchrule' => 0,
13923             'repspec' => '?',
13924             'lookahead' => 0,
13925             'line' => 231
13926             }, 'Parse::RecDescent::Repetition' ),
13927             bless( {
13928             'hashname' => '__ACTION1__',
13929             'lookahead' => 0,
13930             'line' => 232,
13931             'code' => '{ push @options, { $item[1] => $item{\'display_text(?)\'}[0] } }'
13932             }, 'Parse::RecDescent::Action' )
13933             ],
13934             'line' => undef
13935             }, 'Parse::RecDescent::Production' )
13936             ],
13937             'name' => 'option',
13938             'vars' => '',
13939             'line' => 231
13940             }, 'Parse::RecDescent::Rule' ),
13941             'group_field' => bless( {
13942             'impcount' => 0,
13943             'calls' => [
13944             'group_name',
13945             'name',
13946             'label'
13947             ],
13948             'changed' => 0,
13949             'opcount' => 0,
13950             'prods' => [
13951             bless( {
13952             'number' => '0',
13953             'strcount' => 1,
13954             'dircount' => 0,
13955             'uncommit' => undef,
13956             'error' => undef,
13957             'patcount' => 0,
13958             'actcount' => 1,
13959             'items' => [
13960             bless( {
13961             'pattern' => '!field',
13962             'hashname' => '__STRING1__',
13963             'description' => '\'!field\'',
13964             'lookahead' => 0,
13965             'line' => 146
13966             }, 'Parse::RecDescent::Literal' ),
13967             bless( {
13968             'subrule' => 'group_name',
13969             'matchrule' => 0,
13970             'implicit' => undef,
13971             'argcode' => undef,
13972             'lookahead' => 0,
13973             'line' => 146
13974             }, 'Parse::RecDescent::Subrule' ),
13975             bless( {
13976             'subrule' => 'name',
13977             'matchrule' => 0,
13978             'implicit' => undef,
13979             'argcode' => undef,
13980             'lookahead' => 0,
13981             'line' => 146
13982             }, 'Parse::RecDescent::Subrule' ),
13983             bless( {
13984             'subrule' => 'label',
13985             'expected' => undef,
13986             'min' => 0,
13987             'argcode' => undef,
13988             'max' => 1,
13989             'matchrule' => 0,
13990             'repspec' => '?',
13991             'lookahead' => 0,
13992             'line' => 146
13993             }, 'Parse::RecDescent::Repetition' ),
13994             bless( {
13995             'hashname' => '__ACTION1__',
13996             'lookahead' => 0,
13997             'line' => 147,
13998             'code' => '{
13999             push @lines, [ \'group\', { name => $item{name}, label => $item{\'label(?)\'}[0], group => $item{group_name} } ];
14000             }'
14001             }, 'Parse::RecDescent::Action' )
14002             ],
14003             'line' => undef
14004             }, 'Parse::RecDescent::Production' )
14005             ],
14006             'name' => 'group_field',
14007             'vars' => '',
14008             'line' => 146
14009             }, 'Parse::RecDescent::Rule' ),
14010             'validate' => bless( {
14011             'impcount' => 1,
14012             'calls' => [
14013             '_alternation_1_of_production_1_of_rule_validate'
14014             ],
14015             'changed' => 0,
14016             'opcount' => 0,
14017             'prods' => [
14018             bless( {
14019             'number' => '0',
14020             'strcount' => 1,
14021             'dircount' => 0,
14022             'uncommit' => undef,
14023             'error' => undef,
14024             'patcount' => 0,
14025             'actcount' => 1,
14026             'items' => [
14027             bless( {
14028             'pattern' => '//',
14029             'hashname' => '__STRING1__',
14030             'description' => '\'//\'',
14031             'lookahead' => 0,
14032             'line' => 238
14033             }, 'Parse::RecDescent::Literal' ),
14034             bless( {
14035             'subrule' => '_alternation_1_of_production_1_of_rule_validate',
14036             'matchrule' => 0,
14037             'implicit' => 'optional_pattern, or required_pattern',
14038             'argcode' => undef,
14039             'lookahead' => 0,
14040             'line' => 238
14041             }, 'Parse::RecDescent::Subrule' ),
14042             bless( {
14043             'hashname' => '__ACTION1__',
14044             'lookahead' => 0,
14045             'line' => 238,
14046             'code' => '{ $item[2] }'
14047             }, 'Parse::RecDescent::Action' )
14048             ],
14049             'line' => undef
14050             }, 'Parse::RecDescent::Production' )
14051             ],
14052             'name' => 'validate',
14053             'vars' => '',
14054             'line' => 238
14055             }, 'Parse::RecDescent::Rule' ),
14056             'list_var' => bless( {
14057             'impcount' => 0,
14058             'calls' => [],
14059             'changed' => 0,
14060             'opcount' => 0,
14061             'prods' => [
14062             bless( {
14063             'number' => '0',
14064             'strcount' => 0,
14065             'dircount' => 0,
14066             'uncommit' => undef,
14067             'error' => undef,
14068             'patcount' => 1,
14069             'actcount' => 1,
14070             'items' => [
14071             bless( {
14072             'pattern' => '@[A-Z_]+',
14073             'hashname' => '__PATTERN1__',
14074             'description' => '/@[A-Z_]+/',
14075             'lookahead' => 0,
14076             'rdelim' => '/',
14077             'line' => 229,
14078             'mod' => '',
14079             'ldelim' => '/'
14080             }, 'Parse::RecDescent::Token' ),
14081             bless( {
14082             'hashname' => '__ACTION1__',
14083             'lookahead' => 0,
14084             'line' => 229,
14085             'code' => '{ $list_var = $item[1] }'
14086             }, 'Parse::RecDescent::Action' )
14087             ],
14088             'line' => undef
14089             }, 'Parse::RecDescent::Production' )
14090             ],
14091             'name' => 'list_var',
14092             'vars' => '',
14093             'line' => 229
14094             }, 'Parse::RecDescent::Rule' ),
14095             '_alternation_1_of_production_1_of_rule_line' => bless( {
14096             'impcount' => 0,
14097             'calls' => [
14098             'title',
14099             'author',
14100             'pattern_def',
14101             'section_head',
14102             'heading',
14103             'group_field',
14104             'unknown_directive',
14105             'field',
14106             'comment',
14107             'blank'
14108             ],
14109             'changed' => 0,
14110             'opcount' => 0,
14111             'prods' => [
14112             bless( {
14113             'number' => '0',
14114             'strcount' => 0,
14115             'dircount' => 0,
14116             'uncommit' => undef,
14117             'error' => undef,
14118             'patcount' => 0,
14119             'actcount' => 0,
14120             'items' => [
14121             bless( {
14122             'subrule' => 'title',
14123             'matchrule' => 0,
14124             'implicit' => undef,
14125             'argcode' => undef,
14126             'lookahead' => 0,
14127             'line' => 252
14128             }, 'Parse::RecDescent::Subrule' )
14129             ],
14130             'line' => undef
14131             }, 'Parse::RecDescent::Production' ),
14132             bless( {
14133             'number' => '1',
14134             'strcount' => 0,
14135             'dircount' => 0,
14136             'uncommit' => undef,
14137             'error' => undef,
14138             'patcount' => 0,
14139             'actcount' => 0,
14140             'items' => [
14141             bless( {
14142             'subrule' => 'author',
14143             'matchrule' => 0,
14144             'implicit' => undef,
14145             'argcode' => undef,
14146             'lookahead' => 0,
14147             'line' => 252
14148             }, 'Parse::RecDescent::Subrule' )
14149             ],
14150             'line' => 252
14151             }, 'Parse::RecDescent::Production' ),
14152             bless( {
14153             'number' => '2',
14154             'strcount' => 0,
14155             'dircount' => 0,
14156             'uncommit' => undef,
14157             'error' => undef,
14158             'patcount' => 0,
14159             'actcount' => 0,
14160             'items' => [
14161             bless( {
14162             'subrule' => 'pattern_def',
14163             'matchrule' => 0,
14164             'implicit' => undef,
14165             'argcode' => undef,
14166             'lookahead' => 0,
14167             'line' => 252
14168             }, 'Parse::RecDescent::Subrule' )
14169             ],
14170             'line' => 252
14171             }, 'Parse::RecDescent::Production' ),
14172             bless( {
14173             'number' => '3',
14174             'strcount' => 0,
14175             'dircount' => 0,
14176             'uncommit' => undef,
14177             'error' => undef,
14178             'patcount' => 0,
14179             'actcount' => 0,
14180             'items' => [
14181             bless( {
14182             'subrule' => 'section_head',
14183             'matchrule' => 0,
14184             'implicit' => undef,
14185             'argcode' => undef,
14186             'lookahead' => 0,
14187             'line' => 252
14188             }, 'Parse::RecDescent::Subrule' )
14189             ],
14190             'line' => 252
14191             }, 'Parse::RecDescent::Production' ),
14192             bless( {
14193             'number' => '4',
14194             'strcount' => 0,
14195             'dircount' => 0,
14196             'uncommit' => undef,
14197             'error' => undef,
14198             'patcount' => 0,
14199             'actcount' => 0,
14200             'items' => [
14201             bless( {
14202             'subrule' => 'heading',
14203             'matchrule' => 0,
14204             'implicit' => undef,
14205             'argcode' => undef,
14206             'lookahead' => 0,
14207             'line' => 252
14208             }, 'Parse::RecDescent::Subrule' )
14209             ],
14210             'line' => 252
14211             }, 'Parse::RecDescent::Production' ),
14212             bless( {
14213             'number' => '5',
14214             'strcount' => 0,
14215             'dircount' => 0,
14216             'uncommit' => undef,
14217             'error' => undef,
14218             'patcount' => 0,
14219             'actcount' => 0,
14220             'items' => [
14221             bless( {
14222             'subrule' => 'group_field',
14223             'matchrule' => 0,
14224             'implicit' => undef,
14225             'argcode' => undef,
14226             'lookahead' => 0,
14227             'line' => 252
14228             }, 'Parse::RecDescent::Subrule' )
14229             ],
14230             'line' => 252
14231             }, 'Parse::RecDescent::Production' ),
14232             bless( {
14233             'number' => '6',
14234             'strcount' => 0,
14235             'dircount' => 0,
14236             'uncommit' => undef,
14237             'error' => undef,
14238             'patcount' => 0,
14239             'actcount' => 0,
14240             'items' => [
14241             bless( {
14242             'subrule' => 'unknown_directive',
14243             'matchrule' => 0,
14244             'implicit' => undef,
14245             'argcode' => undef,
14246             'lookahead' => 0,
14247             'line' => 252
14248             }, 'Parse::RecDescent::Subrule' )
14249             ],
14250             'line' => 252
14251             }, 'Parse::RecDescent::Production' ),
14252             bless( {
14253             'number' => '7',
14254             'strcount' => 0,
14255             'dircount' => 0,
14256             'uncommit' => undef,
14257             'error' => undef,
14258             'patcount' => 0,
14259             'actcount' => 0,
14260             'items' => [
14261             bless( {
14262             'subrule' => 'field',
14263             'matchrule' => 0,
14264             'implicit' => undef,
14265             'argcode' => undef,
14266             'lookahead' => 0,
14267             'line' => 252
14268             }, 'Parse::RecDescent::Subrule' )
14269             ],
14270             'line' => 252
14271             }, 'Parse::RecDescent::Production' ),
14272             bless( {
14273             'number' => '8',
14274             'strcount' => 0,
14275             'dircount' => 0,
14276             'uncommit' => undef,
14277             'error' => undef,
14278             'patcount' => 0,
14279             'actcount' => 0,
14280             'items' => [
14281             bless( {
14282             'subrule' => 'comment',
14283             'matchrule' => 0,
14284             'implicit' => undef,
14285             'argcode' => undef,
14286             'lookahead' => 0,
14287             'line' => 252
14288             }, 'Parse::RecDescent::Subrule' )
14289             ],
14290             'line' => 252
14291             }, 'Parse::RecDescent::Production' ),
14292             bless( {
14293             'number' => '9',
14294             'strcount' => 0,
14295             'dircount' => 0,
14296             'uncommit' => undef,
14297             'error' => undef,
14298             'patcount' => 0,
14299             'actcount' => 0,
14300             'items' => [
14301             bless( {
14302             'subrule' => 'blank',
14303             'matchrule' => 0,
14304             'implicit' => undef,
14305             'argcode' => undef,
14306             'lookahead' => 0,
14307             'line' => 252
14308             }, 'Parse::RecDescent::Subrule' )
14309             ],
14310             'line' => 252
14311             }, 'Parse::RecDescent::Production' )
14312             ],
14313             'name' => '_alternation_1_of_production_1_of_rule_line',
14314             'vars' => '',
14315             'line' => 252
14316             }, 'Parse::RecDescent::Rule' ),
14317             'bang' => bless( {
14318             'impcount' => 0,
14319             'calls' => [],
14320             'changed' => 0,
14321             'opcount' => 0,
14322             'prods' => [
14323             bless( {
14324             'number' => '0',
14325             'strcount' => 1,
14326             'dircount' => 0,
14327             'uncommit' => undef,
14328             'error' => undef,
14329             'patcount' => 0,
14330             'actcount' => 0,
14331             'items' => [
14332             bless( {
14333             'pattern' => '!',
14334             'hashname' => '__STRING1__',
14335             'description' => '\'!\'',
14336             'lookahead' => 0,
14337             'line' => 200
14338             }, 'Parse::RecDescent::Literal' )
14339             ],
14340             'line' => undef
14341             }, 'Parse::RecDescent::Production' )
14342             ],
14343             'name' => 'bang',
14344             'vars' => '',
14345             'line' => 200
14346             }, 'Parse::RecDescent::Rule' ),
14347             'group_name' => bless( {
14348             'impcount' => 0,
14349             'calls' => [],
14350             'changed' => 0,
14351             'opcount' => 0,
14352             'prods' => [
14353             bless( {
14354             'number' => '0',
14355             'strcount' => 0,
14356             'dircount' => 0,
14357             'uncommit' => undef,
14358             'error' => undef,
14359             'patcount' => 1,
14360             'actcount' => 0,
14361             'items' => [
14362             bless( {
14363             'pattern' => '%[A-Z_]+',
14364             'hashname' => '__PATTERN1__',
14365             'description' => '/%[A-Z_]+/',
14366             'lookahead' => 0,
14367             'rdelim' => '/',
14368             'line' => 151,
14369             'mod' => '',
14370             'ldelim' => '/'
14371             }, 'Parse::RecDescent::Token' )
14372             ],
14373             'line' => undef
14374             }, 'Parse::RecDescent::Production' )
14375             ],
14376             'name' => 'group_name',
14377             'vars' => '',
14378             'line' => 151
14379             }, 'Parse::RecDescent::Rule' ),
14380             'block_content' => bless( {
14381             'impcount' => 0,
14382             'calls' => [
14383             'block'
14384             ],
14385             'changed' => 0,
14386             'opcount' => 0,
14387             'prods' => [
14388             bless( {
14389             'number' => '0',
14390             'strcount' => 0,
14391             'dircount' => 0,
14392             'uncommit' => undef,
14393             'error' => undef,
14394             'patcount' => 1,
14395             'actcount' => 0,
14396             'items' => [
14397             bless( {
14398             'pattern' => '[^\\{\\}]+?',
14399             'hashname' => '__PATTERN1__',
14400             'description' => '/[^\\\\\\{\\\\\\}]+?/',
14401             'lookahead' => 0,
14402             'rdelim' => '/',
14403             'line' => 102,
14404             'mod' => '',
14405             'ldelim' => '/'
14406             }, 'Parse::RecDescent::Token' )
14407             ],
14408             'line' => undef
14409             }, 'Parse::RecDescent::Production' ),
14410             bless( {
14411             'number' => '1',
14412             'strcount' => 0,
14413             'dircount' => 0,
14414             'uncommit' => undef,
14415             'error' => undef,
14416             'patcount' => 0,
14417             'actcount' => 0,
14418             'items' => [
14419             bless( {
14420             'subrule' => 'block',
14421             'matchrule' => 0,
14422             'implicit' => undef,
14423             'argcode' => undef,
14424             'lookahead' => 0,
14425             'line' => 102
14426             }, 'Parse::RecDescent::Subrule' )
14427             ],
14428             'line' => 102
14429             }, 'Parse::RecDescent::Production' )
14430             ],
14431             'name' => 'block_content',
14432             'vars' => '',
14433             'line' => 102
14434             }, 'Parse::RecDescent::Rule' ),
14435             '_alternation_1_of_production_1_of_rule_field_size' => bless( {
14436             'impcount' => 0,
14437             'calls' => [
14438             'row_col',
14439             'size'
14440             ],
14441             'changed' => 0,
14442             'opcount' => 0,
14443             'prods' => [
14444             bless( {
14445             'number' => '0',
14446             'strcount' => 0,
14447             'dircount' => 0,
14448             'uncommit' => undef,
14449             'error' => undef,
14450             'patcount' => 0,
14451             'actcount' => 0,
14452             'items' => [
14453             bless( {
14454             'subrule' => 'row_col',
14455             'matchrule' => 0,
14456             'implicit' => undef,
14457             'argcode' => undef,
14458             'lookahead' => 0,
14459             'line' => 252
14460             }, 'Parse::RecDescent::Subrule' )
14461             ],
14462             'line' => undef
14463             }, 'Parse::RecDescent::Production' ),
14464             bless( {
14465             'number' => '1',
14466             'strcount' => 0,
14467             'dircount' => 0,
14468             'uncommit' => undef,
14469             'error' => undef,
14470             'patcount' => 0,
14471             'actcount' => 0,
14472             'items' => [
14473             bless( {
14474             'subrule' => 'size',
14475             'matchrule' => 0,
14476             'implicit' => undef,
14477             'argcode' => undef,
14478             'lookahead' => 0,
14479             'line' => 252
14480             }, 'Parse::RecDescent::Subrule' )
14481             ],
14482             'line' => 252
14483             }, 'Parse::RecDescent::Production' )
14484             ],
14485             'name' => '_alternation_1_of_production_1_of_rule_field_size',
14486             'vars' => '',
14487             'line' => 252
14488             }, 'Parse::RecDescent::Rule' ),
14489             'display_text' => bless( {
14490             'impcount' => 0,
14491             'calls' => [],
14492             'changed' => 0,
14493             'opcount' => 0,
14494             'prods' => [
14495             bless( {
14496             'number' => '0',
14497             'strcount' => 2,
14498             'dircount' => 0,
14499             'uncommit' => undef,
14500             'error' => undef,
14501             'patcount' => 1,
14502             'actcount' => 1,
14503             'items' => [
14504             bless( {
14505             'pattern' => '[',
14506             'hashname' => '__STRING1__',
14507             'description' => '\'[\'',
14508             'lookahead' => 0,
14509             'line' => 236
14510             }, 'Parse::RecDescent::Literal' ),
14511             bless( {
14512             'pattern' => '[^\\]]+',
14513             'hashname' => '__PATTERN1__',
14514             'description' => '/[^\\\\]]+/i',
14515             'lookahead' => 0,
14516             'rdelim' => '/',
14517             'line' => 236,
14518             'mod' => 'i',
14519             'ldelim' => '/'
14520             }, 'Parse::RecDescent::Token' ),
14521             bless( {
14522             'pattern' => ']',
14523             'hashname' => '__STRING2__',
14524             'description' => '\']\'',
14525             'lookahead' => 0,
14526             'line' => 236
14527             }, 'Parse::RecDescent::Literal' ),
14528             bless( {
14529             'hashname' => '__ACTION1__',
14530             'lookahead' => 0,
14531             'line' => 236,
14532             'code' => '{ $item[2] }'
14533             }, 'Parse::RecDescent::Action' )
14534             ],
14535             'line' => undef
14536             }, 'Parse::RecDescent::Production' )
14537             ],
14538             'name' => 'display_text',
14539             'vars' => '',
14540             'line' => 236
14541             }, 'Parse::RecDescent::Rule' ),
14542             '_alternation_1_of_production_1_of_rule_list_def' => bless( {
14543             'impcount' => 0,
14544             'calls' => [
14545             'static_list',
14546             'dynamic_list'
14547             ],
14548             'changed' => 0,
14549             'opcount' => 0,
14550             'prods' => [
14551             bless( {
14552             'number' => '0',
14553             'strcount' => 0,
14554             'dircount' => 0,
14555             'uncommit' => undef,
14556             'error' => undef,
14557             'patcount' => 0,
14558             'actcount' => 0,
14559             'items' => [
14560             bless( {
14561             'subrule' => 'static_list',
14562             'matchrule' => 0,
14563             'implicit' => undef,
14564             'argcode' => undef,
14565             'lookahead' => 0,
14566             'line' => 252
14567             }, 'Parse::RecDescent::Subrule' )
14568             ],
14569             'line' => undef
14570             }, 'Parse::RecDescent::Production' ),
14571             bless( {
14572             'number' => '1',
14573             'strcount' => 0,
14574             'dircount' => 0,
14575             'uncommit' => undef,
14576             'error' => undef,
14577             'patcount' => 0,
14578             'actcount' => 0,
14579             'items' => [
14580             bless( {
14581             'subrule' => 'dynamic_list',
14582             'matchrule' => 0,
14583             'implicit' => undef,
14584             'argcode' => undef,
14585             'lookahead' => 0,
14586             'line' => 252
14587             }, 'Parse::RecDescent::Subrule' )
14588             ],
14589             'line' => 252
14590             }, 'Parse::RecDescent::Production' )
14591             ],
14592             'name' => '_alternation_1_of_production_1_of_rule_list_def',
14593             'vars' => '',
14594             'line' => 252
14595             }, 'Parse::RecDescent::Rule' ),
14596             'quoted_string' => bless( {
14597             'impcount' => 0,
14598             'calls' => [],
14599             'changed' => 0,
14600             'opcount' => 0,
14601             'prods' => [
14602             bless( {
14603             'number' => '0',
14604             'strcount' => 2,
14605             'dircount' => 1,
14606             'uncommit' => undef,
14607             'error' => undef,
14608             'patcount' => 1,
14609             'actcount' => 1,
14610             'items' => [
14611             bless( {
14612             'hashname' => '__DIRECTIVE1__',
14613             'name' => '',
14614             'lookahead' => 0,
14615             'line' => 222,
14616             'code' => 'my $oldskip = $skip; $skip=\'\'; $oldskip'
14617             }, 'Parse::RecDescent::Directive' ),
14618             bless( {
14619             'pattern' => '\'',
14620             'hashname' => '__STRING1__',
14621             'description' => '\'\'\'',
14622             'lookahead' => 0,
14623             'line' => 222
14624             }, 'Parse::RecDescent::InterpLit' ),
14625             bless( {
14626             'pattern' => '(\\\\\'|[^\'])*',
14627             'hashname' => '__PATTERN1__',
14628             'description' => '/(\\\\\\\\\'|[^\'])*/',
14629             'lookahead' => 0,
14630             'rdelim' => '/',
14631             'line' => 222,
14632             'mod' => '',
14633             'ldelim' => '/'
14634             }, 'Parse::RecDescent::Token' ),
14635             bless( {
14636             'pattern' => '\'',
14637             'hashname' => '__STRING2__',
14638             'description' => '\'\'\'',
14639             'lookahead' => 0,
14640             'line' => 222
14641             }, 'Parse::RecDescent::InterpLit' ),
14642             bless( {
14643             'hashname' => '__ACTION1__',
14644             'lookahead' => 0,
14645             'line' => 223,
14646             'code' => '{ $item[3] =~ s/\\\\\'/\'/g; $item[3] }'
14647             }, 'Parse::RecDescent::Action' )
14648             ],
14649             'line' => undef
14650             }, 'Parse::RecDescent::Production' )
14651             ],
14652             'name' => 'quoted_string',
14653             'vars' => '',
14654             'line' => 221
14655             }, 'Parse::RecDescent::Rule' ),
14656             'note' => bless( {
14657             'impcount' => 0,
14658             'calls' => [
14659             'block'
14660             ],
14661             'changed' => 0,
14662             'opcount' => 0,
14663             'prods' => [
14664             bless( {
14665             'number' => '0',
14666             'strcount' => 1,
14667             'dircount' => 0,
14668             'uncommit' => undef,
14669             'error' => undef,
14670             'patcount' => 0,
14671             'actcount' => 1,
14672             'items' => [
14673             bless( {
14674             'pattern' => '!note',
14675             'hashname' => '__STRING1__',
14676             'description' => '\'!note\'',
14677             'lookahead' => 0,
14678             'line' => 87
14679             }, 'Parse::RecDescent::Literal' ),
14680             bless( {
14681             'subrule' => 'block',
14682             'matchrule' => 0,
14683             'implicit' => undef,
14684             'argcode' => undef,
14685             'lookahead' => 0,
14686             'line' => 87
14687             }, 'Parse::RecDescent::Subrule' ),
14688             bless( {
14689             'hashname' => '__ACTION1__',
14690             'lookahead' => 0,
14691             'line' => 88,
14692             'code' => '{
14693             (my $note = $item[2]) =~ s/^{\\s*|\\s*}$//g;
14694             push @lines, [ \'note\', $note ];
14695             }'
14696             }, 'Parse::RecDescent::Action' )
14697             ],
14698             'line' => undef
14699             }, 'Parse::RecDescent::Production' )
14700             ],
14701             'name' => 'note',
14702             'vars' => '',
14703             'line' => 87
14704             }, 'Parse::RecDescent::Rule' ),
14705             'pattern' => bless( {
14706             'impcount' => 0,
14707             'calls' => [],
14708             'changed' => 0,
14709             'opcount' => 0,
14710             'prods' => [
14711             bless( {
14712             'number' => '0',
14713             'strcount' => 0,
14714             'dircount' => 0,
14715             'uncommit' => undef,
14716             'error' => undef,
14717             'patcount' => 1,
14718             'actcount' => 0,
14719             'items' => [
14720             bless( {
14721             'pattern' => '.*',
14722             'hashname' => '__PATTERN1__',
14723             'description' => '/.*/',
14724             'lookahead' => 0,
14725             'rdelim' => '/',
14726             'line' => 123,
14727             'mod' => '',
14728             'ldelim' => '/'
14729             }, 'Parse::RecDescent::Token' )
14730             ],
14731             'line' => undef
14732             }, 'Parse::RecDescent::Production' )
14733             ],
14734             'name' => 'pattern',
14735             'vars' => '',
14736             'line' => 123
14737             }, 'Parse::RecDescent::Rule' ),
14738             'comment' => bless( {
14739             'impcount' => 0,
14740             'calls' => [],
14741             'changed' => 0,
14742             'opcount' => 0,
14743             'prods' => [
14744             bless( {
14745             'number' => '0',
14746             'strcount' => 1,
14747             'dircount' => 0,
14748             'uncommit' => undef,
14749             'error' => undef,
14750             'patcount' => 1,
14751             'actcount' => 0,
14752             'items' => [
14753             bless( {
14754             'pattern' => '#',
14755             'hashname' => '__STRING1__',
14756             'description' => '\'#\'',
14757             'lookahead' => 0,
14758             'line' => 244
14759             }, 'Parse::RecDescent::Literal' ),
14760             bless( {
14761             'pattern' => '.*',
14762             'hashname' => '__PATTERN1__',
14763             'description' => '/.*/',
14764             'lookahead' => 0,
14765             'rdelim' => '/',
14766             'line' => 244,
14767             'mod' => '',
14768             'ldelim' => '/'
14769             }, 'Parse::RecDescent::Token' )
14770             ],
14771             'line' => undef
14772             }, 'Parse::RecDescent::Production' )
14773             ],
14774             'name' => 'comment',
14775             'vars' => '',
14776             'line' => 244
14777             }, 'Parse::RecDescent::Rule' ),
14778             '_alternation_1_of_production_1_of_rule_option' => bless( {
14779             'impcount' => 0,
14780             'calls' => [
14781             'simple_multiword',
14782             'value',
14783             'quoted_string'
14784             ],
14785             'changed' => 0,
14786             'opcount' => 0,
14787             'prods' => [
14788             bless( {
14789             'number' => '0',
14790             'strcount' => 0,
14791             'dircount' => 0,
14792             'uncommit' => undef,
14793             'error' => undef,
14794             'patcount' => 0,
14795             'actcount' => 0,
14796             'items' => [
14797             bless( {
14798             'subrule' => 'simple_multiword',
14799             'matchrule' => 0,
14800             'implicit' => undef,
14801             'argcode' => undef,
14802             'lookahead' => 0,
14803             'line' => 252
14804             }, 'Parse::RecDescent::Subrule' )
14805             ],
14806             'line' => undef
14807             }, 'Parse::RecDescent::Production' ),
14808             bless( {
14809             'number' => '1',
14810             'strcount' => 0,
14811             'dircount' => 0,
14812             'uncommit' => undef,
14813             'error' => undef,
14814             'patcount' => 0,
14815             'actcount' => 0,
14816             'items' => [
14817             bless( {
14818             'subrule' => 'value',
14819             'matchrule' => 0,
14820             'implicit' => undef,
14821             'argcode' => undef,
14822             'lookahead' => 0,
14823             'line' => 252
14824             }, 'Parse::RecDescent::Subrule' )
14825             ],
14826             'line' => 252
14827             }, 'Parse::RecDescent::Production' ),
14828             bless( {
14829             'number' => '2',
14830             'strcount' => 0,
14831             'dircount' => 0,
14832             'uncommit' => undef,
14833             'error' => undef,
14834             'patcount' => 0,
14835             'actcount' => 0,
14836             'items' => [
14837             bless( {
14838             'subrule' => 'quoted_string',
14839             'matchrule' => 0,
14840             'implicit' => undef,
14841             'argcode' => undef,
14842             'lookahead' => 0,
14843             'line' => 252
14844             }, 'Parse::RecDescent::Subrule' )
14845             ],
14846             'line' => 252
14847             }, 'Parse::RecDescent::Production' )
14848             ],
14849             'name' => '_alternation_1_of_production_1_of_rule_option',
14850             'vars' => '',
14851             'line' => 252
14852             }, 'Parse::RecDescent::Rule' ),
14853             'block' => bless( {
14854             'impcount' => 0,
14855             'calls' => [
14856             'block_content'
14857             ],
14858             'changed' => 0,
14859             'opcount' => 0,
14860             'prods' => [
14861             bless( {
14862             'number' => '0',
14863             'strcount' => 2,
14864             'dircount' => 1,
14865             'uncommit' => undef,
14866             'error' => undef,
14867             'patcount' => 0,
14868             'actcount' => 1,
14869             'items' => [
14870             bless( {
14871             'pattern' => '{',
14872             'hashname' => '__STRING1__',
14873             'description' => '\'\\{\'',
14874             'lookahead' => 0,
14875             'line' => 97
14876             }, 'Parse::RecDescent::Literal' ),
14877             bless( {
14878             'hashname' => '__DIRECTIVE1__',
14879             'name' => '',
14880             'lookahead' => 0,
14881             'line' => 97,
14882             'code' => 'my $oldskip = $skip; $skip=\'\'; $oldskip'
14883             }, 'Parse::RecDescent::Directive' ),
14884             bless( {
14885             'subrule' => 'block_content',
14886             'expected' => undef,
14887             'min' => 1,
14888             'argcode' => undef,
14889             'max' => 100000000,
14890             'matchrule' => 0,
14891             'repspec' => 's',
14892             'lookahead' => 0,
14893             'line' => 97
14894             }, 'Parse::RecDescent::Repetition' ),
14895             bless( {
14896             'pattern' => '}',
14897             'hashname' => '__STRING2__',
14898             'description' => '\'\\}\'',
14899             'lookahead' => 0,
14900             'line' => 97
14901             }, 'Parse::RecDescent::Literal' ),
14902             bless( {
14903             'hashname' => '__ACTION1__',
14904             'lookahead' => 0,
14905             'line' => 98,
14906             'code' => '{
14907             \'{\' . join(\'\', @{ $item[3] }) . \'}\';
14908             }'
14909             }, 'Parse::RecDescent::Action' )
14910             ],
14911             'line' => undef
14912             }, 'Parse::RecDescent::Production' )
14913             ],
14914             'name' => 'block',
14915             'vars' => '',
14916             'line' => 96
14917             }, 'Parse::RecDescent::Rule' ),
14918             'static_list' => bless( {
14919             'impcount' => 0,
14920             'calls' => [
14921             'option'
14922             ],
14923             'changed' => 0,
14924             'opcount' => 0,
14925             'prods' => [
14926             bless( {
14927             'number' => '0',
14928             'strcount' => 2,
14929             'dircount' => 1,
14930             'uncommit' => undef,
14931             'error' => undef,
14932             'patcount' => 2,
14933             'actcount' => 0,
14934             'op' => [],
14935             'items' => [
14936             bless( {
14937             'pattern' => '{',
14938             'hashname' => '__STRING1__',
14939             'description' => '\'\\{\'',
14940             'lookahead' => 0,
14941             'line' => 58
14942             }, 'Parse::RecDescent::Literal' ),
14943             bless( {
14944             'expected' => '',
14945             'min' => 1,
14946             'name' => '\'option(s)\'',
14947             'max' => 100000000,
14948             'leftarg' => bless( {
14949             'subrule' => 'option',
14950             'matchrule' => 0,
14951             'implicit' => undef,
14952             'argcode' => undef,
14953             'lookahead' => 0,
14954             'line' => 58
14955             }, 'Parse::RecDescent::Subrule' ),
14956             'rightarg' => bless( {
14957             'subrule' => 'option',
14958             'matchrule' => 0,
14959             'implicit' => undef,
14960             'argcode' => undef,
14961             'lookahead' => 0,
14962             'line' => 58
14963             }, 'Parse::RecDescent::Subrule' ),
14964             'hashname' => '__DIRECTIVE1__',
14965             'type' => 'leftop',
14966             'op' => bless( {
14967             'pattern' => ',\\s*',
14968             'hashname' => '__PATTERN1__',
14969             'description' => '/,\\\\s*/',
14970             'lookahead' => 0,
14971             'rdelim' => '/',
14972             'line' => 58,
14973             'mod' => '',
14974             'ldelim' => '/'
14975             }, 'Parse::RecDescent::Token' )
14976             }, 'Parse::RecDescent::Operator' ),
14977             bless( {
14978             'pattern' => ',?',
14979             'hashname' => '__PATTERN2__',
14980             'description' => '/,?/',
14981             'lookahead' => 0,
14982             'rdelim' => '/',
14983             'line' => 58,
14984             'mod' => '',
14985             'ldelim' => '/'
14986             }, 'Parse::RecDescent::Token' ),
14987             bless( {
14988             'pattern' => '}',
14989             'hashname' => '__STRING2__',
14990             'description' => '\'\\}\'',
14991             'lookahead' => 0,
14992             'line' => 58
14993             }, 'Parse::RecDescent::Literal' )
14994             ],
14995             'line' => undef
14996             }, 'Parse::RecDescent::Production' )
14997             ],
14998             'name' => 'static_list',
14999             'vars' => '',
15000             'line' => 58
15001             }, 'Parse::RecDescent::Rule' )
15002             }
15003             }, 'Parse::RecDescent' );
15004             }