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