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