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