PDF-FDF-Simple-0.21/0000755000175000017500000000000011200627461011676 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/0000755000175000017500000000000011200627461012444 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/auto/0000755000175000017500000000000011200627461013414 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/auto/PDF/0000755000175000017500000000000011200627461014025 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/auto/PDF/FDF/0000755000175000017500000000000011200627461014424 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/auto/PDF/FDF/Simple/0000755000175000017500000000000011200627461015655 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/auto/PDF/FDF/Simple/grammar0000444000175000017500000002657711200627461017245 0ustar ss5ss5# -*- mode: cperl -*- { use Compress::Zlib; # Local variable init - RJH my $strname; my $strcontent; my $fh = new IO::File; # RJH Can't include standard Perl in the parser so define a function # here so it's included in its namespace sub write_file { my($file,$content) = @_; my $x = inflateInit() or die "Cannot create a inflation stream\n"; $fh->open(">$file") or die "Failed to create file $file - $!"; my $buffer = $$content; my $sync = $x->inflateSync($buffer); print "SYNC: $sync\n"; my($output, $status) = $x->inflate($buffer); print "STATUS:$status\n"; print $fh $output; $fh->close(); }; } startrule : docstart objlist xref(?) 'trailer' '<<' '/Root' objreference /[^>]*/ '>>' /.*/ { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS = {}; $return = $item{objlist}; } xref : 'xref' /\d+/ /\d+/ xrefentry(s) xrefentry : /\d+/ /\d+/ /[fn]/ docstart : /%FDF-[0-9]+\.[0-9]+/ garbage | # empty garbage : /%[^0-9]*/ | # empty objlist : obj objlist { push ( @{$return}, $item{obj}, @{$item{objlist}} ); } | # empty { $return = []; } type : /\/Type/ /\/(Filespec|Catalog)/ | # empty obj : /\d+/ /\d+/ 'obj' objbody 'endobj' { $return = $item{objbody}; } objbody : '<<' '/FDF' '<<' attributes '/Fields' '[' fieldlist ']' attributes '>>' type(?) '>>' { $return = $item{fieldlist}; } | '[' fieldlist ']' { $return = $item{fieldlist}; } | '<<' '/FDF' '<<' attributes '/Fields' objreference attributes '>>' '>>' { $return = []; } | '<<' '/F' filename '/EF' '<<' '/F' objreference '>>' '/Type' '/Filespec' '>>' { $::strname = $item[3]; $::strcontent = ''; # clear ready for next file $return = []; } | '<<' '/Length' m#\d+# filter(?) subtype(?) params(?) dl(?) stream { #print "STRNAME = $::strname\nSTRCONTENT = $::strcontent\n"; # RJH don't write until FlateDecode developed #&write_file($::strname,\$::strcontent); $return = []; } | '<<' '/StemV' m#\d+# stemparams stemstream { $return = []; } stemparams : stemparam stemparams | # empty stemparam : '/' m#\w+# stemstream : streamcont 'endstream' { $return = $item[1]; } dl : '/DL' m#\d+# '>>' filename : '(' name ')' { $return = $item[2]; } # RJH stream : 'stream' streamcont 'endstream' { $return = $item[2]; 1; } streamcont : streamline streamcont { $return = $item[1]; } | # empty streamline : ...!'endstream' m#.*# { $::strcontent .= $item[2]; $return = $item[2]; } filter : '/Filter' filtertype filtertype : '/FlateDecode' subtype : '/Subtype' '/application#2Fpdf' params : '/Params' '<<' paramlist '>>' paramlist : param paramlist | # empty param : paramname paramvalue(?) paramname : '/' m#\w+# paramvalue : '(' m#[^)]*# ')' | '<' m#\w*# '>' | m#\w+# objreference : /\d+/ /\d+/ 'R' fieldlist : field fieldlist { push ( @{$return}, $item{field}, @{$item{fieldlist}} ); } # TODO: How do I optimize the next two alternatives, # which in fact execute the same code? # Can the code block be written only once? | '<<' fieldname kids '>>' fieldlist { my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{$item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); } | '<<' kids fieldname '>>' fieldlist { my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{ $item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); } | # empty { $return = []; } kids : '/Kids' '[' fieldlist ']' { $return = $item{fieldlist}; } field : '<<' fieldname fieldvalue '>>' { $return = { $item{fieldname} => $item{fieldvalue} }; } | '<<' fieldvalue fieldname '>>' { $return = { $item{fieldname} => $item{fieldvalue} }; } | '<<' fieldname '>>' { $return = { $item{fieldname} => undef }; } fieldvalue : '/V' '(' value ')' { $return = $item{value}; $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal #$return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex } | '/V' '[' valarray ']' { $return = $item{valarray}; } | '/V' feature { $return = substr ($item{feature}, 1); $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex } # RJH | '/V' objreference feature : m!/[^\s/>]*! fieldname : '/T' '(' name ')' { $return = $item{name}; $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex } valarray : '(' value ')' valarray { push @{$return}, $item{value}, @{$item{valarray}}; } | # empty { $return = []; } value : valuechar value { $return = $item{valuechar}.$item{value}; } | # empty { $return = ""; } # This handles different whitespace artefacts that exist # in this world and handles them similar to FDFToolkit. # (Remember: backslashes must be doubled within a Parse::RecDescent grammar, # except if they occur single.) valuechar : '\\\\' { $return = chr(92); } | '\\#' { $return = "#"; } | '\\\\r' { $return = '\r'; } | '\\\\t' { $return = '\t'; } | '\\\\n' { $return = '\n'; } | '\\\r' { $return = ''; } | '\\\n' { $return = ''; } | '\\r' { $return = chr(13); } | '\\n' { $return = chr(10); } | '\r' { $return = ''; } | '\t' { $return = "\t"; } | ' ' { $return = chr(10); } | '\\ ' { $return = ''; } | /\n/ { $return = ''; } | m/\\/ m/\n/ { $return = '' } | '\\(' { $return = '('; } | '\\)' { $return = ')'; } # The next two rules work closely together: # # - the first matches every *single* character # that is in the exclude list of the second rule. # # - the second rule matches blocks of # successive "non-problematic" characters # # (All the "problematic" chars and chains of them # are already handled in the rules above.) | /[\r\t\n\\ ]/ { $return = $item[1]; } | /([^()\r\t\n\\ ]+)/ { $return = $item[1]; } attributes : '/F' '(' value ')' attributes {F} = $item[4];> { $return = $item{value}; } | '/UF' '(' value ')' attributes {UF} = $item[4];> { $return = $item{value}; } | '/ID' '[' idnum(s?) ']' attributes | # empty name : /([^)][\s]*)*/ # one symbol but not ) idnum : '<' /[\w]*/ '>' {ID}}, $item[1].$item[2].$item[3]); > | '(' idnumchars ')' {ID}}, $item[1].$item{idnumchars}.$item[3]); > idnumchar : '\\)' { $return = $item[1]; } | '\\(' { $return = $item[1]; } | '\\\\' { $return = $item[1]; } | /[^()]/ { $return = $item[1]; } idnumchars : idnumchar idnumchars { $return = $item{idnumchar}.$item{idnumchars}; } | # empty { $return = ""; } PDF-FDF-Simple-0.21/lib/PDF/0000755000175000017500000000000011200627461013055 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/PDF/FDF/0000755000175000017500000000000011200627461013454 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple.pm0000444000175000017500000001126711200627461015250 0ustar ss5ss5package PDF::FDF::Simple; use strict; use warnings; use vars qw($VERSION $deferred_result_FDF_OPTIONS); use Data::Dumper; use Parse::RecDescent; use IO::File; use base 'Class::Accessor::Fast'; PDF::FDF::Simple->mk_accessors(qw( skip_undefined_fields filename content errmsg parser attribute_file attribute_ufile attribute_id )); $VERSION = '0.21'; #Parse::RecDescent environment variables: enable for Debugging #$::RD_TRACE = 1; #$::RD_HINT = 1; sub new { my $class = shift; my $parser; if ($ENV{PDF_FDF_SIMPLE_IGNORE_PRECOMPILED_GRAMMAR}) { # use external grammar file require File::ShareDir; my $grammar_file = File::ShareDir::module_file('PDF::FDF::Simple', 'grammar'); open GRAMMAR_FILE, $grammar_file or die "Cannot open grammar file ".$grammar_file; local $/; my $grammar = ; $parser = Parse::RecDescent->new($grammar); } else { # use precompiled grammar require PDF::FDF::Simple::Grammar; $parser = new PDF::FDF::Simple::Grammar; } my %DEFAULTS = ( errmsg => '', skip_undefined_fields => 0, parser => $parser ); # accept hashes or hash refs for backwards compatibility my %ARGS = ref($_[0]) =~ /HASH/ ? %{$_[0]} : @_; my $self = Class::Accessor::new($class, { %DEFAULTS, %ARGS }); return $self; } sub _fdf_header { my $self = shift; my $string = "%FDF-1.2\n\n1 0 obj\n<<\n/FDF << /Fields 2 0 R"; # /F if ($self->attribute_file){ $string .= "/F (".$self->attribute_file.")"; } # /UF if ($self->attribute_ufile){ $string .= "/UF (".$self->attribute_ufile.")"; } # /ID if ($self->attribute_id){ $string .= "/ID["; $string .= $_ foreach @{$self->attribute_id}; $string .= "]"; } $string .= ">>\n>>\nendobj\n2 0 obj\n["; return $string; } sub _fdf_footer { my $self = shift; return <<__EOT__; ] endobj trailer << /Root 1 0 R >> %%EOF __EOT__ } sub _quote { my $self = shift; my $str = shift; $str =~ s,\\,\\\\,g; $str =~ s,\(,\\(,g; $str =~ s,\),\\),g; $str =~ s,\n,\\r,gs; return $str; } sub _fdf_field_formatstr { my $self = shift; return "<< /T (%s) /V (%s) >>\n" } sub as_string { my $self = shift; my $fdf_string = $self->_fdf_header; foreach (sort keys %{$self->content}) { my $val = $self->content->{$_}; if (not defined $val) { next if ($self->skip_undefined_fields); $val = ''; } $fdf_string .= sprintf ($self->_fdf_field_formatstr, $_, $self->_quote($val)); } $fdf_string .= $self->_fdf_footer; return $fdf_string; } sub save { my $self = shift; my $filename = shift || $self->filename; open (F, "> ".$filename) or do { $self->errmsg ('error: open file ' . $filename); return 0; }; print F $self->as_string; close (F); $self->errmsg (''); return 1; } sub _read_fdf { my $self = shift; my $filecontent; # read file to be checked unless (open FH, "< ".$self->filename) { $self->errmsg ('error: could not read file ' . $self->filename); return undef; } else { local $/; $filecontent = ; } close FH; $self->errmsg (''); return $filecontent; } sub _map_parser_output { my $self = shift; my $output = shift; my $fdfcontent = {}; foreach my $obj ( @$output ) { foreach my $contentblock ( @$obj ) { foreach my $keys (keys %$contentblock) { $fdfcontent->{$keys} = $contentblock->{$keys}; } } } return $fdfcontent; } sub load { my $self = shift; my $filecontent = shift; # prepare content unless ($filecontent) { $filecontent = $self->_read_fdf; return undef unless $filecontent; } # parse my $output; { local $SIG{'__WARN__'} = sub { warn $_[0] unless $_[0] =~ /Deep recursion on subroutine/ }; $output = $self->parser->startrule ($filecontent); } # take over parser results $self->attribute_file ($PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{F}); # /F $self->attribute_ufile ($PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{UF}); # /UF $self->attribute_id ($PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{ID}); # /ID $self->content ($self->_map_parser_output ($output)); $self->errmsg ("Corrupt FDF file!\n") unless $self->content; return $self->content; } 1; PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple/0000755000175000017500000000000011200627461014705 5ustar ss5ss5PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple/Builder.pm0000444000175000017500000000235311200627461016632 0ustar ss5ss5package PDF::FDF::Simple::Builder; use strict; use warnings; use Module::Build; use File::Copy "mv"; use vars qw(@ISA); @ISA = ("Module::Build"); sub ACTION_grammar { require Parse::RecDescent; my $grammar_file ='lib/auto/PDF/FDF/Simple/grammar'; open GRAMMAR_FILE, $grammar_file or die "Cannot open grammar file ".$grammar_file; local $/; my $grammar = ; Parse::RecDescent->Precompile($grammar, "PDF::FDF::Simple::Grammar"); my $target = "lib/PDF/FDF/Simple/Grammar.pm"; mv "Grammar.pm", $target; print "Updated $target\n"; } 1; =pod =head1 NAME PDF::FDF::Simple::Builder - Module::Build extensions for PDF::FDF::Simple =head1 SYNOPSIS perl Build.PL ./Build grammar ./Build ./Build test ./Build install =head1 DESCRIPTION Provides Module::Build extensions, mainly for precompiling the grammar file. =head1 FUNCTIONS =head2 ACTION_grammar This defines an Build action C which precompiles the grammar using Parse::RecDescent and moves the file to lib/PDF/FDF/Simple/Grammar.pm. It is usually done by the maintainer, before he builds a dist file for CPAN. =head1 AUTHOR =over 4 =item * Steffen Schwigon , =back =cut PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple/Grammar.pod0000444000175000017500000000211111200627461016770 0ustar ss5ss5=head1 NAME PDF::FDF::Simple::Grammar - Precompiled grammar for PDF::FDF::Simple =head1 DESCRIPTION This is the precompiled grammar. It is generated from lib/auto/PDF/FDF/Simple/grammar using ./Build grammar usually done by the maintainer or a developer. =head1 Developing without precompile You can avoid using the precompiled grammar and use the raw C file by setting this environment variable to a true value: export PDF_FDF_SIMPLE_IGNORE_PRECOMPILED_GRAMMAR=1 This is useful if you want to work on the grammar without the need to precompile everytime. The path to the grammar file is determined using L in the respective C subdirectory that belongs to the currently used module, depending on C<@INC>. So when you get confused, e.g., by seemingly non-working changes, check which grammar file it is using. Some typical different C<@INC>s are used with: prove -l t/*.t # ./lib/ prove -b t/*.t # ./blib/ ./Build test # ./blib/ perl -MPDF::FDF::Simple ... # perl's @INC PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple/Grammar.pm0000444000175000017500000271114311200627461016640 0ustar ss5ss5package PDF::FDF::Simple::Grammar; use Parse::RecDescent; { my $ERRORS; package Parse::RecDescent::PDF::FDF::Simple::Grammar; use strict; use vars qw($skip $AUTOLOAD ); $skip = '\s*'; use Compress::Zlib; # Local variable init - RJH my $strname; my $strcontent; my $fh = new IO::File; # RJH Can't include standard Perl in the parser so define a function # here so it's included in its namespace sub write_file { my($file,$content) = @_; my $x = inflateInit() or die "Cannot create a inflation stream\n"; $fh->open(">$file") or die "Failed to create file $file - $!"; my $buffer = $$content; my $sync = $x->inflateSync($buffer); print "SYNC: $sync\n"; my($output, $status) = $x->inflate($buffer); print "STATUS:$status\n"; print $fh $output; $fh->close(); }; ; { local $SIG{__WARN__} = sub {0}; # PRETEND TO BE IN Parse::RecDescent NAMESPACE *Parse::RecDescent::PDF::FDF::Simple::Grammar::AUTOLOAD = sub { no strict 'refs'; $AUTOLOAD =~ s/^Parse::RecDescent::PDF::FDF::Simple::Grammar/Parse::RecDescent/; goto &{$AUTOLOAD}; } } push @Parse::RecDescent::PDF::FDF::Simple::Grammar::ISA, 'Parse::RecDescent'; # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::stemparams { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"stemparams"}; Parse::RecDescent::_trace(q{Trying rule: [stemparams]}, Parse::RecDescent::_tracefirst($_[1]), q{stemparams}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [stemparam stemparams]}, Parse::RecDescent::_tracefirst($_[1]), q{stemparams}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{stemparams}); %item = (__RULE__ => q{stemparams}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [stemparam]}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::stemparam($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [stemparam]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $item{q{stemparam}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [stemparams]}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{stemparams})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::stemparams($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [stemparams]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $item{q{stemparams}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [stemparam stemparams]<<}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{stemparams}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{stemparams}); %item = (__RULE__ => q{stemparams}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{stemparams}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{stemparams}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{stemparams}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{stemparams}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{stemparams}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::objbody { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"objbody"}; Parse::RecDescent::_trace(q{Trying rule: [objbody]}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' '/FDF' '<<' attributes '/Fields' '[' fieldlist ']' attributes '>>' type '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/FDF']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/FDF'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/FDF//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'<<'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['/Fields']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Fields'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Fields//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING4__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['[']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'['})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING5__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [']']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{']'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING6__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING7__}=$&; Parse::RecDescent::_trace(q{Trying repeated subrule: [type]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{type})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::type, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [type]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{type(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING8__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{fieldlist}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' '/FDF' '<<' attributes '/Fields' '[' fieldlist ']' attributes '>>' type '>>']<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['[' fieldlist ']']}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['[']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [']']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{']'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{fieldlist}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['[' fieldlist ']']<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' '/FDF' '<<' attributes '/Fields' objreference attributes '>>' '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/FDF']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/FDF'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/FDF//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'<<'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['/Fields']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Fields'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Fields//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING4__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [objreference]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objreference})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objreference($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objreference]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{objreference}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING5__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING6__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' '/FDF' '<<' attributes '/Fields' objreference attributes '>>' '>>']<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' '/F' filename '/EF' '<<' '/F' objreference '>>' '/Type' '/Filespec' '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/F']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/F'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/F//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [filename]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{filename})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::filename($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [filename]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{filename}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['/EF']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/EF'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/EF//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'<<'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING4__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/F']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/F'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/F//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING5__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [objreference]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objreference})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objreference($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objreference]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{objreference}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING6__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/Type']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Type'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Type//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING7__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/Filespec']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Filespec'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Filespec//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING8__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING9__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $::strname = $item[3]; $::strcontent = ''; # clear ready for next file $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' '/F' filename '/EF' '<<' '/F' objreference '>>' '/Type' '/Filespec' '>>']<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' '/Length' m#\\d+# filter subtype params dl stream]}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[4]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/Length']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Length'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Length//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\d+#]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\d+#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\d+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying repeated subrule: [filter]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{filter})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::filter, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [filter]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{filter(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [subtype]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{subtype})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::subtype, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [subtype]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{subtype(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [params]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{params})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::params, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [params]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{params(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [dl]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{dl})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::dl, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [dl]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{dl(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying subrule: [stream]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{stream})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::stream($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [stream]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{stream}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { #print "STRNAME = $::strname\nSTRCONTENT = $::strcontent\n"; # RJH don't write until FlateDecode developed #&write_file($::strname,\$::strcontent); $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' '/Length' m#\\d+# filter subtype params dl stream]<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' '/StemV' m#\\d+# stemparams stemstream]}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[5]; $text = $_[1]; my $_savetext; @item = (q{objbody}); %item = (__RULE__ => q{objbody}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/StemV']}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/StemV'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/StemV//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\d+#]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\d+#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\d+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [stemparams]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{stemparams})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::stemparams($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [stemparams]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{stemparams}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [stemstream]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{stemstream})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::stemstream($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [stemstream]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $item{q{stemstream}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' '/StemV' m#\\d+# stemparams stemstream]<<}, Parse::RecDescent::_tracefirst($text), q{objbody}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{objbody}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{objbody}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{objbody}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{objbody}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::docstart { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"docstart"}; Parse::RecDescent::_trace(q{Trying rule: [docstart]}, Parse::RecDescent::_tracefirst($_[1]), q{docstart}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/%FDF-[0-9]+\\.[0-9]+/ garbage]}, Parse::RecDescent::_tracefirst($_[1]), q{docstart}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{docstart}); %item = (__RULE__ => q{docstart}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/%FDF-[0-9]+\\.[0-9]+/]}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:%FDF-[0-9]+\.[0-9]+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [garbage]}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{garbage})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::garbage($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [garbage]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; $item{q{garbage}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [/%FDF-[0-9]+\\.[0-9]+/ garbage]<<}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{docstart}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{docstart}); %item = (__RULE__ => q{docstart}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{docstart}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{docstart}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{docstart}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{docstart}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{docstart}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::feature { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"feature"}; Parse::RecDescent::_trace(q{Trying rule: [feature]}, Parse::RecDescent::_tracefirst($_[1]), q{feature}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [m!/[^\\s/>]*!]}, Parse::RecDescent::_tracefirst($_[1]), q{feature}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{feature}); %item = (__RULE__ => q{feature}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [m!/[^\\s/>]*!]}, Parse::RecDescent::_tracefirst($text), q{feature}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s!\A(?:/[^\s/>]*)!!) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [m!/[^\\s/>]*!]<<}, Parse::RecDescent::_tracefirst($text), q{feature}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{feature}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{feature}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{feature}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{feature}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::subtype { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"subtype"}; Parse::RecDescent::_trace(q{Trying rule: [subtype]}, Parse::RecDescent::_tracefirst($_[1]), q{subtype}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/Subtype' '/application#2Fpdf']}, Parse::RecDescent::_tracefirst($_[1]), q{subtype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{subtype}); %item = (__RULE__ => q{subtype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/Subtype']}, Parse::RecDescent::_tracefirst($text), q{subtype}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Subtype//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/application#2Fpdf']}, Parse::RecDescent::_tracefirst($text), q{subtype}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/application#2Fpdf'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/application\#2Fpdf//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/Subtype' '/application#2Fpdf']<<}, Parse::RecDescent::_tracefirst($text), q{subtype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{subtype}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{subtype}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{subtype}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{subtype}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::param { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"param"}; Parse::RecDescent::_trace(q{Trying rule: [param]}, Parse::RecDescent::_tracefirst($_[1]), q{param}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [paramname paramvalue]}, Parse::RecDescent::_tracefirst($_[1]), q{param}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{param}); %item = (__RULE__ => q{param}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [paramname]}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::paramname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [paramname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; $item{q{paramname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [paramvalue]}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{paramvalue})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::paramvalue, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [paramvalue]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; $item{q{paramvalue(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{>>Matched production: [paramname paramvalue]<<}, Parse::RecDescent::_tracefirst($text), q{param}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{param}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{param}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{param}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{param}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::startrule { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"startrule"}; Parse::RecDescent::_trace(q{Trying rule: [startrule]}, Parse::RecDescent::_tracefirst($_[1]), q{startrule}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [docstart objlist xref 'trailer' '<<' '/Root' objreference /[^>]*/ '>>' /.*/]}, Parse::RecDescent::_tracefirst($_[1]), q{startrule}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{startrule}); %item = (__RULE__ => q{startrule}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [docstart]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::docstart($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [docstart]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $item{q{docstart}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [objlist]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $item{q{objlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [xref]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{xref})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::xref, 0, 1, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [xref]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $item{q{xref(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: ['trailer']}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'trailer'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Atrailer//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'<<'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['/Root']}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'/Root'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Root//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [objreference]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objreference})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objreference($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objreference]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $item{q{objreference}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [/[^>]*/]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/[^>]*/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^>]*)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING4__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/.*/]}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/.*/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS = {}; $return = $item{objlist}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [docstart objlist xref 'trailer' '<<' '/Root' objreference /[^>]*/ '>>' /.*/]<<}, Parse::RecDescent::_tracefirst($text), q{startrule}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{startrule}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{startrule}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{startrule}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{startrule}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::field { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"field"}; Parse::RecDescent::_trace(q{Trying rule: [field]}, Parse::RecDescent::_tracefirst($_[1]), q{field}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' fieldname fieldvalue '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{field}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{field}); %item = (__RULE__ => q{field}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldname]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldname})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [fieldvalue]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldvalue})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldvalue($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldvalue]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldvalue}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { $item{fieldname} => $item{fieldvalue} }; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' fieldname fieldvalue '>>']<<}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' fieldvalue fieldname '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{field}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{field}); %item = (__RULE__ => q{field}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldvalue]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldvalue})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldvalue($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldvalue]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldvalue}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [fieldname]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldname})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { $item{fieldname} => $item{fieldvalue} }; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' fieldvalue fieldname '>>']<<}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' fieldname '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{field}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{field}); %item = (__RULE__ => q{field}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldname]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldname})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { $item{fieldname} => undef }; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' fieldname '>>']<<}, Parse::RecDescent::_tracefirst($text), q{field}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{field}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{field}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{field}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{field}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::xref { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"xref"}; Parse::RecDescent::_trace(q{Trying rule: [xref]}, Parse::RecDescent::_tracefirst($_[1]), q{xref}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['xref' /\\d+/ /\\d+/ xrefentry]}, Parse::RecDescent::_tracefirst($_[1]), q{xref}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{xref}); %item = (__RULE__ => q{xref}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['xref']}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Axref//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\d+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\d+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying repeated subrule: [xrefentry]}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{xrefentry})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::xrefentry, 1, 100000000, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [xrefentry]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $item{q{xrefentry(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{>>Matched production: ['xref' /\\d+/ /\\d+/ xrefentry]<<}, Parse::RecDescent::_tracefirst($text), q{xref}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{xref}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{xref}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{xref}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{xref}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::obj { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"obj"}; Parse::RecDescent::_trace(q{Trying rule: [obj]}, Parse::RecDescent::_tracefirst($_[1]), q{obj}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\d+/ /\\d+/ 'obj' objbody 'endobj']}, Parse::RecDescent::_tracefirst($_[1]), q{obj}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{obj}); %item = (__RULE__ => q{obj}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\d+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['obj']}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'obj'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aobj//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [objbody]}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objbody})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objbody($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objbody]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $item{q{objbody}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['endobj']}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'endobj'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aendobj//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{objbody}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ /\\d+/ 'obj' objbody 'endobj']<<}, Parse::RecDescent::_tracefirst($text), q{obj}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{obj}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{obj}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{obj}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{obj}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::objlist { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"objlist"}; Parse::RecDescent::_trace(q{Trying rule: [objlist]}, Parse::RecDescent::_tracefirst($_[1]), q{objlist}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [obj objlist]}, Parse::RecDescent::_tracefirst($_[1]), q{objlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{objlist}); %item = (__RULE__ => q{objlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [obj]}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::obj($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [obj]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $item{q{obj}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [objlist]}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $item{q{objlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { push ( @{$return}, $item{obj}, @{$item{objlist}} ); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [obj objlist]<<}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{objlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{objlist}); %item = (__RULE__ => q{objlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{objlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{objlist}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{objlist}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{objlist}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{objlist}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::value { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"value"}; Parse::RecDescent::_trace(q{Trying rule: [value]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [valuechar value]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [valuechar]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::valuechar($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [valuechar]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{valuechar}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::value($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{valuechar}.$item{value}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [valuechar value]<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ""; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{value}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{value}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{value}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::name { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"name"}; Parse::RecDescent::_trace(q{Trying rule: [name]}, Parse::RecDescent::_tracefirst($_[1]), q{name}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/([^)][\\s]*)*/]}, Parse::RecDescent::_tracefirst($_[1]), q{name}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{name}); %item = (__RULE__ => q{name}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/([^)][\\s]*)*/]}, Parse::RecDescent::_tracefirst($text), q{name}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:([^)][\s]*)*)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [/([^)][\\s]*)*/]<<}, Parse::RecDescent::_tracefirst($text), q{name}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{name}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{name}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{name}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{name}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::stream { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"stream"}; Parse::RecDescent::_trace(q{Trying rule: [stream]}, Parse::RecDescent::_tracefirst($_[1]), q{stream}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['stream' streamcont 'endstream']}, Parse::RecDescent::_tracefirst($_[1]), q{stream}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{stream}); %item = (__RULE__ => q{stream}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['stream']}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Astream//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [streamcont]}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{streamcont})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::streamcont($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [streamcont]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $item{q{streamcont}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['endstream']}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'endstream'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aendstream//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[2]; 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['stream' streamcont 'endstream']<<}, Parse::RecDescent::_tracefirst($text), q{stream}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{stream}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{stream}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{stream}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{stream}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::kids { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"kids"}; Parse::RecDescent::_trace(q{Trying rule: [kids]}, Parse::RecDescent::_tracefirst($_[1]), q{kids}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/Kids' '[' fieldlist ']']}, Parse::RecDescent::_tracefirst($_[1]), q{kids}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{kids}); %item = (__RULE__ => q{kids}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/Kids']}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Kids//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['[']}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'['})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [']']}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{']'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{fieldlist}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/Kids' '[' fieldlist ']']<<}, Parse::RecDescent::_tracefirst($text), q{kids}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{kids}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{kids}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{kids}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{kids}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::params { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"params"}; Parse::RecDescent::_trace(q{Trying rule: [params]}, Parse::RecDescent::_tracefirst($_[1]), q{params}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/Params' '<<' paramlist '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{params}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{params}); %item = (__RULE__ => q{params}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/Params']}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Params//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'<<'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [paramlist]}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{paramlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::paramlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [paramlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $item{q{paramlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/Params' '<<' paramlist '>>']<<}, Parse::RecDescent::_tracefirst($text), q{params}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{params}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{params}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{params}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{params}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::type { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"type"}; Parse::RecDescent::_trace(q{Trying rule: [type]}, Parse::RecDescent::_tracefirst($_[1]), q{type}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\/Type/ /\\/(Filespec|Catalog)/]}, Parse::RecDescent::_tracefirst($_[1]), q{type}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{type}); %item = (__RULE__ => q{type}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\/Type/]}, Parse::RecDescent::_tracefirst($text), q{type}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\/Type)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\/(Filespec|Catalog)/]}, Parse::RecDescent::_tracefirst($text), q{type}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\/(Filespec|Catalog)/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\/(Filespec|Catalog))//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [/\\/Type/ /\\/(Filespec|Catalog)/]<<}, Parse::RecDescent::_tracefirst($text), q{type}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{type}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{type}); %item = (__RULE__ => q{type}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{type}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{type}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{type}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{type}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{type}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::stemparam { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"stemparam"}; Parse::RecDescent::_trace(q{Trying rule: [stemparam]}, Parse::RecDescent::_tracefirst($_[1]), q{stemparam}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/' m#\\w+#]}, Parse::RecDescent::_tracefirst($_[1]), q{stemparam}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{stemparam}); %item = (__RULE__ => q{stemparam}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/']}, Parse::RecDescent::_tracefirst($text), q{stemparam}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\///) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\w+#]}, Parse::RecDescent::_tracefirst($text), q{stemparam}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\w+#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\w+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/' m#\\w+#]<<}, Parse::RecDescent::_tracefirst($text), q{stemparam}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{stemparam}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{stemparam}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{stemparam}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{stemparam}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"attributes"}; Parse::RecDescent::_trace(q{Trying rule: [attributes]}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip; Parse::RecDescent::_trace(q{Trying production: ['/F' '(' value ')' attributes {F} = $item[4]; }>]}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{attributes}); %item = (__RULE__ => q{attributes}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/F']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/F//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'('})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=""; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::value($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=$item[3]; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE2__}=$_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: [{F} = $item[4]; }>]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{F} = $item[4]; }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE3__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{value}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/F' '(' value ')' attributes {F} = $item[4]; }>]<<}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip; Parse::RecDescent::_trace(q{Trying production: ['/UF' '(' value ')' attributes {UF} = $item[4]; }>]}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{attributes}); %item = (__RULE__ => q{attributes}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/UF']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/UF//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'('})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=""; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::value($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=$item[3]; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE2__}=$_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: [{UF} = $item[4]; }>]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{UF} = $item[4]; }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE3__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{value}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/UF' '(' value ')' attributes {UF} = $item[4]; }>]<<}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/ID' '[' idnum ']' attributes]}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{attributes}); %item = (__RULE__ => q{attributes}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/ID']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/ID//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['[']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'['})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying repeated subrule: [idnum]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{idnum})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::PDF::FDF::Simple::Grammar::idnum, 0, 100000000, $_noactions,$expectation,undef))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [idnum]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{idnum(s?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [']']}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{']'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [attributes]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{attributes})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::attributes($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [attributes]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $item{q{attributes}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: ['/ID' '[' idnum ']' attributes]<<}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{attributes}); %item = (__RULE__ => q{attributes}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{attributes}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{attributes}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{attributes}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{attributes}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{attributes}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::dl { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"dl"}; Parse::RecDescent::_trace(q{Trying rule: [dl]}, Parse::RecDescent::_tracefirst($_[1]), q{dl}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/DL' m#\\d+# '>>']}, Parse::RecDescent::_tracefirst($_[1]), q{dl}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{dl}); %item = (__RULE__ => q{dl}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/DL']}, Parse::RecDescent::_tracefirst($text), q{dl}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/DL//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\d+#]}, Parse::RecDescent::_tracefirst($text), q{dl}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\d+#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\d+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{dl}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/DL' m#\\d+# '>>']<<}, Parse::RecDescent::_tracefirst($text), q{dl}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{dl}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{dl}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{dl}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{dl}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::paramlist { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"paramlist"}; Parse::RecDescent::_trace(q{Trying rule: [paramlist]}, Parse::RecDescent::_tracefirst($_[1]), q{paramlist}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [param paramlist]}, Parse::RecDescent::_tracefirst($_[1]), q{paramlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{paramlist}); %item = (__RULE__ => q{paramlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [param]}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::param($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [param]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $item{q{param}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [paramlist]}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{paramlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::paramlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [paramlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $item{q{paramlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [param paramlist]<<}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{paramlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{paramlist}); %item = (__RULE__ => q{paramlist}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{paramlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{paramlist}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{paramlist}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{paramlist}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{paramlist}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::streamline { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"streamline"}; Parse::RecDescent::_trace(q{Trying rule: [streamline]}, Parse::RecDescent::_tracefirst($_[1]), q{streamline}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['endstream' m#.*#]}, Parse::RecDescent::_tracefirst($_[1]), q{streamline}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{streamline}); %item = (__RULE__ => q{streamline}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['endstream']}, Parse::RecDescent::_tracefirst($text), q{streamline}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aendstream//) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; $text = $_savetext; Parse::RecDescent::_trace(q{Trying terminal: [m#.*#]}, Parse::RecDescent::_tracefirst($text), q{streamline}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#.*#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:.*)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{streamline}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $::strcontent .= $item[2]; $return = $item[2]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['endstream' m#.*#]<<}, Parse::RecDescent::_tracefirst($text), q{streamline}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{streamline}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{streamline}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{streamline}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{streamline}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"fieldname"}; Parse::RecDescent::_trace(q{Trying rule: [fieldname]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldname}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/T' '(' name ')']}, Parse::RecDescent::_tracefirst($_[1]), q{fieldname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{fieldname}); %item = (__RULE__ => q{fieldname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/T']}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/T//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'('})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [name]}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{name})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::name($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $item{q{name}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{name}; $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/T' '(' name ')']<<}, Parse::RecDescent::_tracefirst($text), q{fieldname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{fieldname}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{fieldname}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{fieldname}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{fieldname}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::xrefentry { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"xrefentry"}; Parse::RecDescent::_trace(q{Trying rule: [xrefentry]}, Parse::RecDescent::_tracefirst($_[1]), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\d+/ /\\d+/ /[fn]/]}, Parse::RecDescent::_tracefirst($_[1]), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{xrefentry}); %item = (__RULE__ => q{xrefentry}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\d+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/[fn]/]}, Parse::RecDescent::_tracefirst($text), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/[fn]/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[fn])//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN3__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ /\\d+/ /[fn]/]<<}, Parse::RecDescent::_tracefirst($text), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{xrefentry}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{xrefentry}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{xrefentry}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{xrefentry}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::objreference { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"objreference"}; Parse::RecDescent::_trace(q{Trying rule: [objreference]}, Parse::RecDescent::_tracefirst($_[1]), q{objreference}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\d+/ /\\d+/ 'R']}, Parse::RecDescent::_tracefirst($_[1]), q{objreference}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{objreference}); %item = (__RULE__ => q{objreference}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{objreference}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text), q{objreference}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\d+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\d+)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['R']}, Parse::RecDescent::_tracefirst($text), q{objreference}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'R'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\AR//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/ /\\d+/ 'R']<<}, Parse::RecDescent::_tracefirst($text), q{objreference}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{objreference}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{objreference}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{objreference}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{objreference}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::idnum { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"idnum"}; Parse::RecDescent::_trace(q{Trying rule: [idnum]}, Parse::RecDescent::_tracefirst($_[1]), q{idnum}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<' /[\\w]*/ '>' {ID}}, $item[1].$item[2].$item[3]); }>]}, Parse::RecDescent::_tracefirst($_[1]), q{idnum}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{idnum}); %item = (__RULE__ => q{idnum}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<']}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/[\\w]*/]}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/[\\w]*/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[\w]*)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>']}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying directive: [{ID}}, $item[1].$item[2].$item[3]); }>]}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { push (@{$PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{ID}}, $item[1].$item[2].$item[3]); }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<' /[\\w]*/ '>' {ID}}, $item[1].$item[2].$item[3]); }>]<<}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' idnumchars ')' {ID}}, $item[1].$item{idnumchars}.$item[3]); }>]}, Parse::RecDescent::_tracefirst($_[1]), q{idnum}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{idnum}); %item = (__RULE__ => q{idnum}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [idnumchars]}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{idnumchars})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::idnumchars($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [idnumchars]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $item{q{idnumchars}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying directive: [{ID}}, $item[1].$item{idnumchars}.$item[3]); }>]}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { push (@{$PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{ID}}, $item[1].$item{idnumchars}.$item[3]); }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' idnumchars ')' {ID}}, $item[1].$item{idnumchars}.$item[3]); }>]<<}, Parse::RecDescent::_tracefirst($text), q{idnum}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{idnum}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{idnum}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{idnum}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{idnum}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldvalue { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"fieldvalue"}; Parse::RecDescent::_trace(q{Trying rule: [fieldvalue]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip; Parse::RecDescent::_trace(q{Trying production: ['/V' '(' value ')']}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{fieldvalue}); %item = (__RULE__ => q{fieldvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/V']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/V//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'('})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=""; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::value($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=$item[3]; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE2__}=$_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{value}; $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal #$return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/V' '(' value ')']<<}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/V' '[' valarray ']']}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{fieldvalue}); %item = (__RULE__ => q{fieldvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/V']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/V//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['[']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'['})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [valarray]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{valarray})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::valarray($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [valarray]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $item{q{valarray}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [']']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{']'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING3__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{valarray}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/V' '[' valarray ']']<<}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/V' feature]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{fieldvalue}); %item = (__RULE__ => q{fieldvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/V']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/V//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [feature]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{feature})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::feature($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [feature]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $item{q{feature}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = substr ($item{feature}, 1); $return =~ s/\\(\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['/V' feature]<<}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/V' objreference]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{fieldvalue}); %item = (__RULE__ => q{fieldvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/V']}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/V//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [objreference]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{objreference})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::objreference($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [objreference]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $item{q{objreference}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: ['/V' objreference]<<}, Parse::RecDescent::_tracefirst($text), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{fieldvalue}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{fieldvalue}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{fieldvalue}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::idnumchar { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"idnumchar"}; Parse::RecDescent::_trace(q{Trying rule: [idnumchar]}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\)']}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{idnumchar}); %item = (__RULE__ => q{idnumchar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\)']}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\)']<<}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\(']}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{idnumchar}); %item = (__RULE__ => q{idnumchar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\(']}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\(']<<}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\']}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{idnumchar}); %item = (__RULE__ => q{idnumchar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\']}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\']<<}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/[^()]/]}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{idnumchar}); %item = (__RULE__ => q{idnumchar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/[^()]/]}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[^()])//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/[^()]/]<<}, Parse::RecDescent::_tracefirst($text), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchar}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{idnumchar}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{idnumchar}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{idnumchar}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::garbage { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"garbage"}; Parse::RecDescent::_trace(q{Trying rule: [garbage]}, Parse::RecDescent::_tracefirst($_[1]), q{garbage}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/%[^0-9]*/]}, Parse::RecDescent::_tracefirst($_[1]), q{garbage}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{garbage}); %item = (__RULE__ => q{garbage}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/%[^0-9]*/]}, Parse::RecDescent::_tracefirst($text), q{garbage}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:%[^0-9]*)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [/%[^0-9]*/]<<}, Parse::RecDescent::_tracefirst($text), q{garbage}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{garbage}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{garbage}); %item = (__RULE__ => q{garbage}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{garbage}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{garbage}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{garbage}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{garbage}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{garbage}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::paramvalue { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"paramvalue"}; Parse::RecDescent::_trace(q{Trying rule: [paramvalue]}, Parse::RecDescent::_tracefirst($_[1]), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' m#[^)]*# ')']}, Parse::RecDescent::_tracefirst($_[1]), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{paramvalue}); %item = (__RULE__ => q{paramvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#[^)]*#]}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#[^)]*#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:[^)]*)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['(' m#[^)]*# ')']<<}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<' m#\\w*# '>']}, Parse::RecDescent::_tracefirst($_[1]), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{paramvalue}); %item = (__RULE__ => q{paramvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<']}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\w*#]}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\w*#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\w*)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: ['>']}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['<' m#\\w*# '>']<<}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [m#\\w+#]}, Parse::RecDescent::_tracefirst($_[1]), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{paramvalue}); %item = (__RULE__ => q{paramvalue}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [m#\\w+#]}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\w+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: [m#\\w+#]<<}, Parse::RecDescent::_tracefirst($text), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{paramvalue}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{paramvalue}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{paramvalue}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{paramvalue}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::filter { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"filter"}; Parse::RecDescent::_trace(q{Trying rule: [filter]}, Parse::RecDescent::_tracefirst($_[1]), q{filter}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/Filter' filtertype]}, Parse::RecDescent::_tracefirst($_[1]), q{filter}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{filter}); %item = (__RULE__ => q{filter}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/Filter']}, Parse::RecDescent::_tracefirst($text), q{filter}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/Filter//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [filtertype]}, Parse::RecDescent::_tracefirst($text), q{filter}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{filtertype})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::filtertype($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{filter}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [filtertype]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{filter}, $tracelevel) if defined $::RD_TRACE; $item{q{filtertype}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: ['/Filter' filtertype]<<}, Parse::RecDescent::_tracefirst($text), q{filter}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{filter}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{filter}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{filter}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{filter}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::paramname { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"paramname"}; Parse::RecDescent::_trace(q{Trying rule: [paramname]}, Parse::RecDescent::_tracefirst($_[1]), q{paramname}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/' m#\\w+#]}, Parse::RecDescent::_tracefirst($_[1]), q{paramname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{paramname}); %item = (__RULE__ => q{paramname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/']}, Parse::RecDescent::_tracefirst($text), q{paramname}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\///) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [m#\\w+#]}, Parse::RecDescent::_tracefirst($text), q{paramname}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{m#\\w+#})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s#\A(?:\w+)##) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/' m#\\w+#]<<}, Parse::RecDescent::_tracefirst($text), q{paramname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{paramname}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{paramname}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{paramname}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{paramname}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"fieldlist"}; Parse::RecDescent::_trace(q{Trying rule: [fieldlist]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [field fieldlist]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{fieldlist}); %item = (__RULE__ => q{fieldlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [field]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::field($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [field]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{field}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { push ( @{$return}, $item{field}, @{$item{fieldlist}} ); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [field fieldlist]<<}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' fieldname kids '>>' fieldlist]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{fieldlist}); %item = (__RULE__ => q{fieldlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldname]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldname})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [kids]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{kids})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::kids($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [kids]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{kids}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{$item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' fieldname kids '>>' fieldlist]<<}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['<<' kids fieldname '>>' fieldlist]}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{fieldlist}); %item = (__RULE__ => q{fieldlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['<<']}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\<\failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [kids]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{kids})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::kids($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [kids]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{kids}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [fieldname]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldname})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldname($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['>>']}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'>>'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>\>//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [fieldlist]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{fieldlist})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::fieldlist($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [fieldlist]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $item{q{fieldlist}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{ $item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['<<' kids fieldname '>>' fieldlist]<<}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{fieldlist}); %item = (__RULE__ => q{fieldlist}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{fieldlist}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{fieldlist}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{fieldlist}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{fieldlist}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::filename { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"filename"}; Parse::RecDescent::_trace(q{Trying rule: [filename]}, Parse::RecDescent::_tracefirst($_[1]), q{filename}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' name ')']}, Parse::RecDescent::_tracefirst($_[1]), q{filename}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{filename}); %item = (__RULE__ => q{filename}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [name]}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{name})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::name($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $item{q{name}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[2]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' name ')']<<}, Parse::RecDescent::_tracefirst($text), q{filename}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{filename}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{filename}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{filename}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{filename}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::filtertype { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"filtertype"}; Parse::RecDescent::_trace(q{Trying rule: [filtertype]}, Parse::RecDescent::_tracefirst($_[1]), q{filtertype}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['/FlateDecode']}, Parse::RecDescent::_tracefirst($_[1]), q{filtertype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{filtertype}); %item = (__RULE__ => q{filtertype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['/FlateDecode']}, Parse::RecDescent::_tracefirst($text), q{filtertype}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/FlateDecode//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{>>Matched production: ['/FlateDecode']<<}, Parse::RecDescent::_tracefirst($text), q{filtertype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{filtertype}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{filtertype}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{filtertype}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{filtertype}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::streamcont { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"streamcont"}; Parse::RecDescent::_trace(q{Trying rule: [streamcont]}, Parse::RecDescent::_tracefirst($_[1]), q{streamcont}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [streamline streamcont]}, Parse::RecDescent::_tracefirst($_[1]), q{streamcont}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{streamcont}); %item = (__RULE__ => q{streamcont}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [streamline]}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::streamline($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [streamline]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $item{q{streamline}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [streamcont]}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{streamcont})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::streamcont($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [streamcont]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $item{q{streamcont}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [streamline streamcont]<<}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{streamcont}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{streamcont}); %item = (__RULE__ => q{streamcont}); my $repcount = 0; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{streamcont}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{streamcont}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{streamcont}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{streamcont}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{streamcont}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::stemstream { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"stemstream"}; Parse::RecDescent::_trace(q{Trying rule: [stemstream]}, Parse::RecDescent::_tracefirst($_[1]), q{stemstream}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [streamcont 'endstream']}, Parse::RecDescent::_tracefirst($_[1]), q{stemstream}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{stemstream}); %item = (__RULE__ => q{stemstream}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [streamcont]}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::streamcont($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [streamcont]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; $item{q{streamcont}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: ['endstream']}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{'endstream'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aendstream//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [streamcont 'endstream']<<}, Parse::RecDescent::_tracefirst($text), q{stemstream}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{stemstream}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{stemstream}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{stemstream}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{stemstream}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::valarray { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"valarray"}; Parse::RecDescent::_trace(q{Trying rule: [valarray]}, Parse::RecDescent::_tracefirst($_[1]), q{valarray}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { local $skip = defined($skip) ? $skip : $Parse::RecDescent::skip; Parse::RecDescent::_trace(q{Trying production: ['(' value ')' valarray]}, Parse::RecDescent::_tracefirst($_[1]), q{valarray}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{valarray}); %item = (__RULE__ => q{valarray}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=""; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::value($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: []}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_tok = do { my $oldskip = $skip; $skip=$item[2]; $oldskip }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE2__}=$_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$&; Parse::RecDescent::_trace(q{Trying subrule: [valarray]}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{valarray})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::valarray($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [valarray]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $item{q{valarray}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { push @{$return}, $item{value}, @{$item{valarray}}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' value ')' valarray]<<}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{valarray}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{valarray}); %item = (__RULE__ => q{valarray}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = []; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{valarray}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{valarray}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{valarray}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{valarray}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{valarray}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::idnumchars { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"idnumchars"}; Parse::RecDescent::_trace(q{Trying rule: [idnumchars]}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [idnumchar idnumchars]}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{idnumchars}); %item = (__RULE__ => q{idnumchars}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [idnumchar]}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::idnumchar($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [idnumchar]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $item{q{idnumchar}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [idnumchars]}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{idnumchars})->at($text); unless (defined ($_tok = Parse::RecDescent::PDF::FDF::Simple::Grammar::idnumchars($thisparser,$text,$repeating,$_noactions,sub { \@arg }))) { Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [idnumchars]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $item{q{idnumchars}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{idnumchar}.$item{idnumchars}; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [idnumchar idnumchars]<<}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: []}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{idnumchars}); %item = (__RULE__ => q{idnumchars}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ""; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: []<<}, Parse::RecDescent::_tracefirst($text), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{idnumchars}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{idnumchars}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{idnumchars}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{idnumchars}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args) sub Parse::RecDescent::PDF::FDF::Simple::Grammar::valuechar { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"valuechar"}; Parse::RecDescent::_trace(q{Trying rule: [valuechar]}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = defined($_[2]) && $_[2]; my $_noactions = defined($_[3]) && $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep=""; my $expectation = new Parse::RecDescent::Expectation($thisrule->expected()); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = chr(92); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\#']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\#']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\#//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "#"; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\#']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\r']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\r']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\r//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = '\r'; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\r']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\t']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\t']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\t//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = '\t'; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\t']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\n']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[4]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\n']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\n//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = '\n'; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\n']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\r']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[5]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\r']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\r//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ''; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\r']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\\\n']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[6]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\\\n']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\\n//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ''; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\\\n']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\r']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[7]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\r']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\r//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = chr(13); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\r']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\n']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[8]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\n']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\n//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = chr(10); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\n']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\r']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[9]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\r']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\r//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ''; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\r']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\t']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[10]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\t']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\t//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "\t"; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\t']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [' ']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[11]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [' ']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\ //) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = chr(10); }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [' ']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\ ']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[12]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\ ']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\ //) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ''; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\ ']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\n/]}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[13]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\n/]}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\n)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ''; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/\\n/]<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/\\\\/ /\\n/]}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[14]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/\\\\/]}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\\)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying terminal: [/\\n/]}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{/\\n/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\n)//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = '' }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/\\\\/ /\\n/]<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\(']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[15]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\(']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\(//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = '('; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\(']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['\\)']}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[16]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['\\)']}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\\\)//) { $expectation->failed(); Parse::RecDescent::_trace(qq{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = ')'; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['\\)']<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/[\\r\\t\\n\\\\ ]/]}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[17]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/[\\r\\t\\n\\\\ ]/]}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:[\r\t\n\\ ])//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/[\\r\\t\\n\\\\ ]/]<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/([^()\\r\\t\\n\\\\ ]+)/]}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[18]; $text = $_[1]; my $_savetext; @item = (q{valuechar}); %item = (__RULE__ => q{valuechar}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/([^()\\r\\t\\n\\\\ ]+)/]}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $lastsep = ""; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:([^()\r\t\n\\ ]+))//) { $expectation->failed(); Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $& . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$&; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1]; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/([^()\\r\\t\\n\\\\ ]+)/]<<}, Parse::RecDescent::_tracefirst($text), q{valuechar}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($return) || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<>}, Parse::RecDescent::_tracefirst($_[1]), q{valuechar}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{valuechar}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{valuechar}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{valuechar}, $tracelevel) } $_[1] = $text; return $return; } } package PDF::FDF::Simple::Grammar; sub new { my $self = bless( { '_AUTOTREE' => undef, 'localvars' => '', 'startcode' => '', '_check' => { 'thisoffset' => '', 'itempos' => '', 'prevoffset' => '', 'prevline' => '', 'prevcolumn' => '', 'thiscolumn' => '' }, 'namespace' => 'Parse::RecDescent::PDF::FDF::Simple::Grammar', 'deferrable' => 1, '_AUTOACTION' => undef, 'rules' => { 'stemparams' => bless( { 'impcount' => 0, 'calls' => [ 'stemparam', 'stemparams' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'subrule' => 'stemparam', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 93 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'stemparams', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 93 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 94 }, 'Parse::RecDescent::Production' ) ], 'name' => 'stemparams', 'vars' => '', 'line' => 93 }, 'Parse::RecDescent::Rule' ), 'objbody' => bless( { 'impcount' => 0, 'calls' => [ 'attributes', 'fieldlist', 'type', 'objreference', 'filename', 'filter', 'subtype', 'params', 'dl', 'stream', 'stemparams', 'stemstream' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 8, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/FDF', 'hashname' => '__STRING2__', 'description' => '\'/FDF\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '<<', 'hashname' => '__STRING3__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '/Fields', 'hashname' => '__STRING4__', 'description' => '\'/Fields\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[', 'hashname' => '__STRING5__', 'description' => '\'[\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ']', 'hashname' => '__STRING6__', 'description' => '\']\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING7__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'type', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Repetition' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING8__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 64, 'code' => '{ $return = $item{fieldlist}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '[', 'hashname' => '__STRING1__', 'description' => '\'[\'', 'lookahead' => 0, 'line' => 67 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 67 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ']', 'hashname' => '__STRING2__', 'description' => '\']\'', 'lookahead' => 0, 'line' => 67 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 68, 'code' => '{ $return = $item{fieldlist}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 67 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 6, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/FDF', 'hashname' => '__STRING2__', 'description' => '\'/FDF\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '<<', 'hashname' => '__STRING3__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '/Fields', 'hashname' => '__STRING4__', 'description' => '\'/Fields\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'objreference', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING5__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING6__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 71 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 72, 'code' => '{ $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 71 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 9, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/F', 'hashname' => '__STRING2__', 'description' => '\'/F\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'filename', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '/EF', 'hashname' => '__STRING3__', 'description' => '\'/EF\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '<<', 'hashname' => '__STRING4__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/F', 'hashname' => '__STRING5__', 'description' => '\'/F\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'objreference', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING6__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/Type', 'hashname' => '__STRING7__', 'description' => '\'/Type\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/Filespec', 'hashname' => '__STRING8__', 'description' => '\'/Filespec\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING9__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 75 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 76, 'code' => '{ $::strname = $item[3]; $::strcontent = \'\'; # clear ready for next file $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 75 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '4', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/Length', 'hashname' => '__STRING2__', 'description' => '\'/Length\'', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\d+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 81, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'subrule' => 'filter', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Repetition' ), bless( { 'subrule' => 'subtype', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Repetition' ), bless( { 'subrule' => 'params', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Repetition' ), bless( { 'subrule' => 'dl', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Repetition' ), bless( { 'subrule' => 'stream', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 81 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 82, 'code' => '{ #print "STRNAME = $::strname\\nSTRCONTENT = $::strcontent\\n"; # RJH don\'t write until FlateDecode developed #&write_file($::strname,\\$::strcontent); $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 81 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '5', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 88 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/StemV', 'hashname' => '__STRING2__', 'description' => '\'/StemV\'', 'lookahead' => 0, 'line' => 88 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\d+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 88, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'subrule' => 'stemparams', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 88 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'stemstream', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 88 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 89, 'code' => '{ $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 88 }, 'Parse::RecDescent::Production' ) ], 'name' => 'objbody', 'vars' => '', 'line' => 63 }, 'Parse::RecDescent::Rule' ), 'docstart' => bless( { 'impcount' => 0, 'calls' => [ 'garbage' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '%FDF-[0-9]+\\.[0-9]+', 'hashname' => '__PATTERN1__', 'description' => '/%FDF-[0-9]+\\\\.[0-9]+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 40, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'subrule' => 'garbage', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 40 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 41 }, 'Parse::RecDescent::Production' ) ], 'name' => 'docstart', 'vars' => '', 'line' => 40 }, 'Parse::RecDescent::Rule' ), 'feature' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/[^\\s/>]*', 'hashname' => '__PATTERN1__', 'description' => 'm!/[^\\\\s/>]*!', 'lookahead' => 0, 'rdelim' => '!', 'line' => 223, 'mod' => '', 'ldelim' => '!' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'feature', 'vars' => '', 'line' => 223 }, 'Parse::RecDescent::Rule' ), 'subtype' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/Subtype', 'hashname' => '__STRING1__', 'description' => '\'/Subtype\'', 'lookahead' => 0, 'line' => 133 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/application#2Fpdf', 'hashname' => '__STRING2__', 'description' => '\'/application#2Fpdf\'', 'lookahead' => 0, 'line' => 133 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'subtype', 'vars' => '', 'line' => 133 }, 'Parse::RecDescent::Rule' ), 'param' => bless( { 'impcount' => 0, 'calls' => [ 'paramname', 'paramvalue' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'subrule' => 'paramname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 140 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'paramvalue', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 140 }, 'Parse::RecDescent::Repetition' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'param', 'vars' => '', 'line' => 138 }, 'Parse::RecDescent::Rule' ), 'startrule' => bless( { 'impcount' => 0, 'calls' => [ 'docstart', 'objlist', 'xref', 'objreference' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 4, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'docstart', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'objlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'xref', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 1, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Repetition' ), bless( { 'pattern' => 'trailer', 'hashname' => '__STRING1__', 'description' => '\'trailer\'', 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '<<', 'hashname' => '__STRING2__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '/Root', 'hashname' => '__STRING3__', 'description' => '\'/Root\'', 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'objreference', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '[^>]*', 'hashname' => '__PATTERN1__', 'description' => '/[^>]*/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 30, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING4__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 30 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '.*', 'hashname' => '__PATTERN2__', 'description' => '/.*/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 30, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 31, 'code' => '{ $PDF::FDF::Simple::deferred_result_FDF_OPTIONS = {}; $return = $item{objlist}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'startrule', 'vars' => '', 'line' => 30 }, 'Parse::RecDescent::Rule' ), 'field' => bless( { 'impcount' => 0, 'calls' => [ 'fieldname', 'fieldvalue' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 191 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 191 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'fieldvalue', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 191 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 191 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 192, 'code' => '{ $return = { $item{fieldname} => $item{fieldvalue} }; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 195 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldvalue', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 195 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'fieldname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 195 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 195 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 196, 'code' => '{ $return = { $item{fieldname} => $item{fieldvalue} }; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 195 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 199 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 199 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 199 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 200, 'code' => '{ $return = { $item{fieldname} => undef }; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 199 }, 'Parse::RecDescent::Production' ) ], 'name' => 'field', 'vars' => '', 'line' => 191 }, 'Parse::RecDescent::Rule' ), 'xref' => bless( { 'impcount' => 0, 'calls' => [ 'xrefentry' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 0, 'items' => [ bless( { 'pattern' => 'xref', 'hashname' => '__STRING1__', 'description' => '\'xref\'', 'lookahead' => 0, 'line' => 36 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 36, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN2__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 36, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'subrule' => 'xrefentry', 'expected' => undef, 'min' => 1, 'argcode' => undef, 'max' => 100000000, 'matchrule' => 0, 'repspec' => 's', 'lookahead' => 0, 'line' => 36 }, 'Parse::RecDescent::Repetition' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'xref', 'vars' => '', 'line' => 36 }, 'Parse::RecDescent::Rule' ), 'obj' => bless( { 'impcount' => 0, 'calls' => [ 'objbody' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 58, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN2__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 58, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => 'obj', 'hashname' => '__STRING1__', 'description' => '\'obj\'', 'lookahead' => 0, 'line' => 58 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'objbody', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 58 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => 'endobj', 'hashname' => '__STRING2__', 'description' => '\'endobj\'', 'lookahead' => 0, 'line' => 58 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 59, 'code' => '{ $return = $item{objbody}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'obj', 'vars' => '', 'line' => 56 }, 'Parse::RecDescent::Rule' ), 'objlist' => bless( { 'impcount' => 0, 'calls' => [ 'obj', 'objlist' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'obj', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 46 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'objlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 46 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 47, 'code' => '{ push ( @{$return}, $item{obj}, @{$item{objlist}} ); }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 50, 'code' => '{ $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 50 }, 'Parse::RecDescent::Production' ) ], 'name' => 'objlist', 'vars' => '', 'line' => 44 }, 'Parse::RecDescent::Rule' ), 'value' => bless( { 'impcount' => 0, 'calls' => [ 'valuechar', 'value' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'valuechar', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 239 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'value', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 239 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 240, 'code' => '{ $return = $item{valuechar}.$item{value}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 243, 'code' => '{ $return = ""; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 243 }, 'Parse::RecDescent::Production' ) ], 'name' => 'value', 'vars' => '', 'line' => 239 }, 'Parse::RecDescent::Rule' ), 'name' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '([^)][\\s]*)*', 'hashname' => '__PATTERN1__', 'description' => '/([^)][\\\\s]*)*/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 352, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'name', 'vars' => '', 'line' => 350 }, 'Parse::RecDescent::Rule' ), 'stream' => bless( { 'impcount' => 0, 'calls' => [ 'streamcont' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => 'stream', 'hashname' => '__STRING1__', 'description' => '\'stream\'', 'lookahead' => 0, 'line' => 111 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'streamcont', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 111 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => 'endstream', 'hashname' => '__STRING2__', 'description' => '\'endstream\'', 'lookahead' => 0, 'line' => 111 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 112, 'code' => '{ $return = $item[2]; 1; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'stream', 'vars' => '', 'line' => 110 }, 'Parse::RecDescent::Rule' ), 'kids' => bless( { 'impcount' => 0, 'calls' => [ 'fieldlist' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 3, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/Kids', 'hashname' => '__STRING1__', 'description' => '\'/Kids\'', 'lookahead' => 0, 'line' => 186 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[', 'hashname' => '__STRING2__', 'description' => '\'[\'', 'lookahead' => 0, 'line' => 186 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 186 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ']', 'hashname' => '__STRING3__', 'description' => '\']\'', 'lookahead' => 0, 'line' => 186 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 187, 'code' => '{ $return = $item{fieldlist}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'kids', 'vars' => '', 'line' => 186 }, 'Parse::RecDescent::Rule' ), 'params' => bless( { 'impcount' => 0, 'calls' => [ 'paramlist' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 3, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/Params', 'hashname' => '__STRING1__', 'description' => '\'/Params\'', 'lookahead' => 0, 'line' => 135 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '<<', 'hashname' => '__STRING2__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 135 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'paramlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 135 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING3__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 135 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'params', 'vars' => '', 'line' => 135 }, 'Parse::RecDescent::Rule' ), 'type' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '\\/Type', 'hashname' => '__PATTERN1__', 'description' => '/\\\\/Type/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 55, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\/(Filespec|Catalog)', 'hashname' => '__PATTERN2__', 'description' => '/\\\\/(Filespec|Catalog)/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 55, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 56 }, 'Parse::RecDescent::Production' ) ], 'name' => 'type', 'vars' => '', 'line' => 55 }, 'Parse::RecDescent::Rule' ), 'stemparam' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/', 'hashname' => '__STRING1__', 'description' => '\'/\'', 'lookahead' => 0, 'line' => 96 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\w+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\w+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 96, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'stemparam', 'vars' => '', 'line' => 94 }, 'Parse::RecDescent::Rule' ), 'attributes' => bless( { 'impcount' => 0, 'calls' => [ 'value', 'attributes', 'idnum' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 3, 'dircount' => 3, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/F', 'hashname' => '__STRING1__', 'description' => '\'/F\'', 'lookahead' => 0, 'line' => 339 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '(', 'hashname' => '__STRING2__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 339 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '', 'lookahead' => 0, 'line' => 339, 'code' => 'my $oldskip = $skip; $skip=""; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'subrule' => 'value', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 339 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', 'lookahead' => 0, 'line' => 339, 'code' => 'my $oldskip = $skip; $skip=$item[3]; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'pattern' => ')', 'hashname' => '__STRING3__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 339 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 339 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE3__', 'name' => '{F} = $item[4]; }>', 'lookahead' => 0, 'line' => 340, 'code' => 'push @{$thisparser->{deferred}}, sub { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{F} = $item[4]; };' }, 'Parse::RecDescent::Directive' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 341, 'code' => '{ $return = $item{value}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 3, 'dircount' => 3, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/UF', 'hashname' => '__STRING1__', 'description' => '\'/UF\'', 'lookahead' => 0, 'line' => 344 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '(', 'hashname' => '__STRING2__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 344 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '', 'lookahead' => 0, 'line' => 344, 'code' => 'my $oldskip = $skip; $skip=""; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'subrule' => 'value', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 344 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', 'lookahead' => 0, 'line' => 344, 'code' => 'my $oldskip = $skip; $skip=$item[3]; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'pattern' => ')', 'hashname' => '__STRING3__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 344 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 344 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE3__', 'name' => '{UF} = $item[4]; }>', 'lookahead' => 0, 'line' => 345, 'code' => 'push @{$thisparser->{deferred}}, sub { $PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{UF} = $item[4]; };' }, 'Parse::RecDescent::Directive' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 346, 'code' => '{ $return = $item{value}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 344 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 3, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/ID', 'hashname' => '__STRING1__', 'description' => '\'/ID\'', 'lookahead' => 0, 'line' => 349 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[', 'hashname' => '__STRING2__', 'description' => '\'[\'', 'lookahead' => 0, 'line' => 349 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'idnum', 'expected' => undef, 'min' => 0, 'argcode' => undef, 'max' => 100000000, 'matchrule' => 0, 'repspec' => 's?', 'lookahead' => 0, 'line' => 349 }, 'Parse::RecDescent::Repetition' ), bless( { 'pattern' => ']', 'hashname' => '__STRING3__', 'description' => '\']\'', 'lookahead' => 0, 'line' => 349 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'attributes', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 349 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 349 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 350 }, 'Parse::RecDescent::Production' ) ], 'name' => 'attributes', 'vars' => '', 'line' => 339 }, 'Parse::RecDescent::Rule' ), 'dl' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/DL', 'hashname' => '__STRING1__', 'description' => '\'/DL\'', 'lookahead' => 0, 'line' => 103 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\d+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 103, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 103 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'dl', 'vars' => '', 'line' => 103 }, 'Parse::RecDescent::Rule' ), 'paramlist' => bless( { 'impcount' => 0, 'calls' => [ 'param', 'paramlist' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'subrule' => 'param', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 137 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'paramlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 137 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 138 }, 'Parse::RecDescent::Production' ) ], 'name' => 'paramlist', 'vars' => '', 'line' => 137 }, 'Parse::RecDescent::Rule' ), 'streamline' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => 'endstream', 'hashname' => '__STRING1__', 'description' => '\'endstream\'', 'lookahead' => -1, 'line' => 123 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '.*', 'hashname' => '__PATTERN1__', 'description' => 'm#.*#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 123, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 124, 'code' => '{ $::strcontent .= $item[2]; $return = $item[2]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'streamline', 'vars' => '', 'line' => 121 }, 'Parse::RecDescent::Rule' ), 'fieldname' => bless( { 'impcount' => 0, 'calls' => [ 'name' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 3, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/T', 'hashname' => '__STRING1__', 'description' => '\'/T\'', 'lookahead' => 0, 'line' => 225 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '(', 'hashname' => '__STRING2__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 225 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'name', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 225 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ')', 'hashname' => '__STRING3__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 225 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 226, 'code' => '{ $return = $item{name}; $return =~ s/\\\\(\\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'fieldname', 'vars' => '', 'line' => 225 }, 'Parse::RecDescent::Rule' ), 'xrefentry' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 3, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 38, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN2__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 38, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '[fn]', 'hashname' => '__PATTERN3__', 'description' => '/[fn]/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 38, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'xrefentry', 'vars' => '', 'line' => 38 }, 'Parse::RecDescent::Rule' ), 'objreference' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN1__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 150, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\d+', 'hashname' => '__PATTERN2__', 'description' => '/\\\\d+/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 150, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => 'R', 'hashname' => '__STRING1__', 'description' => '\'R\'', 'lookahead' => 0, 'line' => 150 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'objreference', 'vars' => '', 'line' => 150 }, 'Parse::RecDescent::Rule' ), 'idnum' => bless( { 'impcount' => 0, 'calls' => [ 'idnumchars' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 1, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '<', 'hashname' => '__STRING1__', 'description' => '\'<\'', 'lookahead' => 0, 'line' => 354 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[\\w]*', 'hashname' => '__PATTERN1__', 'description' => '/[\\\\w]*/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 354, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '>', 'hashname' => '__STRING2__', 'description' => '\'>\'', 'lookahead' => 0, 'line' => 354 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '{ID}}, $item[1].$item[2].$item[3]); }>', 'lookahead' => 0, 'line' => 355, 'code' => 'push @{$thisparser->{deferred}}, sub { push (@{$PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{ID}}, $item[1].$item[2].$item[3]); };' }, 'Parse::RecDescent::Directive' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 2, 'dircount' => 1, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '(', 'hashname' => '__STRING1__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 356 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'idnumchars', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 356 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ')', 'hashname' => '__STRING2__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 356 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '{ID}}, $item[1].$item{idnumchars}.$item[3]); }>', 'lookahead' => 0, 'line' => 357, 'code' => 'push @{$thisparser->{deferred}}, sub { push (@{$PDF::FDF::Simple::deferred_result_FDF_OPTIONS->{ID}}, $item[1].$item{idnumchars}.$item[3]); };' }, 'Parse::RecDescent::Directive' ) ], 'line' => 356 }, 'Parse::RecDescent::Production' ) ], 'name' => 'idnum', 'vars' => '', 'line' => 352 }, 'Parse::RecDescent::Rule' ), 'fieldvalue' => bless( { 'impcount' => 0, 'calls' => [ 'value', 'valarray', 'feature', 'objreference' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 3, 'dircount' => 2, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/V', 'hashname' => '__STRING1__', 'description' => '\'/V\'', 'lookahead' => 0, 'line' => 204 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '(', 'hashname' => '__STRING2__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 204 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '', 'lookahead' => 0, 'line' => 204, 'code' => 'my $oldskip = $skip; $skip=""; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'subrule' => 'value', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 204 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', 'lookahead' => 0, 'line' => 204, 'code' => 'my $oldskip = $skip; $skip=$item[3]; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'pattern' => ')', 'hashname' => '__STRING3__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 204 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 205, 'code' => '{ $return = $item{value}; $return =~ s/\\\\(\\d{3})/sprintf ("%c", oct($1))/eg; # handle octal #$return =~ s/\\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 3, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/V', 'hashname' => '__STRING1__', 'description' => '\'/V\'', 'lookahead' => 0, 'line' => 210 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[', 'hashname' => '__STRING2__', 'description' => '\'[\'', 'lookahead' => 0, 'line' => 210 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'valarray', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 210 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ']', 'hashname' => '__STRING3__', 'description' => '\']\'', 'lookahead' => 0, 'line' => 210 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 211, 'code' => '{ $return = $item{valarray}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 210 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '/V', 'hashname' => '__STRING1__', 'description' => '\'/V\'', 'lookahead' => 0, 'line' => 214 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'feature', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 214 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 215, 'code' => '{ $return = substr ($item{feature}, 1); $return =~ s/\\\\(\\d{3})/sprintf ("%c", oct($1))/eg; # handle octal $return =~ s/\\#([0-9A-F]{2})/sprintf ("%c", hex($1))/eg; # handle hex }' }, 'Parse::RecDescent::Action' ) ], 'line' => 214 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/V', 'hashname' => '__STRING1__', 'description' => '\'/V\'', 'lookahead' => 0, 'line' => 221 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'objreference', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 221 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 220 }, 'Parse::RecDescent::Production' ) ], 'name' => 'fieldvalue', 'vars' => '', 'line' => 204 }, 'Parse::RecDescent::Rule' ), 'idnumchar' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\)', 'hashname' => '__STRING1__', 'description' => '\'\\\\)\'', 'lookahead' => 0, 'line' => 359 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 360, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\(', 'hashname' => '__STRING1__', 'description' => '\'\\\\(\'', 'lookahead' => 0, 'line' => 361 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 362, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 361 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\\'', 'lookahead' => 0, 'line' => 363 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 364, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 363 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '[^()]', 'hashname' => '__PATTERN1__', 'description' => '/[^()]/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 365, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 366, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 365 }, 'Parse::RecDescent::Production' ) ], 'name' => 'idnumchar', 'vars' => '', 'line' => 359 }, 'Parse::RecDescent::Rule' ), 'garbage' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '%[^0-9]*', 'hashname' => '__PATTERN1__', 'description' => '/%[^0-9]*/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 43, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 44 }, 'Parse::RecDescent::Production' ) ], 'name' => 'garbage', 'vars' => '', 'line' => 41 }, 'Parse::RecDescent::Rule' ), 'paramvalue' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '(', 'hashname' => '__STRING1__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 144 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '[^)]*', 'hashname' => '__PATTERN1__', 'description' => 'm#[^)]*#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 144, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => ')', 'hashname' => '__STRING2__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 144 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '<', 'hashname' => '__STRING1__', 'description' => '\'<\'', 'lookahead' => 0, 'line' => 145 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\w*', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\w*#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 145, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '>', 'hashname' => '__STRING2__', 'description' => '\'>\'', 'lookahead' => 0, 'line' => 145 }, 'Parse::RecDescent::Literal' ) ], 'line' => 145 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '\\w+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\w+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 146, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ) ], 'line' => 146 }, 'Parse::RecDescent::Production' ) ], 'name' => 'paramvalue', 'vars' => '', 'line' => 144 }, 'Parse::RecDescent::Rule' ), 'filter' => bless( { 'impcount' => 0, 'calls' => [ 'filtertype' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/Filter', 'hashname' => '__STRING1__', 'description' => '\'/Filter\'', 'lookahead' => 0, 'line' => 129 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'filtertype', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 129 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'filter', 'vars' => '', 'line' => 129 }, 'Parse::RecDescent::Rule' ), 'paramname' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/', 'hashname' => '__STRING1__', 'description' => '\'/\'', 'lookahead' => 0, 'line' => 142 }, 'Parse::RecDescent::Literal' ), bless( { 'pattern' => '\\w+', 'hashname' => '__PATTERN1__', 'description' => 'm#\\\\w+#', 'lookahead' => 0, 'rdelim' => '#', 'line' => 142, 'mod' => '', 'ldelim' => '#' }, 'Parse::RecDescent::Token' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'paramname', 'vars' => '', 'line' => 142 }, 'Parse::RecDescent::Rule' ), 'fieldlist' => bless( { 'impcount' => 0, 'calls' => [ 'field', 'fieldlist', 'fieldname', 'kids' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'field', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 152 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 152 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 153, 'code' => '{ push ( @{$return}, $item{field}, @{$item{fieldlist}} ); }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 159 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 159 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'kids', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 159 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 159 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 159 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 160, 'code' => '{ my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{$item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); }' }, 'Parse::RecDescent::Action' ) ], 'line' => 158 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '<<', 'hashname' => '__STRING1__', 'description' => '\'<<\'', 'lookahead' => 0, 'line' => 170 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'kids', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 170 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'fieldname', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 170 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => '>>', 'hashname' => '__STRING2__', 'description' => '\'>>\'', 'lookahead' => 0, 'line' => 170 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'fieldlist', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 170 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 171, 'code' => '{ my $fieldlist; foreach my $ref ( @{$item{kids}} ) { my %kids = %{$ref}; foreach my $key (keys %kids) { push (@{$fieldlist},{ $item{fieldname}.".".$key=>$kids{$key}}); } } push ( @{$return}, @{$fieldlist}, @{$item{fieldlist}} ); }' }, 'Parse::RecDescent::Action' ) ], 'line' => 170 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 181, 'code' => '{ $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 181 }, 'Parse::RecDescent::Production' ) ], 'name' => 'fieldlist', 'vars' => '', 'line' => 152 }, 'Parse::RecDescent::Rule' ), 'filename' => bless( { 'impcount' => 0, 'calls' => [ 'name' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '(', 'hashname' => '__STRING1__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 105 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'name', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 105 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ')', 'hashname' => '__STRING2__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 105 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 106, 'code' => '{ $return = $item[2]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'filename', 'vars' => '', 'line' => 105 }, 'Parse::RecDescent::Rule' ), 'filtertype' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [ bless( { 'pattern' => '/FlateDecode', 'hashname' => '__STRING1__', 'description' => '\'/FlateDecode\'', 'lookahead' => 0, 'line' => 131 }, 'Parse::RecDescent::Literal' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'filtertype', 'vars' => '', 'line' => 131 }, 'Parse::RecDescent::Rule' ), 'streamcont' => bless( { 'impcount' => 0, 'calls' => [ 'streamline', 'streamcont' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'streamline', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 117 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'streamcont', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 117 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 118, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 0, 'items' => [], 'line' => 121 }, 'Parse::RecDescent::Production' ) ], 'name' => 'streamcont', 'vars' => '', 'line' => 117 }, 'Parse::RecDescent::Rule' ), 'stemstream' => bless( { 'impcount' => 0, 'calls' => [ 'streamcont' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'streamcont', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 98 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => 'endstream', 'hashname' => '__STRING1__', 'description' => '\'endstream\'', 'lookahead' => 0, 'line' => 98 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 99, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ) ], 'name' => 'stemstream', 'vars' => '', 'line' => 98 }, 'Parse::RecDescent::Rule' ), 'valarray' => bless( { 'impcount' => 0, 'calls' => [ 'value', 'valarray' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 2, 'dircount' => 2, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '(', 'hashname' => '__STRING1__', 'description' => '\'(\'', 'lookahead' => 0, 'line' => 232 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__DIRECTIVE1__', 'name' => '', 'lookahead' => 0, 'line' => 232, 'code' => 'my $oldskip = $skip; $skip=""; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'subrule' => 'value', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 232 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '', 'lookahead' => 0, 'line' => 232, 'code' => 'my $oldskip = $skip; $skip=$item[2]; $oldskip' }, 'Parse::RecDescent::Directive' ), bless( { 'pattern' => ')', 'hashname' => '__STRING2__', 'description' => '\')\'', 'lookahead' => 0, 'line' => 232 }, 'Parse::RecDescent::Literal' ), bless( { 'subrule' => 'valarray', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 232 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 233, 'code' => '{ push @{$return}, $item{value}, @{$item{valarray}}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 236, 'code' => '{ $return = []; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 236 }, 'Parse::RecDescent::Production' ) ], 'name' => 'valarray', 'vars' => '', 'line' => 232 }, 'Parse::RecDescent::Rule' ), 'idnumchars' => bless( { 'impcount' => 0, 'calls' => [ 'idnumchar', 'idnumchars' ], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'subrule' => 'idnumchar', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 368 }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'idnumchars', 'matchrule' => 0, 'implicit' => undef, 'argcode' => undef, 'lookahead' => 0, 'line' => 368 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 369, 'code' => '{ $return = $item{idnumchar}.$item{idnumchars}; }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 372, 'code' => '{ $return = ""; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 372 }, 'Parse::RecDescent::Production' ) ], 'name' => 'idnumchars', 'vars' => '', 'line' => 368 }, 'Parse::RecDescent::Rule' ), 'valuechar' => bless( { 'impcount' => 0, 'calls' => [], 'changed' => 0, 'opcount' => 0, 'prods' => [ bless( { 'number' => '0', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\\'', 'lookahead' => 0, 'line' => 252 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 253, 'code' => '{ $return = chr(92); }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef }, 'Parse::RecDescent::Production' ), bless( { 'number' => '1', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\#', 'hashname' => '__STRING1__', 'description' => '\'\\\\#\'', 'lookahead' => 0, 'line' => 256 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 257, 'code' => '{ $return = "#"; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 256 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '2', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\r', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\r\'', 'lookahead' => 0, 'line' => 260 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 261, 'code' => '{ $return = \'\\r\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 260 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '3', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\t', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\t\'', 'lookahead' => 0, 'line' => 264 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 265, 'code' => '{ $return = \'\\t\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 264 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '4', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\n', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\n\'', 'lookahead' => 0, 'line' => 268 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 269, 'code' => '{ $return = \'\\n\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 268 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '5', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\r', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\r\'', 'lookahead' => 0, 'line' => 272 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 273, 'code' => '{ $return = \'\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 272 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '6', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\n', 'hashname' => '__STRING1__', 'description' => '\'\\\\\\\\n\'', 'lookahead' => 0, 'line' => 276 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 277, 'code' => '{ $return = \'\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 276 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '7', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\r', 'hashname' => '__STRING1__', 'description' => '\'\\\\r\'', 'lookahead' => 0, 'line' => 280 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 281, 'code' => '{ $return = chr(13); }' }, 'Parse::RecDescent::Action' ) ], 'line' => 280 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '8', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\n', 'hashname' => '__STRING1__', 'description' => '\'\\\\n\'', 'lookahead' => 0, 'line' => 284 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 285, 'code' => '{ $return = chr(10); }' }, 'Parse::RecDescent::Action' ) ], 'line' => 284 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '9', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\r', 'hashname' => '__STRING1__', 'description' => '\'\\\\r\'', 'lookahead' => 0, 'line' => 288 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 289, 'code' => '{ $return = \'\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 288 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '10', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\t', 'hashname' => '__STRING1__', 'description' => '\'\\\\t\'', 'lookahead' => 0, 'line' => 292 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 293, 'code' => '{ $return = "\\t"; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 292 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '11', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => ' ', 'hashname' => '__STRING1__', 'description' => '\' \'', 'lookahead' => 0, 'line' => 296 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 297, 'code' => '{ $return = chr(10); }' }, 'Parse::RecDescent::Action' ) ], 'line' => 296 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '12', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\ ', 'hashname' => '__STRING1__', 'description' => '\'\\\\ \'', 'lookahead' => 0, 'line' => 300 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 301, 'code' => '{ $return = \'\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 300 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '13', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\n', 'hashname' => '__PATTERN1__', 'description' => '/\\\\n/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 304, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 305, 'code' => '{ $return = \'\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 304 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '14', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 2, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\\\', 'hashname' => '__PATTERN1__', 'description' => '/\\\\\\\\/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 308, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'pattern' => '\\n', 'hashname' => '__PATTERN2__', 'description' => '/\\\\n/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 308, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 309, 'code' => '{ $return = \'\' }' }, 'Parse::RecDescent::Action' ) ], 'line' => 308 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '15', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\(', 'hashname' => '__STRING1__', 'description' => '\'\\\\(\'', 'lookahead' => 0, 'line' => 312 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 313, 'code' => '{ $return = \'(\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 312 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '16', 'strcount' => 1, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 0, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '\\)', 'hashname' => '__STRING1__', 'description' => '\'\\\\)\'', 'lookahead' => 0, 'line' => 316 }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 317, 'code' => '{ $return = \')\'; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 316 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '17', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '[\\r\\t\\n\\\\ ]', 'hashname' => '__PATTERN1__', 'description' => '/[\\\\r\\\\t\\\\n\\\\\\\\ ]/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 330, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 331, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 329 }, 'Parse::RecDescent::Production' ), bless( { 'number' => '18', 'strcount' => 0, 'dircount' => 0, 'uncommit' => undef, 'error' => undef, 'patcount' => 1, 'actcount' => 1, 'items' => [ bless( { 'pattern' => '([^()\\r\\t\\n\\\\ ]+)', 'hashname' => '__PATTERN1__', 'description' => '/([^()\\\\r\\\\t\\\\n\\\\\\\\ ]+)/', 'lookahead' => 0, 'rdelim' => '/', 'line' => 334, 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 335, 'code' => '{ $return = $item[1]; }' }, 'Parse::RecDescent::Action' ) ], 'line' => 334 }, 'Parse::RecDescent::Production' ) ], 'name' => 'valuechar', 'vars' => '', 'line' => 251 }, 'Parse::RecDescent::Rule' ) } }, 'Parse::RecDescent' ); }PDF-FDF-Simple-0.21/lib/PDF/FDF/Simple.pod0000444000175000017500000001346011200627461015413 0ustar ss5ss5=pod =head1 NAME PDF::FDF::Simple - Read and write (Acrobat) FDF files. =head1 SYNOPSIS my $fdf = new PDF::FDF::Simple ({ filename => '/tmp/test.fdf' }); $fdf->skip_undefined_fields (1); $fdf->content ({ 'name' => 'Fred Madison', 'organisation' => 'Luna Lounge Ltd.', 'dotted.field.name' => 'Hello world.', 'language.radio.value' => 'French', 'my.checkbox.value' => 'On', # 'On' / 'Off' }); $fdf->save or print $fdf->errmsg; $fdf->save ('otherfile.fdf'); my $fdfcontent = $fdf->load; $fdfcontent = $fdf->load ($fdfstring); print $fdf->{'organisation'}; print $fdf->{'dotted.field.name'}; print $fdf->as_string; print "Corresponding PDF (attribute /F): ".$fdf->attribute_file."\n"; print "IDs (attribute /ID): "; print $_ foreach @{$fdf->attribute_id}; print "\n"; =head1 DESCRIPTION Helps creating and extracting the content of FDF files. It is meant to be a simple replacement for the Adobe FdfToolkit. Therefore some of it's behavior, especially handling of diverse whitespace/newline artefacts is orientated on FdfToolkit's handling. After the extraction process the content is available within a hash reference. For creating FDF files it currently only supports setting text values. Anyway, this should be enough to create FDF files for text fields, text areas, checkboxes and radio buttons. PDF::FDF::Simple uses Parse::RecDescent and understands both, the "Kids" notation and the "dotted" notation for field names. Saving will always use the "dotted"- notation. =head2 Text fields / Text areas Text fields and text areas are simply filled with the given text. =head2 Radio button groups In a radio button group the entry that matches exactly the field value is selected. The entries and their values are defined in the PDF where the FDF is loaded into. =head2 Checkboxes In the PDF document into which the FDF is loaded a checkbox field is set to checked/unchecked with field values 'On' or 'Off', respectively. =head1 API Methods =head2 new Constructor. Takes a hash reference for arguments. =head2 skip_undefined_fields Option, default is 0. If set to a true value (e.g., 1), then fields whose value is undefined are not contained in generated fdf. By default undefined field values are converted to empty string (''). =head2 filename Get/set target filename (string). =head2 content Get/set content of fields (hashref). =head2 attribute_file Get/set the corresponding PDF filename of the form. This method corresponds to the /F attribute in FDF content. =head2 attribute_ufile Get/set the corresponding PDF filename of the form. This method corresponds to the /UF attribute in FDF content. It is not perfectly clear whether the /UF means the same as /F. It was used when Acrobat 8 appeared, but it seems to be not documented. I named it just "ufile" due to lack of better knowledge. =head2 attribute_id Get/set the list (array reference) of form IDs. This method corresponds to the /ID attribute in FDF content. =head2 load Load an existing FDF file named via C and stores the information in a hashref (see also C). An optional parameter can be given that contains FDF content. In that case it is not read from file C. =head2 save (optional_filename) Save the FDF content into a file, using either the directly given C parameter or (if C is not given) the filename that was set via C. =head2 as_string Returns the FDF content as scalar string, so you can work with it without the need to save into file. =head2 errmsg Get/set error message. Will be set internally when an error occured. Just read it, setting it is useless. =head1 Internal Methods Those methods are used internally and can be overwritten in derived classes. You shouldn't use them directly. =head2 _pre_init Overwritable method for setting default values for initialization before overtaking constructor params. =head2 _post_init Overwritable method for setting default values for initialization after overtaking constructor params and building Parse::RecDescent grammar. =head2 init Takes over the values from the given constructor hash. =head2 _fdf_header Returns a string which will be written before all field data. =head2 _fdf_footer Returns a string which will be written after all field data. =head2 _quote Does all quoting for field value strings. =head2 _fdf_field_formatstr Returns a format string for use in sprintf that creates key/value pairs. =head2 _map_parser_output Puts the Parse::RecDescent output from a nested hash into a simple hash and returns its reference. =head1 PREREQUISITES =over 4 =item * Parse::RecDescent (VERSION 1.94) =item * Class::Accessor =back =head1 A COMMENT ABOUT PARSING For whose who are interested, the grammar doesn't implement a fully PDF or FDF specification (FDF is just a subset of PDF). The approach is rather pragmatic. It only searches for /Fields and tries to ignore the surrounding rest. This "works for me" (TM) but it doesn't guarantee that all possible FDFs can be parsed. If you have a strange FDF that cannot be parsed please send it to me with the expected content description or extend the parser by yourself and send me a patch. =head1 AUTHOR =over 4 =item * Steffen Schwigon , =item * Tim Schreier =back =head1 REPOSITORY The public repository is hosted on github: git clone git://github.com/renormalist/pdf-fdf-simple.git =head1 LICENSE Copyright (c) 2004 .. 2008 Steffen Schwigon. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 FEEDBACK I am interested in comments/enhancements/bugreports. Drop me a mail if you use this module. =cut PDF-FDF-Simple-0.21/t/0000755000175000017500000000000011200627461012141 5ustar ss5ss5PDF-FDF-Simple-0.21/t/fdfparser_standard.t0000444000175000017500000000420111200627461016155 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use Data::Dumper; use strict; use warnings; plan tests => 19; ################## tests ################## my $testfile = './t/fdfparser_standard.fdf'; my $parser = new PDF::FDF::Simple ({ filename => $testfile, }); ok ($parser, "setting up"); my $fdf_content_ptr = $parser->load; ok (($fdf_content_ptr->{'root.data.plzort'} eq '01069'), "parsing file (digits)"); ok (($fdf_content_ptr->{'root.parentA.kidA_A'} eq 'valueA_A'), "parsing file (parent / child)"); ok (($fdf_content_ptr->{'root.data.ort'} eq 'Dresden'), "parsing file (characters)"); ok (($fdf_content_ptr->{'root.checkbox1'} eq 'OFF'), "parsing file (special values)"); ok (($fdf_content_ptr->{'root.specials.parenthesize'} eq ' (parenthesize) '), "parsing file (parenthesize)"); ok (($fdf_content_ptr->{'root.specials.hexa'} eq 'zuf#E4llig'), "parsing file (hexa, no hex decode applies)"); ok (($fdf_content_ptr->{'root.specials.hexb'} eq 'zufällig'), "parsing file (hexb, hex decode to literal names)"); ok (($fdf_content_ptr->{'root.parentB.kidB_B'} eq 'valueB_B'), "parsing file (parent / child)"); ok (($fdf_content_ptr->{'root.parentB.kidB_A'} eq 'valueB_A'), "parsing file (parent / child)"); ok (($fdf_content_ptr->{'root.specials.backspace'} eq ' \ '), "parsing file (backspaces)"); ok (($fdf_content_ptr->{'root.data.name'} eq 'some company Inc'), "parsing file (characters)"); ok (($fdf_content_ptr->{'root.specials.rhomb'} eq '#'), "parsing file (rhomb)"); ok (($fdf_content_ptr->{'root.data.'} eq ''), "parsing file (empty)"); ok (($fdf_content_ptr->{'root.specials.slash'} eq ' / '), "parsing file (slash)"); ok (($fdf_content_ptr->{'root.checkbox2'} eq 'ON'), "parsing file (special values)"); ok (($fdf_content_ptr->{'root.specials.spaces'} eq ' 2x space at start and end '), "parsing file (spaces)"); ok (($fdf_content_ptr->{'root.data.email'} eq 'info@doo.de'), "parsing file (special characters)"); my $keys = keys %{$fdf_content_ptr}; ok ($keys == 18, "number of key-value pairs"); PDF-FDF-Simple-0.21/t/TEST-1234.fdf0000444000175000017500000000247011200627461013771 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj <><><><><><><>]/T(javalogo)>><><><><><><><><>]/T(recycled)>><><><>]/T(spine)>><><><><><><><>]/T(spinesub)>><><><><><><><><><><><><><><><>]/ID[<6D8B89AFD4447F4C31D5A7CC958E2132>]/UF(file.pdf)>>/Type/Catalog>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/no_header.t0000444000175000017500000000146511200627461014256 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 4; ################## tests ################## my $fdf_fname = 't/hunde_no_header.fdf'; my $fdf = new PDF::FDF::Simple ({ 'filename' => $fdf_fname, }); my $erg = $fdf->load; ok (($erg->{'Zu- und Vorname'} eq 'Steffen Schwigon' and $erg->{'PLZ'} eq '01159' and $erg->{'Anschrift Behörde'} eq "Hundeanstalt\rGroßraum DD"), "parse"); ok (($fdf->attribute_file eq 'hundev1.pdf'), "attribute_file"); ok ((grep '', @{$fdf->attribute_id}), "attribute_id 1"); ok ((grep '<54034b0e4698f348e8b2a91d70e5736b>', @{$fdf->attribute_id}), "attribute_id 2"); PDF-FDF-Simple-0.21/t/acro8example.fdf0000444000175000017500000000317711200627461015220 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj <><><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]>><><>]/ID[<144F6E41F6052003A794A6A1376FD1A5>]/UF(/atlas/home/wef/IssuesMapping/Surveys/ME002.pdf)/F(/atlas/home/wef/IssuesMapping/Surveys/ME002.pdf)>>>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/attribs.t0000444000175000017500000000167111200627461014001 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use File::Temp qw( tempfile ); use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 5; ################## tests ################## my $fdf_fname = 't/hundev1.fdf'; my $fdf = new PDF::FDF::Simple ({ 'filename' => $fdf_fname, }); my $erg = $fdf->load; ok (($erg->{'Zu- und Vorname'} eq 'Steffen Schwigon' and $erg->{'PLZ'} eq '01159' and $erg->{'Anschrift Behörde'} eq "Hundeanstalt\rGroßraum DD"), "parse"); is ($fdf->attribute_file, 'hundev1.pdf', "attribute_file"); is ($fdf->attribute_ufile, '/atlas/home/wef/IssuesMapping/Surveys/ME002.pdf', "attribute_ufile"); ok ((grep '', @{$fdf->attribute_id}), "attribute_id 1"); ok ((grep '<54034b0e4698f348e8b2a91d70e5736b>', @{$fdf->attribute_id}), "attribute_id 2"); PDF-FDF-Simple-0.21/t/acro8.t0000444000175000017500000000162511200627461013344 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Parse::RecDescent; use strict; use warnings; plan tests => 5; ################## tests ################## my $fdf_fname = 't/acro8example.fdf'; my $fdf = new PDF::FDF::Simple ({ 'filename' => $fdf_fname, }); my $erg = $fdf->load; ok (( $erg->{'Q1.a'} eq '2' and $erg->{'Q1.b'} eq '3' and $erg->{'Q1.c'} eq '2' and $erg->{'Q1.d'} eq 'Yes' ), "parse"); ok (($fdf->attribute_file eq '/atlas/home/wef/IssuesMapping/Surveys/ME002.pdf'), "attribute_file"); ok (($fdf->attribute_ufile eq '/atlas/home/wef/IssuesMapping/Surveys/ME002.pdf'), "attribute_ufile"); ok ((grep '<144F6E41F6052003A794A6A1376FD1A5>', @{$fdf->attribute_id}), "attribute_id 1"); ok ((grep '', @{$fdf->attribute_id}), "attribute_id 2"); PDF-FDF-Simple-0.21/t/undef_handling.t0000444000175000017500000000263211200627461015274 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use File::Temp qw( tempfile ); use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 2; ################## tests ################## my ($fdf_fh, $fdf_fname) = tempfile ( "/tmp/XXXXXX", SUFFIX => '.fdf', UNLINK => 1 ); my $fdf = new PDF::FDF::Simple ({ filename => $fdf_fname, }); $fdf->content ({ 'name' => 'Blubberman', 'organisation' => 'Misc Stuff Ltd.', 'dotted.field.name' => 'Hello world.', 'language.radio.value' => 'French', 'my.checkbox.value' => 'On', 'empty_stuff' => undef, }); # save undefined fields $fdf->skip_undefined_fields (0); # is default $fdf->save; my $fdf2 = new PDF::FDF::Simple ({ filename => $fdf_fname }); my $erg = $fdf2->load; ok ((defined $erg->{empty_stuff} and $erg->{empty_stuff} eq ''), "undef becomes empty"); # don't save undefined fields $fdf->skip_undefined_fields (1); $fdf->save; $fdf2 = new PDF::FDF::Simple ({ filename => $fdf_fname }); $erg = $fdf2->load; ok ((not defined $erg->{empty_stuff}), "skip undefined values"); PDF-FDF-Simple-0.21/t/noisyfileattr.t0000444000175000017500000000155311200627461015224 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 4; ################## tests ################## # This real world file contains /F with windowslike filename # (spaces and parens) my $fdf_fname = 't/noisyfileattr.fdf'; my $fdf = new PDF::FDF::Simple ({ filename => $fdf_fname }); my $erg = $fdf->load; is ( $erg->{'4_Ec_3_equal.Application'}, 'Yes', "parse" ); is ( $fdf->attribute_file, '/C/Documents and Settings/ajanvier/Local Settings/Temporary Internet Files/OLKCAD/tnt_employee_survey_English_rev3 (5).pdf', "attribute_file" ); ok ( (grep '<7D22A3A5BB8F4D3895B909A47FFA6762>', @{$fdf->attribute_id}), "attribute_id 1" ); ok ( (grep '<601C7694037F98489E433900ED652316>', @{$fdf->attribute_id}), "attribute_id 2" ); PDF-FDF-Simple-0.21/t/simple.t0000444000175000017500000000226711200627461013624 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use File::Temp qw( tempfile ); use Data::Dumper; use Parse::RecDescent; use strict; use warnings; my $test_count = 2; eval "use Test::NoWarnings"; $test_count++ unless $@; plan tests => $test_count; ################## tests ################## my ($fdf_fh, $fdf_fname) = tempfile ( "/tmp/XXXXXX", SUFFIX => '.fdf', UNLINK => 1 ); my $fdf = new PDF::FDF::Simple ({ 'filename' => $fdf_fname }); $fdf->content ({ 'name' => 'Blubberman', 'organisation' => 'Misc Stuff Ltd.', 'dotted.field.name' => 'Hello world.', 'language.radio.value' => 'French', 'my.checkbox.value' => 'On' }); ok (($fdf->save), 'save'); my $fdf2 = new PDF::FDF::Simple ({ 'filename' => './t/simple.fdf' }); my $erg = $fdf2->load; ok (($erg->{'oeavoba.angebotseroeffnung.anschrift'} eq 'Ländliche Neuordnung in Sachsen TG Schönwölkau I, Lüptitzer Str. 39, 04808 Wurzen'), "load"); PDF-FDF-Simple-0.21/t/with_xrefs_and_valuearrays.fdf0000444000175000017500000001371411200627461020250 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>]/ID [(P\306p\363%\257\215@\201\344\231\2142\340M\260) (\320?\027\016B\325E\226\251\007G\n\347\324\374\237)]/UF (file:///Users/lcsuser/Desktop/Test/LD2Q.pdf)>>>> endobj xref 0 2 0000000000 65535 f 0000000016 00000 n trailer <> startxref 6190 %%EOF PDF-FDF-Simple-0.21/t/with_xrefs_and_valuearrays.t0000444000175000017500000000146511200627461017754 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 4; ################## tests ################## # Yet another real world file with xref entries my $fdf_fname = 't/with_xrefs_and_valuearrays.fdf'; my $fdf = new PDF::FDF::Simple ({ filename => $fdf_fname }); my $res = $fdf->load; is ( $res->{'AgenciesContacted'}, 'ACME - Some Corporation', "parse" ); is ( $fdf->attribute_file, 'file:///Users/lcsuser/Desktop/Test/LD2Q.pdf', "attribute_file" ); ok ( (grep '(P\306p\363%\257\215@\201\344\231\2142\340M\260)', @{$fdf->attribute_id}), "attribute_id 1" ); ok ( (grep '(\320?\027\016B\325E\226\251\007G\n\347\324\374\237)', @{$fdf->attribute_id}), "attribute_id 2" ); PDF-FDF-Simple-0.21/t/fdfparser_round.t0000444000175000017500000000342511200627461015513 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use Data::Dumper; use strict; use warnings; plan tests => 10; ################## tests ################## my $readonly_testfile = './t/fdfparser_standard.fdf'; my $writeto_testfile = './t/fdfparser_output.fdf'; #first parser reads and parses a given fdf file #and stores a newly created fdf file with Dot-notation my $parser = new PDF::FDF::Simple ({ filename => $readonly_testfile, }); ok ($parser, "setting up 1"); my $fdf_content_ptr = $parser->load; ok ((scalar keys %$fdf_content_ptr == 18), "parsing 1"); $parser->filename ($writeto_testfile); my $successfull_save = $parser->save; ok ($successfull_save, "saving 1"); #second parser parses the created fdf file my $parser2 = new PDF::FDF::Simple ({ filename => $writeto_testfile, }); ok ($parser2, "setting up 2"); my $new_fdf_content = $parser2->load; ok ((scalar keys %$new_fdf_content), "parsing 1"); #print STDERR "1: ".(scalar keys %$new_fdf_content)."\n"; #print STDERR "2: ".(scalar keys %$fdf_content_ptr)."\n"; ok ((scalar keys %$new_fdf_content == scalar keys %$fdf_content_ptr), "compare size"); my $compare_success = 1; foreach my $key (keys %$new_fdf_content) { if ( $new_fdf_content->{$key} ne $fdf_content_ptr->{$key} ) { $compare_success = 0; print "error\n"; last; } } ok ($compare_success, "compare"); is( $parser->attribute_file, $parser2->attribute_file, "compare file" ); is( $parser->attribute_ufile, $parser2->attribute_ufile, "compare ufile" ); is_deeply( [ sort @{$parser->attribute_id} ], [ sort @{$parser2->attribute_id} ], "compare ids" ); PDF-FDF-Simple-0.21/t/fdfparser_round2.t0000444000175000017500000000314711200627461015576 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use Data::Dumper; use strict; use warnings; plan tests => 9; ############################################################ # # This test script is similar to fdfparser_round.t, but uses # as_string() and load($string) instead of files. # ############################################################ ################## tests ################## my $readonly_testfile = './t/fdfparser_standard.fdf'; #first parser reads and parses a given fdf file my $parser = new PDF::FDF::Simple ({ filename => $readonly_testfile, }); ok ($parser, "setting up 1"); my $fdf_content_ptr = $parser->load; ok ((scalar keys %$fdf_content_ptr == 18), "parsing 1"); my $fdf_string = $parser->as_string; #second parser parses the fdf content my $parser2 = new PDF::FDF::Simple(); ok ($parser2, "setting up 2"); my $new_fdf_content = $parser2->load ($fdf_string); ok ((scalar keys %$new_fdf_content), "parsing 1"); ok ((scalar keys %$new_fdf_content == scalar keys %$fdf_content_ptr), "compare size"); my $compare_success = 1; foreach my $key (keys %$new_fdf_content) { if ( $new_fdf_content->{$key} ne $fdf_content_ptr->{$key} ) { $compare_success = 0; print "error\n"; last; } } ok ($compare_success, "compare"); is( $parser->attribute_file, $parser2->attribute_file, "compare file" ); is( $parser->attribute_ufile, $parser2->attribute_ufile, "compare ufile" ); is_deeply( [ sort @{$parser->attribute_id} ], [ sort @{$parser2->attribute_id} ], "compare ids" ); PDF-FDF-Simple-0.21/t/noisyfileattr.fdf0000444000175000017500000000052211200627461015513 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj<>]>>]/ID[<7D22A3A5BB8F4D3895B909A47FFA6762><601C7694037F98489E433900ED652316>]/F(/C/Documents and Settings/ajanvier/Local Settings/Temporary Internet Files/OLKCAD/tnt_employee_survey_English_rev3 \(5\).pdf)>>>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/distribution.t0000444000175000017500000000046511200627461015050 0ustar ss5ss5#! /usr/bin/perl use strict; use Test::More; if ($ENV{DO_DIST_CHECK}) { eval "use Test::Distribution"; plan skip_all => "Test::Distribution required for checking distribution" if $@; import Test::Distribution; } else { plan skip_all => 'Test::Distribution skipped unless env $DO_DIST_CHECK set.'; } PDF-FDF-Simple-0.21/t/strange_id_values.t0000444000175000017500000000144211200627461016023 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 4; ################## tests ################## # Yet another real world file with xref entries my $fdf_fname = 't/strange_id_values.fdf'; my $fdf = new PDF::FDF::Simple ({ filename => $fdf_fname }); my $res = $fdf->load; is ( $res->{'datClientNameDisplay'}, 'Foobar Group', "parse" ); is ( $fdf->attribute_file, '/C/Documents and Settings/abc/My Documents/Adobe1.pdf', "attribute_file" ); ok ( (grep '(P\306p\363%\257\215@\201\344\231\2142\340M\260)', @{$fdf->attribute_id}), "attribute_id 1" ); ok ( (grep '(S\366{?X\2349H\206h\334\276s\244\016\()', @{$fdf->attribute_id}), "attribute_id 2" ); PDF-FDF-Simple-0.21/t/accessors.t0000444000175000017500000002030411200627461014310 0ustar ss5ss5### -*- mode: perl; -*- use strict; use warnings; use Test::More; use PDF::FDF::Simple; plan tests => 76; ################## tests ################### # Test accessors before and after migration # from Class::MethodMaker to Class::Accessor ############################################ # 'skip_undefined_fields', # 'filename', # 'content', # 'errmsg', # 'parser', # 'attribute_file', # 'attribute_ufile', # 'attribute_id', my $fdf = new PDF::FDF::Simple; # direct set/get my $value; $value = 'lk436535lk24'; $fdf->skip_undefined_fields( $value ); is( $fdf->skip_undefined_fields, $value, 'skip_undefined_fields - get'); is( $fdf->{skip_undefined_fields}, $value, 'skip_undefined_fields - hash elem'); $fdf->skip_undefined_fields( 0 ); is( $fdf->skip_undefined_fields, 0, 'skip_undefined_fields - get'); is( $fdf->{skip_undefined_fields}, 0, 'skip_undefined_fields - hash elem'); $fdf->skip_undefined_fields( 1 ); is( $fdf->skip_undefined_fields, 1, 'skip_undefined_fields - get'); is( $fdf->{skip_undefined_fields}, 1, 'skip_undefined_fields - hash elem'); $value = 'a43535hjg12321'; $fdf->filename( $value ); is( $fdf->filename, $value, 'filename - get'); is( $fdf->{filename}, $value, 'filename - hash elem'); $value = 'ze324j45kj87546324j'; $fdf->content( $value ); is( $fdf->content, $value, 'content - get'); is( $fdf->{content}, $value, 'content - hash elem'); my $values = { '0' => '0', 'ze324j45kj87546324j' => 'hjjtzjtzjtr1231', 'lkjhfew34lkjwelkjrh' => 'wqldkqwe2121321', 'ohgp3242pj32r32rm23' => '21edewfewfewfew', }; $fdf->content( $values ); is_deeply( $fdf->content, $values, 'content - get'); is_deeply( $fdf->{content}, $values, 'content - hash elem'); $value = 'asd324lk23j42'; $fdf->errmsg( $value ); is( $fdf->errmsg, $value, 'errmsg - get'); is( $fdf->{errmsg}, $value, 'errmsg - hash elem'); $value = 'l4kzttrz345lkj324'; $fdf->parser( $value ); is( $fdf->parser, $value, 'parser - get'); is( $fdf->{parser}, $value, 'parser - hash elem'); my $obj = new PDF::FDF::Simple(); $fdf->parser( $obj ); is_deeply( $fdf->parser, $obj, 'parser - get'); is_deeply( $fdf->{parser}, $obj, 'parser - hash elem'); $value = 'g827f8j0q8xynm8'; $fdf->attribute_file( $value ); is( $fdf->attribute_file, $value, 'attribute_file - get'); is( $fdf->{attribute_file}, $value, 'attribute_file - hash elem'); $value = 'lpqw3pl23mn632422'; $fdf->attribute_ufile( $value ); is( $fdf->attribute_ufile, $value, 'attribute_ufile - get'); is( $fdf->{attribute_ufile}, $value, 'attribute_ufile - hash elem'); $value = 'aqlp43mnyx6ekjhwqd2'; $fdf->attribute_id( $value ); is( $fdf->attribute_id, $value, 'attribute_id - get'); is( $fdf->{attribute_id}, $value, 'attribute_id - hash elem'); # at construction my %initvalues = ( 'skip_undefined_fields' => 'gregref2134', 'filename' => 'khdsfsdfs764eq', 'content' => 'qwnmeqwe1112wbd', 'errmsg' => 'nmb1231mnb23mnb', 'parser' => 'qyoijsd2131idop', 'attribute_file' => 'po45po1p32o1', 'attribute_ufile' => 'qewqdwqmdnwqdq12', 'attribute_id' => 'qwqmnbyo211', ); # new with hashref $fdf = new PDF::FDF::Simple(\%initvalues); is( $fdf->skip_undefined_fields, $initvalues{skip_undefined_fields}, 'skip_undefined_fields - constructor 1'); is( $fdf->content, $initvalues{content}, 'content - constructor 1'); is( $fdf->errmsg, $initvalues{errmsg}, 'errmsg - constructor 1'); is( $fdf->attribute_file, $initvalues{attribute_file}, 'attribute_file - constructor 1'); is( $fdf->attribute_ufile, $initvalues{attribute_ufile}, 'attribute_ufile - constructor 1'); is( $fdf->attribute_id, $initvalues{attribute_id}, 'attribute_id - constructor 1'); # parser is internally a P::RD instance foreach (grep {$_ ne 'parser'} sort keys %initvalues) { is( $fdf->{$_}, $initvalues{$_}, "$_ - constructor hash elem 1"); } my %initvalues2 = ( 'skip_undefined_fields' => 'gregef213r421321', 'filename' => 'kdsfsdfs76h214eq', 'content' => 'qnmewqwe1121321wbd', 'errmsg' => 'mb1231m213nnb23mnb', 'parser' => 'yoiq123sjd213i1dop', 'attribute_file' => 'o13245popp1231o', 'attribute_ufile' => 'ewqdqwmqdnwdqgq12', 'attribute_id' => 'wqmnqybewgtreo211', ); # new with hash $fdf = new PDF::FDF::Simple(%initvalues2); is( $fdf->skip_undefined_fields, $initvalues2{skip_undefined_fields}, 'skip_undefined_fields - constructor 2'); is( $fdf->content, $initvalues2{content}, 'content - constructor 2'); is( $fdf->errmsg, $initvalues2{errmsg}, 'errmsg - constructor 2'); is( $fdf->attribute_file, $initvalues2{attribute_file}, 'attribute_file - constructor 2'); is( $fdf->attribute_ufile, $initvalues2{attribute_ufile}, 'attribute_ufile - constructor 2'); is( $fdf->attribute_id, $initvalues2{attribute_id}, 'attribute_id - constructor 2'); # parser is internally a P::RD instance foreach (grep {$_ ne 'parser'} sort keys %initvalues2) { is( $fdf->{$_}, $initvalues2{$_}, "$_ - constructor hash elem 2"); } # with inheritance package PDF::FDF::Simple::Inherited; use base 'PDF::FDF::Simple'; package main; # new with hashref my %initvalues3 = ( 'skip_undefined_fields' => 'gregef213r421321', 'filename' => 'kdsfsdfs76h214eq', 'content' => 'qnmewqwe1121321wbd', 'errmsg' => 'mb1231m213nnb23mnb', 'parser' => 'yoiq123sjd213i1dop', 'attribute_file' => 'o13245popp1231o', 'attribute_ufile' => 'ewqdqwmqdnwdqgq12', 'attribute_id' => 'wqmnqybewgtreo211', ); $fdf = new PDF::FDF::Simple::Inherited(\%initvalues3); is( $fdf->skip_undefined_fields, $initvalues3{skip_undefined_fields}, 'skip_undefined_fields - constructor inherited 3'); is( $fdf->content, $initvalues3{content}, 'content - constructor inherited 3'); is( $fdf->errmsg, $initvalues3{errmsg}, 'errmsg - constructor inherited 3'); is( $fdf->attribute_file, $initvalues3{attribute_file}, 'attribute_file - constructor inherited 3'); is( $fdf->attribute_ufile, $initvalues3{attribute_ufile}, 'attribute_ufile - constructor inherited 3'); is( $fdf->attribute_id, $initvalues3{attribute_id}, 'attribute_id - constructor inherited 3'); # parser is internally a P::RD instance foreach (grep {$_ ne 'parser'} sort keys %initvalues3) { is( $fdf->{$_}, $initvalues3{$_}, "$_ - constructor hash elem inherited 3"); } # new with hash my %initvalues4 = ( 'skip_undefined_fields' => 'ergregef213r421321', 'filename' => 'kdewsfsdfs76h214eq', 'content' => 'qnmeadswqwe1121321wbd', 'errmsg' => 'mb1231mdfsad213nnb23mnb', 'parser' => 'yoiq123asdsjd213i1dop', 'attribute_file' => 'o13245popp45h1231o', 'attribute_ufile' => 'ewqdqwmqdnwdaw4w2qgq12', 'attribute_id' => 'g43gwqmnqybewgtreo211', ); $fdf = new PDF::FDF::Simple::Inherited(%initvalues4); is( $fdf->skip_undefined_fields, $initvalues4{skip_undefined_fields}, 'skip_undefined_fields - constructor inherited 4'); is( $fdf->content, $initvalues4{content}, 'content - constructor inherited 4'); is( $fdf->errmsg, $initvalues4{errmsg}, 'errmsg - constructor inherited 4'); is( $fdf->attribute_file, $initvalues4{attribute_file}, 'attribute_file - constructor inherited 4'); is( $fdf->attribute_ufile, $initvalues4{attribute_ufile}, 'attribute_ufile - constructor inherited 4'); is( $fdf->attribute_id, $initvalues4{attribute_id}, 'attribute_id - constructor inherited 4'); # parser is internally a P::RD instance foreach (grep {$_ ne 'parser'} sort keys %initvalues4) { is( $fdf->{$_}, $initvalues4{$_}, "$_ - constructor hash elem inherited 4"); } PDF-FDF-Simple-0.21/t/fdfparser_newline.t0000444000175000017500000000213111200627461016016 0ustar ss5ss5### -*- mode: perl; -*- use Test::More; use PDF::FDF::Simple; use Data::Dumper; use strict; use warnings; plan tests => 10; ################## tests ################## my $testfile = './t/fdfparser_newline.fdf'; my $parser = new PDF::FDF::Simple ({ filename => $testfile, }); ok ($parser, "setting up"); my $fdf_content_ptr = $parser->load; ok (($fdf_content_ptr->{'uncomment'} eq ' \ '), "parsing newline"); ok (($fdf_content_ptr->{'slash r'} eq 'x x'), "parsing slash r"); ok (($fdf_content_ptr->{'dM'} eq "x\nx"), "parsing dM"); ok (($fdf_content_ptr->{'newline n'} eq "xx"), "parsing newline n"); ok (($fdf_content_ptr->{'uncomment slash n'} eq 'x\nx'), "parsing uncomment slash n"); ok (($fdf_content_ptr->{'uncomment slash r'} eq 'x\rx'), "parsing uncomment slash r"); ok (($fdf_content_ptr->{'uncomment dM'} eq 'xx'), "parsing uncomment dM"); ok (($fdf_content_ptr->{'slash n'} eq "x\nx"), "parsing slash n"); ok (($fdf_content_ptr->{'uncomment newline n'} eq "xx"), "uncomment newline n"); PDF-FDF-Simple-0.21/t/simple.fdf0000444000175000017500000001323011200627461014110 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj << /FDF << /Fields [ << /T (oeavoba)/Kids [ << /V /nicht#20zul#E4ssig /T (aenderungsvorschlaege)>> << /T (anforderungsfrist)/Kids [ << /V (17.03.03)/T (bis)>> << /V (13:00)/T (uhrzeit)>> ] >> << /T (anforderungsstelle)/Kids [ << /V (Ingenieurb\374ro Klemm & Hensen GmbH)/T (name)>> << /V (Leipzig)/T (ort)>> << /V (04178)/T (plzort)>> << /V (Fabrikstra\337e 18)/T (strasse)>> << /V (4 53 11 88)/T (telefax)>> << /V (4 53 11 -0)/T (telefon)>> << /V (0341)/T (vorwahl)>> ] >> << /T (angebotseroeffnung)/Kids [ << /V (L\344ndliche Neuordnung in Sachsen TG Sch\366nw\366lkau I, L\374ptitzer \ Str. 39, 04808 Wurzen) /T (anschrift)>> << /T (gesamtvergabeverfahren)/Kids [ << /V (28.03.2003)/T (datum)>> << /V (11:00)/T (uhrzeit)>> ] >> ] >> << /T (auftraggeber)/Kids [ << /V (Teilnehmergemeinschaft Sch\366nw\366lkau I)/T (bereich)>> << /V (L\344ndliche Neuordnung in Sachsen)/T (name)>> << /V (Wurzen)/T (ort)>> << /V (04808)/T (plzort)>> << /V (L\374ptitzer Stra\337e 39)/T (strasse)>> << /V (98 81 75)/T (telefax)>> << /V (98 81 10)/T (telefon)>> << /V (03425)/T (vorwahl)>> ] >> << /V (Baustra\337e, Durchlass Stahlprofil, Ein-und Auslaufbefestigg., Landscha\ ftsbau, Beton-u.Stahlbetonarb.) /T (auftragsart)>> << /T (ausfuehrungsfristen)/Kids [ << /T (gesamtmassnahme)/Kids [ << /V (27.06.03)/T (bis)>> << /V (14.04.03)/T (von)>> ] >> ] >> << /T (ausfuehrungsort)/Kids [ << /V (Rohrdurchlass Rohrgraben bei Badrina und Reibitz/Scholitz, N\344he Stadt\ Delitzsch) /T (name)>> ] >> << /T (digitaleinsehung)/Kids [ << /V /nein /T (entscheidung)>> ] >> << /V (Der Bieter hat zum Nachweis seiner Fachkunde, Leistungsf\344higkeit und \ Zuverl\344ssigkeit Angaben zu machen gem\344\337 VOB/A \2478 Nr. 3 Abs. \ 1 Buchstab. a bis f, Der Bieter hat eine Bescheinigung der Berufsgenosse\ nschaft vorzulegen, Bieter, die ihren Sitz nicht in der BRD haben, haben\ eine Bescheinigung des f\374r sie zust\344ndigen Versicherungstr\344ger\ s vorzulegen.) /T (eignungsnachweis)>> << /T (einreichungsfrist)/Kids [ << /V (28.03.2003)/T (datum)>> << /V (11:00)/T (uhrzeit)>> ] >> << /T (einreichungsstelle)/Kids [ << /V (Teilnehmergemeinschaft Sch\366nw\366lkau I)/T (bereich)>> << /V (L\344ndliche Neuordnung in Sachsen)/T (name)>> << /V (Wurzen)/T (ort)>> << /V (4808)/T (plzort)>> << /V (L\374ptitzer Stra\337e 39)/T (strasse)>> << /V (98 81 75)/T (telefax)>> << /V (98 81 10)/T (telefon)>> << /V (03425)/T (vorwahl)>> ] >> << /V (Bieter und deren Bevollm\344chtigte)/T (eroeffnungsanwesende)>> << /V (Rohrdurchlass Rohrgraben:\r\r2.500 m\262 Oberbodenabtrag\r 150 m\263 \ Erdstoffaushub\r1.000 m\262 Planum und Rasenansaat\r 12 m Rohrdu\ rchlass aus Stahlprofil mit 1,57 m Spannweite und 1,33 m H\366he\r \ 5 m\263 Betoneinbau\r 60 m\262 Sohl- und B\366schungsbefestigung\r\ 5 m Pfahlreihe\r2.000 m\262 Baustra\337e \r\rherstellen.) /T (leistungsbeschreibung)>> << /V ()/T (leistungsbeschreibungsfortsetzung)>> << /T (losaufteilung)/Kids [ << /V /Off /T (einreichungsmoeglichkeit)>> << /V /nein /T (entscheidung)>> << /V /Off /T (losvergabeaufteilung)>> ] >> << /T (nachpruefstelle)/Kids [ << /V (Staatliches Amt f\374r l\344ndliche Neuordnung Wurzen)/T (name)>> << /V (Wurzen)/T (ort)>> << /V (04808)/T (plzort)>> << /V (L\374ptitzer Stra\337e 39)/T (strasse)>> << /V (98 81 75)/T (telefax)>> << /V (98 81 10)/T (telefon)>> << /V (03425)/T (vorwahl)>> ] >> << /T (planungsleistungen)/Kids [ << /V ()/T (beschreibung)>> << /V /nein /T (entscheidung)>> ] >> << /V (gesamtschuldnerisch haftend mit bevollm\344chtigtem Vertreter) /T (rechtsform)>> << /V (Vertragserf\374llungsb\374rgschaft in H\366he von 5 v.H., Gew\344hrleist\ ungsb\374rgschaft in H\366he von 3 v.H. der Auftragssumme einschl. der N\ achtr\344ge) /T (sicherheiten)>> << /V ()/T (sonstiges)>> << /V (deutsch)/T (sprache)>> << /T (vergabenummern)/Kids [ << /V (1)/T (gesamtvergabelosnummer)>> << /V (121/00126/000)/T (gesamtvergabenummer)>> ] >> << /V (Bauauftrag - \326ffentliche Ausschreibung)/T (vergabeverfahren)>> << /T (veroeffentlichungsangaben)/Kids [ << /T (ansprechpartner)/Kids [ << /V (Herr Trapp)/T (name)>> << /V (4 53 11 88)/T (telefax)>> << /V (4 53 11 58)/T (telefon)>> << /V (0341)/T (vorwahl)>> ] >> << /T (belegexemplarempfaenger)/Kids [ << /V (Teilnehmergemeinschaft Sch\366nw\366lkau I)/T (bereich)>> << /V (L\344ndliche Neuordnung in Sachsen)/T (name)>> << /V (Wurzen)/T (ort)>> << /V (04808)/T (plzort)>> << /V (L\374ptitzer Stra\337e 39)/T (strasse)>> << /V (98 81 75)/T (telefax)>> << /V (98 81 10)/T (telefon)>> << /V (03425)/T (vorwahl)>> ] >> << /V ()/T (kommentar)>> << /V (121/00126/000)/T (vergabenummer)>> << /T (veroeffentlichungsauftragsstelle)/Kids [ << /V (Gruppe 123)/T (bereich)>> << /V (leipzig@klemm-hensen.de)/T (email)>> << /V (Ingenieurb\374ro Klemm & Hensen GmbH)/T (name)>> << /V (Leipzig)/T (ort)>> << /V (04178)/T (plzort)>> << /V (Fabrikstra\337e 18)/T (strasse)>> << /V (4 53 11 88)/T (telefax)>> << /V (4 53 11 -0)/T (telefon)>> << /V (0341)/T (vorwahl)>> ] >> << /V (14.03.2003)/T (veroeffentlichungsdatum)>> ] >> << /T (vervielfaeltigungskosten)/Kids [ << /T (gesamtkostenbeitrag)/Kids [ << /V (10,00)/T (betrag)>> ] >> << /V (Versendung am 18.03.2003 ab 13:00 Uhr, nur wenn Nachweis \374ber Einzahl\ ung vorliegt. \rVersandkosten 5,00 \240.\rBei Abholung ist Barzahlung m\366\ glich.) /T (zahlungseinzelheiten)>> << /V /Verrechnungsscheck /T (zahlungsweise)>> ] >> << /V (gem\344\337 Verdingungsunterlagen)/T (zahlungsbedingungen)>> << /V (18.04.2003)/T (zuschlagsbindefrist)>> ] >> ] /F (01_Bauauftrag_\326ffentliche_Ausschreibung.eff)/ID [ <92da348c8b97ff536643572b45607b9e><7f837008e0c66d127da21feddf50eda6> ] >> >> endobj trailer << /Root 1 0 R >> %%EOF PDF-FDF-Simple-0.21/t/hundev1.fdf0000444000175000017500000000061011200627461014167 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj<<54034b0e4698f348e8b2a91d70e5736b>]/Fields[<><><><><>]>>>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/missingfdfvalue.fdf0000444000175000017500000000077611200627461016020 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj <>]>> <> <> <>]>> <> <> <> <> <> <> <>]>>]/ID[<7D22A3A5BB8F4D3895B909A47FFA6762><601C7694037F98489E433900ED652316>]/F(../template.pdf)>>>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/pod-coverage.t0000444000175000017500000000057311200627461014704 0ustar ss5ss5#! perl -Tw use Test::More; if ($ENV{DO_DIST_CHECK}) { eval "use Test::Pod::Coverage"; plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@; plan tests => 2; pod_coverage_ok( "PDF::FDF::Simple"); pod_coverage_ok( "PDF::FDF::Simple::Builder"); } else { plan skip_all => 'Test::Pod::Coverage skipped unless env $DO_DIST_CHECK set.'; } PDF-FDF-Simple-0.21/t/hunde_no_header.fdf0000444000175000017500000000050411200627461015726 0ustar ss5ss51 0 obj<<54034b0e4698f348e8b2a91d70e5736b>]/Fields[<><><><><>]>>>> endobj trailer <> %%EOF PDF-FDF-Simple-0.21/t/typecatalog.t0000444000175000017500000000161611200627461014644 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Parse::RecDescent; use strict; use warnings; plan tests => 5; ################## tests ################## my $fdf_fname = 't/TEST-1234.fdf'; my $fdf = new PDF::FDF::Simple ({ 'filename' => $fdf_fname, }); my $erg = $fdf->load; ok (( $erg->{'date'} eq 'E0909' and $erg->{'binding'} eq 'Perfect' and $erg->{'pages2'} eq '100' and $erg->{'spinesub3'} eq 'SpineSub-title3' ), "parse"); ok (($fdf->attribute_file eq 'file.pdf'), "attribute_file"); ok (($fdf->attribute_ufile eq 'file.pdf'), "attribute_ufile"); ok ((grep '<6D8B89AFD4447F4C31D5A7CC958E2132>', @{$fdf->attribute_id}), "attribute_id 1"); ok ((grep '', @{$fdf->attribute_id}), "attribute_id 2"); PDF-FDF-Simple-0.21/t/strange_id_values.fdf0000444000175000017500000002121011200627461016312 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>]/T (LD-2clone1)>>]/T (P2)>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>]/T (LD-2clone1)>>]/T (P3)>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>]/ID [(P\306p\363%\257\215@\201\344\231\2142\340M\260) (S\366{?X\2349H\206h\334\276s\244\016\()]>>>> endobj xref 0 2 0000000000 65535 f 0000000016 00000 n trailer <> startxref 9095 %%EOF PDF-FDF-Simple-0.21/t/missingfdfvalue.t0000444000175000017500000000147211200627461015516 0ustar ss5ss5### -*- mode: perl; -*- use PDF::FDF::Simple; use Test::More; use Data::Dumper; use Parse::RecDescent; use strict; use warnings; plan tests => 5; ################## tests ################## # This real world file contains field 'Email' without a value my $fdf_fname = 't/missingfdfvalue.fdf'; my $fdf = new PDF::FDF::Simple ({ filename => $fdf_fname }); my $erg = $fdf->load; is ( $erg->{'4_Ec_3_equal.Application'}, 'Off', "parse" ); ok ( (not defined $erg->{'Email'}), "nonexisting fdf value" ); is ( $fdf->attribute_file, '../template.pdf', "attribute_file" ); ok ( (grep '<7D22A3A5BB8F4D3895B909A47FFA6762>', @{$fdf->attribute_id}), "attribute_id 1" ); ok ( (grep '<601C7694037F98489E433900ED652316>', @{$fdf->attribute_id}), "attribute_id 2" ); PDF-FDF-Simple-0.21/t/fdfparser_newline.fdf0000444000175000017500000000070411200627461016316 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj << /FDF << /Fields [ << /T (uncomment) /V ( \\ ) >> << /T (slash r) /V (x\rx) >> << /T (slash n) /V (x\nx) >> << /T (dM) /V (x x) >> << /T (uncomment dM) /V (x\ x) >> << /T (uncomment slash r) /V (x\\rx) >> << /T (uncomment slash n) /V (x\\nx) >> << /T (uncomment newline n) /V (x\ x) >> << /T (newline n) /V (x x) >> ] /F (file.eff)/ID [ <7c40214f81e> ] >> >> endobj trailer << /Root 1 0 R >> %%EOF PDF-FDF-Simple-0.21/t/fdfparser_standard.fdf0000444000175000017500000000156311200627461016461 0ustar ss5ss5%FDF-1.2 %âãÏÓ 1 0 obj << /FDF << /Fields [ << /T (root)/Kids [ << /V /OFF /T (checkbox1)>> << /T (checkbox2) /V /ON >> << /Kids [ << /V (valueA_A)/T (kidA_A)>> ] /T (parentA) >> << /T (parentB)/Kids[<><> ] >> << /T (data)/Kids [ << /V ()/T ()>> << /V (info@doo.de)/T (email)>> << /V (some company Inc)/T (name)>> << /V (Dresden)/T (ort)>> << /V (01069)/T (plzort)>> ] >> << /T (specials) /Kids [ << /T (hexa) /V (zuf#E4l\ \ lig) >> << /T (hexb) /V /zuf#E4llig >> << /T (spaces) /V ( 2x space at start and end ) >> << /T (rhomb) /V (#) >> << /T (parenthesize) /V ( \(parenthesize\) ) >> << /T (backspace) /V ( \\ ) >> << /T (slash) /V ( / ) >> ] >> << /V (Gro\337e B\344ume :-\))/T (auftragsart)>> ] >> ] /F (bauauftrag.eff) /UF (bauauftrag.pdf)/ID [ <45607b9e><750eda6> ] >> >> endobj trailer << /Root 1 0 R >> %%EOF PDF-FDF-Simple-0.21/INSTALL0000444000175000017500000000030711200627461012725 0ustar ss5ss5Installation is done via Module::Build: perl Build.PL ./Build ./Build test ./Build install (as root) There is a Makefile.PL for CPAN compatibility, but you shouldn't use this manually. PDF-FDF-Simple-0.21/Build.PL0000444000175000017500000000217611200627461013176 0ustar ss5ss5use lib "./lib"; use PDF::FDF::Simple::Builder; use strict; use warnings; my %params = ( module_name => 'PDF::FDF::Simple', license => 'perl', build_requires => { 'File::Copy' => 0, }, requires => { 'perl' => '5.6.1', 'Parse::RecDescent' => '1.94', 'Class::Accessor::Fast' => 0, 'Test::More' => 0, 'Compress::Zlib' => 0, 'File::ShareDir' => 0, }, meta_add => { resources => { repository => 'git://github.com/renormalist/pdf-fdf-simple.git', } }, ); my $build = new PDF::FDF::Simple::Builder (%params); $build->create_build_script; PDF-FDF-Simple-0.21/ChangeLog0000444000175000017500000001217111200627461013450 0ustar ss5ss52009-05-07 Steffen Schwigon * 0.21 * fix "use Parse::RecDescent" into "require" during Build.PL 2009-04-28 Steffen Schwigon * 0.20 * Outsourced grammar file into lib/PDF/FDF/Simple/grammar; now less double-escaping in the grammar because it's no longer part of a quote operator. * Provide a precompiled grammar file for faster startup time, can be updated with "./Build grammar" * for easier development it is still possible to compile the grammar at runtime by setting the environment variable PDF_FDF_SIMPLE_IGNORE_PRECOMPILED_GRAMMAR=1 * new dependency to File::ShareDir 2009-04-26 Steffen Schwigon * 0.19 * Grammar fixes provided by Eric Amick. * include forgotten tests and example fdf files from 0.18 * added git repository to META.yml 2009-04-13 Steffen Schwigon * 0.18 * Mini synopsis update about accessing single fields. * Support for stream objects (RJH and Dave Barter) * Add parsing for StemV object (RJH and Dave Barter) * parsing optional /Type/* attribute plus unittest (spotted and test provided by Rosal Lozada) * new dependency to Compress::Zlib 2008-04-24 ss5 * 0.17 * Bummer! Now really drop Makefile.PL. 2008-04-24 Steffen Schwigon * 0.16 * Switched to yet another accessor class: Class::Accessor::Fast. * Fixed deep recursion warnings. Tests for this. Thanks to rafl++. * Dropped compatibility Makefile.PL. 2008-04-15 Steffen Schwigon * 0.15 * Hex decoding (decode bytes via #\d\d) does not apply to field values values inside /V (...), only to literal values. Thanks to Eric Amick. * Fixed tests to reflect the above hex decoding change. 2008-04-11 Steffen Schwigon * 0.14 * Upload problems with 0.13 2008-04-06 Steffen Schwigon * 0.13 * More grammar enhancements for value arrays and for strange ID attribute values from Eric Amick. * Tests for new grammar changes and the xref changes from v0.12. * Tests for the accessor change in v0.12, that I forgot in the manifest. 2008-03-22 Steffen Schwigon * 0.12 * Switched from Class::MethodMaker to Class::Accessor, because I didn't like the pollution with lots of variants of my accessors that all do the same. Feel free to complain about this step. If you convince me, I might switch back. :-) * Grammar enhancement to handle xrefs. Provided by Eric Amick. * whitespace/tab cleanup 2007-07-11 Steffen Schwigon * 0.11 * added attribute_ufile() which handles the /UF attribute generated by Acro8; reported by Ed Cole. * small grammar tweak for slightly different Acro8 files; reported by Ed Cole. * more tests, code cleanup, docs 2005-12-18 Steffen Schwigon * 0.10 * fixed incorrect SYNOPSIS regarding attribute_file and attribute_id; reported by Brian Bay. 2005-11-13 Steffen Schwigon * 0.09 * fixed parsing file attribute (/F couldn't handle real world filenames with spaces and parens); reported by Ed Cole 2005-11-10 Steffen Schwigon * 0.08 * fixed parsing fields with missing values (missing /V in fdf); reported by Ed Cole. * save now also accepts an explicit filename argument 2005-08-02 Steffen Schwigon * 0.07 * Test::Distribution and Test::Pod::Coverage only used if explicitely required, because I don't want to fail remote installation due to those modules, which might change in future. 2005-06-03 Steffen Schwigon * 0.06 * The Parser now also works without initial version header in FDF file. This seems to be needed in FDFs that were submitted from Acrobat to an URL (e.g., a CGI script); reported by Christopher P Crawford. * undefined values are converted into empty strings ('') when fdf is generated (and/or saved), to avoid "uninitialized value" warnings. To avoid this, set option "skip_undefined_fields" to a true value (default is false); then fields whose value is undefined are skipped. * Test framework now uses Test::More (plus Test::Pod::Coverage and Test::Distribution if available). 2004-10-22 Steffen Schwigon * More speed changes * Version 0.05, because of wrong place of 0.04-files in my CPAN dir 2004-10-21 Steffen Schwigon * speedup grammar by about 45% * attribute_file() and attribute_id() for getting/setting the /F and /ID attributes as suggested by David Thomas. * parser extension that reflects those attributes * tests * parsing of content in blocks of "non-problematic" characters. This gives less "Deep recursion" warnings. * Version 0.04 2004-08-10 Steffen Schwigon * as_string() method * Version 0.03 2004-05-21 Steffen Schwigon * Doc minor cleanup 2004-05-21 Steffen Schwigon * Renamed to PDF::FDF::Simple * Parser fixes with newline handling * Version 0.02 2004-05-17 Steffen Schwigon * first official version * Version 0.01 PDF-FDF-Simple-0.21/README0000444000175000017500000000312511200627461012555 0ustar ss5ss5MODULE PDF::FDF::Simple - Read and write (Acrobat) FDF files. ABOUT PDF::FDF::Simple helps creating and extracting FDF files. It is meant to be a simple replacement for the Adobe FdfToolkit when you just want to read or create fdf files. After the extraction process the content is available within a hash reference. For creating FDF files it currently only supports setting text values. Anyway, this should be enough to create fdf-files with text fields, text areas, checkboxes and radio buttons. See pod documentation. SYNOPSIS my $fdf = new PDF::FDF::Simple ({ filename => '/tmp/test.fdf' }); $fdf->{content} = { 'name' => 'Fred Madison', 'organisation' => 'Luna Lounge Ltd.', 'dotted.field.name' => 'Hello world.', 'language.radio.value' => 'French', 'my.checkbox.value' => 'On' # 'On' / 'Off' }; $fdf->save or print $fdf->errmsg; my $fdfcontent = $fdf->load; PREREQUISITES Parse::RecDescent (1.94) Class::Accessor Compress::Zlib (since PDF::FDF::Simple v0.18) AUTHOR Steffen Schwigon Tim Schreier REPOSITORY The public repository is hosted on github: git clone git://github.com/renormalist/pdf-fdf-simple.git LICENSE Copyright (c) 2004..2009 Steffen Schwigon. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. BUGS Too simple? I'm interested in comments/enhancements/bugfixes. PDF-FDF-Simple-0.21/LICENSE0000444000175000017500000000011211200627461012673 0ustar ss5ss5PDF::FDF::Simple can be distributed under the same terms as Perl itself. PDF-FDF-Simple-0.21/MANIFEST0000444000175000017500000000144211200627461013026 0ustar ss5ss5Build.PL ChangeLog INSTALL lib/auto/PDF/FDF/Simple/grammar lib/PDF/FDF/Simple.pm lib/PDF/FDF/Simple.pod lib/PDF/FDF/Simple/Builder.pm lib/PDF/FDF/Simple/Grammar.pm lib/PDF/FDF/Simple/Grammar.pod LICENSE MANIFEST This list of files MANIFEST.SKIP META.yml README t/accessors.t t/acro8.t t/acro8example.fdf t/attribs.t t/distribution.t t/fdfparser_newline.fdf t/fdfparser_newline.t t/fdfparser_round.t t/fdfparser_round2.t t/fdfparser_standard.fdf t/fdfparser_standard.t t/hunde_no_header.fdf t/hundev1.fdf t/missingfdfvalue.fdf t/missingfdfvalue.t t/no_header.t t/noisyfileattr.fdf t/noisyfileattr.t t/pod-coverage.t t/simple.fdf t/simple.t t/strange_id_values.fdf t/strange_id_values.t t/TEST-1234.fdf t/typecatalog.t t/undef_handling.t t/with_xrefs_and_valuearrays.fdf t/with_xrefs_and_valuearrays.t PDF-FDF-Simple-0.21/META.yml0000444000175000017500000000147511200627461013154 0ustar ss5ss5--- name: PDF-FDF-Simple version: 0.21 author: - 'Steffen Schwigon ,' abstract: Read and write (Acrobat) FDF files. license: perl resources: repository: git://github.com/renormalist/pdf-fdf-simple.git requires: Class::Accessor::Fast: 0 Compress::Zlib: 0 File::ShareDir: 0 Parse::RecDescent: 1.94 Test::More: 0 perl: 5.6.1 build_requires: File::Copy: 0 provides: PDF::FDF::Simple: file: lib/PDF/FDF/Simple.pm version: 0.21 PDF::FDF::Simple::Builder: file: lib/PDF/FDF/Simple/Builder.pm PDF::FDF::Simple::Grammar: file: lib/PDF/FDF/Simple/Grammar.pm Parse::RecDescent::PDF::FDF::Simple::Grammar: file: lib/PDF/FDF/Simple/Grammar.pm generated_by: Module::Build version 0.3201 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.2.html version: 1.2 PDF-FDF-Simple-0.21/MANIFEST.SKIP0000444000175000017500000000037211200627461013574 0ustar ss5ss5Makefile.PL ^_build ^Build$ ^blib ~$ \.bak$ t/fdfparser_output.fdf t/.cvsignore ^MANIFEST\.bak$ ^ANNOUNCE$ CVS .svn .git .cvsignore .svnignore .gitignore ^Makefile$ ^PDF-FDF-Simple-[0-9]+.[0-9]+$ ^PDF-FDF-Simple-[0-9]+.[0-9]+\.tar\.gz$ ^cover_db/.*