xref: /netbsd-src/external/bsd/byacc/dist/test/yacc/stdin2.calc.c (revision 3d8f5b8dd9f188f856affd984b68f2960ff20d65)
1 /*	$NetBSD: stdin2.calc.c,v 1.2 2024/09/14 21:29:05 christos Exp $	*/
2 
3 /* original parser id follows */
4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
6 
7 #define YYBYACC 1
8 #define YYMAJOR 2
9 #define YYMINOR 0
10 #define YYCHECK "yyyymmdd"
11 
12 #define YYEMPTY        (-1)
13 #define yyclearin      (yychar = YYEMPTY)
14 #define yyerrok        (yyerrflag = 0)
15 #define YYRECOVERING() (yyerrflag != 0)
16 #define YYENOMEM       (-2)
17 #define YYEOF          0
18 #define YYPREFIX "yy"
19 
20 #define YYPURE 0
21 
22 #line 2 "calc.y"
23 # include <stdio.h>
24 # include <ctype.h>
25 
26 int regs[26];
27 int base;
28 
29 extern int yylex(void);
30 static void yyerror(const char *s);
31 
32 #line 31 "stdin2.calc.c"
33 
34 #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
35 /* Default: YYSTYPE is the semantic value type. */
36 typedef int YYSTYPE;
37 # define YYSTYPE_IS_DECLARED 1
38 #endif
39 
40 /* compatibility with bison */
41 #ifdef YYPARSE_PARAM
42 /* compatibility with FreeBSD */
43 # ifdef YYPARSE_PARAM_TYPE
44 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
45 # else
46 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
47 # endif
48 #else
49 # define YYPARSE_DECL() yyparse(void)
50 #endif
51 
52 /* Parameters sent to lex. */
53 #ifdef YYLEX_PARAM
54 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
55 # define YYLEX yylex(YYLEX_PARAM)
56 #else
57 # define YYLEX_DECL() yylex(void)
58 # define YYLEX yylex()
59 #endif
60 
61 #if !(defined(yylex) || defined(YYSTATE))
62 int YYLEX_DECL();
63 #endif
64 
65 /* Parameters sent to yyerror. */
66 #ifndef YYERROR_DECL
67 #define YYERROR_DECL() yyerror(const char *s)
68 #endif
69 #ifndef YYERROR_CALL
70 #define YYERROR_CALL(msg) yyerror(msg)
71 #endif
72 
73 extern int YYPARSE_DECL();
74 
75 #define DIGIT 257
76 #define LETTER 258
77 #define UMINUS 259
78 #define YYERRCODE 256
79 typedef int YYINT;
80 static const YYINT yylhs[] = {                           -1,
81     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
82     2,    2,    2,    2,    2,    2,    3,    3,
83 };
84 static const YYINT yylen[] = {                            2,
85     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
86     3,    3,    3,    2,    1,    1,    1,    2,
87 };
88 static const YYINT yydefred[] = {                         1,
89     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
90     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
91     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
92    10,   11,
93 };
94 static const YYINT yydgoto[] = {                          1,
95     7,    8,    9,
96 };
97 static const YYINT yysindex[] = {                         0,
98   -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
99   -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
100   -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
101     0,    0,
102 };
103 static const YYINT yyrindex[] = {                         0,
104     0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
105     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
106     0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
107     0,    0,
108 };
109 static const YYINT yygindex[] = {                         0,
110     0,   65,    0,
111 };
112 #define YYTABLESIZE 220
113 static const YYINT yytable[] = {                          6,
114    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
115    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
116     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
117     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
118     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
119     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
120     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
121    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
122    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
123     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
124     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
125     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
126     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
127     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
128     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
129     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
130     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
131     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
132     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
133     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
134     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
135     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
136 };
137 static const YYINT yycheck[] = {                         40,
138    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
139    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
140    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
141    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
142    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
143    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
144    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
145     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
146    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
147    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
148    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
149    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
150    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
151    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
152    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
153    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
154    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
155    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
156    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
157    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
158    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
159    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
160 };
161 #define YYFINAL 1
162 #ifndef YYDEBUG
163 #define YYDEBUG 0
164 #endif
165 #define YYMAXTOKEN 259
166 #define YYUNDFTOKEN 265
167 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
168 #if YYDEBUG
169 static const char *const yyname[] = {
170 
171 "end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
172 0,0,0,0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,
173 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,
174 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,
175 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,
176 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,
177 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,
178 0,0,0,0,0,0,"DIGIT","LETTER","UMINUS",0,0,0,0,0,"illegal-symbol",
179 };
180 static const char *const yyrule[] = {
181 "$accept : list",
182 "list :",
183 "list : list stat '\\n'",
184 "list : list error '\\n'",
185 "stat : expr",
186 "stat : LETTER '=' expr",
187 "expr : '(' expr ')'",
188 "expr : expr '+' expr",
189 "expr : expr '-' expr",
190 "expr : expr '*' expr",
191 "expr : expr '/' expr",
192 "expr : expr '%' expr",
193 "expr : expr '&' expr",
194 "expr : expr '|' expr",
195 "expr : '-' expr",
196 "expr : LETTER",
197 "expr : number",
198 "number : DIGIT",
199 "number : number DIGIT",
200 
201 };
202 #endif
203 
204 #if YYDEBUG
205 int      yydebug;
206 #endif
207 
208 int      yyerrflag;
209 int      yychar;
210 YYSTYPE  yyval;
211 YYSTYPE  yylval;
212 int      yynerrs;
213 
214 /* define the initial stack-sizes */
215 #ifdef YYSTACKSIZE
216 #undef YYMAXDEPTH
217 #define YYMAXDEPTH  YYSTACKSIZE
218 #else
219 #ifdef YYMAXDEPTH
220 #define YYSTACKSIZE YYMAXDEPTH
221 #else
222 #define YYSTACKSIZE 10000
223 #define YYMAXDEPTH  10000
224 #endif
225 #endif
226 
227 #define YYINITSTACKSIZE 200
228 
229 typedef struct {
230     unsigned stacksize;
231     YYINT    *s_base;
232     YYINT    *s_mark;
233     YYINT    *s_last;
234     YYSTYPE  *l_base;
235     YYSTYPE  *l_mark;
236 } YYSTACKDATA;
237 /* variables for the parser stack */
238 static YYSTACKDATA yystack;
239 #line 66 "calc.y"
240  /* start of programs */
241 
242 int
243 main (void)
244 {
245     while(!feof(stdin)) {
246 	yyparse();
247     }
248     return 0;
249 }
250 
251 static void
252 yyerror(const char *s)
253 {
254     fprintf(stderr, "%s\n", s);
255 }
256 
257 int
258 yylex(void)
259 {
260 	/* lexical analysis routine */
261 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
262 	/* return DIGIT for a digit, yylval = 0 through 9 */
263 	/* all other characters are returned immediately */
264 
265     int c;
266 
267     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
268 
269     /* c is now nonblank */
270 
271     if( islower( c )) {
272 	yylval = c - 'a';
273 	return ( LETTER );
274     }
275     if( isdigit( c )) {
276 	yylval = c - '0';
277 	return ( DIGIT );
278     }
279     return( c );
280 }
281 #line 280 "stdin2.calc.c"
282 
283 #if YYDEBUG
284 #include <stdio.h>	/* needed for printf */
285 #endif
286 
287 #include <stdlib.h>	/* needed for malloc, etc */
288 #include <string.h>	/* needed for memset */
289 
290 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
291 static int yygrowstack(YYSTACKDATA *data)
292 {
293     int i;
294     unsigned newsize;
295     YYINT *newss;
296     YYSTYPE *newvs;
297 
298     if ((newsize = data->stacksize) == 0)
299         newsize = YYINITSTACKSIZE;
300     else if (newsize >= YYMAXDEPTH)
301         return YYENOMEM;
302     else if ((newsize *= 2) > YYMAXDEPTH)
303         newsize = YYMAXDEPTH;
304 
305     i = (int) (data->s_mark - data->s_base);
306     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
307     if (newss == 0)
308         return YYENOMEM;
309 
310     data->s_base = newss;
311     data->s_mark = newss + i;
312 
313     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
314     if (newvs == 0)
315         return YYENOMEM;
316 
317     data->l_base = newvs;
318     data->l_mark = newvs + i;
319 
320     data->stacksize = newsize;
321     data->s_last = data->s_base + newsize - 1;
322     return 0;
323 }
324 
325 #if YYPURE || defined(YY_NO_LEAKS)
326 static void yyfreestack(YYSTACKDATA *data)
327 {
328     free(data->s_base);
329     free(data->l_base);
330     memset(data, 0, sizeof(*data));
331 }
332 #else
333 #define yyfreestack(data) /* nothing */
334 #endif
335 
336 #define YYABORT  goto yyabort
337 #define YYREJECT goto yyabort
338 #define YYACCEPT goto yyaccept
339 #define YYERROR  goto yyerrlab
340 
341 int
342 YYPARSE_DECL()
343 {
344     int yym, yyn, yystate;
345 #if YYDEBUG
346     const char *yys;
347 
348     if ((yys = getenv("YYDEBUG")) != 0)
349     {
350         yyn = *yys;
351         if (yyn >= '0' && yyn <= '9')
352             yydebug = yyn - '0';
353     }
354 #endif
355 
356     /* yym is set below */
357     /* yyn is set below */
358     yynerrs = 0;
359     yyerrflag = 0;
360     yychar = YYEMPTY;
361     yystate = 0;
362 
363 #if YYPURE
364     memset(&yystack, 0, sizeof(yystack));
365 #endif
366 
367     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
368     yystack.s_mark = yystack.s_base;
369     yystack.l_mark = yystack.l_base;
370     yystate = 0;
371     *yystack.s_mark = 0;
372 
373 yyloop:
374     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
375     if (yychar < 0)
376     {
377         yychar = YYLEX;
378         if (yychar < 0) yychar = YYEOF;
379 #if YYDEBUG
380         if (yydebug)
381         {
382             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
383             printf("%sdebug: state %d, reading %d (%s)\n",
384                     YYPREFIX, yystate, yychar, yys);
385         }
386 #endif
387     }
388     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
389             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
390     {
391 #if YYDEBUG
392         if (yydebug)
393             printf("%sdebug: state %d, shifting to state %d\n",
394                     YYPREFIX, yystate, yytable[yyn]);
395 #endif
396         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
397         yystate = yytable[yyn];
398         *++yystack.s_mark = yytable[yyn];
399         *++yystack.l_mark = yylval;
400         yychar = YYEMPTY;
401         if (yyerrflag > 0)  --yyerrflag;
402         goto yyloop;
403     }
404     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
405             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
406     {
407         yyn = yytable[yyn];
408         goto yyreduce;
409     }
410     if (yyerrflag != 0) goto yyinrecovery;
411 
412     YYERROR_CALL("syntax error");
413 
414     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
415 yyerrlab:
416     ++yynerrs;
417 
418 yyinrecovery:
419     if (yyerrflag < 3)
420     {
421         yyerrflag = 3;
422         for (;;)
423         {
424             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
425                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
426             {
427 #if YYDEBUG
428                 if (yydebug)
429                     printf("%sdebug: state %d, error recovery shifting\
430  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
431 #endif
432                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
433                 yystate = yytable[yyn];
434                 *++yystack.s_mark = yytable[yyn];
435                 *++yystack.l_mark = yylval;
436                 goto yyloop;
437             }
438             else
439             {
440 #if YYDEBUG
441                 if (yydebug)
442                     printf("%sdebug: error recovery discarding state %d\n",
443                             YYPREFIX, *yystack.s_mark);
444 #endif
445                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
446                 --yystack.s_mark;
447                 --yystack.l_mark;
448             }
449         }
450     }
451     else
452     {
453         if (yychar == YYEOF) goto yyabort;
454 #if YYDEBUG
455         if (yydebug)
456         {
457             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
458             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
459                     YYPREFIX, yystate, yychar, yys);
460         }
461 #endif
462         yychar = YYEMPTY;
463         goto yyloop;
464     }
465 
466 yyreduce:
467 #if YYDEBUG
468     if (yydebug)
469         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
470                 YYPREFIX, yystate, yyn, yyrule[yyn]);
471 #endif
472     yym = yylen[yyn];
473     if (yym > 0)
474         yyval = yystack.l_mark[1-yym];
475     else
476         memset(&yyval, 0, sizeof yyval);
477 
478     switch (yyn)
479     {
480 case 3:
481 #line 28 "calc.y"
482 	{  yyerrok ; }
483 #line 482 "stdin2.calc.c"
484 break;
485 case 4:
486 #line 32 "calc.y"
487 	{  printf("%d\n",yystack.l_mark[0]);}
488 #line 487 "stdin2.calc.c"
489 break;
490 case 5:
491 #line 34 "calc.y"
492 	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
493 #line 492 "stdin2.calc.c"
494 break;
495 case 6:
496 #line 38 "calc.y"
497 	{  yyval = yystack.l_mark[-1]; }
498 #line 497 "stdin2.calc.c"
499 break;
500 case 7:
501 #line 40 "calc.y"
502 	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
503 #line 502 "stdin2.calc.c"
504 break;
505 case 8:
506 #line 42 "calc.y"
507 	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
508 #line 507 "stdin2.calc.c"
509 break;
510 case 9:
511 #line 44 "calc.y"
512 	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
513 #line 512 "stdin2.calc.c"
514 break;
515 case 10:
516 #line 46 "calc.y"
517 	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
518 #line 517 "stdin2.calc.c"
519 break;
520 case 11:
521 #line 48 "calc.y"
522 	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
523 #line 522 "stdin2.calc.c"
524 break;
525 case 12:
526 #line 50 "calc.y"
527 	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
528 #line 527 "stdin2.calc.c"
529 break;
530 case 13:
531 #line 52 "calc.y"
532 	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
533 #line 532 "stdin2.calc.c"
534 break;
535 case 14:
536 #line 54 "calc.y"
537 	{  yyval = - yystack.l_mark[0]; }
538 #line 537 "stdin2.calc.c"
539 break;
540 case 15:
541 #line 56 "calc.y"
542 	{  yyval = regs[yystack.l_mark[0]]; }
543 #line 542 "stdin2.calc.c"
544 break;
545 case 17:
546 #line 61 "calc.y"
547 	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
548 #line 547 "stdin2.calc.c"
549 break;
550 case 18:
551 #line 63 "calc.y"
552 	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
553 #line 552 "stdin2.calc.c"
554 break;
555 #line 554 "stdin2.calc.c"
556     }
557     yystack.s_mark -= yym;
558     yystate = *yystack.s_mark;
559     yystack.l_mark -= yym;
560     yym = yylhs[yyn];
561     if (yystate == 0 && yym == 0)
562     {
563 #if YYDEBUG
564         if (yydebug)
565             printf("%sdebug: after reduction, shifting from state 0 to\
566  state %d\n", YYPREFIX, YYFINAL);
567 #endif
568         yystate = YYFINAL;
569         *++yystack.s_mark = YYFINAL;
570         *++yystack.l_mark = yyval;
571         if (yychar < 0)
572         {
573             yychar = YYLEX;
574             if (yychar < 0) yychar = YYEOF;
575 #if YYDEBUG
576             if (yydebug)
577             {
578                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
579                 printf("%sdebug: state %d, reading %d (%s)\n",
580                         YYPREFIX, YYFINAL, yychar, yys);
581             }
582 #endif
583         }
584         if (yychar == YYEOF) goto yyaccept;
585         goto yyloop;
586     }
587     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
588             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
589         yystate = yytable[yyn];
590     else
591         yystate = yydgoto[yym];
592 #if YYDEBUG
593     if (yydebug)
594         printf("%sdebug: after reduction, shifting from state %d \
595 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
596 #endif
597     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
598     *++yystack.s_mark = (YYINT) yystate;
599     *++yystack.l_mark = yyval;
600     goto yyloop;
601 
602 yyoverflow:
603     YYERROR_CALL("yacc stack overflow");
604 
605 yyabort:
606     yyfreestack(&yystack);
607     return (1);
608 
609 yyaccept:
610     yyfreestack(&yystack);
611     return (0);
612 }
613