xref: /freebsd/contrib/byacc/test/btyacc/err_syntax20.tab.c (revision 59c8e88e72633afbc47a4ace0d2170d00d51f7dc)
1 /* original parser id follows */
2 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4 
5 #define YYBYACC 1
6 #define YYMAJOR 2
7 #define YYMINOR 0
8 #define YYCHECK "yyyymmdd"
9 
10 #define YYEMPTY        (-1)
11 #define yyclearin      (yychar = YYEMPTY)
12 #define yyerrok        (yyerrflag = 0)
13 #define YYRECOVERING() (yyerrflag != 0)
14 #define YYENOMEM       (-2)
15 #define YYEOF          0
16 #undef YYBTYACC
17 #define YYBTYACC 0
18 #define YYDEBUGSTR YYPREFIX "debug"
19 
20 #ifndef yyparse
21 #define yyparse    err_syntax20_parse
22 #endif /* yyparse */
23 
24 #ifndef yylex
25 #define yylex      err_syntax20_lex
26 #endif /* yylex */
27 
28 #ifndef yyerror
29 #define yyerror    err_syntax20_error
30 #endif /* yyerror */
31 
32 #ifndef yychar
33 #define yychar     err_syntax20_char
34 #endif /* yychar */
35 
36 #ifndef yyval
37 #define yyval      err_syntax20_val
38 #endif /* yyval */
39 
40 #ifndef yylval
41 #define yylval     err_syntax20_lval
42 #endif /* yylval */
43 
44 #ifndef yydebug
45 #define yydebug    err_syntax20_debug
46 #endif /* yydebug */
47 
48 #ifndef yynerrs
49 #define yynerrs    err_syntax20_nerrs
50 #endif /* yynerrs */
51 
52 #ifndef yyerrflag
53 #define yyerrflag  err_syntax20_errflag
54 #endif /* yyerrflag */
55 
56 #ifndef yylhs
57 #define yylhs      err_syntax20_lhs
58 #endif /* yylhs */
59 
60 #ifndef yylen
61 #define yylen      err_syntax20_len
62 #endif /* yylen */
63 
64 #ifndef yydefred
65 #define yydefred   err_syntax20_defred
66 #endif /* yydefred */
67 
68 #ifndef yystos
69 #define yystos     err_syntax20_stos
70 #endif /* yystos */
71 
72 #ifndef yydgoto
73 #define yydgoto    err_syntax20_dgoto
74 #endif /* yydgoto */
75 
76 #ifndef yysindex
77 #define yysindex   err_syntax20_sindex
78 #endif /* yysindex */
79 
80 #ifndef yyrindex
81 #define yyrindex   err_syntax20_rindex
82 #endif /* yyrindex */
83 
84 #ifndef yygindex
85 #define yygindex   err_syntax20_gindex
86 #endif /* yygindex */
87 
88 #ifndef yytable
89 #define yytable    err_syntax20_table
90 #endif /* yytable */
91 
92 #ifndef yycheck
93 #define yycheck    err_syntax20_check
94 #endif /* yycheck */
95 
96 #ifndef yyname
97 #define yyname     err_syntax20_name
98 #endif /* yyname */
99 
100 #ifndef yyrule
101 #define yyrule     err_syntax20_rule
102 #endif /* yyrule */
103 
104 #if YYBTYACC
105 
106 #ifndef yycindex
107 #define yycindex   err_syntax20_cindex
108 #endif /* yycindex */
109 
110 #ifndef yyctable
111 #define yyctable   err_syntax20_ctable
112 #endif /* yyctable */
113 
114 #endif /* YYBTYACC */
115 
116 #define YYPREFIX "err_syntax20_"
117 
118 #define YYPURE 0
119 
120 #line 2 "err_syntax20.y"
121 int yylex(void);
122 static void yyerror(const char *);
123 #line 124 "err_syntax20.tab.c"
124 
125 /* compatibility with bison */
126 #ifdef YYPARSE_PARAM
127 /* compatibility with FreeBSD */
128 # ifdef YYPARSE_PARAM_TYPE
129 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
130 # else
131 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
132 # endif
133 #else
134 # define YYPARSE_DECL() yyparse(void)
135 #endif
136 
137 /* Parameters sent to lex. */
138 #ifdef YYLEX_PARAM
139 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
140 # define YYLEX yylex(YYLEX_PARAM)
141 #else
142 # define YYLEX_DECL() yylex(void)
143 # define YYLEX yylex()
144 #endif
145 
146 /* Parameters sent to yyerror. */
147 #ifndef YYERROR_DECL
148 #define YYERROR_DECL() yyerror(const char *s)
149 #endif
150 #ifndef YYERROR_CALL
151 #define YYERROR_CALL(msg) yyerror(msg)
152 #endif
153 
154 extern int YYPARSE_DECL();
155 
156 #define recur 257
157 #define YYERRCODE 256
158 typedef int YYINT;
159 static const YYINT err_syntax20_lhs[] = {                -1,
160     0,
161 };
162 static const YYINT err_syntax20_len[] = {                 2,
163     3,
164 };
165 static const YYINT err_syntax20_defred[] = {              0,
166     0,    0,    0,    1,
167 };
168 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
169 static const YYINT err_syntax20_stos[] = {                0,
170    40,  259,  257,   41,
171 };
172 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
173 static const YYINT err_syntax20_dgoto[] = {               2,
174 };
175 static const YYINT err_syntax20_sindex[] = {            -40,
176  -256,    0,  -39,    0,
177 };
178 static const YYINT err_syntax20_rindex[] = {              0,
179     0,    0,    0,    0,
180 };
181 #if YYBTYACC
182 static const YYINT err_syntax20_cindex[] = {              0,
183     0,    0,    0,    0,
184 };
185 #endif
186 static const YYINT err_syntax20_gindex[] = {              0,
187 };
188 #define YYTABLESIZE 2
189 static const YYINT err_syntax20_table[] = {               1,
190     3,    4,
191 };
192 static const YYINT err_syntax20_check[] = {              40,
193   257,   41,
194 };
195 #if YYBTYACC
196 static const YYINT err_syntax20_ctable[] = {             -1,
197    -1,
198 };
199 #endif
200 #define YYFINAL 2
201 #ifndef YYDEBUG
202 #define YYDEBUG 0
203 #endif
204 #define YYMAXTOKEN 257
205 #define YYUNDFTOKEN 260
206 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
207 #if YYDEBUG
208 static const char *const err_syntax20_name[] = {
209 
210 "$end",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,
211 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,
212 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,
213 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,
214 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,
215 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,
216 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","recur","$accept","expr",
217 "illegal-symbol",
218 };
219 static const char *const err_syntax20_rule[] = {
220 "$accept : expr",
221 "expr : '(' recur ')'",
222 
223 };
224 #endif
225 
226 #if YYDEBUG
227 int      yydebug;
228 #endif
229 
230 int      yyerrflag;
231 int      yychar;
232 YYSTYPE  yyval;
233 YYSTYPE  yylval;
234 int      yynerrs;
235 
236 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
237 YYLTYPE  yyloc; /* position returned by actions */
238 YYLTYPE  yylloc; /* position from the lexer */
239 #endif
240 
241 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
242 #ifndef YYLLOC_DEFAULT
243 #define YYLLOC_DEFAULT(loc, rhs, n) \
244 do \
245 { \
246     if (n == 0) \
247     { \
248         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
249         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
250         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
251         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
252     } \
253     else \
254     { \
255         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
256         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
257         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
258         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
259     } \
260 } while (0)
261 #endif /* YYLLOC_DEFAULT */
262 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
263 #if YYBTYACC
264 
265 #ifndef YYLVQUEUEGROWTH
266 #define YYLVQUEUEGROWTH 32
267 #endif
268 #endif /* YYBTYACC */
269 
270 /* define the initial stack-sizes */
271 #ifdef YYSTACKSIZE
272 #undef YYMAXDEPTH
273 #define YYMAXDEPTH  YYSTACKSIZE
274 #else
275 #ifdef YYMAXDEPTH
276 #define YYSTACKSIZE YYMAXDEPTH
277 #else
278 #define YYSTACKSIZE 10000
279 #define YYMAXDEPTH  10000
280 #endif
281 #endif
282 
283 #ifndef YYINITSTACKSIZE
284 #define YYINITSTACKSIZE 200
285 #endif
286 
287 typedef struct {
288     unsigned stacksize;
289     YYINT    *s_base;
290     YYINT    *s_mark;
291     YYINT    *s_last;
292     YYSTYPE  *l_base;
293     YYSTYPE  *l_mark;
294 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
295     YYLTYPE  *p_base;
296     YYLTYPE  *p_mark;
297 #endif
298 } YYSTACKDATA;
299 #if YYBTYACC
300 
301 struct YYParseState_s
302 {
303     struct YYParseState_s *save;    /* Previously saved parser state */
304     YYSTACKDATA            yystack; /* saved parser stack */
305     int                    state;   /* saved parser state */
306     int                    errflag; /* saved error recovery status */
307     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
308     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
309 };
310 typedef struct YYParseState_s YYParseState;
311 #endif /* YYBTYACC */
312 /* variables for the parser stack */
313 static YYSTACKDATA yystack;
314 #if YYBTYACC
315 
316 /* Current parser state */
317 static YYParseState *yyps = 0;
318 
319 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
320 static YYParseState *yypath = 0;
321 
322 /* Base of the lexical value queue */
323 static YYSTYPE *yylvals = 0;
324 
325 /* Current position at lexical value queue */
326 static YYSTYPE *yylvp = 0;
327 
328 /* End position of lexical value queue */
329 static YYSTYPE *yylve = 0;
330 
331 /* The last allocated position at the lexical value queue */
332 static YYSTYPE *yylvlim = 0;
333 
334 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
335 /* Base of the lexical position queue */
336 static YYLTYPE *yylpsns = 0;
337 
338 /* Current position at lexical position queue */
339 static YYLTYPE *yylpp = 0;
340 
341 /* End position of lexical position queue */
342 static YYLTYPE *yylpe = 0;
343 
344 /* The last allocated position at the lexical position queue */
345 static YYLTYPE *yylplim = 0;
346 #endif
347 
348 /* Current position at lexical token queue */
349 static YYINT  *yylexp = 0;
350 
351 static YYINT  *yylexemes = 0;
352 #endif /* YYBTYACC */
353 #line 16 "err_syntax20.y"
354 
355 #include <stdio.h>
356 
357 int
358 main(void)
359 {
360     printf("yyparse() = %d\n", yyparse());
361     return 0;
362 }
363 
364 int
365 yylex(void)
366 {
367     return -1;
368 }
369 
370 static void
371 yyerror(const char* s)
372 {
373     printf("%s\n", s);
374 }
375 #line 376 "err_syntax20.tab.c"
376 
377 /* For use in generated program */
378 #define yydepth (int)(yystack.s_mark - yystack.s_base)
379 #if YYBTYACC
380 #define yytrial (yyps->save)
381 #endif /* YYBTYACC */
382 
383 #if YYDEBUG
384 #include <stdio.h>	/* needed for printf */
385 #endif
386 
387 #include <stdlib.h>	/* needed for malloc, etc */
388 #include <string.h>	/* needed for memset */
389 
390 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
391 static int yygrowstack(YYSTACKDATA *data)
392 {
393     int i;
394     unsigned newsize;
395     YYINT *newss;
396     YYSTYPE *newvs;
397 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
398     YYLTYPE *newps;
399 #endif
400 
401     if ((newsize = data->stacksize) == 0)
402         newsize = YYINITSTACKSIZE;
403     else if (newsize >= YYMAXDEPTH)
404         return YYENOMEM;
405     else if ((newsize *= 2) > YYMAXDEPTH)
406         newsize = YYMAXDEPTH;
407 
408     i = (int) (data->s_mark - data->s_base);
409     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
410     if (newss == NULL)
411         return YYENOMEM;
412 
413     data->s_base = newss;
414     data->s_mark = newss + i;
415 
416     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
417     if (newvs == NULL)
418         return YYENOMEM;
419 
420     data->l_base = newvs;
421     data->l_mark = newvs + i;
422 
423 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
424     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
425     if (newps == NULL)
426         return YYENOMEM;
427 
428     data->p_base = newps;
429     data->p_mark = newps + i;
430 #endif
431 
432     data->stacksize = newsize;
433     data->s_last = data->s_base + newsize - 1;
434 
435 #if YYDEBUG
436     if (yydebug)
437         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
438 #endif
439     return 0;
440 }
441 
442 #if YYPURE || defined(YY_NO_LEAKS)
443 static void yyfreestack(YYSTACKDATA *data)
444 {
445     free(data->s_base);
446     free(data->l_base);
447 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
448     free(data->p_base);
449 #endif
450     memset(data, 0, sizeof(*data));
451 }
452 #else
453 #define yyfreestack(data) /* nothing */
454 #endif /* YYPURE || defined(YY_NO_LEAKS) */
455 #if YYBTYACC
456 
457 static YYParseState *
458 yyNewState(unsigned size)
459 {
460     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
461     if (p == NULL) return NULL;
462 
463     p->yystack.stacksize = size;
464     if (size == 0)
465     {
466         p->yystack.s_base = NULL;
467         p->yystack.l_base = NULL;
468 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
469         p->yystack.p_base = NULL;
470 #endif
471         return p;
472     }
473     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
474     if (p->yystack.s_base == NULL) return NULL;
475     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
476     if (p->yystack.l_base == NULL) return NULL;
477     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
478 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
479     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
480     if (p->yystack.p_base == NULL) return NULL;
481     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
482 #endif
483 
484     return p;
485 }
486 
487 static void
488 yyFreeState(YYParseState *p)
489 {
490     yyfreestack(&p->yystack);
491     free(p);
492 }
493 #endif /* YYBTYACC */
494 
495 #define YYABORT  goto yyabort
496 #define YYREJECT goto yyabort
497 #define YYACCEPT goto yyaccept
498 #define YYERROR  goto yyerrlab
499 #if YYBTYACC
500 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
501 #define YYVALID_NESTED do { if (yyps->save && \
502                                 yyps->save->save == 0) goto yyvalid; } while(0)
503 #endif /* YYBTYACC */
504 
505 int
506 YYPARSE_DECL()
507 {
508     int yym, yyn, yystate, yyresult;
509 #if YYBTYACC
510     int yynewerrflag;
511     YYParseState *yyerrctx = NULL;
512 #endif /* YYBTYACC */
513 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
514     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
515 #endif
516 #if YYDEBUG
517     const char *yys;
518 
519     if ((yys = getenv("YYDEBUG")) != NULL)
520     {
521         yyn = *yys;
522         if (yyn >= '0' && yyn <= '9')
523             yydebug = yyn - '0';
524     }
525     if (yydebug)
526         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
527 #endif
528 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
529     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
530 #endif
531 
532 #if YYBTYACC
533     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
534     yyps->save = 0;
535 #endif /* YYBTYACC */
536     yym = 0;
537     /* yyn is set below */
538     yynerrs = 0;
539     yyerrflag = 0;
540     yychar = YYEMPTY;
541     yystate = 0;
542 
543 #if YYPURE
544     memset(&yystack, 0, sizeof(yystack));
545 #endif
546 
547     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
548     yystack.s_mark = yystack.s_base;
549     yystack.l_mark = yystack.l_base;
550 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
551     yystack.p_mark = yystack.p_base;
552 #endif
553     yystate = 0;
554     *yystack.s_mark = 0;
555 
556 yyloop:
557     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
558     if (yychar < 0)
559     {
560 #if YYBTYACC
561         do {
562         if (yylvp < yylve)
563         {
564             /* we're currently re-reading tokens */
565             yylval = *yylvp++;
566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
567             yylloc = *yylpp++;
568 #endif
569             yychar = *yylexp++;
570             break;
571         }
572         if (yyps->save)
573         {
574             /* in trial mode; save scanner results for future parse attempts */
575             if (yylvp == yylvlim)
576             {   /* Enlarge lexical value queue */
577                 size_t p = (size_t) (yylvp - yylvals);
578                 size_t s = (size_t) (yylvlim - yylvals);
579 
580                 s += YYLVQUEUEGROWTH;
581                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
582                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
583 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
584                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
585 #endif
586                 yylvp   = yylve = yylvals + p;
587                 yylvlim = yylvals + s;
588 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
589                 yylpp   = yylpe = yylpsns + p;
590                 yylplim = yylpsns + s;
591 #endif
592                 yylexp  = yylexemes + p;
593             }
594             *yylexp = (YYINT) YYLEX;
595             *yylvp++ = yylval;
596             yylve++;
597 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
598             *yylpp++ = yylloc;
599             yylpe++;
600 #endif
601             yychar = *yylexp++;
602             break;
603         }
604         /* normal operation, no conflict encountered */
605 #endif /* YYBTYACC */
606         yychar = YYLEX;
607 #if YYBTYACC
608         } while (0);
609 #endif /* YYBTYACC */
610         if (yychar < 0) yychar = YYEOF;
611 #if YYDEBUG
612         if (yydebug)
613         {
614             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
615             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
616                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
617 #ifdef YYSTYPE_TOSTRING
618 #if YYBTYACC
619             if (!yytrial)
620 #endif /* YYBTYACC */
621                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
622 #endif
623             fputc('\n', stderr);
624         }
625 #endif
626     }
627 #if YYBTYACC
628 
629     /* Do we have a conflict? */
630     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
631         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
632     {
633         YYINT ctry;
634 
635         if (yypath)
636         {
637             YYParseState *save;
638 #if YYDEBUG
639             if (yydebug)
640                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
641                                 YYDEBUGSTR, yydepth, yystate);
642 #endif
643             /* Switch to the next conflict context */
644             save = yypath;
645             yypath = save->save;
646             save->save = NULL;
647             ctry = save->ctry;
648             if (save->state != yystate) YYABORT;
649             yyFreeState(save);
650 
651         }
652         else
653         {
654 
655             /* Unresolved conflict - start/continue trial parse */
656             YYParseState *save;
657 #if YYDEBUG
658             if (yydebug)
659             {
660                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
661                 if (yyps->save)
662                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
663                 else
664                     fputs("Starting trial parse.\n", stderr);
665             }
666 #endif
667             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
668             if (save == NULL) goto yyenomem;
669             save->save            = yyps->save;
670             save->state           = yystate;
671             save->errflag         = yyerrflag;
672             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
673             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
674             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
675             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
676 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
677             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
678             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
679 #endif
680             ctry                  = yytable[yyn];
681             if (yyctable[ctry] == -1)
682             {
683 #if YYDEBUG
684                 if (yydebug && yychar >= YYEOF)
685                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
686 #endif
687                 ctry++;
688             }
689             save->ctry = ctry;
690             if (yyps->save == NULL)
691             {
692                 /* If this is a first conflict in the stack, start saving lexemes */
693                 if (!yylexemes)
694                 {
695                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
696                     if (yylexemes == NULL) goto yyenomem;
697                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
698                     if (yylvals == NULL) goto yyenomem;
699                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
700 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
701                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
702                     if (yylpsns == NULL) goto yyenomem;
703                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
704 #endif
705                 }
706                 if (yylvp == yylve)
707                 {
708                     yylvp  = yylve = yylvals;
709 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
710                     yylpp  = yylpe = yylpsns;
711 #endif
712                     yylexp = yylexemes;
713                     if (yychar >= YYEOF)
714                     {
715                         *yylve++ = yylval;
716 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
717                         *yylpe++ = yylloc;
718 #endif
719                         *yylexp  = (YYINT) yychar;
720                         yychar   = YYEMPTY;
721                     }
722                 }
723             }
724             if (yychar >= YYEOF)
725             {
726                 yylvp--;
727 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
728                 yylpp--;
729 #endif
730                 yylexp--;
731                 yychar = YYEMPTY;
732             }
733             save->lexeme = (int) (yylvp - yylvals);
734             yyps->save   = save;
735         }
736         if (yytable[yyn] == ctry)
737         {
738 #if YYDEBUG
739             if (yydebug)
740                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
741                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
742 #endif
743             if (yychar < 0)
744             {
745                 yylvp++;
746 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
747                 yylpp++;
748 #endif
749                 yylexp++;
750             }
751             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
752                 goto yyoverflow;
753             yystate = yyctable[ctry];
754             *++yystack.s_mark = (YYINT) yystate;
755             *++yystack.l_mark = yylval;
756 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
757             *++yystack.p_mark = yylloc;
758 #endif
759             yychar  = YYEMPTY;
760             if (yyerrflag > 0) --yyerrflag;
761             goto yyloop;
762         }
763         else
764         {
765             yyn = yyctable[ctry];
766             goto yyreduce;
767         }
768     } /* End of code dealing with conflicts */
769 #endif /* YYBTYACC */
770     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
771             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
772     {
773 #if YYDEBUG
774         if (yydebug)
775             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
776                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
777 #endif
778         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
779         yystate = yytable[yyn];
780         *++yystack.s_mark = yytable[yyn];
781         *++yystack.l_mark = yylval;
782 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
783         *++yystack.p_mark = yylloc;
784 #endif
785         yychar = YYEMPTY;
786         if (yyerrflag > 0)  --yyerrflag;
787         goto yyloop;
788     }
789     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
790             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
791     {
792         yyn = yytable[yyn];
793         goto yyreduce;
794     }
795     if (yyerrflag != 0) goto yyinrecovery;
796 #if YYBTYACC
797 
798     yynewerrflag = 1;
799     goto yyerrhandler;
800     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
801 
802 yyerrlab:
803     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
804      * before looking for error recovery */
805     yystack.s_mark -= yym;
806     yystate = *yystack.s_mark;
807     yystack.l_mark -= yym;
808 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
809     yystack.p_mark -= yym;
810 #endif
811 
812     yynewerrflag = 0;
813 yyerrhandler:
814     while (yyps->save)
815     {
816         int ctry;
817         YYParseState *save = yyps->save;
818 #if YYDEBUG
819         if (yydebug)
820             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
821                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
822                     (int)(yylvp - yylvals - yyps->save->lexeme));
823 #endif
824         /* Memorize most forward-looking error state in case it's really an error. */
825         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
826         {
827             /* Free old saved error context state */
828             if (yyerrctx) yyFreeState(yyerrctx);
829             /* Create and fill out new saved error context state */
830             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
831             if (yyerrctx == NULL) goto yyenomem;
832             yyerrctx->save           = yyps->save;
833             yyerrctx->state          = yystate;
834             yyerrctx->errflag        = yyerrflag;
835             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
836             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
837             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
838             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
839 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
840             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
841             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
842 #endif
843             yyerrctx->lexeme         = (int) (yylvp - yylvals);
844         }
845         yylvp          = yylvals   + save->lexeme;
846 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
847         yylpp          = yylpsns   + save->lexeme;
848 #endif
849         yylexp         = yylexemes + save->lexeme;
850         yychar         = YYEMPTY;
851         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
852         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
853         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
854         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
855 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
856         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
857         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
858 #endif
859         ctry           = ++save->ctry;
860         yystate        = save->state;
861         /* We tried shift, try reduce now */
862         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
863         yyps->save     = save->save;
864         save->save     = NULL;
865         yyFreeState(save);
866 
867         /* Nothing left on the stack -- error */
868         if (!yyps->save)
869         {
870 #if YYDEBUG
871             if (yydebug)
872                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
873                                 YYPREFIX, yydepth);
874 #endif
875             /* Restore state as it was in the most forward-advanced error */
876             yylvp          = yylvals   + yyerrctx->lexeme;
877 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
878             yylpp          = yylpsns   + yyerrctx->lexeme;
879 #endif
880             yylexp         = yylexemes + yyerrctx->lexeme;
881             yychar         = yylexp[-1];
882             yylval         = yylvp[-1];
883 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
884             yylloc         = yylpp[-1];
885 #endif
886             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
887             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
888             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
889             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
890 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
891             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
892             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
893 #endif
894             yystate        = yyerrctx->state;
895             yyFreeState(yyerrctx);
896             yyerrctx       = NULL;
897         }
898         yynewerrflag = 1;
899     }
900     if (yynewerrflag == 0) goto yyinrecovery;
901 #endif /* YYBTYACC */
902 
903     YYERROR_CALL("syntax error");
904 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
905     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
906 #endif
907 
908 #if !YYBTYACC
909     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
910 yyerrlab:
911 #endif
912     ++yynerrs;
913 
914 yyinrecovery:
915     if (yyerrflag < 3)
916     {
917         yyerrflag = 3;
918         for (;;)
919         {
920             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
921                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
922             {
923 #if YYDEBUG
924                 if (yydebug)
925                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
926                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
927 #endif
928                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
929                 yystate = yytable[yyn];
930                 *++yystack.s_mark = yytable[yyn];
931                 *++yystack.l_mark = yylval;
932 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
933                 /* lookahead position is error end position */
934                 yyerror_loc_range[2] = yylloc;
935                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
936                 *++yystack.p_mark = yyloc;
937 #endif
938                 goto yyloop;
939             }
940             else
941             {
942 #if YYDEBUG
943                 if (yydebug)
944                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
945                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
946 #endif
947                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
948 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
949                 /* the current TOS position is the error start position */
950                 yyerror_loc_range[1] = *yystack.p_mark;
951 #endif
952 #if defined(YYDESTRUCT_CALL)
953 #if YYBTYACC
954                 if (!yytrial)
955 #endif /* YYBTYACC */
956 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
957                     YYDESTRUCT_CALL("error: discarding state",
958                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
959 #else
960                     YYDESTRUCT_CALL("error: discarding state",
961                                     yystos[*yystack.s_mark], yystack.l_mark);
962 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
963 #endif /* defined(YYDESTRUCT_CALL) */
964                 --yystack.s_mark;
965                 --yystack.l_mark;
966 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
967                 --yystack.p_mark;
968 #endif
969             }
970         }
971     }
972     else
973     {
974         if (yychar == YYEOF) goto yyabort;
975 #if YYDEBUG
976         if (yydebug)
977         {
978             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
979             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
980                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
981         }
982 #endif
983 #if defined(YYDESTRUCT_CALL)
984 #if YYBTYACC
985         if (!yytrial)
986 #endif /* YYBTYACC */
987 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
988             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
989 #else
990             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
991 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
992 #endif /* defined(YYDESTRUCT_CALL) */
993         yychar = YYEMPTY;
994         goto yyloop;
995     }
996 
997 yyreduce:
998     yym = yylen[yyn];
999 #if YYDEBUG
1000     if (yydebug)
1001     {
1002         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1003                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1004 #ifdef YYSTYPE_TOSTRING
1005 #if YYBTYACC
1006         if (!yytrial)
1007 #endif /* YYBTYACC */
1008             if (yym > 0)
1009             {
1010                 int i;
1011                 fputc('<', stderr);
1012                 for (i = yym; i > 0; i--)
1013                 {
1014                     if (i != yym) fputs(", ", stderr);
1015                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1016                                            yystack.l_mark[1-i]), stderr);
1017                 }
1018                 fputc('>', stderr);
1019             }
1020 #endif
1021         fputc('\n', stderr);
1022     }
1023 #endif
1024     if (yym > 0)
1025         yyval = yystack.l_mark[1-yym];
1026     else
1027         memset(&yyval, 0, sizeof yyval);
1028 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1029 
1030     /* Perform position reduction */
1031     memset(&yyloc, 0, sizeof(yyloc));
1032 #if YYBTYACC
1033     if (!yytrial)
1034 #endif /* YYBTYACC */
1035     {
1036         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
1037         /* just in case YYERROR is invoked within the action, save
1038            the start of the rhs as the error start position */
1039         yyerror_loc_range[1] = yystack.p_mark[1-yym];
1040     }
1041 #endif
1042 
1043     switch (yyn)
1044     {
1045 case 1:
1046 #line 12 "err_syntax20.y"
1047 	{ yystack.l_mark[-1].rechk = 3; }
1048 #line 1049 "err_syntax20.tab.c"
1049 break;
1050 #line 1051 "err_syntax20.tab.c"
1051     default:
1052         break;
1053     }
1054     yystack.s_mark -= yym;
1055     yystate = *yystack.s_mark;
1056     yystack.l_mark -= yym;
1057 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1058     yystack.p_mark -= yym;
1059 #endif
1060     yym = yylhs[yyn];
1061     if (yystate == 0 && yym == 0)
1062     {
1063 #if YYDEBUG
1064         if (yydebug)
1065         {
1066             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1067 #ifdef YYSTYPE_TOSTRING
1068 #if YYBTYACC
1069             if (!yytrial)
1070 #endif /* YYBTYACC */
1071                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1072 #endif
1073             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1074         }
1075 #endif
1076         yystate = YYFINAL;
1077         *++yystack.s_mark = YYFINAL;
1078         *++yystack.l_mark = yyval;
1079 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1080         *++yystack.p_mark = yyloc;
1081 #endif
1082         if (yychar < 0)
1083         {
1084 #if YYBTYACC
1085             do {
1086             if (yylvp < yylve)
1087             {
1088                 /* we're currently re-reading tokens */
1089                 yylval = *yylvp++;
1090 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1091                 yylloc = *yylpp++;
1092 #endif
1093                 yychar = *yylexp++;
1094                 break;
1095             }
1096             if (yyps->save)
1097             {
1098                 /* in trial mode; save scanner results for future parse attempts */
1099                 if (yylvp == yylvlim)
1100                 {   /* Enlarge lexical value queue */
1101                     size_t p = (size_t) (yylvp - yylvals);
1102                     size_t s = (size_t) (yylvlim - yylvals);
1103 
1104                     s += YYLVQUEUEGROWTH;
1105                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
1106                         goto yyenomem;
1107                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1108                         goto yyenomem;
1109 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1110                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1111                         goto yyenomem;
1112 #endif
1113                     yylvp   = yylve = yylvals + p;
1114                     yylvlim = yylvals + s;
1115 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1116                     yylpp   = yylpe = yylpsns + p;
1117                     yylplim = yylpsns + s;
1118 #endif
1119                     yylexp  = yylexemes + p;
1120                 }
1121                 *yylexp = (YYINT) YYLEX;
1122                 *yylvp++ = yylval;
1123                 yylve++;
1124 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1125                 *yylpp++ = yylloc;
1126                 yylpe++;
1127 #endif
1128                 yychar = *yylexp++;
1129                 break;
1130             }
1131             /* normal operation, no conflict encountered */
1132 #endif /* YYBTYACC */
1133             yychar = YYLEX;
1134 #if YYBTYACC
1135             } while (0);
1136 #endif /* YYBTYACC */
1137             if (yychar < 0) yychar = YYEOF;
1138 #if YYDEBUG
1139             if (yydebug)
1140             {
1141                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
1142                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
1143                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1144             }
1145 #endif
1146         }
1147         if (yychar == YYEOF) goto yyaccept;
1148         goto yyloop;
1149     }
1150     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1151             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1152         yystate = yytable[yyn];
1153     else
1154         yystate = yydgoto[yym];
1155 #if YYDEBUG
1156     if (yydebug)
1157     {
1158         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1159 #ifdef YYSTYPE_TOSTRING
1160 #if YYBTYACC
1161         if (!yytrial)
1162 #endif /* YYBTYACC */
1163             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1164 #endif
1165         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1166     }
1167 #endif
1168     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1169     *++yystack.s_mark = (YYINT) yystate;
1170     *++yystack.l_mark = yyval;
1171 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1172     *++yystack.p_mark = yyloc;
1173 #endif
1174     goto yyloop;
1175 #if YYBTYACC
1176 
1177     /* Reduction declares that this path is valid. Set yypath and do a full parse */
1178 yyvalid:
1179     if (yypath) YYABORT;
1180     while (yyps->save)
1181     {
1182         YYParseState *save = yyps->save;
1183         yyps->save = save->save;
1184         save->save = yypath;
1185         yypath = save;
1186     }
1187 #if YYDEBUG
1188     if (yydebug)
1189         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1190                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1191 #endif
1192     if (yyerrctx)
1193     {
1194         yyFreeState(yyerrctx);
1195         yyerrctx = NULL;
1196     }
1197     yylvp          = yylvals + yypath->lexeme;
1198 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1199     yylpp          = yylpsns + yypath->lexeme;
1200 #endif
1201     yylexp         = yylexemes + yypath->lexeme;
1202     yychar         = YYEMPTY;
1203     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1204     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
1205     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1206     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1207 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1208     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1209     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1210 #endif
1211     yystate        = yypath->state;
1212     goto yyloop;
1213 #endif /* YYBTYACC */
1214 
1215 yyoverflow:
1216     YYERROR_CALL("yacc stack overflow");
1217 #if YYBTYACC
1218     goto yyabort_nomem;
1219 yyenomem:
1220     YYERROR_CALL("memory exhausted");
1221 yyabort_nomem:
1222 #endif /* YYBTYACC */
1223     yyresult = 2;
1224     goto yyreturn;
1225 
1226 yyabort:
1227     yyresult = 1;
1228     goto yyreturn;
1229 
1230 yyaccept:
1231 #if YYBTYACC
1232     if (yyps->save) goto yyvalid;
1233 #endif /* YYBTYACC */
1234     yyresult = 0;
1235 
1236 yyreturn:
1237 #if defined(YYDESTRUCT_CALL)
1238     if (yychar != YYEOF && yychar != YYEMPTY)
1239 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1240         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1241 #else
1242         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1243 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1244 
1245     {
1246         YYSTYPE *pv;
1247 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1248         YYLTYPE *pp;
1249 
1250         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1251              YYDESTRUCT_CALL("cleanup: discarding state",
1252                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1253 #else
1254         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1255              YYDESTRUCT_CALL("cleanup: discarding state",
1256                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1257 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1258     }
1259 #endif /* defined(YYDESTRUCT_CALL) */
1260 
1261 #if YYBTYACC
1262     if (yyerrctx)
1263     {
1264         yyFreeState(yyerrctx);
1265         yyerrctx = NULL;
1266     }
1267     while (yyps)
1268     {
1269         YYParseState *save = yyps;
1270         yyps = save->save;
1271         save->save = NULL;
1272         yyFreeState(save);
1273     }
1274     while (yypath)
1275     {
1276         YYParseState *save = yypath;
1277         yypath = save->save;
1278         save->save = NULL;
1279         yyFreeState(save);
1280     }
1281 #endif /* YYBTYACC */
1282     yyfreestack(&yystack);
1283     return (yyresult);
1284 }
1285