Changeset 10 in text-formbuilder for trunk


Ignore:
Timestamp:
10/21/04 16:55:26 (20 years ago)
Author:
peter
Message:

added dynamic lists (evaled perl code blocks) to !list def command

Location:
trunk/lib/Text/FormBuilder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Text/FormBuilder/Parser.pm

    r1 r10  
    569569        { 
    570570                 
    571                 Parse::RecDescent::_trace(q{Trying production: ['!list' list_name '\{' <leftop: option /,\\s*/ option> /,?/ '\}']}, 
     571                Parse::RecDescent::_trace(q{Trying production: ['!list' list_name static_list, or dynamic_list]}, 
    572572                                          Parse::RecDescent::_tracefirst($_[1]), 
    573573                                          q{list_def}, 
     
    637637                } 
    638638 
    639                 Parse::RecDescent::_trace(q{Trying terminal: ['\{']}, 
    640                                           Parse::RecDescent::_tracefirst($text), 
    641                                           q{list_def}, 
    642                                           $tracelevel) 
    643                                                 if defined $::RD_TRACE; 
    644                 $lastsep = ""; 
    645                 $expectation->is(q{'\{'})->at($text); 
    646                  
    647  
    648                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\{//) 
    649                 { 
    650                          
    651                         $expectation->failed(); 
    652                         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
    653                                                   Parse::RecDescent::_tracefirst($text)) 
    654                                                         if defined $::RD_TRACE; 
    655                         last; 
    656                 } 
    657                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    658                                                 . $& . q{])}, 
    659                                                   Parse::RecDescent::_tracefirst($text)) 
    660                                                         if defined $::RD_TRACE; 
    661                 push @item, $item{__STRING2__}=$&; 
    662                  
    663  
    664                 Parse::RecDescent::_trace(q{Trying operator: [<leftop: option /,\\s*/ option>]}, 
     639                Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_list_def]}, 
    665640                                  Parse::RecDescent::_tracefirst($text), 
    666641                                  q{list_def}, 
    667642                                  $tracelevel) 
    668643                                        if defined $::RD_TRACE; 
    669                 $expectation->is(q{<leftop: option /,\\s*/ option>})->at($text); 
    670  
    671                 $_tok = undef; 
    672                 OPLOOP: while (1) 
    673                 { 
    674                   $repcount = 0; 
    675                   my  @item; 
    676                    
    677                   # MATCH LEFTARG 
    678                    
    679                 Parse::RecDescent::_trace(q{Trying subrule: [option]}, 
    680                                   Parse::RecDescent::_tracefirst($text), 
    681                                   q{list_def}, 
    682                                   $tracelevel) 
    683                                         if defined $::RD_TRACE; 
    684644                if (1) { no strict qw{refs}; 
    685                 $expectation->is(q{option})->at($text); 
    686                 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
     645                $expectation->is(q{static_list, or dynamic_list})->at($text); 
     646                unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_list_def($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
    687647                { 
    688648                         
    689                         Parse::RecDescent::_trace(q{<<Didn't match subrule: [option]>>}, 
     649                        Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_list_def]>>}, 
    690650                                                  Parse::RecDescent::_tracefirst($text), 
    691651                                                  q{list_def}, 
     
    695655                        last; 
    696656                } 
    697                 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [} 
     657                Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_list_def]<< (return value: [} 
    698658                                        . $_tok . q{]}, 
    699659                                           
     
    702662                                          $tracelevel) 
    703663                                                if defined $::RD_TRACE; 
    704                 $item{q{option}} = $_tok; 
     664                $item{q{_alternation_1_of_production_1_of_rule_list_def}} = $_tok; 
    705665                push @item, $_tok; 
    706666                 
    707667                } 
    708  
    709  
    710                   $repcount++; 
    711  
    712                   my $savetext = $text; 
    713                   my $backtrack; 
    714  
    715                   # MATCH (OP RIGHTARG)(s) 
    716                   while ($repcount < 100000000) 
    717                   { 
    718                         $backtrack = 0; 
    719                          
    720                 Parse::RecDescent::_trace(q{Trying terminal: [/,\\s*/]}, Parse::RecDescent::_tracefirst($text), 
    721                                           q{list_def}, 
    722                                           $tracelevel) 
    723                                                 if defined $::RD_TRACE; 
    724                 $lastsep = ""; 
    725                 $expectation->is(q{/,\\s*/})->at($text); 
    726                  
    727  
    728                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,\s*)//) 
    729                 { 
    730                          
    731                         $expectation->failed(); 
    732                         Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
    733                                                   Parse::RecDescent::_tracefirst($text)) 
    734                                         if defined $::RD_TRACE; 
    735  
    736                         last; 
    737                 } 
    738                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    739                                                 . $& . q{])}, 
    740                                                   Parse::RecDescent::_tracefirst($text)) 
    741                                         if defined $::RD_TRACE; 
    742                 push @item, $item{__PATTERN1__}=$&; 
    743                  
    744  
    745                         pop @item; 
    746                         if (defined $1) {push @item, $item{'option(s)'}=$1; $backtrack=1;} 
    747                          
    748                 Parse::RecDescent::_trace(q{Trying subrule: [option]}, 
    749                                   Parse::RecDescent::_tracefirst($text), 
    750                                   q{list_def}, 
    751                                   $tracelevel) 
    752                                         if defined $::RD_TRACE; 
    753                 if (1) { no strict qw{refs}; 
    754                 $expectation->is(q{option})->at($text); 
    755                 unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
    756                 { 
    757                          
    758                         Parse::RecDescent::_trace(q{<<Didn't match subrule: [option]>>}, 
    759                                                   Parse::RecDescent::_tracefirst($text), 
    760                                                   q{list_def}, 
    761                                                   $tracelevel) 
    762                                                         if defined $::RD_TRACE; 
    763                         $expectation->failed(); 
    764                         last; 
    765                 } 
    766                 Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [} 
    767                                         . $_tok . q{]}, 
    768                                            
    769                                           Parse::RecDescent::_tracefirst($text), 
    770                                           q{list_def}, 
    771                                           $tracelevel) 
    772                                                 if defined $::RD_TRACE; 
    773                 $item{q{option}} = $_tok; 
    774                 push @item, $_tok; 
    775                  
    776                 } 
    777  
    778                         $savetext = $text; 
    779                         $repcount++; 
    780                   } 
    781                   $text = $savetext; 
    782                   pop @item if $backtrack; 
    783  
    784                   unless (@item) { undef $_tok; last } 
    785                   $_tok = [ @item ]; 
    786                   last; 
    787                 }  
    788  
    789                 unless ($repcount>=1) 
    790                 { 
    791                         Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: option /,\\s*/ option>]>>}, 
    792                                                   Parse::RecDescent::_tracefirst($text), 
    793                                                   q{list_def}, 
    794                                                   $tracelevel) 
    795                                                         if defined $::RD_TRACE; 
    796                         $expectation->failed(); 
    797                         last; 
    798                 } 
    799                 Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: option /,\\s*/ option>]<< (return value: [} 
    800                                           . qq{@{$_tok||[]}} . q{]}, 
    801                                           Parse::RecDescent::_tracefirst($text), 
    802                                           q{list_def}, 
    803                                           $tracelevel) 
    804                                                 if defined $::RD_TRACE; 
    805  
    806                 push @item, $item{'option(s)'}=$_tok||[]; 
    807  
    808  
    809                 Parse::RecDescent::_trace(q{Trying terminal: [/,?/]}, Parse::RecDescent::_tracefirst($text), 
    810                                           q{list_def}, 
    811                                           $tracelevel) 
    812                                                 if defined $::RD_TRACE; 
    813                 $lastsep = ""; 
    814                 $expectation->is(q{/,?/})->at($text); 
    815                  
    816  
    817                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,?)//) 
    818                 { 
    819                          
    820                         $expectation->failed(); 
    821                         Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
    822                                                   Parse::RecDescent::_tracefirst($text)) 
    823                                         if defined $::RD_TRACE; 
    824  
    825                         last; 
    826                 } 
    827                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    828                                                 . $& . q{])}, 
    829                                                   Parse::RecDescent::_tracefirst($text)) 
    830                                         if defined $::RD_TRACE; 
    831                 push @item, $item{__PATTERN2__}=$&; 
    832                  
    833  
    834                 Parse::RecDescent::_trace(q{Trying terminal: ['\}']}, 
    835                                           Parse::RecDescent::_tracefirst($text), 
    836                                           q{list_def}, 
    837                                           $tracelevel) 
    838                                                 if defined $::RD_TRACE; 
    839                 $lastsep = ""; 
    840                 $expectation->is(q{'\}'})->at($text); 
    841                  
    842  
    843                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\}//) 
    844                 { 
    845                          
    846                         $expectation->failed(); 
    847                         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
    848                                                   Parse::RecDescent::_tracefirst($text)) 
    849                                                         if defined $::RD_TRACE; 
    850                         last; 
    851                 } 
    852                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    853                                                 . $& . q{])}, 
    854                                                   Parse::RecDescent::_tracefirst($text)) 
    855                                                         if defined $::RD_TRACE; 
    856                 push @item, $item{__STRING3__}=$&; 
    857                  
    858668 
    859669                Parse::RecDescent::_trace(q{Trying action}, 
     
    880690 
    881691 
    882                 Parse::RecDescent::_trace(q{>>Matched production: ['!list' list_name '\{' <leftop: option /,\\s*/ option> /,?/ '\}']<<}, 
     692                Parse::RecDescent::_trace(q{>>Matched production: ['!list' list_name static_list, or dynamic_list]<<}, 
    883693                                          Parse::RecDescent::_tracefirst($text), 
    884694                                          q{list_def}, 
     
    46264436 
    46274437# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    4628 sub Parse::RecDescent::Text::FormBuilder::Parser::form_spec 
     4438sub Parse::RecDescent::Text::FormBuilder::Parser::_alternation_1_of_production_1_of_rule_list_def 
    46294439{ 
    46304440        my $thisparser = $_[0]; 
     
    46324442        local $tracelevel = ($tracelevel||0)+1; 
    46334443        $ERRORS = 0; 
    4634         my $thisrule = $thisparser->{"rules"}{"form_spec"}; 
    4635          
    4636         Parse::RecDescent::_trace(q{Trying rule: [form_spec]}, 
     4444        my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_list_def"}; 
     4445         
     4446        Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_list_def]}, 
    46374447                                  Parse::RecDescent::_tracefirst($_[1]), 
    4638                                   q{form_spec}, 
     4448                                  q{_alternation_1_of_production_1_of_rule_list_def}, 
    46394449                                  $tracelevel) 
    46404450                                        if defined $::RD_TRACE; 
     
    46684478        { 
    46694479                 
    4670                 Parse::RecDescent::_trace(q{Trying production: [list_def, or line]}, 
     4480                Parse::RecDescent::_trace(q{Trying production: [static_list]}, 
    46714481                                          Parse::RecDescent::_tracefirst($_[1]), 
    4672                                           q{form_spec}, 
     4482                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
    46734483                                          $tracelevel) 
    46744484                                                if defined $::RD_TRACE; 
     
    46764486                $text = $_[1]; 
    46774487                my $_savetext; 
    4678                 @item = (q{form_spec}); 
    4679                 %item = (__RULE__ => q{form_spec}); 
     4488                @item = (q{_alternation_1_of_production_1_of_rule_list_def}); 
     4489                %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_list_def}); 
    46804490                my $repcount = 0; 
    46814491 
    46824492 
    4683                 Parse::RecDescent::_trace(q{Trying repeated subrule: [list_def, or line]}, 
     4493                Parse::RecDescent::_trace(q{Trying subrule: [static_list]}, 
    46844494                                  Parse::RecDescent::_tracefirst($text), 
    4685                                   q{form_spec}, 
     4495                                  q{_alternation_1_of_production_1_of_rule_list_def}, 
    46864496                                  $tracelevel) 
    46874497                                        if defined $::RD_TRACE; 
     4498                if (1) { no strict qw{refs}; 
    46884499                $expectation->is(q{})->at($text); 
    4689                  
    4690                 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)))  
    4691                 { 
    4692                         Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [list_def, or line]>>}, 
     4500                unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::static_list($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
     4501                { 
     4502                         
     4503                        Parse::RecDescent::_trace(q{<<Didn't match subrule: [static_list]>>}, 
    46934504                                                  Parse::RecDescent::_tracefirst($text), 
    4694                                                   q{form_spec}, 
     4505                                                  q{_alternation_1_of_production_1_of_rule_list_def}, 
    46954506                                                  $tracelevel) 
    46964507                                                        if defined $::RD_TRACE; 
    4697                         last; 
    4698                 } 
    4699                 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_form_spec]<< (} 
    4700                                         . @$_tok . q{ times)}, 
     4508                        $expectation->failed(); 
     4509                        last; 
     4510                } 
     4511                Parse::RecDescent::_trace(q{>>Matched subrule: [static_list]<< (return value: [} 
     4512                                        . $_tok . q{]}, 
    47014513                                           
    47024514                                          Parse::RecDescent::_tracefirst($text), 
    4703                                           q{form_spec}, 
    4704                                           $tracelevel) 
    4705                                                 if defined $::RD_TRACE; 
    4706                 $item{q{_alternation_1_of_production_1_of_rule_form_spec(s)}} = $_tok; 
     4515                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
     4516                                          $tracelevel) 
     4517                                                if defined $::RD_TRACE; 
     4518                $item{q{static_list}} = $_tok; 
    47074519                push @item, $_tok; 
    47084520                 
    4709  
    4710  
    4711                 Parse::RecDescent::_trace(q{Trying action}, 
    4712                                           Parse::RecDescent::_tracefirst($text), 
    4713                                           q{form_spec}, 
    4714                                           $tracelevel) 
    4715                                                 if defined $::RD_TRACE; 
    4716                  
    4717  
    4718                 $_tok = ($_noactions) ? 0 : do { 
    4719         $return = { 
    4720             title    => $title, 
    4721             author   => $author, 
    4722             lists    => \%lists,  
    4723             patterns => \%patterns,  
    4724             fields   => \@fields, 
    4725         } 
    4726     }; 
    4727                 unless (defined $_tok) 
    4728                 { 
    4729                         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
    4730                                         if defined $::RD_TRACE; 
    4731                         last; 
    4732                 } 
    4733                 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
    4734                                           . $_tok . q{])}, 
    4735                                           Parse::RecDescent::_tracefirst($text)) 
    4736                                                 if defined $::RD_TRACE; 
     4521                } 
     4522 
     4523 
     4524                Parse::RecDescent::_trace(q{>>Matched production: [static_list]<<}, 
     4525                                          Parse::RecDescent::_tracefirst($text), 
     4526                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
     4527                                          $tracelevel) 
     4528                                                if defined $::RD_TRACE; 
     4529                $_matched = 1; 
     4530                last; 
     4531        } 
     4532 
     4533 
     4534        while (!$_matched && !$commit) 
     4535        { 
     4536                 
     4537                Parse::RecDescent::_trace(q{Trying production: [dynamic_list]}, 
     4538                                          Parse::RecDescent::_tracefirst($_[1]), 
     4539                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
     4540                                          $tracelevel) 
     4541                                                if defined $::RD_TRACE; 
     4542                my $thisprod = $thisrule->{"prods"}[1]; 
     4543                $text = $_[1]; 
     4544                my $_savetext; 
     4545                @item = (q{_alternation_1_of_production_1_of_rule_list_def}); 
     4546                %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_list_def}); 
     4547                my $repcount = 0; 
     4548 
     4549 
     4550                Parse::RecDescent::_trace(q{Trying subrule: [dynamic_list]}, 
     4551                                  Parse::RecDescent::_tracefirst($text), 
     4552                                  q{_alternation_1_of_production_1_of_rule_list_def}, 
     4553                                  $tracelevel) 
     4554                                        if defined $::RD_TRACE; 
     4555                if (1) { no strict qw{refs}; 
     4556                $expectation->is(q{})->at($text); 
     4557                unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::dynamic_list($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
     4558                { 
     4559                         
     4560                        Parse::RecDescent::_trace(q{<<Didn't match subrule: [dynamic_list]>>}, 
     4561                                                  Parse::RecDescent::_tracefirst($text), 
     4562                                                  q{_alternation_1_of_production_1_of_rule_list_def}, 
     4563                                                  $tracelevel) 
     4564                                                        if defined $::RD_TRACE; 
     4565                        $expectation->failed(); 
     4566                        last; 
     4567                } 
     4568                Parse::RecDescent::_trace(q{>>Matched subrule: [dynamic_list]<< (return value: [} 
     4569                                        . $_tok . q{]}, 
     4570                                           
     4571                                          Parse::RecDescent::_tracefirst($text), 
     4572                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
     4573                                          $tracelevel) 
     4574                                                if defined $::RD_TRACE; 
     4575                $item{q{dynamic_list}} = $_tok; 
    47374576                push @item, $_tok; 
    4738                 $item{__ACTION1__}=$_tok; 
    4739                  
    4740  
    4741  
    4742                 Parse::RecDescent::_trace(q{>>Matched production: [list_def, or line]<<}, 
    4743                                           Parse::RecDescent::_tracefirst($text), 
    4744                                           q{form_spec}, 
     4577                 
     4578                } 
     4579 
     4580 
     4581                Parse::RecDescent::_trace(q{>>Matched production: [dynamic_list]<<}, 
     4582                                          Parse::RecDescent::_tracefirst($text), 
     4583                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
    47454584                                          $tracelevel) 
    47464585                                                if defined $::RD_TRACE; 
     
    47574596                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    47584597                                         Parse::RecDescent::_tracefirst($_[1]), 
    4759                                          q{form_spec}, 
     4598                                         q{_alternation_1_of_production_1_of_rule_list_def}, 
    47604599                                         $tracelevel) 
    47614600                                        if defined $::RD_TRACE; 
     
    47654604        { 
    47664605                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    4767                                           q{form_spec}, 
     4606                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
    47684607                                          $tracelevel) 
    47694608                                                if defined $::RD_TRACE; 
     
    47764615                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    47774616                                          $return . q{])}, "", 
    4778                                           q{form_spec}, 
     4617                                          q{_alternation_1_of_production_1_of_rule_list_def}, 
    47794618                                          $tracelevel); 
    47804619                Parse::RecDescent::_trace(q{(consumed: [} . 
    47814620                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    47824621                                          Parse::RecDescent::_tracefirst($text), 
    4783                                           , q{form_spec}, 
     4622                                          , q{_alternation_1_of_production_1_of_rule_list_def}, 
    47844623                                          $tracelevel) 
    47854624        } 
     
    47894628 
    47904629# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    4791 sub Parse::RecDescent::Text::FormBuilder::Parser::pattern 
     4630sub Parse::RecDescent::Text::FormBuilder::Parser::form_spec 
    47924631{ 
    47934632        my $thisparser = $_[0]; 
     
    47954634        local $tracelevel = ($tracelevel||0)+1; 
    47964635        $ERRORS = 0; 
    4797         my $thisrule = $thisparser->{"rules"}{"pattern"}; 
    4798          
    4799         Parse::RecDescent::_trace(q{Trying rule: [pattern]}, 
     4636        my $thisrule = $thisparser->{"rules"}{"form_spec"}; 
     4637         
     4638        Parse::RecDescent::_trace(q{Trying rule: [form_spec]}, 
    48004639                                  Parse::RecDescent::_tracefirst($_[1]), 
    4801                                   q{pattern}, 
     4640                                  q{form_spec}, 
    48024641                                  $tracelevel) 
    48034642                                        if defined $::RD_TRACE; 
     
    48314670        { 
    48324671                 
    4833                 Parse::RecDescent::_trace(q{Trying production: [/.*/]}, 
     4672                Parse::RecDescent::_trace(q{Trying production: [list_def, or line]}, 
    48344673                                          Parse::RecDescent::_tracefirst($_[1]), 
    4835                                           q{pattern}, 
     4674                                          q{form_spec}, 
    48364675                                          $tracelevel) 
    48374676                                                if defined $::RD_TRACE; 
     
    48394678                $text = $_[1]; 
    48404679                my $_savetext; 
    4841                 @item = (q{pattern}); 
    4842                 %item = (__RULE__ => q{pattern}); 
     4680                @item = (q{form_spec}); 
     4681                %item = (__RULE__ => q{form_spec}); 
    48434682                my $repcount = 0; 
    48444683 
    48454684 
    4846                 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
    4847                                           q{pattern}, 
    4848                                           $tracelevel) 
    4849                                                 if defined $::RD_TRACE; 
    4850                 $lastsep = ""; 
     4685                Parse::RecDescent::_trace(q{Trying repeated subrule: [list_def, or line]}, 
     4686                                  Parse::RecDescent::_tracefirst($text), 
     4687                                  q{form_spec}, 
     4688                                  $tracelevel) 
     4689                                        if defined $::RD_TRACE; 
    48514690                $expectation->is(q{})->at($text); 
    48524691                 
    4853  
    4854                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:.*)//) 
    4855                 { 
    4856                          
    4857                         $expectation->failed(); 
    4858                         Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
    4859                                                   Parse::RecDescent::_tracefirst($text)) 
    4860                                         if defined $::RD_TRACE; 
    4861  
    4862                         last; 
    4863                 } 
    4864                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    4865                                                 . $& . q{])}, 
    4866                                                   Parse::RecDescent::_tracefirst($text)) 
    4867                                         if defined $::RD_TRACE; 
    4868                 push @item, $item{__PATTERN1__}=$&; 
    4869                  
    4870  
    4871  
    4872                 Parse::RecDescent::_trace(q{>>Matched production: [/.*/]<<}, 
    4873                                           Parse::RecDescent::_tracefirst($text), 
    4874                                           q{pattern}, 
     4692                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)))  
     4693                { 
     4694                        Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [list_def, or line]>>}, 
     4695                                                  Parse::RecDescent::_tracefirst($text), 
     4696                                                  q{form_spec}, 
     4697                                                  $tracelevel) 
     4698                                                        if defined $::RD_TRACE; 
     4699                        last; 
     4700                } 
     4701                Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_form_spec]<< (} 
     4702                                        . @$_tok . q{ times)}, 
     4703                                           
     4704                                          Parse::RecDescent::_tracefirst($text), 
     4705                                          q{form_spec}, 
     4706                                          $tracelevel) 
     4707                                                if defined $::RD_TRACE; 
     4708                $item{q{_alternation_1_of_production_1_of_rule_form_spec(s)}} = $_tok; 
     4709                push @item, $_tok; 
     4710                 
     4711 
     4712 
     4713                Parse::RecDescent::_trace(q{Trying action}, 
     4714                                          Parse::RecDescent::_tracefirst($text), 
     4715                                          q{form_spec}, 
     4716                                          $tracelevel) 
     4717                                                if defined $::RD_TRACE; 
     4718                 
     4719 
     4720                $_tok = ($_noactions) ? 0 : do { 
     4721        $return = { 
     4722            title    => $title, 
     4723            author   => $author, 
     4724            lists    => \%lists,  
     4725            patterns => \%patterns,  
     4726            fields   => \@fields, 
     4727        } 
     4728    }; 
     4729                unless (defined $_tok) 
     4730                { 
     4731                        Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
     4732                                        if defined $::RD_TRACE; 
     4733                        last; 
     4734                } 
     4735                Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
     4736                                          . $_tok . q{])}, 
     4737                                          Parse::RecDescent::_tracefirst($text)) 
     4738                                                if defined $::RD_TRACE; 
     4739                push @item, $_tok; 
     4740                $item{__ACTION1__}=$_tok; 
     4741                 
     4742 
     4743 
     4744                Parse::RecDescent::_trace(q{>>Matched production: [list_def, or line]<<}, 
     4745                                          Parse::RecDescent::_tracefirst($text), 
     4746                                          q{form_spec}, 
    48754747                                          $tracelevel) 
    48764748                                                if defined $::RD_TRACE; 
     
    48874759                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    48884760                                         Parse::RecDescent::_tracefirst($_[1]), 
    4889                                          q{pattern}, 
     4761                                         q{form_spec}, 
    48904762                                         $tracelevel) 
    48914763                                        if defined $::RD_TRACE; 
     
    48954767        { 
    48964768                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    4897                                           q{pattern}, 
     4769                                          q{form_spec}, 
    48984770                                          $tracelevel) 
    48994771                                                if defined $::RD_TRACE; 
     
    49064778                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    49074779                                          $return . q{])}, "", 
    4908                                           q{pattern}, 
     4780                                          q{form_spec}, 
    49094781                                          $tracelevel); 
    49104782                Parse::RecDescent::_trace(q{(consumed: [} . 
    49114783                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    49124784                                          Parse::RecDescent::_tracefirst($text), 
    4913                                           , q{pattern}, 
     4785                                          , q{form_spec}, 
    49144786                                          $tracelevel) 
    49154787        } 
     
    49194791 
    49204792# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    4921 sub Parse::RecDescent::Text::FormBuilder::Parser::comment 
     4793sub Parse::RecDescent::Text::FormBuilder::Parser::pattern 
    49224794{ 
    49234795        my $thisparser = $_[0]; 
     
    49254797        local $tracelevel = ($tracelevel||0)+1; 
    49264798        $ERRORS = 0; 
    4927         my $thisrule = $thisparser->{"rules"}{"comment"}; 
    4928          
    4929         Parse::RecDescent::_trace(q{Trying rule: [comment]}, 
     4799        my $thisrule = $thisparser->{"rules"}{"pattern"}; 
     4800         
     4801        Parse::RecDescent::_trace(q{Trying rule: [pattern]}, 
    49304802                                  Parse::RecDescent::_tracefirst($_[1]), 
    4931                                   q{comment}, 
     4803                                  q{pattern}, 
    49324804                                  $tracelevel) 
    49334805                                        if defined $::RD_TRACE; 
     
    49614833        { 
    49624834                 
    4963                 Parse::RecDescent::_trace(q{Trying production: ['#' /.*/]}, 
     4835                Parse::RecDescent::_trace(q{Trying production: [/.*/]}, 
    49644836                                          Parse::RecDescent::_tracefirst($_[1]), 
    4965                                           q{comment}, 
     4837                                          q{pattern}, 
    49664838                                          $tracelevel) 
    49674839                                                if defined $::RD_TRACE; 
     
    49694841                $text = $_[1]; 
    49704842                my $_savetext; 
    4971                 @item = (q{comment}); 
    4972                 %item = (__RULE__ => q{comment}); 
     4843                @item = (q{pattern}); 
     4844                %item = (__RULE__ => q{pattern}); 
    49734845                my $repcount = 0; 
    49744846 
    49754847 
    4976                 Parse::RecDescent::_trace(q{Trying terminal: ['#']}, 
    4977                                           Parse::RecDescent::_tracefirst($text), 
    4978                                           q{comment}, 
     4848                Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
     4849                                          q{pattern}, 
    49794850                                          $tracelevel) 
    49804851                                                if defined $::RD_TRACE; 
    49814852                $lastsep = ""; 
    49824853                $expectation->is(q{})->at($text); 
    4983                  
    4984  
    4985                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\#//) 
    4986                 { 
    4987                          
    4988                         $expectation->failed(); 
    4989                         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
    4990                                                   Parse::RecDescent::_tracefirst($text)) 
    4991                                                         if defined $::RD_TRACE; 
    4992                         last; 
    4993                 } 
    4994                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    4995                                                 . $& . q{])}, 
    4996                                                   Parse::RecDescent::_tracefirst($text)) 
    4997                                                         if defined $::RD_TRACE; 
    4998                 push @item, $item{__STRING1__}=$&; 
    4999                  
    5000  
    5001                 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
    5002                                           q{comment}, 
    5003                                           $tracelevel) 
    5004                                                 if defined $::RD_TRACE; 
    5005                 $lastsep = ""; 
    5006                 $expectation->is(q{/.*/})->at($text); 
    50074854                 
    50084855 
     
    50254872 
    50264873 
    5027                 Parse::RecDescent::_trace(q{>>Matched production: ['#' /.*/]<<}, 
    5028                                           Parse::RecDescent::_tracefirst($text), 
    5029                                           q{comment}, 
     4874                Parse::RecDescent::_trace(q{>>Matched production: [/.*/]<<}, 
     4875                                          Parse::RecDescent::_tracefirst($text), 
     4876                                          q{pattern}, 
    50304877                                          $tracelevel) 
    50314878                                                if defined $::RD_TRACE; 
     
    50424889                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    50434890                                         Parse::RecDescent::_tracefirst($_[1]), 
    5044                                          q{comment}, 
     4891                                         q{pattern}, 
    50454892                                         $tracelevel) 
    50464893                                        if defined $::RD_TRACE; 
     
    50504897        { 
    50514898                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    5052                                           q{comment}, 
     4899                                          q{pattern}, 
    50534900                                          $tracelevel) 
    50544901                                                if defined $::RD_TRACE; 
     
    50614908                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    50624909                                          $return . q{])}, "", 
    5063                                           q{comment}, 
     4910                                          q{pattern}, 
    50644911                                          $tracelevel); 
    50654912                Parse::RecDescent::_trace(q{(consumed: [} . 
    50664913                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    50674914                                          Parse::RecDescent::_tracefirst($text), 
    5068                                           , q{comment}, 
     4915                                          , q{pattern}, 
    50694916                                          $tracelevel) 
    50704917        } 
     
    50744921 
    50754922# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    5076 sub Parse::RecDescent::Text::FormBuilder::Parser::hint 
     4923sub Parse::RecDescent::Text::FormBuilder::Parser::comment 
    50774924{ 
    50784925        my $thisparser = $_[0]; 
     
    50804927        local $tracelevel = ($tracelevel||0)+1; 
    50814928        $ERRORS = 0; 
    5082         my $thisrule = $thisparser->{"rules"}{"hint"}; 
    5083          
    5084         Parse::RecDescent::_trace(q{Trying rule: [hint]}, 
     4929        my $thisrule = $thisparser->{"rules"}{"comment"}; 
     4930         
     4931        Parse::RecDescent::_trace(q{Trying rule: [comment]}, 
    50854932                                  Parse::RecDescent::_tracefirst($_[1]), 
    5086                                   q{hint}, 
     4933                                  q{comment}, 
    50874934                                  $tracelevel) 
    50884935                                        if defined $::RD_TRACE; 
     
    51164963        { 
    51174964                 
    5118                 Parse::RecDescent::_trace(q{Trying production: ['[' /[^\\]]+/ ']']}, 
     4965                Parse::RecDescent::_trace(q{Trying production: ['#' /.*/]}, 
    51194966                                          Parse::RecDescent::_tracefirst($_[1]), 
    5120                                           q{hint}, 
     4967                                          q{comment}, 
    51214968                                          $tracelevel) 
    51224969                                                if defined $::RD_TRACE; 
     
    51244971                $text = $_[1]; 
    51254972                my $_savetext; 
    5126                 @item = (q{hint}); 
    5127                 %item = (__RULE__ => q{hint}); 
     4973                @item = (q{comment}); 
     4974                %item = (__RULE__ => q{comment}); 
    51284975                my $repcount = 0; 
    51294976 
    51304977 
    5131                 Parse::RecDescent::_trace(q{Trying terminal: ['[']}, 
    5132                                           Parse::RecDescent::_tracefirst($text), 
    5133                                           q{hint}, 
     4978                Parse::RecDescent::_trace(q{Trying terminal: ['#']}, 
     4979                                          Parse::RecDescent::_tracefirst($text), 
     4980                                          q{comment}, 
    51344981                                          $tracelevel) 
    51354982                                                if defined $::RD_TRACE; 
     
    51384985                 
    51394986 
    5140                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\[//) 
     4987                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\#//) 
    51414988                { 
    51424989                         
     
    51545001                 
    51555002 
    5156                 Parse::RecDescent::_trace(q{Trying terminal: [/[^\\]]+/]}, Parse::RecDescent::_tracefirst($text), 
    5157                                           q{hint}, 
     5003                Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
     5004                                          q{comment}, 
    51585005                                          $tracelevel) 
    51595006                                                if defined $::RD_TRACE; 
    51605007                $lastsep = ""; 
    5161                 $expectation->is(q{/[^\\]]+/})->at($text); 
    5162                  
    5163  
    5164                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^\]]+)//) 
     5008                $expectation->is(q{/.*/})->at($text); 
     5009                 
     5010 
     5011                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:.*)//) 
    51655012                { 
    51665013                         
     
    51795026                 
    51805027 
    5181                 Parse::RecDescent::_trace(q{Trying terminal: [']']}, 
    5182                                           Parse::RecDescent::_tracefirst($text), 
    5183                                           q{hint}, 
    5184                                           $tracelevel) 
    5185                                                 if defined $::RD_TRACE; 
    5186                 $lastsep = ""; 
    5187                 $expectation->is(q{']'})->at($text); 
    5188                  
    5189  
    5190                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\]//) 
    5191                 { 
    5192                          
    5193                         $expectation->failed(); 
    5194                         Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
    5195                                                   Parse::RecDescent::_tracefirst($text)) 
    5196                                                         if defined $::RD_TRACE; 
    5197                         last; 
    5198                 } 
    5199                 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
    5200                                                 . $& . q{])}, 
    5201                                                   Parse::RecDescent::_tracefirst($text)) 
    5202                                                         if defined $::RD_TRACE; 
    5203                 push @item, $item{__STRING2__}=$&; 
    5204                  
    5205  
    5206                 Parse::RecDescent::_trace(q{Trying action}, 
    5207                                           Parse::RecDescent::_tracefirst($text), 
    5208                                           q{hint}, 
    5209                                           $tracelevel) 
    5210                                                 if defined $::RD_TRACE; 
    5211                  
    5212  
    5213                 $_tok = ($_noactions) ? 0 : do { $item[2] }; 
    5214                 unless (defined $_tok) 
    5215                 { 
    5216                         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
    5217                                         if defined $::RD_TRACE; 
    5218                         last; 
    5219                 } 
    5220                 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
    5221                                           . $_tok . q{])}, 
    5222                                           Parse::RecDescent::_tracefirst($text)) 
    5223                                                 if defined $::RD_TRACE; 
    5224                 push @item, $_tok; 
    5225                 $item{__ACTION1__}=$_tok; 
    5226                  
    5227  
    5228  
    5229                 Parse::RecDescent::_trace(q{>>Matched production: ['[' /[^\\]]+/ ']']<<}, 
    5230                                           Parse::RecDescent::_tracefirst($text), 
    5231                                           q{hint}, 
     5028 
     5029                Parse::RecDescent::_trace(q{>>Matched production: ['#' /.*/]<<}, 
     5030                                          Parse::RecDescent::_tracefirst($text), 
     5031                                          q{comment}, 
    52325032                                          $tracelevel) 
    52335033                                                if defined $::RD_TRACE; 
     
    52445044                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    52455045                                         Parse::RecDescent::_tracefirst($_[1]), 
    5246                                          q{hint}, 
     5046                                         q{comment}, 
    52475047                                         $tracelevel) 
    52485048                                        if defined $::RD_TRACE; 
     
    52525052        { 
    52535053                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    5254                                           q{hint}, 
     5054                                          q{comment}, 
    52555055                                          $tracelevel) 
    52565056                                                if defined $::RD_TRACE; 
     
    52635063                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    52645064                                          $return . q{])}, "", 
    5265                                           q{hint}, 
     5065                                          q{comment}, 
    52665066                                          $tracelevel); 
    52675067                Parse::RecDescent::_trace(q{(consumed: [} . 
    52685068                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    52695069                                          Parse::RecDescent::_tracefirst($text), 
    5270                                           , q{hint}, 
     5070                                          , q{comment}, 
    52715071                                          $tracelevel) 
    52725072        } 
     
    52765076 
    52775077# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    5278 sub Parse::RecDescent::Text::FormBuilder::Parser::type 
     5078sub Parse::RecDescent::Text::FormBuilder::Parser::hint 
    52795079{ 
    52805080        my $thisparser = $_[0]; 
     
    52825082        local $tracelevel = ($tracelevel||0)+1; 
    52835083        $ERRORS = 0; 
    5284         my $thisrule = $thisparser->{"rules"}{"type"}; 
    5285          
    5286         Parse::RecDescent::_trace(q{Trying rule: [type]}, 
     5084        my $thisrule = $thisparser->{"rules"}{"hint"}; 
     5085         
     5086        Parse::RecDescent::_trace(q{Trying rule: [hint]}, 
    52875087                                  Parse::RecDescent::_tracefirst($_[1]), 
    5288                                   q{type}, 
     5088                                  q{hint}, 
    52895089                                  $tracelevel) 
    52905090                                        if defined $::RD_TRACE; 
     
    53185118        { 
    53195119                 
    5320                 Parse::RecDescent::_trace(q{Trying production: [':' /textarea|text|password|file|checkbox|radio|select|hidden|static/]}, 
     5120                Parse::RecDescent::_trace(q{Trying production: ['[' /[^\\]]+/ ']']}, 
    53215121                                          Parse::RecDescent::_tracefirst($_[1]), 
    5322                                           q{type}, 
     5122                                          q{hint}, 
    53235123                                          $tracelevel) 
    53245124                                                if defined $::RD_TRACE; 
     
    53265126                $text = $_[1]; 
    53275127                my $_savetext; 
    5328                 @item = (q{type}); 
    5329                 %item = (__RULE__ => q{type}); 
     5128                @item = (q{hint}); 
     5129                %item = (__RULE__ => q{hint}); 
    53305130                my $repcount = 0; 
    53315131 
    53325132 
    5333                 Parse::RecDescent::_trace(q{Trying terminal: [':']}, 
    5334                                           Parse::RecDescent::_tracefirst($text), 
    5335                                           q{type}, 
     5133                Parse::RecDescent::_trace(q{Trying terminal: ['[']}, 
     5134                                          Parse::RecDescent::_tracefirst($text), 
     5135                                          q{hint}, 
    53365136                                          $tracelevel) 
    53375137                                                if defined $::RD_TRACE; 
     
    53405140                 
    53415141 
    5342                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\://) 
     5142                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\[//) 
    53435143                { 
    53445144                         
     
    53565156                 
    53575157 
    5358                 Parse::RecDescent::_trace(q{Trying terminal: [/textarea|text|password|file|checkbox|radio|select|hidden|static/]}, Parse::RecDescent::_tracefirst($text), 
    5359                                           q{type}, 
     5158                Parse::RecDescent::_trace(q{Trying terminal: [/[^\\]]+/]}, Parse::RecDescent::_tracefirst($text), 
     5159                                          q{hint}, 
    53605160                                          $tracelevel) 
    53615161                                                if defined $::RD_TRACE; 
    53625162                $lastsep = ""; 
    5363                 $expectation->is(q{/textarea|text|password|file|checkbox|radio|select|hidden|static/})->at($text); 
    5364                  
    5365  
    5366                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:textarea|text|password|file|checkbox|radio|select|hidden|static)//) 
     5163                $expectation->is(q{/[^\\]]+/})->at($text); 
     5164                 
     5165 
     5166                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^\]]+)//) 
    53675167                { 
    53685168                         
     
    53815181                 
    53825182 
    5383  
    5384                 Parse::RecDescent::_trace(q{>>Matched production: [':' /textarea|text|password|file|checkbox|radio|select|hidden|static/]<<}, 
    5385                                           Parse::RecDescent::_tracefirst($text), 
    5386                                           q{type}, 
     5183                Parse::RecDescent::_trace(q{Trying terminal: [']']}, 
     5184                                          Parse::RecDescent::_tracefirst($text), 
     5185                                          q{hint}, 
     5186                                          $tracelevel) 
     5187                                                if defined $::RD_TRACE; 
     5188                $lastsep = ""; 
     5189                $expectation->is(q{']'})->at($text); 
     5190                 
     5191 
     5192                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\]//) 
     5193                { 
     5194                         
     5195                        $expectation->failed(); 
     5196                        Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
     5197                                                  Parse::RecDescent::_tracefirst($text)) 
     5198                                                        if defined $::RD_TRACE; 
     5199                        last; 
     5200                } 
     5201                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     5202                                                . $& . q{])}, 
     5203                                                  Parse::RecDescent::_tracefirst($text)) 
     5204                                                        if defined $::RD_TRACE; 
     5205                push @item, $item{__STRING2__}=$&; 
     5206                 
     5207 
     5208                Parse::RecDescent::_trace(q{Trying action}, 
     5209                                          Parse::RecDescent::_tracefirst($text), 
     5210                                          q{hint}, 
     5211                                          $tracelevel) 
     5212                                                if defined $::RD_TRACE; 
     5213                 
     5214 
     5215                $_tok = ($_noactions) ? 0 : do { $item[2] }; 
     5216                unless (defined $_tok) 
     5217                { 
     5218                        Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
     5219                                        if defined $::RD_TRACE; 
     5220                        last; 
     5221                } 
     5222                Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
     5223                                          . $_tok . q{])}, 
     5224                                          Parse::RecDescent::_tracefirst($text)) 
     5225                                                if defined $::RD_TRACE; 
     5226                push @item, $_tok; 
     5227                $item{__ACTION1__}=$_tok; 
     5228                 
     5229 
     5230 
     5231                Parse::RecDescent::_trace(q{>>Matched production: ['[' /[^\\]]+/ ']']<<}, 
     5232                                          Parse::RecDescent::_tracefirst($text), 
     5233                                          q{hint}, 
    53875234                                          $tracelevel) 
    53885235                                                if defined $::RD_TRACE; 
     
    53995246                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    54005247                                         Parse::RecDescent::_tracefirst($_[1]), 
    5401                                          q{type}, 
     5248                                         q{hint}, 
    54025249                                         $tracelevel) 
    54035250                                        if defined $::RD_TRACE; 
     
    54075254        { 
    54085255                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    5409                                           q{type}, 
     5256                                          q{hint}, 
    54105257                                          $tracelevel) 
    54115258                                                if defined $::RD_TRACE; 
     
    54185265                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    54195266                                          $return . q{])}, "", 
    5420                                           q{type}, 
     5267                                          q{hint}, 
    54215268                                          $tracelevel); 
    54225269                Parse::RecDescent::_trace(q{(consumed: [} . 
    54235270                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    54245271                                          Parse::RecDescent::_tracefirst($text), 
    5425                                           , q{type}, 
     5272                                          , q{hint}, 
    54265273                                          $tracelevel) 
    54275274        } 
     
    54315278 
    54325279# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    5433 sub Parse::RecDescent::Text::FormBuilder::Parser::title 
     5280sub Parse::RecDescent::Text::FormBuilder::Parser::type 
    54345281{ 
    54355282        my $thisparser = $_[0]; 
     
    54375284        local $tracelevel = ($tracelevel||0)+1; 
    54385285        $ERRORS = 0; 
    5439         my $thisrule = $thisparser->{"rules"}{"title"}; 
    5440          
    5441         Parse::RecDescent::_trace(q{Trying rule: [title]}, 
     5286        my $thisrule = $thisparser->{"rules"}{"type"}; 
     5287         
     5288        Parse::RecDescent::_trace(q{Trying rule: [type]}, 
    54425289                                  Parse::RecDescent::_tracefirst($_[1]), 
    5443                                   q{title}, 
     5290                                  q{type}, 
    54445291                                  $tracelevel) 
    54455292                                        if defined $::RD_TRACE; 
     
    54735320        { 
    54745321                 
    5475                 Parse::RecDescent::_trace(q{Trying production: ['!title' /.*/]}, 
     5322                Parse::RecDescent::_trace(q{Trying production: [':' /textarea|text|password|file|checkbox|radio|select|hidden|static/]}, 
    54765323                                          Parse::RecDescent::_tracefirst($_[1]), 
    5477                                           q{title}, 
     5324                                          q{type}, 
    54785325                                          $tracelevel) 
    54795326                                                if defined $::RD_TRACE; 
     
    54815328                $text = $_[1]; 
    54825329                my $_savetext; 
    5483                 @item = (q{title}); 
    5484                 %item = (__RULE__ => q{title}); 
     5330                @item = (q{type}); 
     5331                %item = (__RULE__ => q{type}); 
    54855332                my $repcount = 0; 
    54865333 
    54875334 
    5488                 Parse::RecDescent::_trace(q{Trying terminal: ['!title']}, 
    5489                                           Parse::RecDescent::_tracefirst($text), 
    5490                                           q{title}, 
     5335                Parse::RecDescent::_trace(q{Trying terminal: [':']}, 
     5336                                          Parse::RecDescent::_tracefirst($text), 
     5337                                          q{type}, 
    54915338                                          $tracelevel) 
    54925339                                                if defined $::RD_TRACE; 
     
    54955342                 
    54965343 
    5497                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\!title//) 
     5344                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\://) 
    54985345                { 
    54995346                         
     
    55115358                 
    55125359 
    5513                 Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
    5514                                           q{title}, 
     5360                Parse::RecDescent::_trace(q{Trying terminal: [/textarea|text|password|file|checkbox|radio|select|hidden|static/]}, Parse::RecDescent::_tracefirst($text), 
     5361                                          q{type}, 
    55155362                                          $tracelevel) 
    55165363                                                if defined $::RD_TRACE; 
    55175364                $lastsep = ""; 
    5518                 $expectation->is(q{/.*/})->at($text); 
    5519                  
    5520  
    5521                 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:.*)//) 
     5365                $expectation->is(q{/textarea|text|password|file|checkbox|radio|select|hidden|static/})->at($text); 
     5366                 
     5367 
     5368                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:textarea|text|password|file|checkbox|radio|select|hidden|static)//) 
    55225369                { 
    55235370                         
     
    55365383                 
    55375384 
    5538                 Parse::RecDescent::_trace(q{Trying action}, 
    5539                                           Parse::RecDescent::_tracefirst($text), 
    5540                                           q{title}, 
    5541                                           $tracelevel) 
    5542                                                 if defined $::RD_TRACE; 
    5543                  
    5544  
    5545                 $_tok = ($_noactions) ? 0 : do { warn "[Text::Formbuilder] Title redefined at input text line $thisline\n" if defined $title; 
    5546     $title = $item[2] }; 
    5547                 unless (defined $_tok) 
    5548                 { 
    5549                         Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
    5550                                         if defined $::RD_TRACE; 
    5551                         last; 
    5552                 } 
    5553                 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
    5554                                           . $_tok . q{])}, 
    5555                                           Parse::RecDescent::_tracefirst($text)) 
    5556                                                 if defined $::RD_TRACE; 
    5557                 push @item, $_tok; 
    5558                 $item{__ACTION1__}=$_tok; 
    5559                  
    5560  
    5561  
    5562                 Parse::RecDescent::_trace(q{>>Matched production: ['!title' /.*/]<<}, 
    5563                                           Parse::RecDescent::_tracefirst($text), 
    5564                                           q{title}, 
     5385 
     5386                Parse::RecDescent::_trace(q{>>Matched production: [':' /textarea|text|password|file|checkbox|radio|select|hidden|static/]<<}, 
     5387                                          Parse::RecDescent::_tracefirst($text), 
     5388                                          q{type}, 
    55655389                                          $tracelevel) 
    55665390                                                if defined $::RD_TRACE; 
     
    55775401                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
    55785402                                         Parse::RecDescent::_tracefirst($_[1]), 
    5579                                          q{title}, 
     5403                                         q{type}, 
    55805404                                         $tracelevel) 
    55815405                                        if defined $::RD_TRACE; 
     
    55855409        { 
    55865410                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
    5587                                           q{title}, 
     5411                                          q{type}, 
    55885412                                          $tracelevel) 
    55895413                                                if defined $::RD_TRACE; 
     
    55965420                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
    55975421                                          $return . q{])}, "", 
    5598                                           q{title}, 
     5422                                          q{type}, 
    55995423                                          $tracelevel); 
    56005424                Parse::RecDescent::_trace(q{(consumed: [} . 
    56015425                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
    56025426                                          Parse::RecDescent::_tracefirst($text), 
    5603                                           , q{title}, 
     5427                                          , q{type}, 
    56045428                                          $tracelevel) 
    56055429        } 
     
    57645588 
    57655589# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
    5766 sub Parse::RecDescent::Text::FormBuilder::Parser::pattern_def 
     5590sub Parse::RecDescent::Text::FormBuilder::Parser::title 
    57675591{ 
    57685592        my $thisparser = $_[0]; 
     
    57705594        local $tracelevel = ($tracelevel||0)+1; 
    57715595        $ERRORS = 0; 
    5772         my $thisrule = $thisparser->{"rules"}{"pattern_def"}; 
    5773          
    5774         Parse::RecDescent::_trace(q{Trying rule: [pattern_def]}, 
     5596        my $thisrule = $thisparser->{"rules"}{"title"}; 
     5597         
     5598        Parse::RecDescent::_trace(q{Trying rule: [title]}, 
    57755599                                  Parse::RecDescent::_tracefirst($_[1]), 
    5776                                   q{pattern_def}, 
     5600                                  q{title}, 
    57775601                                  $tracelevel) 
    57785602                                        if defined $::RD_TRACE; 
     
    58065630        { 
    58075631                 
     5632                Parse::RecDescent::_trace(q{Trying production: ['!title' /.*/]}, 
     5633                                          Parse::RecDescent::_tracefirst($_[1]), 
     5634                                          q{title}, 
     5635                                          $tracelevel) 
     5636                                                if defined $::RD_TRACE; 
     5637                my $thisprod = $thisrule->{"prods"}[0]; 
     5638                $text = $_[1]; 
     5639                my $_savetext; 
     5640                @item = (q{title}); 
     5641                %item = (__RULE__ => q{title}); 
     5642                my $repcount = 0; 
     5643 
     5644 
     5645                Parse::RecDescent::_trace(q{Trying terminal: ['!title']}, 
     5646                                          Parse::RecDescent::_tracefirst($text), 
     5647                                          q{title}, 
     5648                                          $tracelevel) 
     5649                                                if defined $::RD_TRACE; 
     5650                $lastsep = ""; 
     5651                $expectation->is(q{})->at($text); 
     5652                 
     5653 
     5654                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\!title//) 
     5655                { 
     5656                         
     5657                        $expectation->failed(); 
     5658                        Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
     5659                                                  Parse::RecDescent::_tracefirst($text)) 
     5660                                                        if defined $::RD_TRACE; 
     5661                        last; 
     5662                } 
     5663                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     5664                                                . $& . q{])}, 
     5665                                                  Parse::RecDescent::_tracefirst($text)) 
     5666                                                        if defined $::RD_TRACE; 
     5667                push @item, $item{__STRING1__}=$&; 
     5668                 
     5669 
     5670                Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), 
     5671                                          q{title}, 
     5672                                          $tracelevel) 
     5673                                                if defined $::RD_TRACE; 
     5674                $lastsep = ""; 
     5675                $expectation->is(q{/.*/})->at($text); 
     5676                 
     5677 
     5678                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:.*)//) 
     5679                { 
     5680                         
     5681                        $expectation->failed(); 
     5682                        Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
     5683                                                  Parse::RecDescent::_tracefirst($text)) 
     5684                                        if defined $::RD_TRACE; 
     5685 
     5686                        last; 
     5687                } 
     5688                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     5689                                                . $& . q{])}, 
     5690                                                  Parse::RecDescent::_tracefirst($text)) 
     5691                                        if defined $::RD_TRACE; 
     5692                push @item, $item{__PATTERN1__}=$&; 
     5693                 
     5694 
     5695                Parse::RecDescent::_trace(q{Trying action}, 
     5696                                          Parse::RecDescent::_tracefirst($text), 
     5697                                          q{title}, 
     5698                                          $tracelevel) 
     5699                                                if defined $::RD_TRACE; 
     5700                 
     5701 
     5702                $_tok = ($_noactions) ? 0 : do { warn "[Text::Formbuilder] Title redefined at input text line $thisline\n" if defined $title; 
     5703    $title = $item[2] }; 
     5704                unless (defined $_tok) 
     5705                { 
     5706                        Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
     5707                                        if defined $::RD_TRACE; 
     5708                        last; 
     5709                } 
     5710                Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
     5711                                          . $_tok . q{])}, 
     5712                                          Parse::RecDescent::_tracefirst($text)) 
     5713                                                if defined $::RD_TRACE; 
     5714                push @item, $_tok; 
     5715                $item{__ACTION1__}=$_tok; 
     5716                 
     5717 
     5718 
     5719                Parse::RecDescent::_trace(q{>>Matched production: ['!title' /.*/]<<}, 
     5720                                          Parse::RecDescent::_tracefirst($text), 
     5721                                          q{title}, 
     5722                                          $tracelevel) 
     5723                                                if defined $::RD_TRACE; 
     5724                $_matched = 1; 
     5725                last; 
     5726        } 
     5727 
     5728 
     5729        unless ( $_matched || defined($return) || defined($score) ) 
     5730        { 
     5731                 
     5732 
     5733                $_[1] = $text;  # NOT SURE THIS IS NEEDED 
     5734                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
     5735                                         Parse::RecDescent::_tracefirst($_[1]), 
     5736                                         q{title}, 
     5737                                         $tracelevel) 
     5738                                        if defined $::RD_TRACE; 
     5739                return undef; 
     5740        } 
     5741        if (!defined($return) && defined($score)) 
     5742        { 
     5743                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
     5744                                          q{title}, 
     5745                                          $tracelevel) 
     5746                                                if defined $::RD_TRACE; 
     5747                $return = $score_return; 
     5748        } 
     5749        splice @{$thisparser->{errors}}, $err_at; 
     5750        $return = $item[$#item] unless defined $return; 
     5751        if (defined $::RD_TRACE) 
     5752        { 
     5753                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
     5754                                          $return . q{])}, "", 
     5755                                          q{title}, 
     5756                                          $tracelevel); 
     5757                Parse::RecDescent::_trace(q{(consumed: [} . 
     5758                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
     5759                                          Parse::RecDescent::_tracefirst($text), 
     5760                                          , q{title}, 
     5761                                          $tracelevel) 
     5762        } 
     5763        $_[1] = $text; 
     5764        return $return; 
     5765} 
     5766 
     5767# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
     5768sub Parse::RecDescent::Text::FormBuilder::Parser::pattern_def 
     5769{ 
     5770        my $thisparser = $_[0]; 
     5771        use vars q{$tracelevel}; 
     5772        local $tracelevel = ($tracelevel||0)+1; 
     5773        $ERRORS = 0; 
     5774        my $thisrule = $thisparser->{"rules"}{"pattern_def"}; 
     5775         
     5776        Parse::RecDescent::_trace(q{Trying rule: [pattern_def]}, 
     5777                                  Parse::RecDescent::_tracefirst($_[1]), 
     5778                                  q{pattern_def}, 
     5779                                  $tracelevel) 
     5780                                        if defined $::RD_TRACE; 
     5781 
     5782         
     5783        my $err_at = @{$thisparser->{errors}}; 
     5784 
     5785        my $score; 
     5786        my $score_return; 
     5787        my $_tok; 
     5788        my $return = undef; 
     5789        my $_matched=0; 
     5790        my $commit=0; 
     5791        my @item = (); 
     5792        my %item = (); 
     5793        my $repeating =  defined($_[2]) && $_[2]; 
     5794        my $_noactions = defined($_[3]) && $_[3]; 
     5795        my @arg =        defined $_[4] ? @{ &{$_[4]} } : (); 
     5796        my %arg =        ($#arg & 01) ? @arg : (@arg, undef); 
     5797        my $text; 
     5798        my $lastsep=""; 
     5799        my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); 
     5800        $expectation->at($_[1]); 
     5801         
     5802        my $thisline; 
     5803        tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; 
     5804 
     5805         
     5806 
     5807        while (!$_matched && !$commit) 
     5808        { 
     5809                 
    58085810                Parse::RecDescent::_trace(q{Trying production: ['!pattern' pattern_name pattern]}, 
    58095811                                          Parse::RecDescent::_tracefirst($_[1]), 
     
    59695971                                          Parse::RecDescent::_tracefirst($text), 
    59705972                                          , q{pattern_def}, 
     5973                                          $tracelevel) 
     5974        } 
     5975        $_[1] = $text; 
     5976        return $return; 
     5977} 
     5978 
     5979# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
     5980sub Parse::RecDescent::Text::FormBuilder::Parser::dynamic_list 
     5981{ 
     5982        my $thisparser = $_[0]; 
     5983        use vars q{$tracelevel}; 
     5984        local $tracelevel = ($tracelevel||0)+1; 
     5985        $ERRORS = 0; 
     5986        my $thisrule = $thisparser->{"rules"}{"dynamic_list"}; 
     5987         
     5988        Parse::RecDescent::_trace(q{Trying rule: [dynamic_list]}, 
     5989                                  Parse::RecDescent::_tracefirst($_[1]), 
     5990                                  q{dynamic_list}, 
     5991                                  $tracelevel) 
     5992                                        if defined $::RD_TRACE; 
     5993 
     5994         
     5995        my $err_at = @{$thisparser->{errors}}; 
     5996 
     5997        my $score; 
     5998        my $score_return; 
     5999        my $_tok; 
     6000        my $return = undef; 
     6001        my $_matched=0; 
     6002        my $commit=0; 
     6003        my @item = (); 
     6004        my %item = (); 
     6005        my $repeating =  defined($_[2]) && $_[2]; 
     6006        my $_noactions = defined($_[3]) && $_[3]; 
     6007        my @arg =        defined $_[4] ? @{ &{$_[4]} } : (); 
     6008        my %arg =        ($#arg & 01) ? @arg : (@arg, undef); 
     6009        my $text; 
     6010        my $lastsep=""; 
     6011        my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); 
     6012        $expectation->at($_[1]); 
     6013         
     6014        my $thisline; 
     6015        tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; 
     6016 
     6017         
     6018 
     6019        while (!$_matched && !$commit) 
     6020        { 
     6021                local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip; 
     6022                Parse::RecDescent::_trace(q{Trying production: ['&' <perl_codeblock>]}, 
     6023                                          Parse::RecDescent::_tracefirst($_[1]), 
     6024                                          q{dynamic_list}, 
     6025                                          $tracelevel) 
     6026                                                if defined $::RD_TRACE; 
     6027                my $thisprod = $thisrule->{"prods"}[0]; 
     6028                $text = $_[1]; 
     6029                my $_savetext; 
     6030                @item = (q{dynamic_list}); 
     6031                %item = (__RULE__ => q{dynamic_list}); 
     6032                my $repcount = 0; 
     6033 
     6034 
     6035                Parse::RecDescent::_trace(q{Trying terminal: ['&']}, 
     6036                                          Parse::RecDescent::_tracefirst($text), 
     6037                                          q{dynamic_list}, 
     6038                                          $tracelevel) 
     6039                                                if defined $::RD_TRACE; 
     6040                $lastsep = ""; 
     6041                $expectation->is(q{})->at($text); 
     6042                 
     6043 
     6044                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\&//) 
     6045                { 
     6046                         
     6047                        $expectation->failed(); 
     6048                        Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
     6049                                                  Parse::RecDescent::_tracefirst($text)) 
     6050                                                        if defined $::RD_TRACE; 
     6051                        last; 
     6052                } 
     6053                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     6054                                                . $& . q{])}, 
     6055                                                  Parse::RecDescent::_tracefirst($text)) 
     6056                                                        if defined $::RD_TRACE; 
     6057                push @item, $item{__STRING1__}=$&; 
     6058                 
     6059 
     6060                 
     6061 
     6062                Parse::RecDescent::_trace(q{Trying directive: [<perl_codeblock>]}, 
     6063                                        Parse::RecDescent::_tracefirst($text), 
     6064                                          q{dynamic_list}, 
     6065                                          $tracelevel) 
     6066                                                if defined $::RD_TRACE;  
     6067                $_tok = do { Text::Balanced::extract_codeblock($text,undef,$skip,'{}'); 
     6068                                         }; 
     6069                if (defined($_tok)) 
     6070                { 
     6071                        Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} 
     6072                                                . $_tok . q{])}, 
     6073                                                Parse::RecDescent::_tracefirst($text)) 
     6074                                                        if defined $::RD_TRACE; 
     6075                } 
     6076                else 
     6077                { 
     6078                        Parse::RecDescent::_trace(q{<<Didn't match directive>>}, 
     6079                                                Parse::RecDescent::_tracefirst($text)) 
     6080                                                        if defined $::RD_TRACE; 
     6081                } 
     6082                 
     6083                last unless defined $_tok; 
     6084                push @item, $item{__DIRECTIVE1__}=$_tok; 
     6085                 
     6086 
     6087                Parse::RecDescent::_trace(q{Trying action}, 
     6088                                          Parse::RecDescent::_tracefirst($text), 
     6089                                          q{dynamic_list}, 
     6090                                          $tracelevel) 
     6091                                                if defined $::RD_TRACE; 
     6092                 
     6093 
     6094                $_tok = ($_noactions) ? 0 : do { 
     6095        my @results = (eval $item[2]); 
     6096        if (ref $results[0] eq 'HASH') { 
     6097            @options = @results; 
     6098        } else {     
     6099            @options = map { { $_ => $_ } } @results; 
     6100        } 
     6101    }; 
     6102                unless (defined $_tok) 
     6103                { 
     6104                        Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) 
     6105                                        if defined $::RD_TRACE; 
     6106                        last; 
     6107                } 
     6108                Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} 
     6109                                          . $_tok . q{])}, 
     6110                                          Parse::RecDescent::_tracefirst($text)) 
     6111                                                if defined $::RD_TRACE; 
     6112                push @item, $_tok; 
     6113                $item{__ACTION1__}=$_tok; 
     6114                 
     6115 
     6116 
     6117                Parse::RecDescent::_trace(q{>>Matched production: ['&' <perl_codeblock>]<<}, 
     6118                                          Parse::RecDescent::_tracefirst($text), 
     6119                                          q{dynamic_list}, 
     6120                                          $tracelevel) 
     6121                                                if defined $::RD_TRACE; 
     6122                $_matched = 1; 
     6123                last; 
     6124        } 
     6125 
     6126 
     6127        unless ( $_matched || defined($return) || defined($score) ) 
     6128        { 
     6129                 
     6130 
     6131                $_[1] = $text;  # NOT SURE THIS IS NEEDED 
     6132                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
     6133                                         Parse::RecDescent::_tracefirst($_[1]), 
     6134                                         q{dynamic_list}, 
     6135                                         $tracelevel) 
     6136                                        if defined $::RD_TRACE; 
     6137                return undef; 
     6138        } 
     6139        if (!defined($return) && defined($score)) 
     6140        { 
     6141                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
     6142                                          q{dynamic_list}, 
     6143                                          $tracelevel) 
     6144                                                if defined $::RD_TRACE; 
     6145                $return = $score_return; 
     6146        } 
     6147        splice @{$thisparser->{errors}}, $err_at; 
     6148        $return = $item[$#item] unless defined $return; 
     6149        if (defined $::RD_TRACE) 
     6150        { 
     6151                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
     6152                                          $return . q{])}, "", 
     6153                                          q{dynamic_list}, 
     6154                                          $tracelevel); 
     6155                Parse::RecDescent::_trace(q{(consumed: [} . 
     6156                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
     6157                                          Parse::RecDescent::_tracefirst($text), 
     6158                                          , q{dynamic_list}, 
     6159                                          $tracelevel) 
     6160        } 
     6161        $_[1] = $text; 
     6162        return $return; 
     6163} 
     6164 
     6165# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) 
     6166sub Parse::RecDescent::Text::FormBuilder::Parser::static_list 
     6167{ 
     6168        my $thisparser = $_[0]; 
     6169        use vars q{$tracelevel}; 
     6170        local $tracelevel = ($tracelevel||0)+1; 
     6171        $ERRORS = 0; 
     6172        my $thisrule = $thisparser->{"rules"}{"static_list"}; 
     6173         
     6174        Parse::RecDescent::_trace(q{Trying rule: [static_list]}, 
     6175                                  Parse::RecDescent::_tracefirst($_[1]), 
     6176                                  q{static_list}, 
     6177                                  $tracelevel) 
     6178                                        if defined $::RD_TRACE; 
     6179 
     6180         
     6181        my $err_at = @{$thisparser->{errors}}; 
     6182 
     6183        my $score; 
     6184        my $score_return; 
     6185        my $_tok; 
     6186        my $return = undef; 
     6187        my $_matched=0; 
     6188        my $commit=0; 
     6189        my @item = (); 
     6190        my %item = (); 
     6191        my $repeating =  defined($_[2]) && $_[2]; 
     6192        my $_noactions = defined($_[3]) && $_[3]; 
     6193        my @arg =        defined $_[4] ? @{ &{$_[4]} } : (); 
     6194        my %arg =        ($#arg & 01) ? @arg : (@arg, undef); 
     6195        my $text; 
     6196        my $lastsep=""; 
     6197        my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); 
     6198        $expectation->at($_[1]); 
     6199         
     6200        my $thisline; 
     6201        tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; 
     6202 
     6203         
     6204 
     6205        while (!$_matched && !$commit) 
     6206        { 
     6207                 
     6208                Parse::RecDescent::_trace(q{Trying production: ['\{' <leftop: option /,\\s*/ option> /,?/ '\}']}, 
     6209                                          Parse::RecDescent::_tracefirst($_[1]), 
     6210                                          q{static_list}, 
     6211                                          $tracelevel) 
     6212                                                if defined $::RD_TRACE; 
     6213                my $thisprod = $thisrule->{"prods"}[0]; 
     6214                $text = $_[1]; 
     6215                my $_savetext; 
     6216                @item = (q{static_list}); 
     6217                %item = (__RULE__ => q{static_list}); 
     6218                my $repcount = 0; 
     6219 
     6220 
     6221                Parse::RecDescent::_trace(q{Trying terminal: ['\{']}, 
     6222                                          Parse::RecDescent::_tracefirst($text), 
     6223                                          q{static_list}, 
     6224                                          $tracelevel) 
     6225                                                if defined $::RD_TRACE; 
     6226                $lastsep = ""; 
     6227                $expectation->is(q{})->at($text); 
     6228                 
     6229 
     6230                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\{//) 
     6231                { 
     6232                         
     6233                        $expectation->failed(); 
     6234                        Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
     6235                                                  Parse::RecDescent::_tracefirst($text)) 
     6236                                                        if defined $::RD_TRACE; 
     6237                        last; 
     6238                } 
     6239                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     6240                                                . $& . q{])}, 
     6241                                                  Parse::RecDescent::_tracefirst($text)) 
     6242                                                        if defined $::RD_TRACE; 
     6243                push @item, $item{__STRING1__}=$&; 
     6244                 
     6245 
     6246                Parse::RecDescent::_trace(q{Trying operator: [<leftop: option /,\\s*/ option>]}, 
     6247                                  Parse::RecDescent::_tracefirst($text), 
     6248                                  q{static_list}, 
     6249                                  $tracelevel) 
     6250                                        if defined $::RD_TRACE; 
     6251                $expectation->is(q{<leftop: option /,\\s*/ option>})->at($text); 
     6252 
     6253                $_tok = undef; 
     6254                OPLOOP: while (1) 
     6255                { 
     6256                  $repcount = 0; 
     6257                  my  @item; 
     6258                   
     6259                  # MATCH LEFTARG 
     6260                   
     6261                Parse::RecDescent::_trace(q{Trying subrule: [option]}, 
     6262                                  Parse::RecDescent::_tracefirst($text), 
     6263                                  q{static_list}, 
     6264                                  $tracelevel) 
     6265                                        if defined $::RD_TRACE; 
     6266                if (1) { no strict qw{refs}; 
     6267                $expectation->is(q{option})->at($text); 
     6268                unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
     6269                { 
     6270                         
     6271                        Parse::RecDescent::_trace(q{<<Didn't match subrule: [option]>>}, 
     6272                                                  Parse::RecDescent::_tracefirst($text), 
     6273                                                  q{static_list}, 
     6274                                                  $tracelevel) 
     6275                                                        if defined $::RD_TRACE; 
     6276                        $expectation->failed(); 
     6277                        last; 
     6278                } 
     6279                Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [} 
     6280                                        . $_tok . q{]}, 
     6281                                           
     6282                                          Parse::RecDescent::_tracefirst($text), 
     6283                                          q{static_list}, 
     6284                                          $tracelevel) 
     6285                                                if defined $::RD_TRACE; 
     6286                $item{q{option}} = $_tok; 
     6287                push @item, $_tok; 
     6288                 
     6289                } 
     6290 
     6291 
     6292                  $repcount++; 
     6293 
     6294                  my $savetext = $text; 
     6295                  my $backtrack; 
     6296 
     6297                  # MATCH (OP RIGHTARG)(s) 
     6298                  while ($repcount < 100000000) 
     6299                  { 
     6300                        $backtrack = 0; 
     6301                         
     6302                Parse::RecDescent::_trace(q{Trying terminal: [/,\\s*/]}, Parse::RecDescent::_tracefirst($text), 
     6303                                          q{static_list}, 
     6304                                          $tracelevel) 
     6305                                                if defined $::RD_TRACE; 
     6306                $lastsep = ""; 
     6307                $expectation->is(q{/,\\s*/})->at($text); 
     6308                 
     6309 
     6310                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,\s*)//) 
     6311                { 
     6312                         
     6313                        $expectation->failed(); 
     6314                        Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
     6315                                                  Parse::RecDescent::_tracefirst($text)) 
     6316                                        if defined $::RD_TRACE; 
     6317 
     6318                        last; 
     6319                } 
     6320                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     6321                                                . $& . q{])}, 
     6322                                                  Parse::RecDescent::_tracefirst($text)) 
     6323                                        if defined $::RD_TRACE; 
     6324                push @item, $item{__PATTERN1__}=$&; 
     6325                 
     6326 
     6327                        pop @item; 
     6328                        if (defined $1) {push @item, $item{'option(s)'}=$1; $backtrack=1;} 
     6329                         
     6330                Parse::RecDescent::_trace(q{Trying subrule: [option]}, 
     6331                                  Parse::RecDescent::_tracefirst($text), 
     6332                                  q{static_list}, 
     6333                                  $tracelevel) 
     6334                                        if defined $::RD_TRACE; 
     6335                if (1) { no strict qw{refs}; 
     6336                $expectation->is(q{option})->at($text); 
     6337                unless (defined ($_tok = Parse::RecDescent::Text::FormBuilder::Parser::option($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) 
     6338                { 
     6339                         
     6340                        Parse::RecDescent::_trace(q{<<Didn't match subrule: [option]>>}, 
     6341                                                  Parse::RecDescent::_tracefirst($text), 
     6342                                                  q{static_list}, 
     6343                                                  $tracelevel) 
     6344                                                        if defined $::RD_TRACE; 
     6345                        $expectation->failed(); 
     6346                        last; 
     6347                } 
     6348                Parse::RecDescent::_trace(q{>>Matched subrule: [option]<< (return value: [} 
     6349                                        . $_tok . q{]}, 
     6350                                           
     6351                                          Parse::RecDescent::_tracefirst($text), 
     6352                                          q{static_list}, 
     6353                                          $tracelevel) 
     6354                                                if defined $::RD_TRACE; 
     6355                $item{q{option}} = $_tok; 
     6356                push @item, $_tok; 
     6357                 
     6358                } 
     6359 
     6360                        $savetext = $text; 
     6361                        $repcount++; 
     6362                  } 
     6363                  $text = $savetext; 
     6364                  pop @item if $backtrack; 
     6365 
     6366                  unless (@item) { undef $_tok; last } 
     6367                  $_tok = [ @item ]; 
     6368                  last; 
     6369                }  
     6370 
     6371                unless ($repcount>=1) 
     6372                { 
     6373                        Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: option /,\\s*/ option>]>>}, 
     6374                                                  Parse::RecDescent::_tracefirst($text), 
     6375                                                  q{static_list}, 
     6376                                                  $tracelevel) 
     6377                                                        if defined $::RD_TRACE; 
     6378                        $expectation->failed(); 
     6379                        last; 
     6380                } 
     6381                Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: option /,\\s*/ option>]<< (return value: [} 
     6382                                          . qq{@{$_tok||[]}} . q{]}, 
     6383                                          Parse::RecDescent::_tracefirst($text), 
     6384                                          q{static_list}, 
     6385                                          $tracelevel) 
     6386                                                if defined $::RD_TRACE; 
     6387 
     6388                push @item, $item{'option(s)'}=$_tok||[]; 
     6389 
     6390 
     6391                Parse::RecDescent::_trace(q{Trying terminal: [/,?/]}, Parse::RecDescent::_tracefirst($text), 
     6392                                          q{static_list}, 
     6393                                          $tracelevel) 
     6394                                                if defined $::RD_TRACE; 
     6395                $lastsep = ""; 
     6396                $expectation->is(q{/,?/})->at($text); 
     6397                 
     6398 
     6399                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,?)//) 
     6400                { 
     6401                         
     6402                        $expectation->failed(); 
     6403                        Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, 
     6404                                                  Parse::RecDescent::_tracefirst($text)) 
     6405                                        if defined $::RD_TRACE; 
     6406 
     6407                        last; 
     6408                } 
     6409                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     6410                                                . $& . q{])}, 
     6411                                                  Parse::RecDescent::_tracefirst($text)) 
     6412                                        if defined $::RD_TRACE; 
     6413                push @item, $item{__PATTERN2__}=$&; 
     6414                 
     6415 
     6416                Parse::RecDescent::_trace(q{Trying terminal: ['\}']}, 
     6417                                          Parse::RecDescent::_tracefirst($text), 
     6418                                          q{static_list}, 
     6419                                          $tracelevel) 
     6420                                                if defined $::RD_TRACE; 
     6421                $lastsep = ""; 
     6422                $expectation->is(q{'\}'})->at($text); 
     6423                 
     6424 
     6425                unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\}//) 
     6426                { 
     6427                         
     6428                        $expectation->failed(); 
     6429                        Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, 
     6430                                                  Parse::RecDescent::_tracefirst($text)) 
     6431                                                        if defined $::RD_TRACE; 
     6432                        last; 
     6433                } 
     6434                Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} 
     6435                                                . $& . q{])}, 
     6436                                                  Parse::RecDescent::_tracefirst($text)) 
     6437                                                        if defined $::RD_TRACE; 
     6438                push @item, $item{__STRING2__}=$&; 
     6439                 
     6440 
     6441 
     6442                Parse::RecDescent::_trace(q{>>Matched production: ['\{' <leftop: option /,\\s*/ option> /,?/ '\}']<<}, 
     6443                                          Parse::RecDescent::_tracefirst($text), 
     6444                                          q{static_list}, 
     6445                                          $tracelevel) 
     6446                                                if defined $::RD_TRACE; 
     6447                $_matched = 1; 
     6448                last; 
     6449        } 
     6450 
     6451 
     6452        unless ( $_matched || defined($return) || defined($score) ) 
     6453        { 
     6454                 
     6455 
     6456                $_[1] = $text;  # NOT SURE THIS IS NEEDED 
     6457                Parse::RecDescent::_trace(q{<<Didn't match rule>>}, 
     6458                                         Parse::RecDescent::_tracefirst($_[1]), 
     6459                                         q{static_list}, 
     6460                                         $tracelevel) 
     6461                                        if defined $::RD_TRACE; 
     6462                return undef; 
     6463        } 
     6464        if (!defined($return) && defined($score)) 
     6465        { 
     6466                Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", 
     6467                                          q{static_list}, 
     6468                                          $tracelevel) 
     6469                                                if defined $::RD_TRACE; 
     6470                $return = $score_return; 
     6471        } 
     6472        splice @{$thisparser->{errors}}, $err_at; 
     6473        $return = $item[$#item] unless defined $return; 
     6474        if (defined $::RD_TRACE) 
     6475        { 
     6476                Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . 
     6477                                          $return . q{])}, "", 
     6478                                          q{static_list}, 
     6479                                          $tracelevel); 
     6480                Parse::RecDescent::_trace(q{(consumed: [} . 
     6481                                          Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},  
     6482                                          Parse::RecDescent::_tracefirst($text), 
     6483                                          , q{static_list}, 
    59716484                                          $tracelevel) 
    59726485        } 
     
    60116524                                                                                                'lookahead' => 0, 
    60126525                                                                                                'rdelim' => '/', 
    6013                                                                                                 'line' => 70, 
     6526                                                                                                'line' => 82, 
    60146527                                                                                                'mod' => '', 
    60156528                                                                                                'ldelim' => '/' 
     
    60216534                                                                                                'lookahead' => 0, 
    60226535                                                                                                'rdelim' => '/', 
    6023                                                                                                 'line' => 70, 
     6536                                                                                                'line' => 82, 
    60246537                                                                                                'mod' => '', 
    60256538                                                                                                'ldelim' => '/' 
     
    60316544                                                                                                'lookahead' => 0, 
    60326545                                                                                                'rdelim' => '/', 
    6033                                                                                                 'line' => 70, 
     6546                                                                                                'line' => 82, 
    60346547                                                                                                'mod' => '', 
    60356548                                                                                                'ldelim' => '/' 
     
    60386551                                                                                                'hashname' => '__ACTION1__', 
    60396552                                                                                                'lookahead' => 0, 
    6040                                                                                                 'line' => 71, 
     6553                                                                                                'line' => 83, 
    60416554                                                                                                'code' => '{ $rows = $item[1]; $cols = $item[3] }' 
    60426555                                                                                              }, 'Parse::RecDescent::Action' ) 
     
    60476560                                                    'name' => 'row_col', 
    60486561                                                    'vars' => '', 
    6049                                                     'line' => 70 
     6562                                                    'line' => 82 
    60506563                                                  }, 'Parse::RecDescent::Rule' ), 
    60516564                              'options' => bless( { 
     
    60726585                                                                                                'description' => '\'\\{\'', 
    60736586                                                                                                'lookahead' => 0, 
    6074                                                                                                 'line' => 83 
     6587                                                                                                'line' => 95 
    60756588                                                                                              }, 'Parse::RecDescent::Literal' ), 
    60766589                                                                                       bless( { 
     
    60856598                                                                                                                      'argcode' => undef, 
    60866599                                                                                                                      'lookahead' => 0, 
    6087                                                                                                                       'line' => 83 
     6600                                                                                                                      'line' => 95 
    60886601                                                                                                                    }, 'Parse::RecDescent::Subrule' ), 
    60896602                                                                                                'rightarg' => bless( { 
     
    60936606                                                                                                                       'argcode' => undef, 
    60946607                                                                                                                       'lookahead' => 0, 
    6095                                                                                                                        'line' => 83 
     6608                                                                                                                       'line' => 95 
    60966609                                                                                                                     }, 'Parse::RecDescent::Subrule' ), 
    60976610                                                                                                'hashname' => '__DIRECTIVE1__', 
     
    61036616                                                                                                                 'lookahead' => 0, 
    61046617                                                                                                                 'rdelim' => '/', 
    6105                                                                                                                  'line' => 83, 
     6618                                                                                                                 'line' => 95, 
    61066619                                                                                                                 'mod' => '', 
    61076620                                                                                                                 'ldelim' => '/' 
     
    61136626                                                                                                'description' => '\'\\}\'', 
    61146627                                                                                                'lookahead' => 0, 
    6115                                                                                                 'line' => 83 
     6628                                                                                                'line' => 95 
    61166629                                                                                              }, 'Parse::RecDescent::Literal' ) 
    61176630                                                                                     ], 
     
    61216634                                                    'name' => 'options', 
    61226635                                                    'vars' => '', 
    6123                                                     'line' => 83 
     6636                                                    'line' => 95 
    61246637                                                  }, 'Parse::RecDescent::Rule' ), 
    61256638                              'list_def' => bless( { 
    6126                                                      'impcount' => 0, 
     6639                                                     'impcount' => 1, 
    61276640                                                     'calls' => [ 
    61286641                                                                  'list_name', 
    6129                                                                   'option' 
     6642                                                                  '_alternation_1_of_production_1_of_rule_list_def' 
    61306643                                                                ], 
    61316644                                                     'changed' => 0, 
     
    61346647                                                                  bless( { 
    61356648                                                                           'number' => '0', 
    6136                                                                            'strcount' => 3, 
    6137                                                                            'dircount' => 1, 
     6649                                                                           'strcount' => 1, 
     6650                                                                           'dircount' => 0, 
    61386651                                                                           'uncommit' => undef, 
    61396652                                                                           'error' => undef, 
    6140                                                                            'patcount' => 2, 
     6653                                                                           'patcount' => 0, 
    61416654                                                                           'actcount' => 1, 
    6142                                                                            'op' => [], 
    61436655                                                                           'items' => [ 
    61446656                                                                                        bless( { 
     
    61586670                                                                                               }, 'Parse::RecDescent::Subrule' ), 
    61596671                                                                                        bless( { 
    6160                                                                                                  'pattern' => '{', 
    6161                                                                                                  'hashname' => '__STRING2__', 
    6162                                                                                                  'description' => '\'\\{\'', 
     6672                                                                                                 'subrule' => '_alternation_1_of_production_1_of_rule_list_def', 
     6673                                                                                                 'matchrule' => 0, 
     6674                                                                                                 'implicit' => 'static_list, or dynamic_list', 
     6675                                                                                                 'argcode' => undef, 
    61636676                                                                                                 'lookahead' => 0, 
    61646677                                                                                                 'line' => 14 
    6165                                                                                                }, 'Parse::RecDescent::Literal' ), 
    6166                                                                                         bless( { 
    6167                                                                                                  'expected' => '<leftop: option /,\\\\s*/ option>', 
    6168                                                                                                  'min' => 1, 
    6169                                                                                                  'name' => '\'option(s)\'', 
    6170                                                                                                  'max' => 100000000, 
    6171                                                                                                  'leftarg' => bless( { 
    6172                                                                                                                        'subrule' => 'option', 
    6173                                                                                                                        'matchrule' => 0, 
    6174                                                                                                                        'implicit' => undef, 
    6175                                                                                                                        'argcode' => undef, 
    6176                                                                                                                        'lookahead' => 0, 
    6177                                                                                                                        'line' => 14 
    6178                                                                                                                      }, 'Parse::RecDescent::Subrule' ), 
    6179                                                                                                  'rightarg' => bless( { 
    6180                                                                                                                         'subrule' => 'option', 
    6181                                                                                                                         'matchrule' => 0, 
    6182                                                                                                                         'implicit' => undef, 
    6183                                                                                                                         'argcode' => undef, 
    6184                                                                                                                         'lookahead' => 0, 
    6185                                                                                                                         'line' => 14 
    6186                                                                                                                       }, 'Parse::RecDescent::Subrule' ), 
    6187                                                                                                  'hashname' => '__DIRECTIVE1__', 
    6188                                                                                                  'type' => 'leftop', 
    6189                                                                                                  'op' => bless( { 
    6190                                                                                                                   'pattern' => ',\\s*', 
    6191                                                                                                                   'hashname' => '__PATTERN1__', 
    6192                                                                                                                   'description' => '/,\\\\s*/', 
    6193                                                                                                                   'lookahead' => 0, 
    6194                                                                                                                   'rdelim' => '/', 
    6195                                                                                                                   'line' => 14, 
    6196                                                                                                                   'mod' => '', 
    6197                                                                                                                   'ldelim' => '/' 
    6198                                                                                                                 }, 'Parse::RecDescent::Token' ) 
    6199                                                                                                }, 'Parse::RecDescent::Operator' ), 
    6200                                                                                         bless( { 
    6201                                                                                                  'pattern' => ',?', 
    6202                                                                                                  'hashname' => '__PATTERN2__', 
    6203                                                                                                  'description' => '/,?/', 
    6204                                                                                                  'lookahead' => 0, 
    6205                                                                                                  'rdelim' => '/', 
    6206                                                                                                  'line' => 14, 
    6207                                                                                                  'mod' => '', 
    6208                                                                                                  'ldelim' => '/' 
    6209                                                                                                }, 'Parse::RecDescent::Token' ), 
    6210                                                                                         bless( { 
    6211                                                                                                  'pattern' => '}', 
    6212                                                                                                  'hashname' => '__STRING3__', 
    6213                                                                                                  'description' => '\'\\}\'', 
    6214                                                                                                  'lookahead' => 0, 
    6215                                                                                                  'line' => 14 
    6216                                                                                                }, 'Parse::RecDescent::Literal' ), 
     6678                                                                                               }, 'Parse::RecDescent::Subrule' ), 
    62176679                                                                                        bless( { 
    62186680                                                                                                 'hashname' => '__ACTION1__', 
     
    62516713                                                                                                   'description' => '\'[\'', 
    62526714                                                                                                   'lookahead' => 0, 
    6253                                                                                                    'line' => 65 
     6715                                                                                                   'line' => 77 
    62546716                                                                                                 }, 'Parse::RecDescent::Literal' ), 
    62556717                                                                                          bless( { 
     
    62596721                                                                                                   'argcode' => undef, 
    62606722                                                                                                   'lookahead' => 0, 
    6261                                                                                                    'line' => 65 
     6723                                                                                                   'line' => 77 
    62626724                                                                                                 }, 'Parse::RecDescent::Subrule' ), 
    62636725                                                                                          bless( { 
     
    62666728                                                                                                   'description' => '\']\'', 
    62676729                                                                                                   'lookahead' => 0, 
    6268                                                                                                    'line' => 65 
     6730                                                                                                   'line' => 77 
    62696731                                                                                                 }, 'Parse::RecDescent::Literal' ) 
    62706732                                                                                        ], 
     
    62746736                                                       'name' => 'field_size', 
    62756737                                                       'vars' => '', 
    6276                                                        'line' => 65 
     6738                                                       'line' => 77 
    62776739                                                     }, 'Parse::RecDescent::Rule' ), 
    62786740                              'author' => bless( { 
     
    62966758                                                                                               'description' => '\'!author\'', 
    62976759                                                                                               'lookahead' => 0, 
    6298                                                                                                'line' => 25 
     6760                                                                                               'line' => 37 
    62996761                                                                                             }, 'Parse::RecDescent::Literal' ), 
    63006762                                                                                      bless( { 
     
    63046766                                                                                               'lookahead' => 0, 
    63056767                                                                                               'rdelim' => '/', 
    6306                                                                                                'line' => 25, 
     6768                                                                                               'line' => 37, 
    63076769                                                                                               'mod' => '', 
    63086770                                                                                               'ldelim' => '/' 
     
    63116773                                                                                               'hashname' => '__ACTION1__', 
    63126774                                                                                               'lookahead' => 0, 
    6313                                                                                                'line' => 26, 
     6775                                                                                               'line' => 38, 
    63146776                                                                                               'code' => '{ $author = $item[2] }' 
    63156777                                                                                             }, 'Parse::RecDescent::Action' ) 
     
    63206782                                                   'name' => 'author', 
    63216783                                                   'vars' => '', 
    6322                                                    'line' => 25 
     6784                                                   'line' => 37 
    63236785                                                 }, 'Parse::RecDescent::Rule' ), 
    63246786                              'list_name' => bless( { 
     
    63436805                                                                                                  'lookahead' => 0, 
    63446806                                                                                                  'rdelim' => '/', 
    6345                                                                                                   'line' => 17, 
     6807                                                                                                  'line' => 29, 
    63466808                                                                                                  'mod' => '', 
    63476809                                                                                                  'ldelim' => '/' 
     
    63536815                                                      'name' => 'list_name', 
    63546816                                                      'vars' => '', 
    6355                                                       'line' => 17 
     6817                                                      'line' => 29 
    63566818                                                    }, 'Parse::RecDescent::Rule' ), 
    63576819                              'size' => bless( { 
     
    63766838                                                                                             'lookahead' => 0, 
    63776839                                                                                             'rdelim' => '/', 
    6378                                                                                              'line' => 67, 
     6840                                                                                             'line' => 79, 
    63796841                                                                                             'mod' => '', 
    63806842                                                                                             'ldelim' => '/' 
     
    63836845                                                                                             'hashname' => '__ACTION1__', 
    63846846                                                                                             'lookahead' => 0, 
    6385                                                                                              'line' => 68, 
     6847                                                                                             'line' => 80, 
    63866848                                                                                             'code' => '{ $size = $item[1] }' 
    63876849                                                                                           }, 'Parse::RecDescent::Action' ) 
     
    63926854                                                 'name' => 'size', 
    63936855                                                 'vars' => '', 
    6394                                                  'line' => 67 
     6856                                                 'line' => 79 
    63956857                                               }, 'Parse::RecDescent::Rule' ), 
    63966858                              'identifier' => bless( { 
     
    64156877                                                                                                   'lookahead' => 0, 
    64166878                                                                                                   'rdelim' => '/', 
    6417                                                                                                    'line' => 99, 
     6879                                                                                                   'line' => 111, 
    64186880                                                                                                   'mod' => '', 
    64196881                                                                                                   'ldelim' => '/' 
     
    64256887                                                       'name' => 'identifier', 
    64266888                                                       'vars' => '', 
    6427                                                        'line' => 99 
     6889                                                       'line' => 111 
    64286890                                                     }, 'Parse::RecDescent::Rule' ), 
    64296891                              'blank' => bless( { 
     
    64476909                                                  'name' => 'blank', 
    64486910                                                  'vars' => '', 
    6449                                                   'line' => 97 
     6911                                                  'line' => 109 
    64506912                                                }, 'Parse::RecDescent::Rule' ), 
    64516913                              'option' => bless( { 
     
    64736935                                                                                               'argcode' => undef, 
    64746936                                                                                               'lookahead' => 0, 
    6475                                                                                                'line' => 87 
     6937                                                                                               'line' => 99 
    64766938                                                                                             }, 'Parse::RecDescent::Subrule' ), 
    64776939                                                                                      bless( { 
     
    64846946                                                                                               'repspec' => '?', 
    64856947                                                                                               'lookahead' => 0, 
    6486                                                                                                'line' => 87 
     6948                                                                                               'line' => 99 
    64876949                                                                                             }, 'Parse::RecDescent::Repetition' ), 
    64886950                                                                                      bless( { 
    64896951                                                                                               'hashname' => '__ACTION1__', 
    64906952                                                                                               'lookahead' => 0, 
    6491                                                                                                'line' => 88, 
     6953                                                                                               'line' => 100, 
    64926954                                                                                               'code' => '{ push @options, { $item{value} => $item{\'display_text(?)\'}[0] } }' 
    64936955                                                                                             }, 'Parse::RecDescent::Action' ) 
     
    64986960                                                   'name' => 'option', 
    64996961                                                   'vars' => '', 
    6500                                                    'line' => 87 
     6962                                                   'line' => 99 
    65016963                                                 }, 'Parse::RecDescent::Rule' ), 
    65026964                              'pattern_name' => bless( { 
     
    65216983                                                                                                     'lookahead' => 0, 
    65226984                                                                                                     'rdelim' => '/', 
    6523                                                                                                      'line' => 31, 
     6985                                                                                                     'line' => 43, 
    65246986                                                                                                     'mod' => '', 
    65256987                                                                                                     'ldelim' => '/' 
     
    65316993                                                         'name' => 'pattern_name', 
    65326994                                                         'vars' => '', 
    6533                                                          'line' => 31 
     6995                                                         'line' => 43 
    65346996                                                       }, 'Parse::RecDescent::Rule' ), 
    65356997                              'validate' => bless( { 
     
    65557017                                                                                                 'description' => '\'//\'', 
    65567018                                                                                                 'lookahead' => 0, 
    6557                                                                                                  'line' => 94 
     7019                                                                                                 'line' => 106 
    65587020                                                                                               }, 'Parse::RecDescent::Literal' ), 
    65597021                                                                                        bless( { 
     
    65637025                                                                                                 'argcode' => undef, 
    65647026                                                                                                 'lookahead' => 0, 
    6565                                                                                                  'line' => 94 
     7027                                                                                                 'line' => 106 
    65667028                                                                                               }, 'Parse::RecDescent::Subrule' ) 
    65677029                                                                                      ], 
     
    65717033                                                     'name' => 'validate', 
    65727034                                                     'vars' => '', 
    6573                                                      'line' => 94 
     7035                                                     'line' => 106 
    65747036                                                   }, 'Parse::RecDescent::Rule' ), 
    65757037                              'list_var' => bless( { 
     
    65947056                                                                                                 'lookahead' => 0, 
    65957057                                                                                                 'rdelim' => '/', 
    6596                                                                                                  'line' => 85, 
     7058                                                                                                 'line' => 97, 
    65977059                                                                                                 'mod' => '', 
    65987060                                                                                                 'ldelim' => '/' 
     
    66017063                                                                                                 'hashname' => '__ACTION1__', 
    66027064                                                                                                 'lookahead' => 0, 
    6603                                                                                                  'line' => 85, 
     7065                                                                                                 'line' => 97, 
    66047066                                                                                                 'code' => '{ $list_var = $item[1] }' 
    66057067                                                                                               }, 'Parse::RecDescent::Action' ) 
     
    66107072                                                     'name' => 'list_var', 
    66117073                                                     'vars' => '', 
    6612                                                      'line' => 85 
     7074                                                     'line' => 97 
    66137075                                                   }, 'Parse::RecDescent::Rule' ), 
    66147076                              'field' => bless( { 
     
    66427104                                                                                              'argcode' => undef, 
    66437105                                                                                              'lookahead' => 0, 
    6644                                                                                               'line' => 34 
     7106                                                                                              'line' => 46 
    66457107                                                                                            }, 'Parse::RecDescent::Subrule' ), 
    66467108                                                                                     bless( { 
     
    66537115                                                                                              'repspec' => '?', 
    66547116                                                                                              'lookahead' => 0, 
    6655                                                                                               'line' => 34 
     7117                                                                                              'line' => 46 
    66567118                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    66577119                                                                                     bless( { 
     
    66647126                                                                                              'repspec' => '?', 
    66657127                                                                                              'lookahead' => 0, 
    6666                                                                                               'line' => 34 
     7128                                                                                              'line' => 46 
    66677129                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    66687130                                                                                     bless( { 
     
    66757137                                                                                              'repspec' => '?', 
    66767138                                                                                              'lookahead' => 0, 
    6677                                                                                               'line' => 34 
     7139                                                                                              'line' => 46 
    66787140                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    66797141                                                                                     bless( { 
     
    66867148                                                                                              'repspec' => '?', 
    66877149                                                                                              'lookahead' => 0, 
    6688                                                                                               'line' => 34 
     7150                                                                                              'line' => 46 
    66897151                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    66907152                                                                                     bless( { 
     
    66977159                                                                                              'repspec' => '?', 
    66987160                                                                                              'lookahead' => 0, 
    6699                                                                                               'line' => 34 
     7161                                                                                              'line' => 46 
    67007162                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    67017163                                                                                     bless( { 
     
    67087170                                                                                              'repspec' => '?', 
    67097171                                                                                              'lookahead' => 0, 
    6710                                                                                               'line' => 34 
     7172                                                                                              'line' => 46 
    67117173                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    67127174                                                                                     bless( { 
     
    67197181                                                                                              'repspec' => '?', 
    67207182                                                                                              'lookahead' => 0, 
    6721                                                                                               'line' => 34 
     7183                                                                                              'line' => 46 
    67227184                                                                                            }, 'Parse::RecDescent::Repetition' ), 
    67237185                                                                                     bless( { 
    67247186                                                                                              'hashname' => '__ACTION1__', 
    67257187                                                                                              'lookahead' => 0, 
    6726                                                                                               'line' => 35, 
     7188                                                                                              'line' => 47, 
    67277189                                                                                              'code' => '{ 
    67287190        my $field = { 
     
    67597221                                                  'name' => 'field', 
    67607222                                                  'vars' => '', 
    6761                                                   'line' => 34 
     7223                                                  'line' => 46 
    67627224                                                }, 'Parse::RecDescent::Rule' ), 
    67637225                              '_alternation_1_of_production_1_of_rule_form_spec' => bless( { 
     
    67857247                                                                                                                                         'argcode' => undef, 
    67867248                                                                                                                                         'lookahead' => 0, 
    6787                                                                                                                                          'line' => 100 
     7249                                                                                                                                         'line' => 112 
    67887250                                                                                                                                       }, 'Parse::RecDescent::Subrule' ) 
    67897251                                                                                                                              ], 
     
    68057267                                                                                                                                         'argcode' => undef, 
    68067268                                                                                                                                         'lookahead' => 0, 
    6807                                                                                                                                          'line' => 100 
     7269                                                                                                                                         'line' => 112 
    68087270                                                                                                                                       }, 'Parse::RecDescent::Subrule' ) 
    68097271                                                                                                                              ], 
    6810                                                                                                                    'line' => 100 
     7272                                                                                                                   'line' => 112 
    68117273                                                                                                                 }, 'Parse::RecDescent::Production' ) 
    68127274                                                                                                        ], 
    68137275                                                                                             'name' => '_alternation_1_of_production_1_of_rule_form_spec', 
    68147276                                                                                             'vars' => '', 
    6815                                                                                              'line' => 100 
     7277                                                                                             'line' => 112 
    68167278                                                                                           }, 'Parse::RecDescent::Rule' ), 
    68177279                              'line' => bless( { 
     
    68367298                                                                                             'name' => '<skip:\'[ \\t]*\'>', 
    68377299                                                                                             'lookahead' => 0, 
    6838                                                                                              'line' => 19, 
     7300                                                                                             'line' => 31, 
    68397301                                                                                             'code' => 'my $oldskip = $skip; $skip=\'[ \\t]*\'; $oldskip' 
    68407302                                                                                           }, 'Parse::RecDescent::Directive' ), 
     
    68457307                                                                                             'argcode' => undef, 
    68467308                                                                                             'lookahead' => 0, 
    6847                                                                                              'line' => 19 
     7309                                                                                             'line' => 31 
    68487310                                                                                           }, 'Parse::RecDescent::Subrule' ), 
    68497311                                                                                    bless( { 
     
    68527314                                                                                             'description' => '\'\\\\n\'', 
    68537315                                                                                             'lookahead' => 0, 
    6854                                                                                              'line' => 19 
     7316                                                                                             'line' => 31 
    68557317                                                                                           }, 'Parse::RecDescent::InterpLit' ) 
    68567318                                                                                  ], 
     
    68607322                                                 'name' => 'line', 
    68617323                                                 'vars' => '', 
    6862                                                  'line' => 19 
     7324                                                 'line' => 31 
    68637325                                               }, 'Parse::RecDescent::Rule' ), 
    68647326                              'option_list' => bless( { 
     
    68867348                                                                                                    'argcode' => undef, 
    68877349                                                                                                    'lookahead' => 0, 
    6888                                                                                                     'line' => 81 
     7350                                                                                                    'line' => 93 
    68897351                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    68907352                                                                                         ], 
     
    69067368                                                                                                    'argcode' => undef, 
    69077369                                                                                                    'lookahead' => 0, 
    6908                                                                                                     'line' => 81 
     7370                                                                                                    'line' => 93 
    69097371                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    69107372                                                                                         ], 
    6911                                                                               'line' => 81 
     7373                                                                              'line' => 93 
    69127374                                                                            }, 'Parse::RecDescent::Production' ) 
    69137375                                                                   ], 
    69147376                                                        'name' => 'option_list', 
    69157377                                                        'vars' => '', 
    6916                                                         'line' => 81 
     7378                                                        'line' => 93 
    69177379                                                      }, 'Parse::RecDescent::Rule' ), 
    69187380                              '_alternation_1_of_production_1_of_rule_line' => bless( { 
     
    69447406                                                                                                                                    'argcode' => undef, 
    69457407                                                                                                                                    'lookahead' => 0, 
    6946                                                                                                                                     'line' => 100 
     7408                                                                                                                                    'line' => 112 
    69477409                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    69487410                                                                                                                         ], 
     
    69647426                                                                                                                                    'argcode' => undef, 
    69657427                                                                                                                                    'lookahead' => 0, 
    6966                                                                                                                                     'line' => 100 
     7428                                                                                                                                    'line' => 112 
    69677429                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    69687430                                                                                                                         ], 
    6969                                                                                                               'line' => 100 
     7431                                                                                                              'line' => 112 
    69707432                                                                                                            }, 'Parse::RecDescent::Production' ), 
    69717433                                                                                                     bless( { 
     
    69847446                                                                                                                                    'argcode' => undef, 
    69857447                                                                                                                                    'lookahead' => 0, 
    6986                                                                                                                                     'line' => 100 
     7448                                                                                                                                    'line' => 112 
    69877449                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    69887450                                                                                                                         ], 
    6989                                                                                                               'line' => 100 
     7451                                                                                                              'line' => 112 
    69907452                                                                                                            }, 'Parse::RecDescent::Production' ), 
    69917453                                                                                                     bless( { 
     
    70047466                                                                                                                                    'argcode' => undef, 
    70057467                                                                                                                                    'lookahead' => 0, 
    7006                                                                                                                                     'line' => 100 
     7468                                                                                                                                    'line' => 112 
    70077469                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    70087470                                                                                                                         ], 
    7009                                                                                                               'line' => 100 
     7471                                                                                                              'line' => 112 
    70107472                                                                                                            }, 'Parse::RecDescent::Production' ), 
    70117473                                                                                                     bless( { 
     
    70247486                                                                                                                                    'argcode' => undef, 
    70257487                                                                                                                                    'lookahead' => 0, 
    7026                                                                                                                                     'line' => 100 
     7488                                                                                                                                    'line' => 112 
    70277489                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    70287490                                                                                                                         ], 
    7029                                                                                                               'line' => 100 
     7491                                                                                                              'line' => 112 
    70307492                                                                                                            }, 'Parse::RecDescent::Production' ), 
    70317493                                                                                                     bless( { 
     
    70447506                                                                                                                                    'argcode' => undef, 
    70457507                                                                                                                                    'lookahead' => 0, 
    7046                                                                                                                                     'line' => 100 
     7508                                                                                                                                    'line' => 112 
    70477509                                                                                                                                  }, 'Parse::RecDescent::Subrule' ) 
    70487510                                                                                                                         ], 
    7049                                                                                                               'line' => 100 
     7511                                                                                                              'line' => 112 
    70507512                                                                                                            }, 'Parse::RecDescent::Production' ) 
    70517513                                                                                                   ], 
    70527514                                                                                        'name' => '_alternation_1_of_production_1_of_rule_line', 
    70537515                                                                                        'vars' => '', 
    7054                                                                                         'line' => 100 
     7516                                                                                        'line' => 112 
    70557517                                                                                      }, 'Parse::RecDescent::Rule' ), 
    70567518                              'value' => bless( { 
     
    70777539                                                                                              'argcode' => undef, 
    70787540                                                                                              'lookahead' => 0, 
    7079                                                                                               'line' => 90 
     7541                                                                                              'line' => 102 
    70807542                                                                                            }, 'Parse::RecDescent::Subrule' ) 
    70817543                                                                                   ], 
     
    70857547                                                  'name' => 'value', 
    70867548                                                  'vars' => '', 
    7087                                                   'line' => 90 
     7549                                                  'line' => 102 
    70887550                                                }, 'Parse::RecDescent::Rule' ), 
    70897551                              '_alternation_1_of_production_1_of_rule_field_size' => bless( { 
     
    71117573                                                                                                                                          'argcode' => undef, 
    71127574                                                                                                                                          'lookahead' => 0, 
    7113                                                                                                                                           'line' => 100 
     7575                                                                                                                                          'line' => 112 
    71147576                                                                                                                                        }, 'Parse::RecDescent::Subrule' ) 
    71157577                                                                                                                               ], 
     
    71317593                                                                                                                                          'argcode' => undef, 
    71327594                                                                                                                                          'lookahead' => 0, 
    7133                                                                                                                                           'line' => 100 
     7595                                                                                                                                          'line' => 112 
    71347596                                                                                                                                        }, 'Parse::RecDescent::Subrule' ) 
    71357597                                                                                                                               ], 
    7136                                                                                                                     'line' => 100 
     7598                                                                                                                    'line' => 112 
    71377599                                                                                                                  }, 'Parse::RecDescent::Production' ) 
    71387600                                                                                                         ], 
    71397601                                                                                              'name' => '_alternation_1_of_production_1_of_rule_field_size', 
    71407602                                                                                              'vars' => '', 
    7141                                                                                               'line' => 100 
     7603                                                                                              'line' => 112 
    71427604                                                                                            }, 'Parse::RecDescent::Rule' ), 
    71437605                              'name' => bless( { 
     
    71647626                                                                                             'argcode' => undef, 
    71657627                                                                                             'lookahead' => 0, 
    7166                                                                                              'line' => 63 
     7628                                                                                             'line' => 75 
    71677629                                                                                           }, 'Parse::RecDescent::Subrule' ) 
    71687630                                                                                  ], 
     
    71727634                                                 'name' => 'name', 
    71737635                                                 'vars' => '', 
    7174                                                  'line' => 63 
     7636                                                 'line' => 75 
    71757637                                               }, 'Parse::RecDescent::Rule' ), 
    71767638                              'display_text' => bless( { 
     
    71947656                                                                                                     'description' => '\'[\'', 
    71957657                                                                                                     'lookahead' => 0, 
    7196                                                                                                      'line' => 92 
     7658                                                                                                     'line' => 104 
    71977659                                                                                                   }, 'Parse::RecDescent::Literal' ), 
    71987660                                                                                            bless( { 
     
    72027664                                                                                                     'lookahead' => 0, 
    72037665                                                                                                     'rdelim' => '/', 
    7204                                                                                                      'line' => 92, 
     7666                                                                                                     'line' => 104, 
    72057667                                                                                                     'mod' => 'i', 
    72067668                                                                                                     'ldelim' => '/' 
     
    72117673                                                                                                     'description' => '\']\'', 
    72127674                                                                                                     'lookahead' => 0, 
    7213                                                                                                      'line' => 92 
     7675                                                                                                     'line' => 104 
    72147676                                                                                                   }, 'Parse::RecDescent::Literal' ), 
    72157677                                                                                            bless( { 
    72167678                                                                                                     'hashname' => '__ACTION1__', 
    72177679                                                                                                     'lookahead' => 0, 
    7218                                                                                                      'line' => 92, 
     7680                                                                                                     'line' => 104, 
    72197681                                                                                                     'code' => '{ $item[2] }' 
    72207682                                                                                                   }, 'Parse::RecDescent::Action' ) 
     
    72257687                                                         'name' => 'display_text', 
    72267688                                                         'vars' => '', 
    7227                                                          'line' => 92 
     7689                                                         'line' => 104 
    72287690                                                       }, 'Parse::RecDescent::Rule' ), 
    72297691                              'default' => bless( { 
     
    72477709                                                                                                'description' => '\'=\'', 
    72487710                                                                                                'lookahead' => 0, 
    7249                                                                                                 'line' => 79 
     7711                                                                                                'line' => 91 
    72507712                                                                                              }, 'Parse::RecDescent::Literal' ), 
    72517713                                                                                       bless( { 
     
    72557717                                                                                                'lookahead' => 0, 
    72567718                                                                                                'rdelim' => '/', 
    7257                                                                                                 'line' => 79, 
     7719                                                                                                'line' => 91, 
    72587720                                                                                                'mod' => '', 
    72597721                                                                                                'ldelim' => '/' 
     
    72657727                                                    'name' => 'default', 
    72667728                                                    'vars' => '', 
    7267                                                     'line' => 79 
     7729                                                    'line' => 91 
    72687730                                                  }, 'Parse::RecDescent::Rule' ), 
     7731                              '_alternation_1_of_production_1_of_rule_list_def' => bless( { 
     7732                                                                                            'impcount' => 0, 
     7733                                                                                            'calls' => [ 
     7734                                                                                                         'static_list', 
     7735                                                                                                         'dynamic_list' 
     7736                                                                                                       ], 
     7737                                                                                            'changed' => 0, 
     7738                                                                                            'opcount' => 0, 
     7739                                                                                            'prods' => [ 
     7740                                                                                                         bless( { 
     7741                                                                                                                  'number' => '0', 
     7742                                                                                                                  'strcount' => 0, 
     7743                                                                                                                  'dircount' => 0, 
     7744                                                                                                                  'uncommit' => undef, 
     7745                                                                                                                  'error' => undef, 
     7746                                                                                                                  'patcount' => 0, 
     7747                                                                                                                  'actcount' => 0, 
     7748                                                                                                                  'items' => [ 
     7749                                                                                                                               bless( { 
     7750                                                                                                                                        'subrule' => 'static_list', 
     7751                                                                                                                                        'matchrule' => 0, 
     7752                                                                                                                                        'implicit' => undef, 
     7753                                                                                                                                        'argcode' => undef, 
     7754                                                                                                                                        'lookahead' => 0, 
     7755                                                                                                                                        'line' => 112 
     7756                                                                                                                                      }, 'Parse::RecDescent::Subrule' ) 
     7757                                                                                                                             ], 
     7758                                                                                                                  'line' => undef 
     7759                                                                                                                }, 'Parse::RecDescent::Production' ), 
     7760                                                                                                         bless( { 
     7761                                                                                                                  'number' => '1', 
     7762                                                                                                                  'strcount' => 0, 
     7763                                                                                                                  'dircount' => 0, 
     7764                                                                                                                  'uncommit' => undef, 
     7765                                                                                                                  'error' => undef, 
     7766                                                                                                                  'patcount' => 0, 
     7767                                                                                                                  'actcount' => 0, 
     7768                                                                                                                  'items' => [ 
     7769                                                                                                                               bless( { 
     7770                                                                                                                                        'subrule' => 'dynamic_list', 
     7771                                                                                                                                        'matchrule' => 0, 
     7772                                                                                                                                        'implicit' => undef, 
     7773                                                                                                                                        'argcode' => undef, 
     7774                                                                                                                                        'lookahead' => 0, 
     7775                                                                                                                                        'line' => 112 
     7776                                                                                                                                      }, 'Parse::RecDescent::Subrule' ) 
     7777                                                                                                                             ], 
     7778                                                                                                                  'line' => 112 
     7779                                                                                                                }, 'Parse::RecDescent::Production' ) 
     7780                                                                                                       ], 
     7781                                                                                            'name' => '_alternation_1_of_production_1_of_rule_list_def', 
     7782                                                                                            'vars' => '', 
     7783                                                                                            'line' => 112 
     7784                                                                                          }, 'Parse::RecDescent::Rule' ), 
    72697785                              'form_spec' => bless( { 
    72707786                                                      'impcount' => 1, 
     
    73387854                                                                                                'lookahead' => 0, 
    73397855                                                                                                'rdelim' => '/', 
    7340                                                                                                 'line' => 32, 
     7856                                                                                                'line' => 44, 
    73417857                                                                                                'mod' => '', 
    73427858                                                                                                'ldelim' => '/' 
     
    73487864                                                    'name' => 'pattern', 
    73497865                                                    'vars' => '', 
    7350                                                     'line' => 32 
     7866                                                    'line' => 44 
    73517867                                                  }, 'Parse::RecDescent::Rule' ), 
    73527868                              'comment' => bless( { 
     
    73707886                                                                                                'description' => '\'#\'', 
    73717887                                                                                                'lookahead' => 0, 
    7372                                                                                                 'line' => 96 
     7888                                                                                                'line' => 108 
    73737889                                                                                              }, 'Parse::RecDescent::Literal' ), 
    73747890                                                                                       bless( { 
     
    73787894                                                                                                'lookahead' => 0, 
    73797895                                                                                                'rdelim' => '/', 
    7380                                                                                                 'line' => 96, 
     7896                                                                                                'line' => 108, 
    73817897                                                                                                'mod' => '', 
    73827898                                                                                                'ldelim' => '/' 
     
    73887904                                                    'name' => 'comment', 
    73897905                                                    'vars' => '', 
    7390                                                     'line' => 96 
     7906                                                    'line' => 108 
    73917907                                                  }, 'Parse::RecDescent::Rule' ), 
    73927908                              'hint' => bless( { 
     
    74107926                                                                                             'description' => '\'[\'', 
    74117927                                                                                             'lookahead' => 0, 
    7412                                                                                              'line' => 75 
     7928                                                                                             'line' => 87 
    74137929                                                                                           }, 'Parse::RecDescent::Literal' ), 
    74147930                                                                                    bless( { 
     
    74187934                                                                                             'lookahead' => 0, 
    74197935                                                                                             'rdelim' => '/', 
    7420                                                                                              'line' => 75, 
     7936                                                                                             'line' => 87, 
    74217937                                                                                             'mod' => '', 
    74227938                                                                                             'ldelim' => '/' 
     
    74277943                                                                                             'description' => '\']\'', 
    74287944                                                                                             'lookahead' => 0, 
    7429                                                                                              'line' => 75 
     7945                                                                                             'line' => 87 
    74307946                                                                                           }, 'Parse::RecDescent::Literal' ), 
    74317947                                                                                    bless( { 
    74327948                                                                                             'hashname' => '__ACTION1__', 
    74337949                                                                                             'lookahead' => 0, 
    7434                                                                                              'line' => 75, 
     7950                                                                                             'line' => 87, 
    74357951                                                                                             'code' => '{ $item[2] }' 
    74367952                                                                                           }, 'Parse::RecDescent::Action' ) 
     
    74417957                                                 'name' => 'hint', 
    74427958                                                 'vars' => '', 
    7443                                                  'line' => 75 
     7959                                                 'line' => 87 
    74447960                                               }, 'Parse::RecDescent::Rule' ), 
    74457961                              'type' => bless( { 
     
    74637979                                                                                             'description' => '\':\'', 
    74647980                                                                                             'lookahead' => 0, 
    7465                                                                                              'line' => 77 
     7981                                                                                             'line' => 89 
    74667982                                                                                           }, 'Parse::RecDescent::Literal' ), 
    74677983                                                                                    bless( { 
     
    74717987                                                                                             'lookahead' => 0, 
    74727988                                                                                             'rdelim' => '/', 
    7473                                                                                              'line' => 77, 
     7989                                                                                             'line' => 89, 
    74747990                                                                                             'mod' => '', 
    74757991                                                                                             'ldelim' => '/' 
     
    74817997                                                 'name' => 'type', 
    74827998                                                 'vars' => '', 
    7483                                                  'line' => 77 
     7999                                                 'line' => 89 
    74848000                                               }, 'Parse::RecDescent::Rule' ), 
     8001                              'label' => bless( { 
     8002                                                  'impcount' => 0, 
     8003                                                  'calls' => [], 
     8004                                                  'changed' => 0, 
     8005                                                  'opcount' => 0, 
     8006                                                  'prods' => [ 
     8007                                                               bless( { 
     8008                                                                        'number' => '0', 
     8009                                                                        'strcount' => 1, 
     8010                                                                        'dircount' => 0, 
     8011                                                                        'uncommit' => undef, 
     8012                                                                        'error' => undef, 
     8013                                                                        'patcount' => 1, 
     8014                                                                        'actcount' => 0, 
     8015                                                                        'items' => [ 
     8016                                                                                     bless( { 
     8017                                                                                              'pattern' => '|', 
     8018                                                                                              'hashname' => '__STRING1__', 
     8019                                                                                              'description' => '\'|\'', 
     8020                                                                                              'lookahead' => 0, 
     8021                                                                                              'line' => 85 
     8022                                                                                            }, 'Parse::RecDescent::Literal' ), 
     8023                                                                                     bless( { 
     8024                                                                                              'pattern' => '[^:\\[\\{\\/]+', 
     8025                                                                                              'hashname' => '__PATTERN1__', 
     8026                                                                                              'description' => '/[^:\\\\[\\\\\\{\\\\/]+/i', 
     8027                                                                                              'lookahead' => 0, 
     8028                                                                                              'rdelim' => '/', 
     8029                                                                                              'line' => 85, 
     8030                                                                                              'mod' => 'i', 
     8031                                                                                              'ldelim' => '/' 
     8032                                                                                            }, 'Parse::RecDescent::Token' ) 
     8033                                                                                   ], 
     8034                                                                        'line' => undef 
     8035                                                                      }, 'Parse::RecDescent::Production' ) 
     8036                                                             ], 
     8037                                                  'name' => 'label', 
     8038                                                  'vars' => '', 
     8039                                                  'line' => 85 
     8040                                                }, 'Parse::RecDescent::Rule' ), 
    74858041                              'title' => bless( { 
    74868042                                                  'impcount' => 0, 
     
    75038059                                                                                              'description' => '\'!title\'', 
    75048060                                                                                              'lookahead' => 0, 
    7505                                                                                               'line' => 21 
     8061                                                                                              'line' => 33 
    75068062                                                                                            }, 'Parse::RecDescent::Literal' ), 
    75078063                                                                                     bless( { 
     
    75118067                                                                                              'lookahead' => 0, 
    75128068                                                                                              'rdelim' => '/', 
    7513                                                                                               'line' => 21, 
     8069                                                                                              'line' => 33, 
    75148070                                                                                              'mod' => '', 
    75158071                                                                                              'ldelim' => '/' 
     
    75188074                                                                                              'hashname' => '__ACTION1__', 
    75198075                                                                                              'lookahead' => 0, 
    7520                                                                                               'line' => 22, 
     8076                                                                                              'line' => 34, 
    75218077                                                                                              'code' => '{ warn "[Text::Formbuilder] Title redefined at input text line $thisline\\n" if defined $title; 
    75228078    $title = $item[2] }' 
     
    75288084                                                  'name' => 'title', 
    75298085                                                  'vars' => '', 
    7530                                                   'line' => 21 
    7531                                                 }, 'Parse::RecDescent::Rule' ), 
    7532                               'label' => bless( { 
    7533                                                   'impcount' => 0, 
    7534                                                   'calls' => [], 
    7535                                                   'changed' => 0, 
    7536                                                   'opcount' => 0, 
    7537                                                   'prods' => [ 
    7538                                                                bless( { 
    7539                                                                         'number' => '0', 
    7540                                                                         'strcount' => 1, 
    7541                                                                         'dircount' => 0, 
    7542                                                                         'uncommit' => undef, 
    7543                                                                         'error' => undef, 
    7544                                                                         'patcount' => 1, 
    7545                                                                         'actcount' => 0, 
    7546                                                                         'items' => [ 
    7547                                                                                      bless( { 
    7548                                                                                               'pattern' => '|', 
    7549                                                                                               'hashname' => '__STRING1__', 
    7550                                                                                               'description' => '\'|\'', 
    7551                                                                                               'lookahead' => 0, 
    7552                                                                                               'line' => 73 
    7553                                                                                             }, 'Parse::RecDescent::Literal' ), 
    7554                                                                                      bless( { 
    7555                                                                                               'pattern' => '[^:\\[\\{\\/]+', 
    7556                                                                                               'hashname' => '__PATTERN1__', 
    7557                                                                                               'description' => '/[^:\\\\[\\\\\\{\\\\/]+/i', 
    7558                                                                                               'lookahead' => 0, 
    7559                                                                                               'rdelim' => '/', 
    7560                                                                                               'line' => 73, 
    7561                                                                                               'mod' => 'i', 
    7562                                                                                               'ldelim' => '/' 
    7563                                                                                             }, 'Parse::RecDescent::Token' ) 
    7564                                                                                    ], 
    7565                                                                         'line' => undef 
    7566                                                                       }, 'Parse::RecDescent::Production' ) 
    7567                                                              ], 
    7568                                                   'name' => 'label', 
    7569                                                   'vars' => '', 
    7570                                                   'line' => 73 
     8086                                                  'line' => 33 
    75718087                                                }, 'Parse::RecDescent::Rule' ), 
    75728088                              'pattern_def' => bless( { 
     
    75938109                                                                                                    'description' => '\'!pattern\'', 
    75948110                                                                                                    'lookahead' => 0, 
    7595                                                                                                     'line' => 28 
     8111                                                                                                    'line' => 40 
    75968112                                                                                                  }, 'Parse::RecDescent::Literal' ), 
    75978113                                                                                           bless( { 
     
    76018117                                                                                                    'argcode' => undef, 
    76028118                                                                                                    'lookahead' => 0, 
    7603                                                                                                     'line' => 28 
     8119                                                                                                    'line' => 40 
    76048120                                                                                                  }, 'Parse::RecDescent::Subrule' ), 
    76058121                                                                                           bless( { 
     
    76098125                                                                                                    'argcode' => undef, 
    76108126                                                                                                    'lookahead' => 0, 
    7611                                                                                                     'line' => 28 
     8127                                                                                                    'line' => 40 
    76128128                                                                                                  }, 'Parse::RecDescent::Subrule' ), 
    76138129                                                                                           bless( { 
    76148130                                                                                                    'hashname' => '__ACTION1__', 
    76158131                                                                                                    'lookahead' => 0, 
    7616                                                                                                     'line' => 29, 
     8132                                                                                                    'line' => 41, 
    76178133                                                                                                    'code' => '{ $patterns{$item{pattern_name}} = $item{pattern} }' 
    76188134                                                                                                  }, 'Parse::RecDescent::Action' ) 
     
    76238139                                                        'name' => 'pattern_def', 
    76248140                                                        'vars' => '', 
    7625                                                         'line' => 28 
     8141                                                        'line' => 40 
     8142                                                      }, 'Parse::RecDescent::Rule' ), 
     8143                              'dynamic_list' => bless( { 
     8144                                                         'impcount' => 0, 
     8145                                                         'calls' => [], 
     8146                                                         'changed' => 0, 
     8147                                                         'opcount' => 0, 
     8148                                                         'prods' => [ 
     8149                                                                      bless( { 
     8150                                                                               'number' => '0', 
     8151                                                                               'strcount' => 1, 
     8152                                                                               'dircount' => 1, 
     8153                                                                               'uncommit' => undef, 
     8154                                                                               'error' => undef, 
     8155                                                                               'patcount' => 0, 
     8156                                                                               'actcount' => 1, 
     8157                                                                               'items' => [ 
     8158                                                                                            bless( { 
     8159                                                                                                     'pattern' => '&', 
     8160                                                                                                     'hashname' => '__STRING1__', 
     8161                                                                                                     'description' => '\'&\'', 
     8162                                                                                                     'lookahead' => 0, 
     8163                                                                                                     'line' => 19 
     8164                                                                                                   }, 'Parse::RecDescent::Literal' ), 
     8165                                                                                            bless( { 
     8166                                                                                                     'hashname' => '__DIRECTIVE1__', 
     8167                                                                                                     'name' => '<perl_codeblock>', 
     8168                                                                                                     'lookahead' => 0, 
     8169                                                                                                     'line' => 19, 
     8170                                                                                                     'code' => 'Text::Balanced::extract_codeblock($text,undef,$skip,\'{}\'); 
     8171                                        ' 
     8172                                                                                                   }, 'Parse::RecDescent::Directive' ), 
     8173                                                                                            bless( { 
     8174                                                                                                     'hashname' => '__ACTION1__', 
     8175                                                                                                     'lookahead' => 0, 
     8176                                                                                                     'line' => 20, 
     8177                                                                                                     'code' => '{ 
     8178        my @results = (eval $item[2]); 
     8179        if (ref $results[0] eq \'HASH\') { 
     8180            @options = @results; 
     8181        } else {     
     8182            @options = map { { $_ => $_ } } @results; 
     8183        } 
     8184    }' 
     8185                                                                                                   }, 'Parse::RecDescent::Action' ) 
     8186                                                                                          ], 
     8187                                                                               'line' => undef 
     8188                                                                             }, 'Parse::RecDescent::Production' ) 
     8189                                                                    ], 
     8190                                                         'name' => 'dynamic_list', 
     8191                                                         'vars' => '', 
     8192                                                         'line' => 19 
     8193                                                       }, 'Parse::RecDescent::Rule' ), 
     8194                              'static_list' => bless( { 
     8195                                                        'impcount' => 0, 
     8196                                                        'calls' => [ 
     8197                                                                     'option' 
     8198                                                                   ], 
     8199                                                        'changed' => 0, 
     8200                                                        'opcount' => 0, 
     8201                                                        'prods' => [ 
     8202                                                                     bless( { 
     8203                                                                              'number' => '0', 
     8204                                                                              'strcount' => 2, 
     8205                                                                              'dircount' => 1, 
     8206                                                                              'uncommit' => undef, 
     8207                                                                              'error' => undef, 
     8208                                                                              'patcount' => 2, 
     8209                                                                              'actcount' => 0, 
     8210                                                                              'op' => [], 
     8211                                                                              'items' => [ 
     8212                                                                                           bless( { 
     8213                                                                                                    'pattern' => '{', 
     8214                                                                                                    'hashname' => '__STRING1__', 
     8215                                                                                                    'description' => '\'\\{\'', 
     8216                                                                                                    'lookahead' => 0, 
     8217                                                                                                    'line' => 17 
     8218                                                                                                  }, 'Parse::RecDescent::Literal' ), 
     8219                                                                                           bless( { 
     8220                                                                                                    'expected' => '<leftop: option /,\\\\s*/ option>', 
     8221                                                                                                    'min' => 1, 
     8222                                                                                                    'name' => '\'option(s)\'', 
     8223                                                                                                    'max' => 100000000, 
     8224                                                                                                    'leftarg' => bless( { 
     8225                                                                                                                          'subrule' => 'option', 
     8226                                                                                                                          'matchrule' => 0, 
     8227                                                                                                                          'implicit' => undef, 
     8228                                                                                                                          'argcode' => undef, 
     8229                                                                                                                          'lookahead' => 0, 
     8230                                                                                                                          'line' => 17 
     8231                                                                                                                        }, 'Parse::RecDescent::Subrule' ), 
     8232                                                                                                    'rightarg' => bless( { 
     8233                                                                                                                           'subrule' => 'option', 
     8234                                                                                                                           'matchrule' => 0, 
     8235                                                                                                                           'implicit' => undef, 
     8236                                                                                                                           'argcode' => undef, 
     8237                                                                                                                           'lookahead' => 0, 
     8238                                                                                                                           'line' => 17 
     8239                                                                                                                         }, 'Parse::RecDescent::Subrule' ), 
     8240                                                                                                    'hashname' => '__DIRECTIVE1__', 
     8241                                                                                                    'type' => 'leftop', 
     8242                                                                                                    'op' => bless( { 
     8243                                                                                                                     'pattern' => ',\\s*', 
     8244                                                                                                                     'hashname' => '__PATTERN1__', 
     8245                                                                                                                     'description' => '/,\\\\s*/', 
     8246                                                                                                                     'lookahead' => 0, 
     8247                                                                                                                     'rdelim' => '/', 
     8248                                                                                                                     'line' => 17, 
     8249                                                                                                                     'mod' => '', 
     8250                                                                                                                     'ldelim' => '/' 
     8251                                                                                                                   }, 'Parse::RecDescent::Token' ) 
     8252                                                                                                  }, 'Parse::RecDescent::Operator' ), 
     8253                                                                                           bless( { 
     8254                                                                                                    'pattern' => ',?', 
     8255                                                                                                    'hashname' => '__PATTERN2__', 
     8256                                                                                                    'description' => '/,?/', 
     8257                                                                                                    'lookahead' => 0, 
     8258                                                                                                    'rdelim' => '/', 
     8259                                                                                                    'line' => 17, 
     8260                                                                                                    'mod' => '', 
     8261                                                                                                    'ldelim' => '/' 
     8262                                                                                                  }, 'Parse::RecDescent::Token' ), 
     8263                                                                                           bless( { 
     8264                                                                                                    'pattern' => '}', 
     8265                                                                                                    'hashname' => '__STRING2__', 
     8266                                                                                                    'description' => '\'\\}\'', 
     8267                                                                                                    'lookahead' => 0, 
     8268                                                                                                    'line' => 17 
     8269                                                                                                  }, 'Parse::RecDescent::Literal' ) 
     8270                                                                                         ], 
     8271                                                                              'line' => undef 
     8272                                                                            }, 'Parse::RecDescent::Production' ) 
     8273                                                                   ], 
     8274                                                        'name' => 'static_list', 
     8275                                                        'vars' => '', 
     8276                                                        'line' => 17 
    76268277                                                      }, 'Parse::RecDescent::Rule' ) 
    76278278                            } 
  • trunk/lib/Text/FormBuilder/grammar

    r1 r10  
    1212    } 
    1313 
    14 list_def: '!list' list_name '{' option(s /,\s*/) /,?/ '}' 
     14list_def: '!list' list_name (static_list | dynamic_list) 
    1515    { $lists{$item{list_name}} = [ @options ]; @options = () } 
     16 
     17static_list: '{' option(s /,\s*/) /,?/ '}' 
     18 
     19dynamic_list: '&' <perl_codeblock> 
     20    { 
     21        my @results = (eval $item[2]); 
     22        if (ref $results[0] eq 'HASH') { 
     23            @options = @results; 
     24        } else {     
     25            @options = map { { $_ => $_ } } @results; 
     26        } 
     27    } 
    1628 
    1729list_name: /[A-Z_]+/ 
Note: See TracChangeset for help on using the changeset viewer.