btyaccpar.c revision 268899
1193326Sed/* This file generated automatically using
2193326Sed * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @
3193326Sed */
4193326Sed
5193326Sed/* @Id: btyaccpar.skel,v 1.1 2014/04/02 22:44:41 tom Exp @ */
6193326Sed
7193326Sed#include "defs.h"
8193326Sed
9193326Sed/*  If the skeleton is changed, the banner should be changed so that	*/
10193326Sed/*  the altered version can be easily distinguished from the original.	*/
11193326Sed/*									*/
12193326Sed/*  The #defines included with the banner are there because they are	*/
13193326Sed/*  useful in subsequent code.  The macros #defined in the header or	*/
14193326Sed/*  the body either are not useful outside of semantic actions or	*/
15218893Sdim/*  are conditional.							*/
16234353Sdim
17234353Sdimconst char *const banner[] =
18249423Sdim{
19212904Sdim    "/* original parser id follows */",
20249423Sdim    "/* yysccsid[] = \"@(#)yaccpar	1.9 (Berkeley) 02/21/93\" */",
21226633Sdim    "/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */",
22198893Srdivacky    "",
23198893Srdivacky    "#define YYBYACC 1",
24193326Sed    CONCAT1("#define YYMAJOR ", YYMAJOR),
25193326Sed    CONCAT1("#define YYMINOR ", YYMINOR),
26221345Sdim#ifdef YYPATCH
27221345Sdim    CONCAT1("#define YYPATCH ", YYPATCH),
28221345Sdim#endif
29221345Sdim    "",
30221345Sdim    "#define YYEMPTY        (-1)",
31221345Sdim    "#define yyclearin      (yychar = YYEMPTY)",
32221345Sdim    "#define yyerrok        (yyerrflag = 0)",
33221345Sdim    "#define YYRECOVERING() (yyerrflag != 0)",
34226633Sdim    "#define YYENOMEM       (-2)",
35221345Sdim    "#define YYEOF          0",
36221345Sdim    0
37221345Sdim};
38221345Sdim
39239462Sdimconst char *const xdecls[] =
40221345Sdim{
41221345Sdim    "",
42226633Sdim    "extern int YYPARSE_DECL();",
43221345Sdim    0
44221345Sdim};
45221345Sdim
46221345Sdimconst char *const tables[] =
47221345Sdim{
48221345Sdim    "extern const YYINT yylhs[];",
49221345Sdim    "extern const YYINT yylen[];",
50221345Sdim    "extern const YYINT yydefred[];",
51221345Sdim    "extern const YYINT yystos[];",
52221345Sdim    "extern const YYINT yydgoto[];",
53221345Sdim    "extern const YYINT yysindex[];",
54221345Sdim    "extern const YYINT yyrindex[];",
55221345Sdim#if defined(YYBTYACC)
56221345Sdim    "#if YYBTYACC",
57221345Sdim    "extern const YYINT yycindex[];",
58221345Sdim    "#endif /* YYBTYACC */",
59221345Sdim#endif /* defined(YYBTYACC) */
60221345Sdim    "extern const YYINT yygindex[];",
61221345Sdim    "extern const YYINT yytable[];",
62221345Sdim    "extern const YYINT yycheck[];",
63226633Sdim#if defined(YYBTYACC)
64221345Sdim    "#if YYBTYACC",
65221345Sdim    "extern const YYINT yyctable[];",
66221345Sdim    "#endif /* YYBTYACC */",
67221345Sdim#endif /* defined(YYBTYACC) */
68221345Sdim    "",
69221345Sdim    "#if YYDEBUG",
70221345Sdim    "extern const char *const yyname[];",
71221345Sdim    "extern const char *const yyrule[];",
72221345Sdim    "#endif",
73221345Sdim    0
74226633Sdim};
75226633Sdim
76226633Sdimconst char *const global_vars[] =
77226633Sdim{
78226633Sdim    "",
79226633Sdim    "int      yydebug;",
80226633Sdim    "int      yynerrs;",
81226633Sdim    0
82226633Sdim};
83239462Sdim
84226633Sdimconst char *const impure_vars[] =
85226633Sdim{
86226633Sdim    "",
87226633Sdim    "int      yyerrflag;",
88226633Sdim    "int      yychar;",
89226633Sdim    "YYSTYPE  yyval;",
90226633Sdim    "YYSTYPE  yylval;",
91226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
92226633Sdim    "YYLTYPE  yyloc; /* position returned by actions */",
93226633Sdim    "YYLTYPE  yylloc; /* position from the lexer */",
94226633Sdim    "#endif",
95226633Sdim    0
96226633Sdim};
97226633Sdim
98226633Sdimconst char *const hdr_defs[] =
99243830Sdim{
100243830Sdim    "",
101243830Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
102249423Sdim    "#ifndef YYLLOC_DEFAULT",
103243830Sdim    "#define YYLLOC_DEFAULT(loc, rhs, n) \\",
104243830Sdim    "do \\",
105243830Sdim    "{ \\",
106243830Sdim    "    if (n == 0) \\",
107243830Sdim    "    { \\",
108243830Sdim    "        (loc).first_line   = ((rhs)[-1]).last_line; \\",
109243830Sdim    "        (loc).first_column = ((rhs)[-1]).last_column; \\",
110243830Sdim    "        (loc).last_line    = ((rhs)[-1]).last_line; \\",
111243830Sdim    "        (loc).last_column  = ((rhs)[-1]).last_column; \\",
112243830Sdim    "    } \\",
113243830Sdim    "    else \\",
114243830Sdim    "    { \\",
115243830Sdim    "        (loc).first_line   = ((rhs)[ 0 ]).first_line; \\",
116243830Sdim    "        (loc).first_column = ((rhs)[ 0 ]).first_column; \\",
117243830Sdim    "        (loc).last_line    = ((rhs)[n-1]).last_line; \\",
118243830Sdim    "        (loc).last_column  = ((rhs)[n-1]).last_column; \\",
119243830Sdim    "    } \\",
120243830Sdim    "} while (0)",
121243830Sdim    "#endif /* YYLLOC_DEFAULT */",
122243830Sdim    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
123243830Sdim#if defined(YYBTYACC)
124243830Sdim    "#if YYBTYACC",
125243830Sdim    "",
126243830Sdim    "#ifndef YYLVQUEUEGROWTH",
127243830Sdim    "#define YYLVQUEUEGROWTH 32",
128243830Sdim    "#endif",
129243830Sdim    "#endif /* YYBTYACC */",
130243830Sdim#endif /* defined(YYBTYACC) */
131243830Sdim    "",
132243830Sdim    "/* define the initial stack-sizes */",
133243830Sdim    "#ifdef YYSTACKSIZE",
134243830Sdim    "#undef YYMAXDEPTH",
135243830Sdim    "#define YYMAXDEPTH  YYSTACKSIZE",
136243830Sdim    "#else",
137243830Sdim    "#ifdef YYMAXDEPTH",
138198092Srdivacky    "#define YYSTACKSIZE YYMAXDEPTH",
139193326Sed    "#else",
140198092Srdivacky    "#define YYSTACKSIZE 10000",
141198092Srdivacky    "#define YYMAXDEPTH  10000",
142198092Srdivacky    "#endif",
143198092Srdivacky    "#endif",
144193326Sed    "",
145193326Sed    "#ifndef YYINITSTACKSIZE",
146193326Sed    "#define YYINITSTACKSIZE 200",
147193326Sed    "#endif",
148193326Sed    "",
149193326Sed    "typedef struct {",
150193326Sed    "    unsigned stacksize;",
151198092Srdivacky    "    short    *s_base;",
152193326Sed    "    short    *s_mark;",
153198092Srdivacky    "    short    *s_last;",
154198092Srdivacky    "    YYSTYPE  *l_base;",
155198092Srdivacky    "    YYSTYPE  *l_mark;",
156198092Srdivacky    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
157198092Srdivacky    "    YYLTYPE  *p_base;",
158198092Srdivacky    "    YYLTYPE  *p_mark;",
159198092Srdivacky    "#endif",
160198092Srdivacky    "} YYSTACKDATA;",
161198092Srdivacky#if defined(YYBTYACC)
162198092Srdivacky    "#if YYBTYACC",
163198092Srdivacky    "",
164204643Srdivacky    "struct YYParseState_s",
165204643Srdivacky    "{",
166204643Srdivacky    "    struct YYParseState_s *save;    /* Previously saved parser state */",
167204643Srdivacky    "    YYSTACKDATA            yystack; /* saved parser stack */",
168204643Srdivacky    "    int                    state;   /* saved parser state */",
169204643Srdivacky    "    int                    errflag; /* saved error recovery status */",
170204643Srdivacky    "    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */",
171204643Srdivacky    "    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */",
172249423Sdim    "};",
173249423Sdim    "typedef struct YYParseState_s YYParseState;",
174249423Sdim    "#endif /* YYBTYACC */",
175249423Sdim#endif /* defined(YYBTYACC) */
176249423Sdim    0
177249423Sdim};
178249423Sdim
179204643Srdivackyconst char *const hdr_vars[] =
180198092Srdivacky{
181212904Sdim    "/* variables for the parser stack */",
182204643Srdivacky    "static YYSTACKDATA yystack;",
183221345Sdim#if defined(YYBTYACC)
184249423Sdim    "#if YYBTYACC",
185249423Sdim    "",
186234353Sdim    "/* Current parser state */",
187193326Sed    "static YYParseState *yyps = 0;",
188193326Sed    "",
189193326Sed    "/* yypath != NULL: do the full parse, starting at *yypath parser state. */",
190249423Sdim    "static YYParseState *yypath = 0;",
191219077Sdim    "",
192219077Sdim    "/* Base of the lexical value queue */",
193219077Sdim    "static YYSTYPE *yylvals = 0;",
194193326Sed    "",
195204643Srdivacky    "/* Current position at lexical value queue */",
196193326Sed    "static YYSTYPE *yylvp = 0;",
197193326Sed    "",
198249423Sdim    "/* End position of lexical value queue */",
199249423Sdim    "static YYSTYPE *yylve = 0;",
200249423Sdim    "",
201193326Sed    "/* The last allocated position at the lexical value queue */",
202193326Sed    "static YYSTYPE *yylvlim = 0;",
203193326Sed    "",
204193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
205193326Sed    "/* Base of the lexical position queue */",
206193326Sed    "static YYLTYPE *yylpsns = 0;",
207193326Sed    "",
208198092Srdivacky    "/* Current position at lexical position queue */",
209193326Sed    "static YYLTYPE *yylpp = 0;",
210219077Sdim    "",
211219077Sdim    "/* End position of lexical position queue */",
212243830Sdim    "static YYLTYPE *yylpe = 0;",
213243830Sdim    "",
214243830Sdim    "/* The last allocated position at the lexical position queue */",
215193326Sed    "static YYLTYPE *yylplim = 0;",
216193326Sed    "#endif",
217193326Sed    "",
218204643Srdivacky    "/* Current position at lexical token queue */",
219204643Srdivacky    "static short  *yylexp = 0;",
220204643Srdivacky    "",
221204643Srdivacky    "static short  *yylexemes = 0;",
222204643Srdivacky    "#endif /* YYBTYACC */",
223204643Srdivacky#endif /* defined(YYBTYACC) */
224234353Sdim    0
225234353Sdim};
226234353Sdim
227234353Sdimconst char *const body_vars[] =
228234353Sdim{
229234353Sdim    "    int      yyerrflag;",
230234353Sdim    "    int      yychar;",
231234353Sdim    "    YYSTYPE  yyval;",
232234353Sdim    "    YYSTYPE  yylval;",
233234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
234234353Sdim    "    YYLTYPE  yyloc; /* position returned by actions */",
235234353Sdim    "    YYLTYPE  yylloc; /* position from the lexer */",
236234353Sdim    "#endif",
237234353Sdim    "",
238234353Sdim    "    /* variables for the parser stack */",
239234353Sdim    "    YYSTACKDATA yystack;",
240193326Sed#if defined(YYBTYACC)
241198092Srdivacky    "#if YYBTYACC",
242198092Srdivacky    "",
243198092Srdivacky    "    /* Current parser state */",
244198092Srdivacky    "    static YYParseState *yyps = 0;",
245198092Srdivacky    "",
246198092Srdivacky    "    /* yypath != NULL: do the full parse, starting at *yypath parser state. */",
247198092Srdivacky    "    static YYParseState *yypath = 0;",
248198092Srdivacky    "",
249198092Srdivacky    "    /* Base of the lexical value queue */",
250198092Srdivacky    "    static YYSTYPE *yylvals = 0;",
251198092Srdivacky    "",
252212904Sdim    "    /* Current position at lexical value queue */",
253198092Srdivacky    "    static YYSTYPE *yylvp = 0;",
254198092Srdivacky    "",
255198092Srdivacky    "    /* End position of lexical value queue */",
256198092Srdivacky    "    static YYSTYPE *yylve = 0;",
257210299Sed    "",
258221345Sdim    "    /* The last allocated position at the lexical value queue */",
259221345Sdim    "    static YYSTYPE *yylvlim = 0;",
260221345Sdim    "",
261221345Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
262226633Sdim    "    /* Base of the lexical position queue */",
263226633Sdim    "    static YYLTYPE *yylpsns = 0;",
264226633Sdim    "",
265198092Srdivacky    "    /* Current position at lexical position queue */",
266198092Srdivacky    "    static YYLTYPE *yylpp = 0;",
267198092Srdivacky    "",
268193326Sed    "    /* End position of lexical position queue */",
269195099Sed    "    static YYLTYPE *yylpe = 0;",
270195099Sed    "",
271195099Sed    "    /* The last allocated position at the lexical position queue */",
272195099Sed    "    static YYLTYPE *yylplim = 0;",
273195099Sed    "#endif",
274198092Srdivacky    "",
275198092Srdivacky    "    /* Current position at lexical token queue */",
276198092Srdivacky    "    static short  *yylexp = 0;",
277198092Srdivacky    "",
278198092Srdivacky    "    static short  *yylexemes = 0;",
279198092Srdivacky    "#endif /* YYBTYACC */",
280199482Srdivacky#endif /* defined(YYBTYACC) */
281195099Sed    0
282198893Srdivacky};
283198893Srdivacky
284198893Srdivackyconst char *const body_1[] =
285199482Srdivacky{
286198893Srdivacky    "",
287198893Srdivacky    "/* For use in generated program */",
288198893Srdivacky    "#define yydepth (int)(yystack.s_mark - yystack.s_base)",
289198893Srdivacky#if defined(YYBTYACC)
290199482Srdivacky    "#if YYBTYACC",
291199482Srdivacky    "#define yytrial (yyps->save)",
292198893Srdivacky    "#endif /* YYBTYACC */",
293199482Srdivacky#endif /* defined(YYBTYACC) */
294198893Srdivacky    "",
295199990Srdivacky    "#if YYDEBUG",
296199990Srdivacky    "#include <stdio.h>		/* needed for printf */",
297198893Srdivacky    "#endif",
298198893Srdivacky    "",
299198893Srdivacky    "#include <stdlib.h>	/* needed for malloc, etc */",
300199482Srdivacky    "#include <string.h>	/* needed for memset */",
301198893Srdivacky    "",
302198893Srdivacky    "/* allocate initial stack or double stack size, up to YYMAXDEPTH */",
303198893Srdivacky    "static int yygrowstack(YYSTACKDATA *data)",
304199482Srdivacky    "{",
305195099Sed    "    int i;",
306193326Sed    "    unsigned newsize;",
307198092Srdivacky    "    short *newss;",
308199482Srdivacky    "    YYSTYPE *newvs;",
309199482Srdivacky    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
310199482Srdivacky    "    YYLTYPE *newps;",
311199482Srdivacky    "#endif",
312199482Srdivacky    "",
313199482Srdivacky    "    if ((newsize = data->stacksize) == 0)",
314199482Srdivacky    "        newsize = YYINITSTACKSIZE;",
315199482Srdivacky    "    else if (newsize >= YYMAXDEPTH)",
316199482Srdivacky    "        return YYENOMEM;",
317199482Srdivacky    "    else if ((newsize *= 2) > YYMAXDEPTH)",
318210299Sed    "        newsize = YYMAXDEPTH;",
319234353Sdim    "",
320234353Sdim    "    i = (int) (data->s_mark - data->s_base);",
321234353Sdim    "    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));",
322234353Sdim    "    if (newss == 0)",
323234353Sdim    "        return YYENOMEM;",
324234353Sdim    "",
325234353Sdim    "    data->s_base = newss;",
326210299Sed    "    data->s_mark = newss + i;",
327210299Sed    "",
328204643Srdivacky    "    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));",
329198092Srdivacky    "    if (newvs == 0)",
330193326Sed    "        return YYENOMEM;",
331193326Sed    "",
332198092Srdivacky    "    data->l_base = newvs;",
333193326Sed    "    data->l_mark = newvs + i;",
334198092Srdivacky    "",
335193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
336193326Sed    "    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));",
337193326Sed    "    if (newps == 0)",
338193326Sed    "        return YYENOMEM;",
339193326Sed    "",
340193326Sed    "    data->p_base = newps;",
341224145Sdim    "    data->p_mark = newps + i;",
342204643Srdivacky    "#endif",
343204643Srdivacky    "",
344204643Srdivacky    "    data->stacksize = newsize;",
345204643Srdivacky    "    data->s_last = data->s_base + newsize - 1;",
346193326Sed    "",
347249423Sdim    "#if YYDEBUG",
348249423Sdim    "    if (yydebug)",
349249423Sdim    "        fprintf(stderr, \"%sdebug: stack size increased to %d\\n\", YYPREFIX, newsize);",
350221345Sdim    "#endif",
351221345Sdim    "    return 0;",
352221345Sdim    "}",
353221345Sdim    "",
354221345Sdim    "#if YYPURE || defined(YY_NO_LEAKS)",
355193326Sed    "static void yyfreestack(YYSTACKDATA *data)",
356234353Sdim    "{",
357221345Sdim    "    free(data->s_base);",
358243830Sdim    "    free(data->l_base);",
359221345Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
360221345Sdim    "    free(data->p_base);",
361221345Sdim    "#endif",
362234353Sdim    "    memset(data, 0, sizeof(*data));",
363234353Sdim    "}",
364221345Sdim    "#else",
365221345Sdim    "#define yyfreestack(data) /* nothing */",
366221345Sdim    "#endif /* YYPURE || defined(YY_NO_LEAKS) */",
367221345Sdim#if defined(YYBTYACC)
368221345Sdim    "#if YYBTYACC",
369221345Sdim    "",
370221345Sdim    "static YYParseState *",
371221345Sdim    "yyNewState(unsigned size)",
372221345Sdim    "{",
373221345Sdim    "    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));",
374221345Sdim    "    if (p == NULL) return NULL;",
375195099Sed    "",
376223017Sdim    "    p->yystack.stacksize = size;",
377221345Sdim    "    if (size == 0)",
378193326Sed    "    {",
379193326Sed    "        p->yystack.s_base = NULL;",
380195099Sed    "        p->yystack.l_base = NULL;",
381195099Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
382195099Sed    "        p->yystack.p_base = NULL;",
383195099Sed    "#endif",
384195099Sed    "        return p;",
385195099Sed    "    }",
386195099Sed    "    p->yystack.s_base    = (short *) malloc(size * sizeof(short));",
387195099Sed    "    if (p->yystack.s_base == NULL) return NULL;",
388195099Sed    "    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));",
389195099Sed    "    if (p->yystack.l_base == NULL) return NULL;",
390195099Sed    "    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));",
391195099Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
392195099Sed    "    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));",
393200583Srdivacky    "    if (p->yystack.p_base == NULL) return NULL;",
394200583Srdivacky    "    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));",
395200583Srdivacky    "#endif",
396204643Srdivacky    "",
397219077Sdim    "    return p;",
398219077Sdim    "}",
399219077Sdim    "",
400204643Srdivacky    "static void",
401204643Srdivacky    "yyFreeState(YYParseState *p)",
402204643Srdivacky    "{",
403204643Srdivacky    "    yyfreestack(&p->yystack);",
404204643Srdivacky    "    free(p);",
405204643Srdivacky    "}",
406206084Srdivacky    "#endif /* YYBTYACC */",
407204643Srdivacky#endif /* defined(YYBTYACC) */
408204643Srdivacky    "",
409204643Srdivacky    "#define YYABORT  goto yyabort",
410204643Srdivacky    "#define YYREJECT goto yyabort",
411200583Srdivacky    "#define YYACCEPT goto yyaccept",
412200583Srdivacky    "#define YYERROR  goto yyerrlab",
413195099Sed#if defined(YYBTYACC)
414204643Srdivacky    "#if YYBTYACC",
415210299Sed    "#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)",
416204643Srdivacky    "#define YYVALID_NESTED do { if (yyps->save && \\",
417204643Srdivacky    "                                yyps->save->save == 0) goto yyvalid; } while(0)",
418204643Srdivacky    "#endif /* YYBTYACC */",
419204643Srdivacky#endif /* defined(YYBTYACC) */
420204643Srdivacky    "",
421249423Sdim    "int",
422249423Sdim    "YYPARSE_DECL()",
423249423Sdim    "{",
424195099Sed    0
425195099Sed};
426195099Sed
427200583Srdivackyconst char *const body_2[] =
428200583Srdivacky{
429195099Sed    "    int yym, yyn, yystate, yyresult;",
430198092Srdivacky#if defined(YYBTYACC)
431243830Sdim    "#if YYBTYACC",
432243830Sdim    "    int yynewerrflag;",
433219077Sdim    "    YYParseState *yyerrctx = NULL;",
434219077Sdim    "#endif /* YYBTYACC */",
435219077Sdim#endif /* defined(YYBTYACC) */
436219077Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
437219077Sdim    "    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */",
438195099Sed    "#endif",
439195099Sed    "#if YYDEBUG",
440198092Srdivacky    "    const char *yys;",
441226633Sdim    "",
442221345Sdim    "    if ((yys = getenv(\"YYDEBUG\")) != 0)",
443195099Sed    "    {",
444195099Sed    "        yyn = *yys;",
445195099Sed    "        if (yyn >= '0' && yyn <= '9')",
446195099Sed    "            yydebug = yyn - '0';",
447198893Srdivacky    "    }",
448198893Srdivacky    "    if (yydebug)",
449208600Srdivacky    "        fprintf(stderr, \"%sdebug[<# of symbols on state stack>]\\n\", YYPREFIX);",
450210299Sed    "#endif",
451212904Sdim    "",
452198893Srdivacky#if defined(YYBTYACC)
453198092Srdivacky    "#if YYBTYACC",
454198092Srdivacky    "    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;",
455208600Srdivacky    "    yyps->save = 0;",
456208600Srdivacky    "#endif /* YYBTYACC */",
457234353Sdim#endif /* defined(YYBTYACC) */
458195099Sed    "    yynerrs = 0;",
459195099Sed    "    yyerrflag = 0;",
460195099Sed    "    yychar = YYEMPTY;",
461195099Sed    "    yystate = 0;",
462195099Sed    "",
463198893Srdivacky    "#if YYPURE",
464234353Sdim    "    memset(&yystack, 0, sizeof(yystack));",
465234353Sdim    "#endif",
466204643Srdivacky    "",
467195099Sed    "    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
468208600Srdivacky    "    yystack.s_mark = yystack.s_base;",
469208600Srdivacky    "    yystack.l_mark = yystack.l_base;",
470208600Srdivacky    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
471221345Sdim    "    yystack.p_mark = yystack.p_base;",
472208600Srdivacky    "#endif",
473208600Srdivacky    "    yystate = 0;",
474208600Srdivacky    "    *yystack.s_mark = 0;",
475208600Srdivacky    "",
476221345Sdim    "yyloop:",
477234353Sdim    "    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;",
478221345Sdim    "    if (yychar < 0)",
479221345Sdim    "    {",
480221345Sdim#if defined(YYBTYACC)
481208600Srdivacky    "#if YYBTYACC",
482208600Srdivacky    "        do {",
483208600Srdivacky    "        if (yylvp < yylve)",
484210299Sed    "        {",
485210299Sed    "            /* we're currently re-reading tokens */",
486234353Sdim    "            yylval = *yylvp++;",
487210299Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
488210299Sed    "            yylloc = *yylpp++;",
489210299Sed    "#endif",
490210299Sed    "            yychar = *yylexp++;",
491234353Sdim    "            break;",
492234353Sdim    "        }",
493234353Sdim    "        if (yyps->save)",
494210299Sed    "        {",
495210299Sed    "            /* in trial mode; save scanner results for future parse attempts */",
496208600Srdivacky    "            if (yylvp == yylvlim)",
497210299Sed    "            {   /* Enlarge lexical value queue */",
498208600Srdivacky    "                int p = yylvp - yylvals;",
499195099Sed    "                int s = yylvlim - yylvals;",
500195099Sed    "",
501195099Sed    "                s += YYLVQUEUEGROWTH;",
502193326Sed    "                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;",
503193326Sed    "                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;",
504193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
505193326Sed    "                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;",
506198092Srdivacky    "#endif",
507204643Srdivacky    "                yylvp   = yylve = yylvals + p;",
508204643Srdivacky    "                yylvlim = yylvals + s;",
509204643Srdivacky    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
510204643Srdivacky    "                yylpp   = yylpe = yylpsns + p;",
511204643Srdivacky    "                yylplim = yylpsns + s;",
512204643Srdivacky    "#endif",
513204643Srdivacky    "                yylexp  = yylexemes + p;",
514193326Sed    "            }",
515193326Sed    "            *yylexp = (short) YYLEX;",
516193326Sed    "            *yylvp++ = yylval;",
517193326Sed    "            yylve++;",
518193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
519193326Sed    "            *yylpp++ = yylloc;",
520193326Sed    "            yylpe++;",
521193326Sed    "#endif",
522193326Sed    "            yychar = *yylexp++;",
523193326Sed    "            break;",
524193326Sed    "        }",
525193326Sed    "        /* normal operation, no conflict encountered */",
526195341Sed    "#endif /* YYBTYACC */",
527193326Sed#endif /* defined(YYBTYACC) */
528193326Sed    "        yychar = YYLEX;",
529193326Sed#if defined(YYBTYACC)
530193326Sed    "#if YYBTYACC",
531193326Sed    "        } while (0);",
532193326Sed    "#endif /* YYBTYACC */",
533193326Sed#endif /* defined(YYBTYACC) */
534193326Sed    "        if (yychar < 0) yychar = YYEOF;",
535193326Sed    "        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
536193326Sed    "#if YYDEBUG",
537193326Sed    "        if (yydebug)",
538193326Sed    "        {",
539193326Sed    "            yys = yyname[YYTRANSLATE(yychar)];",
540193326Sed    "            fprintf(stderr, \"%s[%d]: state %d, reading token %d (%s)\",",
541193326Sed    "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
542193326Sed    "#ifdef YYSTYPE_TOSTRING",
543193326Sed#if defined(YYBTYACC)
544193326Sed    "#if YYBTYACC",
545193326Sed    "            if (!yytrial)",
546193326Sed    "#endif /* YYBTYACC */",
547193326Sed#endif /* defined(YYBTYACC) */
548193326Sed    "                fprintf(stderr, \" <%s>\", YYSTYPE_TOSTRING(yychar, yylval));",
549193326Sed    "#endif",
550193326Sed    "            fputc('\\n', stderr);",
551193326Sed    "        }",
552193326Sed    "#endif",
553193326Sed    "    }",
554193326Sed#if defined(YYBTYACC)
555193326Sed    "#if YYBTYACC",
556193326Sed    "",
557193326Sed    "    /* Do we have a conflict? */",
558212904Sdim    "    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
559193326Sed    "        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
560193326Sed    "    {",
561193326Sed    "        YYINT ctry;",
562193326Sed    "",
563193326Sed    "        if (yypath)",
564234353Sdim    "        {",
565234353Sdim    "            YYParseState *save;",
566234353Sdim    "#if YYDEBUG",
567198893Srdivacky    "            if (yydebug)",
568234353Sdim    "                fprintf(stderr, \"%s[%d]: CONFLICT in state %d: following successful trial parse\\n\",",
569234353Sdim    "                                YYDEBUGSTR, yydepth, yystate);",
570234353Sdim    "#endif",
571234353Sdim    "            /* Switch to the next conflict context */",
572212904Sdim    "            save = yypath;",
573234353Sdim    "            yypath = save->save;",
574198893Srdivacky    "            save->save = NULL;",
575193326Sed    "            ctry = save->ctry;",
576199990Srdivacky    "            if (save->state != yystate) YYABORT;",
577199990Srdivacky    "            yyFreeState(save);",
578199990Srdivacky    "",
579212904Sdim    "        }",
580212904Sdim    "        else",
581234353Sdim    "        {",
582234353Sdim    "",
583234353Sdim    "            /* Unresolved conflict - start/continue trial parse */",
584193326Sed    "            YYParseState *save;",
585193326Sed    "#if YYDEBUG",
586226633Sdim    "            if (yydebug)",
587226633Sdim    "            {",
588226633Sdim    "                fprintf(stderr, \"%s[%d]: CONFLICT in state %d. \", YYDEBUGSTR, yydepth, yystate);",
589226633Sdim    "                if (yyps->save)",
590226633Sdim    "                    fputs(\"ALREADY in conflict, continuing trial parse.\\n\", stderr);",
591226633Sdim    "                else",
592226633Sdim    "                    fputs(\"Starting trial parse.\\n\", stderr);",
593226633Sdim    "            }",
594226633Sdim    "#endif",
595226633Sdim    "            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));",
596226633Sdim    "            if (save == NULL) goto yyenomem;",
597226633Sdim    "            save->save            = yyps->save;",
598226633Sdim    "            save->state           = yystate;",
599226633Sdim    "            save->errflag         = yyerrflag;",
600226633Sdim    "            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);",
601226633Sdim    "            memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
602226633Sdim    "            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);",
603226633Sdim    "            memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
604226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
605226633Sdim    "            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);",
606226633Sdim    "            memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
607226633Sdim    "#endif",
608226633Sdim    "            ctry                  = yytable[yyn];",
609226633Sdim    "            if (yyctable[ctry] == -1)",
610226633Sdim    "            {",
611226633Sdim    "#if YYDEBUG",
612226633Sdim    "                if (yydebug && yychar >= YYEOF)",
613226633Sdim    "                    fprintf(stderr, \"%s[%d]: backtracking 1 token\\n\", YYDEBUGSTR, yydepth);",
614226633Sdim    "#endif",
615226633Sdim    "                ctry++;",
616226633Sdim    "            }",
617226633Sdim    "            save->ctry = ctry;",
618226633Sdim    "            if (yyps->save == NULL)",
619226633Sdim    "            {",
620226633Sdim    "                /* If this is a first conflict in the stack, start saving lexemes */",
621249423Sdim    "                if (!yylexemes)",
622226633Sdim    "                {",
623226633Sdim    "                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));",
624226633Sdim    "                    if (yylexemes == NULL) goto yyenomem;",
625234353Sdim    "                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));",
626234353Sdim    "                    if (yylvals == NULL) goto yyenomem;",
627234353Sdim    "                    yylvlim   = yylvals + YYLVQUEUEGROWTH;",
628226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
629226633Sdim    "                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));",
630226633Sdim    "                    if (yylpsns == NULL) goto yyenomem;",
631226633Sdim    "                    yylplim   = yylpsns + YYLVQUEUEGROWTH;",
632226633Sdim    "#endif",
633226633Sdim    "                }",
634226633Sdim    "                if (yylvp == yylve)",
635226633Sdim    "                {",
636226633Sdim    "                    yylvp  = yylve = yylvals;",
637226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
638226633Sdim    "                    yylpp  = yylpe = yylpsns;",
639249423Sdim    "#endif",
640226633Sdim    "                    yylexp = yylexemes;",
641226633Sdim    "                    if (yychar >= YYEOF)",
642226633Sdim    "                    {",
643226633Sdim    "                        *yylve++ = yylval;",
644226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
645226633Sdim    "                        *yylpe++ = yylloc;",
646226633Sdim    "#endif",
647226633Sdim    "                        *yylexp  = (short) yychar;",
648226633Sdim    "                        yychar   = YYEMPTY;",
649226633Sdim    "                    }",
650226633Sdim    "                }",
651226633Sdim    "            }",
652226633Sdim    "            if (yychar >= YYEOF)",
653226633Sdim    "            {",
654226633Sdim    "                yylvp--;",
655226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
656234353Sdim    "                yylpp--;",
657234353Sdim    "#endif",
658226633Sdim    "                yylexp--;",
659234353Sdim    "                yychar = YYEMPTY;",
660226633Sdim    "            }",
661226633Sdim    "            save->lexeme = yylvp - yylvals;",
662234353Sdim    "            yyps->save   = save;",
663234353Sdim    "        }",
664234353Sdim    "        if (yytable[yyn] == ctry)",
665234353Sdim    "        {",
666234353Sdim    "#if YYDEBUG",
667234353Sdim    "            if (yydebug)",
668226633Sdim    "                fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",",
669226633Sdim    "                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);",
670234353Sdim    "#endif",
671226633Sdim    "            if (yychar < 0)",
672226633Sdim    "            {",
673226633Sdim    "                yylvp++;",
674226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
675226633Sdim    "                yylpp++;",
676226633Sdim    "#endif",
677249423Sdim    "                yylexp++;",
678249423Sdim    "            }",
679226633Sdim    "            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)",
680226633Sdim    "                goto yyoverflow;",
681226633Sdim    "            yystate = yyctable[ctry];",
682226633Sdim    "            *++yystack.s_mark = (short) yystate;",
683226633Sdim    "            *++yystack.l_mark = yylval;",
684226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
685226633Sdim    "            *++yystack.p_mark = yylloc;",
686226633Sdim    "#endif",
687226633Sdim    "            yychar  = YYEMPTY;",
688226633Sdim    "            if (yyerrflag > 0) --yyerrflag;",
689226633Sdim    "            goto yyloop;",
690226633Sdim    "        }",
691226633Sdim    "        else",
692234353Sdim    "        {",
693226633Sdim    "            yyn = yyctable[ctry];",
694226633Sdim    "            goto yyreduce;",
695226633Sdim    "        }",
696234353Sdim    "    } /* End of code dealing with conflicts */",
697226633Sdim    "#endif /* YYBTYACC */",
698226633Sdim#endif /* defined(YYBTYACC) */
699226633Sdim    "    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
700226633Sdim    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
701226633Sdim    "    {",
702234353Sdim    "#if YYDEBUG",
703239462Sdim    "        if (yydebug)",
704239462Sdim    "            fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",",
705239462Sdim    "                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);",
706239462Sdim    "#endif",
707239462Sdim    "        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
708239462Sdim    "        yystate = yytable[yyn];",
709239462Sdim    "        *++yystack.s_mark = yytable[yyn];",
710234353Sdim    "        *++yystack.l_mark = yylval;",
711234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
712234353Sdim    "        *++yystack.p_mark = yylloc;",
713234353Sdim    "#endif",
714234353Sdim    "        yychar = YYEMPTY;",
715234353Sdim    "        if (yyerrflag > 0)  --yyerrflag;",
716226633Sdim    "        goto yyloop;",
717234353Sdim    "    }",
718226633Sdim    "    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
719226633Sdim    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
720226633Sdim    "    {",
721234353Sdim    "        yyn = yytable[yyn];",
722234353Sdim    "        goto yyreduce;",
723234353Sdim    "    }",
724234353Sdim    "    if (yyerrflag != 0) goto yyinrecovery;",
725234353Sdim#if defined(YYBTYACC)
726234353Sdim    "#if YYBTYACC",
727234353Sdim    "",
728234353Sdim    "    yynewerrflag = 1;",
729234353Sdim    "    goto yyerrhandler;",
730234353Sdim    "    goto yyerrlab;",
731234353Sdim    "",
732234353Sdim    "yyerrlab:",
733226633Sdim    "    yynewerrflag = 0;",
734234353Sdim    "yyerrhandler:",
735226633Sdim    "    while (yyps->save)",
736226633Sdim    "    {",
737226633Sdim    "        int ctry;",
738226633Sdim    "        YYParseState *save = yyps->save;",
739234353Sdim    "#if YYDEBUG",
740234353Sdim    "        if (yydebug)",
741226633Sdim    "            fprintf(stderr, \"%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\\n\",",
742226633Sdim    "                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,",
743226633Sdim    "                    (int)(yylvp - yylvals - yyps->save->lexeme));",
744226633Sdim    "#endif",
745226633Sdim    "        /* Memorize most forward-looking error state in case it's really an error. */",
746226633Sdim    "        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)",
747226633Sdim    "        {",
748234353Sdim    "            /* Free old saved error context state */",
749234353Sdim    "            if (yyerrctx) yyFreeState(yyerrctx);",
750234353Sdim    "            /* Create and fill out new saved error context state */",
751234353Sdim    "            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));",
752234353Sdim    "            if (yyerrctx == NULL) goto yyenomem;",
753234353Sdim    "            yyerrctx->save           = yyps->save;",
754234353Sdim    "            yyerrctx->state          = yystate;",
755226633Sdim    "            yyerrctx->errflag        = yyerrflag;",
756226633Sdim    "            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);",
757226633Sdim    "            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
758226633Sdim    "            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);",
759226633Sdim    "            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
760234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
761234353Sdim    "            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);",
762234353Sdim    "            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
763226633Sdim    "#endif",
764226633Sdim    "            yyerrctx->lexeme         = yylvp - yylvals;",
765226633Sdim    "        }",
766226633Sdim    "        yylvp          = yylvals   + save->lexeme;",
767226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
768226633Sdim    "        yylpp          = yylpsns   + save->lexeme;",
769226633Sdim    "#endif",
770226633Sdim    "        yylexp         = yylexemes + save->lexeme;",
771226633Sdim    "        yychar         = YYEMPTY;",
772226633Sdim    "        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);",
773234353Sdim    "        memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
774226633Sdim    "        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);",
775226633Sdim    "        memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
776226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
777226633Sdim    "        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);",
778226633Sdim    "        memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
779226633Sdim    "#endif",
780226633Sdim    "        ctry           = ++save->ctry;",
781226633Sdim    "        yystate        = save->state;",
782234353Sdim    "        /* We tried shift, try reduce now */",
783226633Sdim    "        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;",
784226633Sdim    "        yyps->save     = save->save;",
785226633Sdim    "        save->save     = NULL;",
786226633Sdim    "        yyFreeState(save);",
787226633Sdim    "",
788249423Sdim    "        /* Nothing left on the stack -- error */",
789226633Sdim    "        if (!yyps->save)",
790226633Sdim    "        {",
791226633Sdim    "#if YYDEBUG",
792226633Sdim    "            if (yydebug)",
793226633Sdim    "                fprintf(stderr, \"%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\\n\",",
794226633Sdim    "                                YYPREFIX, yydepth);",
795226633Sdim    "#endif",
796226633Sdim    "            /* Restore state as it was in the most forward-advanced error */",
797226633Sdim    "            yylvp          = yylvals   + yyerrctx->lexeme;",
798226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
799226633Sdim    "            yylpp          = yylpsns   + yyerrctx->lexeme;",
800226633Sdim    "#endif",
801226633Sdim    "            yylexp         = yylexemes + yyerrctx->lexeme;",
802226633Sdim    "            yychar         = yylexp[-1];",
803234353Sdim    "            yylval         = yylvp[-1];",
804234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
805234353Sdim    "            yylloc         = yylpp[-1];",
806234353Sdim    "#endif",
807234353Sdim    "            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);",
808234353Sdim    "            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
809226633Sdim    "            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);",
810226633Sdim    "            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
811234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
812226633Sdim    "            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);",
813226633Sdim    "            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
814226633Sdim    "#endif",
815226633Sdim    "            yystate        = yyerrctx->state;",
816249423Sdim    "            yyFreeState(yyerrctx);",
817226633Sdim    "            yyerrctx       = NULL;",
818226633Sdim    "        }",
819243830Sdim    "        yynewerrflag = 1;",
820226633Sdim    "    }",
821226633Sdim    "    if (yynewerrflag == 0) goto yyinrecovery;",
822243830Sdim    "#endif /* YYBTYACC */",
823226633Sdim#endif /* defined(YYBTYACC) */
824226633Sdim    "",
825226633Sdim    "    YYERROR_CALL(\"syntax error\");",
826249423Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
827226633Sdim    "    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */",
828226633Sdim    "#endif",
829226633Sdim    "",
830226633Sdim    "#if !YYBTYACC",
831226633Sdim    "    goto yyerrlab;",
832226633Sdim    "yyerrlab:",
833243830Sdim    "#endif",
834243830Sdim    "    ++yynerrs;",
835226633Sdim    "",
836226633Sdim    "yyinrecovery:",
837226633Sdim    "    if (yyerrflag < 3)",
838226633Sdim    "    {",
839226633Sdim    "        yyerrflag = 3;",
840226633Sdim    "        for (;;)",
841226633Sdim    "        {",
842226633Sdim    "            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&",
843226633Sdim    "                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)",
844226633Sdim    "            {",
845226633Sdim    "#if YYDEBUG",
846249423Sdim    "                if (yydebug)",
847249423Sdim    "                    fprintf(stderr, \"%s[%d]: state %d, error recovery shifting to state %d\\n\",",
848226633Sdim    "                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);",
849235864Sdim    "#endif",
850234982Sdim    "                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
851234982Sdim    "                yystate = yytable[yyn];",
852235864Sdim    "                *++yystack.s_mark = yytable[yyn];",
853226633Sdim    "                *++yystack.l_mark = yylval;",
854226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
855226633Sdim    "                /* lookahead position is error end position */",
856226633Sdim    "                yyerror_loc_range[1] = yylloc;",
857226633Sdim    "                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */",
858249423Sdim    "                *++yystack.p_mark = yyloc;",
859226633Sdim    "#endif",
860243830Sdim    "                goto yyloop;",
861243830Sdim    "            }",
862226633Sdim    "            else",
863239462Sdim    "            {",
864226633Sdim    "#if YYDEBUG",
865243830Sdim    "                if (yydebug)",
866226633Sdim    "                    fprintf(stderr, \"%s[%d]: error recovery discarding state %d\\n\",",
867239462Sdim    "                                    YYDEBUGSTR, yydepth, *yystack.s_mark);",
868226633Sdim    "#endif",
869226633Sdim    "                if (yystack.s_mark <= yystack.s_base) goto yyabort;",
870226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
871226633Sdim    "                /* the current TOS position is the error start position */",
872226633Sdim    "                yyerror_loc_range[0] = *yystack.p_mark;",
873226633Sdim    "#endif",
874243830Sdim    "#if defined(YYDESTRUCT_CALL)",
875226633Sdim#if defined(YYBTYACC)
876243830Sdim    "#if YYBTYACC",
877243830Sdim    "                if (!yytrial)",
878226633Sdim    "#endif /* YYBTYACC */",
879243830Sdim#endif /* defined(YYBTYACC) */
880226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
881226633Sdim    "                    YYDESTRUCT_CALL(\"error: discarding state\",",
882243830Sdim    "                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);",
883243830Sdim    "#else",
884243830Sdim    "                    YYDESTRUCT_CALL(\"error: discarding state\",",
885226633Sdim    "                                    yystos[*yystack.s_mark], yystack.l_mark);",
886226633Sdim    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
887226633Sdim    "#endif /* defined(YYDESTRUCT_CALL) */",
888226633Sdim    "                --yystack.s_mark;",
889226633Sdim    "                --yystack.l_mark;",
890226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
891226633Sdim    "                --yystack.p_mark;",
892243830Sdim    "#endif",
893226633Sdim    "            }",
894226633Sdim    "        }",
895234353Sdim    "    }",
896234353Sdim    "    else",
897234353Sdim    "    {",
898234353Sdim    "        if (yychar == YYEOF) goto yyabort;",
899234353Sdim    "#if YYDEBUG",
900234353Sdim    "        if (yydebug)",
901234353Sdim    "        {",
902234353Sdim    "            yys = yyname[YYTRANSLATE(yychar)];",
903234353Sdim    "            fprintf(stderr, \"%s[%d]: state %d, error recovery discarding token %d (%s)\\n\",",
904234353Sdim    "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
905234353Sdim    "        }",
906234353Sdim    "#endif",
907234353Sdim    "#if defined(YYDESTRUCT_CALL)",
908234353Sdim#if defined(YYBTYACC)
909234353Sdim    "#if YYBTYACC",
910234353Sdim    "        if (!yytrial)",
911234353Sdim    "#endif /* YYBTYACC */",
912239462Sdim#endif /* defined(YYBTYACC) */
913234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
914234353Sdim    "            YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval, &yylloc);",
915239462Sdim    "#else",
916234353Sdim    "            YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval);",
917234353Sdim    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
918234353Sdim    "#endif /* defined(YYDESTRUCT_CALL) */",
919234353Sdim    "        yychar = YYEMPTY;",
920234353Sdim    "        goto yyloop;",
921243830Sdim    "    }",
922234353Sdim    "",
923243830Sdim    "yyreduce:",
924243830Sdim    "    yym = yylen[yyn];",
925243830Sdim    "#if YYDEBUG",
926243830Sdim    "    if (yydebug)",
927243830Sdim    "    {",
928243830Sdim    "        fprintf(stderr, \"%s[%d]: state %d, reducing by rule %d (%s)\",",
929243830Sdim    "                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);",
930243830Sdim    "#ifdef YYSTYPE_TOSTRING",
931243830Sdim#if defined(YYBTYACC)
932243830Sdim    "#if YYBTYACC",
933243830Sdim    "        if (!yytrial)",
934243830Sdim    "#endif /* YYBTYACC */",
935243830Sdim#endif /* defined(YYBTYACC) */
936243830Sdim    "            if (yym > 0)",
937243830Sdim    "            {",
938243830Sdim    "                int i;",
939243830Sdim    "                fputc('<', stderr);",
940243830Sdim    "                for (i = yym; i > 0; i--)",
941243830Sdim    "                {",
942243830Sdim    "                    if (i != yym) fputs(\", \", stderr);",
943234353Sdim    "                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],",
944226633Sdim    "                                           yystack.l_mark[1-i]), stderr);",
945234353Sdim    "                }",
946226633Sdim    "                fputc('>', stderr);",
947234353Sdim    "            }",
948234353Sdim    "#endif",
949234353Sdim    "        fputc('\\n', stderr);",
950234353Sdim    "    }",
951226633Sdim    "#endif",
952234353Sdim    "    if (yym > 0)",
953226633Sdim    "        yyval = yystack.l_mark[1-yym];",
954234353Sdim    "    else",
955234353Sdim    "        memset(&yyval, 0, sizeof yyval);",
956226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
957234353Sdim    "",
958234353Sdim    "    /* Perform position reduction */",
959226633Sdim    "    memset(&yyloc, 0, sizeof(yyloc));",
960226633Sdim#if defined(YYBTYACC)
961234353Sdim    "#if YYBTYACC",
962234353Sdim    "    if (!yytrial)",
963234353Sdim    "#endif /* YYBTYACC */",
964234353Sdim#endif /* defined(YYBTYACC) */
965234353Sdim    "    {",
966234353Sdim    "        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);",
967234353Sdim    "        /* just in case YYERROR is invoked within the action, save",
968234353Sdim    "           the start of the rhs as the error start position */",
969226633Sdim    "        yyerror_loc_range[0] = yystack.p_mark[1-yym];",
970226633Sdim    "    }",
971193326Sed    "#endif",
972193326Sed    "",
973193326Sed    "    switch (yyn)",
974193326Sed    "    {",
975193326Sed    0
976193326Sed};
977193326Sed
978193326Sedconst char *const trailer[] =
979193326Sed{
980212904Sdim    "    default:",
981193326Sed    "        break;",
982193326Sed    "    }",
983193326Sed    "    yystack.s_mark -= yym;",
984193326Sed    "    yystate = *yystack.s_mark;",
985226633Sdim    "    yystack.l_mark -= yym;",
986193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
987193326Sed    "    yystack.p_mark -= yym;",
988193326Sed    "#endif",
989193326Sed    "    yym = yylhs[yyn];",
990193326Sed    "    if (yystate == 0 && yym == 0)",
991193326Sed    "    {",
992193326Sed    "#if YYDEBUG",
993193326Sed    "        if (yydebug)",
994193326Sed    "        {",
995221345Sdim    "            fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);",
996221345Sdim    "#ifdef YYSTYPE_TOSTRING",
997243830Sdim#if defined(YYBTYACC)
998243830Sdim    "#if YYBTYACC",
999243830Sdim    "            if (!yytrial)",
1000243830Sdim    "#endif /* YYBTYACC */",
1001243830Sdim#endif /* defined(YYBTYACC) */
1002221345Sdim    "                fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));",
1003193326Sed    "#endif",
1004193326Sed    "            fprintf(stderr, \"shifting from state 0 to final state %d\\n\", YYFINAL);",
1005193326Sed    "        }",
1006224145Sdim    "#endif",
1007224145Sdim    "        yystate = YYFINAL;",
1008224145Sdim    "        *++yystack.s_mark = YYFINAL;",
1009224145Sdim    "        *++yystack.l_mark = yyval;",
1010224145Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1011224145Sdim    "        *++yystack.p_mark = yyloc;",
1012224145Sdim    "#endif",
1013224145Sdim    "        if (yychar < 0)",
1014193326Sed    "        {",
1015193326Sed#if defined(YYBTYACC)
1016193326Sed    "#if YYBTYACC",
1017193326Sed    "            do {",
1018193326Sed    "            if (yylvp < yylve)",
1019226633Sdim    "            {",
1020226633Sdim    "                /* we're currently re-reading tokens */",
1021193326Sed    "                yylval = *yylvp++;",
1022226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1023193326Sed    "                yylloc = *yylpp++;",
1024193326Sed    "#endif",
1025212904Sdim    "                yychar = *yylexp++;",
1026198092Srdivacky    "                break;",
1027193326Sed    "            }",
1028226633Sdim    "            if (yyps->save)",
1029198092Srdivacky    "            {",
1030224145Sdim    "                /* in trial mode; save scanner results for future parse attempts */",
1031193326Sed    "                if (yylvp == yylvlim)",
1032224145Sdim    "                {   /* Enlarge lexical value queue */",
1033193326Sed    "                    int p = yylvp - yylvals;",
1034226633Sdim    "                    int s = yylvlim - yylvals;",
1035226633Sdim    "",
1036193326Sed    "                    s += YYLVQUEUEGROWTH;",
1037243830Sdim    "                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)",
1038193326Sed    "                        goto yyenomem;",
1039193326Sed    "                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)",
1040193326Sed    "                        goto yyenomem;",
1041193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1042193326Sed    "                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)",
1043193326Sed    "                        goto yyenomem;",
1044193326Sed    "#endif",
1045193326Sed    "                    yylvp   = yylve = yylvals + p;",
1046212904Sdim    "                    yylvlim = yylvals + s;",
1047193326Sed    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1048193326Sed    "                    yylpp   = yylpe = yylpsns + p;",
1049193326Sed    "                    yylplim = yylpsns + s;",
1050226633Sdim    "#endif",
1051226633Sdim    "                    yylexp  = yylexemes + p;",
1052193326Sed    "                }",
1053193326Sed    "                *yylexp = (short) YYLEX;",
1054226633Sdim    "                *yylvp++ = yylval;",
1055193326Sed    "                yylve++;",
1056226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1057193326Sed    "                *yylpp++ = yylloc;",
1058212904Sdim    "                yylpe++;",
1059193326Sed    "#endif",
1060243830Sdim    "                yychar = *yylexp++;",
1061243830Sdim    "                break;",
1062243830Sdim    "            }",
1063243830Sdim    "            /* normal operation, no conflict encountered */",
1064243830Sdim    "#endif /* YYBTYACC */",
1065243830Sdim#endif /* defined(YYBTYACC) */
1066243830Sdim    "            yychar = YYLEX;",
1067243830Sdim#if defined(YYBTYACC)
1068243830Sdim    "#if YYBTYACC",
1069243830Sdim    "            } while (0);",
1070243830Sdim    "#endif /* YYBTYACC */",
1071243830Sdim#endif /* defined(YYBTYACC) */
1072243830Sdim    "            if (yychar < 0) yychar = YYEOF;",
1073243830Sdim    "            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
1074243830Sdim    "#if YYDEBUG",
1075243830Sdim    "            if (yydebug)",
1076193326Sed    "            {",
1077193326Sed    "                yys = yyname[YYTRANSLATE(yychar)];",
1078193326Sed    "                fprintf(stderr, \"%s[%d]: state %d, reading %d (%s)\\n\",",
1079193326Sed    "                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);",
1080226633Sdim    "            }",
1081226633Sdim    "#endif",
1082218893Sdim    "        }",
1083193326Sed    "        if (yychar == YYEOF) goto yyaccept;",
1084193326Sed    "        goto yyloop;",
1085193326Sed    "    }",
1086212904Sdim    "    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&",
1087193326Sed    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)",
1088193326Sed    "        yystate = yytable[yyn];",
1089193326Sed    "    else",
1090193326Sed    "        yystate = yydgoto[yym];",
1091193326Sed    "#if YYDEBUG",
1092193326Sed    "    if (yydebug)",
1093193326Sed    "    {",
1094226633Sdim    "        fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);",
1095226633Sdim    "#ifdef YYSTYPE_TOSTRING",
1096218893Sdim#if defined(YYBTYACC)
1097218893Sdim    "#if YYBTYACC",
1098221345Sdim    "        if (!yytrial)",
1099193326Sed    "#endif /* YYBTYACC */",
1100193326Sed#endif /* defined(YYBTYACC) */
1101193326Sed    "            fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[yystate], yyval));",
1102193326Sed    "#endif",
1103193326Sed    "        fprintf(stderr, \"shifting from state %d to state %d\\n\", *yystack.s_mark, yystate);",
1104243830Sdim    "    }",
1105193326Sed    "#endif",
1106193326Sed    "    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
1107218893Sdim    "    *++yystack.s_mark = (short) yystate;",
1108218893Sdim    "    *++yystack.l_mark = yyval;",
1109218893Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1110218893Sdim    "    *++yystack.p_mark = yyloc;",
1111218893Sdim    "#endif",
1112218893Sdim    "    goto yyloop;",
1113218893Sdim#if defined(YYBTYACC)
1114218893Sdim    "#if YYBTYACC",
1115218893Sdim    "",
1116226633Sdim    "    /* Reduction declares that this path is valid. Set yypath and do a full parse */",
1117218893Sdim    "yyvalid:",
1118218893Sdim    "    if (yypath) YYABORT;",
1119226633Sdim    "    while (yyps->save)",
1120218893Sdim    "    {",
1121218893Sdim    "        YYParseState *save = yyps->save;",
1122218893Sdim    "        yyps->save = save->save;",
1123218893Sdim    "        save->save = yypath;",
1124218893Sdim    "        yypath = save;",
1125218893Sdim    "    }",
1126218893Sdim    "#if YYDEBUG",
1127218893Sdim    "    if (yydebug)",
1128226633Sdim    "        fprintf(stderr, \"%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\\n\",",
1129218893Sdim    "                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));",
1130218893Sdim    "#endif",
1131218893Sdim    "    if (yyerrctx)",
1132218893Sdim    "    {",
1133226633Sdim    "        yyFreeState(yyerrctx);",
1134226633Sdim    "        yyerrctx = NULL;",
1135226633Sdim    "    }",
1136218893Sdim    "    yylvp          = yylvals + yypath->lexeme;",
1137218893Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1138218893Sdim    "    yylpp          = yylpsns + yypath->lexeme;",
1139218893Sdim    "#endif",
1140218893Sdim    "    yylexp         = yylexemes + yypath->lexeme;",
1141218893Sdim    "    yychar         = YYEMPTY;",
1142218893Sdim    "    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);",
1143218893Sdim    "    memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
1144226633Sdim    "    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);",
1145218893Sdim    "    memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
1146226633Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1147226633Sdim    "    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);",
1148226633Sdim    "    memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
1149218893Sdim    "#endif",
1150218893Sdim    "    yystate        = yypath->state;",
1151218893Sdim    "    goto yyloop;",
1152243830Sdim    "#endif /* YYBTYACC */",
1153218893Sdim#endif /* defined(YYBTYACC) */
1154218893Sdim    "",
1155204643Srdivacky    "yyoverflow:",
1156204643Srdivacky    "    YYERROR_CALL(\"yacc stack overflow\");",
1157204643Srdivacky#if defined(YYBTYACC)
1158204643Srdivacky    "#if YYBTYACC",
1159204643Srdivacky    "    goto yyabort_nomem;",
1160204643Srdivacky    "yyenomem:",
1161204643Srdivacky    "    YYERROR_CALL(\"memory exhausted\");",
1162204643Srdivacky    "yyabort_nomem:",
1163204643Srdivacky    "#endif /* YYBTYACC */",
1164204643Srdivacky#endif /* defined(YYBTYACC) */
1165204643Srdivacky    "    yyresult = 2;",
1166204643Srdivacky    "    goto yyreturn;",
1167204643Srdivacky    "",
1168204643Srdivacky    "yyabort:",
1169212904Sdim    "    yyresult = 1;",
1170204643Srdivacky    "    goto yyreturn;",
1171204643Srdivacky    "",
1172204643Srdivacky    "yyaccept:",
1173212904Sdim#if defined(YYBTYACC)
1174204643Srdivacky    "#if YYBTYACC",
1175204643Srdivacky    "    if (yyps->save) goto yyvalid;",
1176204643Srdivacky    "#endif /* YYBTYACC */",
1177204643Srdivacky#endif /* defined(YYBTYACC) */
1178204643Srdivacky    "    yyresult = 0;",
1179204643Srdivacky    "",
1180204643Srdivacky    "yyreturn:",
1181204643Srdivacky    "#if defined(YYDESTRUCT_CALL)",
1182204643Srdivacky    "    if (yychar != YYEOF && yychar != YYEMPTY)",
1183204643Srdivacky    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1184204643Srdivacky    "        YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval, &yylloc);",
1185204643Srdivacky    "#else",
1186204643Srdivacky    "        YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval);",
1187204643Srdivacky    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
1188204643Srdivacky    "",
1189204643Srdivacky    "    {",
1190234353Sdim    "        YYSTYPE *pv;",
1191234353Sdim    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1192204643Srdivacky    "        YYLTYPE *pp;",
1193204643Srdivacky    "",
1194204643Srdivacky    "        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)",
1195204643Srdivacky    "             YYDESTRUCT_CALL(\"cleanup: discarding state\",",
1196204643Srdivacky    "                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);",
1197204643Srdivacky    "#else",
1198204643Srdivacky    "        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)",
1199204643Srdivacky    "             YYDESTRUCT_CALL(\"cleanup: discarding state\",",
1200204643Srdivacky    "                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);",
1201204643Srdivacky    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
1202204643Srdivacky    "    }",
1203204643Srdivacky    "#endif /* defined(YYDESTRUCT_CALL) */",
1204234353Sdim    "",
1205234353Sdim#if defined(YYBTYACC)
1206234353Sdim    "#if YYBTYACC",
1207234353Sdim    "    if (yyerrctx)",
1208234353Sdim    "    {",
1209234353Sdim    "        yyFreeState(yyerrctx);",
1210234353Sdim    "        yyerrctx = NULL;",
1211234353Sdim    "    }",
1212234353Sdim    "    while (yyps)",
1213234353Sdim    "    {",
1214234353Sdim    "        YYParseState *save = yyps;",
1215204643Srdivacky    "        yyps = save->save;",
1216204643Srdivacky    "        save->save = NULL;",
1217204643Srdivacky    "        yyFreeState(save);",
1218204643Srdivacky    "    }",
1219204643Srdivacky    "    while (yypath)",
1220204643Srdivacky    "    {",
1221204643Srdivacky    "        YYParseState *save = yypath;",
1222204643Srdivacky    "        yypath = save->save;",
1223204643Srdivacky    "        save->save = NULL;",
1224204643Srdivacky    "        yyFreeState(save);",
1225204643Srdivacky    "    }",
1226204643Srdivacky    "#endif /* YYBTYACC */",
1227204643Srdivacky#endif /* defined(YYBTYACC) */
1228204643Srdivacky    "    yyfreestack(&yystack);",
1229234353Sdim    "    return (yyresult);",
1230234353Sdim    "}",
1231234353Sdim    0
1232234353Sdim};
1233204643Srdivacky
1234204643Srdivackyvoid
1235212904Sdimwrite_section(FILE * fp, const char *const section[])
1236212904Sdim{
1237204643Srdivacky    int i;
1238204643Srdivacky    const char *s;
1239204643Srdivacky
1240204643Srdivacky    for (i = 0; (s = section[i]) != 0; ++i)
1241204643Srdivacky    {
1242193326Sed	if (fp == code_file)
1243193326Sed	    ++outline;
1244193326Sed	fprintf(fp, "%s\n", s);
1245193326Sed    }
1246193326Sed}
1247212904Sdim