home *** CD-ROM | disk | FTP | other *** search
- *** perly.c.orig Thu Feb 9 17:56:15 1995
- --- perly.c Thu Feb 9 17:56:17 1995
- ***************
- *** 12,79 ****
- deprecate("\"do\" to call subroutines");
- }
-
- - #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 LABEL 263
- - #define FORMAT 264
- - #define SUB 265
- - #define ANONSUB 266
- - #define PACKAGE 267
- - #define USE 268
- - #define WHILE 269
- - #define UNTIL 270
- - #define IF 271
- - #define UNLESS 272
- - #define ELSE 273
- - #define ELSIF 274
- - #define CONTINUE 275
- - #define FOR 276
- - #define LOOPEX 277
- - #define DOTDOT 278
- - #define FUNC0 279
- - #define FUNC1 280
- - #define FUNC 281
- - #define RELOP 282
- - #define EQOP 283
- - #define MULOP 284
- - #define ADDOP 285
- - #define DOLSHARP 286
- - #define DO 287
- - #define LOCAL 288
- - #define HASHBRACK 289
- - #define NOAMP 290
- - #define OROP 291
- - #define ANDOP 292
- - #define NOTOP 293
- - #define LSTOP 294
- - #define ASSIGNOP 295
- - #define OROR 296
- - #define ANDAND 297
- - #define BITOROP 298
- - #define BITANDOP 299
- - #define UNIOP 300
- - #define SHIFTOP 301
- - #define MATCHOP 302
- - #define UMINUS 303
- - #define REFGEN 304
- - #define POWOP 305
- - #define PREINC 306
- - #define PREDEC 307
- - #define POSTINC 308
- - #define POSTDEC 309
- - #define ARROW 310
- #define YYERRCODE 256
- short yylhs[] = { -1,
- 30, 0, 5, 3, 6, 6, 6, 7, 7, 7,
- --- 12,17 ----
- ***************
- *** 1334,1346 ****
- int yynerrs;
- int yyerrflag;
- int yychar;
- - short *yyssp;
- - YYSTYPE *yyvsp;
- YYSTYPE yyval;
- YYSTYPE yylval;
- - short yyss[YYSTACKSIZE];
- - YYSTYPE yyvs[YYSTACKSIZE];
- - #define yystacksize YYSTACKSIZE
- #line 545 "perly.y"
- /* PROGRAM */
- #line 1347 "y.tab.c"
- --- 1272,1279 ----
- ***************
- *** 1347,1360 ****
- --- 1280,1338 ----
- #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;
- + };
- +
- + void
- + yydestruct(ptr)
- + 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);
- + }
- +
- int
- 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;
- extern char *getenv();
- + #endif
-
- + struct ysv *ysave = (struct ysv*)safemalloc(sizeof(struct ysv));
- + SAVEDESTRUCTOR(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;
- ***************
- *** 1367,1372 ****
- --- 1345,1358 ----
- yyerrflag = 0;
- yychar = (-1);
-
- + /*
- + ** Initialize private stacks (yyparse may be called from an action)
- + */
- + ysave->yyss = yyss = (short*)safemalloc(yystacksize*sizeof(short));
- + ysave->yyvs = yyvs = (YYSTYPE*)safemalloc(yystacksize*sizeof(YYSTYPE));
- + if (!yyvs || !yyss)
- + goto yyoverflow;
- +
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
- ***************
- *** 1382,1388 ****
- 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
- --- 1368,1374 ----
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- ! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", yystate,
- yychar, yys);
- }
- #endif
- ***************
- *** 1392,1403 ****
- {
- #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;
- --- 1378,1403 ----
- {
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr, "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 = yyvs =
- ! (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ! ysave->yyss = yyss =
- ! (short*)realloc((char*)yyss,yystacksize * sizeof(short));
- ! if (!yyvs || !yyss)
- ! goto yyoverflow;
- ! yyssp = yyss + yyps_index;
- ! yyvsp = yyvs + yypv_index;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- ***************
- *** 1433,1444 ****
- {
- #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;
- --- 1433,1459 ----
- {
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr,
- ! "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*)realloc((char*)yyvs,
- ! yystacksize * sizeof(YYSTYPE));
- ! ysave->yyss = yyss = (short*)realloc((char*)yyss,
- ! yystacksize * sizeof(short));
- ! if (!yyvs || !yyss)
- ! goto yyoverflow;
- ! yyssp = yyss + yyps_index;
- ! yyvsp = yyvs + yypv_index;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- ***************
- *** 1448,1455 ****
- {
- #if YYDEBUG
- if (yydebug)
- ! printf("yydebug: error recovery discarding state %d\n",
- ! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --- 1463,1471 ----
- {
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr,
- ! "yydebug: error recovery discarding state %d\n",
- ! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- ***************
- *** 1466,1473 ****
- 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
- yychar = (-1);
- --- 1482,1490 ----
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- ! fprintf(stderr,
- ! "yydebug: state %d, error recovery discards token %d (%s)\n",
- ! yystate, yychar, yys);
- }
- #endif
- yychar = (-1);
- ***************
- *** 1476,1482 ****
- yyreduce:
- #if YYDEBUG
- if (yydebug)
- ! printf("yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
- yym = yylen[yyn];
- --- 1493,1499 ----
- yyreduce:
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr, "yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
- yym = yylen[yyn];
- ***************
- *** 2163,2170 ****
- {
- #if YYDEBUG
- if (yydebug)
- ! printf("yydebug: after reduction, shifting from state 0 to\
- ! state %d\n", YYFINAL);
- #endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- --- 2180,2188 ----
- {
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr,
- ! "yydebug: after reduction, shifting from state 0 to state %d\n",
- ! YYFINAL);
- #endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- ***************
- *** 2178,2184 ****
- 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
- --- 2196,2202 ----
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- ! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
- #endif
- ***************
- *** 2193,2212 ****
- 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);
- }
- --- 2211,2245 ----
- yystate = yydgoto[yym];
- #if YYDEBUG
- if (yydebug)
- ! fprintf(stderr,
- ! "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 = yyvs =
- ! (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ! ysave->yyss = yyss =
- ! (short*)realloc((char*)yyss,yystacksize * sizeof(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:
- ! return retval;
- }
-