-*** perly.c.orig Tue Nov 14 17:16:49 1995
---- perly.c Tue Nov 14 17:17:44 1995
+Index: perly.c
***************
-*** 12,82 ****
- deprecate("\"do\" to call subroutines");
+*** 13,82 ****
}
-- #line 29 "perly.y"
-- typedef union {
-- I32 ival;
-- char *pval;
-- OP *opval;
-- GV *gvval;
-- } YYSTYPE;
-- #line 23 "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 RELOP 285
-- #define EQOP 286
-- #define MULOP 287
-- #define ADDOP 288
-- #define DOLSHARP 289
-- #define DO 290
-- #define LOCAL 291
-- #define HASHBRACK 292
-- #define NOAMP 293
-- #define OROP 294
-- #define ANDOP 295
-- #define NOTOP 296
-- #define LSTOP 297
-- #define ASSIGNOP 298
-- #define OROR 299
-- #define ANDAND 300
-- #define BITOROP 301
-- #define BITANDOP 302
-- #define UNIOP 303
-- #define SHIFTOP 304
-- #define MATCHOP 305
-- #define UMINUS 306
-- #define REFGEN 307
-- #define POWOP 308
-- #define PREINC 309
-- #define PREDEC 310
-- #define POSTINC 311
-- #define POSTDEC 312
-- #define ARROW 313
+! #line 29 "perly.y"
+! typedef union {
+! I32 ival;
+! char *pval;
+! OP *opval;
+! GV *gvval;
+! } YYSTYPE;
+! #line 23 "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 OROP 297
+! #define ANDOP 298
+! #define NOTOP 299
+! #define ASSIGNOP 300
+! #define OROR 301
+! #define ANDAND 302
+! #define BITOROP 303
+! #define BITANDOP 304
+! #define SHIFTOP 305
+! #define MATCHOP 306
+! #define UMINUS 307
+! #define REFGEN 308
+! #define POWOP 309
+! #define PREINC 310
+! #define PREDEC 311
+! #define POSTINC 312
+! #define POSTDEC 313
+! #define ARROW 314
+ #define YYERRCODE 256
+ short yylhs[] = { -1,
+--- 13,17 ----
+ }
+
+! #line 16 "perly.c"
#define YYERRCODE 256
short yylhs[] = { -1,
- 31, 0, 5, 3, 6, 6, 6, 7, 7, 7,
---- 12,17 ----
***************
-*** 1338,1350 ****
- int yynerrs;
+*** 1348,1358 ****
int yyerrflag;
int yychar;
- short *yyssp;
- short yyss[YYSTACKSIZE];
- YYSTYPE yyvs[YYSTACKSIZE];
- #define yystacksize YYSTACKSIZE
- #line 563 "perly.y"
+ #line 631 "perly.y"
/* PROGRAM */
- #line 1351 "y.tab.c"
---- 1273,1280 ----
+--- 1283,1288 ----
***************
-*** 1351,1364 ****
---- 1281,1339 ----
- #define YYABORT goto yyabort
+*** 1361,1372 ****
+--- 1291,1347 ----
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
+
register char *yys;
extern char *getenv();
+ #endif
-
++
+ struct ysv *ysave = (struct ysv*)safemalloc(sizeof(struct ysv));
+ SAVEDESTRUCTOR(yydestruct, ysave);
+ ysave->oldyydebug = yydebug;
+ ysave->oldyychar = yychar;
+ ysave->oldyyval = yyval;
+ ysave->oldyylval = yylval;
-+
+
+ #if YYDEBUG
if (yys = getenv("YYDEBUG"))
{
- yyn = *yys;
***************
-*** 1371,1376 ****
---- 1346,1359 ----
- yyerrflag = 0;
+*** 1381,1384 ****
+--- 1356,1367 ----
yychar = (-1);
+ /*
+
yyssp = yyss;
yyvsp = yyvs;
- *yyssp = yystate = 0;
***************
-*** 1386,1392 ****
- yys = 0;
+*** 1396,1400 ****
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! printf("yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
- #endif
---- 1369,1375 ----
- yys = 0;
+--- 1379,1383 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
- #endif
***************
-*** 1396,1407 ****
- {
+*** 1406,1415 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, shifting to state %d\n",
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
---- 1379,1404 ----
- {
+--- 1389,1412 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr, "yydebug: state %d, shifting to state %d\n",
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
***************
-*** 1437,1448 ****
- {
+*** 1447,1456 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, error recovery shifting\
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
---- 1434,1460 ----
- {
+--- 1444,1468 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
***************
-*** 1452,1459 ****
- {
+*** 1462,1467 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: error recovery discarding state %d\n",
! *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
- --yyssp;
---- 1464,1472 ----
- {
+--- 1474,1480 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
! *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
- --yyssp;
***************
-*** 1470,1477 ****
- yys = 0;
+*** 1480,1485 ****
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
- yychar = (-1);
---- 1483,1491 ----
- yys = 0;
+--- 1493,1499 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr,
! yystate, yychar, yys);
}
#endif
- yychar = (-1);
***************
-*** 1480,1486 ****
- yyreduce:
+*** 1490,1494 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, reducing by rule %d (%s)\n",
yystate, yyn, yyrule[yyn]);
#endif
- yym = yylen[yyn];
---- 1494,1500 ----
- yyreduce:
+--- 1504,1508 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr, "yydebug: state %d, reducing by rule %d (%s)\n",
yystate, yyn, yyrule[yyn]);
#endif
- yym = yylen[yyn];
***************
-*** 2189,2196 ****
- {
+*** 2278,2283 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: after reduction, shifting from state 0 to\
! state %d\n", YYFINAL);
#endif
yystate = YYFINAL;
- *++yyssp = YYFINAL;
---- 2203,2211 ----
- {
+--- 2292,2298 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
! YYFINAL);
#endif
yystate = YYFINAL;
- *++yyssp = YYFINAL;
***************
-*** 2204,2210 ****
- yys = 0;
+*** 2293,2297 ****
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! printf("yydebug: state %d, reading %d (%s)\n",
YYFINAL, yychar, yys);
}
- #endif
---- 2219,2225 ----
- yys = 0;
+--- 2308,2312 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n",
YYFINAL, yychar, yys);
}
- #endif
***************
-*** 2219,2238 ****
- yystate = yydgoto[yym];
+*** 2308,2317 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: after reduction, shifting from state %d \
! goto yyoverflow;
}
*++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
- yyoverflow:
-! yyerror("yacc stack overflow");
- yyabort:
-! return (1);
- yyaccept:
-! return (0);
- }
---- 2234,2268 ----
- yystate = yydgoto[yym];
+--- 2323,2347 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate;
- *++yyvsp = yyval;
+***************
+*** 2319,2326 ****
+ goto yyloop;
+ yyoverflow:
+! yyerror("yacc stack overflow");
+ yyabort:
+! return (1);
+ yyaccept:
+! return (0);
+ }
+--- 2349,2356 ----
goto yyloop;
yyoverflow:
! yyerror("Out of memory for yacc stack");