summaryrefslogtreecommitdiff
path: root/source4/build
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-11-20 04:36:09 +0000
committerAndrew Tridgell <tridge@samba.org>2003-11-20 04:36:09 +0000
commitb2fd4284b6935f93514cd7d165ab481101e92472 (patch)
treeb6826c47888b2786f2f7e74f63ae8df7d4b65843 /source4/build
parent8f0f97b078f45abbd001a1fa893455bd27d072cd (diff)
downloadsamba-b2fd4284b6935f93514cd7d165ab481101e92472.tar.gz
samba-b2fd4284b6935f93514cd7d165ab481101e92472.tar.bz2
samba-b2fd4284b6935f93514cd7d165ab481101e92472.zip
use a precompiled grammer in pidl. This speeds up pidl by about a
factor of 2 on my system. (This used to be commit a291dd835f68ae5a109670b1d1ca1a48b2aacfb6)
Diffstat (limited to 'source4/build')
-rw-r--r--source4/build/pidl/Makefile5
-rw-r--r--source4/build/pidl/dump.pm2
-rw-r--r--source4/build/pidl/eparser.pm2
-rw-r--r--source4/build/pidl/header.pm1
-rw-r--r--source4/build/pidl/idl.pm12849
-rwxr-xr-xsource4/build/pidl/pidl.pl7
-rw-r--r--source4/build/pidl/util.pm2
7 files changed, 12860 insertions, 8 deletions
diff --git a/source4/build/pidl/Makefile b/source4/build/pidl/Makefile
new file mode 100644
index 0000000000..23de275288
--- /dev/null
+++ b/source4/build/pidl/Makefile
@@ -0,0 +1,5 @@
+PIDL_idl.pm: idl.gram
+ perl -MParse::RecDescent - idl.gram idl
+
+clean:
+ rm -f idl.pm
diff --git a/source4/build/pidl/dump.pm b/source4/build/pidl/dump.pm
index 1da9f715aa..c088a95a77 100644
--- a/source4/build/pidl/dump.pm
+++ b/source4/build/pidl/dump.pm
@@ -3,7 +3,7 @@
# Copyright tridge@samba.org 2000
# released under the GNU GPL
-package IdlDump;
+package dump;
use strict;
use Data::Dumper;
diff --git a/source4/build/pidl/eparser.pm b/source4/build/pidl/eparser.pm
index 13e9307c8d..6de4c26c85 100644
--- a/source4/build/pidl/eparser.pm
+++ b/source4/build/pidl/eparser.pm
@@ -4,7 +4,7 @@
# Copyright tridge@samba.org 2000
# released under the GNU GPL
-package IdlEParser;
+package eparser;
use strict;
use Data::Dumper;
diff --git a/source4/build/pidl/header.pm b/source4/build/pidl/header.pm
index 8e102a0c3c..83e2cfd4ac 100644
--- a/source4/build/pidl/header.pm
+++ b/source4/build/pidl/header.pm
@@ -2,6 +2,7 @@
# create C header files for an IDL structure
# Copyright tridge@samba.org 2000
# released under the GNU GPL
+
package IdlHeader;
use strict;
diff --git a/source4/build/pidl/idl.pm b/source4/build/pidl/idl.pm
new file mode 100644
index 0000000000..ffcd66f54f
--- /dev/null
+++ b/source4/build/pidl/idl.pm
@@ -0,0 +1,12849 @@
+package idl;
+use Parse::RecDescent;
+
+{ my $ERRORS;
+
+
+package Parse::RecDescent::idl;
+use strict;
+use vars qw($skip $AUTOLOAD );
+$skip = '\s*';
+
+ use util;
+;
+
+
+{
+local $SIG{__WARN__} = sub {0};
+# PRETEND TO BE IN Parse::RecDescent NAMESPACE
+*Parse::RecDescent::idl::AUTOLOAD = sub
+{
+ no strict 'refs';
+ $AUTOLOAD =~ s/^Parse::RecDescent::idl/Parse::RecDescent/;
+ goto &{$AUTOLOAD};
+}
+}
+
+push @Parse::RecDescent::idl::ISA, 'Parse::RecDescent';
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::function
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"function"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [function]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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 identifier '(' <commit> element_list2 ');']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{function});
+ %item = (__RULE__ => q{function});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [type]},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{type}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{identifier})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [element_list2]},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{element_list2})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::element_list2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [element_list2]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [element_list2]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{element_list2}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [');']},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $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{<<Didn't match terminal>>},
+ 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{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "FUNCTION",
+ "NAME" => $item{identifier},
+ "RETURN_TYPE" => $item{type},
+ "DATA" => $item{element_list2}
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [type identifier '(' <commit> element_list2 ');']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{function});
+ %item = (__RULE__ => q{function});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{function},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{function},
+ $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{function},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{function},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::base_element
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"base_element"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [base_element]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [property_list type pointer identifier array_len]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{base_element});
+ %item = (__RULE__ => q{base_element});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [property_list]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::property_list, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [property_list]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [property_list]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{property_list(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [type]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{type})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{type}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [pointer]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{pointer})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::pointer, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [pointer]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [pointer]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{pointer(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{identifier})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [array_len]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{array_len})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::array_len, 0, 1, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [array_len]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [array_len]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{array_len(?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "NAME" => $item{identifier},
+ "TYPE" => $item{type},
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "POINTERS" => $#{$item[3]}==-1?undef:$#{$item[3]}+1,
+ "ARRAY_LEN" => $item[5][0]
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [property_list type pointer identifier array_len]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error...>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{base_element});
+ %item = (__RULE__ => q{base_element});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if (1) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{base_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{base_element},
+ $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{base_element},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{base_element},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::property_list
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"property_list"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [property_list]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['[' <commit> <leftop: property /,/ property> ']']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property_list});
+ %item = (__RULE__ => q{property_list});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying operator: [<leftop: property /,/ property>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{<leftop: property /,/ property>})->at($text);
+
+ $_tok = undef;
+ OPLOOP: while (1)
+ {
+ $repcount = 0;
+ my @item;
+
+ # MATCH LEFTARG
+
+ Parse::RecDescent::_trace(q{Trying subrule: [property]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{property})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::property($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [property]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [property]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{property}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ $repcount++;
+
+ my $savetext = $text;
+ my $backtrack;
+
+ # MATCH (OP RIGHTARG)(s)
+ while ($repcount < 100000000)
+ {
+ $backtrack = 0;
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $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{<<Didn't match terminal>>},
+ 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__}=$&;
+
+
+ pop @item;
+ if (defined $1) {push @item, $item{'property(s)'}=$1; $backtrack=1;}
+
+ Parse::RecDescent::_trace(q{Trying subrule: [property]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{property})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::property($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [property]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [property]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{property}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ $savetext = $text;
+ $repcount++;
+ }
+ $text = $savetext;
+ pop @item if $backtrack;
+
+ unless (@item) { undef $_tok; last }
+ $_tok = [ @item ];
+ last;
+ }
+
+ unless ($repcount>=1)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: property /,/ property>]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: property /,/ property>]<< (return value: [}
+ . qq{@{$_tok||[]}} . q{]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+ push @item, $item{'property(s)'}=$_tok||[];
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [']']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $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{<<Didn't match terminal>>},
+ 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{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[3] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' <commit> <leftop: property /,/ property> ']']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{property_list});
+ %item = (__RULE__ => q{property_list});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property_list},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{property_list},
+ $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{property_list},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{property_list},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::definition
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"definition"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [definition]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [cpp_prefix]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{definition});
+ %item = (__RULE__ => q{definition});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [cpp_prefix]},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::cpp_prefix($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [cpp_prefix]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [cpp_prefix]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{cpp_prefix}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [cpp_prefix]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [typedef]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{definition});
+ %item = (__RULE__ => q{definition});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [typedef]},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::typedef($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [typedef]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [typedef]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{typedef}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [typedef]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [function]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{definition});
+ %item = (__RULE__ => q{definition});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [function]},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [function]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [function]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{function}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [function]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{definition},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{definition},
+ $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{definition},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{definition},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::module_header
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"module_header"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [module_header]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['[' <commit> <leftop: module_param /,/ module_param> ']']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{module_header});
+ %item = (__RULE__ => q{module_header});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying operator: [<leftop: module_param /,/ module_param>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{<leftop: module_param /,/ module_param>})->at($text);
+
+ $_tok = undef;
+ OPLOOP: while (1)
+ {
+ $repcount = 0;
+ my @item;
+
+ # MATCH LEFTARG
+
+ Parse::RecDescent::_trace(q{Trying subrule: [module_param]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{module_param})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::module_param($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [module_param]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [module_param]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{module_param}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ $repcount++;
+
+ my $savetext = $text;
+ my $backtrack;
+
+ # MATCH (OP RIGHTARG)(s)
+ while ($repcount < 100000000)
+ {
+ $backtrack = 0;
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $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{<<Didn't match terminal>>},
+ 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__}=$&;
+
+
+ pop @item;
+ if (defined $1) {push @item, $item{'module_param(s?)'}=$1; $backtrack=1;}
+
+ Parse::RecDescent::_trace(q{Trying subrule: [module_param]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{module_param})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::module_param($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [module_param]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [module_param]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{module_param}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ $savetext = $text;
+ $repcount++;
+ }
+ $text = $savetext;
+ pop @item if $backtrack;
+
+
+ $_tok = [ @item ];
+ last;
+ }
+
+ unless ($repcount>=0)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: module_param /,/ module_param>]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: module_param /,/ module_param>]<< (return value: [}
+ . qq{@{$_tok||[]}} . q{]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+ push @item, $item{'module_param(s?)'}=$_tok||[];
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [']']},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $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{<<Didn't match terminal>>},
+ 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{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "MODULEHEADER",
+ "PROPERTIES" => util::FlattenHash($item[3])
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' <commit> <leftop: module_param /,/ module_param> ']']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{module_header});
+ %item = (__RULE__ => q{module_header});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_header},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{module_header},
+ $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{module_header},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{module_header},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::identifier
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"identifier"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [identifier]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{identifier},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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?]+/]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{identifier},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{identifier});
+ %item = (__RULE__ => q{identifier});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/[\\w?]+/]}, Parse::RecDescent::_tracefirst($text),
+ q{identifier},
+ $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{<<Didn't match terminal>>},
+ 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: [/[\\w?]+/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{identifier},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{identifier},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{identifier},
+ $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{identifier},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{identifier},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::struct
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"struct"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [struct]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [property_list 'struct' <commit> '\{' element_list1 '\}']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{struct});
+ %item = (__RULE__ => q{struct});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [property_list]},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::property_list, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [property_list]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [property_list]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{property_list(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['struct']},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'struct'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Astruct//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $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{<<Didn't match terminal>>},
+ 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: [element_list1]},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{element_list1})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::element_list1, 0, 1, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [element_list1]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [element_list1]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{element_list1(?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $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{<<Didn't match terminal>>},
+ 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{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "STRUCT",
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "ELEMENTS" => util::FlattenArray2($item[5])
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [property_list 'struct' <commit> '\{' element_list1 '\}']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{struct});
+ %item = (__RULE__ => q{struct});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{struct},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{struct},
+ $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{struct},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{struct},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::text
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"text"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [text]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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\\s\\..?-]*/]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{text});
+ %item = (__RULE__ => q{text});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/[\\w\\s\\..?-]*/]}, Parse::RecDescent::_tracefirst($text),
+ q{text},
+ $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\s\..?-]*)//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+ 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: [/[\\w\\s\\..?-]*/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{text},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{text},
+ $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{text},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{text},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::expression
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"expression"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [expression]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{expression},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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.?\\/+*-_]+/]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{expression},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{expression});
+ %item = (__RULE__ => q{expression});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/[\\w.?\\/+*-_]+/]}, Parse::RecDescent::_tracefirst($text),
+ q{expression},
+ $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{<<Didn't match terminal>>},
+ 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: [/[\\w.?\\/+*-_]+/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{expression},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{expression},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{expression},
+ $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{expression},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{expression},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::union_element
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"union_element"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [union_element]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['[' 'case' '(' constant ')' ']' base_element ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{union_element});
+ %item = (__RULE__ => q{union_element});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: ['case']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'case'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Acase//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: [constant]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{constant})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{constant}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [';']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "UNION_ELEMENT",
+ "CASE" => $item{constant},
+ "DATA" => $item{base_element}
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' 'case' '(' constant ')' ']' base_element ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['[' 'case' '(' constant ')' ']' ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{union_element});
+ %item = (__RULE__ => q{union_element});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: ['case']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'case'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Acase//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: [constant]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{constant})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{constant}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "EMPTY",
+ "CASE" => $item{constant},
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' 'case' '(' constant ')' ']' ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['[' 'default' ']' base_element ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{union_element});
+ %item = (__RULE__ => q{union_element});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: ['default']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'default'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Adefault//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [';']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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 action},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "UNION_ELEMENT",
+ "CASE" => "default",
+ "DATA" => $item{base_element}
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' 'default' ']' base_element ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['[' 'default' ']' ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[3];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{union_element});
+ %item = (__RULE__ => q{union_element});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $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{<<Didn't match terminal>>},
+ 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: ['default']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'default'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Adefault//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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{union_element},
+ $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{<<Didn't match terminal>>},
+ 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 action},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "EMPTY",
+ "CASE" => "default",
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' 'default' ']' ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union_element},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{union_element},
+ $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{union_element},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{union_element},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::interface
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"interface"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [interface]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['interface' <commit> identifier '\{' definition '\}']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{interface});
+ %item = (__RULE__ => q{interface});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['interface']},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Ainterface//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{identifier})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $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{<<Didn't match terminal>>},
+ 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: [definition]},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{definition})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::definition, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [definition]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [definition]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{definition(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $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{<<Didn't match terminal>>},
+ 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{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "INTERFACE",
+ "NAME" => $item{identifier},
+ "DATA" => $item[5]
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['interface' <commit> identifier '\{' definition '\}']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{interface});
+ %item = (__RULE__ => q{interface});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{interface},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{interface},
+ $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{interface},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{interface},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::typedef
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"typedef"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [typedef]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['typedef' <commit> type identifier array_len ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{typedef});
+ %item = (__RULE__ => q{typedef});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['typedef']},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Atypedef//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [type]},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{type})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{type}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{identifier})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [array_len]},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{array_len})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::array_len, 0, 1, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [array_len]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [array_len]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{array_len(?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [';']},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $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{<<Didn't match terminal>>},
+ 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{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "TYPEDEF",
+ "NAME" => $item{identifier},
+ "DATA" => $item{type},
+ "ARRAY_LEN" => $item[5][0]
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['typedef' <commit> type identifier array_len ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{typedef});
+ %item = (__RULE__ => q{typedef});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{typedef},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{typedef},
+ $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{typedef},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{typedef},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::call
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"call"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [call]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [expression '(' <commit> expression ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{call});
+ %item = (__RULE__ => q{call});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{expression})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $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{<<Didn't match terminal>>},
+ 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{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]($item[4])" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [expression '(' <commit> expression ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{call},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{call},
+ $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{call},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{call},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::idl
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"idl"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [idl]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [cpp_prefix module_header interface]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{idl});
+ %item = (__RULE__ => q{idl});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [cpp_prefix]},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::cpp_prefix, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [cpp_prefix]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [cpp_prefix]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{cpp_prefix(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [module_header]},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{module_header})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::module_header($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [module_header]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [module_header]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{module_header}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying subrule: [interface]},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{interface})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::interface($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [interface]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [interface]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{interface}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { [$item{module_header}, $item{interface}] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [cpp_prefix module_header interface]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error...>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{idl});
+ %item = (__RULE__ => q{idl});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if (1) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{idl},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{idl},
+ $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{idl},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{idl},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::cpp_prefix
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"cpp_prefix"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [cpp_prefix]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{cpp_prefix},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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{cpp_prefix},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{cpp_prefix});
+ %item = (__RULE__ => q{cpp_prefix});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['#']},
+ Parse::RecDescent::_tracefirst($text),
+ q{cpp_prefix},
+ $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{<<Didn't match terminal>>},
+ 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{cpp_prefix},
+ $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{<<Didn't match terminal>>},
+ 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: ['#' /.*/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{cpp_prefix},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{cpp_prefix},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{cpp_prefix},
+ $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{cpp_prefix},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{cpp_prefix},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::property
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"property"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [property]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['unique']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['unique']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aunique//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['unique']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['in']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['in']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Ain//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['in']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['out']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['out']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aout//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['out']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['ref']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[3];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['ref']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aref//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['ref']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['context_handle']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[4];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['context_handle']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Acontext_handle//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['context_handle']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['string']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[5];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['string']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Astring//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['string']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['public']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[6];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['public']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Apublic//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['public']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['noprint']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[7];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['noprint']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Anoprint//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['noprint']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['relative']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[8];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['relative']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Arelative//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['relative']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['nodiscriminant']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[9];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['nodiscriminant']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Anodiscriminant//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['nodiscriminant']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['subcontext']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[10];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['subcontext']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Asubcontext//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['subcontext']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['byte_count_pointer' '(' expression ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[11];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['byte_count_pointer']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Abyte_count_pointer//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{expression})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => "$item{expression}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['byte_count_pointer' '(' expression ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['size_is' '(' expression ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[12];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['size_is']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Asize_is//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{expression})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => "$item{expression}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['size_is' '(' expression ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['length_is' '(' expression ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[13];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['length_is']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Alength_is//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{expression})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => "$item{expression}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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_is' '(' expression ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['switch_is' '(' expression ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[14];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['switch_is']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aswitch_is//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [expression]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{expression})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{expression}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => "$item{expression}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['switch_is' '(' expression ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['value' '(' anytext ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[15];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['value']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Avalue//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [anytext]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{anytext})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::anytext($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [anytext]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [anytext]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{anytext}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => "$item{anytext}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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' '(' anytext ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['switch_type' '(' type ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[16];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{property});
+ %item = (__RULE__ => q{property});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['switch_type']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aswitch_type//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{property},
+ $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{<<Didn't match terminal>>},
+ 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: [type]},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{type})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{type}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $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{<<Didn't match terminal>>},
+ 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{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]" => $item{type} }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['switch_type' '(' type ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{property},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{property},
+ $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{property},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{property},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::element_list2
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"element_list2"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [element_list2]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: ['void']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{element_list2});
+ %item = (__RULE__ => q{element_list2});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['void']},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Avoid//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: ['void']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<leftop: base_element /,/ base_element>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{element_list2});
+ %item = (__RULE__ => q{element_list2});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying operator: [<leftop: base_element /,/ base_element>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ $_tok = undef;
+ OPLOOP: while (1)
+ {
+ $repcount = 0;
+ my @item;
+
+ # MATCH LEFTARG
+
+ Parse::RecDescent::_trace(q{Trying subrule: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ $repcount++;
+
+ my $savetext = $text;
+ my $backtrack;
+
+ # MATCH (OP RIGHTARG)(s)
+ while ($repcount < 100000000)
+ {
+ $backtrack = 0;
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $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{<<Didn't match terminal>>},
+ 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__}=$&;
+
+
+ pop @item;
+ if (defined $1) {push @item, $item{'base_element(s?)'}=$1; $backtrack=1;}
+
+ Parse::RecDescent::_trace(q{Trying subrule: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ $savetext = $text;
+ $repcount++;
+ }
+ $text = $savetext;
+ pop @item if $backtrack;
+
+
+ $_tok = [ @item ];
+ last;
+ }
+
+ unless ($repcount>=0)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: base_element /,/ base_element>]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: base_element /,/ base_element>]<< (return value: [}
+ . qq{@{$_tok||[]}} . q{]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+ push @item, $item{'base_element(s?)'}=$_tok||[];
+
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [<leftop: base_element /,/ base_element>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{element_list2},
+ $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{element_list2},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{element_list2},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::anytext
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"anytext"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [anytext]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [text2 '(' <commit> anytext ')' anytext]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{anytext});
+ %item = (__RULE__ => q{anytext});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [text2]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::text2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [text2]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [text2]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{text2}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [anytext]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{anytext})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::anytext($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [anytext]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [anytext]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{anytext}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $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{<<Didn't match terminal>>},
+ 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: [anytext]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{anytext})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::anytext($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [anytext]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [anytext]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{anytext}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]($item[4])$item[6]" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [text2 '(' <commit> anytext ')' anytext]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [text2 '+' anytext]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{anytext});
+ %item = (__RULE__ => q{anytext});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [text2]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::text2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [text2]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [text2]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{text2}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['+']},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $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{<<Didn't match terminal>>},
+ 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: [anytext]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{anytext})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::anytext($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [anytext]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [anytext]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{anytext}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item[1]+$item[3]" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [text2 '+' anytext]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [text2]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{anytext});
+ %item = (__RULE__ => q{anytext});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [text2]},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::text2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [text2]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [text2]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{text2}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [text2]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{anytext},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{anytext},
+ $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{anytext},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{anytext},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::element_list1
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"element_list1"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [element_list1]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [<leftop: base_element /;/ base_element> ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{element_list1});
+ %item = (__RULE__ => q{element_list1});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying operator: [<leftop: base_element /;/ base_element>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ $_tok = undef;
+ OPLOOP: while (1)
+ {
+ $repcount = 0;
+ my @item;
+
+ # MATCH LEFTARG
+
+ Parse::RecDescent::_trace(q{Trying subrule: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+
+ $repcount++;
+
+ my $savetext = $text;
+ my $backtrack;
+
+ # MATCH (OP RIGHTARG)(s)
+ while ($repcount < 100000000)
+ {
+ $backtrack = 0;
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/;/]}, Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $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{<<Didn't match terminal>>},
+ 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__}=$&;
+
+
+ pop @item;
+ if (defined $1) {push @item, $item{'base_element(s?)'}=$1; $backtrack=1;}
+
+ Parse::RecDescent::_trace(q{Trying subrule: [base_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{base_element})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::base_element($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [base_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [base_element]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{base_element}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ $savetext = $text;
+ $repcount++;
+ }
+ $text = $savetext;
+ pop @item if $backtrack;
+
+
+ $_tok = [ @item ];
+ last;
+ }
+
+ unless ($repcount>=0)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: base_element /;/ base_element>]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: base_element /;/ base_element>]<< (return value: [}
+ . qq{@{$_tok||[]}} . q{]},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+ push @item, $item{'base_element(s?)'}=$_tok||[];
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [';']},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $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{<<Didn't match terminal>>},
+ 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{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [<leftop: base_element /;/ base_element> ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{element_list1},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{element_list1},
+ $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{element_list1},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{element_list1},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::constant
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"constant"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [constant]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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+/]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{constant});
+ %item = (__RULE__ => q{constant});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/-?\\d+/]}, Parse::RecDescent::_tracefirst($text),
+ q{constant},
+ $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{<<Didn't match terminal>>},
+ 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: [/-?\\d+/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['*']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{constant});
+ %item = (__RULE__ => q{constant});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['*']},
+ Parse::RecDescent::_tracefirst($text),
+ q{constant},
+ $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{<<Didn't match terminal>>},
+ 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: ['*']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{constant},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{constant},
+ $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{constant},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{constant},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::array_len
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"array_len"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [array_len]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{array_len});
+ %item = (__RULE__ => q{array_len});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { "*" };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['[' '*' ']']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{array_len});
+ %item = (__RULE__ => q{array_len});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { "*" };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['[' <commit> anytext ']']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{array_len});
+ %item = (__RULE__ => q{array_len});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['[']},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $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{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [anytext]},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{anytext})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::anytext($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [anytext]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [anytext]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{anytext}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [']']},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $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{<<Didn't match terminal>>},
+ 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{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { "$item{anytext}" };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['[' <commit> anytext ']']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[3];
+
+ my $_savetext;
+ @item = (q{array_len});
+ %item = (__RULE__ => q{array_len});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{array_len},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{array_len},
+ $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{array_len},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{array_len},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::text2
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"text2"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [text2]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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\\s\\*\\>\\/\\..?-]*/]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{text2});
+ %item = (__RULE__ => q{text2});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: [/[\\w\\s\\*\\>\\/\\..?-]*/]}, Parse::RecDescent::_tracefirst($text),
+ q{text2},
+ $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\s\*\>\/\..?-]*)//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+ 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: [/[\\w\\s\\*\\>\\/\\..?-]*/]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{text2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{text2},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{text2},
+ $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{text2},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{text2},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::pointer
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"pointer"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [pointer]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{pointer},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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{pointer},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{pointer});
+ %item = (__RULE__ => q{pointer});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['*']},
+ Parse::RecDescent::_tracefirst($text),
+ q{pointer},
+ $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{<<Didn't match terminal>>},
+ 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: ['*']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{pointer},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{pointer},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{pointer},
+ $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{pointer},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{pointer},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::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 $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: ['unsigned' type]},
+ 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: ['unsigned']},
+ 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/\Aunsigned//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: [type]},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{type})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{type}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { "$item[1] $item[2]" };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['unsigned' type]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['long']},
+ 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{Trying terminal: ['long']},
+ 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/\Along//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['long']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['string']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[2];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['string']},
+ 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/\Astring//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['string']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: ['wchar_t']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[3];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['wchar_t']},
+ 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/\Awchar_t//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: ['wchar_t']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [struct]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[4];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [struct]},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::struct($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [struct]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [struct]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{struct}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [struct]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [union]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[5];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [union]},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::union($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [union]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [union]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{union}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [union]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [identifier]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[6];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do { $item[1] };
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [identifier]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error...>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[7];
+
+ my $_savetext;
+ @item = (q{type});
+ %item = (__RULE__ => q{type});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if (1) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{type},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ 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::idl::module_param
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"module_param"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [module_param]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [identifier '(' text ')']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{module_param});
+ %item = (__RULE__ => q{module_param});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{identifier}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $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{<<Didn't match terminal>>},
+ 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: [text]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{text})->at($text);
+ unless (defined ($_tok = Parse::RecDescent::idl::text($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [text]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [text]<< (return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{text}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [')']},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $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{<<Didn't match terminal>>},
+ 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{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{ "$item{identifier}" => "$item{text}" }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [identifier '(' text ')']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error...>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{module_param});
+ %item = (__RULE__ => q{module_param});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if (1) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{module_param},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{module_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{module_param},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{module_param},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::idl::union
+{
+ my $thisparser = $_[0];
+ use vars q{$tracelevel};
+ local $tracelevel = ($tracelevel||0)+1;
+ $ERRORS = 0;
+ my $thisrule = $thisparser->{"rules"}{"union"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [union]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ 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: [property_list 'union' <commit> '\{' union_element '\}']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{union});
+ %item = (__RULE__ => q{union});
+ my $repcount = 0;
+
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule: [property_list]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::property_list, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [property_list]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [property_list]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{property_list(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['union']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{'union'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aunion//)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ 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: [<commit>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { $commit = 1 };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $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{<<Didn't match terminal>>},
+ 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: [union_element]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{union_element})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::idl::union_element, 0, 100000000, $_noactions,$expectation,undef)))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [union_element]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule: [union_element]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{union_element(s?)}} = $_tok;
+ push @item, $_tok;
+
+
+
+ Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $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{<<Didn't match terminal>>},
+ 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{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {{
+ "TYPE" => "UNION",
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "DATA" => $item[5]
+ }};
+ unless (defined $_tok)
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match action>> (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: [property_list 'union' <commit> '\{' union_element '\}']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ while (!$_matched)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [<error?:...> <reject>]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[1];
+
+ my $_savetext;
+ @item = (q{union});
+ %item = (__RULE__ => q{union});
+ my $repcount = 0;
+
+
+
+
+ Parse::RecDescent::_trace(q{Trying directive: [<error?:...>]},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_tok = do { if ($commit) { do {
+ my $rule = $item[0];
+ $rule =~ s/_/ /g;
+ #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+ push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+ } unless $_noactions; undef } else {0} };
+ 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{<<Didn't match directive>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ }
+
+ last unless defined $_tok;
+ push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Rejecting production<< (found <reject>)},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ undef $return;
+
+
+ $_tok = undef;
+
+ last unless defined $_tok;
+
+
+ Parse::RecDescent::_trace(q{>>Matched production: [<error?:...> <reject>]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $_matched = 1;
+ last;
+ }
+
+
+ unless ( $_matched || defined($return) || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{union},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{union},
+ $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{union},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+ Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{union},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
+}
+}
+package idl; sub new { my $self = bless( {
+ '_AUTOTREE' => undef,
+ 'localvars' => '',
+ 'startcode' => '',
+ '_check' => {
+ 'thisoffset' => '',
+ 'itempos' => '',
+ 'prevoffset' => '',
+ 'prevline' => '',
+ 'prevcolumn' => '',
+ 'thiscolumn' => ''
+ },
+ 'namespace' => 'Parse::RecDescent::idl',
+ '_AUTOACTION' => undef,
+ 'rules' => {
+ 'function' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'type',
+ 'identifier',
+ 'element_list2'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'type',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 135
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 135
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 135
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 135,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'element_list2',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 135
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ');',
+ 'hashname' => '__STRING2__',
+ 'description' => '\');\'',
+ 'lookahead' => 0,
+ 'line' => 135
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 136,
+ 'code' => '{{
+ "TYPE" => "FUNCTION",
+ "NAME" => $item{identifier},
+ "RETURN_TYPE" => $item{type},
+ "DATA" => $item{element_list2}
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 142
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 142
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'function',
+ 'vars' => '',
+ 'line' => 135
+ }, 'Parse::RecDescent::Rule' ),
+ 'base_element' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'property_list',
+ 'type',
+ 'pointer',
+ 'identifier',
+ 'array_len'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'property_list',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 81
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'subrule' => 'type',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 81
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'pointer',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 81
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 81
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'array_len',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 1,
+ 'matchrule' => 0,
+ 'repspec' => '?',
+ 'lookahead' => 0,
+ 'line' => 81
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 82,
+ 'code' => '{{
+ "NAME" => $item{identifier},
+ "TYPE" => $item{type},
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "POINTERS" => $#{$item[3]}==-1?undef:$#{$item[3]}+1,
+ "ARRAY_LEN" => $item[5][0]
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '',
+ 'lookahead' => 0,
+ 'line' => 89
+ }, 'Parse::RecDescent::Error' )
+ ],
+ 'line' => 89
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'base_element',
+ 'vars' => '',
+ 'line' => 81
+ }, 'Parse::RecDescent::Rule' ),
+ 'property_list' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'property'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 2,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 1,
+ 'actcount' => 1,
+ 'op' => [],
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 109
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 109,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'expected' => '<leftop: property /,/ property>',
+ 'min' => 1,
+ 'name' => '\'property(s)\'',
+ 'max' => 100000000,
+ 'leftarg' => bless( {
+ 'subrule' => 'property',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 109
+ }, 'Parse::RecDescent::Subrule' ),
+ 'rightarg' => bless( {
+ 'subrule' => 'property',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 109
+ }, 'Parse::RecDescent::Subrule' ),
+ 'hashname' => '__DIRECTIVE2__',
+ 'type' => 'leftop',
+ 'op' => bless( {
+ 'pattern' => ',',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/,/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 109,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ }, 'Parse::RecDescent::Operator' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING2__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 109
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 110,
+ 'code' => '{ $item[3] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 111
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 111
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'property_list',
+ 'vars' => '',
+ 'line' => 109
+ }, 'Parse::RecDescent::Rule' ),
+ 'definition' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'cpp_prefix',
+ 'typedef',
+ 'function'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'subrule' => 'cpp_prefix',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 28
+ }, 'Parse::RecDescent::Subrule' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'typedef',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 29
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 29,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 29
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'function',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 30
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 30,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 30
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'definition',
+ 'vars' => '',
+ 'line' => 28
+ }, 'Parse::RecDescent::Rule' ),
+ 'module_header' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'module_param'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 2,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 1,
+ 'actcount' => 1,
+ 'op' => [],
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 9
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 9,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'expected' => '<leftop: module_param /,/ module_param>',
+ 'min' => 0,
+ 'name' => '\'module_param(s?)\'',
+ 'max' => 100000000,
+ 'leftarg' => bless( {
+ 'subrule' => 'module_param',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 9
+ }, 'Parse::RecDescent::Subrule' ),
+ 'rightarg' => bless( {
+ 'subrule' => 'module_param',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 9
+ }, 'Parse::RecDescent::Subrule' ),
+ 'hashname' => '__DIRECTIVE2__',
+ 'type' => 'leftop',
+ 'op' => bless( {
+ 'pattern' => ',',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/,/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 9,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ }, 'Parse::RecDescent::Operator' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING2__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 9
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 10,
+ 'code' => '{{
+ "TYPE" => "MODULEHEADER",
+ "PROPERTIES" => util::FlattenHash($item[3])
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 14
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 14
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'module_header',
+ 'vars' => '',
+ 'line' => 9
+ }, 'Parse::RecDescent::Rule' ),
+ 'identifier' => 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' => '[\\w?]+',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/[\\\\w?]+/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 131,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'identifier',
+ 'vars' => '',
+ 'line' => 131
+ }, 'Parse::RecDescent::Rule' ),
+ 'struct' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'property_list',
+ 'element_list1'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 3,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'property_list',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 41
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => 'struct',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'struct\'',
+ 'lookahead' => 0,
+ 'line' => 41
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 41,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'pattern' => '{',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'\\{\'',
+ 'lookahead' => 0,
+ 'line' => 41
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'element_list1',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 1,
+ 'matchrule' => 0,
+ 'repspec' => '?',
+ 'lookahead' => 0,
+ 'line' => 41
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => '}',
+ 'hashname' => '__STRING3__',
+ 'description' => '\'\\}\'',
+ 'lookahead' => 0,
+ 'line' => 41
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 42,
+ 'code' => '{{
+ "TYPE" => "STRUCT",
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "ELEMENTS" => util::FlattenArray2($item[5])
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 47
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 47
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'struct',
+ 'vars' => '',
+ 'line' => 41
+ }, 'Parse::RecDescent::Rule' ),
+ 'text' => 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' => '[\\w\\s\\..?-]*',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/[\\\\w\\\\s\\\\..?-]*/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 154,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'text',
+ 'vars' => '',
+ 'line' => 154
+ }, 'Parse::RecDescent::Rule' ),
+ 'expression' => 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' => '[\\w.?\\/+*-_]+',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/[\\\\w.?\\\\/+*-_]+/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 133,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'expression',
+ 'vars' => '',
+ 'line' => 133
+ }, 'Parse::RecDescent::Rule' ),
+ 'union_element' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'constant',
+ 'base_element'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 6,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => 'case',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'case\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING3__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'constant',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING4__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING5__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING6__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 58
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 59,
+ 'code' => '{{
+ "TYPE" => "UNION_ELEMENT",
+ "CASE" => $item{constant},
+ "DATA" => $item{base_element}
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 6,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => 'case',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'case\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING3__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'constant',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING4__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING5__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING6__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 64
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 65,
+ 'code' => '{{
+ "TYPE" => "EMPTY",
+ "CASE" => $item{constant},
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 64
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 4,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 69
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => 'default',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'default\'',
+ 'lookahead' => 0,
+ 'line' => 69
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING3__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 69
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 69
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING4__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 69
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 70,
+ 'code' => '{{
+ "TYPE" => "UNION_ELEMENT",
+ "CASE" => "default",
+ "DATA" => $item{base_element}
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 69
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '3',
+ 'strcount' => 4,
+ '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' => 'default',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'default\'',
+ 'lookahead' => 0,
+ 'line' => 75
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING3__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 75
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING4__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 75
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 76,
+ 'code' => '{{
+ "TYPE" => "EMPTY",
+ "CASE" => "default",
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 75
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'union_element',
+ 'vars' => '',
+ 'line' => 57
+ }, 'Parse::RecDescent::Rule' ),
+ 'interface' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'identifier',
+ 'definition'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 3,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'interface',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'interface\'',
+ 'lookahead' => 0,
+ 'line' => 20
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 20,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 20
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '{',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'\\{\'',
+ 'lookahead' => 0,
+ 'line' => 20
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'definition',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 20
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => '}',
+ 'hashname' => '__STRING3__',
+ 'description' => '\'\\}\'',
+ 'lookahead' => 0,
+ 'line' => 20
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 21,
+ 'code' => '{{
+ "TYPE" => "INTERFACE",
+ "NAME" => $item{identifier},
+ "DATA" => $item[5]
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 26
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 26
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'interface',
+ 'vars' => '',
+ 'line' => 20
+ }, 'Parse::RecDescent::Rule' ),
+ 'typedef' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'type',
+ 'identifier',
+ 'array_len'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'typedef',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'typedef\'',
+ 'lookahead' => 0,
+ 'line' => 32
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 32,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'type',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 32
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 32
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'array_len',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 1,
+ 'matchrule' => 0,
+ 'repspec' => '?',
+ 'lookahead' => 0,
+ 'line' => 32
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING2__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 32
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 33,
+ 'code' => '{{
+ "TYPE" => "TYPEDEF",
+ "NAME" => $item{identifier},
+ "DATA" => $item{type},
+ "ARRAY_LEN" => $item[5][0]
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 39
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 39
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'typedef',
+ 'vars' => '',
+ 'line' => 32
+ }, 'Parse::RecDescent::Rule' ),
+ 'call' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'expression'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 164
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 164
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 164,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 164
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING2__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 164
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 165,
+ 'code' => '{{ "$item[1]($item[4])" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'call',
+ 'vars' => '',
+ 'line' => 164
+ }, 'Parse::RecDescent::Rule' ),
+ 'idl' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'cpp_prefix',
+ 'module_header',
+ 'interface'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'cpp_prefix',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 5
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'subrule' => 'module_header',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 5
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'subrule' => 'interface',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 5
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 6,
+ 'code' => '{ [$item{module_header}, $item{interface}] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '',
+ 'lookahead' => 0,
+ 'line' => 7
+ }, 'Parse::RecDescent::Error' )
+ ],
+ 'line' => 7
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'idl',
+ 'vars' => '',
+ 'line' => 5
+ }, 'Parse::RecDescent::Rule' ),
+ 'cpp_prefix' => 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' => 170
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '.*',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/.*/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 170,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'cpp_prefix',
+ 'vars' => '',
+ 'line' => 170
+ }, 'Parse::RecDescent::Rule' ),
+ 'property' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'expression',
+ 'anytext',
+ 'type'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'unique',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'unique\'',
+ 'lookahead' => 0,
+ 'line' => 113
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'in',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'in\'',
+ 'lookahead' => 0,
+ 'line' => 114
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 114
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'out',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'out\'',
+ 'lookahead' => 0,
+ 'line' => 115
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 115
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '3',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'ref',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'ref\'',
+ 'lookahead' => 0,
+ 'line' => 116
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 116
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '4',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'context_handle',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'context_handle\'',
+ 'lookahead' => 0,
+ 'line' => 117
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 117
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '5',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'string',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'string\'',
+ 'lookahead' => 0,
+ 'line' => 118
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 118
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '6',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'public',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'public\'',
+ 'lookahead' => 0,
+ 'line' => 119
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 119
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '7',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'noprint',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'noprint\'',
+ 'lookahead' => 0,
+ 'line' => 120
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 120
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '8',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'relative',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'relative\'',
+ 'lookahead' => 0,
+ 'line' => 121
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 121
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '9',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'nodiscriminant',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'nodiscriminant\'',
+ 'lookahead' => 0,
+ 'line' => 122
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 122
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '10',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'subcontext',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'subcontext\'',
+ 'lookahead' => 0,
+ 'line' => 123
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 123
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '11',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'byte_count_pointer',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'byte_count_pointer\'',
+ 'lookahead' => 0,
+ 'line' => 124
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 124
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 124
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 124
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 124,
+ 'code' => '{{ "$item[1]" => "$item{expression}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 124
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '12',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'size_is',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'size_is\'',
+ 'lookahead' => 0,
+ 'line' => 125
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 125
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 125
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 125
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 125,
+ 'code' => '{{ "$item[1]" => "$item{expression}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 125
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '13',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'length_is',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'length_is\'',
+ 'lookahead' => 0,
+ 'line' => 126
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 126
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 126
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 126
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 126,
+ 'code' => '{{ "$item[1]" => "$item{expression}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 126
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '14',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'switch_is',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'switch_is\'',
+ 'lookahead' => 0,
+ 'line' => 127
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 127
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'expression',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 127
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 127
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 127,
+ 'code' => '{{ "$item[1]" => "$item{expression}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 127
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '15',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'value',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'value\'',
+ 'lookahead' => 0,
+ 'line' => 128
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 128
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'anytext',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 128
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 128
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 128,
+ 'code' => '{{ "$item[1]" => "$item{anytext}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 128
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '16',
+ 'strcount' => 3,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'switch_type',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'switch_type\'',
+ 'lookahead' => 0,
+ 'line' => 129
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 129
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'type',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 129
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING3__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 129
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 129,
+ 'code' => '{{ "$item[1]" => $item{type} }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 129
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'property',
+ 'vars' => '',
+ 'line' => 113
+ }, 'Parse::RecDescent::Rule' ),
+ 'element_list2' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'base_element'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => 'void',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'void\'',
+ 'lookahead' => 0,
+ 'line' => 103
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 1,
+ 'actcount' => 1,
+ 'op' => [],
+ 'items' => [
+ bless( {
+ 'expected' => '<leftop: base_element /,/ base_element>',
+ 'min' => 0,
+ 'name' => '\'base_element(s?)\'',
+ 'max' => 100000000,
+ 'leftarg' => bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 104
+ }, 'Parse::RecDescent::Subrule' ),
+ 'rightarg' => bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 104
+ }, 'Parse::RecDescent::Subrule' ),
+ 'hashname' => '__DIRECTIVE1__',
+ 'type' => 'leftop',
+ 'op' => bless( {
+ 'pattern' => ',',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/,/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 104,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ }, 'Parse::RecDescent::Operator' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 105,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 104
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'element_list2',
+ 'vars' => '',
+ 'line' => 103
+ }, 'Parse::RecDescent::Rule' ),
+ 'anytext' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'text2',
+ 'anytext'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'text2',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 158
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 158
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 158,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'anytext',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 158
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING2__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 158
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'anytext',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 158
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 159,
+ 'code' => '{{ "$item[1]($item[4])$item[6]" }}'
+ }, '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( {
+ 'subrule' => 'text2',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 160
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '+',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'+\'',
+ 'lookahead' => 0,
+ 'line' => 160
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'anytext',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 160
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 161,
+ 'code' => '{{ "$item[1]+$item[3]" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 160
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'subrule' => 'text2',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 162
+ }, 'Parse::RecDescent::Subrule' )
+ ],
+ 'line' => 162
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'anytext',
+ 'vars' => '',
+ 'line' => 158
+ }, 'Parse::RecDescent::Rule' ),
+ 'element_list1' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'base_element'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 1,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 1,
+ 'actcount' => 1,
+ 'op' => [],
+ 'items' => [
+ bless( {
+ 'expected' => '<leftop: base_element /;/ base_element>',
+ 'min' => 0,
+ 'name' => '\'base_element(s?)\'',
+ 'max' => 100000000,
+ 'leftarg' => bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 100
+ }, 'Parse::RecDescent::Subrule' ),
+ 'rightarg' => bless( {
+ 'subrule' => 'base_element',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 100
+ }, 'Parse::RecDescent::Subrule' ),
+ 'hashname' => '__DIRECTIVE1__',
+ 'type' => 'leftop',
+ 'op' => bless( {
+ 'pattern' => ';',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/;/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 100,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ }, 'Parse::RecDescent::Operator' ),
+ bless( {
+ 'pattern' => ';',
+ 'hashname' => '__STRING1__',
+ 'description' => '\';\'',
+ 'lookahead' => 0,
+ 'line' => 100
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 101,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'element_list1',
+ 'vars' => '',
+ 'line' => 100
+ }, 'Parse::RecDescent::Rule' ),
+ 'constant' => 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' => '-?\\d+',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/-?\\\\d+/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 167,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'pattern' => '*',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'*\'',
+ 'lookahead' => 0,
+ 'line' => 168
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => 168
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'constant',
+ 'vars' => '',
+ 'line' => 167
+ }, 'Parse::RecDescent::Rule' ),
+ 'array_len' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'anytext'
+ ],
+ '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' => 92
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING2__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 92
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 93,
+ 'code' => '{ "*" }'
+ }, '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' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 94
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => '*',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'*\'',
+ 'lookahead' => 0,
+ 'line' => 94
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING3__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 94
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 95,
+ 'code' => '{ "*" }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 94
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 2,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => '[',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'[\'',
+ 'lookahead' => 0,
+ 'line' => 96
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 96,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'subrule' => 'anytext',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 96
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ']',
+ 'hashname' => '__STRING2__',
+ 'description' => '\']\'',
+ 'lookahead' => 0,
+ 'line' => 96
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 97,
+ 'code' => '{ "$item{anytext}" }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 96
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '3',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 98
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 98
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'array_len',
+ 'vars' => '',
+ 'line' => 91
+ }, 'Parse::RecDescent::Rule' ),
+ 'text2' => 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' => '[\\w\\s\\*\\>\\/\\..?-]*',
+ 'hashname' => '__PATTERN1__',
+ 'description' => '/[\\\\w\\\\s\\\\*\\\\>\\\\/\\\\..?-]*/',
+ 'lookahead' => 0,
+ 'rdelim' => '/',
+ 'line' => 156,
+ 'mod' => '',
+ 'ldelim' => '/'
+ }, 'Parse::RecDescent::Token' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'text2',
+ 'vars' => '',
+ 'line' => 156
+ }, 'Parse::RecDescent::Rule' ),
+ 'pointer' => 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' => '*',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'*\'',
+ 'lookahead' => 0,
+ 'line' => 107
+ }, 'Parse::RecDescent::Literal' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'pointer',
+ 'vars' => '',
+ 'line' => 107
+ }, 'Parse::RecDescent::Rule' ),
+ 'type' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'type',
+ 'struct',
+ 'union',
+ 'identifier'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'unsigned',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'unsigned\'',
+ 'lookahead' => 0,
+ 'line' => 145
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'type',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 145
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 145,
+ 'code' => '{ "$item[1] $item[2]" }'
+ }, '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' => 'long',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'long\'',
+ 'lookahead' => 0,
+ 'line' => 146
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 146,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 146
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '2',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'string',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'string\'',
+ 'lookahead' => 0,
+ 'line' => 147
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 147,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 147
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '3',
+ 'strcount' => 1,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'pattern' => 'wchar_t',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'wchar_t\'',
+ 'lookahead' => 0,
+ 'line' => 148
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 148,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 148
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '4',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'struct',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 149
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 149,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 149
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '5',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'union',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 150
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 150,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 150
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '6',
+ 'strcount' => 0,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 151
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 151,
+ 'code' => '{ $item[1] }'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => 151
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '7',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '',
+ 'lookahead' => 0,
+ 'line' => 152
+ }, 'Parse::RecDescent::Error' )
+ ],
+ 'line' => 152
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'type',
+ 'vars' => '',
+ 'line' => 144
+ }, 'Parse::RecDescent::Rule' ),
+ 'module_param' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'identifier',
+ 'text'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 2,
+ 'dircount' => 0,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'identifier',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 16
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => '(',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'(\'',
+ 'lookahead' => 0,
+ 'line' => 16
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'text',
+ 'matchrule' => 0,
+ 'implicit' => undef,
+ 'argcode' => undef,
+ 'lookahead' => 0,
+ 'line' => 16
+ }, 'Parse::RecDescent::Subrule' ),
+ bless( {
+ 'pattern' => ')',
+ 'hashname' => '__STRING2__',
+ 'description' => '\')\'',
+ 'lookahead' => 0,
+ 'line' => 16
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 17,
+ 'code' => '{{ "$item{identifier}" => "$item{text}" }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '',
+ 'lookahead' => 0,
+ 'line' => 18
+ }, 'Parse::RecDescent::Error' )
+ ],
+ 'line' => 18
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'module_param',
+ 'vars' => '',
+ 'line' => 16
+ }, 'Parse::RecDescent::Rule' ),
+ 'union' => bless( {
+ 'impcount' => 0,
+ 'calls' => [
+ 'property_list',
+ 'union_element'
+ ],
+ 'changed' => 0,
+ 'opcount' => 0,
+ 'prods' => [
+ bless( {
+ 'number' => '0',
+ 'strcount' => 3,
+ 'dircount' => 1,
+ 'uncommit' => undef,
+ 'error' => undef,
+ 'patcount' => 0,
+ 'actcount' => 1,
+ 'items' => [
+ bless( {
+ 'subrule' => 'property_list',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 49
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => 'union',
+ 'hashname' => '__STRING1__',
+ 'description' => '\'union\'',
+ 'lookahead' => 0,
+ 'line' => 49
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__DIRECTIVE1__',
+ 'name' => '<commit>',
+ 'lookahead' => 0,
+ 'line' => 49,
+ 'code' => '$commit = 1'
+ }, 'Parse::RecDescent::Directive' ),
+ bless( {
+ 'pattern' => '{',
+ 'hashname' => '__STRING2__',
+ 'description' => '\'\\{\'',
+ 'lookahead' => 0,
+ 'line' => 49
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'subrule' => 'union_element',
+ 'expected' => undef,
+ 'min' => 0,
+ 'argcode' => undef,
+ 'max' => 100000000,
+ 'matchrule' => 0,
+ 'repspec' => 's?',
+ 'lookahead' => 0,
+ 'line' => 49
+ }, 'Parse::RecDescent::Repetition' ),
+ bless( {
+ 'pattern' => '}',
+ 'hashname' => '__STRING3__',
+ 'description' => '\'\\}\'',
+ 'lookahead' => 0,
+ 'line' => 49
+ }, 'Parse::RecDescent::Literal' ),
+ bless( {
+ 'hashname' => '__ACTION1__',
+ 'lookahead' => 0,
+ 'line' => 50,
+ 'code' => '{{
+ "TYPE" => "UNION",
+ "PROPERTIES" => util::FlattenArray($item[1]),
+ "DATA" => $item[5]
+ }}'
+ }, 'Parse::RecDescent::Action' )
+ ],
+ 'line' => undef
+ }, 'Parse::RecDescent::Production' ),
+ bless( {
+ 'number' => '1',
+ 'strcount' => 0,
+ 'dircount' => 1,
+ 'uncommit' => 0,
+ 'error' => 1,
+ 'patcount' => 0,
+ 'actcount' => 0,
+ 'items' => [
+ bless( {
+ 'msg' => '',
+ 'hashname' => '__DIRECTIVE1__',
+ 'commitonly' => '?',
+ 'lookahead' => 0,
+ 'line' => 55
+ }, 'Parse::RecDescent::Error' ),
+ bless( {
+ 'name' => '<reject>',
+ 'lookahead' => 0,
+ 'line' => 0
+ }, 'Parse::RecDescent::UncondReject' )
+ ],
+ 'line' => 55
+ }, 'Parse::RecDescent::Production' )
+ ],
+ 'name' => 'union',
+ 'vars' => '',
+ 'line' => 49
+ }, 'Parse::RecDescent::Rule' )
+ }
+ }, 'Parse::RecDescent' );
+} \ No newline at end of file
diff --git a/source4/build/pidl/pidl.pl b/source4/build/pidl/pidl.pl
index 06bdb92b12..484223d4aa 100755
--- a/source4/build/pidl/pidl.pl
+++ b/source4/build/pidl/pidl.pl
@@ -8,12 +8,10 @@
use strict;
-my($PIDLBASE) = "$ENV{HOME}/pidl";
use lib "$ENV{HOME}/pidl";
use Getopt::Long;
-use Data::Dumper;
-use Parse::RecDescent;
+use idl;
use dump;
use header;
use parser;
@@ -43,8 +41,7 @@ sub IdlParse($)
$item[1] :
"XX_" . $item[0] . "_XX[$#item]" };
my($filename) = shift;
- my($grammer) = util::FileLoad("$PIDLBASE/idl.gram");
- my($parser) = Parse::RecDescent->new($grammer);
+ my($parser) = idl->new;
my($saved_sep) = $/;
undef $/;
diff --git a/source4/build/pidl/util.pm b/source4/build/pidl/util.pm
index 53ad4942c7..c3f46dc817 100644
--- a/source4/build/pidl/util.pm
+++ b/source4/build/pidl/util.pm
@@ -99,7 +99,7 @@ sub FileLoad($)
{
my($filename) = shift;
local(*INPUTFILE);
- open(INPUTFILE, $filename) || die "can't load $filename";
+ open(INPUTFILE, $filename) || return undef;
my($saved_delim) = $/;
undef $/;
my($data) = <INPUTFILE>;