Only in perl-byacc1.8.2: TAGS
diff -C 2 perl-byacc1.8.2.orig/defs.h perl-byacc1.8.2/defs.h
*** perl-byacc1.8.2.orig/defs.h	Fri Jan 15 19:28:53 1993
--- perl-byacc1.8.2/defs.h	Tue Apr 28 23:07:12 1998
***************
*** 209,212 ****
--- 209,213 ----
  extern char tflag;
  extern char vflag;
+ extern char perl5005flag;
  
  extern Language language;
***************
*** 227,230 ****
--- 228,232 ----
  extern char *define_prefix;
  extern char *symbol_prefix;
+ extern char *perl_package;
  
  extern char *action_file_name;
diff -C 2 perl-byacc1.8.2.orig/main.c perl-byacc1.8.2/main.c
*** perl-byacc1.8.2.orig/main.c	Fri Jan 15 20:08:00 1993
--- perl-byacc1.8.2/main.c	Tue Apr 28 23:15:22 1998
***************
*** 9,12 ****
--- 9,13 ----
  char tflag;
  char vflag;
+ char perl5005flag;
  
  char *myname = PROGRAM;
***************
*** 24,27 ****
--- 25,30 ----
  char** suffixes = c_suffixes;
  
+ char *perl_package = 0;
+ 
  int lineno;
  int outline;
***************
*** 135,139 ****
  {
      fprintf(stderr,
! 	    "usage: %s [-CPcdlrtv] [-b file_prefix] [-p symbol_prefix] filename\n",
  	    myname);
      exit(1);
--- 138,142 ----
  {
      fprintf(stderr,
! 	    "usage: %s [-Ccdlrtv] [-b file_prefix] [-p sym_prefix] [-P package] filename\n",
  	    myname);
      exit(1);
***************
*** 186,189 ****
--- 189,196 ----
  	    goto no_more_options;
  
+ 	case '5':
+ 	    perl5005flag = 1;
+ 	    break;
+ 
  	case 'b':
  	    if (*++s)
***************
*** 211,215 ****
  	case 'p':
  	    if (*++s)
! 		 symbol_prefix = s;
  	    else if (++i < argc)
  		symbol_prefix = argv[i];
--- 218,222 ----
  	case 'p':
  	    if (*++s)
! 		symbol_prefix = s;
  	    else if (++i < argc)
  		symbol_prefix = argv[i];
***************
*** 221,225 ****
  	    language = PERL;
  	    suffixes = perl_suffixes;
! 	    break;
  
  	case 'r':
--- 228,238 ----
  	    language = PERL;
  	    suffixes = perl_suffixes;
! 	    if (*++s)
! 	        perl_package = s;
! 	    else if (++i < argc)
! 	        perl_package = argv[i];
! 	    else
! 	        usage();
! 	    continue;
  
  	case 'r':
***************
*** 293,298 ****
  
      if (language == PERL && rflag)
! 	fprintf(stderr, "%s: Warning: -r not recommended with Perl mode.\n",
! 		myname);
  
  no_more_options:;
--- 306,317 ----
  
      if (language == PERL && rflag)
!         fprintf(stderr, "%s: Warning: -r not recommended with Perl mode.\n",
! 	        myname);
!     if (language == PERL && strcmp(symbol_prefix, "yy") != 0)
!         fprintf(stderr, "%s: Warning: -p not recommended with Perl mode.\n",
! 	        myname);
!     if (language != PERL && perl5005flag)
!         fprintf(stderr, "%s: Warning: -5 has no effect without Perl mode.\n",
! 	        myname);
  
  no_more_options:;
***************
*** 442,448 ****
      len = strlen(file_prefix);
  
!     output_file_name = MALLOC(len + strlen(suffixes[OUTPUT_SUFFIX]) + 1);
!     strcpy(output_file_name, file_prefix);
!     strcpy(output_file_name + len, suffixes[OUTPUT_SUFFIX]);
  
      if (rflag)
--- 461,475 ----
      len = strlen(file_prefix);
  
!     if (language == PERL) {
!       int len = strlen(perl_package);
!       output_file_name = MALLOC(len + 4);
!       strcpy(output_file_name, perl_package);
!       strcpy(output_file_name + len, ".pm");
!     }
!     else {
!       output_file_name = MALLOC(len + strlen(suffixes[OUTPUT_SUFFIX]) + 1);
!       strcpy(output_file_name, file_prefix);
!       strcpy(output_file_name + len, suffixes[OUTPUT_SUFFIX]);
!     }
  
      if (rflag)
diff -C 2 perl-byacc1.8.2.orig/output.c perl-byacc1.8.2/output.c
*** perl-byacc1.8.2.orig/output.c	Fri Jan 15 19:29:28 1993
--- perl-byacc1.8.2/output.c	Tue Apr 28 23:20:25 1998
***************
*** 71,82 ****
      output_stype();
      if (rflag) write_section(tables);
      write_section(header);
      if (language == C)
  	output_trailing_text();
      write_section(body);
      output_semantic_actions();
      write_section(trailer);
!     if (language == PERL)
  	output_trailing_text();
      free_derives();
      free_nullable();
--- 71,102 ----
      output_stype();
      if (rflag) write_section(tables);
+     if (language == PERL && perl5005flag) {
+       fprintf(code_file,
+ 	      "use fields qw(yylex yyerror yydebug yynerrs yyerrflag yym \n");
+       fprintf(code_file,
+ 	      "              yyn yyss yyssp yyvs yyvsp yystate yyval \n");
+       fprintf(code_file,
+ 	      "              yylval yychar yys);\n");
+     }
      write_section(header);
      if (language == C)
  	output_trailing_text();
+     if (language == PERL) {
+       fprintf(code_file, "sub new {\n");
+       if (perl5005flag) {
+ 	fprintf(code_file, "  my %s $p = bless [\\%FIELDS], $_[0];\n",
+ 		perl_package);
+       }
+       else {
+ 	fprintf(code_file, "  my $p = bless {}, $_[0];\n");
+       }
+     }
      write_section(body);
      output_semantic_actions();
      write_section(trailer);
!     if (language == PERL) {
  	output_trailing_text();
+ 	fprintf(code_file, "1;\n");
+     }
      free_derives();
      free_nullable();
diff -C 2 perl-byacc1.8.2.orig/reader.c perl-byacc1.8.2/reader.c
*** perl-byacc1.8.2.orig/reader.c	Fri Jan 15 19:29:30 1993
--- perl-byacc1.8.2/reader.c	Tue Apr 28 17:37:36 1998
***************
*** 1,2 ****
--- 1,5 ----
+ /* $Id: patch,v 1.1 1998/04/29 06:34:46 jake Exp $ */
+ /* Modified for perl5-byacc-patches-0.5 */
+ 
  #include "defs.h"
  
***************
*** 1379,1383 ****
  
      if (language == PERL)
! 	fprintf(f, "if ($%sn == %d) {\n", symbol_prefix, nrules - 2);
      else
  	fprintf(f, "case %d:\n", nrules - 2);
--- 1382,1386 ----
  
      if (language == PERL)
! 	fprintf(f, "if ($p->{%sn} == %d) {\n", symbol_prefix, nrules - 2);
      else
  	fprintf(f, "case %d:\n", nrules - 2);
***************
*** 1406,1410 ****
  	    {
  		if (language == PERL)
! 		    fprintf(f, "$%sval", symbol_prefix);
  		else
  		    fprintf(f, "%sval.%s", symbol_prefix, tag);
--- 1409,1413 ----
  	    {
  		if (language == PERL)
! 		    fprintf(f, "$p->{%sval}", symbol_prefix);
  		else
  		    fprintf(f, "%sval.%s", symbol_prefix, tag);
***************
*** 1418,1422 ****
  		if (i > n) dollar_warning(d_lineno, i);
  		if (language == PERL)
! 		    fprintf(f, "$%svs[$%svsp-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
--- 1421,1425 ----
  		if (i > n) dollar_warning(d_lineno, i);
  		if (language == PERL)
! 		    fprintf(f, "$p->{%svs}->[$p->{%svsp}-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
***************
*** 1430,1434 ****
  		i = -get_number() - n;
  		if (language == PERL)
! 		    fprintf(f, "$%svsp[$%svsp-%d]",
  			    symbol_prefix, symbol_prefix, -i);
  		else
--- 1433,1437 ----
  		i = -get_number() - n;
  		if (language == PERL)
! 		    fprintf(f, "$p->{%svsp}->[$p->{%svsp}-%d]",
  			    symbol_prefix, symbol_prefix, -i);
  		else
***************
*** 1447,1456 ****
  		if (tag == 0) untyped_lhs();
  		if (language == PERL)
! 		    fprintf(f, "$%sval", symbol_prefix);
  		else
  		    fprintf(f, "%sval.%s", symbol_prefix, tag);
  	    }
  	    else if (language == PERL)
! 		fprintf(f, "$%sval", symbol_prefix);
  	    else
  		fprintf(f, "%sval", symbol_prefix);
--- 1450,1459 ----
  		if (tag == 0) untyped_lhs();
  		if (language == PERL)
! 		    fprintf(f, "$p->{%sval}", symbol_prefix);
  		else
  		    fprintf(f, "%sval.%s", symbol_prefix, tag);
  	    }
  	    else if (language == PERL)
! 		fprintf(f, "$p->{%sval}", symbol_prefix);
  	    else
  		fprintf(f, "%sval", symbol_prefix);
***************
*** 1469,1473 ****
  		if (tag == 0) untyped_rhs(i, pitem[nitems + i - n - 1]->name);
  		if (language == PERL)
! 		    fprintf(f, "$%svs[$%svsp-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
--- 1472,1476 ----
  		if (tag == 0) untyped_rhs(i, pitem[nitems + i - n - 1]->name);
  		if (language == PERL)
! 		    fprintf(f, "$p->{%svs}->[$p->{%svsp}-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
***************
*** 1479,1483 ****
  		    dollar_warning(lineno, i);
  		if (language == PERL)
! 		    fprintf(f, "$%svs[$%svsp-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
--- 1482,1486 ----
  		    dollar_warning(lineno, i);
  		if (language == PERL)
! 		    fprintf(f, "$p->{%svs}->[$p->{%svsp}-%d]",
  			    symbol_prefix, symbol_prefix, n - i);
  		else
***************
*** 1493,1497 ****
  		unknown_rhs(-i);
  	    if (language == PERL)
! 		fprintf(f, "$%svs[$%svsp-%d]",
  			symbol_prefix, symbol_prefix, i + n);
  	    else
--- 1496,1500 ----
  		unknown_rhs(-i);
  	    if (language == PERL)
! 		fprintf(f, "$p->{%svs}->[$p->{%svsp}-%d]",
  			symbol_prefix, symbol_prefix, i + n);
  	    else
***************
*** 1523,1527 ****
  	if (depth > 0) goto loop;
  	if (language == PERL)
! 	    fprintf(f, "\nlast switch; }\n");
  	else
  	    fprintf(f, "\nbreak;\n");
--- 1526,1530 ----
  	if (depth > 0) goto loop;
  	if (language == PERL)
! 	  fprintf(f, "\n}\n");
  	else
  	    fprintf(f, "\nbreak;\n");
***************
*** 1541,1545 ****
  
  	if (language == PERL)
! 	    fprintf(f, "\nlast switch;\n} }\n");
  	else
  	    fprintf(f, "}\nbreak;\n");
--- 1544,1548 ----
  
  	if (language == PERL)
! 	  fprintf(f, "}\n}\n");
  	else
  	    fprintf(f, "}\nbreak;\n");
***************
*** 2051,2054 ****
--- 2054,2059 ----
  {
      write_section(banner);
+     if (language == PERL)
+         fprintf(code_file, "package %s;\n", perl_package);
      create_symbol_table();
      read_declarations();
diff -C 2 perl-byacc1.8.2.orig/skeleton.c perl-byacc1.8.2/skeleton.c
*** perl-byacc1.8.2.orig/skeleton.c	Fri Jan 15 20:12:28 1993
--- perl-byacc1.8.2/skeleton.c	Tue Apr 28 23:16:48 1998
***************
*** 18,23 ****
  static char *perl_banner[] =
  {
!     "$yysccsid = \"@(#)yaccpar 1.8 (Berkeley) 01/20/91 (Perl 2.0 12/31/92)\";",
!     "#define YYBYACC 1",
      (char *) NULL
  };
--- 18,22 ----
  static char *perl_banner[] =
  {
!     "# @(#)yaccpar 1.8 (Berkeley) 01/20/91 (JAKE-P5BP-0.6 04/26/98)",
      (char *) NULL
  };
***************
*** 77,86 ****
  static char *perl_header[] =
  {
!     "sub yyclearin { $yychar = -1; }",
!     "sub yyerrok { $yyerrflag = 0; }",
!     "$YYSTACKSIZE = $YYSTACKSIZE || $YYMAXDEPTH || 500;",
!     "$YYMAXDEPTH = $YYMAXDEPTH || $YYSTACKSIZE || 500;",
!     "$yyss[$YYSTACKSIZE] = 0;",
!     "$yyvs[$YYSTACKSIZE] = 0;",
      (char *) NULL
  };
--- 76,89 ----
  static char *perl_header[] =
  {
!     "sub yyclearin {",
!     "  my PP $p;",
!     "  ($p) = @_;",
!     "  $p->{yychar} = -1;",
!     "}",
!     "sub yyerrok {",
!     "  my PP $p;",
!     "  ($p) = @_;",
!     "  $p->{yyerrflag} = 0;",
!     "}",
      (char *) NULL
  };
***************
*** 236,268 ****
  static char *perl_body[] =
  {
!     "sub YYERROR { ++$yynerrs; &yy_err_recover; }",
!     "sub yy_err_recover",
!     "{",
!     "  if ($yyerrflag < 3)",
      "  {",
!     "    $yyerrflag = 3;",
      "    while (1)",
      "    {",
!     "      if (($yyn = $yysindex[$yyss[$yyssp]]) && ",
!     "          ($yyn += $YYERRCODE) >= 0 && ",
!     "          $yycheck[$yyn] == $YYERRCODE)",
      "      {",
!     "#if YYDEBUG",
!     "       print \"yydebug: state $yyss[$yyssp], error recovery shifting\",",
!     "             \" to state $yytable[$yyn]\\n\" if $yydebug;",
!     "#endif",
!     "        $yyss[++$yyssp] = $yystate = $yytable[$yyn];",
!     "        $yyvs[++$yyvsp] = $yylval;",
      "        next yyloop;",
      "      }",
      "      else",
      "      {",
!     "#if YYDEBUG",
!     "        print \"yydebug: error recovery discarding state \",",
!     "              $yyss[$yyssp], \"\\n\"  if $yydebug;",
!     "#endif",
!     "        return(1) if $yyssp <= 0;",
!     "        --$yyssp;",
!     "        --$yyvsp;",
      "      }",
      "    }",
--- 239,287 ----
  static char *perl_body[] =
  {
!   /* This is kludgy--the top of this sub needs to vary based on -5, so
!    * it was moved to output.c.
!    */
!     "  $p->{yylex} = $_[1];",
!     "  $p->{yyerror} = $_[2];",
!     "  $p->{yydebug} = $_[3];",
!     "  return $p;",
!     "}",
!     "sub YYERROR {",
!     "  my PP $p;",
!     "  ($p) = @_;",
!     "  ++$p->{yynerrs};",
!     "  $p->yy_err_recover;",
!     "}",
!     "sub yy_err_recover {",
!     "  my PP $p;",
!     "  ($p) = @_;",
!     "  if ($p->{yyerrflag} < 3)",
      "  {",
!     "    $p->{yyerrflag} = 3;",
      "    while (1)",
      "    {",
!     "      if (($p->{yyn} = $yysindex[$p->{yyss}->[$p->{yyssp}]]) && ",
!     "          ($p->{yyn} += $YYERRCODE) >= 0 && ",
!     "          $p->{yyn} <= $#yycheck &&",
!     "          $yycheck[$p->{yyn}] == $YYERRCODE)",
      "      {",
!     "        warn(\"yydebug: state \" . ",
!     "                     $p->{yyss}->[$p->{yyssp}] . ",
!     "                     \", error recovery shifting to state\" . ",
!     "                     $yytable[$p->{yyn}] . \"\\n\") ",
!     "                       if $p->{yydebug};",
!     "        $p->{yyss}->[++$p->{yyssp}] = ",
!     "          $p->{yystate} = $yytable[$p->{yyn}];",
!     "        $p->{yyvs}->[++$p->{yyvsp}] = $p->{yylval};",
      "        next yyloop;",
      "      }",
      "      else",
      "      {",
!     "        warn(\"yydebug: error recovery discarding state \".",
!     "              $p->{yyss}->[$p->{yyssp}]. \"\\n\") ",
!     "                if $p->{yydebug};",
!     "        return(undef) if $p->{yyssp} <= 0;",
!     "        --$p->{yyssp};",
!     "        --$p->{yyvsp};",
      "      }",
      "    }",
***************
*** 270,285 ****
      "  else",
      "  {",
!     "    return (1) if $yychar == 0;",
!     "#if YYDEBUG",
!     "    if ($yydebug)",
      "    {",
!     "      $yys = '';",
!     "      if ($yychar <= $YYMAXTOKEN) { $yys = $yyname[$yychar]; }",
!     "      if (!$yys) { $yys = 'illegal-symbol'; }",
!     "      print \"yydebug: state $yystate, error recovery discards \",",
!     "            \"token $yychar ($yys)\\n\";",
      "    }",
!     "#endif",
!     "    $yychar = -1;",
      "    next yyloop;",
      "  }",
--- 289,305 ----
      "  else",
      "  {",
!     "    return (undef) if $p->{yychar} == 0;",
!     "    if ($p->{yydebug})",
      "    {",
!     "      $p->{yys} = '';",
!     "      if ($p->{yychar} <= $YYMAXTOKEN) { $p->{yys} = ",
!     "        $yyname[$p->{yychar}]; }",
!     "      if (!$p->{yys}) { $p->{yys} = 'illegal-symbol'; }",
!     "      warn(\"yydebug: state \" . $p->{yystate} . ",
!     "                   \", error recovery discards \" . ",
!     "                   \"token \" . $p->{yychar} . \"(\" . ",
!     "                   $p->{yys} . \")\\n\");",
      "    }",
!     "    $p->{yychar} = -1;",
      "    next yyloop;",
      "  }",
***************
*** 287,357 ****
      "} # yy_err_recover",
      "",
!     "sub yyparse",
!     "{",
!     "#ifdef YYDEBUG",
!     "  if ($yys = $ENV{'YYDEBUG'})",
      "  {",
!     "    $yydebug = int($1) if $yys =~ /^(\\d)/;",
      "  }",
-     "#endif",
      "",
!     "  $yynerrs = 0;",
!     "  $yyerrflag = 0;",
!     "  $yychar = (-1);",
      "",
!     "  $yyssp = 0;",
!     "  $yyvsp = 0;",
!     "  $yyss[$yyssp] = $yystate = 0;",
      "",
      "yyloop: while(1)",
      "  {",
      "    yyreduce: {",
!     "      last yyreduce if ($yyn = $yydefred[$yystate]);",
!     "      if ($yychar < 0)",
      "      {",
!     "        if (($yychar = &yylex) < 0) { $yychar = 0; }",
!     "#if YYDEBUG",
!     "        if ($yydebug)",
      "        {",
!     "          $yys = '';",
!     "          if ($yychar <= $#yyname) { $yys = $yyname[$yychar]; }",
!     "          if (!$yys) { $yys = 'illegal-symbol'; };",
!     "          print \"yydebug: state $yystate, reading $yychar ($yys)\\n\";",
      "        }",
-     "#endif",
      "      }",
!     "      if (($yyn = $yysindex[$yystate]) && ($yyn += $yychar) >= 0 &&",
!     "              $yycheck[$yyn] == $yychar)",
      "      {",
!     "#if YYDEBUG",
!     "        print \"yydebug: state $yystate, shifting to state \",",
!     "              $yytable[$yyn], \"\\n\"  if $yydebug;",
!     "#endif",
!     "        $yyss[++$yyssp] = $yystate = $yytable[$yyn];",
!     "        $yyvs[++$yyvsp] = $yylval;",
!     "        $yychar = (-1);",
!     "        --$yyerrflag if $yyerrflag > 0;",
      "        next yyloop;",
      "      }",
!     "      if (($yyn = $yyrindex[$yystate]) && ($yyn += $yychar) >= 0 &&",
!     "            $yycheck[$yyn] == $yychar)",
      "      {",
!     "        $yyn = $yytable[$yyn];",
      "        last yyreduce;",
      "      }",
!     "      if (! $yyerrflag) {",
!     "        &yyerror('syntax error');",
!     "        ++$yynerrs;",
      "      }",
!     "      return(1) if &yy_err_recover;",
      "    } # yyreduce",
!     "#if YYDEBUG",
!     "    print \"yydebug: state $yystate, reducing by rule \",",
!     "          \"$yyn ($yyrule[$yyn])\\n\"  if $yydebug;",
!     "#endif",
!     "    $yym = $yylen[$yyn];",
!     "    $yyval = $yyvs[$yyvsp+1-$yym];",
!     "    switch:",
!     "    {",
      (char *) NULL
  };
--- 307,381 ----
      "} # yy_err_recover",
      "",
!     "sub yyparse {",
!     "  my PP $p;",
!     "  my $s;",
!     "  ($p, $s) = @_;",
!     "  if ($p->{yys} = $ENV{'YYDEBUG'})",
      "  {",
!     "    $p->{yydebug} = int($1) if $p->{yys} =~ /^(\\d)/;",
      "  }",
      "",
!     "  $p->{yynerrs} = 0;",
!     "  $p->{yyerrflag} = 0;",
!     "  $p->{yychar} = (-1);",
      "",
!     "  $p->{yyssp} = 0;",
!     "  $p->{yyvsp} = 0;",
!     "  $p->{yyss}->[$p->{yyssp}] = $p->{yystate} = 0;",
      "",
      "yyloop: while(1)",
      "  {",
      "    yyreduce: {",
!     "      last yyreduce if ($p->{yyn} = $yydefred[$p->{yystate}]);",
!     "      if ($p->{yychar} < 0)",
      "      {",
!     "        if ((($p->{yychar}, $p->{yylval}) = ",
!     "            &{$p->{yylex}}($s)) < 0) { $p->{yychar} = 0; }",
!     "        if ($p->{yydebug})",
      "        {",
!     "          $p->{yys} = '';",
!     "          if ($p->{yychar} <= $#yyname) ",
!     "             { $p->{yys} = $yyname[$p->{yychar}]; }",
!     "          if (!$p->{yys}) { $p->{yys} = 'illegal-symbol'; };",
!     "          warn(\"yydebug: state \" . $p->{yystate} . ",
!     "                       \", reading \" . $p->{yychar} . \" (\" . ",
!     "                       $p->{yys} . \")\\n\");",
      "        }",
      "      }",
!     "      if (($p->{yyn} = $yysindex[$p->{yystate}]) && ",
!     "          ($p->{yyn} += $p->{yychar}) >= 0 && ",
!     "          $p->{yyn} <= $#yycheck &&",
!     "          $yycheck[$p->{yyn}] == $p->{yychar})",
      "      {",
!     "        warn(\"yydebug: state \" . $p->{yystate} . ",
!     "                     \", shifting to state \" .",
!     "              $yytable[$p->{yyn}] . \"\\n\") if $p->{yydebug};",
!     "        $p->{yyss}->[++$p->{yyssp}] = $p->{yystate} = ",
!     "          $yytable[$p->{yyn}];",
!     "        $p->{yyvs}->[++$p->{yyvsp}] = $p->{yylval};",
!     "        $p->{yychar} = (-1);",
!     "        --$p->{yyerrflag} if $p->{yyerrflag} > 0;",
      "        next yyloop;",
      "      }",
!     "      if (($p->{yyn} = $yyrindex[$p->{yystate}]) && ",
!     "          ($p->{yyn} += $p->{'yychar'}) >= 0 &&",
!     "          $p->{yyn} <= $#yycheck &&",
!     "          $yycheck[$p->{yyn}] == $p->{yychar})",
      "      {",
!     "        $p->{yyn} = $yytable[$p->{yyn}];",
      "        last yyreduce;",
      "      }",
!     "      if (! $p->{yyerrflag}) {",
!     "        &{$p->{yyerror}}('syntax error', $s);",
!     "        ++$p->{yynerrs};",
      "      }",
!     "      return(undef) if $p->yy_err_recover;",
      "    } # yyreduce",
!     "    warn(\"yydebug: state \" . $p->{yystate} . ",
!     "                 \", reducing by rule \" . ",
!     "                 $p->{yyn} . \" (\" . $yyrule[$p->{yyn}] . ",
!     "                 \")\\n\") if $p->{yydebug};",
!     "    $p->{yym} = $yylen[$p->{yyn}];",
!     "    $p->{yyval} = $p->{yyvs}->[$p->{yyvsp}+1-$p->{yym}];",
      (char *) NULL
  };
***************
*** 422,468 ****
  static char *perl_trailer[] =
  {
!     "    } # switch",
!     "    $yyssp -= $yym;",
!     "    $yystate = $yyss[$yyssp];",
!     "    $yyvsp -= $yym;",
!     "    $yym = $yylhs[$yyn];",
!     "    if ($yystate == 0 && $yym == 0)",
!     "    {",
!     "#if YYDEBUG",
!     "      print \"yydebug: after reduction, shifting from state 0 \",",
!     "            \"to state $YYFINAL\\n\" if $yydebug;",
!     "#endif",
!     "      $yystate = $YYFINAL;",
!     "      $yyss[++$yyssp] = $YYFINAL;",
!     "      $yyvs[++$yyvsp] = $yyval;",
!     "      if ($yychar < 0)",
      "      {",
!     "        if (($yychar = &yylex) < 0) { $yychar = 0; }",
!     "#if YYDEBUG",
!     "        if ($yydebug)",
      "        {",
!     "          $yys = '';",
!     "          if ($yychar <= $#yyname) { $yys = $yyname[$yychar]; }",
!     "          if (!$yys) { $yys = 'illegal-symbol'; }",
!     "          print \"yydebug: state $YYFINAL, reading $yychar ($yys)\\n\";",
      "        }",
-     "#endif",
      "      }",
!     "      return(0) if $yychar == 0;",
      "      next yyloop;",
      "    }",
!     "    if (($yyn = $yygindex[$yym]) && ($yyn += $yystate) >= 0 &&",
!     "        $yyn <= $#yycheck && $yycheck[$yyn] == $yystate)",
      "    {",
!     "        $yystate = $yytable[$yyn];",
      "    } else {",
!     "        $yystate = $yydgoto[$yym];",
      "    }",
!     "#if YYDEBUG",
!     "    print \"yydebug: after reduction, shifting from state \",",
!     "        \"$yyss[$yyssp] to state $yystate\\n\" if $yydebug;",
!     "#endif",
!     "    $yyss[++$yyssp] = $yystate;",
!     "    $yyvs[++$yyvsp] = $yyval;",
      "  } # yyloop",
      "} # yyparse",
--- 446,491 ----
  static char *perl_trailer[] =
  {
!     "    $p->{yyssp} -= $p->{yym};",
!     "    $p->{yystate} = $p->{yyss}->[$p->{yyssp}];",
!     "    $p->{yyvsp} -= $p->{yym};",
!     "    $p->{yym} = $yylhs[$p->{yyn}];",
!     "    if ($p->{yystate} == 0 && $p->{yym} == 0)",
!     "    {",
!     "      warn(\"yydebug: after reduction, shifting from state 0 \",",
!     "            \"to state $YYFINAL\\n\") if $p->{yydebug};",
!     "      $p->{yystate} = $YYFINAL;",
!     "      $p->{yyss}->[++$p->{yyssp}] = $YYFINAL;",
!     "      $p->{yyvs}->[++$p->{yyvsp}] = $p->{yyval};",
!     "      if ($p->{yychar} < 0)",
      "      {",
!     "        if ((($p->{yychar}, $p->{yylval}) = ",
!     "            &{$p->{yylex}}($s)) < 0) { $p->{yychar} = 0; }",
!     "        if ($p->{yydebug})",
      "        {",
!     "          $p->{yys} = '';",
!     "          if ($p->{yychar} <= $#yyname) ",
!     "            { $p->{yys} = $yyname[$p->{yychar}]; }",
!     "          if (!$p->{yys}) { $p->{yys} = 'illegal-symbol'; }",
!     "          warn(\"yydebug: state $YYFINAL, reading \" . ",
!     "               $p->{yychar} . \" (\" . $p->{yys} . \")\\n\");",
      "        }",
      "      }",
!     "      return ($p->{yyvs}->[1]) if $p->{yychar} == 0;",
      "      next yyloop;",
      "    }",
!     "    if (($p->{yyn} = $yygindex[$p->{yym}]) && ",
!     "        ($p->{yyn} += $p->{yystate}) >= 0 && ",
!     "        $p->{yyn} <= $#yycheck && ",
!     "        $yycheck[$p->{yyn}] == $p->{yystate})",
      "    {",
!     "        $p->{yystate} = $yytable[$p->{yyn}];",
      "    } else {",
!     "        $p->{yystate} = $yydgoto[$p->{yym}];",
      "    }",
!     "    warn(\"yydebug: after reduction, shifting from state \" . ",
!     "        $p->{yyss}->[$p->{yyssp}] . \" to state \" . ",
!     "        $p->{yystate} . \"\\n\") if $p->{yydebug};",
!     "    $p->{yyss}[++$p->{yyssp}] = $p->{yystate};",
!     "    $p->{yyvs}[++$p->{yyvsp}] = $p->{yyval};",
      "  } # yyloop",
      "} # yyparse",
***************
*** 473,476 ****
--- 496,529 ----
  
  #if __STDC__
+ static char *add_perl_package(char *old_str, char *new_str)
+ #else
+ static char *add_perl_package(old_str, new_str)
+ char *old_str;
+ char *new_str;
+ #endif
+ {
+     register char *from = old_str;
+     register char *to = new_str;
+     register char *p;
+ 
+     while (*from) {
+ 	if (*from == 'P' && *(from + 1) == 'P') {
+ 	    from += 2;
+ 	    p = perl5005flag ? perl_package : "";
+ 	    while (*to++ = *p++)
+ 	        /* void */ ;
+ 	    to--;
+ 	}
+ 	else {
+ 	    *to++ = *from++;
+ 	}
+     }
+ 
+     *to = *from;
+     
+     return new_str;
+ }
+ 
+ #if __STDC__
  static char *add_prefixes(char *old_str, char *new_str)
  #else
***************
*** 523,527 ****
      {
  	fp = code_file;
! 	if (prefix_changed)
  	{
  	    char buf[BUFSIZ];
--- 576,590 ----
      {
  	fp = code_file;
! 	if (language == PERL)
! 	{
! 	    char buf[BUFSIZ];
! 
! 	    for (i = 0; sec[i]; ++i)
! 	    {
! 		++outline;
! 		fprintf(fp, "%s\n", add_perl_package(sec[i], buf));
! 	    }
! 	}
! 	else if (prefix_changed)
  	{
  	    char buf[BUFSIZ];
Common subdirectories: perl-byacc1.8.2.orig/test and perl-byacc1.8.2/test
