line |
stmt |
bran |
cond |
sub |
time |
code |
1
|
|
|
|
|
|
/* perly.c |
2
|
|
|
|
|
|
* |
3
|
|
|
|
|
|
* Copyright (c) 2004, 2005, 2006, 2007, 2008, |
4
|
|
|
|
|
|
* 2009, 2010, 2011 by Larry Wall and others |
5
|
|
|
|
|
|
* |
6
|
|
|
|
|
|
* You may distribute under the terms of either the GNU General Public |
7
|
|
|
|
|
|
* License or the Artistic License, as specified in the README file. |
8
|
|
|
|
|
|
* |
9
|
|
|
|
|
|
* Note that this file was originally generated as an output from |
10
|
|
|
|
|
|
* GNU bison version 1.875, but now the code is statically maintained |
11
|
|
|
|
|
|
* and edited; the bits that are dependent on perly.y are now |
12
|
|
|
|
|
|
* #included from the files perly.tab and perly.act. |
13
|
|
|
|
|
|
* |
14
|
|
|
|
|
|
* Here is an important copyright statement from the original, generated |
15
|
|
|
|
|
|
* file: |
16
|
|
|
|
|
|
* |
17
|
|
|
|
|
|
* As a special exception, when this file is copied by Bison into a |
18
|
|
|
|
|
|
* Bison output file, you may use that output file without |
19
|
|
|
|
|
|
* restriction. This special exception was added by the Free |
20
|
|
|
|
|
|
* Software Foundation in version 1.24 of Bison. |
21
|
|
|
|
|
|
* |
22
|
|
|
|
|
|
* Note that this file is also #included in madly.c, to allow compilation |
23
|
|
|
|
|
|
* of a second parser, Perl_madparse, that is identical to Perl_yyparse, |
24
|
|
|
|
|
|
* but which includes extra code for dumping the parse tree. |
25
|
|
|
|
|
|
* This is controlled by the PERL_IN_MADLY_C define. |
26
|
|
|
|
|
|
*/ |
27
|
|
|
|
|
|
|
28
|
|
|
|
|
|
#include "EXTERN.h" |
29
|
|
|
|
|
|
#define PERL_IN_PERLY_C |
30
|
|
|
|
|
|
#include "perl.h" |
31
|
|
|
|
|
|
|
32
|
|
|
|
|
|
typedef unsigned char yytype_uint8; |
33
|
|
|
|
|
|
typedef signed char yytype_int8; |
34
|
|
|
|
|
|
typedef unsigned short int yytype_uint16; |
35
|
|
|
|
|
|
typedef short int yytype_int16; |
36
|
|
|
|
|
|
typedef signed char yysigned_char; |
37
|
|
|
|
|
|
|
38
|
|
|
|
|
|
/* YYINITDEPTH -- initial size of the parser's stacks. */ |
39
|
|
|
|
|
|
#define YYINITDEPTH 200 |
40
|
|
|
|
|
|
|
41
|
|
|
|
|
|
#ifdef YYDEBUG |
42
|
|
|
|
|
|
# undef YYDEBUG |
43
|
|
|
|
|
|
#endif |
44
|
|
|
|
|
|
#ifdef DEBUGGING |
45
|
|
|
|
|
|
# define YYDEBUG 1 |
46
|
|
|
|
|
|
#else |
47
|
|
|
|
|
|
# define YYDEBUG 0 |
48
|
|
|
|
|
|
#endif |
49
|
|
|
|
|
|
|
50
|
|
|
|
|
|
#ifndef YY_NULL |
51
|
|
|
|
|
|
# define YY_NULL 0 |
52
|
|
|
|
|
|
#endif |
53
|
|
|
|
|
|
|
54
|
|
|
|
|
|
/* contains all the parser state tables; auto-generated from perly.y */ |
55
|
|
|
|
|
|
#include "perly.tab" |
56
|
|
|
|
|
|
|
57
|
|
|
|
|
|
# define YYSIZE_T size_t |
58
|
|
|
|
|
|
|
59
|
|
|
|
|
|
#define YYEOF 0 |
60
|
|
|
|
|
|
#define YYTERROR 1 |
61
|
|
|
|
|
|
|
62
|
|
|
|
|
|
#define YYACCEPT goto yyacceptlab |
63
|
|
|
|
|
|
#define YYABORT goto yyabortlab |
64
|
|
|
|
|
|
#define YYERROR goto yyerrlab1 |
65
|
|
|
|
|
|
|
66
|
|
|
|
|
|
/* Enable debugging if requested. */ |
67
|
|
|
|
|
|
#ifdef DEBUGGING |
68
|
|
|
|
|
|
|
69
|
|
|
|
|
|
# define yydebug (DEBUG_p_TEST) |
70
|
|
|
|
|
|
|
71
|
|
|
|
|
|
# define YYFPRINTF PerlIO_printf |
72
|
|
|
|
|
|
|
73
|
|
|
|
|
|
# define YYDPRINTF(Args) \ |
74
|
|
|
|
|
|
do { \ |
75
|
|
|
|
|
|
if (yydebug) \ |
76
|
|
|
|
|
|
YYFPRINTF Args; \ |
77
|
|
|
|
|
|
} while (0) |
78
|
|
|
|
|
|
|
79
|
|
|
|
|
|
# define YYDSYMPRINTF(Title, Token, Value) \ |
80
|
|
|
|
|
|
do { \ |
81
|
|
|
|
|
|
if (yydebug) { \ |
82
|
|
|
|
|
|
YYFPRINTF (Perl_debug_log, "%s ", Title); \ |
83
|
|
|
|
|
|
yysymprint (aTHX_ Perl_debug_log, Token, Value); \ |
84
|
|
|
|
|
|
YYFPRINTF (Perl_debug_log, "\n"); \ |
85
|
|
|
|
|
|
} \ |
86
|
|
|
|
|
|
} while (0) |
87
|
|
|
|
|
|
|
88
|
|
|
|
|
|
/*--------------------------------. |
89
|
|
|
|
|
|
| Print this symbol on YYOUTPUT. | |
90
|
|
|
|
|
|
`--------------------------------*/ |
91
|
|
|
|
|
|
|
92
|
|
|
|
|
|
static void |
93
|
|
|
|
|
|
yysymprint(pTHX_ PerlIO * const yyoutput, int yytype, const YYSTYPE * const yyvaluep) |
94
|
|
|
|
|
|
{ |
95
|
|
|
|
|
|
if (yytype < YYNTOKENS) { |
96
|
|
|
|
|
|
YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); |
97
|
|
|
|
|
|
# ifdef YYPRINT |
98
|
|
|
|
|
|
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); |
99
|
|
|
|
|
|
# else |
100
|
|
|
|
|
|
YYFPRINTF (yyoutput, "0x%"UVxf, (UV)yyvaluep->ival); |
101
|
|
|
|
|
|
# endif |
102
|
|
|
|
|
|
} |
103
|
|
|
|
|
|
else |
104
|
|
|
|
|
|
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); |
105
|
|
|
|
|
|
|
106
|
|
|
|
|
|
YYFPRINTF (yyoutput, ")"); |
107
|
|
|
|
|
|
} |
108
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
110
|
|
|
|
|
|
/* yy_stack_print() |
111
|
|
|
|
|
|
* print the top 8 items on the parse stack. |
112
|
|
|
|
|
|
*/ |
113
|
|
|
|
|
|
|
114
|
|
|
|
|
|
static void |
115
|
|
|
|
|
|
yy_stack_print (pTHX_ const yy_parser *parser) |
116
|
|
|
|
|
|
{ |
117
|
|
|
|
|
|
const yy_stack_frame *ps, *min; |
118
|
|
|
|
|
|
|
119
|
|
|
|
|
|
min = parser->ps - 8 + 1; |
120
|
|
|
|
|
|
if (min <= parser->stack) |
121
|
|
|
|
|
|
min = parser->stack + 1; |
122
|
|
|
|
|
|
|
123
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, "\nindex:"); |
124
|
|
|
|
|
|
for (ps = min; ps <= parser->ps; ps++) |
125
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8d", (int)(ps - parser->stack)); |
126
|
|
|
|
|
|
|
127
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, "\nstate:"); |
128
|
|
|
|
|
|
for (ps = min; ps <= parser->ps; ps++) |
129
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8d", ps->state); |
130
|
|
|
|
|
|
|
131
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, "\ntoken:"); |
132
|
|
|
|
|
|
for (ps = min; ps <= parser->ps; ps++) |
133
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8.8s", ps->name); |
134
|
|
|
|
|
|
|
135
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, "\nvalue:"); |
136
|
|
|
|
|
|
for (ps = min; ps <= parser->ps; ps++) { |
137
|
|
|
|
|
|
switch (yy_type_tab[yystos[ps->state]]) { |
138
|
|
|
|
|
|
case toketype_opval: |
139
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8.8s", |
140
|
|
|
|
|
|
ps->val.opval |
141
|
|
|
|
|
|
? PL_op_name[ps->val.opval->op_type] |
142
|
|
|
|
|
|
: "(Nullop)" |
143
|
|
|
|
|
|
); |
144
|
|
|
|
|
|
break; |
145
|
|
|
|
|
|
#ifndef PERL_IN_MADLY_C |
146
|
|
|
|
|
|
case toketype_i_tkval: |
147
|
|
|
|
|
|
#endif |
148
|
|
|
|
|
|
case toketype_ival: |
149
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8"IVdf, (IV)ps->val.ival); |
150
|
|
|
|
|
|
break; |
151
|
|
|
|
|
|
default: |
152
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, " %8"UVxf, (UV)ps->val.ival); |
153
|
|
|
|
|
|
} |
154
|
|
|
|
|
|
} |
155
|
|
|
|
|
|
PerlIO_printf(Perl_debug_log, "\n\n"); |
156
|
|
|
|
|
|
} |
157
|
|
|
|
|
|
|
158
|
|
|
|
|
|
# define YY_STACK_PRINT(parser) \ |
159
|
|
|
|
|
|
do { \ |
160
|
|
|
|
|
|
if (yydebug && DEBUG_v_TEST) \ |
161
|
|
|
|
|
|
yy_stack_print (aTHX_ parser); \ |
162
|
|
|
|
|
|
} while (0) |
163
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
165
|
|
|
|
|
|
/*------------------------------------------------. |
166
|
|
|
|
|
|
| Report that the YYRULE is going to be reduced. | |
167
|
|
|
|
|
|
`------------------------------------------------*/ |
168
|
|
|
|
|
|
|
169
|
|
|
|
|
|
static void |
170
|
|
|
|
|
|
yy_reduce_print (pTHX_ int yyrule) |
171
|
|
|
|
|
|
{ |
172
|
|
|
|
|
|
int yyi; |
173
|
|
|
|
|
|
const unsigned int yylineno = yyrline[yyrule]; |
174
|
|
|
|
|
|
YYFPRINTF (Perl_debug_log, "Reducing stack by rule %d (line %u), ", |
175
|
|
|
|
|
|
yyrule - 1, yylineno); |
176
|
|
|
|
|
|
/* Print the symbols being reduced, and their result. */ |
177
|
|
|
|
|
|
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) |
178
|
|
|
|
|
|
YYFPRINTF (Perl_debug_log, "%s ", yytname [yyrhs[yyi]]); |
179
|
|
|
|
|
|
YYFPRINTF (Perl_debug_log, "-> %s\n", yytname [yyr1[yyrule]]); |
180
|
|
|
|
|
|
} |
181
|
|
|
|
|
|
|
182
|
|
|
|
|
|
# define YY_REDUCE_PRINT(Rule) \ |
183
|
|
|
|
|
|
do { \ |
184
|
|
|
|
|
|
if (yydebug) \ |
185
|
|
|
|
|
|
yy_reduce_print (aTHX_ Rule); \ |
186
|
|
|
|
|
|
} while (0) |
187
|
|
|
|
|
|
|
188
|
|
|
|
|
|
#else /* !DEBUGGING */ |
189
|
|
|
|
|
|
# define YYDPRINTF(Args) |
190
|
|
|
|
|
|
# define YYDSYMPRINTF(Title, Token, Value) |
191
|
|
|
|
|
|
# define YY_STACK_PRINT(parser) |
192
|
|
|
|
|
|
# define YY_REDUCE_PRINT(Rule) |
193
|
|
|
|
|
|
#endif /* !DEBUGGING */ |
194
|
|
|
|
|
|
|
195
|
|
|
|
|
|
/* called during cleanup (via SAVEDESTRUCTOR_X) to free any items on the |
196
|
|
|
|
|
|
* parse stack, thus avoiding leaks if we die */ |
197
|
|
|
|
|
|
|
198
|
|
|
|
|
|
static void |
199
|
4375749
|
|
|
|
|
S_clear_yystack(pTHX_ const yy_parser *parser) |
200
|
|
|
|
|
|
{ |
201
|
4375749
|
|
|
|
|
yy_stack_frame *ps = parser->ps; |
202
|
|
|
|
|
|
int i = 0; |
203
|
|
|
|
|
|
|
204
|
4375749
|
50
|
|
|
|
if (!parser->stack) |
205
|
4375749
|
|
|
|
|
return; |
206
|
|
|
|
|
|
|
207
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "clearing the parse stack\n")); |
208
|
|
|
|
|
|
|
209
|
2402367
|
100
|
|
|
|
for (i=0; i< parser->yylen; i++) { |
210
|
192356
|
|
|
|
|
SvREFCNT_dec(ps[-i].compcv); |
211
|
|
|
|
|
|
} |
212
|
4375749
|
|
|
|
|
ps -= parser->yylen; |
213
|
|
|
|
|
|
|
214
|
|
|
|
|
|
/* now free whole the stack, including the just-reduced ops */ |
215
|
|
|
|
|
|
|
216
|
6867705
|
100
|
|
|
|
while (ps > parser->stack) { |
217
|
326218
|
50
|
|
|
|
LEAVE_SCOPE(ps->savestack_ix); |
218
|
326218
|
100
|
|
|
|
if (yy_type_tab[yystos[ps->state]] == toketype_opval |
219
|
65874
|
100
|
|
|
|
&& ps->val.opval) |
220
|
|
|
|
|
|
{ |
221
|
4048
|
100
|
|
|
|
if (ps->compcv != PL_compcv) { |
222
|
50
|
|
|
|
|
PL_compcv = ps->compcv; |
223
|
50
|
|
|
|
|
PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); |
224
|
50
|
|
|
|
|
PL_comppad_name = PadlistNAMES(CvPADLIST(PL_compcv)); |
225
|
|
|
|
|
|
} |
226
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); |
227
|
4048
|
|
|
|
|
op_free(ps->val.opval); |
228
|
|
|
|
|
|
} |
229
|
326218
|
|
|
|
|
SvREFCNT_dec(ps->compcv); |
230
|
326218
|
|
|
|
|
ps--; |
231
|
|
|
|
|
|
} |
232
|
|
|
|
|
|
|
233
|
4375749
|
|
|
|
|
Safefree(parser->stack); |
234
|
|
|
|
|
|
} |
235
|
|
|
|
|
|
|
236
|
|
|
|
|
|
|
237
|
|
|
|
|
|
/*----------. |
238
|
|
|
|
|
|
| yyparse. | |
239
|
|
|
|
|
|
`----------*/ |
240
|
|
|
|
|
|
|
241
|
|
|
|
|
|
int |
242
|
|
|
|
|
|
#ifdef PERL_IN_MADLY_C |
243
|
|
|
|
|
|
Perl_madparse (pTHX_ int gramtype) |
244
|
|
|
|
|
|
#else |
245
|
4375749
|
|
|
|
|
Perl_yyparse (pTHX_ int gramtype) |
246
|
|
|
|
|
|
#endif |
247
|
|
|
|
|
|
{ |
248
|
|
|
|
|
|
dVAR; |
249
|
|
|
|
|
|
int yystate; |
250
|
|
|
|
|
|
int yyn; |
251
|
|
|
|
|
|
int yyresult; |
252
|
|
|
|
|
|
|
253
|
|
|
|
|
|
/* Lookahead token as an internal (translated) token number. */ |
254
|
|
|
|
|
|
int yytoken = 0; |
255
|
|
|
|
|
|
|
256
|
|
|
|
|
|
yy_parser *parser; /* the parser object */ |
257
|
|
|
|
|
|
yy_stack_frame *ps; /* current parser stack frame */ |
258
|
|
|
|
|
|
|
259
|
|
|
|
|
|
#define YYPOPSTACK parser->ps = --ps |
260
|
|
|
|
|
|
#define YYPUSHSTACK parser->ps = ++ps |
261
|
|
|
|
|
|
|
262
|
|
|
|
|
|
/* The variable used to return semantic value and location from the |
263
|
|
|
|
|
|
action routines: ie $$. */ |
264
|
|
|
|
|
|
YYSTYPE yyval; |
265
|
|
|
|
|
|
|
266
|
|
|
|
|
|
#ifndef PERL_IN_MADLY_C |
267
|
|
|
|
|
|
# ifdef PERL_MAD |
268
|
|
|
|
|
|
if (PL_madskills) |
269
|
|
|
|
|
|
return madparse(gramtype); |
270
|
|
|
|
|
|
# endif |
271
|
|
|
|
|
|
#endif |
272
|
|
|
|
|
|
|
273
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Starting parse\n")); |
274
|
|
|
|
|
|
|
275
|
4375749
|
|
|
|
|
parser = PL_parser; |
276
|
|
|
|
|
|
|
277
|
4375749
|
|
|
|
|
ENTER; /* force parser state cleanup/restoration before we return */ |
278
|
4375749
|
|
|
|
|
SAVEPPTR(parser->yylval.pval); |
279
|
4375749
|
|
|
|
|
SAVEINT(parser->yychar); |
280
|
4375749
|
|
|
|
|
SAVEINT(parser->yyerrstatus); |
281
|
4375749
|
|
|
|
|
SAVEINT(parser->stack_size); |
282
|
4375749
|
|
|
|
|
SAVEINT(parser->yylen); |
283
|
4375749
|
|
|
|
|
SAVEVPTR(parser->stack); |
284
|
4375749
|
|
|
|
|
SAVEVPTR(parser->ps); |
285
|
|
|
|
|
|
|
286
|
|
|
|
|
|
/* initialise state for this parse */ |
287
|
4375749
|
|
|
|
|
parser->yychar = gramtype; |
288
|
4375749
|
|
|
|
|
parser->yyerrstatus = 0; |
289
|
4375749
|
|
|
|
|
parser->stack_size = YYINITDEPTH; |
290
|
4375749
|
|
|
|
|
parser->yylen = 0; |
291
|
4375749
|
|
|
|
|
Newx(parser->stack, YYINITDEPTH, yy_stack_frame); |
292
|
4375749
|
|
|
|
|
ps = parser->ps = parser->stack; |
293
|
4375749
|
|
|
|
|
ps->state = 0; |
294
|
1546715250
|
|
|
|
|
SAVEDESTRUCTOR_X(S_clear_yystack, parser); |
295
|
|
|
|
|
|
|
296
|
|
|
|
|
|
/*------------------------------------------------------------. |
297
|
|
|
|
|
|
| yynewstate -- Push a new state, which is found in yystate. | |
298
|
|
|
|
|
|
`------------------------------------------------------------*/ |
299
|
|
|
|
|
|
yynewstate: |
300
|
|
|
|
|
|
|
301
|
2990689172
|
|
|
|
|
yystate = ps->state; |
302
|
|
|
|
|
|
|
303
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Entering state %d\n", yystate)); |
304
|
|
|
|
|
|
|
305
|
2990689172
|
|
|
|
|
parser->yylen = 0; |
306
|
|
|
|
|
|
|
307
|
|
|
|
|
|
{ |
308
|
2990689172
|
|
|
|
|
size_t size = ps - parser->stack + 1; |
309
|
|
|
|
|
|
|
310
|
|
|
|
|
|
/* grow the stack? We always leave 1 spare slot, |
311
|
|
|
|
|
|
* in case of a '' -> 'foo' reduction */ |
312
|
|
|
|
|
|
|
313
|
2990689172
|
100
|
|
|
|
if (size >= (size_t)parser->stack_size - 1) { |
314
|
|
|
|
|
|
/* this will croak on insufficient memory */ |
315
|
20
|
|
|
|
|
parser->stack_size *= 2; |
316
|
30
|
50
|
|
|
|
Renew(parser->stack, parser->stack_size, yy_stack_frame); |
317
|
20
|
|
|
|
|
ps = parser->ps = parser->stack + size -1; |
318
|
|
|
|
|
|
|
319
|
|
|
|
|
|
YYDPRINTF((Perl_debug_log, |
320
|
|
|
|
|
|
"parser stack size increased to %lu frames\n", |
321
|
|
|
|
|
|
(unsigned long int)parser->stack_size)); |
322
|
|
|
|
|
|
} |
323
|
|
|
|
|
|
} |
324
|
|
|
|
|
|
|
325
|
|
|
|
|
|
/* Do appropriate processing given the current state. */ |
326
|
|
|
|
|
|
/* Read a lookahead token if we need one and don't already have one. */ |
327
|
|
|
|
|
|
|
328
|
|
|
|
|
|
/* First try to decide what to do without reference to lookahead token. */ |
329
|
|
|
|
|
|
|
330
|
2990689172
|
|
|
|
|
yyn = yypact[yystate]; |
331
|
2990689172
|
100
|
|
|
|
if (yyn == YYPACT_NINF) |
332
|
|
|
|
|
|
goto yydefault; |
333
|
|
|
|
|
|
|
334
|
|
|
|
|
|
/* Not known => get a lookahead token if don't already have one. */ |
335
|
|
|
|
|
|
|
336
|
|
|
|
|
|
/* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ |
337
|
1835087290
|
100
|
|
|
|
if (parser->yychar == YYEMPTY) { |
338
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Reading a token: ")); |
339
|
|
|
|
|
|
#ifdef PERL_IN_MADLY_C |
340
|
|
|
|
|
|
parser->yychar = PL_madskills ? madlex() : yylex(); |
341
|
|
|
|
|
|
#else |
342
|
1041340675
|
|
|
|
|
parser->yychar = yylex(); |
343
|
|
|
|
|
|
#endif |
344
|
|
|
|
|
|
|
345
|
|
|
|
|
|
/* perly.tab is shipped based on an ASCII system; if it were to be regenerated |
346
|
|
|
|
|
|
* on a platform that doesn't use ASCII, this translation back would need to be |
347
|
|
|
|
|
|
* removed */ |
348
|
|
|
|
|
|
# ifdef EBCDIC |
349
|
|
|
|
|
|
if (parser->yychar >= 0 && parser->yychar < 255) { |
350
|
|
|
|
|
|
parser->yychar = NATIVE_TO_LATIN1(parser->yychar); |
351
|
|
|
|
|
|
} |
352
|
|
|
|
|
|
# endif |
353
|
|
|
|
|
|
} |
354
|
|
|
|
|
|
|
355
|
1835052516
|
100
|
|
|
|
if (parser->yychar <= YYEOF) { |
356
|
8626696
|
|
|
|
|
parser->yychar = yytoken = YYEOF; |
357
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Now at end of input.\n")); |
358
|
|
|
|
|
|
} |
359
|
|
|
|
|
|
else { |
360
|
1826425820
|
50
|
|
|
|
yytoken = YYTRANSLATE (parser->yychar); |
361
|
|
|
|
|
|
YYDSYMPRINTF ("Next token is", yytoken, &parser->yylval); |
362
|
|
|
|
|
|
} |
363
|
|
|
|
|
|
|
364
|
|
|
|
|
|
/* If the proper action on seeing token YYTOKEN is to reduce or to |
365
|
|
|
|
|
|
detect an error, take that action. */ |
366
|
1835052516
|
|
|
|
|
yyn += yytoken; |
367
|
1835052516
|
100
|
|
|
|
if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) |
|
|
100
|
|
|
|
|
368
|
|
|
|
|
|
goto yydefault; |
369
|
1056877790
|
|
|
|
|
yyn = yytable[yyn]; |
370
|
1056877790
|
100
|
|
|
|
if (yyn <= 0) { |
371
|
11196932
|
50
|
|
|
|
if (yyn == 0 || yyn == YYTABLE_NINF) |
372
|
|
|
|
|
|
goto yyerrlab; |
373
|
11196932
|
|
|
|
|
yyn = -yyn; |
374
|
11196932
|
|
|
|
|
goto yyreduce; |
375
|
|
|
|
|
|
} |
376
|
|
|
|
|
|
|
377
|
1045680858
|
100
|
|
|
|
if (yyn == YYFINAL) |
378
|
|
|
|
|
|
YYACCEPT; |
379
|
|
|
|
|
|
|
380
|
|
|
|
|
|
/* Shift the lookahead token. */ |
381
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Shifting token %s, ", yytname[yytoken])); |
382
|
|
|
|
|
|
|
383
|
|
|
|
|
|
/* Discard the token being shifted unless it is eof. */ |
384
|
1041367915
|
50
|
|
|
|
if (parser->yychar != YYEOF) |
385
|
1041367915
|
|
|
|
|
parser->yychar = YYEMPTY; |
386
|
|
|
|
|
|
|
387
|
1041367915
|
|
|
|
|
YYPUSHSTACK; |
388
|
1041367915
|
|
|
|
|
ps->state = yyn; |
389
|
1041367915
|
|
|
|
|
ps->val = parser->yylval; |
390
|
2082735830
|
|
|
|
|
ps->compcv = (CV*)SvREFCNT_inc(PL_compcv); |
391
|
1041367915
|
|
|
|
|
ps->savestack_ix = PL_savestack_ix; |
392
|
|
|
|
|
|
#ifdef DEBUGGING |
393
|
|
|
|
|
|
ps->name = (const char *)(yytname[yytoken]); |
394
|
|
|
|
|
|
#endif |
395
|
|
|
|
|
|
|
396
|
|
|
|
|
|
/* Count tokens shifted since error; after three, turn off error |
397
|
|
|
|
|
|
status. */ |
398
|
1041367915
|
100
|
|
|
|
if (parser->yyerrstatus) |
399
|
1138
|
|
|
|
|
parser->yyerrstatus--; |
400
|
|
|
|
|
|
|
401
|
|
|
|
|
|
goto yynewstate; |
402
|
|
|
|
|
|
|
403
|
|
|
|
|
|
|
404
|
|
|
|
|
|
/*-----------------------------------------------------------. |
405
|
|
|
|
|
|
| yydefault -- do the default action for the current state. | |
406
|
|
|
|
|
|
`-----------------------------------------------------------*/ |
407
|
|
|
|
|
|
yydefault: |
408
|
1933776608
|
|
|
|
|
yyn = yydefact[yystate]; |
409
|
1933776608
|
100
|
|
|
|
if (yyn == 0) |
410
|
|
|
|
|
|
goto yyerrlab; |
411
|
|
|
|
|
|
goto yyreduce; |
412
|
|
|
|
|
|
|
413
|
|
|
|
|
|
|
414
|
|
|
|
|
|
/*-----------------------------. |
415
|
|
|
|
|
|
| yyreduce -- Do a reduction. | |
416
|
|
|
|
|
|
`-----------------------------*/ |
417
|
|
|
|
|
|
yyreduce: |
418
|
|
|
|
|
|
/* yyn is the number of a rule to reduce with. */ |
419
|
1944971980
|
|
|
|
|
parser->yylen = yyr2[yyn]; |
420
|
|
|
|
|
|
|
421
|
|
|
|
|
|
/* If YYLEN is nonzero, implement the default value of the action: |
422
|
|
|
|
|
|
"$$ = $1". |
423
|
|
|
|
|
|
|
424
|
|
|
|
|
|
Otherwise, the following line sets YYVAL to garbage. |
425
|
|
|
|
|
|
This behavior is undocumented and Bison |
426
|
|
|
|
|
|
users should not rely upon it. Assigning to YYVAL |
427
|
|
|
|
|
|
unconditionally makes the parser a bit smaller, and it avoids a |
428
|
|
|
|
|
|
GCC warning that YYVAL may be used uninitialized. */ |
429
|
1944971980
|
|
|
|
|
yyval = ps[1-parser->yylen].val; |
430
|
|
|
|
|
|
|
431
|
|
|
|
|
|
YY_STACK_PRINT(parser); |
432
|
|
|
|
|
|
YY_REDUCE_PRINT (yyn); |
433
|
|
|
|
|
|
|
434
|
1944971980
|
|
|
|
|
switch (yyn) { |
435
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
437
|
|
|
|
|
|
#define dep() deprecate("\"do\" to call subroutines") |
438
|
|
|
|
|
|
|
439
|
|
|
|
|
|
#ifdef PERL_IN_MADLY_C |
440
|
|
|
|
|
|
# define IVAL(i) (i)->tk_lval.ival |
441
|
|
|
|
|
|
# define PVAL(p) (p)->tk_lval.pval |
442
|
|
|
|
|
|
# define TOKEN_GETMAD(a,b,c) token_getmad((a),(b),(c)) |
443
|
|
|
|
|
|
# define TOKEN_FREE(a) token_free(a) |
444
|
|
|
|
|
|
# define OP_GETMAD(a,b,c) op_getmad((a),(b),(c)) |
445
|
|
|
|
|
|
# define IF_MAD(a,b) (a) |
446
|
|
|
|
|
|
# define DO_MAD(a) a |
447
|
|
|
|
|
|
# define MAD |
448
|
|
|
|
|
|
#else |
449
|
|
|
|
|
|
# define IVAL(i) (i) |
450
|
|
|
|
|
|
# define PVAL(p) (p) |
451
|
|
|
|
|
|
# define TOKEN_GETMAD(a,b,c) |
452
|
|
|
|
|
|
# define TOKEN_FREE(a) |
453
|
|
|
|
|
|
# define OP_GETMAD(a,b,c) |
454
|
|
|
|
|
|
# define IF_MAD(a,b) (b) |
455
|
|
|
|
|
|
# define DO_MAD(a) |
456
|
|
|
|
|
|
# undef MAD |
457
|
|
|
|
|
|
#endif |
458
|
|
|
|
|
|
|
459
|
|
|
|
|
|
/* contains all the rule actions; auto-generated from perly.y */ |
460
|
|
|
|
|
|
#include "perly.act" |
461
|
|
|
|
|
|
|
462
|
|
|
|
|
|
} |
463
|
|
|
|
|
|
|
464
|
|
|
|
|
|
{ |
465
|
|
|
|
|
|
int i; |
466
|
3985891869
|
100
|
|
|
|
for (i=0; i< parser->yylen; i++) { |
467
|
2981479092
|
|
|
|
|
SvREFCNT_dec(ps[-i].compcv); |
468
|
|
|
|
|
|
} |
469
|
|
|
|
|
|
} |
470
|
|
|
|
|
|
|
471
|
1944944028
|
|
|
|
|
parser->ps = ps -= (parser->yylen-1); |
472
|
|
|
|
|
|
|
473
|
|
|
|
|
|
/* Now shift the result of the reduction. Determine what state |
474
|
|
|
|
|
|
that goes to, based on the state we popped back to and the rule |
475
|
|
|
|
|
|
number reduced by. */ |
476
|
|
|
|
|
|
|
477
|
1944944028
|
|
|
|
|
ps->val = yyval; |
478
|
3889888056
|
|
|
|
|
ps->compcv = (CV*)SvREFCNT_inc(PL_compcv); |
479
|
1944944028
|
|
|
|
|
ps->savestack_ix = PL_savestack_ix; |
480
|
|
|
|
|
|
#ifdef DEBUGGING |
481
|
|
|
|
|
|
ps->name = (const char *)(yytname [yyr1[yyn]]); |
482
|
|
|
|
|
|
#endif |
483
|
|
|
|
|
|
|
484
|
1944944028
|
|
|
|
|
yyn = yyr1[yyn]; |
485
|
|
|
|
|
|
|
486
|
1944944028
|
|
|
|
|
yystate = yypgoto[yyn - YYNTOKENS] + ps[-1].state; |
487
|
1944944028
|
100
|
|
|
|
if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == ps[-1].state) |
|
|
100
|
|
|
|
|
488
|
597807681
|
|
|
|
|
yystate = yytable[yystate]; |
489
|
|
|
|
|
|
else |
490
|
1347136347
|
|
|
|
|
yystate = yydefgoto[yyn - YYNTOKENS]; |
491
|
1944944028
|
|
|
|
|
ps->state = yystate; |
492
|
|
|
|
|
|
|
493
|
1944944028
|
|
|
|
|
goto yynewstate; |
494
|
|
|
|
|
|
|
495
|
|
|
|
|
|
|
496
|
|
|
|
|
|
/*------------------------------------. |
497
|
|
|
|
|
|
| yyerrlab -- here on detecting error | |
498
|
|
|
|
|
|
`------------------------------------*/ |
499
|
|
|
|
|
|
yyerrlab: |
500
|
|
|
|
|
|
/* If not already recovering from an error, report this error. */ |
501
|
1560
|
100
|
|
|
|
if (!parser->yyerrstatus) { |
502
|
602
|
|
|
|
|
yyerror ("syntax error"); |
503
|
|
|
|
|
|
} |
504
|
|
|
|
|
|
|
505
|
|
|
|
|
|
|
506
|
1548
|
100
|
|
|
|
if (parser->yyerrstatus == 3) { |
507
|
|
|
|
|
|
/* If just tried and failed to reuse lookahead token after an |
508
|
|
|
|
|
|
error, discard it. */ |
509
|
|
|
|
|
|
|
510
|
|
|
|
|
|
/* Return failure if at end of input. */ |
511
|
866
|
100
|
|
|
|
if (parser->yychar == YYEOF) { |
512
|
|
|
|
|
|
/* Pop the error token. */ |
513
|
64
|
|
|
|
|
SvREFCNT_dec(ps->compcv); |
514
|
64
|
|
|
|
|
YYPOPSTACK; |
515
|
|
|
|
|
|
/* Pop the rest of the stack. */ |
516
|
900
|
100
|
|
|
|
while (ps > parser->stack) { |
517
|
|
|
|
|
|
YYDSYMPRINTF ("Error: popping", yystos[ps->state], &ps->val); |
518
|
804
|
100
|
|
|
|
LEAVE_SCOPE(ps->savestack_ix); |
519
|
804
|
100
|
|
|
|
if (yy_type_tab[yystos[ps->state]] == toketype_opval |
520
|
264
|
100
|
|
|
|
&& ps->val.opval) |
521
|
|
|
|
|
|
{ |
522
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); |
523
|
146
|
50
|
|
|
|
if (ps->compcv != PL_compcv) { |
524
|
0
|
|
|
|
|
PL_compcv = ps->compcv; |
525
|
0
|
|
|
|
|
PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); |
526
|
|
|
|
|
|
} |
527
|
146
|
|
|
|
|
op_free(ps->val.opval); |
528
|
|
|
|
|
|
} |
529
|
804
|
|
|
|
|
SvREFCNT_dec(ps->compcv); |
530
|
804
|
|
|
|
|
YYPOPSTACK; |
531
|
|
|
|
|
|
} |
532
|
|
|
|
|
|
YYABORT; |
533
|
|
|
|
|
|
} |
534
|
|
|
|
|
|
|
535
|
|
|
|
|
|
YYDSYMPRINTF ("Error: discarding", yytoken, &parser->yylval); |
536
|
802
|
|
|
|
|
parser->yychar = YYEMPTY; |
537
|
|
|
|
|
|
|
538
|
|
|
|
|
|
} |
539
|
|
|
|
|
|
|
540
|
|
|
|
|
|
/* Else will try to reuse lookahead token after shifting the error |
541
|
|
|
|
|
|
token. */ |
542
|
|
|
|
|
|
goto yyerrlab1; |
543
|
|
|
|
|
|
|
544
|
|
|
|
|
|
|
545
|
|
|
|
|
|
/*----------------------------------------------------. |
546
|
|
|
|
|
|
| yyerrlab1 -- error raised explicitly by an action. | |
547
|
|
|
|
|
|
`----------------------------------------------------*/ |
548
|
|
|
|
|
|
yyerrlab1: |
549
|
1484
|
|
|
|
|
parser->yyerrstatus = 3; /* Each real token shifted decrements this. */ |
550
|
|
|
|
|
|
|
551
|
|
|
|
|
|
for (;;) { |
552
|
3430
|
|
|
|
|
yyn = yypact[yystate]; |
553
|
3430
|
100
|
|
|
|
if (yyn != YYPACT_NINF) { |
554
|
3360
|
|
|
|
|
yyn += YYTERROR; |
555
|
3360
|
100
|
|
|
|
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { |
|
|
100
|
|
|
|
|
556
|
1480
|
|
|
|
|
yyn = yytable[yyn]; |
557
|
1480
|
50
|
|
|
|
if (0 < yyn) |
558
|
|
|
|
|
|
break; |
559
|
|
|
|
|
|
} |
560
|
|
|
|
|
|
} |
561
|
|
|
|
|
|
|
562
|
|
|
|
|
|
/* Pop the current state because it cannot handle the error token. */ |
563
|
1950
|
100
|
|
|
|
if (ps == parser->stack) |
564
|
|
|
|
|
|
YYABORT; |
565
|
|
|
|
|
|
|
566
|
|
|
|
|
|
YYDSYMPRINTF ("Error: popping", yystos[ps->state], &ps->val); |
567
|
1946
|
100
|
|
|
|
LEAVE_SCOPE(ps->savestack_ix); |
568
|
1946
|
100
|
|
|
|
if (yy_type_tab[yystos[ps->state]] == toketype_opval && ps->val.opval) { |
|
|
100
|
|
|
|
|
569
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); |
570
|
512
|
100
|
|
|
|
if (ps->compcv != PL_compcv) { |
571
|
8
|
|
|
|
|
PL_compcv = ps->compcv; |
572
|
8
|
|
|
|
|
PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); |
573
|
|
|
|
|
|
} |
574
|
512
|
|
|
|
|
op_free(ps->val.opval); |
575
|
|
|
|
|
|
} |
576
|
1946
|
|
|
|
|
SvREFCNT_dec(ps->compcv); |
577
|
1946
|
|
|
|
|
YYPOPSTACK; |
578
|
1946
|
|
|
|
|
yystate = ps->state; |
579
|
|
|
|
|
|
|
580
|
|
|
|
|
|
YY_STACK_PRINT(parser); |
581
|
1946
|
|
|
|
|
} |
582
|
|
|
|
|
|
|
583
|
1480
|
50
|
|
|
|
if (yyn == YYFINAL) |
584
|
|
|
|
|
|
YYACCEPT; |
585
|
|
|
|
|
|
|
586
|
|
|
|
|
|
YYDPRINTF ((Perl_debug_log, "Shifting error token, ")); |
587
|
|
|
|
|
|
|
588
|
1480
|
|
|
|
|
YYPUSHSTACK; |
589
|
1480
|
|
|
|
|
ps->state = yyn; |
590
|
1480
|
|
|
|
|
ps->val = parser->yylval; |
591
|
2960
|
|
|
|
|
ps->compcv = (CV*)SvREFCNT_inc(PL_compcv); |
592
|
1480
|
|
|
|
|
ps->savestack_ix = PL_savestack_ix; |
593
|
|
|
|
|
|
#ifdef DEBUGGING |
594
|
|
|
|
|
|
ps->name =""; |
595
|
|
|
|
|
|
#endif |
596
|
|
|
|
|
|
|
597
|
1480
|
|
|
|
|
goto yynewstate; |
598
|
|
|
|
|
|
|
599
|
|
|
|
|
|
|
600
|
|
|
|
|
|
/*-------------------------------------. |
601
|
|
|
|
|
|
| yyacceptlab -- YYACCEPT comes here. | |
602
|
|
|
|
|
|
`-------------------------------------*/ |
603
|
|
|
|
|
|
yyacceptlab: |
604
|
|
|
|
|
|
yyresult = 0; |
605
|
8625886
|
100
|
|
|
|
for (ps=parser->ps; ps > parser->stack; ps--) { |
606
|
4312943
|
|
|
|
|
SvREFCNT_dec(ps->compcv); |
607
|
|
|
|
|
|
} |
608
|
4312943
|
|
|
|
|
parser->ps = parser->stack; /* disable cleanup */ |
609
|
4312943
|
|
|
|
|
goto yyreturn; |
610
|
|
|
|
|
|
|
611
|
|
|
|
|
|
/*-----------------------------------. |
612
|
|
|
|
|
|
| yyabortlab -- YYABORT comes here. | |
613
|
|
|
|
|
|
`-----------------------------------*/ |
614
|
|
|
|
|
|
yyabortlab: |
615
|
|
|
|
|
|
yyresult = 1; |
616
|
|
|
|
|
|
goto yyreturn; |
617
|
|
|
|
|
|
|
618
|
|
|
|
|
|
yyreturn: |
619
|
4313011
|
|
|
|
|
LEAVE; /* force parser stack cleanup before we return */ |
620
|
4313011
|
|
|
|
|
return yyresult; |
621
|
|
|
|
|
|
} |
622
|
|
|
|
|
|
|
623
|
|
|
|
|
|
/* |
624
|
|
|
|
|
|
* Local variables: |
625
|
|
|
|
|
|
* c-indentation-style: bsd |
626
|
|
|
|
|
|
* c-basic-offset: 4 |
627
|
|
|
|
|
|
* indent-tabs-mode: nil |
628
|
|
|
|
|
|
* End: |
629
|
|
|
|
|
|
* |
630
|
|
|
|
|
|
* ex: set ts=8 sts=4 sw=4 et: |
631
|
|
|
|
|
|
*/ |