perly_c.diff   [plain text]


*** perly.c.orig	Tue Mar 26 01:38:52 2002
--- perly.c	Tue Mar 26 01:38:54 2002
***************
*** 1,5 ****
  #ifndef lint
! static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
  #endif
  #define YYBYACC 1
  #line 16 "perly.y"
--- 1,5 ----
  #ifndef lint
! /* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */
  #endif
  #define YYBYACC 1
  #line 16 "perly.y"
***************
*** 9,15 ****
  #ifdef EBCDIC
  #undef YYDEBUG
  #endif
! #define dep() deprecate("\"do\" to call subroutines")
  
  /* stuff included here to make perly_c.diff apply better */
  
--- 9,15 ----
  #ifdef EBCDIC
  #undef YYDEBUG
  #endif
! #define dep() deprecate_old("\"do\" to call subroutines")
  
  /* stuff included here to make perly_c.diff apply better */
  
***************
*** 50,119 ****
  #define yylex yylex_r
  #endif
  
! #line 54 "y.tab.c"
! #define WORD 257
! #define METHOD 258
! #define FUNCMETH 259
! #define THING 260
! #define PMFUNC 261
! #define PRIVATEREF 262
! #define FUNC0SUB 263
! #define UNIOPSUB 264
! #define LSTOPSUB 265
! #define LABEL 266
! #define FORMAT 267
! #define SUB 268
! #define ANONSUB 269
! #define PACKAGE 270
! #define USE 271
! #define WHILE 272
! #define UNTIL 273
! #define IF 274
! #define UNLESS 275
! #define ELSE 276
! #define ELSIF 277
! #define CONTINUE 278
! #define FOR 279
! #define LOOPEX 280
! #define DOTDOT 281
! #define FUNC0 282
! #define FUNC1 283
! #define FUNC 284
! #define UNIOP 285
! #define LSTOP 286
! #define RELOP 287
! #define EQOP 288
! #define MULOP 289
! #define ADDOP 290
! #define DOLSHARP 291
! #define DO 292
! #define HASHBRACK 293
! #define NOAMP 294
! #define LOCAL 295
! #define MY 296
! #define MYSUB 297
! #define COLONATTR 298
! #define PREC_LOW 299
! #define OROP 300
! #define ANDOP 301
! #define NOTOP 302
! #define ASSIGNOP 303
! #define OROR 304
! #define ANDAND 305
! #define BITOROP 306
! #define BITANDOP 307
! #define SHIFTOP 308
! #define MATCHOP 309
! #define UMINUS 310
! #define REFGEN 311
! #define POWOP 312
! #define PREINC 313
! #define PREDEC 314
! #define POSTINC 315
! #define POSTDEC 316
! #define ARROW 317
  #define YYERRCODE 256
! short yylhs[] = {                                        -1,
      0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
     12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
     15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
--- 50,58 ----
  #define yylex yylex_r
  #endif
  
! #line 54 "perly.c"
  #define YYERRCODE 256
! static short yylhs[] = {                                        -1,
      0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
     12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
     15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
***************
*** 135,141 ****
     49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
     21,   22,   23,   36,   36,   36,   36,
  };
! short yylen[] = {                                         2,
      2,    4,    0,    0,    4,    0,    0,    2,    2,    2,
      1,    2,    3,    1,    1,    3,    3,    3,    3,    3,
      0,    2,    6,    7,    7,    0,    2,    8,    8,   10,
--- 74,80 ----
     49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
     21,   22,   23,   36,   36,   36,   36,
  };
! static short yylen[] = {                                         2,
      2,    4,    0,    0,    4,    0,    0,    2,    2,    2,
      1,    2,    3,    1,    1,    3,    3,    3,    3,    3,
      0,    2,    6,    7,    7,    0,    2,    8,    8,   10,
***************
*** 157,163 ****
      1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
      2,    2,    2,    1,    1,    1,    1,
  };
! short yydefred[] = {                                      4,
      0,    7,    0,   45,   58,   56,    0,   56,   56,    8,
     46,    9,   11,   48,    0,   47,   49,   50,    0,    0,
      0,   70,   71,    0,   14,    3,  173,    0,    0,  154,
--- 96,102 ----
      1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
      2,    2,    2,    1,    1,    1,    1,
  };
! static short yydefred[] = {                                      4,
      0,    7,    0,   45,   58,   56,    0,   56,   56,    8,
     46,    9,   11,   48,    0,   47,   49,   50,    0,    0,
      0,   70,   71,    0,   14,    3,  173,    0,    0,  154,
***************
*** 199,205 ****
      0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
      0,   33,    0,   23,
  };
! short yydgoto[] = {                                       1,
     10,   11,   20,  104,   19,    2,   95,  370,   98,  359,
      3,   12,   13,   70,  375,  285,   72,   73,   74,   75,
     76,   77,   78,   79,  291,   81,  292,  281,  283,  286,
--- 138,144 ----
      0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
      0,   33,    0,   23,
  };
! static short yydgoto[] = {                                       1,
     10,   11,   20,  104,   19,    2,   95,  370,   98,  359,
      3,   12,   13,   70,  375,  285,   72,   73,   74,   75,
     76,   77,   78,   79,  291,   81,  292,  281,  283,  286,
***************
*** 207,213 ****
    194,  327,  156,  289,  271,  225,   14,   83,  137,   84,
     85,   86,   87,   15,   16,   17,   18,   93,  278,
  };
! short yysindex[] = {                                      0,
      0,    0, -132,    0,    0,    0,  -51,    0,    0,    0,
      0,    0,    0,    0,  650,    0,    0,    0, -239, -215,
      5,    0,    0, -215,    0,    0,    0,  -31,  -31,    0,
--- 146,152 ----
    194,  327,  156,  289,  271,  225,   14,   83,  137,   84,
     85,   86,   87,   15,   16,   17,   18,   93,  278,
  };
! static short yysindex[] = {                                      0,
      0,    0, -132,    0,    0,    0,  -51,    0,    0,    0,
      0,    0,    0,    0,  650,    0,    0,    0, -239, -215,
      5,    0,    0, -215,    0,    0,    0,  -31,  -31,    0,
***************
*** 249,255 ****
    449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
    216,    0, -123,    0,
  };
! short yyrindex[] = {                                      0,
      0,    0,  247,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,  274,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--- 188,194 ----
    449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
    216,    0, -123,    0,
  };
! static short yyrindex[] = {                                      0,
      0,    0,  247,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,  274,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
***************
*** 291,297 ****
    917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
      0,    0,  179,    0,
  };
! short yygindex[] = {                                      0,
      0,    0,  196,  425,    0,    0,   -2,    0,   37,  634,
    -94,    0,    0,    0, -323,  -15, 2445,    0,  999,  414,
    417,    0,    0,    0,  463,  -43,    0,    0,  321, -198,
--- 230,236 ----
    917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
      0,    0,  179,    0,
  };
! static short yygindex[] = {                                      0,
      0,    0,  196,  425,    0,    0,   -2,    0,   37,  634,
    -94,    0,    0,    0, -323,  -15, 2445,    0,  999,  414,
    417,    0,    0,    0,  463,  -43,    0,    0,  321, -198,
***************
*** 300,306 ****
      0,    0,    0,    0,    0,    0,    0,    0,    0,
  };
  #define YYTABLESIZE 4568
! short yytable[] = {                                      71,
    197,   65,  121,  227,   65,  111,  220,   22,  198,  293,
    139,  296,  315,  275,  305,  102,  273,   88,  113,  228,
     60,  113,  279,   65,  317,   60,  182,  254,  325,  101,
--- 239,245 ----
      0,    0,    0,    0,    0,    0,    0,    0,    0,
  };
  #define YYTABLESIZE 4568
! static short yytable[] = {                                      71,
    197,   65,  121,  227,   65,  111,  220,   22,  198,  293,
    139,  296,  315,  275,  305,  102,  273,   88,  113,  228,
     60,  113,  279,   65,  317,   60,  182,  254,  325,  101,
***************
*** 759,765 ****
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,   77,   77,
  };
! short yycheck[] = {                                      15,
     95,   36,   46,   41,   36,   40,   59,   59,  100,  208,
     54,   41,   59,  199,   41,   40,  196,  257,   41,   93,
    123,   44,  202,   36,   93,   59,   40,   40,   59,   29,
--- 698,704 ----
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,   77,   77,
  };
! static short yycheck[] = {                                      15,
     95,   36,   46,   41,   36,   40,   59,   59,  100,  208,
     54,   41,   59,  199,   41,   40,  196,  257,   41,   93,
    123,   44,  202,   36,   93,   59,   40,   40,   59,   29,
***************
*** 1224,1230 ****
  #endif
  #define YYMAXTOKEN 317
  #if YYDEBUG
! char *yyname[] = {
  "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0,
  0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
--- 1163,1169 ----
  #endif
  #define YYMAXTOKEN 317
  #if YYDEBUG
! static char *yyname[] = {
  "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0,
  0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
***************
*** 1241,1247 ****
  "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
  "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
  };
! char *yyrule[] = {
  "$accept : prog",
  "prog : progstart lineseq",
  "block : '{' remember lineseq '}'",
--- 1180,1186 ----
  "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
  "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
  };
! static char *yyrule[] = {
  "$accept : prog",
  "prog : progstart lineseq",
  "block : '{' remember lineseq '}'",
***************
*** 1456,1472 ****
  #define YYMAXDEPTH 500
  #endif
  #endif
- int yydebug;
- int yynerrs;
- int yyerrflag;
- int yychar;
- short *yyssp;
- YYSTYPE *yyvsp;
- YYSTYPE yyval;
- YYSTYPE yylval;
- short yyss[YYSTACKSIZE];
- YYSTYPE yyvs[YYSTACKSIZE];
- #define yystacksize YYSTACKSIZE
  #line 793 "perly.y"
   /* PROGRAM */
  
--- 1395,1400 ----
***************
*** 1477,1483 ****
  #endif
  #define yyparse() Perl_yyparse(pTHX)
  
! #line 1481 "y.tab.c"
  #define YYABORT goto yyabort
  #define YYACCEPT goto yyaccept
  #define YYERROR goto yyerrlab
--- 1405,1411 ----
  #endif
  #define yyparse() Perl_yyparse(pTHX)
  
! #line 1409 "perly.c"
  #define YYABORT goto yyabort
  #define YYACCEPT goto yyaccept
  #define YYERROR goto yyerrlab
***************
*** 1485,1495 ****
  yyparse()
  {
      register int yym, yyn, yystate;
  #if YYDEBUG
      register char *yys;
!     extern char *getenv();
  
!     if (yys = getenv("YYDEBUG"))
      {
          yyn = *yys;
          if (yyn >= '0' && yyn <= '9')
--- 1413,1443 ----
  yyparse()
  {
      register int yym, yyn, yystate;
+     register short *yyssp;
+     register YYSTYPE *yyvsp;
+     short* yyss;
+     YYSTYPE* yyvs;
+     unsigned yystacksize = YYSTACKSIZE;
+     int retval = 0;
  #if YYDEBUG
      register char *yys;
! #endif
  
!     struct ysv *ysave;
! #ifdef USE_ITHREADS
!     ENTER;			/* force yydestruct() before we return */
! #endif
!     New(73, ysave, 1, struct ysv);
!     SAVEDESTRUCTOR_X(yydestruct, ysave);
!     ysave->oldyydebug	= yydebug;
!     ysave->oldyynerrs	= yynerrs;
!     ysave->oldyyerrflag	= yyerrflag;
!     ysave->oldyychar	= yychar;
!     ysave->oldyyval	= yyval;
!     ysave->oldyylval	= yylval;
! 
! #if YYDEBUG
!     if ((yys = getenv("YYDEBUG")))
      {
          yyn = *yys;
          if (yyn >= '0' && yyn <= '9')
***************
*** 1501,1512 ****
      yyerrflag = 0;
      yychar = (-1);
  
      yyssp = yyss;
      yyvsp = yyvs;
      *yyssp = yystate = 0;
  
  yyloop:
!     if (yyn = yydefred[yystate]) goto yyreduce;
      if (yychar < 0)
      {
          if ((yychar = yylex()) < 0) yychar = 0;
--- 1449,1470 ----
      yyerrflag = 0;
      yychar = (-1);
  
+     /*
+     ** Initialize private stacks (yyparse may be called from an action)
+     */
+     New(73, yyss, yystacksize, short);
+     New(73, yyvs, yystacksize, YYSTYPE);
+     ysave->yyss = yyss;
+     ysave->yyvs = yyvs;
+     if (!yyvs || !yyss)
+ 	goto yyoverflow;
+ 
      yyssp = yyss;
      yyvsp = yyvs;
      *yyssp = yystate = 0;
  
  yyloop:
!     if ((yyn = yydefred[yystate])) goto yyreduce;
      if (yychar < 0)
      {
          if ((yychar = yylex()) < 0) yychar = 0;
***************
*** 1516,1522 ****
              yys = 0;
              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
              if (!yys) yys = "illegal-symbol";
!             printf("yydebug: state %d, reading %d (%s)\n", yystate,
                      yychar, yys);
          }
  #endif
--- 1474,1480 ----
              yys = 0;
              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
              if (!yys) yys = "illegal-symbol";
!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
                      yychar, yys);
          }
  #endif
***************
*** 1526,1537 ****
      {
  #if YYDEBUG
          if (yydebug)
!             printf("yydebug: state %d, shifting to state %d\n",
                      yystate, yytable[yyn]);
  #endif
          if (yyssp >= yyss + yystacksize - 1)
          {
              goto yyoverflow;
          }
          *++yyssp = yystate = yytable[yyn];
          *++yyvsp = yylval;
--- 1484,1507 ----
      {
  #if YYDEBUG
          if (yydebug)
!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
                      yystate, yytable[yyn]);
  #endif
          if (yyssp >= yyss + yystacksize - 1)
          {
+ 	    /*
+ 	    ** reallocate and recover.  Note that pointers
+ 	    ** have to be reset, or bad things will happen
+ 	    */
+ 	    int yyps_index = (yyssp - yyss);
+ 	    int yypv_index = (yyvsp - yyvs);
+ 	    yystacksize += YYSTACKSIZE;
+ 	    ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ 	    ysave->yyss = Renew(yyss, yystacksize, short);
+ 	    if (!yyvs || !yyss)
              goto yyoverflow;
+ 	    yyssp = yyss + yyps_index;
+ 	    yyvsp = yyvs + yypv_index;
          }
          *++yyssp = yystate = yytable[yyn];
          *++yyvsp = yylval;
***************
*** 1547,1560 ****
      }
      if (yyerrflag) goto yyinrecovery;
  #ifdef lint
!     goto yynewerror;
  #endif
! yynewerror:
      yyerror("syntax error");
  #ifdef lint
!     goto yyerrlab;
  #endif
! yyerrlab:
      ++yynerrs;
  yyinrecovery:
      if (yyerrflag < 3)
--- 1517,1530 ----
      }
      if (yyerrflag) goto yyinrecovery;
  #ifdef lint
! 
  #endif
! 
      yyerror("syntax error");
  #ifdef lint
! 
  #endif
! 
      ++yynerrs;
  yyinrecovery:
      if (yyerrflag < 3)
***************
*** 1567,1578 ****
              {
  #if YYDEBUG
                  if (yydebug)
!                     printf("yydebug: state %d, error recovery shifting\
   to state %d\n", *yyssp, yytable[yyn]);
  #endif
                  if (yyssp >= yyss + yystacksize - 1)
                  {
                      goto yyoverflow;
                  }
                  *++yyssp = yystate = yytable[yyn];
                  *++yyvsp = yylval;
--- 1537,1560 ----
              {
  #if YYDEBUG
                  if (yydebug)
!                     PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\
   to state %d\n", *yyssp, yytable[yyn]);
  #endif
                  if (yyssp >= yyss + yystacksize - 1)
                  {
+ 		    /*
+ 		    ** reallocate and recover.  Note that pointers
+ 		    ** have to be reset, or bad things will happen
+ 		    */
+ 		    int yyps_index = (yyssp - yyss);
+ 		    int yypv_index = (yyvsp - yyvs);
+ 		    yystacksize += YYSTACKSIZE;
+ 		    ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ 		    ysave->yyss = Renew(yyss, yystacksize, short);
+ 		    if (!yyvs || !yyss)
                      goto yyoverflow;
+ 		    yyssp = yyss + yyps_index;
+ 		    yyvsp = yyvs + yypv_index;
                  }
                  *++yyssp = yystate = yytable[yyn];
                  *++yyvsp = yylval;
***************
*** 1582,1588 ****
              {
  #if YYDEBUG
                  if (yydebug)
!                     printf("yydebug: error recovery discarding state %d\n",
                              *yyssp);
  #endif
                  if (yyssp <= yyss) goto yyabort;
--- 1564,1570 ----
              {
  #if YYDEBUG
                  if (yydebug)
!                     PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
                              *yyssp);
  #endif
                  if (yyssp <= yyss) goto yyabort;
***************
*** 1600,1606 ****
              yys = 0;
              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
              if (!yys) yys = "illegal-symbol";
!             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
                      yystate, yychar, yys);
          }
  #endif
--- 1582,1588 ----
              yys = 0;
              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
              if (!yys) yys = "illegal-symbol";
!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
                      yystate, yychar, yys);
          }
  #endif
***************
*** 1610,1616 ****
  yyreduce:
  #if YYDEBUG
      if (yydebug)
!         printf("yydebug: state %d, reducing by rule %d (%s)\n",
                  yystate, yyn, yyrule[yyn]);
  #endif
      yym = yylen[yyn];
--- 1592,1598 ----
  yyreduce:
  #if YYDEBUG
      if (yydebug)
!         PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
                  yystate, yyn, yyrule[yyn]);
  #endif
      yym = yylen[yyn];
***************
*** 2473,2479 ****
  #line 790 "perly.y"
  { yyval.opval = yyvsp[0].opval; }
  break;
! #line 2477 "y.tab.c"
      }
      yyssp -= yym;
      yystate = *yyssp;
--- 2455,2461 ----
  #line 790 "perly.y"
  { yyval.opval = yyvsp[0].opval; }
  break;
! #line 2459 "perly.c"
      }
      yyssp -= yym;
      yystate = *yyssp;
***************
*** 2483,2489 ****
      {
  #if YYDEBUG
          if (yydebug)
!             printf("yydebug: after reduction, shifting from state 0 to\
   state %d\n", YYFINAL);
  #endif
          yystate = YYFINAL;
--- 2465,2471 ----
      {
  #if YYDEBUG
          if (yydebug)
!             PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
   state %d\n", YYFINAL);
  #endif
          yystate = YYFINAL;
***************
*** 2498,2504 ****
                  yys = 0;
                  if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                  if (!yys) yys = "illegal-symbol";
!                 printf("yydebug: state %d, reading %d (%s)\n",
                          YYFINAL, yychar, yys);
              }
  #endif
--- 2480,2486 ----
                  yys = 0;
                  if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                  if (!yys) yys = "illegal-symbol";
!                 PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n",
                          YYFINAL, yychar, yys);
              }
  #endif
***************
*** 2513,2532 ****
          yystate = yydgoto[yym];
  #if YYDEBUG
      if (yydebug)
!         printf("yydebug: after reduction, shifting from state %d \
  to state %d\n", *yyssp, yystate);
  #endif
      if (yyssp >= yyss + yystacksize - 1)
      {
          goto yyoverflow;
      }
      *++yyssp = yystate;
      *++yyvsp = yyval;
      goto yyloop;
  yyoverflow:
!     yyerror("yacc stack overflow");
  yyabort:
!     return (1);
  yyaccept:
!     return (0);
  }
--- 2495,2544 ----
          yystate = yydgoto[yym];
  #if YYDEBUG
      if (yydebug)
!         PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \
  to state %d\n", *yyssp, yystate);
  #endif
      if (yyssp >= yyss + yystacksize - 1)
      {
+ 	/*
+ 	** reallocate and recover.  Note that pointers
+ 	** have to be reset, or bad things will happen
+ 	*/
+ 	int yyps_index = (yyssp - yyss);
+ 	int yypv_index = (yyvsp - yyvs);
+ 	yystacksize += YYSTACKSIZE;
+ 	ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ 	ysave->yyss = Renew(yyss, yystacksize, short);
+ 	if (!yyvs || !yyss)
          goto yyoverflow;
+ 	yyssp = yyss + yyps_index;
+ 	yyvsp = yyvs + yypv_index;
      }
      *++yyssp = yystate;
      *++yyvsp = yyval;
      goto yyloop;
  yyoverflow:
!     yyerror("Out of memory for yacc stack");
  yyabort:
!     retval = 1;
  yyaccept:
! #ifdef USE_ITHREADS
!     LEAVE;			/* force yydestruct() before we return */
! #endif
!     return retval;
! }
! 
! static void
! yydestruct(pTHX_ void *ptr)
! {
!     struct ysv* ysave = (struct ysv*)ptr;
!     if (ysave->yyss) Safefree(ysave->yyss);
!     if (ysave->yyvs) Safefree(ysave->yyvs);
!     yydebug	= ysave->oldyydebug;
!     yynerrs	= ysave->oldyynerrs;
!     yyerrflag	= ysave->oldyyerrflag;
!     yychar	= ysave->oldyychar;
!     yyval	= ysave->oldyyval;
!     yylval	= ysave->oldyylval;
!     Safefree(ysave);
  }