xref: /netbsd-src/external/bsd/byacc/dist/test/yacc/calc_code_default.tab.c (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
1 /*	$NetBSD: calc_code_default.tab.c,v 1.1.1.1 2021/02/20 20:30:08 christos Exp $	*/
2 
3 /* original parser id follows */
4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
6 
7 #define YYBYACC 1
8 #define YYMAJOR 2
9 #define YYMINOR 0
10 #define YYCHECK "yyyymmdd"
11 
12 #define YYEMPTY        (-1)
13 #define yyclearin      (yychar = YYEMPTY)
14 #define yyerrok        (yyerrflag = 0)
15 #define YYRECOVERING() (yyerrflag != 0)
16 #define YYENOMEM       (-2)
17 #define YYEOF          0
18 
19 #ifndef yyparse
20 #define yyparse    calc_code_default_parse
21 #endif /* yyparse */
22 
23 #ifndef yylex
24 #define yylex      calc_code_default_lex
25 #endif /* yylex */
26 
27 #ifndef yyerror
28 #define yyerror    calc_code_default_error
29 #endif /* yyerror */
30 
31 #ifndef yychar
32 #define yychar     calc_code_default_char
33 #endif /* yychar */
34 
35 #ifndef yyval
36 #define yyval      calc_code_default_val
37 #endif /* yyval */
38 
39 #ifndef yylval
40 #define yylval     calc_code_default_lval
41 #endif /* yylval */
42 
43 #ifndef yydebug
44 #define yydebug    calc_code_default_debug
45 #endif /* yydebug */
46 
47 #ifndef yynerrs
48 #define yynerrs    calc_code_default_nerrs
49 #endif /* yynerrs */
50 
51 #ifndef yyerrflag
52 #define yyerrflag  calc_code_default_errflag
53 #endif /* yyerrflag */
54 
55 #ifndef yylhs
56 #define yylhs      calc_code_default_lhs
57 #endif /* yylhs */
58 
59 #ifndef yylen
60 #define yylen      calc_code_default_len
61 #endif /* yylen */
62 
63 #ifndef yydefred
64 #define yydefred   calc_code_default_defred
65 #endif /* yydefred */
66 
67 #ifndef yydgoto
68 #define yydgoto    calc_code_default_dgoto
69 #endif /* yydgoto */
70 
71 #ifndef yysindex
72 #define yysindex   calc_code_default_sindex
73 #endif /* yysindex */
74 
75 #ifndef yyrindex
76 #define yyrindex   calc_code_default_rindex
77 #endif /* yyrindex */
78 
79 #ifndef yygindex
80 #define yygindex   calc_code_default_gindex
81 #endif /* yygindex */
82 
83 #ifndef yytable
84 #define yytable    calc_code_default_table
85 #endif /* yytable */
86 
87 #ifndef yycheck
88 #define yycheck    calc_code_default_check
89 #endif /* yycheck */
90 
91 #ifndef yyname
92 #define yyname     calc_code_default_name
93 #endif /* yyname */
94 
95 #ifndef yyrule
96 #define yyrule     calc_code_default_rule
97 #endif /* yyrule */
98 #define YYPREFIX "calc_code_default_"
99 
100 #define YYPURE 0
101 
102 #line 5 "calc_code_default.y"
103 # include <stdio.h>
104 # include <ctype.h>
105 
106 int regs[26];
107 int base;
108 
109 extern int yylex(void);
110 static void yyerror(const char *s);
111 
112 #line 111 "calc_code_default.tab.c"
113 
114 #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
115 /* Default: YYSTYPE is the semantic value type. */
116 typedef int YYSTYPE;
117 # define YYSTYPE_IS_DECLARED 1
118 #endif
119 
120 /* compatibility with bison */
121 #ifdef YYPARSE_PARAM
122 /* compatibility with FreeBSD */
123 # ifdef YYPARSE_PARAM_TYPE
124 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
125 # else
126 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
127 # endif
128 #else
129 # define YYPARSE_DECL() yyparse(void)
130 #endif
131 
132 /* Parameters sent to lex. */
133 #ifdef YYLEX_PARAM
134 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
135 # define YYLEX yylex(YYLEX_PARAM)
136 #else
137 # define YYLEX_DECL() yylex(void)
138 # define YYLEX yylex()
139 #endif
140 
141 /* Parameters sent to yyerror. */
142 #ifndef YYERROR_DECL
143 #define YYERROR_DECL() yyerror(const char *s)
144 #endif
145 #ifndef YYERROR_CALL
146 #define YYERROR_CALL(msg) yyerror(msg)
147 #endif
148 
149 extern int YYPARSE_DECL();
150 
151 #define DIGIT 257
152 #define LETTER 258
153 #define UMINUS 259
154 #define YYERRCODE 256
155 typedef short YYINT;
156 static const YYINT calc_code_default_lhs[] = {           -1,
157     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
158     2,    2,    2,    2,    2,    2,    3,    3,
159 };
160 static const YYINT calc_code_default_len[] = {            2,
161     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
162     3,    3,    3,    2,    1,    1,    1,    2,
163 };
164 static const YYINT calc_code_default_defred[] = {         1,
165     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
166     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
167     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
168    10,   11,
169 };
170 static const YYINT calc_code_default_dgoto[] = {          1,
171     7,    8,    9,
172 };
173 static const YYINT calc_code_default_sindex[] = {         0,
174   -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
175   -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
176   -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
177     0,    0,
178 };
179 static const YYINT calc_code_default_rindex[] = {         0,
180     0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
181     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
182     0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
183     0,    0,
184 };
185 static const YYINT calc_code_default_gindex[] = {         0,
186     0,   65,    0,
187 };
188 #define YYTABLESIZE 220
189 static const YYINT calc_code_default_table[] = {          6,
190    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
191    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
192     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
193     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
194     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
195     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
196     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
197    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
198    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
199     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
200     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
201     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
202     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
203     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
204     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
205     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
206     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
207     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
208     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
209     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
210     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
211     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
212 };
213 static const YYINT calc_code_default_check[] = {         40,
214    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
215    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
216    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
217    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
218    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
219    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
220    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
221     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
222    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
223    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
224    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
225    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
226    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
227    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
228    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
229    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
230    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
231    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
232    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
233    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
234    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
235    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
236 };
237 #define YYFINAL 1
238 #ifndef YYDEBUG
239 #define YYDEBUG 0
240 #endif
241 #define YYMAXTOKEN 259
242 #define YYUNDFTOKEN 265
243 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
244 #if YYDEBUG
245 static const char *const calc_code_default_name[] = {
246 
247 "end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
248 0,0,0,0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,
249 0,0,0,0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
250 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,
251 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
252 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
253 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
254 0,0,0,0,0,0,"DIGIT","LETTER","UMINUS",0,0,0,0,0,"illegal-symbol",
255 };
256 static const char *const calc_code_default_rule[] = {
257 "$accept : list",
258 "list :",
259 "list : list stat '\\n'",
260 "list : list error '\\n'",
261 "stat : expr",
262 "stat : LETTER '=' expr",
263 "expr : '(' expr ')'",
264 "expr : expr '+' expr",
265 "expr : expr '-' expr",
266 "expr : expr '*' expr",
267 "expr : expr '/' expr",
268 "expr : expr '%' expr",
269 "expr : expr '&' expr",
270 "expr : expr '|' expr",
271 "expr : '-' expr",
272 "expr : LETTER",
273 "expr : number",
274 "number : DIGIT",
275 "number : number DIGIT",
276 
277 };
278 #endif
279 
280 #if YYDEBUG
281 int      yydebug;
282 #endif
283 
284 int      yyerrflag;
285 int      yychar;
286 YYSTYPE  yyval;
287 YYSTYPE  yylval;
288 int      yynerrs;
289 
290 /* define the initial stack-sizes */
291 #ifdef YYSTACKSIZE
292 #undef YYMAXDEPTH
293 #define YYMAXDEPTH  YYSTACKSIZE
294 #else
295 #ifdef YYMAXDEPTH
296 #define YYSTACKSIZE YYMAXDEPTH
297 #else
298 #define YYSTACKSIZE 10000
299 #define YYMAXDEPTH  10000
300 #endif
301 #endif
302 
303 #define YYINITSTACKSIZE 200
304 
305 typedef struct {
306     unsigned stacksize;
307     YYINT    *s_base;
308     YYINT    *s_mark;
309     YYINT    *s_last;
310     YYSTYPE  *l_base;
311     YYSTYPE  *l_mark;
312 } YYSTACKDATA;
313 /* variables for the parser stack */
314 static YYSTACKDATA yystack;
315 
316 /* %code "" block start */
317 #line 1 "calc_code_default.y"
318 /* CODE-DEFAULT */
319 #line 2 "calc_code_default.y"
320 /* CODE-DEFAULT2 */
321 /* %code "" block end */
322 #line 321 "calc_code_default.tab.c"
323 #line 69 "calc_code_default.y"
324  /* start of programs */
325 
326 int
327 main (void)
328 {
329     while(!feof(stdin)) {
330 	yyparse();
331     }
332     return 0;
333 }
334 
335 static void
336 yyerror(const char *s)
337 {
338     fprintf(stderr, "%s\n", s);
339 }
340 
341 int
342 yylex(void)
343 {
344 	/* lexical analysis routine */
345 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
346 	/* return DIGIT for a digit, yylval = 0 through 9 */
347 	/* all other characters are returned immediately */
348 
349     int c;
350 
351     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
352 
353     /* c is now nonblank */
354 
355     if( islower( c )) {
356 	yylval = c - 'a';
357 	return ( LETTER );
358     }
359     if( isdigit( c )) {
360 	yylval = c - '0';
361 	return ( DIGIT );
362     }
363     return( c );
364 }
365 #line 364 "calc_code_default.tab.c"
366 
367 #if YYDEBUG
368 #include <stdio.h>	/* needed for printf */
369 #endif
370 
371 #include <stdlib.h>	/* needed for malloc, etc */
372 #include <string.h>	/* needed for memset */
373 
374 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
375 static int yygrowstack(YYSTACKDATA *data)
376 {
377     int i;
378     unsigned newsize;
379     YYINT *newss;
380     YYSTYPE *newvs;
381 
382     if ((newsize = data->stacksize) == 0)
383         newsize = YYINITSTACKSIZE;
384     else if (newsize >= YYMAXDEPTH)
385         return YYENOMEM;
386     else if ((newsize *= 2) > YYMAXDEPTH)
387         newsize = YYMAXDEPTH;
388 
389     i = (int) (data->s_mark - data->s_base);
390     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
391     if (newss == 0)
392         return YYENOMEM;
393 
394     data->s_base = newss;
395     data->s_mark = newss + i;
396 
397     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
398     if (newvs == 0)
399         return YYENOMEM;
400 
401     data->l_base = newvs;
402     data->l_mark = newvs + i;
403 
404     data->stacksize = newsize;
405     data->s_last = data->s_base + newsize - 1;
406     return 0;
407 }
408 
409 #if YYPURE || defined(YY_NO_LEAKS)
410 static void yyfreestack(YYSTACKDATA *data)
411 {
412     free(data->s_base);
413     free(data->l_base);
414     memset(data, 0, sizeof(*data));
415 }
416 #else
417 #define yyfreestack(data) /* nothing */
418 #endif
419 
420 #define YYABORT  goto yyabort
421 #define YYREJECT goto yyabort
422 #define YYACCEPT goto yyaccept
423 #define YYERROR  goto yyerrlab
424 
425 int
426 YYPARSE_DECL()
427 {
428     int yym, yyn, yystate;
429 #if YYDEBUG
430     const char *yys;
431 
432     if ((yys = getenv("YYDEBUG")) != 0)
433     {
434         yyn = *yys;
435         if (yyn >= '0' && yyn <= '9')
436             yydebug = yyn - '0';
437     }
438 #endif
439 
440     yym = 0;
441     yyn = 0;
442     yynerrs = 0;
443     yyerrflag = 0;
444     yychar = YYEMPTY;
445     yystate = 0;
446 
447 #if YYPURE
448     memset(&yystack, 0, sizeof(yystack));
449 #endif
450 
451     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
452     yystack.s_mark = yystack.s_base;
453     yystack.l_mark = yystack.l_base;
454     yystate = 0;
455     *yystack.s_mark = 0;
456 
457 yyloop:
458     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
459     if (yychar < 0)
460     {
461         yychar = YYLEX;
462         if (yychar < 0) yychar = YYEOF;
463 #if YYDEBUG
464         if (yydebug)
465         {
466             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
467             printf("%sdebug: state %d, reading %d (%s)\n",
468                     YYPREFIX, yystate, yychar, yys);
469         }
470 #endif
471     }
472     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
473             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
474     {
475 #if YYDEBUG
476         if (yydebug)
477             printf("%sdebug: state %d, shifting to state %d\n",
478                     YYPREFIX, yystate, yytable[yyn]);
479 #endif
480         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
481         yystate = yytable[yyn];
482         *++yystack.s_mark = yytable[yyn];
483         *++yystack.l_mark = yylval;
484         yychar = YYEMPTY;
485         if (yyerrflag > 0)  --yyerrflag;
486         goto yyloop;
487     }
488     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
489             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
490     {
491         yyn = yytable[yyn];
492         goto yyreduce;
493     }
494     if (yyerrflag != 0) goto yyinrecovery;
495 
496     YYERROR_CALL("syntax error");
497 
498     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
499 yyerrlab:
500     ++yynerrs;
501 
502 yyinrecovery:
503     if (yyerrflag < 3)
504     {
505         yyerrflag = 3;
506         for (;;)
507         {
508             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
509                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
510             {
511 #if YYDEBUG
512                 if (yydebug)
513                     printf("%sdebug: state %d, error recovery shifting\
514  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
515 #endif
516                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
517                 yystate = yytable[yyn];
518                 *++yystack.s_mark = yytable[yyn];
519                 *++yystack.l_mark = yylval;
520                 goto yyloop;
521             }
522             else
523             {
524 #if YYDEBUG
525                 if (yydebug)
526                     printf("%sdebug: error recovery discarding state %d\n",
527                             YYPREFIX, *yystack.s_mark);
528 #endif
529                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
530                 --yystack.s_mark;
531                 --yystack.l_mark;
532             }
533         }
534     }
535     else
536     {
537         if (yychar == YYEOF) goto yyabort;
538 #if YYDEBUG
539         if (yydebug)
540         {
541             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
542             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
543                     YYPREFIX, yystate, yychar, yys);
544         }
545 #endif
546         yychar = YYEMPTY;
547         goto yyloop;
548     }
549 
550 yyreduce:
551 #if YYDEBUG
552     if (yydebug)
553         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
554                 YYPREFIX, yystate, yyn, yyrule[yyn]);
555 #endif
556     yym = yylen[yyn];
557     if (yym > 0)
558         yyval = yystack.l_mark[1-yym];
559     else
560         memset(&yyval, 0, sizeof yyval);
561 
562     switch (yyn)
563     {
564 case 3:
565 #line 31 "calc_code_default.y"
566 	{  yyerrok ; }
567 break;
568 case 4:
569 #line 35 "calc_code_default.y"
570 	{  printf("%d\n",yystack.l_mark[0]);}
571 break;
572 case 5:
573 #line 37 "calc_code_default.y"
574 	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
575 break;
576 case 6:
577 #line 41 "calc_code_default.y"
578 	{  yyval = yystack.l_mark[-1]; }
579 break;
580 case 7:
581 #line 43 "calc_code_default.y"
582 	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
583 break;
584 case 8:
585 #line 45 "calc_code_default.y"
586 	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
587 break;
588 case 9:
589 #line 47 "calc_code_default.y"
590 	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
591 break;
592 case 10:
593 #line 49 "calc_code_default.y"
594 	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
595 break;
596 case 11:
597 #line 51 "calc_code_default.y"
598 	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
599 break;
600 case 12:
601 #line 53 "calc_code_default.y"
602 	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
603 break;
604 case 13:
605 #line 55 "calc_code_default.y"
606 	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
607 break;
608 case 14:
609 #line 57 "calc_code_default.y"
610 	{  yyval = - yystack.l_mark[0]; }
611 break;
612 case 15:
613 #line 59 "calc_code_default.y"
614 	{  yyval = regs[yystack.l_mark[0]]; }
615 break;
616 case 17:
617 #line 64 "calc_code_default.y"
618 	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
619 break;
620 case 18:
621 #line 66 "calc_code_default.y"
622 	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
623 break;
624 #line 623 "calc_code_default.tab.c"
625     }
626     yystack.s_mark -= yym;
627     yystate = *yystack.s_mark;
628     yystack.l_mark -= yym;
629     yym = yylhs[yyn];
630     if (yystate == 0 && yym == 0)
631     {
632 #if YYDEBUG
633         if (yydebug)
634             printf("%sdebug: after reduction, shifting from state 0 to\
635  state %d\n", YYPREFIX, YYFINAL);
636 #endif
637         yystate = YYFINAL;
638         *++yystack.s_mark = YYFINAL;
639         *++yystack.l_mark = yyval;
640         if (yychar < 0)
641         {
642             yychar = YYLEX;
643             if (yychar < 0) yychar = YYEOF;
644 #if YYDEBUG
645             if (yydebug)
646             {
647                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
648                 printf("%sdebug: state %d, reading %d (%s)\n",
649                         YYPREFIX, YYFINAL, yychar, yys);
650             }
651 #endif
652         }
653         if (yychar == YYEOF) goto yyaccept;
654         goto yyloop;
655     }
656     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
657             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
658         yystate = yytable[yyn];
659     else
660         yystate = yydgoto[yym];
661 #if YYDEBUG
662     if (yydebug)
663         printf("%sdebug: after reduction, shifting from state %d \
664 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
665 #endif
666     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
667     *++yystack.s_mark = (YYINT) yystate;
668     *++yystack.l_mark = yyval;
669     goto yyloop;
670 
671 yyoverflow:
672     YYERROR_CALL("yacc stack overflow");
673 
674 yyabort:
675     yyfreestack(&yystack);
676     return (1);
677 
678 yyaccept:
679     yyfreestack(&yystack);
680     return (0);
681 }
682