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)
109int YYLEX_DECL();
110static 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"
120typedef 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
162extern 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
181typedef int YYINT;
182static 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};
186static 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};
190static 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};
196static const YYINT ok_syntax1_dgoto[] = {                 1,
197    7,    8,    9,
198};
199static 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};
205static 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};
211static const YYINT ok_syntax1_gindex[] = {                0,
212    0,   65,    0,
213};
214#define YYTABLESIZE 220
215static 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};
239static 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
271static 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,
2760,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,
2770,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,
2780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2790,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2800,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
2830,0,0,0,"illegal-symbol",
284};
285static 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
309int      yydebug;
310int      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
327typedef 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
339extern int YYLEX_DECL();
340#endif
341
342int
343main (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
356static void
357YYERROR_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
364int
365YYLEX_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 */
398static 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)
433static 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
448int
449YYPARSE_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
490yyloop:
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 */
532yyerrlab:
533    ++yynerrs;
534
535yyinrecovery:
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
583yyreduce:
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    {
597case 3:
598#line 66 "ok_syntax1.y"
599	{  yyerrok ; }
600break;
601case 4:
602#line 70 "ok_syntax1.y"
603	{  printf("%d\n",yystack.l_mark[0].ival);}
604break;
605case 5:
606#line 72 "ok_syntax1.y"
607	{  regs[yystack.l_mark[-2].ival] = yystack.l_mark[0].ival; }
608break;
609case 6:
610#line 76 "ok_syntax1.y"
611	{  yyval.ival = yystack.l_mark[-1].ival; }
612break;
613case 7:
614#line 78 "ok_syntax1.y"
615	{  yyval.ival = yystack.l_mark[-2].ival + yystack.l_mark[0].ival; }
616break;
617case 8:
618#line 80 "ok_syntax1.y"
619	{  yyval.ival = yystack.l_mark[-2].ival - yystack.l_mark[0].ival; }
620break;
621case 9:
622#line 82 "ok_syntax1.y"
623	{  yyval.ival = yystack.l_mark[-2].ival * yystack.l_mark[0].ival; }
624break;
625case 10:
626#line 84 "ok_syntax1.y"
627	{  yyval.ival = yystack.l_mark[-2].ival / yystack.l_mark[0].ival; }
628break;
629case 11:
630#line 86 "ok_syntax1.y"
631	{  yyval.ival = yystack.l_mark[-2].ival % yystack.l_mark[0].ival; }
632break;
633case 12:
634#line 88 "ok_syntax1.y"
635	{  yyval.ival = yystack.l_mark[-2].ival & yystack.l_mark[0].ival; }
636break;
637case 13:
638#line 90 "ok_syntax1.y"
639	{  yyval.ival = yystack.l_mark[-2].ival | yystack.l_mark[0].ival; }
640break;
641case 14:
642#line 92 "ok_syntax1.y"
643	{  yyval.ival = - yystack.l_mark[0].ival; }
644break;
645case 15:
646#line 94 "ok_syntax1.y"
647	{  yyval.ival = regs[yystack.l_mark[0].ival]; }
648break;
649case 17:
650#line 99 "ok_syntax1.y"
651	{  yyval.ival = yystack.l_mark[0].ival; (*base) = (yystack.l_mark[0].ival==0) ? 8 : 10; }
652break;
653case 18:
654#line 101 "ok_syntax1.y"
655	{  yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; }
656break;
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 \
697to 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
704yyoverflow:
705    YYERROR_CALL("yacc stack overflow");
706
707yyabort:
708    yyfreestack(&yystack);
709    return (1);
710
711yyaccept:
712    yyfreestack(&yystack);
713    return (0);
714}
715