Revision: 99
Author: cosimo.streppone
Date: Mon Sep 28 13:29:30 2009
Log: Now the comp_stmt(?) rule triggers correctly.
Fixed the grammar properly to allow clean regen of Java::Javap::Grammar.
http://code.google.com/p/java2perl6/source/detail?r=99
Modified:
/trunk/lib/Java/Javap/Grammar.pm
/trunk/lib/Java/Javap/javap.grammar
=======================================
--- /trunk/lib/Java/Javap/Grammar.pm Sun Sep 27 12:37:52 2009
+++ /trunk/lib/Java/Javap/Grammar.pm Mon Sep 28 13:29:30 2009
@@ -6,8 +6,8 @@
package Parse::RecDescent::Java::Javap::Grammar;
use strict;
-use Carp ();
use vars qw($skip $AUTOLOAD );
+...@parse::RecDescent::Java::Javap::Grammar::ISA = ();
$skip = '\s*';
my %methods;
@@ -18,11 +18,11 @@
{
local $SIG{__WARN__} = sub {0};
# PRETEND TO BE IN Parse::RecDescent NAMESPACE
-*Parse::RecDescent::Java::Javap::Grammar::AUTOLOAD = sub
-{
- no strict 'refs';
- $AUTOLOAD =~
s/^Parse::RecDescent::Java::Javap::Grammar/Parse::RecDescent/;
- goto &{$AUTOLOAD};
+*Parse::RecDescent::Java::Javap::Grammar::AUTOLOAD = sub
+{
+ no strict 'refs';
+ $AUTOLOAD =~
s/^Parse::RecDescent::Java::Javap::Grammar/Parse::RecDescent/;
+ goto &{$AUTOLOAD};
}
}
@@ -34,206 +34,209 @@
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
- my $thisrule = $thisparser->{"rules"}{"variable"};
-
- Parse::RecDescent::_trace(q{Trying rule: [variable]},
- Parse::RecDescent::_tracefirst($_[1]),
- q{variable},
- $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: [ACCESS var_modifier arg
NAME ';']},
- Parse::RecDescent::_tracefirst($_[1]),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- my $thisprod = $thisrule->{"prods"}[0];
- $text = $_[1];
- my $_savetext;
- @item = (q{variable});
- %item = (__RULE__ => q{variable});
- my $repcount = 0;
+ my $thisrule = $thisparser->{"rules"}{"variable"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [variable]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{variable},
+ $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 $current_match;
+ my $expectation = new Parse::RecDescent::Expectation(q{ACCESS});
+ $expectation->at($_[1]);
+
+ my $thisline;
+ tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [ACCESS
var_modifier arg NAME ';']},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{variable});
+ %item = (__RULE__ => q{variable});
+ my $repcount = 0;
- Parse::RecDescent::_trace(q{Trying subrule: [ACCESS]},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(q{})->at($text);
- unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::ACCESS($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
- {
-
- Parse::RecDescent::_trace(q{<<Didn't match subrule:
[ACCESS]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: [ACCESS]<< (return value:
[}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{ACCESS}} = $_tok;
- push @item, $_tok;
-
- }
-
- Parse::RecDescent::_trace(q{Trying repeated subrule:
[var_modifier]},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->is(q{var_modifier})->at($text);
-
- unless (defined ($_tok = $thisparser->_parserepeat($text,
\&Parse::RecDescent::Java::Javap::Grammar::var_modifier, 0, 100000000,
$_noactions,$expectation,undef)))
- {
- Parse::RecDescent::_trace(q{<<Didn't match repeated subrule:
[var_modifier]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched repeated subrule: [var_modifier]<<
(}
- . @$_tok . q{ times)},
-
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{var_modifier(s?)}} = $_tok;
- push @item, $_tok;
-
+ Parse::RecDescent::_trace(q{Trying subrule: [ACCESS]},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::ACCESS($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule:
[ACCESS]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [ACCESS]<< (return
value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{ACCESS}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying repeated subrule:
[var_modifier]},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->is(q{var_modifier})->at($text);
+
+ unless (defined ($_tok = $thisparser->_parserepeat($text,
\&Parse::RecDescent::Java::Javap::Grammar::var_modifier, 0, 100000000,
$_noactions,$expectation,sub { \...@arg })))
+ {
+ Parse::RecDescent::_trace(q{<<Didn't match repeated subrule:
[var_modifier]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched repeated subrule:
[var_modifier]<< (}
+ . @$_tok . q{ times)},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{var_modifier(s?)}} = $_tok;
+ push @item, $_tok;
+
- Parse::RecDescent::_trace(q{Trying subrule: [arg]},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(q{arg})->at($text);
- unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::arg($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
- {
-
- Parse::RecDescent::_trace(q{<<Didn't match subrule:
[arg]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: [arg]<< (return
value: [}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{arg}} = $_tok;
- push @item, $_tok;
-
- }
-
- Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(q{NAME})->at($text);
- unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
- {
-
- Parse::RecDescent::_trace(q{<<Didn't match subrule:
[NAME]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return
value: [}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{NAME}} = $_tok;
- push @item, $_tok;
-
- }
-
- Parse::RecDescent::_trace(q{Trying terminal: [';']},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $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{variable},
- $tracelevel)
- if defined $::RD_TRACE;
-
-
- $_tok = ($_noactions) ? 0 : do {
+ Parse::RecDescent::_trace(q{Trying subrule: [arg]},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{arg})->at($text);
+ unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::arg($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [arg]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [arg]<< (return
value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{arg}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{NAME})->at($text);
+ unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return
value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{NAME}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying terminal: [';']},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $lastsep = "";
+ $expectation->is(q{';'})->at($text);
+
+
+ unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~
m/\A\;/)
+ {
+
+ $expectation->failed();
+ Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ last;
+ }
+ $current_match = substr($text, $-[0], $+[0] - $-[0]);
+ substr($text,0,length($current_match),q{});
+ Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+ . $current_match . q{])},
+ Parse::RecDescent::_tracefirst($text))
+ if defined $::RD_TRACE;
+ push @item, $item{__STRING1__}=$current_match;
+
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {
{
body_element => 'variable',
access => $item{ ACCESS },
@@ -241,67 +244,67 @@
type => $item{ arg }[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;
-
+ 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: [ACCESS var_modifier
arg NAME ';']<<},
- Parse::RecDescent::_tracefirst($text),
- q{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- $_matched = 1;
- last;
- }
+ Parse::RecDescent::_trace(q{>>Matched production: [ACCESS
var_modifier arg NAME ';']<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{variable},
+ $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{variable},
- $tracelevel)
- if defined $::RD_TRACE;
- return undef;
- }
- if (!defined($return) && defined($score))
- {
- Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
- q{variable},
- $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{variable},
- $tracelevel);
- Parse::RecDescent::_trace(q{(consumed: [} .
- Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) .
q{])},
- Parse::RecDescent::_tracefirst($text),
- , q{variable},
- $tracelevel)
- }
- $_[1] = $text;
- return $return;
+ unless ( $_matched || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{variable},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{variable},
+ $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{variable},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{variable},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \...@args)
@@ -311,123 +314,124 @@
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
- my $thisrule = $thisparser->{"rules"}{"arg"};
-
- Parse::RecDescent::_trace(q{Trying rule: [arg]},
- Parse::RecDescent::_tracefirst($_[1]),
- q{arg},
- $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: [qualified_name
array_depth]},
- Parse::RecDescent::_tracefirst($_[1]),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- my $thisprod = $thisrule->{"prods"}[0];
- $text = $_[1];
- my $_savetext;
- @item = (q{arg});
- %item = (__RULE__ => q{arg});
- my $repcount = 0;
+ my $thisrule = $thisparser->{"rules"}{"arg"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [arg]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{arg},
+ $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 $current_match;
+ my $expectation = new
Parse::RecDescent::Expectation(q{qualified_name});
+ $expectation->at($_[1]);
+
+ my $thisline;
+ tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+ while (!$_matched && !$commit)
+ {
+
+ Parse::RecDescent::_trace(q{Trying production: [qualified_name
array_depth]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ my $thisprod = $thisrule->{"prods"}[0];
+ $text = $_[1];
+ my $_savetext;
+ @item = (q{arg});
+ %item = (__RULE__ => q{arg});
+ my $repcount = 0;
- Parse::RecDescent::_trace(q{Trying subrule: [qualified_name]},
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(q{})->at($text);
- unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::qualified_name($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
- {
-
- Parse::RecDescent::_trace(q{<<Didn't match subrule:
[qualified_name]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: [qualified_name]<<
(return value: [}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{qualified_name}} = $_tok;
- push @item, $_tok;
-
- }
-
- Parse::RecDescent::_trace(q{Trying subrule: [array_depth]},
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- if (1) { no strict qw{refs};
- $expectation->is(q{array_depth})->at($text);
- unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::array_depth($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
- {
-
- Parse::RecDescent::_trace(q{<<Didn't match subrule:
[array_depth]>>},
-
Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- $expectation->failed();
- last;
- }
- Parse::RecDescent::_trace(q{>>Matched subrule: [array_depth]<< (return
value: [}
- . $_tok . q{]},
-
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- $item{q{array_depth}} = $_tok;
- push @item, $_tok;
-
- }
-
- Parse::RecDescent::_trace(q{Trying action},
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
-
-
- $_tok = ($_noactions) ? 0 : do {
+ Parse::RecDescent::_trace(q{Trying subrule: [qualified_name]},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{})->at($text);
+ unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::qualified_name($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule:
[qualified_name]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [qualified_name]<<
(return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{qualified_name}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying subrule: [array_depth]},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ if (1) { no strict qw{refs};
+ $expectation->is(q{array_depth})->at($text);
+ unless (defined ($_tok =
Parse::RecDescent::Java::Javap::Grammar::array_depth($thisparser,$text,$repeating,$_noactions,sub
{ \...@arg })))
+ {
+
+ Parse::RecDescent::_trace(q{<<Didn't match subrule:
[array_depth]>>},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $expectation->failed();
+ last;
+ }
+ Parse::RecDescent::_trace(q{>>Matched subrule: [array_depth]<<
(return value: [}
+ . $_tok . q{]},
+
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ $item{q{array_depth}} = $_tok;
+ push @item, $_tok;
+
+ }
+
+ Parse::RecDescent::_trace(q{Trying action},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+
+
+ $_tok = ($_noactions) ? 0 : do {
my $array_text = '';
foreach my $i ( 1 .. $item[2] ) {
$array_text .= 'Array of ';
@@ -440,67 +444,67 @@
}
]
};
- 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;
-
+ 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: [qualified_name
array_depth]<<},
- Parse::RecDescent::_tracefirst($text),
- q{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- $_matched = 1;
- last;
- }
+ Parse::RecDescent::_trace(q{>>Matched production: [qualified_name
array_depth]<<},
+ Parse::RecDescent::_tracefirst($text),
+ q{arg},
+ $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{arg},
- $tracelevel)
- if defined $::RD_TRACE;
- return undef;
- }
- if (!defined($return) && defined($score))
- {
- Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
- q{arg},
- $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{arg},
- $tracelevel);
- Parse::RecDescent::_trace(q{(consumed: [} .
- Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) .
q{])},
- Parse::RecDescent::_tracefirst($text),
- , q{arg},
- $tracelevel)
- }
- $_[1] = $text;
- return $return;
+ unless ( $_matched || defined($score) )
+ {
+
+
+ $_[1] = $text; # NOT SURE THIS IS NEEDED
+ Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{arg},
+ $tracelevel)
+ if defined $::RD_TRACE;
+ return undef;
+ }
+ if (!defined($return) && defined($score))
+ {
+ Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+ q{arg},
+ $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{arg},
+ $tracelevel);
+ Parse::RecDescent::_trace(q{(consumed: [} .
+
Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+ Parse::RecDescent::_tracefirst($text),
+ , q{arg},
+ $tracelevel)
+ }
+ $_[1] = $text;
+ return $return;
}
# ARGS ARE: ($parser, $text; $repeating, $_noactions, \...@args)
@@ -510,231 +514,238 @@
use vars q{$tracelevel};
local $tracelevel = ($tracelevel||0)+1;
$ERRORS = 0;
- my $thisrule = $thisparser->{"rules"}{"constant_modifier"};
-
- Parse::RecDescent::_trace(q{Trying rule: [constant_modifier]},
- Parse::RecDescent::_tracefirst($_[1]),
- q{constant_modifier},
- $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: ['final']},
- Parse::RecDescent::_tracefirst($_[1]),
- q{constant_modifier},
- $tracelevel)
- if defined $::RD_TRACE;
- my $thisprod = $thisrule->{"prods"}[0];
- $text = $_[1];
- my $_savetext;
- @item = (q{constant_modifier});
- %item = (__RULE__ => q{constant_modifier});
- my $repcount = 0;
+ my $thisrule = $thisparser->{"rules"}{"constant_modifier"};
+
+ Parse::RecDescent::_trace(q{Trying rule: [constant_modifier]},
+ Parse::RecDescent::_tracefirst($_[1]),
+ q{constant_modifier},
+ $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="";
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/lib/Java/Javap/javap.grammar Tue Aug 11 02:48:33 2009
+++ /trunk/lib/Java/Javap/javap.grammar Mon Sep 28 13:29:30 2009
@@ -9,7 +9,9 @@
comp_unit : comp_stmt(?)
comp_unit_decl '{' body '}' {
my $retval = $item{ comp_unit_decl };
- $retval->{ compiled_from } = "$item{ comp_stmt }.java";
+ # Match of subrule X(?) always generates an array
+ my $comp_stmt = $item{ q{comp_stmt(?)} }->[0];
+ $retval->{ compiled_from } = "${comp_stmt}.java";
$retval->{ contents } = $item{ body };
$retval->{ methods } = \%methods;
$retval->{ constructors } = $constructors;