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