[java2perl6] r99 committed - Now the comp_stmt(?) rule triggers correctly....

[email protected] Mon, 28 Sep 2009 20:30:17 +0000
Newsgroups perl.dbdi.dev
Message-ID <[email protected]>
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;