1234949Sbapt#ifndef lint
2234949Sbaptstatic const char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
3234949Sbapt#endif
4234949Sbapt
5234949Sbapt#define YYBYACC 1
6234949Sbapt#define YYMAJOR 1
7234949Sbapt#define YYMINOR 9
8234949Sbapt
9234949Sbapt#define YYEMPTY        (-1)
10234949Sbapt#define yyclearin      (yychar = YYEMPTY)
11234949Sbapt#define yyerrok        (yyerrflag = 0)
12234949Sbapt#define YYRECOVERING() (yyerrflag != 0)
13234949Sbapt
14234949Sbapt
15234949Sbapt#define YYPURE 0
16234949Sbapt
17234949Sbapt#line 2 "code_error.y"
18234949Sbapt
19234949Sbapt#ifdef YYBISON
20234949Sbaptint yylex(void);
21234949Sbaptstatic void yyerror(const char *);
22234949Sbapt#endif
23234949Sbapt
24234949Sbapt#line 25 "code_error.code.c"
25234949Sbapt
26234949Sbapt#ifndef YYSTYPE
27234949Sbapttypedef int YYSTYPE;
28234949Sbapt#endif
29234949Sbapt
30234949Sbapt/* compatibility with bison */
31234949Sbapt#ifdef YYPARSE_PARAM
32234949Sbapt/* compatibility with FreeBSD */
33234949Sbapt# ifdef YYPARSE_PARAM_TYPE
34234949Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
35234949Sbapt# else
36234949Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
37234949Sbapt# endif
38234949Sbapt#else
39234949Sbapt# define YYPARSE_DECL() yyparse(void)
40234949Sbapt#endif
41234949Sbapt
42234949Sbapt/* Parameters sent to lex. */
43234949Sbapt#ifdef YYLEX_PARAM
44234949Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
45234949Sbapt# define YYLEX yylex(YYLEX_PARAM)
46234949Sbapt#else
47234949Sbapt# define YYLEX_DECL() yylex(void)
48234949Sbapt# define YYLEX yylex()
49234949Sbapt#endif
50234949Sbapt
51234949Sbapt/* Parameters sent to yyerror. */
52234949Sbapt#ifndef YYERROR_DECL
53234949Sbapt#define YYERROR_DECL() yyerror(const char *s)
54234949Sbapt#endif
55234949Sbapt#ifndef YYERROR_CALL
56234949Sbapt#define YYERROR_CALL(msg) yyerror(msg)
57234949Sbapt#endif
58234949Sbapt
59234949Sbaptextern int YYPARSE_DECL();
60234949Sbapt
61234949Sbapt#define YYERRCODE 256
62234949Sbapt#define YYTABLESIZE 0
63234949Sbapt#define YYFINAL 2
64234949Sbapt#ifndef YYDEBUG
65234949Sbapt#define YYDEBUG 0
66234949Sbapt#endif
67234949Sbapt#define YYMAXTOKEN 0
68234949Sbapt
69234949Sbapt#ifndef yyparse
70234949Sbapt#define yyparse    error_parse
71234949Sbapt#endif /* yyparse */
72234949Sbapt
73234949Sbapt#ifndef yylex
74234949Sbapt#define yylex      error_lex
75234949Sbapt#endif /* yylex */
76234949Sbapt
77234949Sbapt#ifndef yyerror
78234949Sbapt#define yyerror    error_error
79234949Sbapt#endif /* yyerror */
80234949Sbapt
81234949Sbapt#ifndef yychar
82234949Sbapt#define yychar     error_char
83234949Sbapt#endif /* yychar */
84234949Sbapt
85234949Sbapt#ifndef yyval
86234949Sbapt#define yyval      error_val
87234949Sbapt#endif /* yyval */
88234949Sbapt
89234949Sbapt#ifndef yylval
90234949Sbapt#define yylval     error_lval
91234949Sbapt#endif /* yylval */
92234949Sbapt
93234949Sbapt#ifndef yydebug
94234949Sbapt#define yydebug    error_debug
95234949Sbapt#endif /* yydebug */
96234949Sbapt
97234949Sbapt#ifndef yynerrs
98234949Sbapt#define yynerrs    error_nerrs
99234949Sbapt#endif /* yynerrs */
100234949Sbapt
101234949Sbapt#ifndef yyerrflag
102234949Sbapt#define yyerrflag  error_errflag
103234949Sbapt#endif /* yyerrflag */
104234949Sbapt
105234949Sbapt#ifndef yylhs
106234949Sbapt#define yylhs      error_lhs
107234949Sbapt#endif /* yylhs */
108234949Sbapt
109234949Sbapt#ifndef yylen
110234949Sbapt#define yylen      error_len
111234949Sbapt#endif /* yylen */
112234949Sbapt
113234949Sbapt#ifndef yydefred
114234949Sbapt#define yydefred   error_defred
115234949Sbapt#endif /* yydefred */
116234949Sbapt
117234949Sbapt#ifndef yydgoto
118234949Sbapt#define yydgoto    error_dgoto
119234949Sbapt#endif /* yydgoto */
120234949Sbapt
121234949Sbapt#ifndef yysindex
122234949Sbapt#define yysindex   error_sindex
123234949Sbapt#endif /* yysindex */
124234949Sbapt
125234949Sbapt#ifndef yyrindex
126234949Sbapt#define yyrindex   error_rindex
127234949Sbapt#endif /* yyrindex */
128234949Sbapt
129234949Sbapt#ifndef yygindex
130234949Sbapt#define yygindex   error_gindex
131234949Sbapt#endif /* yygindex */
132234949Sbapt
133234949Sbapt#ifndef yytable
134234949Sbapt#define yytable    error_table
135234949Sbapt#endif /* yytable */
136234949Sbapt
137234949Sbapt#ifndef yycheck
138234949Sbapt#define yycheck    error_check
139234949Sbapt#endif /* yycheck */
140234949Sbapt
141234949Sbapt#ifndef yyname
142234949Sbapt#define yyname     error_name
143234949Sbapt#endif /* yyname */
144234949Sbapt
145234949Sbapt#ifndef yyrule
146234949Sbapt#define yyrule     error_rule
147234949Sbapt#endif /* yyrule */
148234949Sbapt#define YYPREFIX "error_"
149234949Sbapt
150234949Sbaptextern int YYPARSE_DECL();
151234949Sbaptextern short yylhs[];
152234949Sbaptextern short yylen[];
153234949Sbaptextern short yydefred[];
154234949Sbaptextern short yydgoto[];
155234949Sbaptextern short yysindex[];
156234949Sbaptextern short yyrindex[];
157234949Sbaptextern short yygindex[];
158234949Sbaptextern short yytable[];
159234949Sbaptextern short yycheck[];
160234949Sbapt
161234949Sbapt#if YYDEBUG
162234949Sbaptextern char *yyname[];
163234949Sbaptextern char *yyrule[];
164234949Sbapt#endif
165234949Sbapt
166234949Sbaptint      yydebug;
167234949Sbaptint      yynerrs;
168234949Sbapt
169234949Sbaptint      yyerrflag;
170234949Sbaptint      yychar;
171234949SbaptYYSTYPE  yyval;
172234949SbaptYYSTYPE  yylval;
173234949Sbapt
174234949Sbapt/* define the initial stack-sizes */
175234949Sbapt#ifdef YYSTACKSIZE
176234949Sbapt#undef YYMAXDEPTH
177234949Sbapt#define YYMAXDEPTH  YYSTACKSIZE
178234949Sbapt#else
179234949Sbapt#ifdef YYMAXDEPTH
180234949Sbapt#define YYSTACKSIZE YYMAXDEPTH
181234949Sbapt#else
182234949Sbapt#define YYSTACKSIZE 500
183234949Sbapt#define YYMAXDEPTH  500
184234949Sbapt#endif
185234949Sbapt#endif
186234949Sbapt
187234949Sbapt#define YYINITSTACKSIZE 500
188234949Sbapt
189234949Sbapttypedef struct {
190234949Sbapt    unsigned stacksize;
191234949Sbapt    short    *s_base;
192234949Sbapt    short    *s_mark;
193234949Sbapt    short    *s_last;
194234949Sbapt    YYSTYPE  *l_base;
195234949Sbapt    YYSTYPE  *l_mark;
196234949Sbapt} YYSTACKDATA;
197234949Sbapt/* variables for the parser stack */
198234949Sbaptstatic YYSTACKDATA yystack;
199234949Sbapt#line 12 "code_error.y"
200234949Sbapt
201234949Sbapt#include <stdio.h>
202234949Sbapt
203234949Sbapt#ifdef YYBYACC
204234949Sbaptextern int YYLEX_DECL();
205234949Sbapt#endif
206234949Sbapt
207234949Sbaptint
208234949Sbaptmain(void)
209234949Sbapt{
210234949Sbapt    printf("yyparse() = %d\n", yyparse());
211234949Sbapt    return 0;
212234949Sbapt}
213234949Sbapt
214234949Sbaptint
215234949Sbaptyylex(void)
216234949Sbapt{
217234949Sbapt    return -1;
218234949Sbapt}
219234949Sbapt
220234949Sbaptstatic void
221234949Sbaptyyerror(const char* s)
222234949Sbapt{
223234949Sbapt    printf("%s\n", s);
224234949Sbapt}
225234949Sbapt#line 226 "code_error.code.c"
226234949Sbapt
227234949Sbapt#if YYDEBUG
228234949Sbapt#include <stdio.h>		/* needed for printf */
229234949Sbapt#endif
230234949Sbapt
231234949Sbapt#include <stdlib.h>	/* needed for malloc, etc */
232234949Sbapt#include <string.h>	/* needed for memset */
233234949Sbapt
234234949Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
235234949Sbaptstatic int yygrowstack(YYSTACKDATA *data)
236234949Sbapt{
237234949Sbapt    int i;
238234949Sbapt    unsigned newsize;
239234949Sbapt    short *newss;
240234949Sbapt    YYSTYPE *newvs;
241234949Sbapt
242234949Sbapt    if ((newsize = data->stacksize) == 0)
243234949Sbapt        newsize = YYINITSTACKSIZE;
244234949Sbapt    else if (newsize >= YYMAXDEPTH)
245234949Sbapt        return -1;
246234949Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
247234949Sbapt        newsize = YYMAXDEPTH;
248234949Sbapt
249251143Sbapt    i = (int) (data->s_mark - data->s_base);
250234949Sbapt    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
251234949Sbapt    if (newss == 0)
252234949Sbapt        return -1;
253234949Sbapt
254234949Sbapt    data->s_base = newss;
255234949Sbapt    data->s_mark = newss + i;
256234949Sbapt
257234949Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
258234949Sbapt    if (newvs == 0)
259234949Sbapt        return -1;
260234949Sbapt
261234949Sbapt    data->l_base = newvs;
262234949Sbapt    data->l_mark = newvs + i;
263234949Sbapt
264234949Sbapt    data->stacksize = newsize;
265234949Sbapt    data->s_last = data->s_base + newsize - 1;
266234949Sbapt    return 0;
267234949Sbapt}
268234949Sbapt
269234949Sbapt#if YYPURE || defined(YY_NO_LEAKS)
270234949Sbaptstatic void yyfreestack(YYSTACKDATA *data)
271234949Sbapt{
272234949Sbapt    free(data->s_base);
273234949Sbapt    free(data->l_base);
274234949Sbapt    memset(data, 0, sizeof(*data));
275234949Sbapt}
276234949Sbapt#else
277234949Sbapt#define yyfreestack(data) /* nothing */
278234949Sbapt#endif
279234949Sbapt
280234949Sbapt#define YYABORT  goto yyabort
281234949Sbapt#define YYREJECT goto yyabort
282234949Sbapt#define YYACCEPT goto yyaccept
283234949Sbapt#define YYERROR  goto yyerrlab
284234949Sbapt
285234949Sbaptint
286234949SbaptYYPARSE_DECL()
287234949Sbapt{
288234949Sbapt    int yym, yyn, yystate;
289234949Sbapt#if YYDEBUG
290234949Sbapt    const char *yys;
291234949Sbapt
292234949Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
293234949Sbapt    {
294234949Sbapt        yyn = *yys;
295234949Sbapt        if (yyn >= '0' && yyn <= '9')
296234949Sbapt            yydebug = yyn - '0';
297234949Sbapt    }
298234949Sbapt#endif
299234949Sbapt
300234949Sbapt    yynerrs = 0;
301234949Sbapt    yyerrflag = 0;
302234949Sbapt    yychar = YYEMPTY;
303234949Sbapt    yystate = 0;
304234949Sbapt
305234949Sbapt#if YYPURE
306234949Sbapt    memset(&yystack, 0, sizeof(yystack));
307234949Sbapt#endif
308234949Sbapt
309234949Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
310234949Sbapt    yystack.s_mark = yystack.s_base;
311234949Sbapt    yystack.l_mark = yystack.l_base;
312234949Sbapt    yystate = 0;
313234949Sbapt    *yystack.s_mark = 0;
314234949Sbapt
315234949Sbaptyyloop:
316234949Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
317234949Sbapt    if (yychar < 0)
318234949Sbapt    {
319234949Sbapt        if ((yychar = YYLEX) < 0) yychar = 0;
320234949Sbapt#if YYDEBUG
321234949Sbapt        if (yydebug)
322234949Sbapt        {
323234949Sbapt            yys = 0;
324234949Sbapt            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
325234949Sbapt            if (!yys) yys = "illegal-symbol";
326234949Sbapt            printf("%sdebug: state %d, reading %d (%s)\n",
327234949Sbapt                    YYPREFIX, yystate, yychar, yys);
328234949Sbapt        }
329234949Sbapt#endif
330234949Sbapt    }
331234949Sbapt    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
332234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
333234949Sbapt    {
334234949Sbapt#if YYDEBUG
335234949Sbapt        if (yydebug)
336234949Sbapt            printf("%sdebug: state %d, shifting to state %d\n",
337234949Sbapt                    YYPREFIX, yystate, yytable[yyn]);
338234949Sbapt#endif
339234949Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
340234949Sbapt        {
341234949Sbapt            goto yyoverflow;
342234949Sbapt        }
343234949Sbapt        yystate = yytable[yyn];
344234949Sbapt        *++yystack.s_mark = yytable[yyn];
345234949Sbapt        *++yystack.l_mark = yylval;
346234949Sbapt        yychar = YYEMPTY;
347234949Sbapt        if (yyerrflag > 0)  --yyerrflag;
348234949Sbapt        goto yyloop;
349234949Sbapt    }
350234949Sbapt    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
351234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
352234949Sbapt    {
353234949Sbapt        yyn = yytable[yyn];
354234949Sbapt        goto yyreduce;
355234949Sbapt    }
356234949Sbapt    if (yyerrflag) goto yyinrecovery;
357234949Sbapt
358234949Sbapt    yyerror("syntax error");
359234949Sbapt
360234949Sbapt    goto yyerrlab;
361234949Sbapt
362234949Sbaptyyerrlab:
363234949Sbapt    ++yynerrs;
364234949Sbapt
365234949Sbaptyyinrecovery:
366234949Sbapt    if (yyerrflag < 3)
367234949Sbapt    {
368234949Sbapt        yyerrflag = 3;
369234949Sbapt        for (;;)
370234949Sbapt        {
371234949Sbapt            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
372234949Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
373234949Sbapt            {
374234949Sbapt#if YYDEBUG
375234949Sbapt                if (yydebug)
376234949Sbapt                    printf("%sdebug: state %d, error recovery shifting\
377234949Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
378234949Sbapt#endif
379234949Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
380234949Sbapt                {
381234949Sbapt                    goto yyoverflow;
382234949Sbapt                }
383234949Sbapt                yystate = yytable[yyn];
384234949Sbapt                *++yystack.s_mark = yytable[yyn];
385234949Sbapt                *++yystack.l_mark = yylval;
386234949Sbapt                goto yyloop;
387234949Sbapt            }
388234949Sbapt            else
389234949Sbapt            {
390234949Sbapt#if YYDEBUG
391234949Sbapt                if (yydebug)
392234949Sbapt                    printf("%sdebug: error recovery discarding state %d\n",
393234949Sbapt                            YYPREFIX, *yystack.s_mark);
394234949Sbapt#endif
395234949Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
396234949Sbapt                --yystack.s_mark;
397234949Sbapt                --yystack.l_mark;
398234949Sbapt            }
399234949Sbapt        }
400234949Sbapt    }
401234949Sbapt    else
402234949Sbapt    {
403234949Sbapt        if (yychar == 0) goto yyabort;
404234949Sbapt#if YYDEBUG
405234949Sbapt        if (yydebug)
406234949Sbapt        {
407234949Sbapt            yys = 0;
408234949Sbapt            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
409234949Sbapt            if (!yys) yys = "illegal-symbol";
410234949Sbapt            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
411234949Sbapt                    YYPREFIX, yystate, yychar, yys);
412234949Sbapt        }
413234949Sbapt#endif
414234949Sbapt        yychar = YYEMPTY;
415234949Sbapt        goto yyloop;
416234949Sbapt    }
417234949Sbapt
418234949Sbaptyyreduce:
419234949Sbapt#if YYDEBUG
420234949Sbapt    if (yydebug)
421234949Sbapt        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
422234949Sbapt                YYPREFIX, yystate, yyn, yyrule[yyn]);
423234949Sbapt#endif
424234949Sbapt    yym = yylen[yyn];
425234949Sbapt    if (yym)
426234949Sbapt        yyval = yystack.l_mark[1-yym];
427234949Sbapt    else
428234949Sbapt        memset(&yyval, 0, sizeof yyval);
429234949Sbapt    switch (yyn)
430234949Sbapt    {
431234949Sbapt    }
432234949Sbapt    yystack.s_mark -= yym;
433234949Sbapt    yystate = *yystack.s_mark;
434234949Sbapt    yystack.l_mark -= yym;
435234949Sbapt    yym = yylhs[yyn];
436234949Sbapt    if (yystate == 0 && yym == 0)
437234949Sbapt    {
438234949Sbapt#if YYDEBUG
439234949Sbapt        if (yydebug)
440234949Sbapt            printf("%sdebug: after reduction, shifting from state 0 to\
441234949Sbapt state %d\n", YYPREFIX, YYFINAL);
442234949Sbapt#endif
443234949Sbapt        yystate = YYFINAL;
444234949Sbapt        *++yystack.s_mark = YYFINAL;
445234949Sbapt        *++yystack.l_mark = yyval;
446234949Sbapt        if (yychar < 0)
447234949Sbapt        {
448234949Sbapt            if ((yychar = YYLEX) < 0) yychar = 0;
449234949Sbapt#if YYDEBUG
450234949Sbapt            if (yydebug)
451234949Sbapt            {
452234949Sbapt                yys = 0;
453234949Sbapt                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
454234949Sbapt                if (!yys) yys = "illegal-symbol";
455234949Sbapt                printf("%sdebug: state %d, reading %d (%s)\n",
456234949Sbapt                        YYPREFIX, YYFINAL, yychar, yys);
457234949Sbapt            }
458234949Sbapt#endif
459234949Sbapt        }
460234949Sbapt        if (yychar == 0) goto yyaccept;
461234949Sbapt        goto yyloop;
462234949Sbapt    }
463234949Sbapt    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
464234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
465234949Sbapt        yystate = yytable[yyn];
466234949Sbapt    else
467234949Sbapt        yystate = yydgoto[yym];
468234949Sbapt#if YYDEBUG
469234949Sbapt    if (yydebug)
470234949Sbapt        printf("%sdebug: after reduction, shifting from state %d \
471234949Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate);
472234949Sbapt#endif
473234949Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
474234949Sbapt    {
475234949Sbapt        goto yyoverflow;
476234949Sbapt    }
477234949Sbapt    *++yystack.s_mark = (short) yystate;
478234949Sbapt    *++yystack.l_mark = yyval;
479234949Sbapt    goto yyloop;
480234949Sbapt
481234949Sbaptyyoverflow:
482234949Sbapt    yyerror("yacc stack overflow");
483234949Sbapt
484234949Sbaptyyabort:
485234949Sbapt    yyfreestack(&yystack);
486234949Sbapt    return (1);
487234949Sbapt
488234949Sbaptyyaccept:
489234949Sbapt    yyfreestack(&yystack);
490234949Sbapt    return (0);
491234949Sbapt}
492