Commit | Line | Data |
2ac72d6e |
1 | *** perly.c.orig Tue Mar 26 01:38:52 2002 |
2 | --- perly.c Tue Mar 26 01:38:54 2002 |
0ddaf513 |
3 | *************** |
4 | *** 1,5 **** |
5 | #ifndef lint |
6 | ! static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; |
7 | #endif |
8 | #define YYBYACC 1 |
9 | #line 16 "perly.y" |
10 | --- 1,5 ---- |
11 | #ifndef lint |
12 | ! /* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ |
13 | #endif |
14 | #define YYBYACC 1 |
15 | #line 16 "perly.y" |
16 | *************** |
17 | *** 9,15 **** |
2ac72d6e |
18 | #ifdef EBCDIC |
0ddaf513 |
19 | #undef YYDEBUG |
20 | #endif |
21 | ! #define dep() deprecate("\"do\" to call subroutines") |
22 | |
23 | /* stuff included here to make perly_c.diff apply better */ |
24 | |
25 | --- 9,15 ---- |
2ac72d6e |
26 | #ifdef EBCDIC |
0ddaf513 |
27 | #undef YYDEBUG |
28 | #endif |
29 | ! #define dep() deprecate_old("\"do\" to call subroutines") |
30 | |
31 | /* stuff included here to make perly_c.diff apply better */ |
32 | |
33 | *************** |
34 | *** 50,119 **** |
35 | #define yylex yylex_r |
36 | #endif |
37 | |
38 | ! #line 54 "y.tab.c" |
39 | ! #define WORD 257 |
40 | ! #define METHOD 258 |
41 | ! #define FUNCMETH 259 |
42 | ! #define THING 260 |
43 | ! #define PMFUNC 261 |
44 | ! #define PRIVATEREF 262 |
45 | ! #define FUNC0SUB 263 |
46 | ! #define UNIOPSUB 264 |
47 | ! #define LSTOPSUB 265 |
48 | ! #define LABEL 266 |
49 | ! #define FORMAT 267 |
50 | ! #define SUB 268 |
51 | ! #define ANONSUB 269 |
52 | ! #define PACKAGE 270 |
53 | ! #define USE 271 |
54 | ! #define WHILE 272 |
55 | ! #define UNTIL 273 |
56 | ! #define IF 274 |
57 | ! #define UNLESS 275 |
58 | ! #define ELSE 276 |
59 | ! #define ELSIF 277 |
60 | ! #define CONTINUE 278 |
61 | ! #define FOR 279 |
62 | ! #define LOOPEX 280 |
63 | ! #define DOTDOT 281 |
64 | ! #define FUNC0 282 |
65 | ! #define FUNC1 283 |
66 | ! #define FUNC 284 |
67 | ! #define UNIOP 285 |
68 | ! #define LSTOP 286 |
69 | ! #define RELOP 287 |
70 | ! #define EQOP 288 |
71 | ! #define MULOP 289 |
72 | ! #define ADDOP 290 |
73 | ! #define DOLSHARP 291 |
74 | ! #define DO 292 |
75 | ! #define HASHBRACK 293 |
76 | ! #define NOAMP 294 |
77 | ! #define LOCAL 295 |
78 | ! #define MY 296 |
79 | ! #define MYSUB 297 |
80 | ! #define COLONATTR 298 |
81 | ! #define PREC_LOW 299 |
82 | ! #define OROP 300 |
83 | ! #define ANDOP 301 |
84 | ! #define NOTOP 302 |
85 | ! #define ASSIGNOP 303 |
86 | ! #define OROR 304 |
87 | ! #define ANDAND 305 |
88 | ! #define BITOROP 306 |
89 | ! #define BITANDOP 307 |
90 | ! #define SHIFTOP 308 |
91 | ! #define MATCHOP 309 |
92 | ! #define UMINUS 310 |
93 | ! #define REFGEN 311 |
94 | ! #define POWOP 312 |
95 | ! #define PREINC 313 |
96 | ! #define PREDEC 314 |
97 | ! #define POSTINC 315 |
98 | ! #define POSTDEC 316 |
99 | ! #define ARROW 317 |
100 | #define YYERRCODE 256 |
101 | ! short yylhs[] = { -1, |
102 | 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, |
103 | 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, |
104 | 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, |
105 | --- 50,58 ---- |
106 | #define yylex yylex_r |
107 | #endif |
108 | |
109 | ! #line 54 "perly.c" |
110 | #define YYERRCODE 256 |
111 | ! static short yylhs[] = { -1, |
112 | 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, |
113 | 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, |
114 | 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, |
115 | *************** |
116 | *** 135,141 **** |
117 | 49, 34, 34, 35, 35, 35, 44, 24, 19, 20, |
118 | 21, 22, 23, 36, 36, 36, 36, |
119 | }; |
120 | ! short yylen[] = { 2, |
121 | 2, 4, 0, 0, 4, 0, 0, 2, 2, 2, |
122 | 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, |
123 | 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, |
124 | --- 74,80 ---- |
125 | 49, 34, 34, 35, 35, 35, 44, 24, 19, 20, |
126 | 21, 22, 23, 36, 36, 36, 36, |
127 | }; |
128 | ! static short yylen[] = { 2, |
129 | 2, 4, 0, 0, 4, 0, 0, 2, 2, 2, |
130 | 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, |
131 | 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, |
132 | *************** |
133 | *** 157,163 **** |
134 | 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, |
135 | 2, 2, 2, 1, 1, 1, 1, |
136 | }; |
137 | ! short yydefred[] = { 4, |
138 | 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, |
139 | 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, |
140 | 0, 70, 71, 0, 14, 3, 173, 0, 0, 154, |
141 | --- 96,102 ---- |
142 | 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, |
143 | 2, 2, 2, 1, 1, 1, 1, |
144 | }; |
145 | ! static short yydefred[] = { 4, |
146 | 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, |
147 | 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, |
148 | 0, 70, 71, 0, 14, 3, 173, 0, 0, 154, |
149 | *************** |
150 | *** 199,205 **** |
151 | 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, |
152 | 0, 33, 0, 23, |
153 | }; |
154 | ! short yydgoto[] = { 1, |
155 | 10, 11, 20, 104, 19, 2, 95, 370, 98, 359, |
156 | 3, 12, 13, 70, 375, 285, 72, 73, 74, 75, |
157 | 76, 77, 78, 79, 291, 81, 292, 281, 283, 286, |
158 | --- 138,144 ---- |
159 | 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, |
160 | 0, 33, 0, 23, |
161 | }; |
162 | ! static short yydgoto[] = { 1, |
163 | 10, 11, 20, 104, 19, 2, 95, 370, 98, 359, |
164 | 3, 12, 13, 70, 375, 285, 72, 73, 74, 75, |
165 | 76, 77, 78, 79, 291, 81, 292, 281, 283, 286, |
166 | *************** |
167 | *** 207,213 **** |
168 | 194, 327, 156, 289, 271, 225, 14, 83, 137, 84, |
169 | 85, 86, 87, 15, 16, 17, 18, 93, 278, |
170 | }; |
171 | ! short yysindex[] = { 0, |
172 | 0, 0, -132, 0, 0, 0, -51, 0, 0, 0, |
173 | 0, 0, 0, 0, 650, 0, 0, 0, -239, -215, |
174 | 5, 0, 0, -215, 0, 0, 0, -31, -31, 0, |
175 | --- 146,152 ---- |
176 | 194, 327, 156, 289, 271, 225, 14, 83, 137, 84, |
177 | 85, 86, 87, 15, 16, 17, 18, 93, 278, |
178 | }; |
179 | ! static short yysindex[] = { 0, |
180 | 0, 0, -132, 0, 0, 0, -51, 0, 0, 0, |
181 | 0, 0, 0, 0, 650, 0, 0, 0, -239, -215, |
182 | 5, 0, 0, -215, 0, 0, 0, -31, -31, 0, |
183 | *************** |
184 | *** 249,255 **** |
185 | 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, |
186 | 216, 0, -123, 0, |
187 | }; |
188 | ! short yyrindex[] = { 0, |
189 | 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, |
190 | 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, |
191 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
192 | --- 188,194 ---- |
193 | 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, |
194 | 216, 0, -123, 0, |
195 | }; |
196 | ! static short yyrindex[] = { 0, |
197 | 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, |
198 | 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, |
199 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
200 | *************** |
201 | *** 291,297 **** |
202 | 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, |
203 | 0, 0, 179, 0, |
204 | }; |
205 | ! short yygindex[] = { 0, |
206 | 0, 0, 196, 425, 0, 0, -2, 0, 37, 634, |
207 | -94, 0, 0, 0, -323, -15, 2445, 0, 999, 414, |
208 | 417, 0, 0, 0, 463, -43, 0, 0, 321, -198, |
209 | --- 230,236 ---- |
210 | 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, |
211 | 0, 0, 179, 0, |
212 | }; |
213 | ! static short yygindex[] = { 0, |
214 | 0, 0, 196, 425, 0, 0, -2, 0, 37, 634, |
215 | -94, 0, 0, 0, -323, -15, 2445, 0, 999, 414, |
216 | 417, 0, 0, 0, 463, -43, 0, 0, 321, -198, |
217 | *************** |
218 | *** 300,306 **** |
219 | 0, 0, 0, 0, 0, 0, 0, 0, 0, |
220 | }; |
221 | #define YYTABLESIZE 4568 |
222 | ! short yytable[] = { 71, |
223 | 197, 65, 121, 227, 65, 111, 220, 22, 198, 293, |
224 | 139, 296, 315, 275, 305, 102, 273, 88, 113, 228, |
225 | 60, 113, 279, 65, 317, 60, 182, 254, 325, 101, |
226 | --- 239,245 ---- |
227 | 0, 0, 0, 0, 0, 0, 0, 0, 0, |
228 | }; |
229 | #define YYTABLESIZE 4568 |
230 | ! static short yytable[] = { 71, |
231 | 197, 65, 121, 227, 65, 111, 220, 22, 198, 293, |
232 | 139, 296, 315, 275, 305, 102, 273, 88, 113, 228, |
233 | 60, 113, 279, 65, 317, 60, 182, 254, 325, 101, |
234 | *************** |
235 | *** 759,765 **** |
236 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
237 | 0, 0, 0, 0, 0, 0, 77, 77, |
238 | }; |
239 | ! short yycheck[] = { 15, |
240 | 95, 36, 46, 41, 36, 40, 59, 59, 100, 208, |
241 | 54, 41, 59, 199, 41, 40, 196, 257, 41, 93, |
242 | 123, 44, 202, 36, 93, 59, 40, 40, 59, 29, |
243 | --- 698,704 ---- |
244 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
245 | 0, 0, 0, 0, 0, 0, 77, 77, |
246 | }; |
247 | ! static short yycheck[] = { 15, |
248 | 95, 36, 46, 41, 36, 40, 59, 59, 100, 208, |
249 | 54, 41, 59, 199, 41, 40, 196, 257, 41, 93, |
250 | 123, 44, 202, 36, 93, 59, 40, 40, 59, 29, |
251 | *************** |
252 | *** 1224,1230 **** |
253 | #endif |
254 | #define YYMAXTOKEN 317 |
255 | #if YYDEBUG |
256 | ! char *yyname[] = { |
257 | "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, |
258 | "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0, |
259 | 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, |
260 | --- 1163,1169 ---- |
261 | #endif |
262 | #define YYMAXTOKEN 317 |
263 | #if YYDEBUG |
264 | ! static char *yyname[] = { |
265 | "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, |
266 | "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0, |
267 | 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, |
268 | *************** |
269 | *** 1241,1247 **** |
270 | "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP", |
271 | "PREINC","PREDEC","POSTINC","POSTDEC","ARROW", |
272 | }; |
273 | ! char *yyrule[] = { |
274 | "$accept : prog", |
275 | "prog : progstart lineseq", |
276 | "block : '{' remember lineseq '}'", |
277 | --- 1180,1186 ---- |
278 | "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP", |
279 | "PREINC","PREDEC","POSTINC","POSTDEC","ARROW", |
280 | }; |
281 | ! static char *yyrule[] = { |
282 | "$accept : prog", |
283 | "prog : progstart lineseq", |
284 | "block : '{' remember lineseq '}'", |
285 | *************** |
286 | *** 1456,1472 **** |
287 | #define YYMAXDEPTH 500 |
288 | #endif |
289 | #endif |
290 | - int yydebug; |
291 | - int yynerrs; |
292 | - int yyerrflag; |
293 | - int yychar; |
294 | - short *yyssp; |
295 | - YYSTYPE *yyvsp; |
296 | - YYSTYPE yyval; |
297 | - YYSTYPE yylval; |
298 | - short yyss[YYSTACKSIZE]; |
299 | - YYSTYPE yyvs[YYSTACKSIZE]; |
300 | - #define yystacksize YYSTACKSIZE |
301 | #line 793 "perly.y" |
302 | /* PROGRAM */ |
303 | |
304 | --- 1395,1400 ---- |
305 | *************** |
306 | *** 1477,1483 **** |
307 | #endif |
308 | #define yyparse() Perl_yyparse(pTHX) |
309 | |
310 | ! #line 1481 "y.tab.c" |
311 | #define YYABORT goto yyabort |
312 | #define YYACCEPT goto yyaccept |
313 | #define YYERROR goto yyerrlab |
314 | --- 1405,1411 ---- |
315 | #endif |
316 | #define yyparse() Perl_yyparse(pTHX) |
317 | |
318 | ! #line 1409 "perly.c" |
319 | #define YYABORT goto yyabort |
320 | #define YYACCEPT goto yyaccept |
321 | #define YYERROR goto yyerrlab |
322 | *************** |
323 | *** 1485,1495 **** |
324 | yyparse() |
325 | { |
326 | register int yym, yyn, yystate; |
327 | #if YYDEBUG |
328 | register char *yys; |
329 | ! extern char *getenv(); |
330 | |
331 | ! if (yys = getenv("YYDEBUG")) |
332 | { |
333 | yyn = *yys; |
334 | if (yyn >= '0' && yyn <= '9') |
335 | --- 1413,1443 ---- |
336 | yyparse() |
337 | { |
338 | register int yym, yyn, yystate; |
339 | + register short *yyssp; |
340 | + register YYSTYPE *yyvsp; |
341 | + short* yyss; |
342 | + YYSTYPE* yyvs; |
343 | + unsigned yystacksize = YYSTACKSIZE; |
344 | + int retval = 0; |
345 | #if YYDEBUG |
346 | register char *yys; |
347 | ! #endif |
348 | |
349 | ! struct ysv *ysave; |
350 | ! #ifdef USE_ITHREADS |
351 | ! ENTER; /* force yydestruct() before we return */ |
352 | ! #endif |
353 | ! New(73, ysave, 1, struct ysv); |
354 | ! SAVEDESTRUCTOR_X(yydestruct, ysave); |
355 | ! ysave->oldyydebug = yydebug; |
356 | ! ysave->oldyynerrs = yynerrs; |
357 | ! ysave->oldyyerrflag = yyerrflag; |
358 | ! ysave->oldyychar = yychar; |
359 | ! ysave->oldyyval = yyval; |
360 | ! ysave->oldyylval = yylval; |
361 | ! |
362 | ! #if YYDEBUG |
363 | ! if ((yys = getenv("YYDEBUG"))) |
364 | { |
365 | yyn = *yys; |
366 | if (yyn >= '0' && yyn <= '9') |
367 | *************** |
368 | *** 1501,1512 **** |
369 | yyerrflag = 0; |
370 | yychar = (-1); |
371 | |
372 | yyssp = yyss; |
373 | yyvsp = yyvs; |
374 | *yyssp = yystate = 0; |
375 | |
376 | yyloop: |
377 | ! if (yyn = yydefred[yystate]) goto yyreduce; |
378 | if (yychar < 0) |
379 | { |
380 | if ((yychar = yylex()) < 0) yychar = 0; |
381 | --- 1449,1470 ---- |
382 | yyerrflag = 0; |
383 | yychar = (-1); |
384 | |
385 | + /* |
386 | + ** Initialize private stacks (yyparse may be called from an action) |
387 | + */ |
388 | + New(73, yyss, yystacksize, short); |
389 | + New(73, yyvs, yystacksize, YYSTYPE); |
390 | + ysave->yyss = yyss; |
391 | + ysave->yyvs = yyvs; |
392 | + if (!yyvs || !yyss) |
393 | + goto yyoverflow; |
394 | + |
395 | yyssp = yyss; |
396 | yyvsp = yyvs; |
397 | *yyssp = yystate = 0; |
398 | |
399 | yyloop: |
400 | ! if ((yyn = yydefred[yystate])) goto yyreduce; |
401 | if (yychar < 0) |
402 | { |
403 | if ((yychar = yylex()) < 0) yychar = 0; |
404 | *************** |
405 | *** 1516,1522 **** |
406 | yys = 0; |
407 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
408 | if (!yys) yys = "illegal-symbol"; |
409 | ! printf("yydebug: state %d, reading %d (%s)\n", yystate, |
410 | yychar, yys); |
411 | } |
412 | #endif |
413 | --- 1474,1480 ---- |
414 | yys = 0; |
415 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
416 | if (!yys) yys = "illegal-symbol"; |
417 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, |
418 | yychar, yys); |
419 | } |
420 | #endif |
421 | *************** |
422 | *** 1526,1537 **** |
423 | { |
424 | #if YYDEBUG |
425 | if (yydebug) |
426 | ! printf("yydebug: state %d, shifting to state %d\n", |
427 | yystate, yytable[yyn]); |
428 | #endif |
429 | if (yyssp >= yyss + yystacksize - 1) |
430 | { |
431 | goto yyoverflow; |
432 | } |
433 | *++yyssp = yystate = yytable[yyn]; |
434 | *++yyvsp = yylval; |
435 | --- 1484,1507 ---- |
436 | { |
437 | #if YYDEBUG |
438 | if (yydebug) |
439 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", |
440 | yystate, yytable[yyn]); |
441 | #endif |
442 | if (yyssp >= yyss + yystacksize - 1) |
443 | { |
444 | + /* |
445 | + ** reallocate and recover. Note that pointers |
446 | + ** have to be reset, or bad things will happen |
447 | + */ |
448 | + int yyps_index = (yyssp - yyss); |
449 | + int yypv_index = (yyvsp - yyvs); |
450 | + yystacksize += YYSTACKSIZE; |
451 | + ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); |
452 | + ysave->yyss = Renew(yyss, yystacksize, short); |
453 | + if (!yyvs || !yyss) |
454 | goto yyoverflow; |
455 | + yyssp = yyss + yyps_index; |
456 | + yyvsp = yyvs + yypv_index; |
457 | } |
458 | *++yyssp = yystate = yytable[yyn]; |
459 | *++yyvsp = yylval; |
460 | *************** |
461 | *** 1547,1560 **** |
462 | } |
463 | if (yyerrflag) goto yyinrecovery; |
464 | #ifdef lint |
465 | ! goto yynewerror; |
466 | #endif |
467 | ! yynewerror: |
468 | yyerror("syntax error"); |
469 | #ifdef lint |
470 | ! goto yyerrlab; |
471 | #endif |
472 | ! yyerrlab: |
473 | ++yynerrs; |
474 | yyinrecovery: |
475 | if (yyerrflag < 3) |
476 | --- 1517,1530 ---- |
477 | } |
478 | if (yyerrflag) goto yyinrecovery; |
479 | #ifdef lint |
480 | ! |
481 | #endif |
482 | ! |
483 | yyerror("syntax error"); |
484 | #ifdef lint |
485 | ! |
486 | #endif |
487 | ! |
488 | ++yynerrs; |
489 | yyinrecovery: |
490 | if (yyerrflag < 3) |
491 | *************** |
492 | *** 1567,1578 **** |
493 | { |
494 | #if YYDEBUG |
495 | if (yydebug) |
496 | ! printf("yydebug: state %d, error recovery shifting\ |
497 | to state %d\n", *yyssp, yytable[yyn]); |
498 | #endif |
499 | if (yyssp >= yyss + yystacksize - 1) |
500 | { |
501 | goto yyoverflow; |
502 | } |
503 | *++yyssp = yystate = yytable[yyn]; |
504 | *++yyvsp = yylval; |
505 | --- 1537,1560 ---- |
506 | { |
507 | #if YYDEBUG |
508 | if (yydebug) |
509 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\ |
510 | to state %d\n", *yyssp, yytable[yyn]); |
511 | #endif |
512 | if (yyssp >= yyss + yystacksize - 1) |
513 | { |
514 | + /* |
515 | + ** reallocate and recover. Note that pointers |
516 | + ** have to be reset, or bad things will happen |
517 | + */ |
518 | + int yyps_index = (yyssp - yyss); |
519 | + int yypv_index = (yyvsp - yyvs); |
520 | + yystacksize += YYSTACKSIZE; |
521 | + ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); |
522 | + ysave->yyss = Renew(yyss, yystacksize, short); |
523 | + if (!yyvs || !yyss) |
524 | goto yyoverflow; |
525 | + yyssp = yyss + yyps_index; |
526 | + yyvsp = yyvs + yypv_index; |
527 | } |
528 | *++yyssp = yystate = yytable[yyn]; |
529 | *++yyvsp = yylval; |
530 | *************** |
531 | *** 1582,1588 **** |
532 | { |
533 | #if YYDEBUG |
534 | if (yydebug) |
535 | ! printf("yydebug: error recovery discarding state %d\n", |
536 | *yyssp); |
537 | #endif |
538 | if (yyssp <= yyss) goto yyabort; |
539 | --- 1564,1570 ---- |
540 | { |
541 | #if YYDEBUG |
542 | if (yydebug) |
543 | ! PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", |
544 | *yyssp); |
545 | #endif |
546 | if (yyssp <= yyss) goto yyabort; |
547 | *************** |
548 | *** 1600,1606 **** |
549 | yys = 0; |
550 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
551 | if (!yys) yys = "illegal-symbol"; |
552 | ! printf("yydebug: state %d, error recovery discards token %d (%s)\n", |
553 | yystate, yychar, yys); |
554 | } |
555 | #endif |
556 | --- 1582,1588 ---- |
557 | yys = 0; |
558 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
559 | if (!yys) yys = "illegal-symbol"; |
560 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", |
561 | yystate, yychar, yys); |
562 | } |
563 | #endif |
564 | *************** |
565 | *** 1610,1616 **** |
566 | yyreduce: |
567 | #if YYDEBUG |
568 | if (yydebug) |
569 | ! printf("yydebug: state %d, reducing by rule %d (%s)\n", |
570 | yystate, yyn, yyrule[yyn]); |
571 | #endif |
572 | yym = yylen[yyn]; |
573 | --- 1592,1598 ---- |
574 | yyreduce: |
575 | #if YYDEBUG |
576 | if (yydebug) |
577 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", |
578 | yystate, yyn, yyrule[yyn]); |
579 | #endif |
580 | yym = yylen[yyn]; |
581 | *************** |
582 | *** 2473,2479 **** |
583 | #line 790 "perly.y" |
584 | { yyval.opval = yyvsp[0].opval; } |
585 | break; |
586 | ! #line 2477 "y.tab.c" |
587 | } |
588 | yyssp -= yym; |
589 | yystate = *yyssp; |
590 | --- 2455,2461 ---- |
591 | #line 790 "perly.y" |
592 | { yyval.opval = yyvsp[0].opval; } |
593 | break; |
594 | ! #line 2459 "perly.c" |
595 | } |
596 | yyssp -= yym; |
597 | yystate = *yyssp; |
598 | *************** |
599 | *** 2483,2489 **** |
600 | { |
601 | #if YYDEBUG |
602 | if (yydebug) |
603 | ! printf("yydebug: after reduction, shifting from state 0 to\ |
604 | state %d\n", YYFINAL); |
605 | #endif |
606 | yystate = YYFINAL; |
607 | --- 2465,2471 ---- |
608 | { |
609 | #if YYDEBUG |
610 | if (yydebug) |
611 | ! PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ |
612 | state %d\n", YYFINAL); |
613 | #endif |
614 | yystate = YYFINAL; |
615 | *************** |
616 | *** 2498,2504 **** |
617 | yys = 0; |
618 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
619 | if (!yys) yys = "illegal-symbol"; |
620 | ! printf("yydebug: state %d, reading %d (%s)\n", |
621 | YYFINAL, yychar, yys); |
622 | } |
623 | #endif |
624 | --- 2480,2486 ---- |
625 | yys = 0; |
626 | if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; |
627 | if (!yys) yys = "illegal-symbol"; |
628 | ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", |
629 | YYFINAL, yychar, yys); |
630 | } |
631 | #endif |
632 | *************** |
633 | *** 2513,2532 **** |
634 | yystate = yydgoto[yym]; |
635 | #if YYDEBUG |
636 | if (yydebug) |
637 | ! printf("yydebug: after reduction, shifting from state %d \ |
638 | to state %d\n", *yyssp, yystate); |
639 | #endif |
640 | if (yyssp >= yyss + yystacksize - 1) |
641 | { |
642 | goto yyoverflow; |
643 | } |
644 | *++yyssp = yystate; |
645 | *++yyvsp = yyval; |
646 | goto yyloop; |
647 | yyoverflow: |
648 | ! yyerror("yacc stack overflow"); |
649 | yyabort: |
650 | ! return (1); |
651 | yyaccept: |
652 | ! return (0); |
653 | } |
654 | --- 2495,2544 ---- |
655 | yystate = yydgoto[yym]; |
656 | #if YYDEBUG |
657 | if (yydebug) |
658 | ! PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \ |
659 | to state %d\n", *yyssp, yystate); |
660 | #endif |
661 | if (yyssp >= yyss + yystacksize - 1) |
662 | { |
663 | + /* |
664 | + ** reallocate and recover. Note that pointers |
665 | + ** have to be reset, or bad things will happen |
666 | + */ |
667 | + int yyps_index = (yyssp - yyss); |
668 | + int yypv_index = (yyvsp - yyvs); |
669 | + yystacksize += YYSTACKSIZE; |
670 | + ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); |
671 | + ysave->yyss = Renew(yyss, yystacksize, short); |
672 | + if (!yyvs || !yyss) |
673 | goto yyoverflow; |
674 | + yyssp = yyss + yyps_index; |
675 | + yyvsp = yyvs + yypv_index; |
676 | } |
677 | *++yyssp = yystate; |
678 | *++yyvsp = yyval; |
679 | goto yyloop; |
680 | yyoverflow: |
681 | ! yyerror("Out of memory for yacc stack"); |
682 | yyabort: |
683 | ! retval = 1; |
684 | yyaccept: |
685 | ! #ifdef USE_ITHREADS |
686 | ! LEAVE; /* force yydestruct() before we return */ |
687 | ! #endif |
688 | ! return retval; |
689 | ! } |
690 | ! |
691 | ! static void |
692 | ! yydestruct(pTHX_ void *ptr) |
693 | ! { |
694 | ! struct ysv* ysave = (struct ysv*)ptr; |
695 | ! if (ysave->yyss) Safefree(ysave->yyss); |
696 | ! if (ysave->yyvs) Safefree(ysave->yyvs); |
697 | ! yydebug = ysave->oldyydebug; |
698 | ! yynerrs = ysave->oldyynerrs; |
699 | ! yyerrflag = ysave->oldyyerrflag; |
700 | ! yychar = ysave->oldyychar; |
701 | ! yyval = ysave->oldyyval; |
702 | ! yylval = ysave->oldyylval; |
703 | ! Safefree(ysave); |
704 | } |