mirror of
https://github.com/samba-team/samba.git
synced 2025-11-30 20:23:49 +03:00
12850 lines
553 KiB
Perl
12850 lines
553 KiB
Perl
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' );
|
|
}
|