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