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_calc.y"
18234949Sbapt# include <stdio.h>
19234949Sbapt# include <ctype.h>
20234949Sbapt
21234949Sbaptint regs[26];
22234949Sbaptint base;
23234949Sbapt
24234949Sbapt#ifdef YYBISON
25234949Sbaptint yylex(void);
26234949Sbaptstatic void yyerror(const char *s);
27234949Sbapt#endif
28234949Sbapt
29234949Sbapt#line 30 "code_calc.code.c"
30234949Sbapt
31234949Sbapt#ifndef YYSTYPE
32234949Sbapttypedef int YYSTYPE;
33234949Sbapt#endif
34234949Sbapt
35234949Sbapt/* compatibility with bison */
36234949Sbapt#ifdef YYPARSE_PARAM
37234949Sbapt/* compatibility with FreeBSD */
38234949Sbapt# ifdef YYPARSE_PARAM_TYPE
39234949Sbapt#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
40234949Sbapt# else
41234949Sbapt#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
42234949Sbapt# endif
43234949Sbapt#else
44234949Sbapt# define YYPARSE_DECL() yyparse(void)
45234949Sbapt#endif
46234949Sbapt
47234949Sbapt/* Parameters sent to lex. */
48234949Sbapt#ifdef YYLEX_PARAM
49234949Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
50234949Sbapt# define YYLEX yylex(YYLEX_PARAM)
51234949Sbapt#else
52234949Sbapt# define YYLEX_DECL() yylex(void)
53234949Sbapt# define YYLEX yylex()
54234949Sbapt#endif
55234949Sbapt
56234949Sbapt/* Parameters sent to yyerror. */
57234949Sbapt#ifndef YYERROR_DECL
58234949Sbapt#define YYERROR_DECL() yyerror(const char *s)
59234949Sbapt#endif
60234949Sbapt#ifndef YYERROR_CALL
61234949Sbapt#define YYERROR_CALL(msg) yyerror(msg)
62234949Sbapt#endif
63234949Sbapt
64234949Sbaptextern int YYPARSE_DECL();
65234949Sbapt
66234949Sbapt#define DIGIT 257
67234949Sbapt#define LETTER 258
68234949Sbapt#define UMINUS 259
69234949Sbapt#define YYERRCODE 256
70234949Sbapt#define YYTABLESIZE 220
71234949Sbapt#define YYFINAL 1
72234949Sbapt#ifndef YYDEBUG
73234949Sbapt#define YYDEBUG 0
74234949Sbapt#endif
75234949Sbapt#define YYMAXTOKEN 259
76234949Sbapt
77234949Sbapt#ifndef yyparse
78234949Sbapt#define yyparse    calc_parse
79234949Sbapt#endif /* yyparse */
80234949Sbapt
81234949Sbapt#ifndef yylex
82234949Sbapt#define yylex      calc_lex
83234949Sbapt#endif /* yylex */
84234949Sbapt
85234949Sbapt#ifndef yyerror
86234949Sbapt#define yyerror    calc_error
87234949Sbapt#endif /* yyerror */
88234949Sbapt
89234949Sbapt#ifndef yychar
90234949Sbapt#define yychar     calc_char
91234949Sbapt#endif /* yychar */
92234949Sbapt
93234949Sbapt#ifndef yyval
94234949Sbapt#define yyval      calc_val
95234949Sbapt#endif /* yyval */
96234949Sbapt
97234949Sbapt#ifndef yylval
98234949Sbapt#define yylval     calc_lval
99234949Sbapt#endif /* yylval */
100234949Sbapt
101234949Sbapt#ifndef yydebug
102234949Sbapt#define yydebug    calc_debug
103234949Sbapt#endif /* yydebug */
104234949Sbapt
105234949Sbapt#ifndef yynerrs
106234949Sbapt#define yynerrs    calc_nerrs
107234949Sbapt#endif /* yynerrs */
108234949Sbapt
109234949Sbapt#ifndef yyerrflag
110234949Sbapt#define yyerrflag  calc_errflag
111234949Sbapt#endif /* yyerrflag */
112234949Sbapt
113234949Sbapt#ifndef yylhs
114234949Sbapt#define yylhs      calc_lhs
115234949Sbapt#endif /* yylhs */
116234949Sbapt
117234949Sbapt#ifndef yylen
118234949Sbapt#define yylen      calc_len
119234949Sbapt#endif /* yylen */
120234949Sbapt
121234949Sbapt#ifndef yydefred
122234949Sbapt#define yydefred   calc_defred
123234949Sbapt#endif /* yydefred */
124234949Sbapt
125234949Sbapt#ifndef yydgoto
126234949Sbapt#define yydgoto    calc_dgoto
127234949Sbapt#endif /* yydgoto */
128234949Sbapt
129234949Sbapt#ifndef yysindex
130234949Sbapt#define yysindex   calc_sindex
131234949Sbapt#endif /* yysindex */
132234949Sbapt
133234949Sbapt#ifndef yyrindex
134234949Sbapt#define yyrindex   calc_rindex
135234949Sbapt#endif /* yyrindex */
136234949Sbapt
137234949Sbapt#ifndef yygindex
138234949Sbapt#define yygindex   calc_gindex
139234949Sbapt#endif /* yygindex */
140234949Sbapt
141234949Sbapt#ifndef yytable
142234949Sbapt#define yytable    calc_table
143234949Sbapt#endif /* yytable */
144234949Sbapt
145234949Sbapt#ifndef yycheck
146234949Sbapt#define yycheck    calc_check
147234949Sbapt#endif /* yycheck */
148234949Sbapt
149234949Sbapt#ifndef yyname
150234949Sbapt#define yyname     calc_name
151234949Sbapt#endif /* yyname */
152234949Sbapt
153234949Sbapt#ifndef yyrule
154234949Sbapt#define yyrule     calc_rule
155234949Sbapt#endif /* yyrule */
156234949Sbapt#define YYPREFIX "calc_"
157234949Sbapt
158234949Sbaptextern int YYPARSE_DECL();
159234949Sbaptextern short yylhs[];
160234949Sbaptextern short yylen[];
161234949Sbaptextern short yydefred[];
162234949Sbaptextern short yydgoto[];
163234949Sbaptextern short yysindex[];
164234949Sbaptextern short yyrindex[];
165234949Sbaptextern short yygindex[];
166234949Sbaptextern short yytable[];
167234949Sbaptextern short yycheck[];
168234949Sbapt
169234949Sbapt#if YYDEBUG
170234949Sbaptextern char *yyname[];
171234949Sbaptextern char *yyrule[];
172234949Sbapt#endif
173234949Sbapt
174234949Sbaptint      yydebug;
175234949Sbaptint      yynerrs;
176234949Sbapt
177234949Sbaptint      yyerrflag;
178234949Sbaptint      yychar;
179234949SbaptYYSTYPE  yyval;
180234949SbaptYYSTYPE  yylval;
181234949Sbapt
182234949Sbapt/* define the initial stack-sizes */
183234949Sbapt#ifdef YYSTACKSIZE
184234949Sbapt#undef YYMAXDEPTH
185234949Sbapt#define YYMAXDEPTH  YYSTACKSIZE
186234949Sbapt#else
187234949Sbapt#ifdef YYMAXDEPTH
188234949Sbapt#define YYSTACKSIZE YYMAXDEPTH
189234949Sbapt#else
190234949Sbapt#define YYSTACKSIZE 500
191234949Sbapt#define YYMAXDEPTH  500
192234949Sbapt#endif
193234949Sbapt#endif
194234949Sbapt
195234949Sbapt#define YYINITSTACKSIZE 500
196234949Sbapt
197234949Sbapttypedef struct {
198234949Sbapt    unsigned stacksize;
199234949Sbapt    short    *s_base;
200234949Sbapt    short    *s_mark;
201234949Sbapt    short    *s_last;
202234949Sbapt    YYSTYPE  *l_base;
203234949Sbapt    YYSTYPE  *l_mark;
204234949Sbapt} YYSTACKDATA;
205234949Sbapt/* variables for the parser stack */
206234949Sbaptstatic YYSTACKDATA yystack;
207234949Sbapt#line 68 "code_calc.y"
208234949Sbapt /* start of programs */
209234949Sbapt
210234949Sbapt#ifdef YYBYACC
211234949Sbaptextern int YYLEX_DECL();
212234949Sbapt#endif
213234949Sbapt
214234949Sbaptint
215234949Sbaptmain (void)
216234949Sbapt{
217234949Sbapt    while(!feof(stdin)) {
218234949Sbapt	yyparse();
219234949Sbapt    }
220234949Sbapt    return 0;
221234949Sbapt}
222234949Sbapt
223234949Sbaptstatic void
224234949Sbaptyyerror(const char *s)
225234949Sbapt{
226234949Sbapt    fprintf(stderr, "%s\n", s);
227234949Sbapt}
228234949Sbapt
229234949Sbaptint
230234949Sbaptyylex(void)
231234949Sbapt{
232234949Sbapt	/* lexical analysis routine */
233234949Sbapt	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
234234949Sbapt	/* return DIGIT for a digit, yylval = 0 through 9 */
235234949Sbapt	/* all other characters are returned immediately */
236234949Sbapt
237234949Sbapt    int c;
238234949Sbapt
239234949Sbapt    while( (c=getchar()) == ' ' )   { /* skip blanks */ }
240234949Sbapt
241234949Sbapt    /* c is now nonblank */
242234949Sbapt
243234949Sbapt    if( islower( c )) {
244234949Sbapt	yylval = c - 'a';
245234949Sbapt	return ( LETTER );
246234949Sbapt    }
247234949Sbapt    if( isdigit( c )) {
248234949Sbapt	yylval = c - '0';
249234949Sbapt	return ( DIGIT );
250234949Sbapt    }
251234949Sbapt    return( c );
252234949Sbapt}
253234949Sbapt#line 254 "code_calc.code.c"
254234949Sbapt
255234949Sbapt#if YYDEBUG
256234949Sbapt#include <stdio.h>		/* needed for printf */
257234949Sbapt#endif
258234949Sbapt
259234949Sbapt#include <stdlib.h>	/* needed for malloc, etc */
260234949Sbapt#include <string.h>	/* needed for memset */
261234949Sbapt
262234949Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */
263234949Sbaptstatic int yygrowstack(YYSTACKDATA *data)
264234949Sbapt{
265234949Sbapt    int i;
266234949Sbapt    unsigned newsize;
267234949Sbapt    short *newss;
268234949Sbapt    YYSTYPE *newvs;
269234949Sbapt
270234949Sbapt    if ((newsize = data->stacksize) == 0)
271234949Sbapt        newsize = YYINITSTACKSIZE;
272234949Sbapt    else if (newsize >= YYMAXDEPTH)
273234949Sbapt        return -1;
274234949Sbapt    else if ((newsize *= 2) > YYMAXDEPTH)
275234949Sbapt        newsize = YYMAXDEPTH;
276234949Sbapt
277251143Sbapt    i = (int) (data->s_mark - data->s_base);
278234949Sbapt    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
279234949Sbapt    if (newss == 0)
280234949Sbapt        return -1;
281234949Sbapt
282234949Sbapt    data->s_base = newss;
283234949Sbapt    data->s_mark = newss + i;
284234949Sbapt
285234949Sbapt    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
286234949Sbapt    if (newvs == 0)
287234949Sbapt        return -1;
288234949Sbapt
289234949Sbapt    data->l_base = newvs;
290234949Sbapt    data->l_mark = newvs + i;
291234949Sbapt
292234949Sbapt    data->stacksize = newsize;
293234949Sbapt    data->s_last = data->s_base + newsize - 1;
294234949Sbapt    return 0;
295234949Sbapt}
296234949Sbapt
297234949Sbapt#if YYPURE || defined(YY_NO_LEAKS)
298234949Sbaptstatic void yyfreestack(YYSTACKDATA *data)
299234949Sbapt{
300234949Sbapt    free(data->s_base);
301234949Sbapt    free(data->l_base);
302234949Sbapt    memset(data, 0, sizeof(*data));
303234949Sbapt}
304234949Sbapt#else
305234949Sbapt#define yyfreestack(data) /* nothing */
306234949Sbapt#endif
307234949Sbapt
308234949Sbapt#define YYABORT  goto yyabort
309234949Sbapt#define YYREJECT goto yyabort
310234949Sbapt#define YYACCEPT goto yyaccept
311234949Sbapt#define YYERROR  goto yyerrlab
312234949Sbapt
313234949Sbaptint
314234949SbaptYYPARSE_DECL()
315234949Sbapt{
316234949Sbapt    int yym, yyn, yystate;
317234949Sbapt#if YYDEBUG
318234949Sbapt    const char *yys;
319234949Sbapt
320234949Sbapt    if ((yys = getenv("YYDEBUG")) != 0)
321234949Sbapt    {
322234949Sbapt        yyn = *yys;
323234949Sbapt        if (yyn >= '0' && yyn <= '9')
324234949Sbapt            yydebug = yyn - '0';
325234949Sbapt    }
326234949Sbapt#endif
327234949Sbapt
328234949Sbapt    yynerrs = 0;
329234949Sbapt    yyerrflag = 0;
330234949Sbapt    yychar = YYEMPTY;
331234949Sbapt    yystate = 0;
332234949Sbapt
333234949Sbapt#if YYPURE
334234949Sbapt    memset(&yystack, 0, sizeof(yystack));
335234949Sbapt#endif
336234949Sbapt
337234949Sbapt    if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
338234949Sbapt    yystack.s_mark = yystack.s_base;
339234949Sbapt    yystack.l_mark = yystack.l_base;
340234949Sbapt    yystate = 0;
341234949Sbapt    *yystack.s_mark = 0;
342234949Sbapt
343234949Sbaptyyloop:
344234949Sbapt    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
345234949Sbapt    if (yychar < 0)
346234949Sbapt    {
347234949Sbapt        if ((yychar = YYLEX) < 0) yychar = 0;
348234949Sbapt#if YYDEBUG
349234949Sbapt        if (yydebug)
350234949Sbapt        {
351234949Sbapt            yys = 0;
352234949Sbapt            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
353234949Sbapt            if (!yys) yys = "illegal-symbol";
354234949Sbapt            printf("%sdebug: state %d, reading %d (%s)\n",
355234949Sbapt                    YYPREFIX, yystate, yychar, yys);
356234949Sbapt        }
357234949Sbapt#endif
358234949Sbapt    }
359234949Sbapt    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
360234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
361234949Sbapt    {
362234949Sbapt#if YYDEBUG
363234949Sbapt        if (yydebug)
364234949Sbapt            printf("%sdebug: state %d, shifting to state %d\n",
365234949Sbapt                    YYPREFIX, yystate, yytable[yyn]);
366234949Sbapt#endif
367234949Sbapt        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
368234949Sbapt        {
369234949Sbapt            goto yyoverflow;
370234949Sbapt        }
371234949Sbapt        yystate = yytable[yyn];
372234949Sbapt        *++yystack.s_mark = yytable[yyn];
373234949Sbapt        *++yystack.l_mark = yylval;
374234949Sbapt        yychar = YYEMPTY;
375234949Sbapt        if (yyerrflag > 0)  --yyerrflag;
376234949Sbapt        goto yyloop;
377234949Sbapt    }
378234949Sbapt    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
379234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
380234949Sbapt    {
381234949Sbapt        yyn = yytable[yyn];
382234949Sbapt        goto yyreduce;
383234949Sbapt    }
384234949Sbapt    if (yyerrflag) goto yyinrecovery;
385234949Sbapt
386234949Sbapt    yyerror("syntax error");
387234949Sbapt
388234949Sbapt    goto yyerrlab;
389234949Sbapt
390234949Sbaptyyerrlab:
391234949Sbapt    ++yynerrs;
392234949Sbapt
393234949Sbaptyyinrecovery:
394234949Sbapt    if (yyerrflag < 3)
395234949Sbapt    {
396234949Sbapt        yyerrflag = 3;
397234949Sbapt        for (;;)
398234949Sbapt        {
399234949Sbapt            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
400234949Sbapt                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
401234949Sbapt            {
402234949Sbapt#if YYDEBUG
403234949Sbapt                if (yydebug)
404234949Sbapt                    printf("%sdebug: state %d, error recovery shifting\
405234949Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
406234949Sbapt#endif
407234949Sbapt                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
408234949Sbapt                {
409234949Sbapt                    goto yyoverflow;
410234949Sbapt                }
411234949Sbapt                yystate = yytable[yyn];
412234949Sbapt                *++yystack.s_mark = yytable[yyn];
413234949Sbapt                *++yystack.l_mark = yylval;
414234949Sbapt                goto yyloop;
415234949Sbapt            }
416234949Sbapt            else
417234949Sbapt            {
418234949Sbapt#if YYDEBUG
419234949Sbapt                if (yydebug)
420234949Sbapt                    printf("%sdebug: error recovery discarding state %d\n",
421234949Sbapt                            YYPREFIX, *yystack.s_mark);
422234949Sbapt#endif
423234949Sbapt                if (yystack.s_mark <= yystack.s_base) goto yyabort;
424234949Sbapt                --yystack.s_mark;
425234949Sbapt                --yystack.l_mark;
426234949Sbapt            }
427234949Sbapt        }
428234949Sbapt    }
429234949Sbapt    else
430234949Sbapt    {
431234949Sbapt        if (yychar == 0) goto yyabort;
432234949Sbapt#if YYDEBUG
433234949Sbapt        if (yydebug)
434234949Sbapt        {
435234949Sbapt            yys = 0;
436234949Sbapt            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
437234949Sbapt            if (!yys) yys = "illegal-symbol";
438234949Sbapt            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
439234949Sbapt                    YYPREFIX, yystate, yychar, yys);
440234949Sbapt        }
441234949Sbapt#endif
442234949Sbapt        yychar = YYEMPTY;
443234949Sbapt        goto yyloop;
444234949Sbapt    }
445234949Sbapt
446234949Sbaptyyreduce:
447234949Sbapt#if YYDEBUG
448234949Sbapt    if (yydebug)
449234949Sbapt        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
450234949Sbapt                YYPREFIX, yystate, yyn, yyrule[yyn]);
451234949Sbapt#endif
452234949Sbapt    yym = yylen[yyn];
453234949Sbapt    if (yym)
454234949Sbapt        yyval = yystack.l_mark[1-yym];
455234949Sbapt    else
456234949Sbapt        memset(&yyval, 0, sizeof yyval);
457234949Sbapt    switch (yyn)
458234949Sbapt    {
459234949Sbaptcase 3:
460234949Sbapt#line 30 "code_calc.y"
461234949Sbapt	{  yyerrok ; }
462234949Sbaptbreak;
463234949Sbaptcase 4:
464234949Sbapt#line 34 "code_calc.y"
465234949Sbapt	{  printf("%d\n",yystack.l_mark[0]);}
466234949Sbaptbreak;
467234949Sbaptcase 5:
468234949Sbapt#line 36 "code_calc.y"
469234949Sbapt	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
470234949Sbaptbreak;
471234949Sbaptcase 6:
472234949Sbapt#line 40 "code_calc.y"
473234949Sbapt	{  yyval = yystack.l_mark[-1]; }
474234949Sbaptbreak;
475234949Sbaptcase 7:
476234949Sbapt#line 42 "code_calc.y"
477234949Sbapt	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
478234949Sbaptbreak;
479234949Sbaptcase 8:
480234949Sbapt#line 44 "code_calc.y"
481234949Sbapt	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
482234949Sbaptbreak;
483234949Sbaptcase 9:
484234949Sbapt#line 46 "code_calc.y"
485234949Sbapt	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
486234949Sbaptbreak;
487234949Sbaptcase 10:
488234949Sbapt#line 48 "code_calc.y"
489234949Sbapt	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
490234949Sbaptbreak;
491234949Sbaptcase 11:
492234949Sbapt#line 50 "code_calc.y"
493234949Sbapt	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
494234949Sbaptbreak;
495234949Sbaptcase 12:
496234949Sbapt#line 52 "code_calc.y"
497234949Sbapt	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
498234949Sbaptbreak;
499234949Sbaptcase 13:
500234949Sbapt#line 54 "code_calc.y"
501234949Sbapt	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
502234949Sbaptbreak;
503234949Sbaptcase 14:
504234949Sbapt#line 56 "code_calc.y"
505234949Sbapt	{  yyval = - yystack.l_mark[0]; }
506234949Sbaptbreak;
507234949Sbaptcase 15:
508234949Sbapt#line 58 "code_calc.y"
509234949Sbapt	{  yyval = regs[yystack.l_mark[0]]; }
510234949Sbaptbreak;
511234949Sbaptcase 17:
512234949Sbapt#line 63 "code_calc.y"
513234949Sbapt	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
514234949Sbaptbreak;
515234949Sbaptcase 18:
516234949Sbapt#line 65 "code_calc.y"
517234949Sbapt	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
518234949Sbaptbreak;
519234949Sbapt#line 520 "code_calc.code.c"
520234949Sbapt    }
521234949Sbapt    yystack.s_mark -= yym;
522234949Sbapt    yystate = *yystack.s_mark;
523234949Sbapt    yystack.l_mark -= yym;
524234949Sbapt    yym = yylhs[yyn];
525234949Sbapt    if (yystate == 0 && yym == 0)
526234949Sbapt    {
527234949Sbapt#if YYDEBUG
528234949Sbapt        if (yydebug)
529234949Sbapt            printf("%sdebug: after reduction, shifting from state 0 to\
530234949Sbapt state %d\n", YYPREFIX, YYFINAL);
531234949Sbapt#endif
532234949Sbapt        yystate = YYFINAL;
533234949Sbapt        *++yystack.s_mark = YYFINAL;
534234949Sbapt        *++yystack.l_mark = yyval;
535234949Sbapt        if (yychar < 0)
536234949Sbapt        {
537234949Sbapt            if ((yychar = YYLEX) < 0) yychar = 0;
538234949Sbapt#if YYDEBUG
539234949Sbapt            if (yydebug)
540234949Sbapt            {
541234949Sbapt                yys = 0;
542234949Sbapt                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
543234949Sbapt                if (!yys) yys = "illegal-symbol";
544234949Sbapt                printf("%sdebug: state %d, reading %d (%s)\n",
545234949Sbapt                        YYPREFIX, YYFINAL, yychar, yys);
546234949Sbapt            }
547234949Sbapt#endif
548234949Sbapt        }
549234949Sbapt        if (yychar == 0) goto yyaccept;
550234949Sbapt        goto yyloop;
551234949Sbapt    }
552234949Sbapt    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
553234949Sbapt            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
554234949Sbapt        yystate = yytable[yyn];
555234949Sbapt    else
556234949Sbapt        yystate = yydgoto[yym];
557234949Sbapt#if YYDEBUG
558234949Sbapt    if (yydebug)
559234949Sbapt        printf("%sdebug: after reduction, shifting from state %d \
560234949Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate);
561234949Sbapt#endif
562234949Sbapt    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
563234949Sbapt    {
564234949Sbapt        goto yyoverflow;
565234949Sbapt    }
566234949Sbapt    *++yystack.s_mark = (short) yystate;
567234949Sbapt    *++yystack.l_mark = yyval;
568234949Sbapt    goto yyloop;
569234949Sbapt
570234949Sbaptyyoverflow:
571234949Sbapt    yyerror("yacc stack overflow");
572234949Sbapt
573234949Sbaptyyabort:
574234949Sbapt    yyfreestack(&yystack);
575234949Sbapt    return (1);
576234949Sbapt
577234949Sbaptyyaccept:
578234949Sbapt    yyfreestack(&yystack);
579234949Sbapt    return (0);
580234949Sbapt}
581