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