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