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