1264790Sbapt/* This file generated automatically using
2264790Sbapt * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @
3264790Sbapt */
4264790Sbapt
5264790Sbapt/* @Id: btyaccpar.skel,v 1.1 2014/04/02 22:44:41 tom Exp @ */
6264790Sbapt
7264790Sbapt#include "defs.h"
8264790Sbapt
9264790Sbapt/*  If the skeleton is changed, the banner should be changed so that	*/
10264790Sbapt/*  the altered version can be easily distinguished from the original.	*/
11264790Sbapt/*									*/
12264790Sbapt/*  The #defines included with the banner are there because they are	*/
13264790Sbapt/*  useful in subsequent code.  The macros #defined in the header or	*/
14264790Sbapt/*  the body either are not useful outside of semantic actions or	*/
15264790Sbapt/*  are conditional.							*/
16264790Sbapt
17264790Sbaptconst char *const banner[] =
18264790Sbapt{
19264790Sbapt    "/* original parser id follows */",
20264790Sbapt    "/* yysccsid[] = \"@(#)yaccpar	1.9 (Berkeley) 02/21/93\" */",
21272955Srodrigc    "/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */",
22264790Sbapt    "",
23264790Sbapt    "#define YYBYACC 1",
24264790Sbapt    CONCAT1("#define YYMAJOR ", YYMAJOR),
25264790Sbapt    CONCAT1("#define YYMINOR ", YYMINOR),
26264790Sbapt#ifdef YYPATCH
27264790Sbapt    CONCAT1("#define YYPATCH ", YYPATCH),
28264790Sbapt#endif
29264790Sbapt    "",
30264790Sbapt    "#define YYEMPTY        (-1)",
31264790Sbapt    "#define yyclearin      (yychar = YYEMPTY)",
32264790Sbapt    "#define yyerrok        (yyerrflag = 0)",
33264790Sbapt    "#define YYRECOVERING() (yyerrflag != 0)",
34264790Sbapt    "#define YYENOMEM       (-2)",
35264790Sbapt    "#define YYEOF          0",
36264790Sbapt    0
37264790Sbapt};
38264790Sbapt
39264790Sbaptconst char *const xdecls[] =
40264790Sbapt{
41264790Sbapt    "",
42264790Sbapt    "extern int YYPARSE_DECL();",
43264790Sbapt    0
44264790Sbapt};
45264790Sbapt
46264790Sbaptconst char *const tables[] =
47264790Sbapt{
48264790Sbapt    "extern const YYINT yylhs[];",
49264790Sbapt    "extern const YYINT yylen[];",
50264790Sbapt    "extern const YYINT yydefred[];",
51264790Sbapt    "extern const YYINT yystos[];",
52264790Sbapt    "extern const YYINT yydgoto[];",
53264790Sbapt    "extern const YYINT yysindex[];",
54264790Sbapt    "extern const YYINT yyrindex[];",
55264790Sbapt#if defined(YYBTYACC)
56264790Sbapt    "#if YYBTYACC",
57264790Sbapt    "extern const YYINT yycindex[];",
58264790Sbapt    "#endif /* YYBTYACC */",
59272955Srodrigc#endif			/* defined(YYBTYACC) */
60264790Sbapt    "extern const YYINT yygindex[];",
61264790Sbapt    "extern const YYINT yytable[];",
62264790Sbapt    "extern const YYINT yycheck[];",
63264790Sbapt#if defined(YYBTYACC)
64264790Sbapt    "#if YYBTYACC",
65264790Sbapt    "extern const YYINT yyctable[];",
66264790Sbapt    "#endif /* YYBTYACC */",
67272955Srodrigc#endif			/* defined(YYBTYACC) */
68264790Sbapt    "",
69264790Sbapt    "#if YYDEBUG",
70264790Sbapt    "extern const char *const yyname[];",
71264790Sbapt    "extern const char *const yyrule[];",
72264790Sbapt    "#endif",
73264790Sbapt    0
74264790Sbapt};
75264790Sbapt
76264790Sbaptconst char *const global_vars[] =
77264790Sbapt{
78264790Sbapt    "",
79264790Sbapt    "int      yydebug;",
80264790Sbapt    "int      yynerrs;",
81264790Sbapt    0
82264790Sbapt};
83264790Sbapt
84264790Sbaptconst char *const impure_vars[] =
85264790Sbapt{
86264790Sbapt    "",
87264790Sbapt    "int      yyerrflag;",
88264790Sbapt    "int      yychar;",
89264790Sbapt    "YYSTYPE  yyval;",
90264790Sbapt    "YYSTYPE  yylval;",
91264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
92264790Sbapt    "YYLTYPE  yyloc; /* position returned by actions */",
93264790Sbapt    "YYLTYPE  yylloc; /* position from the lexer */",
94264790Sbapt    "#endif",
95264790Sbapt    0
96264790Sbapt};
97264790Sbapt
98264790Sbaptconst char *const hdr_defs[] =
99264790Sbapt{
100264790Sbapt    "",
101264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
102264790Sbapt    "#ifndef YYLLOC_DEFAULT",
103264790Sbapt    "#define YYLLOC_DEFAULT(loc, rhs, n) \\",
104264790Sbapt    "do \\",
105264790Sbapt    "{ \\",
106264790Sbapt    "    if (n == 0) \\",
107264790Sbapt    "    { \\",
108264790Sbapt    "        (loc).first_line   = ((rhs)[-1]).last_line; \\",
109264790Sbapt    "        (loc).first_column = ((rhs)[-1]).last_column; \\",
110264790Sbapt    "        (loc).last_line    = ((rhs)[-1]).last_line; \\",
111264790Sbapt    "        (loc).last_column  = ((rhs)[-1]).last_column; \\",
112264790Sbapt    "    } \\",
113264790Sbapt    "    else \\",
114264790Sbapt    "    { \\",
115264790Sbapt    "        (loc).first_line   = ((rhs)[ 0 ]).first_line; \\",
116264790Sbapt    "        (loc).first_column = ((rhs)[ 0 ]).first_column; \\",
117264790Sbapt    "        (loc).last_line    = ((rhs)[n-1]).last_line; \\",
118264790Sbapt    "        (loc).last_column  = ((rhs)[n-1]).last_column; \\",
119264790Sbapt    "    } \\",
120264790Sbapt    "} while (0)",
121264790Sbapt    "#endif /* YYLLOC_DEFAULT */",
122264790Sbapt    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
123264790Sbapt#if defined(YYBTYACC)
124264790Sbapt    "#if YYBTYACC",
125264790Sbapt    "",
126264790Sbapt    "#ifndef YYLVQUEUEGROWTH",
127264790Sbapt    "#define YYLVQUEUEGROWTH 32",
128264790Sbapt    "#endif",
129264790Sbapt    "#endif /* YYBTYACC */",
130272955Srodrigc#endif			/* defined(YYBTYACC) */
131264790Sbapt    "",
132264790Sbapt    "/* define the initial stack-sizes */",
133264790Sbapt    "#ifdef YYSTACKSIZE",
134264790Sbapt    "#undef YYMAXDEPTH",
135264790Sbapt    "#define YYMAXDEPTH  YYSTACKSIZE",
136264790Sbapt    "#else",
137264790Sbapt    "#ifdef YYMAXDEPTH",
138264790Sbapt    "#define YYSTACKSIZE YYMAXDEPTH",
139264790Sbapt    "#else",
140264790Sbapt    "#define YYSTACKSIZE 10000",
141264790Sbapt    "#define YYMAXDEPTH  10000",
142264790Sbapt    "#endif",
143264790Sbapt    "#endif",
144264790Sbapt    "",
145264790Sbapt    "#ifndef YYINITSTACKSIZE",
146264790Sbapt    "#define YYINITSTACKSIZE 200",
147264790Sbapt    "#endif",
148264790Sbapt    "",
149264790Sbapt    "typedef struct {",
150264790Sbapt    "    unsigned stacksize;",
151264790Sbapt    "    short    *s_base;",
152264790Sbapt    "    short    *s_mark;",
153264790Sbapt    "    short    *s_last;",
154264790Sbapt    "    YYSTYPE  *l_base;",
155264790Sbapt    "    YYSTYPE  *l_mark;",
156264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
157264790Sbapt    "    YYLTYPE  *p_base;",
158264790Sbapt    "    YYLTYPE  *p_mark;",
159264790Sbapt    "#endif",
160264790Sbapt    "} YYSTACKDATA;",
161264790Sbapt#if defined(YYBTYACC)
162264790Sbapt    "#if YYBTYACC",
163264790Sbapt    "",
164264790Sbapt    "struct YYParseState_s",
165264790Sbapt    "{",
166264790Sbapt    "    struct YYParseState_s *save;    /* Previously saved parser state */",
167264790Sbapt    "    YYSTACKDATA            yystack; /* saved parser stack */",
168264790Sbapt    "    int                    state;   /* saved parser state */",
169264790Sbapt    "    int                    errflag; /* saved error recovery status */",
170264790Sbapt    "    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */",
171264790Sbapt    "    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */",
172264790Sbapt    "};",
173264790Sbapt    "typedef struct YYParseState_s YYParseState;",
174264790Sbapt    "#endif /* YYBTYACC */",
175272955Srodrigc#endif			/* defined(YYBTYACC) */
176264790Sbapt    0
177264790Sbapt};
178264790Sbapt
179264790Sbaptconst char *const hdr_vars[] =
180264790Sbapt{
181264790Sbapt    "/* variables for the parser stack */",
182264790Sbapt    "static YYSTACKDATA yystack;",
183264790Sbapt#if defined(YYBTYACC)
184264790Sbapt    "#if YYBTYACC",
185264790Sbapt    "",
186264790Sbapt    "/* Current parser state */",
187264790Sbapt    "static YYParseState *yyps = 0;",
188264790Sbapt    "",
189264790Sbapt    "/* yypath != NULL: do the full parse, starting at *yypath parser state. */",
190264790Sbapt    "static YYParseState *yypath = 0;",
191264790Sbapt    "",
192264790Sbapt    "/* Base of the lexical value queue */",
193264790Sbapt    "static YYSTYPE *yylvals = 0;",
194264790Sbapt    "",
195264790Sbapt    "/* Current position at lexical value queue */",
196264790Sbapt    "static YYSTYPE *yylvp = 0;",
197264790Sbapt    "",
198264790Sbapt    "/* End position of lexical value queue */",
199264790Sbapt    "static YYSTYPE *yylve = 0;",
200264790Sbapt    "",
201264790Sbapt    "/* The last allocated position at the lexical value queue */",
202264790Sbapt    "static YYSTYPE *yylvlim = 0;",
203264790Sbapt    "",
204264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
205264790Sbapt    "/* Base of the lexical position queue */",
206264790Sbapt    "static YYLTYPE *yylpsns = 0;",
207264790Sbapt    "",
208264790Sbapt    "/* Current position at lexical position queue */",
209264790Sbapt    "static YYLTYPE *yylpp = 0;",
210264790Sbapt    "",
211264790Sbapt    "/* End position of lexical position queue */",
212264790Sbapt    "static YYLTYPE *yylpe = 0;",
213264790Sbapt    "",
214264790Sbapt    "/* The last allocated position at the lexical position queue */",
215264790Sbapt    "static YYLTYPE *yylplim = 0;",
216264790Sbapt    "#endif",
217264790Sbapt    "",
218264790Sbapt    "/* Current position at lexical token queue */",
219264790Sbapt    "static short  *yylexp = 0;",
220264790Sbapt    "",
221264790Sbapt    "static short  *yylexemes = 0;",
222264790Sbapt    "#endif /* YYBTYACC */",
223272955Srodrigc#endif			/* defined(YYBTYACC) */
224264790Sbapt    0
225264790Sbapt};
226264790Sbapt
227264790Sbaptconst char *const body_vars[] =
228264790Sbapt{
229264790Sbapt    "    int      yyerrflag;",
230264790Sbapt    "    int      yychar;",
231264790Sbapt    "    YYSTYPE  yyval;",
232264790Sbapt    "    YYSTYPE  yylval;",
233264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
234264790Sbapt    "    YYLTYPE  yyloc; /* position returned by actions */",
235264790Sbapt    "    YYLTYPE  yylloc; /* position from the lexer */",
236264790Sbapt    "#endif",
237264790Sbapt    "",
238264790Sbapt    "    /* variables for the parser stack */",
239264790Sbapt    "    YYSTACKDATA yystack;",
240264790Sbapt#if defined(YYBTYACC)
241264790Sbapt    "#if YYBTYACC",
242264790Sbapt    "",
243264790Sbapt    "    /* Current parser state */",
244264790Sbapt    "    static YYParseState *yyps = 0;",
245264790Sbapt    "",
246264790Sbapt    "    /* yypath != NULL: do the full parse, starting at *yypath parser state. */",
247264790Sbapt    "    static YYParseState *yypath = 0;",
248264790Sbapt    "",
249264790Sbapt    "    /* Base of the lexical value queue */",
250264790Sbapt    "    static YYSTYPE *yylvals = 0;",
251264790Sbapt    "",
252264790Sbapt    "    /* Current position at lexical value queue */",
253264790Sbapt    "    static YYSTYPE *yylvp = 0;",
254264790Sbapt    "",
255264790Sbapt    "    /* End position of lexical value queue */",
256264790Sbapt    "    static YYSTYPE *yylve = 0;",
257264790Sbapt    "",
258264790Sbapt    "    /* The last allocated position at the lexical value queue */",
259264790Sbapt    "    static YYSTYPE *yylvlim = 0;",
260264790Sbapt    "",
261264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
262264790Sbapt    "    /* Base of the lexical position queue */",
263264790Sbapt    "    static YYLTYPE *yylpsns = 0;",
264264790Sbapt    "",
265264790Sbapt    "    /* Current position at lexical position queue */",
266264790Sbapt    "    static YYLTYPE *yylpp = 0;",
267264790Sbapt    "",
268264790Sbapt    "    /* End position of lexical position queue */",
269264790Sbapt    "    static YYLTYPE *yylpe = 0;",
270264790Sbapt    "",
271264790Sbapt    "    /* The last allocated position at the lexical position queue */",
272264790Sbapt    "    static YYLTYPE *yylplim = 0;",
273264790Sbapt    "#endif",
274264790Sbapt    "",
275264790Sbapt    "    /* Current position at lexical token queue */",
276264790Sbapt    "    static short  *yylexp = 0;",
277264790Sbapt    "",
278264790Sbapt    "    static short  *yylexemes = 0;",
279264790Sbapt    "#endif /* YYBTYACC */",
280272955Srodrigc#endif			/* defined(YYBTYACC) */
281264790Sbapt    0
282264790Sbapt};
283264790Sbapt
284264790Sbaptconst char *const body_1[] =
285264790Sbapt{
286264790Sbapt    "",
287264790Sbapt    "/* For use in generated program */",
288264790Sbapt    "#define yydepth (int)(yystack.s_mark - yystack.s_base)",
289264790Sbapt#if defined(YYBTYACC)
290264790Sbapt    "#if YYBTYACC",
291264790Sbapt    "#define yytrial (yyps->save)",
292264790Sbapt    "#endif /* YYBTYACC */",
293272955Srodrigc#endif			/* defined(YYBTYACC) */
294264790Sbapt    "",
295264790Sbapt    "#if YYDEBUG",
296272955Srodrigc    "#include <stdio.h>         /* needed for printf */",
297264790Sbapt    "#endif",
298264790Sbapt    "",
299272955Srodrigc    "#include <stdlib.h>        /* needed for malloc, etc */",
300272955Srodrigc    "#include <string.h>        /* needed for memset */",
301264790Sbapt    "",
302264790Sbapt    "/* allocate initial stack or double stack size, up to YYMAXDEPTH */",
303264790Sbapt    "static int yygrowstack(YYSTACKDATA *data)",
304264790Sbapt    "{",
305264790Sbapt    "    int i;",
306264790Sbapt    "    unsigned newsize;",
307264790Sbapt    "    short *newss;",
308264790Sbapt    "    YYSTYPE *newvs;",
309264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
310264790Sbapt    "    YYLTYPE *newps;",
311264790Sbapt    "#endif",
312264790Sbapt    "",
313264790Sbapt    "    if ((newsize = data->stacksize) == 0)",
314264790Sbapt    "        newsize = YYINITSTACKSIZE;",
315264790Sbapt    "    else if (newsize >= YYMAXDEPTH)",
316264790Sbapt    "        return YYENOMEM;",
317264790Sbapt    "    else if ((newsize *= 2) > YYMAXDEPTH)",
318264790Sbapt    "        newsize = YYMAXDEPTH;",
319264790Sbapt    "",
320264790Sbapt    "    i = (int) (data->s_mark - data->s_base);",
321264790Sbapt    "    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));",
322264790Sbapt    "    if (newss == 0)",
323264790Sbapt    "        return YYENOMEM;",
324264790Sbapt    "",
325264790Sbapt    "    data->s_base = newss;",
326264790Sbapt    "    data->s_mark = newss + i;",
327264790Sbapt    "",
328264790Sbapt    "    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));",
329264790Sbapt    "    if (newvs == 0)",
330264790Sbapt    "        return YYENOMEM;",
331264790Sbapt    "",
332264790Sbapt    "    data->l_base = newvs;",
333264790Sbapt    "    data->l_mark = newvs + i;",
334264790Sbapt    "",
335264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
336264790Sbapt    "    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));",
337264790Sbapt    "    if (newps == 0)",
338264790Sbapt    "        return YYENOMEM;",
339264790Sbapt    "",
340264790Sbapt    "    data->p_base = newps;",
341264790Sbapt    "    data->p_mark = newps + i;",
342264790Sbapt    "#endif",
343264790Sbapt    "",
344264790Sbapt    "    data->stacksize = newsize;",
345264790Sbapt    "    data->s_last = data->s_base + newsize - 1;",
346264790Sbapt    "",
347264790Sbapt    "#if YYDEBUG",
348264790Sbapt    "    if (yydebug)",
349264790Sbapt    "        fprintf(stderr, \"%sdebug: stack size increased to %d\\n\", YYPREFIX, newsize);",
350264790Sbapt    "#endif",
351264790Sbapt    "    return 0;",
352264790Sbapt    "}",
353264790Sbapt    "",
354264790Sbapt    "#if YYPURE || defined(YY_NO_LEAKS)",
355264790Sbapt    "static void yyfreestack(YYSTACKDATA *data)",
356264790Sbapt    "{",
357264790Sbapt    "    free(data->s_base);",
358264790Sbapt    "    free(data->l_base);",
359264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
360264790Sbapt    "    free(data->p_base);",
361264790Sbapt    "#endif",
362264790Sbapt    "    memset(data, 0, sizeof(*data));",
363264790Sbapt    "}",
364264790Sbapt    "#else",
365264790Sbapt    "#define yyfreestack(data) /* nothing */",
366264790Sbapt    "#endif /* YYPURE || defined(YY_NO_LEAKS) */",
367264790Sbapt#if defined(YYBTYACC)
368264790Sbapt    "#if YYBTYACC",
369264790Sbapt    "",
370264790Sbapt    "static YYParseState *",
371264790Sbapt    "yyNewState(unsigned size)",
372264790Sbapt    "{",
373264790Sbapt    "    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));",
374264790Sbapt    "    if (p == NULL) return NULL;",
375264790Sbapt    "",
376264790Sbapt    "    p->yystack.stacksize = size;",
377264790Sbapt    "    if (size == 0)",
378264790Sbapt    "    {",
379264790Sbapt    "        p->yystack.s_base = NULL;",
380264790Sbapt    "        p->yystack.l_base = NULL;",
381264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
382264790Sbapt    "        p->yystack.p_base = NULL;",
383264790Sbapt    "#endif",
384264790Sbapt    "        return p;",
385264790Sbapt    "    }",
386264790Sbapt    "    p->yystack.s_base    = (short *) malloc(size * sizeof(short));",
387264790Sbapt    "    if (p->yystack.s_base == NULL) return NULL;",
388264790Sbapt    "    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));",
389264790Sbapt    "    if (p->yystack.l_base == NULL) return NULL;",
390264790Sbapt    "    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));",
391264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
392264790Sbapt    "    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));",
393264790Sbapt    "    if (p->yystack.p_base == NULL) return NULL;",
394264790Sbapt    "    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));",
395264790Sbapt    "#endif",
396264790Sbapt    "",
397264790Sbapt    "    return p;",
398264790Sbapt    "}",
399264790Sbapt    "",
400264790Sbapt    "static void",
401264790Sbapt    "yyFreeState(YYParseState *p)",
402264790Sbapt    "{",
403264790Sbapt    "    yyfreestack(&p->yystack);",
404264790Sbapt    "    free(p);",
405264790Sbapt    "}",
406264790Sbapt    "#endif /* YYBTYACC */",
407272955Srodrigc#endif			/* defined(YYBTYACC) */
408264790Sbapt    "",
409264790Sbapt    "#define YYABORT  goto yyabort",
410264790Sbapt    "#define YYREJECT goto yyabort",
411264790Sbapt    "#define YYACCEPT goto yyaccept",
412264790Sbapt    "#define YYERROR  goto yyerrlab",
413264790Sbapt#if defined(YYBTYACC)
414264790Sbapt    "#if YYBTYACC",
415264790Sbapt    "#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)",
416264790Sbapt    "#define YYVALID_NESTED do { if (yyps->save && \\",
417264790Sbapt    "                                yyps->save->save == 0) goto yyvalid; } while(0)",
418264790Sbapt    "#endif /* YYBTYACC */",
419272955Srodrigc#endif			/* defined(YYBTYACC) */
420264790Sbapt    "",
421264790Sbapt    "int",
422264790Sbapt    "YYPARSE_DECL()",
423264790Sbapt    "{",
424264790Sbapt    0
425264790Sbapt};
426264790Sbapt
427264790Sbaptconst char *const body_2[] =
428264790Sbapt{
429264790Sbapt    "    int yym, yyn, yystate, yyresult;",
430264790Sbapt#if defined(YYBTYACC)
431264790Sbapt    "#if YYBTYACC",
432264790Sbapt    "    int yynewerrflag;",
433264790Sbapt    "    YYParseState *yyerrctx = NULL;",
434264790Sbapt    "#endif /* YYBTYACC */",
435272955Srodrigc#endif			/* defined(YYBTYACC) */
436264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
437264790Sbapt    "    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */",
438264790Sbapt    "#endif",
439264790Sbapt    "#if YYDEBUG",
440264790Sbapt    "    const char *yys;",
441264790Sbapt    "",
442264790Sbapt    "    if ((yys = getenv(\"YYDEBUG\")) != 0)",
443264790Sbapt    "    {",
444264790Sbapt    "        yyn = *yys;",
445264790Sbapt    "        if (yyn >= '0' && yyn <= '9')",
446264790Sbapt    "            yydebug = yyn - '0';",
447264790Sbapt    "    }",
448264790Sbapt    "    if (yydebug)",
449264790Sbapt    "        fprintf(stderr, \"%sdebug[<# of symbols on state stack>]\\n\", YYPREFIX);",
450264790Sbapt    "#endif",
451264790Sbapt    "",
452264790Sbapt#if defined(YYBTYACC)
453264790Sbapt    "#if YYBTYACC",
454264790Sbapt    "    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;",
455264790Sbapt    "    yyps->save = 0;",
456264790Sbapt    "#endif /* YYBTYACC */",
457272955Srodrigc#endif			/* defined(YYBTYACC) */
458264790Sbapt    "    yynerrs = 0;",
459264790Sbapt    "    yyerrflag = 0;",
460264790Sbapt    "    yychar = YYEMPTY;",
461264790Sbapt    "    yystate = 0;",
462264790Sbapt    "",
463264790Sbapt    "#if YYPURE",
464264790Sbapt    "    memset(&yystack, 0, sizeof(yystack));",
465264790Sbapt    "#endif",
466264790Sbapt    "",
467264790Sbapt    "    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
468264790Sbapt    "    yystack.s_mark = yystack.s_base;",
469264790Sbapt    "    yystack.l_mark = yystack.l_base;",
470264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
471264790Sbapt    "    yystack.p_mark = yystack.p_base;",
472264790Sbapt    "#endif",
473264790Sbapt    "    yystate = 0;",
474264790Sbapt    "    *yystack.s_mark = 0;",
475264790Sbapt    "",
476264790Sbapt    "yyloop:",
477264790Sbapt    "    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;",
478264790Sbapt    "    if (yychar < 0)",
479264790Sbapt    "    {",
480264790Sbapt#if defined(YYBTYACC)
481264790Sbapt    "#if YYBTYACC",
482264790Sbapt    "        do {",
483264790Sbapt    "        if (yylvp < yylve)",
484264790Sbapt    "        {",
485264790Sbapt    "            /* we're currently re-reading tokens */",
486264790Sbapt    "            yylval = *yylvp++;",
487264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
488264790Sbapt    "            yylloc = *yylpp++;",
489264790Sbapt    "#endif",
490264790Sbapt    "            yychar = *yylexp++;",
491264790Sbapt    "            break;",
492264790Sbapt    "        }",
493264790Sbapt    "        if (yyps->save)",
494264790Sbapt    "        {",
495264790Sbapt    "            /* in trial mode; save scanner results for future parse attempts */",
496264790Sbapt    "            if (yylvp == yylvlim)",
497264790Sbapt    "            {   /* Enlarge lexical value queue */",
498272955Srodrigc    "                size_t p = (size_t) (yylvp - yylvals);",
499272955Srodrigc    "                size_t s = (size_t) (yylvlim - yylvals);",
500264790Sbapt    "",
501264790Sbapt    "                s += YYLVQUEUEGROWTH;",
502264790Sbapt    "                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;",
503264790Sbapt    "                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;",
504264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
505264790Sbapt    "                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;",
506264790Sbapt    "#endif",
507264790Sbapt    "                yylvp   = yylve = yylvals + p;",
508264790Sbapt    "                yylvlim = yylvals + s;",
509264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
510264790Sbapt    "                yylpp   = yylpe = yylpsns + p;",
511264790Sbapt    "                yylplim = yylpsns + s;",
512264790Sbapt    "#endif",
513264790Sbapt    "                yylexp  = yylexemes + p;",
514264790Sbapt    "            }",
515264790Sbapt    "            *yylexp = (short) YYLEX;",
516264790Sbapt    "            *yylvp++ = yylval;",
517264790Sbapt    "            yylve++;",
518264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
519264790Sbapt    "            *yylpp++ = yylloc;",
520264790Sbapt    "            yylpe++;",
521264790Sbapt    "#endif",
522264790Sbapt    "            yychar = *yylexp++;",
523264790Sbapt    "            break;",
524264790Sbapt    "        }",
525264790Sbapt    "        /* normal operation, no conflict encountered */",
526264790Sbapt    "#endif /* YYBTYACC */",
527272955Srodrigc#endif			/* defined(YYBTYACC) */
528264790Sbapt    "        yychar = YYLEX;",
529264790Sbapt#if defined(YYBTYACC)
530264790Sbapt    "#if YYBTYACC",
531264790Sbapt    "        } while (0);",
532264790Sbapt    "#endif /* YYBTYACC */",
533272955Srodrigc#endif			/* defined(YYBTYACC) */
534264790Sbapt    "        if (yychar < 0) yychar = YYEOF;",
535264790Sbapt    "        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
536264790Sbapt    "#if YYDEBUG",
537264790Sbapt    "        if (yydebug)",
538264790Sbapt    "        {",
539264790Sbapt    "            yys = yyname[YYTRANSLATE(yychar)];",
540264790Sbapt    "            fprintf(stderr, \"%s[%d]: state %d, reading token %d (%s)\",",
541264790Sbapt    "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
542264790Sbapt    "#ifdef YYSTYPE_TOSTRING",
543264790Sbapt#if defined(YYBTYACC)
544264790Sbapt    "#if YYBTYACC",
545264790Sbapt    "            if (!yytrial)",
546264790Sbapt    "#endif /* YYBTYACC */",
547272955Srodrigc#endif			/* defined(YYBTYACC) */
548264790Sbapt    "                fprintf(stderr, \" <%s>\", YYSTYPE_TOSTRING(yychar, yylval));",
549264790Sbapt    "#endif",
550264790Sbapt    "            fputc('\\n', stderr);",
551264790Sbapt    "        }",
552264790Sbapt    "#endif",
553264790Sbapt    "    }",
554264790Sbapt#if defined(YYBTYACC)
555264790Sbapt    "#if YYBTYACC",
556264790Sbapt    "",
557264790Sbapt    "    /* Do we have a conflict? */",
558264790Sbapt    "    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
559264790Sbapt    "        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
560264790Sbapt    "    {",
561264790Sbapt    "        YYINT ctry;",
562264790Sbapt    "",
563264790Sbapt    "        if (yypath)",
564264790Sbapt    "        {",
565264790Sbapt    "            YYParseState *save;",
566264790Sbapt    "#if YYDEBUG",
567264790Sbapt    "            if (yydebug)",
568264790Sbapt    "                fprintf(stderr, \"%s[%d]: CONFLICT in state %d: following successful trial parse\\n\",",
569264790Sbapt    "                                YYDEBUGSTR, yydepth, yystate);",
570264790Sbapt    "#endif",
571264790Sbapt    "            /* Switch to the next conflict context */",
572264790Sbapt    "            save = yypath;",
573264790Sbapt    "            yypath = save->save;",
574264790Sbapt    "            save->save = NULL;",
575264790Sbapt    "            ctry = save->ctry;",
576264790Sbapt    "            if (save->state != yystate) YYABORT;",
577264790Sbapt    "            yyFreeState(save);",
578264790Sbapt    "",
579264790Sbapt    "        }",
580264790Sbapt    "        else",
581264790Sbapt    "        {",
582264790Sbapt    "",
583264790Sbapt    "            /* Unresolved conflict - start/continue trial parse */",
584264790Sbapt    "            YYParseState *save;",
585264790Sbapt    "#if YYDEBUG",
586264790Sbapt    "            if (yydebug)",
587264790Sbapt    "            {",
588264790Sbapt    "                fprintf(stderr, \"%s[%d]: CONFLICT in state %d. \", YYDEBUGSTR, yydepth, yystate);",
589264790Sbapt    "                if (yyps->save)",
590264790Sbapt    "                    fputs(\"ALREADY in conflict, continuing trial parse.\\n\", stderr);",
591264790Sbapt    "                else",
592264790Sbapt    "                    fputs(\"Starting trial parse.\\n\", stderr);",
593264790Sbapt    "            }",
594264790Sbapt    "#endif",
595264790Sbapt    "            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));",
596264790Sbapt    "            if (save == NULL) goto yyenomem;",
597264790Sbapt    "            save->save            = yyps->save;",
598264790Sbapt    "            save->state           = yystate;",
599264790Sbapt    "            save->errflag         = yyerrflag;",
600264790Sbapt    "            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);",
601272955Srodrigc    "            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
602264790Sbapt    "            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);",
603272955Srodrigc    "            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
604264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
605264790Sbapt    "            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);",
606272955Srodrigc    "            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
607264790Sbapt    "#endif",
608264790Sbapt    "            ctry                  = yytable[yyn];",
609264790Sbapt    "            if (yyctable[ctry] == -1)",
610264790Sbapt    "            {",
611264790Sbapt    "#if YYDEBUG",
612264790Sbapt    "                if (yydebug && yychar >= YYEOF)",
613264790Sbapt    "                    fprintf(stderr, \"%s[%d]: backtracking 1 token\\n\", YYDEBUGSTR, yydepth);",
614264790Sbapt    "#endif",
615264790Sbapt    "                ctry++;",
616264790Sbapt    "            }",
617264790Sbapt    "            save->ctry = ctry;",
618264790Sbapt    "            if (yyps->save == NULL)",
619264790Sbapt    "            {",
620264790Sbapt    "                /* If this is a first conflict in the stack, start saving lexemes */",
621264790Sbapt    "                if (!yylexemes)",
622264790Sbapt    "                {",
623264790Sbapt    "                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));",
624264790Sbapt    "                    if (yylexemes == NULL) goto yyenomem;",
625264790Sbapt    "                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));",
626264790Sbapt    "                    if (yylvals == NULL) goto yyenomem;",
627264790Sbapt    "                    yylvlim   = yylvals + YYLVQUEUEGROWTH;",
628264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
629264790Sbapt    "                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));",
630264790Sbapt    "                    if (yylpsns == NULL) goto yyenomem;",
631264790Sbapt    "                    yylplim   = yylpsns + YYLVQUEUEGROWTH;",
632264790Sbapt    "#endif",
633264790Sbapt    "                }",
634264790Sbapt    "                if (yylvp == yylve)",
635264790Sbapt    "                {",
636264790Sbapt    "                    yylvp  = yylve = yylvals;",
637264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
638264790Sbapt    "                    yylpp  = yylpe = yylpsns;",
639264790Sbapt    "#endif",
640264790Sbapt    "                    yylexp = yylexemes;",
641264790Sbapt    "                    if (yychar >= YYEOF)",
642264790Sbapt    "                    {",
643264790Sbapt    "                        *yylve++ = yylval;",
644264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
645264790Sbapt    "                        *yylpe++ = yylloc;",
646264790Sbapt    "#endif",
647264790Sbapt    "                        *yylexp  = (short) yychar;",
648264790Sbapt    "                        yychar   = YYEMPTY;",
649264790Sbapt    "                    }",
650264790Sbapt    "                }",
651264790Sbapt    "            }",
652264790Sbapt    "            if (yychar >= YYEOF)",
653264790Sbapt    "            {",
654264790Sbapt    "                yylvp--;",
655264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
656264790Sbapt    "                yylpp--;",
657264790Sbapt    "#endif",
658264790Sbapt    "                yylexp--;",
659264790Sbapt    "                yychar = YYEMPTY;",
660264790Sbapt    "            }",
661272955Srodrigc    "            save->lexeme = (int) (yylvp - yylvals);",
662264790Sbapt    "            yyps->save   = save;",
663264790Sbapt    "        }",
664264790Sbapt    "        if (yytable[yyn] == ctry)",
665264790Sbapt    "        {",
666264790Sbapt    "#if YYDEBUG",
667264790Sbapt    "            if (yydebug)",
668264790Sbapt    "                fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",",
669264790Sbapt    "                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);",
670264790Sbapt    "#endif",
671264790Sbapt    "            if (yychar < 0)",
672264790Sbapt    "            {",
673264790Sbapt    "                yylvp++;",
674264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
675264790Sbapt    "                yylpp++;",
676264790Sbapt    "#endif",
677264790Sbapt    "                yylexp++;",
678264790Sbapt    "            }",
679264790Sbapt    "            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)",
680264790Sbapt    "                goto yyoverflow;",
681264790Sbapt    "            yystate = yyctable[ctry];",
682264790Sbapt    "            *++yystack.s_mark = (short) yystate;",
683264790Sbapt    "            *++yystack.l_mark = yylval;",
684264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
685264790Sbapt    "            *++yystack.p_mark = yylloc;",
686264790Sbapt    "#endif",
687264790Sbapt    "            yychar  = YYEMPTY;",
688264790Sbapt    "            if (yyerrflag > 0) --yyerrflag;",
689264790Sbapt    "            goto yyloop;",
690264790Sbapt    "        }",
691264790Sbapt    "        else",
692264790Sbapt    "        {",
693264790Sbapt    "            yyn = yyctable[ctry];",
694264790Sbapt    "            goto yyreduce;",
695264790Sbapt    "        }",
696264790Sbapt    "    } /* End of code dealing with conflicts */",
697264790Sbapt    "#endif /* YYBTYACC */",
698272955Srodrigc#endif			/* defined(YYBTYACC) */
699264790Sbapt    "    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
700264790Sbapt    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
701264790Sbapt    "    {",
702264790Sbapt    "#if YYDEBUG",
703264790Sbapt    "        if (yydebug)",
704264790Sbapt    "            fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",",
705264790Sbapt    "                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);",
706264790Sbapt    "#endif",
707264790Sbapt    "        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
708264790Sbapt    "        yystate = yytable[yyn];",
709264790Sbapt    "        *++yystack.s_mark = yytable[yyn];",
710264790Sbapt    "        *++yystack.l_mark = yylval;",
711264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
712264790Sbapt    "        *++yystack.p_mark = yylloc;",
713264790Sbapt    "#endif",
714264790Sbapt    "        yychar = YYEMPTY;",
715264790Sbapt    "        if (yyerrflag > 0)  --yyerrflag;",
716264790Sbapt    "        goto yyloop;",
717264790Sbapt    "    }",
718264790Sbapt    "    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&",
719264790Sbapt    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)",
720264790Sbapt    "    {",
721264790Sbapt    "        yyn = yytable[yyn];",
722264790Sbapt    "        goto yyreduce;",
723264790Sbapt    "    }",
724264790Sbapt    "    if (yyerrflag != 0) goto yyinrecovery;",
725264790Sbapt#if defined(YYBTYACC)
726264790Sbapt    "#if YYBTYACC",
727264790Sbapt    "",
728264790Sbapt    "    yynewerrflag = 1;",
729264790Sbapt    "    goto yyerrhandler;",
730264790Sbapt    "    goto yyerrlab;",
731264790Sbapt    "",
732264790Sbapt    "yyerrlab:",
733264790Sbapt    "    yynewerrflag = 0;",
734264790Sbapt    "yyerrhandler:",
735264790Sbapt    "    while (yyps->save)",
736264790Sbapt    "    {",
737264790Sbapt    "        int ctry;",
738264790Sbapt    "        YYParseState *save = yyps->save;",
739264790Sbapt    "#if YYDEBUG",
740264790Sbapt    "        if (yydebug)",
741264790Sbapt    "            fprintf(stderr, \"%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\\n\",",
742264790Sbapt    "                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,",
743264790Sbapt    "                    (int)(yylvp - yylvals - yyps->save->lexeme));",
744264790Sbapt    "#endif",
745264790Sbapt    "        /* Memorize most forward-looking error state in case it's really an error. */",
746264790Sbapt    "        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)",
747264790Sbapt    "        {",
748264790Sbapt    "            /* Free old saved error context state */",
749264790Sbapt    "            if (yyerrctx) yyFreeState(yyerrctx);",
750264790Sbapt    "            /* Create and fill out new saved error context state */",
751264790Sbapt    "            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));",
752264790Sbapt    "            if (yyerrctx == NULL) goto yyenomem;",
753264790Sbapt    "            yyerrctx->save           = yyps->save;",
754264790Sbapt    "            yyerrctx->state          = yystate;",
755264790Sbapt    "            yyerrctx->errflag        = yyerrflag;",
756264790Sbapt    "            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);",
757272955Srodrigc    "            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
758264790Sbapt    "            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);",
759272955Srodrigc    "            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
760264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
761264790Sbapt    "            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);",
762272955Srodrigc    "            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
763264790Sbapt    "#endif",
764272955Srodrigc    "            yyerrctx->lexeme         = (int) (yylvp - yylvals);",
765264790Sbapt    "        }",
766264790Sbapt    "        yylvp          = yylvals   + save->lexeme;",
767264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
768264790Sbapt    "        yylpp          = yylpsns   + save->lexeme;",
769264790Sbapt    "#endif",
770264790Sbapt    "        yylexp         = yylexemes + save->lexeme;",
771264790Sbapt    "        yychar         = YYEMPTY;",
772264790Sbapt    "        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);",
773272955Srodrigc    "        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
774264790Sbapt    "        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);",
775272955Srodrigc    "        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
776264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
777264790Sbapt    "        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);",
778272955Srodrigc    "        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
779264790Sbapt    "#endif",
780264790Sbapt    "        ctry           = ++save->ctry;",
781264790Sbapt    "        yystate        = save->state;",
782264790Sbapt    "        /* We tried shift, try reduce now */",
783264790Sbapt    "        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;",
784264790Sbapt    "        yyps->save     = save->save;",
785264790Sbapt    "        save->save     = NULL;",
786264790Sbapt    "        yyFreeState(save);",
787264790Sbapt    "",
788264790Sbapt    "        /* Nothing left on the stack -- error */",
789264790Sbapt    "        if (!yyps->save)",
790264790Sbapt    "        {",
791264790Sbapt    "#if YYDEBUG",
792264790Sbapt    "            if (yydebug)",
793264790Sbapt    "                fprintf(stderr, \"%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\\n\",",
794264790Sbapt    "                                YYPREFIX, yydepth);",
795264790Sbapt    "#endif",
796264790Sbapt    "            /* Restore state as it was in the most forward-advanced error */",
797264790Sbapt    "            yylvp          = yylvals   + yyerrctx->lexeme;",
798264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
799264790Sbapt    "            yylpp          = yylpsns   + yyerrctx->lexeme;",
800264790Sbapt    "#endif",
801264790Sbapt    "            yylexp         = yylexemes + yyerrctx->lexeme;",
802264790Sbapt    "            yychar         = yylexp[-1];",
803264790Sbapt    "            yylval         = yylvp[-1];",
804264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
805264790Sbapt    "            yylloc         = yylpp[-1];",
806264790Sbapt    "#endif",
807264790Sbapt    "            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);",
808272955Srodrigc    "            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
809264790Sbapt    "            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);",
810272955Srodrigc    "            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
811264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
812264790Sbapt    "            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);",
813272955Srodrigc    "            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
814264790Sbapt    "#endif",
815264790Sbapt    "            yystate        = yyerrctx->state;",
816264790Sbapt    "            yyFreeState(yyerrctx);",
817264790Sbapt    "            yyerrctx       = NULL;",
818264790Sbapt    "        }",
819264790Sbapt    "        yynewerrflag = 1;",
820264790Sbapt    "    }",
821264790Sbapt    "    if (yynewerrflag == 0) goto yyinrecovery;",
822264790Sbapt    "#endif /* YYBTYACC */",
823272955Srodrigc#endif			/* defined(YYBTYACC) */
824264790Sbapt    "",
825264790Sbapt    "    YYERROR_CALL(\"syntax error\");",
826264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
827264790Sbapt    "    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */",
828264790Sbapt    "#endif",
829264790Sbapt    "",
830264790Sbapt    "#if !YYBTYACC",
831264790Sbapt    "    goto yyerrlab;",
832264790Sbapt    "yyerrlab:",
833264790Sbapt    "#endif",
834264790Sbapt    "    ++yynerrs;",
835264790Sbapt    "",
836264790Sbapt    "yyinrecovery:",
837264790Sbapt    "    if (yyerrflag < 3)",
838264790Sbapt    "    {",
839264790Sbapt    "        yyerrflag = 3;",
840264790Sbapt    "        for (;;)",
841264790Sbapt    "        {",
842264790Sbapt    "            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&",
843264790Sbapt    "                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)",
844264790Sbapt    "            {",
845264790Sbapt    "#if YYDEBUG",
846264790Sbapt    "                if (yydebug)",
847264790Sbapt    "                    fprintf(stderr, \"%s[%d]: state %d, error recovery shifting to state %d\\n\",",
848264790Sbapt    "                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);",
849264790Sbapt    "#endif",
850264790Sbapt    "                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
851264790Sbapt    "                yystate = yytable[yyn];",
852264790Sbapt    "                *++yystack.s_mark = yytable[yyn];",
853264790Sbapt    "                *++yystack.l_mark = yylval;",
854264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
855264790Sbapt    "                /* lookahead position is error end position */",
856264790Sbapt    "                yyerror_loc_range[1] = yylloc;",
857264790Sbapt    "                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */",
858264790Sbapt    "                *++yystack.p_mark = yyloc;",
859264790Sbapt    "#endif",
860264790Sbapt    "                goto yyloop;",
861264790Sbapt    "            }",
862264790Sbapt    "            else",
863264790Sbapt    "            {",
864264790Sbapt    "#if YYDEBUG",
865264790Sbapt    "                if (yydebug)",
866264790Sbapt    "                    fprintf(stderr, \"%s[%d]: error recovery discarding state %d\\n\",",
867264790Sbapt    "                                    YYDEBUGSTR, yydepth, *yystack.s_mark);",
868264790Sbapt    "#endif",
869264790Sbapt    "                if (yystack.s_mark <= yystack.s_base) goto yyabort;",
870264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
871264790Sbapt    "                /* the current TOS position is the error start position */",
872264790Sbapt    "                yyerror_loc_range[0] = *yystack.p_mark;",
873264790Sbapt    "#endif",
874264790Sbapt    "#if defined(YYDESTRUCT_CALL)",
875264790Sbapt#if defined(YYBTYACC)
876264790Sbapt    "#if YYBTYACC",
877264790Sbapt    "                if (!yytrial)",
878264790Sbapt    "#endif /* YYBTYACC */",
879272955Srodrigc#endif			/* defined(YYBTYACC) */
880264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
881264790Sbapt    "                    YYDESTRUCT_CALL(\"error: discarding state\",",
882264790Sbapt    "                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);",
883264790Sbapt    "#else",
884264790Sbapt    "                    YYDESTRUCT_CALL(\"error: discarding state\",",
885264790Sbapt    "                                    yystos[*yystack.s_mark], yystack.l_mark);",
886264790Sbapt    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
887264790Sbapt    "#endif /* defined(YYDESTRUCT_CALL) */",
888264790Sbapt    "                --yystack.s_mark;",
889264790Sbapt    "                --yystack.l_mark;",
890264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
891264790Sbapt    "                --yystack.p_mark;",
892264790Sbapt    "#endif",
893264790Sbapt    "            }",
894264790Sbapt    "        }",
895264790Sbapt    "    }",
896264790Sbapt    "    else",
897264790Sbapt    "    {",
898264790Sbapt    "        if (yychar == YYEOF) goto yyabort;",
899264790Sbapt    "#if YYDEBUG",
900264790Sbapt    "        if (yydebug)",
901264790Sbapt    "        {",
902264790Sbapt    "            yys = yyname[YYTRANSLATE(yychar)];",
903264790Sbapt    "            fprintf(stderr, \"%s[%d]: state %d, error recovery discarding token %d (%s)\\n\",",
904264790Sbapt    "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
905264790Sbapt    "        }",
906264790Sbapt    "#endif",
907264790Sbapt    "#if defined(YYDESTRUCT_CALL)",
908264790Sbapt#if defined(YYBTYACC)
909264790Sbapt    "#if YYBTYACC",
910264790Sbapt    "        if (!yytrial)",
911264790Sbapt    "#endif /* YYBTYACC */",
912272955Srodrigc#endif			/* defined(YYBTYACC) */
913264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
914264790Sbapt    "            YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval, &yylloc);",
915264790Sbapt    "#else",
916264790Sbapt    "            YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval);",
917264790Sbapt    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
918264790Sbapt    "#endif /* defined(YYDESTRUCT_CALL) */",
919264790Sbapt    "        yychar = YYEMPTY;",
920264790Sbapt    "        goto yyloop;",
921264790Sbapt    "    }",
922264790Sbapt    "",
923264790Sbapt    "yyreduce:",
924264790Sbapt    "    yym = yylen[yyn];",
925264790Sbapt    "#if YYDEBUG",
926264790Sbapt    "    if (yydebug)",
927264790Sbapt    "    {",
928264790Sbapt    "        fprintf(stderr, \"%s[%d]: state %d, reducing by rule %d (%s)\",",
929264790Sbapt    "                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);",
930264790Sbapt    "#ifdef YYSTYPE_TOSTRING",
931264790Sbapt#if defined(YYBTYACC)
932264790Sbapt    "#if YYBTYACC",
933264790Sbapt    "        if (!yytrial)",
934264790Sbapt    "#endif /* YYBTYACC */",
935272955Srodrigc#endif			/* defined(YYBTYACC) */
936264790Sbapt    "            if (yym > 0)",
937264790Sbapt    "            {",
938264790Sbapt    "                int i;",
939264790Sbapt    "                fputc('<', stderr);",
940264790Sbapt    "                for (i = yym; i > 0; i--)",
941264790Sbapt    "                {",
942264790Sbapt    "                    if (i != yym) fputs(\", \", stderr);",
943264790Sbapt    "                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],",
944264790Sbapt    "                                           yystack.l_mark[1-i]), stderr);",
945264790Sbapt    "                }",
946264790Sbapt    "                fputc('>', stderr);",
947264790Sbapt    "            }",
948264790Sbapt    "#endif",
949264790Sbapt    "        fputc('\\n', stderr);",
950264790Sbapt    "    }",
951264790Sbapt    "#endif",
952264790Sbapt    "    if (yym > 0)",
953264790Sbapt    "        yyval = yystack.l_mark[1-yym];",
954264790Sbapt    "    else",
955264790Sbapt    "        memset(&yyval, 0, sizeof yyval);",
956264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
957264790Sbapt    "",
958264790Sbapt    "    /* Perform position reduction */",
959264790Sbapt    "    memset(&yyloc, 0, sizeof(yyloc));",
960264790Sbapt#if defined(YYBTYACC)
961264790Sbapt    "#if YYBTYACC",
962264790Sbapt    "    if (!yytrial)",
963264790Sbapt    "#endif /* YYBTYACC */",
964272955Srodrigc#endif			/* defined(YYBTYACC) */
965264790Sbapt    "    {",
966264790Sbapt    "        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);",
967264790Sbapt    "        /* just in case YYERROR is invoked within the action, save",
968264790Sbapt    "           the start of the rhs as the error start position */",
969264790Sbapt    "        yyerror_loc_range[0] = yystack.p_mark[1-yym];",
970264790Sbapt    "    }",
971264790Sbapt    "#endif",
972264790Sbapt    "",
973264790Sbapt    "    switch (yyn)",
974264790Sbapt    "    {",
975264790Sbapt    0
976264790Sbapt};
977264790Sbapt
978264790Sbaptconst char *const trailer[] =
979264790Sbapt{
980264790Sbapt    "    default:",
981264790Sbapt    "        break;",
982264790Sbapt    "    }",
983264790Sbapt    "    yystack.s_mark -= yym;",
984264790Sbapt    "    yystate = *yystack.s_mark;",
985264790Sbapt    "    yystack.l_mark -= yym;",
986264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
987264790Sbapt    "    yystack.p_mark -= yym;",
988264790Sbapt    "#endif",
989264790Sbapt    "    yym = yylhs[yyn];",
990264790Sbapt    "    if (yystate == 0 && yym == 0)",
991264790Sbapt    "    {",
992264790Sbapt    "#if YYDEBUG",
993264790Sbapt    "        if (yydebug)",
994264790Sbapt    "        {",
995264790Sbapt    "            fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);",
996264790Sbapt    "#ifdef YYSTYPE_TOSTRING",
997264790Sbapt#if defined(YYBTYACC)
998264790Sbapt    "#if YYBTYACC",
999264790Sbapt    "            if (!yytrial)",
1000264790Sbapt    "#endif /* YYBTYACC */",
1001272955Srodrigc#endif			/* defined(YYBTYACC) */
1002264790Sbapt    "                fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));",
1003264790Sbapt    "#endif",
1004264790Sbapt    "            fprintf(stderr, \"shifting from state 0 to final state %d\\n\", YYFINAL);",
1005264790Sbapt    "        }",
1006264790Sbapt    "#endif",
1007264790Sbapt    "        yystate = YYFINAL;",
1008264790Sbapt    "        *++yystack.s_mark = YYFINAL;",
1009264790Sbapt    "        *++yystack.l_mark = yyval;",
1010264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1011264790Sbapt    "        *++yystack.p_mark = yyloc;",
1012264790Sbapt    "#endif",
1013264790Sbapt    "        if (yychar < 0)",
1014264790Sbapt    "        {",
1015264790Sbapt#if defined(YYBTYACC)
1016264790Sbapt    "#if YYBTYACC",
1017264790Sbapt    "            do {",
1018264790Sbapt    "            if (yylvp < yylve)",
1019264790Sbapt    "            {",
1020264790Sbapt    "                /* we're currently re-reading tokens */",
1021264790Sbapt    "                yylval = *yylvp++;",
1022264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1023264790Sbapt    "                yylloc = *yylpp++;",
1024264790Sbapt    "#endif",
1025264790Sbapt    "                yychar = *yylexp++;",
1026264790Sbapt    "                break;",
1027264790Sbapt    "            }",
1028264790Sbapt    "            if (yyps->save)",
1029264790Sbapt    "            {",
1030264790Sbapt    "                /* in trial mode; save scanner results for future parse attempts */",
1031264790Sbapt    "                if (yylvp == yylvlim)",
1032264790Sbapt    "                {   /* Enlarge lexical value queue */",
1033272955Srodrigc    "                    size_t p = (size_t) (yylvp - yylvals);",
1034272955Srodrigc    "                    size_t s = (size_t) (yylvlim - yylvals);",
1035264790Sbapt    "",
1036264790Sbapt    "                    s += YYLVQUEUEGROWTH;",
1037264790Sbapt    "                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)",
1038264790Sbapt    "                        goto yyenomem;",
1039264790Sbapt    "                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)",
1040264790Sbapt    "                        goto yyenomem;",
1041264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1042264790Sbapt    "                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)",
1043264790Sbapt    "                        goto yyenomem;",
1044264790Sbapt    "#endif",
1045264790Sbapt    "                    yylvp   = yylve = yylvals + p;",
1046264790Sbapt    "                    yylvlim = yylvals + s;",
1047264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1048264790Sbapt    "                    yylpp   = yylpe = yylpsns + p;",
1049264790Sbapt    "                    yylplim = yylpsns + s;",
1050264790Sbapt    "#endif",
1051264790Sbapt    "                    yylexp  = yylexemes + p;",
1052264790Sbapt    "                }",
1053264790Sbapt    "                *yylexp = (short) YYLEX;",
1054264790Sbapt    "                *yylvp++ = yylval;",
1055264790Sbapt    "                yylve++;",
1056264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1057264790Sbapt    "                *yylpp++ = yylloc;",
1058264790Sbapt    "                yylpe++;",
1059264790Sbapt    "#endif",
1060264790Sbapt    "                yychar = *yylexp++;",
1061264790Sbapt    "                break;",
1062264790Sbapt    "            }",
1063264790Sbapt    "            /* normal operation, no conflict encountered */",
1064264790Sbapt    "#endif /* YYBTYACC */",
1065272955Srodrigc#endif			/* defined(YYBTYACC) */
1066264790Sbapt    "            yychar = YYLEX;",
1067264790Sbapt#if defined(YYBTYACC)
1068264790Sbapt    "#if YYBTYACC",
1069264790Sbapt    "            } while (0);",
1070264790Sbapt    "#endif /* YYBTYACC */",
1071272955Srodrigc#endif			/* defined(YYBTYACC) */
1072264790Sbapt    "            if (yychar < 0) yychar = YYEOF;",
1073264790Sbapt    "            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
1074264790Sbapt    "#if YYDEBUG",
1075264790Sbapt    "            if (yydebug)",
1076264790Sbapt    "            {",
1077264790Sbapt    "                yys = yyname[YYTRANSLATE(yychar)];",
1078264790Sbapt    "                fprintf(stderr, \"%s[%d]: state %d, reading %d (%s)\\n\",",
1079264790Sbapt    "                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);",
1080264790Sbapt    "            }",
1081264790Sbapt    "#endif",
1082264790Sbapt    "        }",
1083264790Sbapt    "        if (yychar == YYEOF) goto yyaccept;",
1084264790Sbapt    "        goto yyloop;",
1085264790Sbapt    "    }",
1086264790Sbapt    "    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&",
1087264790Sbapt    "            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)",
1088264790Sbapt    "        yystate = yytable[yyn];",
1089264790Sbapt    "    else",
1090264790Sbapt    "        yystate = yydgoto[yym];",
1091264790Sbapt    "#if YYDEBUG",
1092264790Sbapt    "    if (yydebug)",
1093264790Sbapt    "    {",
1094264790Sbapt    "        fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);",
1095264790Sbapt    "#ifdef YYSTYPE_TOSTRING",
1096264790Sbapt#if defined(YYBTYACC)
1097264790Sbapt    "#if YYBTYACC",
1098264790Sbapt    "        if (!yytrial)",
1099264790Sbapt    "#endif /* YYBTYACC */",
1100272955Srodrigc#endif			/* defined(YYBTYACC) */
1101264790Sbapt    "            fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[yystate], yyval));",
1102264790Sbapt    "#endif",
1103264790Sbapt    "        fprintf(stderr, \"shifting from state %d to state %d\\n\", *yystack.s_mark, yystate);",
1104264790Sbapt    "    }",
1105264790Sbapt    "#endif",
1106264790Sbapt    "    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
1107264790Sbapt    "    *++yystack.s_mark = (short) yystate;",
1108264790Sbapt    "    *++yystack.l_mark = yyval;",
1109264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1110264790Sbapt    "    *++yystack.p_mark = yyloc;",
1111264790Sbapt    "#endif",
1112264790Sbapt    "    goto yyloop;",
1113264790Sbapt#if defined(YYBTYACC)
1114264790Sbapt    "#if YYBTYACC",
1115264790Sbapt    "",
1116264790Sbapt    "    /* Reduction declares that this path is valid. Set yypath and do a full parse */",
1117264790Sbapt    "yyvalid:",
1118264790Sbapt    "    if (yypath) YYABORT;",
1119264790Sbapt    "    while (yyps->save)",
1120264790Sbapt    "    {",
1121264790Sbapt    "        YYParseState *save = yyps->save;",
1122264790Sbapt    "        yyps->save = save->save;",
1123264790Sbapt    "        save->save = yypath;",
1124264790Sbapt    "        yypath = save;",
1125264790Sbapt    "    }",
1126264790Sbapt    "#if YYDEBUG",
1127264790Sbapt    "    if (yydebug)",
1128264790Sbapt    "        fprintf(stderr, \"%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\\n\",",
1129264790Sbapt    "                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));",
1130264790Sbapt    "#endif",
1131264790Sbapt    "    if (yyerrctx)",
1132264790Sbapt    "    {",
1133264790Sbapt    "        yyFreeState(yyerrctx);",
1134264790Sbapt    "        yyerrctx = NULL;",
1135264790Sbapt    "    }",
1136264790Sbapt    "    yylvp          = yylvals + yypath->lexeme;",
1137264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1138264790Sbapt    "    yylpp          = yylpsns + yypath->lexeme;",
1139264790Sbapt    "#endif",
1140264790Sbapt    "    yylexp         = yylexemes + yypath->lexeme;",
1141264790Sbapt    "    yychar         = YYEMPTY;",
1142264790Sbapt    "    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);",
1143272955Srodrigc    "    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
1144264790Sbapt    "    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);",
1145272955Srodrigc    "    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
1146264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1147264790Sbapt    "    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);",
1148272955Srodrigc    "    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));",
1149264790Sbapt    "#endif",
1150264790Sbapt    "    yystate        = yypath->state;",
1151264790Sbapt    "    goto yyloop;",
1152264790Sbapt    "#endif /* YYBTYACC */",
1153272955Srodrigc#endif			/* defined(YYBTYACC) */
1154264790Sbapt    "",
1155264790Sbapt    "yyoverflow:",
1156264790Sbapt    "    YYERROR_CALL(\"yacc stack overflow\");",
1157264790Sbapt#if defined(YYBTYACC)
1158264790Sbapt    "#if YYBTYACC",
1159264790Sbapt    "    goto yyabort_nomem;",
1160264790Sbapt    "yyenomem:",
1161264790Sbapt    "    YYERROR_CALL(\"memory exhausted\");",
1162264790Sbapt    "yyabort_nomem:",
1163264790Sbapt    "#endif /* YYBTYACC */",
1164272955Srodrigc#endif			/* defined(YYBTYACC) */
1165264790Sbapt    "    yyresult = 2;",
1166264790Sbapt    "    goto yyreturn;",
1167264790Sbapt    "",
1168264790Sbapt    "yyabort:",
1169264790Sbapt    "    yyresult = 1;",
1170264790Sbapt    "    goto yyreturn;",
1171264790Sbapt    "",
1172264790Sbapt    "yyaccept:",
1173264790Sbapt#if defined(YYBTYACC)
1174264790Sbapt    "#if YYBTYACC",
1175264790Sbapt    "    if (yyps->save) goto yyvalid;",
1176264790Sbapt    "#endif /* YYBTYACC */",
1177272955Srodrigc#endif			/* defined(YYBTYACC) */
1178264790Sbapt    "    yyresult = 0;",
1179264790Sbapt    "",
1180264790Sbapt    "yyreturn:",
1181264790Sbapt    "#if defined(YYDESTRUCT_CALL)",
1182264790Sbapt    "    if (yychar != YYEOF && yychar != YYEMPTY)",
1183264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1184264790Sbapt    "        YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval, &yylloc);",
1185264790Sbapt    "#else",
1186264790Sbapt    "        YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval);",
1187264790Sbapt    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
1188264790Sbapt    "",
1189264790Sbapt    "    {",
1190264790Sbapt    "        YYSTYPE *pv;",
1191264790Sbapt    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
1192264790Sbapt    "        YYLTYPE *pp;",
1193264790Sbapt    "",
1194264790Sbapt    "        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)",
1195264790Sbapt    "             YYDESTRUCT_CALL(\"cleanup: discarding state\",",
1196264790Sbapt    "                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);",
1197264790Sbapt    "#else",
1198264790Sbapt    "        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)",
1199264790Sbapt    "             YYDESTRUCT_CALL(\"cleanup: discarding state\",",
1200264790Sbapt    "                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);",
1201264790Sbapt    "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */",
1202264790Sbapt    "    }",
1203264790Sbapt    "#endif /* defined(YYDESTRUCT_CALL) */",
1204264790Sbapt    "",
1205264790Sbapt#if defined(YYBTYACC)
1206264790Sbapt    "#if YYBTYACC",
1207264790Sbapt    "    if (yyerrctx)",
1208264790Sbapt    "    {",
1209264790Sbapt    "        yyFreeState(yyerrctx);",
1210264790Sbapt    "        yyerrctx = NULL;",
1211264790Sbapt    "    }",
1212264790Sbapt    "    while (yyps)",
1213264790Sbapt    "    {",
1214264790Sbapt    "        YYParseState *save = yyps;",
1215264790Sbapt    "        yyps = save->save;",
1216264790Sbapt    "        save->save = NULL;",
1217264790Sbapt    "        yyFreeState(save);",
1218264790Sbapt    "    }",
1219264790Sbapt    "    while (yypath)",
1220264790Sbapt    "    {",
1221264790Sbapt    "        YYParseState *save = yypath;",
1222264790Sbapt    "        yypath = save->save;",
1223264790Sbapt    "        save->save = NULL;",
1224264790Sbapt    "        yyFreeState(save);",
1225264790Sbapt    "    }",
1226264790Sbapt    "#endif /* YYBTYACC */",
1227272955Srodrigc#endif			/* defined(YYBTYACC) */
1228264790Sbapt    "    yyfreestack(&yystack);",
1229264790Sbapt    "    return (yyresult);",
1230264790Sbapt    "}",
1231264790Sbapt    0
1232264790Sbapt};
1233264790Sbapt
1234264790Sbaptvoid
1235264790Sbaptwrite_section(FILE * fp, const char *const section[])
1236264790Sbapt{
1237264790Sbapt    int i;
1238264790Sbapt    const char *s;
1239264790Sbapt
1240264790Sbapt    for (i = 0; (s = section[i]) != 0; ++i)
1241264790Sbapt    {
1242264790Sbapt	if (fp == code_file)
1243264790Sbapt	    ++outline;
1244264790Sbapt	fprintf(fp, "%s\n", s);
1245264790Sbapt    }
1246264790Sbapt}
1247