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