This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The base.pm changes need this, too?
[perl5.git] / perly_c.diff
index 463df80..c0db93a 100644 (file)
@@ -1,28 +1,41 @@
-*** perly.c.orig       Mon Jul 26 03:27:57 1999
---- perly.c    Mon Jul 26 02:47:03 1999
+*** perly.c.orig       Tue Mar 26 01:38:52 2002
+--- perly.c    Tue Mar 26 01:38:54 2002
 ***************
-*** 8,91 ****
-  #include "perl.h"
+*** 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")
   
-  #define dep() deprecate("\"do\" to call subroutines")
+  /* stuff included here to make perly_c.diff apply better */
   
-! #line 27 "perly.y"
-! /* I sense a Big Blue pattern here... */
-! #if !defined(OEMVS) && !defined(__OPEN_VM) && !defined(POSIX_BC)
-! #line 31 "perly.y"
-! typedef union {
-!     I32      ival;
-!     char *pval;
-!     OP *opval;
-!     GV *gvval;
-! } YYSTYPE;
-! #line 39 "perly.y"
-! #endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
+--- 9,15 ----
+  #ifdef EBCDIC
+  #undef YYDEBUG
+  #endif
+! #define dep() deprecate_old("\"do\" to call subroutines")
   
-! #ifdef USE_PURE_BISON
-! #define YYLEX_PARAM (&yychar)
-! #endif
-! #line 29 "y.tab.c"
+  /* 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 NOAMP 294
 ! #define LOCAL 295
 ! #define MY 296
-! #define PREC_LOW 297
-! #define OROP 298
-! #define ANDOP 299
-! #define NOTOP 300
-! #define ASSIGNOP 301
-! #define OROR 302
-! #define ANDAND 303
-! #define BITOROP 304
-! #define BITANDOP 305
-! #define SHIFTOP 306
-! #define MATCHOP 307
-! #define UMINUS 308
-! #define REFGEN 309
-! #define POWOP 310
-! #define PREINC 311
-! #define PREDEC 312
-! #define POSTINC 313
-! #define POSTDEC 314
-! #define ARROW 315
+! #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,
-     46,    0,    9,    7,   10,    8,   11,   11,   11,   12,
+      0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
      12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
---- 8,25 ----
-  #include "perl.h"
-  
-+ #define yydebug          PL_yydebug
-+ #define yynerrs          PL_yynerrs
-+ #define yyerrflag   PL_yyerrflag
-+ #define yychar           PL_yychar
-+ #define yyval            PL_yyval
-+ #define yylval           PL_yylval
-+ 
-  #define dep() deprecate("\"do\" to call subroutines")
-  
-! static void yydestruct(pTHXo_ void *ptr);
+     15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
+--- 50,58 ----
+  #define yylex yylex_r
+  #endif
   
-! #line 27 "perly.y"
+! #line 54 "perly.c"
   #define YYERRCODE 256
-! static short yylhs[] = {                                 -1,
-     46,    0,    9,    7,   10,    8,   11,   11,   11,   12,
+! 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,
 ***************
-*** 107,111 ****
-     24,   19,   20,   21,   22,   23,   36,   36,   36,   36,
+*** 135,141 ****
+     49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
+     21,   22,   23,   36,   36,   36,   36,
   };
 ! short yylen[] = {                                         2,
-      0,    2,    4,    0,    4,    0,    0,    2,    2,    2,
+      2,    4,    0,    0,    4,    0,    0,    2,    2,    2,
       1,    2,    3,    1,    1,    3,    3,    3,    3,    3,
---- 41,45 ----
-     24,   19,   20,   21,   22,   23,   36,   36,   36,   36,
+      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,
-      0,    2,    4,    0,    4,    0,    0,    2,    2,    2,
+! 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,
 ***************
-*** 127,131 ****
-      2,    2,    2,    2,    2,    2,    1,    1,    1,    1,
+*** 157,163 ****
+      1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
+      2,    2,    2,    1,    1,    1,    1,
   };
-! short yydefred[] = {                                      1,
-      0,    7,    0,   45,   56,   54,    0,   54,    8,   46,
-      9,   11,    0,   47,   48,   49,    0,    0,    0,   63,
---- 61,65 ----
-      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[] = {                               1,
-      0,    7,    0,   45,   56,   54,    0,   54,    8,   46,
-      9,   11,    0,   47,   48,   49,    0,    0,    0,   63,
+! 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,
 ***************
-*** 166,170 ****
-      5,    0,   30,    0,    0,   33,    0,   23,
+*** 199,205 ****
+      0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
+      0,   33,    0,   23,
   };
 ! short yydgoto[] = {                                       1,
-      9,   66,   10,   18,   96,   17,   87,  344,   90,  333,
-      3,   11,   12,   68,  349,  267,   70,   71,   72,   73,
---- 100,104 ----
-      5,    0,   30,    0,    0,   33,    0,   23,
+     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,
-      9,   66,   10,   18,   96,   17,   87,  344,   90,  333,
-      3,   11,   12,   68,  349,  267,   70,   71,   72,   73,
+! 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,
 ***************
-*** 174,178 ****
-    260,
+*** 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,  142,    0,    0,    0,  -57,    0,    0,    0,
-      0,    0,  622,    0,    0,    0, -239, -229,  -10,    0,
---- 108,112 ----
-    260,
+      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,  142,    0,    0,    0,  -57,    0,    0,    0,
-      0,    0,  622,    0,    0,    0, -239, -229,  -10,    0,
+! 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,
 ***************
-*** 213,217 ****
-      0,  228,    0,   92,   92,    0, -204,    0,
+*** 249,255 ****
+    449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
+    216,    0, -123,    0,
   };
 ! short yyrindex[] = {                                      0,
-      0,    0,  225,    0,    0,    0,    0,    0,    0,    0,
-      0,    0,    0,    0,    0,    0,  155,    0,    0,    0,
---- 147,151 ----
-      0,  228,    0,   92,   92,    0, -204,    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,  225,    0,    0,    0,    0,    0,    0,    0,
-      0,    0,    0,    0,    0,    0,  155,    0,    0,    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,
 ***************
-*** 252,256 ****
-      0,    0,    0,    0,    0,    0,  168,    0,
+*** 291,297 ****
+    917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+      0,    0,  179,    0,
   };
 ! short yygindex[] = {                                      0,
-      0,    0,    0,  339,  320,    0,  -11,    0,  913,  360,
-    -78,    0,    0,    0, -320,  -13, 4321,    0, 1367,    0,
---- 186,190 ----
-      0,    0,    0,    0,    0,    0,  168,    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,    0,  339,  320,    0,  -11,    0,  913,  360,
-    -78,    0,    0,    0, -320,  -13, 4321,    0, 1367,    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,
 ***************
-*** 261,265 ****
+*** 300,306 ****
+      0,    0,    0,    0,    0,    0,    0,    0,    0,
   };
-  #define YYTABLESIZE 4610
-! short yytable[] = {                                      69,
-    206,   20,  295,   62,  113,  257,  184,  103,  183,  298,
-    172,   62,  125,  104,  252,  350,  104,   81,  209,  169,
---- 195,199 ----
+  #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 4610
-! static short yytable[] = {                               69,
-    206,   20,  295,   62,  113,  257,  184,  103,  183,  298,
-    172,   62,  125,  104,  252,  350,  104,   81,  209,  169,
+  #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,
 ***************
-*** 724,728 ****
-      0,    0,    0,    0,    0,    0,    0,    0,    0,  321,
+*** 759,765 ****
+      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      0,    0,    0,    0,    0,    0,   77,   77,
   };
-! short yycheck[] = {                                      13,
-     59,   59,   59,   36,   43,  185,   92,   40,   87,   59,
-     91,   36,   51,   41,   59,  336,   44,  257,   41,   40,
---- 658,662 ----
-      0,    0,    0,    0,    0,    0,    0,    0,    0,  321,
+! 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[] = {                               13,
-     59,   59,   59,   36,   43,  185,   92,   40,   87,   59,
-     91,   36,   51,   41,   59,  336,   44,  257,   41,   40,
+! 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,
 ***************
-*** 1193,1197 ****
-  #define YYMAXTOKEN 315
+*** 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,
---- 1127,1131 ----
-  #define YYMAXTOKEN 315
+  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,
 ***************
-*** 1210,1214 ****
-  "POSTINC","POSTDEC","ARROW",
+*** 1241,1247 ****
+  "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+  "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
   };
 ! char *yyrule[] = {
   "$accept : prog",
-  "$$1 :",
---- 1144,1148 ----
-  "POSTINC","POSTDEC","ARROW",
+  "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",
-  "$$1 :",
+  "prog : progstart lineseq",
+  "block : '{' remember lineseq '}'",
 ***************
-*** 1408,1436 ****
+*** 1456,1472 ****
+  #define YYMAXDEPTH 500
   #endif
   #endif
 - int yydebug;
 - short yyss[YYSTACKSIZE];
 - YYSTYPE yyvs[YYSTACKSIZE];
 - #define yystacksize YYSTACKSIZE
-  #line 666 "perly.y"
+  #line 793 "perly.y"
    /* PROGRAM */
-! #line 1424 "y.tab.c"
+  
+--- 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
-  int
-! yyparse()
+***************
+*** 1485,1495 ****
+  yyparse()
   {
       register int yym, yyn, yystate;
   #if YYDEBUG
       register char *yys;
-      extern char *getenv();
+!     extern char *getenv();
   
-      if (yys = getenv("YYDEBUG"))
+!     if (yys = getenv("YYDEBUG"))
       {
---- 1342,1391 ----
-  #endif
-  #endif
-  #line 666 "perly.y"
-   /* PROGRAM */
-! #line 1427 "perly.c"
-  #define YYABORT goto yyabort
-  #define YYACCEPT goto yyaccept
-  #define YYERROR goto yyerrlab
-+ 
-+ struct ysv {
-+     short* yyss;
-+     YYSTYPE* yyvs;
-+     int oldyydebug;
-+     int oldyynerrs;
-+     int oldyyerrflag;
-+     int oldyychar;
-+     YYSTYPE oldyyval;
-+     YYSTYPE oldyylval;
-+ };
-+ 
-  int
-! Perl_yyparse(pTHX)
+          yyn = *yys;
+          if (yyn >= '0' && yyn <= '9')
+--- 1413,1443 ----
+  yyparse()
   {
       register int yym, yyn, yystate;
 +     register short *yyssp;
 +     int retval = 0;
   #if YYDEBUG
       register char *yys;
-+ #ifndef __cplusplus
-      extern char *getenv();
-+ #endif
-+ #endif
-+ 
-+     struct ysv *ysave;
-+     New(73, ysave, 1, struct ysv);
-+     SAVEDESTRUCTOR(yydestruct, ysave);
-+     ysave->oldyydebug        = yydebug;
-+     ysave->oldyynerrs        = yynerrs;
-+     ysave->oldyyerrflag      = yyerrflag;
-+     ysave->oldyychar = yychar;
-+     ysave->oldyyval  = yyval;
-+     ysave->oldyylval = yylval;
+! #endif
   
-+ #if YYDEBUG
-      if (yys = getenv("YYDEBUG"))
+!     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')
 ***************
-*** 1445,1448 ****
---- 1400,1413 ----
+*** 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);
   
 +     /*
 + 
       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
 ***************
-*** 1470,1479 ****
+*** 1526,1537 ****
+      {
   #if YYDEBUG
           if (yydebug)
 !             printf("yydebug: state %d, shifting to state %d\n",
   #endif
           if (yyssp >= yyss + yystacksize - 1)
           {
-!             goto yyoverflow;
+              goto yyoverflow;
           }
           *++yyssp = yystate = yytable[yyn];
---- 1435,1458 ----
+          *++yyvsp = yylval;
+--- 1484,1507 ----
+      {
   #if YYDEBUG
           if (yydebug)
 !             PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
   #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 = yyvs =
-!              (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!          ysave->yyss = yyss =
-!              (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
-!          if (!yyvs || !yyss)
-!              goto yyoverflow;
-!          yyssp = yyss + yyps_index;
-!          yyvsp = yyvs + yypv_index;
++          /*
++          ** 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)
 ***************
-*** 1511,1520 ****
+*** 1567,1578 ****
+              {
   #if YYDEBUG
                   if (yydebug)
 !                     printf("yydebug: state %d, error recovery shifting\
-!  to state %d\n", *yyssp, yytable[yyn]);
+   to state %d\n", *yyssp, yytable[yyn]);
   #endif
                   if (yyssp >= yyss + yystacksize - 1)
                   {
-!                     goto yyoverflow;
+                      goto yyoverflow;
                   }
                   *++yyssp = yystate = yytable[yyn];
---- 1490,1514 ----
+                  *++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]);
+!                     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 = yyvs = (YYSTYPE*)PerlMem_realloc((char*)yyvs,
-!                      yystacksize * sizeof(YYSTYPE));
-!                  ysave->yyss = yyss = (short*)PerlMem_realloc((char*)yyss,
-!                      yystacksize * sizeof(short));
-!                  if (!yyvs || !yyss)
-!                      goto yyoverflow;
-!                  yyssp = yyss + yyps_index;
-!                  yyvsp = yyvs + yypv_index;
++                  /*
++                  ** 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;
 ***************
-*** 1526,1531 ****
+*** 1582,1588 ****
+              {
   #if YYDEBUG
                   if (yydebug)
 !                     printf("yydebug: error recovery discarding state %d\n",
-!                             *yyssp);
+                              *yyssp);
   #endif
                   if (yyssp <= yyss) goto yyabort;
---- 1520,1526 ----
+--- 1564,1570 ----
+              {
   #if YYDEBUG
                   if (yydebug)
-!                     PerlIO_printf(Perl_debug_log,
-!                      "yydebug: error recovery discarding state %d\n",
-!                      *yyssp);
+!                     PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
+                              *yyssp);
   #endif
                   if (yyssp <= yyss) goto yyabort;
 ***************
-*** 1544,1549 ****
+*** 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);
+                      yystate, yychar, yys);
           }
   #endif
---- 1539,1545 ----
+--- 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);
+!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
+                      yystate, yychar, yys);
           }
   #endif
 ***************
-*** 1554,1558 ****
+*** 1610,1616 ****
+  yyreduce:
   #if YYDEBUG
       if (yydebug)
 !         printf("yydebug: state %d, reducing by rule %d (%s)\n",
                   yystate, yyn, yyrule[yyn]);
   #endif
---- 1550,1554 ----
+      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];
 ***************
-*** 2358,2362 ****
+*** 2473,2479 ****
+  #line 790 "perly.y"
   { yyval.opval = yyvsp[0].opval; }
   break;
-! #line 2361 "y.tab.c"
+! #line 2477 "y.tab.c"
       }
       yyssp -= yym;
---- 2354,2358 ----
+      yystate = *yyssp;
+--- 2455,2461 ----
+  #line 790 "perly.y"
   { yyval.opval = yyvsp[0].opval; }
   break;
-! #line 2365 "perly.c"
+! #line 2459 "perly.c"
       }
       yyssp -= yym;
+      yystate = *yyssp;
 ***************
-*** 2368,2373 ****
+*** 2483,2489 ****
+      {
   #if YYDEBUG
           if (yydebug)
 !             printf("yydebug: after reduction, shifting from state 0 to\
-!  state %d\n", YYFINAL);
+   state %d\n", YYFINAL);
   #endif
           yystate = YYFINAL;
---- 2364,2370 ----
+--- 2465,2471 ----
+      {
   #if YYDEBUG
           if (yydebug)
-!             PerlIO_printf(Perl_debug_log,
-!              "yydebug: after reduction, shifting from state 0 to state %d\n",
-!              YYFINAL);
+!             PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
+   state %d\n", YYFINAL);
   #endif
           yystate = YYFINAL;
 ***************
-*** 2383,2387 ****
+*** 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);
               }
---- 2380,2384 ----
+  #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
 ***************
-*** 2398,2407 ****
+*** 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;
---- 2395,2419 ----
-  #if YYDEBUG
-      if (yydebug)
-!         PerlIO_printf(Perl_debug_log,
-!          "yydebug: after reduction, shifting from state %d to state %d\n",
-!          *yyssp, yystate);
+  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 = yyvs =
-!          (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!      ysave->yyss = yyss =
-!          (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
-!      if (!yyvs || !yyss)
-!          goto yyoverflow;
-!      yyssp = yyss + yyps_index;
-!      yyvsp = yyvs + yypv_index;
+          goto yyoverflow;
       }
       *++yyssp = yystate;
-***************
-*** 2409,2416 ****
+      *++yyvsp = yyval;
       goto yyloop;
   yyoverflow:
 !     yyerror("yacc stack overflow");
   yyaccept:
 !     return (0);
   }
---- 2421,2448 ----
+--- 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;
 ! }
 ! 
-! #ifdef PERL_OBJECT
-! #define NO_XSLOCKS
-! #include "XSUB.h"
-! #endif
-! 
 ! static void
-! yydestruct(pTHXo_ void *ptr)
+! yydestruct(pTHX_ void *ptr)
 ! {
 !     struct ysv* ysave = (struct ysv*)ptr;
 !     if (ysave->yyss) Safefree(ysave->yyss);