1264790Sbapt/* original parser id follows */
2264790Sbapt/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
3264790Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4264790Sbapt
5264790Sbapt#define YYBYACC 1
6264790Sbapt#define YYMAJOR 1
7264790Sbapt#define YYMINOR 9
8264790Sbapt#define YYCHECK "yyyymmdd"
9264790Sbapt
10264790Sbapt#define YYEMPTY        (-1)
11264790Sbapt#define yyclearin      (yychar = YYEMPTY)
12264790Sbapt#define yyerrok        (yyerrflag = 0)
13264790Sbapt#define YYRECOVERING() (yyerrflag != 0)
14264790Sbapt#define YYENOMEM       (-2)
15264790Sbapt#define YYEOF          0
16264790Sbapt
17264790Sbapt#ifndef yyparse
18264790Sbapt#define yyparse    error_parse
19264790Sbapt#endif /* yyparse */
20264790Sbapt
21264790Sbapt#ifndef yylex
22264790Sbapt#define yylex      error_lex
23264790Sbapt#endif /* yylex */
24264790Sbapt
25264790Sbapt#ifndef yyerror
26264790Sbapt#define yyerror    error_error
27264790Sbapt#endif /* yyerror */
28264790Sbapt
29264790Sbapt#ifndef yychar
30264790Sbapt#define yychar     error_char
31264790Sbapt#endif /* yychar */
32264790Sbapt
33264790Sbapt#ifndef yyval
34264790Sbapt#define yyval      error_val
35264790Sbapt#endif /* yyval */
36264790Sbapt
37264790Sbapt#ifndef yylval
38264790Sbapt#define yylval     error_lval
39264790Sbapt#endif /* yylval */
40264790Sbapt
41264790Sbapt#ifndef yydebug
42264790Sbapt#define yydebug    error_debug
43264790Sbapt#endif /* yydebug */
44264790Sbapt
45264790Sbapt#ifndef yynerrs
46264790Sbapt#define yynerrs    error_nerrs
47264790Sbapt#endif /* yynerrs */
48264790Sbapt
49264790Sbapt#ifndef yyerrflag
50264790Sbapt#define yyerrflag  error_errflag
51264790Sbapt#endif /* yyerrflag */
52264790Sbapt
53264790Sbapt#ifndef yylhs
54264790Sbapt#define yylhs      error_lhs
55264790Sbapt#endif /* yylhs */
56264790Sbapt
57264790Sbapt#ifndef yylen
58264790Sbapt#define yylen      error_len
59264790Sbapt#endif /* yylen */
60264790Sbapt
61264790Sbapt#ifndef yydefred
62264790Sbapt#define yydefred   error_defred
63264790Sbapt#endif /* yydefred */
64264790Sbapt
65264790Sbapt#ifndef yydgoto
66264790Sbapt#define yydgoto    error_dgoto
67264790Sbapt#endif /* yydgoto */
68264790Sbapt
69264790Sbapt#ifndef yysindex
70264790Sbapt#define yysindex   error_sindex
71264790Sbapt#endif /* yysindex */
72264790Sbapt
73264790Sbapt#ifndef yyrindex
74264790Sbapt#define yyrindex   error_rindex
75264790Sbapt#endif /* yyrindex */
76264790Sbapt
77264790Sbapt#ifndef yygindex
78264790Sbapt#define yygindex   error_gindex
79264790Sbapt#endif /* yygindex */
80264790Sbapt
81264790Sbapt#ifndef yytable
82264790Sbapt#define yytable    error_table
83264790Sbapt#endif /* yytable */
84264790Sbapt
85264790Sbapt#ifndef yycheck
86264790Sbapt#define yycheck    error_check
87264790Sbapt#endif /* yycheck */
88264790Sbapt
89264790Sbapt#ifndef yyname
90264790Sbapt#define yyname     error_name
91264790Sbapt#endif /* yyname */
92264790Sbapt
93264790Sbapt#ifndef yyrule
94264790Sbapt#define yyrule     error_rule
95264790Sbapt#endif /* yyrule */
96264790Sbapt#define YYPREFIX "error_"
97264790Sbapt
98264790Sbapt#define YYPURE 0
99264790Sbapt
100264790Sbapt#line 2 "code_error.y"
101264790Sbapt
102264790Sbapt#ifdef YYBISON
103264790Sbaptint yylex(void);
104264790Sbaptstatic void yyerror(const char *);
105264790Sbapt#endif
106264790Sbapt
107264790Sbapt#line 108 "code_error.code.c"
108264790Sbapt
109264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
110264790Sbapt/* Default: YYSTYPE is the semantic value type. */
111264790Sbapttypedef int YYSTYPE;
112264790Sbapt# define YYSTYPE_IS_DECLARED 1
113264790Sbapt#endif
114264790Sbapt
115264790Sbapt/* compatibility with bison */
116264790Sbapt#ifdef YYPARSE_PARAM
117264790Sbapt/* compatibility with FreeBSD */
118264790Sbapt# ifdef YYPARSE_PARAM_TYPE
119264790Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
120264790Sbapt# else
121264790Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
122264790Sbapt# endif
123264790Sbapt#else
124264790Sbapt# define YYPARSE_DECL() yyparse(void)
125264790Sbapt#endif
126264790Sbapt
127264790Sbapt/* Parameters sent to lex. */
128264790Sbapt#ifdef YYLEX_PARAM
129264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
130264790Sbapt# define YYLEX yylex(YYLEX_PARAM)
131264790Sbapt#else
132264790Sbapt# define YYLEX_DECL() yylex(void)
133264790Sbapt# define YYLEX yylex()
134264790Sbapt#endif
135264790Sbapt
136264790Sbapt/* Parameters sent to yyerror. */
137264790Sbapt#ifndef YYERROR_DECL
138264790Sbapt#define YYERROR_DECL() yyerror(const char *s)
139264790Sbapt#endif
140264790Sbapt#ifndef YYERROR_CALL
141264790Sbapt#define YYERROR_CALL(msg) yyerror(msg)
142264790Sbapt#endif
143264790Sbapt
144264790Sbapt#define YYERRCODE 256
145264790Sbapt#define YYTABLESIZE 0
146264790Sbapt#define YYFINAL 2
147264790Sbapt#ifndef YYDEBUG
148264790Sbapt#define YYDEBUG 0
149264790Sbapt#endif
150264790Sbapt#define YYMAXTOKEN 256
151264790Sbapt#define YYUNDFTOKEN 259
152264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
153264790Sbapt
154264790Sbaptextern int YYPARSE_DECL();
155264790Sbapttypedef short YYINT;
156264790Sbaptextern YYINT yylhs[];
157264790Sbaptextern YYINT yylen[];
158264790Sbaptextern YYINT yydefred[];
159264790Sbaptextern YYINT yydgoto[];
160264790Sbaptextern YYINT yysindex[];
161264790Sbaptextern YYINT yyrindex[];
162264790Sbaptextern YYINT yygindex[];
163264790Sbaptextern YYINT yytable[];
164264790Sbaptextern YYINT yycheck[];
165264790Sbapt
166264790Sbapt#if YYDEBUG
167264790Sbaptextern char *yyname[];
168264790Sbaptextern char *yyrule[];
169264790Sbapt#endif
170264790Sbapt
171264790Sbaptint      yydebug;
172264790Sbaptint      yynerrs;
173264790Sbapt
174264790Sbaptint      yyerrflag;
175264790Sbaptint      yychar;
176264790SbaptYYSTYPE  yyval;
177264790SbaptYYSTYPE  yylval;
178264790Sbapt
179264790Sbapt/* define the initial stack-sizes */
180264790Sbapt#ifdef YYSTACKSIZE
181264790Sbapt#undef YYMAXDEPTH
182264790Sbapt#define YYMAXDEPTH  YYSTACKSIZE
183264790Sbapt#else
184264790Sbapt#ifdef YYMAXDEPTH
185264790Sbapt#define YYSTACKSIZE YYMAXDEPTH
186264790Sbapt#else
187264790Sbapt#define YYSTACKSIZE 10000
188264790Sbapt#define YYMAXDEPTH  10000
189264790Sbapt#endif
190264790Sbapt#endif
191264790Sbapt
192264790Sbapt#define YYINITSTACKSIZE 200
193264790Sbapt
194264790Sbapttypedef struct {
195264790Sbapt    unsigned stacksize;
196264790Sbapt    YYINT    *s_base;
197264790Sbapt    YYINT    *s_mark;
198264790Sbapt    YYINT    *s_last;
199264790Sbapt    YYSTYPE  *l_base;
200264790Sbapt    YYSTYPE  *l_mark;
201264790Sbapt} YYSTACKDATA;
202264790Sbapt/* variables for the parser stack */
203264790Sbaptstatic YYSTACKDATA yystack;
204264790Sbapt#line 12 "code_error.y"
205264790Sbapt
206264790Sbapt#include <stdio.h>
207264790Sbapt
208264790Sbapt#ifdef YYBYACC
209264790Sbaptextern int YYLEX_DECL();
210264790Sbapt#endif
211264790Sbapt
212264790Sbaptint
213264790Sbaptmain(void)
214264790Sbapt{
215264790Sbapt    printf("yyparse() = %d\n", yyparse());
216264790Sbapt    return 0;
217264790Sbapt}
218264790Sbapt
219264790Sbaptint
220264790Sbaptyylex(void)
221264790Sbapt{
222264790Sbapt    return -1;
223264790Sbapt}
224264790Sbapt
225264790Sbaptstatic void
226264790Sbaptyyerror(const char* s)
227264790Sbapt{
228264790Sbapt    printf("%s\n", s);
229264790Sbapt}
230264790Sbapt#line 231 "code_error.code.c"
231264790Sbapt
232264790Sbapt#if YYDEBUG
233264790Sbapt#include <stdio.h>		/* needed for printf */
234264790Sbapt#endif
235264790Sbapt
236264790Sbapt#include <stdlib.h>	/* needed for malloc, etc */
237264790Sbapt#include <string.h>	/* needed for memset */
238264790Sbapt
239264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
240264790Sbaptstatic int yygrowstack(YYSTACKDATA *data)
241264790Sbapt{
242264790Sbapt    int i;
243264790Sbapt    unsigned newsize;
244264790Sbapt    YYINT *newss;
245264790Sbapt    YYSTYPE *newvs;
246264790Sbapt
247264790Sbapt    if ((newsize = data->stacksize) == 0)
248264790Sbapt        newsize = YYINITSTACKSIZE;
249264790Sbapt    else if (newsize >= YYMAXDEPTH)
250264790Sbapt        return YYENOMEM;
251264790Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
252264790Sbapt        newsize = YYMAXDEPTH;
253264790Sbapt
254264790Sbapt    i = (int) (data->s_mark - data->s_base);
255264790Sbapt    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
256264790Sbapt    if (newss == 0)
257264790Sbapt        return YYENOMEM;
258264790Sbapt
259264790Sbapt    data->s_base = newss;
260264790Sbapt    data->s_mark = newss + i;
261264790Sbapt
262264790Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
263264790Sbapt    if (newvs == 0)
264264790Sbapt        return YYENOMEM;
265264790Sbapt
266264790Sbapt    data->l_base = newvs;
267264790Sbapt    data->l_mark = newvs + i;
268264790Sbapt
269264790Sbapt    data->stacksize = newsize;
270264790Sbapt    data->s_last = data->s_base + newsize - 1;
271264790Sbapt    return 0;
272264790Sbapt}
273264790Sbapt
274264790Sbapt#if YYPURE || defined(YY_NO_LEAKS)
275264790Sbaptstatic void yyfreestack(YYSTACKDATA *data)
276264790Sbapt{
277264790Sbapt    free(data->s_base);
278264790Sbapt    free(data->l_base);
279264790Sbapt    memset(data, 0, sizeof(*data));
280264790Sbapt}
281264790Sbapt#else
282264790Sbapt#define yyfreestack(data) /* nothing */
283264790Sbapt#endif
284264790Sbapt
285264790Sbapt#define YYABORT  goto yyabort
286264790Sbapt#define YYREJECT goto yyabort
287264790Sbapt#define YYACCEPT goto yyaccept
288264790Sbapt#define YYERROR  goto yyerrlab
289264790Sbapt
290264790Sbaptint
291264790SbaptYYPARSE_DECL()
292264790Sbapt{
293264790Sbapt    int yym, yyn, yystate;
294264790Sbapt#if YYDEBUG
295264790Sbapt    const char *yys;
296264790Sbapt
297264790Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
298264790Sbapt    {
299264790Sbapt        yyn = *yys;
300264790Sbapt        if (yyn >= '0' && yyn <= '9')
301264790Sbapt            yydebug = yyn - '0';
302264790Sbapt    }
303264790Sbapt#endif
304264790Sbapt
305264790Sbapt    yynerrs = 0;
306264790Sbapt    yyerrflag = 0;
307264790Sbapt    yychar = YYEMPTY;
308264790Sbapt    yystate = 0;
309264790Sbapt
310264790Sbapt#if YYPURE
311264790Sbapt    memset(&yystack, 0, sizeof(yystack));
312264790Sbapt#endif
313264790Sbapt
314264790Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
315264790Sbapt    yystack.s_mark = yystack.s_base;
316264790Sbapt    yystack.l_mark = yystack.l_base;
317264790Sbapt    yystate = 0;
318264790Sbapt    *yystack.s_mark = 0;
319264790Sbapt
320264790Sbaptyyloop:
321264790Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
322264790Sbapt    if (yychar < 0)
323264790Sbapt    {
324264790Sbapt        if ((yychar = YYLEX) < 0) yychar = YYEOF;
325264790Sbapt#if YYDEBUG
326264790Sbapt        if (yydebug)
327264790Sbapt        {
328264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
329264790Sbapt            printf("%sdebug: state %d, reading %d (%s)\n",
330264790Sbapt                    YYPREFIX, yystate, yychar, yys);
331264790Sbapt        }
332264790Sbapt#endif
333264790Sbapt    }
334264790Sbapt    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
335264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
336264790Sbapt    {
337264790Sbapt#if YYDEBUG
338264790Sbapt        if (yydebug)
339264790Sbapt            printf("%sdebug: state %d, shifting to state %d\n",
340264790Sbapt                    YYPREFIX, yystate, yytable[yyn]);
341264790Sbapt#endif
342264790Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
343264790Sbapt        {
344264790Sbapt            goto yyoverflow;
345264790Sbapt        }
346264790Sbapt        yystate = yytable[yyn];
347264790Sbapt        *++yystack.s_mark = yytable[yyn];
348264790Sbapt        *++yystack.l_mark = yylval;
349264790Sbapt        yychar = YYEMPTY;
350264790Sbapt        if (yyerrflag > 0)  --yyerrflag;
351264790Sbapt        goto yyloop;
352264790Sbapt    }
353264790Sbapt    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
354264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
355264790Sbapt    {
356264790Sbapt        yyn = yytable[yyn];
357264790Sbapt        goto yyreduce;
358264790Sbapt    }
359264790Sbapt    if (yyerrflag) goto yyinrecovery;
360264790Sbapt
361264790Sbapt    YYERROR_CALL("syntax error");
362264790Sbapt
363264790Sbapt    goto yyerrlab;
364264790Sbapt
365264790Sbaptyyerrlab:
366264790Sbapt    ++yynerrs;
367264790Sbapt
368264790Sbaptyyinrecovery:
369264790Sbapt    if (yyerrflag < 3)
370264790Sbapt    {
371264790Sbapt        yyerrflag = 3;
372264790Sbapt        for (;;)
373264790Sbapt        {
374264790Sbapt            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
375264790Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
376264790Sbapt            {
377264790Sbapt#if YYDEBUG
378264790Sbapt                if (yydebug)
379264790Sbapt                    printf("%sdebug: state %d, error recovery shifting\
380264790Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
381264790Sbapt#endif
382264790Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
383264790Sbapt                {
384264790Sbapt                    goto yyoverflow;
385264790Sbapt                }
386264790Sbapt                yystate = yytable[yyn];
387264790Sbapt                *++yystack.s_mark = yytable[yyn];
388264790Sbapt                *++yystack.l_mark = yylval;
389264790Sbapt                goto yyloop;
390264790Sbapt            }
391264790Sbapt            else
392264790Sbapt            {
393264790Sbapt#if YYDEBUG
394264790Sbapt                if (yydebug)
395264790Sbapt                    printf("%sdebug: error recovery discarding state %d\n",
396264790Sbapt                            YYPREFIX, *yystack.s_mark);
397264790Sbapt#endif
398264790Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
399264790Sbapt                --yystack.s_mark;
400264790Sbapt                --yystack.l_mark;
401264790Sbapt            }
402264790Sbapt        }
403264790Sbapt    }
404264790Sbapt    else
405264790Sbapt    {
406264790Sbapt        if (yychar == YYEOF) goto yyabort;
407264790Sbapt#if YYDEBUG
408264790Sbapt        if (yydebug)
409264790Sbapt        {
410264790Sbapt            yys = yyname[YYTRANSLATE(yychar)];
411264790Sbapt            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
412264790Sbapt                    YYPREFIX, yystate, yychar, yys);
413264790Sbapt        }
414264790Sbapt#endif
415264790Sbapt        yychar = YYEMPTY;
416264790Sbapt        goto yyloop;
417264790Sbapt    }
418264790Sbapt
419264790Sbaptyyreduce:
420264790Sbapt#if YYDEBUG
421264790Sbapt    if (yydebug)
422264790Sbapt        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
423264790Sbapt                YYPREFIX, yystate, yyn, yyrule[yyn]);
424264790Sbapt#endif
425264790Sbapt    yym = yylen[yyn];
426264790Sbapt    if (yym)
427264790Sbapt        yyval = yystack.l_mark[1-yym];
428264790Sbapt    else
429264790Sbapt        memset(&yyval, 0, sizeof yyval);
430264790Sbapt    switch (yyn)
431264790Sbapt    {
432264790Sbapt    }
433264790Sbapt    yystack.s_mark -= yym;
434264790Sbapt    yystate = *yystack.s_mark;
435264790Sbapt    yystack.l_mark -= yym;
436264790Sbapt    yym = yylhs[yyn];
437264790Sbapt    if (yystate == 0 && yym == 0)
438264790Sbapt    {
439264790Sbapt#if YYDEBUG
440264790Sbapt        if (yydebug)
441264790Sbapt            printf("%sdebug: after reduction, shifting from state 0 to\
442264790Sbapt state %d\n", YYPREFIX, YYFINAL);
443264790Sbapt#endif
444264790Sbapt        yystate = YYFINAL;
445264790Sbapt        *++yystack.s_mark = YYFINAL;
446264790Sbapt        *++yystack.l_mark = yyval;
447264790Sbapt        if (yychar < 0)
448264790Sbapt        {
449264790Sbapt            if ((yychar = YYLEX) < 0) yychar = YYEOF;
450264790Sbapt#if YYDEBUG
451264790Sbapt            if (yydebug)
452264790Sbapt            {
453264790Sbapt                yys = yyname[YYTRANSLATE(yychar)];
454264790Sbapt                printf("%sdebug: state %d, reading %d (%s)\n",
455264790Sbapt                        YYPREFIX, YYFINAL, yychar, yys);
456264790Sbapt            }
457264790Sbapt#endif
458264790Sbapt        }
459264790Sbapt        if (yychar == YYEOF) goto yyaccept;
460264790Sbapt        goto yyloop;
461264790Sbapt    }
462264790Sbapt    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
463264790Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
464264790Sbapt        yystate = yytable[yyn];
465264790Sbapt    else
466264790Sbapt        yystate = yydgoto[yym];
467264790Sbapt#if YYDEBUG
468264790Sbapt    if (yydebug)
469264790Sbapt        printf("%sdebug: after reduction, shifting from state %d \
470264790Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate);
471264790Sbapt#endif
472264790Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
473264790Sbapt    {
474264790Sbapt        goto yyoverflow;
475264790Sbapt    }
476264790Sbapt    *++yystack.s_mark = (YYINT) yystate;
477264790Sbapt    *++yystack.l_mark = yyval;
478264790Sbapt    goto yyloop;
479264790Sbapt
480264790Sbaptyyoverflow:
481264790Sbapt    YYERROR_CALL("yacc stack overflow");
482264790Sbapt
483264790Sbaptyyabort:
484264790Sbapt    yyfreestack(&yystack);
485264790Sbapt    return (1);
486264790Sbapt
487264790Sbaptyyaccept:
488264790Sbapt    yyfreestack(&yystack);
489264790Sbapt    return (0);
490264790Sbapt}
491