xref: /netbsd-src/external/bsd/byacc/dist/test/yacc/quote_calc2-s.tab.c (revision cef8759bd76c1b621f8eab8faa6f208faabc2e15)
1 /*	$NetBSD: quote_calc2-s.tab.c,v 1.3 2018/12/23 15:38:54 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 1
9 #define YYMINOR 9
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_calc2_parse
21 #endif /* yyparse */
22 
23 #ifndef yylex
24 #define yylex      quote_calc2_lex
25 #endif /* yylex */
26 
27 #ifndef yyerror
28 #define yyerror    quote_calc2_error
29 #endif /* yyerror */
30 
31 #ifndef yychar
32 #define yychar     quote_calc2_char
33 #endif /* yychar */
34 
35 #ifndef yyval
36 #define yyval      quote_calc2_val
37 #endif /* yyval */
38 
39 #ifndef yylval
40 #define yylval     quote_calc2_lval
41 #endif /* yylval */
42 
43 #ifndef yydebug
44 #define yydebug    quote_calc2_debug
45 #endif /* yydebug */
46 
47 #ifndef yynerrs
48 #define yynerrs    quote_calc2_nerrs
49 #endif /* yynerrs */
50 
51 #ifndef yyerrflag
52 #define yyerrflag  quote_calc2_errflag
53 #endif /* yyerrflag */
54 
55 #ifndef yylhs
56 #define yylhs      quote_calc2_lhs
57 #endif /* yylhs */
58 
59 #ifndef yylen
60 #define yylen      quote_calc2_len
61 #endif /* yylen */
62 
63 #ifndef yydefred
64 #define yydefred   quote_calc2_defred
65 #endif /* yydefred */
66 
67 #ifndef yydgoto
68 #define yydgoto    quote_calc2_dgoto
69 #endif /* yydgoto */
70 
71 #ifndef yysindex
72 #define yysindex   quote_calc2_sindex
73 #endif /* yysindex */
74 
75 #ifndef yyrindex
76 #define yyrindex   quote_calc2_rindex
77 #endif /* yyrindex */
78 
79 #ifndef yygindex
80 #define yygindex   quote_calc2_gindex
81 #endif /* yygindex */
82 
83 #ifndef yytable
84 #define yytable    quote_calc2_table
85 #endif /* yytable */
86 
87 #ifndef yycheck
88 #define yycheck    quote_calc2_check
89 #endif /* yycheck */
90 
91 #ifndef yyname
92 #define yyname     quote_calc2_name
93 #endif /* yyname */
94 
95 #ifndef yyrule
96 #define yyrule     quote_calc2_rule
97 #endif /* yyrule */
98 #define YYPREFIX "quote_calc2_"
99 
100 #define YYPURE 0
101 
102 #line 2 "quote_calc2.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_calc2-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 short YYINT;
162 static const YYINT quote_calc2_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_calc2_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_calc2_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_calc2_dgoto[] = {                1,
177     7,    8,    9,
178 };
179 static const YYINT quote_calc2_sindex[] = {               0,
180   -38,    4,  -36,    0,  -51,  -36,    6, -121, -249,    0,
181     0, -243,  -36,  -23,    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_calc2_rindex[] = {               0,
186     0,    0,    0,    0,   -9,    0,    0,   12,  -10,    0,
187     0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
188     0,    0,    0,   14,    0,   -3,   -2,   -1,    1,    2,
189     3,   -4,
190 };
191 static const YYINT quote_calc2_gindex[] = {               0,
192     0,   42,    0,
193 };
194 #define YYTABLESIZE 259
195 static const YYINT quote_calc2_table[] = {               16,
196    15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
197    10,   11,   12,   10,   16,   15,   17,   25,   18,   23,
198    19,    4,   20,    5,   21,    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    22,    0,    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,    0,   16,    0,   17,    0,
210    18,    0,   19,    0,   20,    0,   21,    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     0,    3,    0,    3,    0,    0,    0,    0,    0,    0,
219     4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
220    19,    0,   20,    0,   21,    0,    0,   16,   15,   16,
221    15,   16,   15,   16,   15,   16,   15,   16,   15,
222 };
223 static const YYINT quote_calc2_check[] = {               10,
224    10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
225    10,   10,   10,   10,  258,   10,  260,   41,  262,  269,
226   264,   10,  266,   10,  268,   -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   124,   -1,   -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,   -1,  258,   -1,  260,   -1,
238   262,   -1,  264,   -1,  266,   -1,  268,   -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    -1,  260,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
247   269,  270,  269,  270,  258,   -1,  260,   -1,  262,   -1,
248   264,   -1,  266,   -1,  268,   -1,   -1,  258,  258,  260,
249   260,  262,  262,  264,  264,  266,  266,  268,  268,
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_calc2_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_calc2_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 \"ADD\" expr",
281 "expr : expr \"SUB\" expr",
282 "expr : expr \"MUL\" expr",
283 "expr : expr \"DIV\" expr",
284 "expr : expr \"MOD\" expr",
285 "expr : expr \"AND\" expr",
286 "expr : expr '|' expr",
287 "expr : \"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_calc2.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_calc2-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 = 0;
448     yyn = 0;
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_calc2.y"
573 	{  yyerrok ; }
574 break;
575 case 4:
576 #line 39 "quote_calc2.y"
577 	{  printf("%d\n",yystack.l_mark[0]);}
578 break;
579 case 5:
580 #line 41 "quote_calc2.y"
581 	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
582 break;
583 case 6:
584 #line 45 "quote_calc2.y"
585 	{  yyval = yystack.l_mark[-1]; }
586 break;
587 case 7:
588 #line 47 "quote_calc2.y"
589 	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
590 break;
591 case 8:
592 #line 49 "quote_calc2.y"
593 	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
594 break;
595 case 9:
596 #line 51 "quote_calc2.y"
597 	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
598 break;
599 case 10:
600 #line 53 "quote_calc2.y"
601 	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
602 break;
603 case 11:
604 #line 55 "quote_calc2.y"
605 	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
606 break;
607 case 12:
608 #line 57 "quote_calc2.y"
609 	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
610 break;
611 case 13:
612 #line 59 "quote_calc2.y"
613 	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
614 break;
615 case 14:
616 #line 61 "quote_calc2.y"
617 	{  yyval = - yystack.l_mark[0]; }
618 break;
619 case 15:
620 #line 63 "quote_calc2.y"
621 	{  yyval = regs[yystack.l_mark[0]]; }
622 break;
623 case 17:
624 #line 68 "quote_calc2.y"
625 	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
626 break;
627 case 18:
628 #line 70 "quote_calc2.y"
629 	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
630 break;
631 #line 630 "quote_calc2-s.tab.c"
632     }
633     yystack.s_mark -= yym;
634     yystate = *yystack.s_mark;
635     yystack.l_mark -= yym;
636     yym = yylhs[yyn];
637     if (yystate == 0 && yym == 0)
638     {
639 #if YYDEBUG
640         if (yydebug)
641             printf("%sdebug: after reduction, shifting from state 0 to\
642  state %d\n", YYPREFIX, YYFINAL);
643 #endif
644         yystate = YYFINAL;
645         *++yystack.s_mark = YYFINAL;
646         *++yystack.l_mark = yyval;
647         if (yychar < 0)
648         {
649             yychar = YYLEX;
650             if (yychar < 0) yychar = YYEOF;
651 #if YYDEBUG
652             if (yydebug)
653             {
654                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
655                 printf("%sdebug: state %d, reading %d (%s)\n",
656                         YYPREFIX, YYFINAL, yychar, yys);
657             }
658 #endif
659         }
660         if (yychar == YYEOF) goto yyaccept;
661         goto yyloop;
662     }
663     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
664             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
665         yystate = yytable[yyn];
666     else
667         yystate = yydgoto[yym];
668 #if YYDEBUG
669     if (yydebug)
670         printf("%sdebug: after reduction, shifting from state %d \
671 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
672 #endif
673     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
674     *++yystack.s_mark = (YYINT) yystate;
675     *++yystack.l_mark = yyval;
676     goto yyloop;
677 
678 yyoverflow:
679     YYERROR_CALL("yacc stack overflow");
680 
681 yyabort:
682     yyfreestack(&yystack);
683     return (1);
684 
685 yyaccept:
686     yyfreestack(&yystack);
687     return (0);
688 }
689