Home | History | Annotate | Line # | Download | only in btyacc
      1 /*	$NetBSD: calc_code_default.tab.c,v 1.3 2026/01/18 16:41:29 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 #undef YYBTYACC
     19 #define YYBTYACC 0
     20 #define YYDEBUGSTR YYPREFIX "debug"
     21 
     22 #ifndef yyparse
     23 #define yyparse    calc_code_default_parse
     24 #endif /* yyparse */
     25 
     26 #ifndef yylex
     27 #define yylex      calc_code_default_lex
     28 #endif /* yylex */
     29 
     30 #ifndef yyerror
     31 #define yyerror    calc_code_default_error
     32 #endif /* yyerror */
     33 
     34 #ifndef yychar
     35 #define yychar     calc_code_default_char
     36 #endif /* yychar */
     37 
     38 #ifndef yyval
     39 #define yyval      calc_code_default_val
     40 #endif /* yyval */
     41 
     42 #ifndef yylval
     43 #define yylval     calc_code_default_lval
     44 #endif /* yylval */
     45 
     46 #ifndef yydebug
     47 #define yydebug    calc_code_default_debug
     48 #endif /* yydebug */
     49 
     50 #ifndef yynerrs
     51 #define yynerrs    calc_code_default_nerrs
     52 #endif /* yynerrs */
     53 
     54 #ifndef yyerrflag
     55 #define yyerrflag  calc_code_default_errflag
     56 #endif /* yyerrflag */
     57 
     58 #ifndef yylhs
     59 #define yylhs      calc_code_default_lhs
     60 #endif /* yylhs */
     61 
     62 #ifndef yylen
     63 #define yylen      calc_code_default_len
     64 #endif /* yylen */
     65 
     66 #ifndef yydefred
     67 #define yydefred   calc_code_default_defred
     68 #endif /* yydefred */
     69 
     70 #ifndef yystos
     71 #define yystos     calc_code_default_stos
     72 #endif /* yystos */
     73 
     74 #ifndef yydgoto
     75 #define yydgoto    calc_code_default_dgoto
     76 #endif /* yydgoto */
     77 
     78 #ifndef yysindex
     79 #define yysindex   calc_code_default_sindex
     80 #endif /* yysindex */
     81 
     82 #ifndef yyrindex
     83 #define yyrindex   calc_code_default_rindex
     84 #endif /* yyrindex */
     85 
     86 #ifndef yygindex
     87 #define yygindex   calc_code_default_gindex
     88 #endif /* yygindex */
     89 
     90 #ifndef yytable
     91 #define yytable    calc_code_default_table
     92 #endif /* yytable */
     93 
     94 #ifndef yycheck
     95 #define yycheck    calc_code_default_check
     96 #endif /* yycheck */
     97 
     98 #ifndef yyname
     99 #define yyname     calc_code_default_name
    100 #endif /* yyname */
    101 
    102 #ifndef yyrule
    103 #define yyrule     calc_code_default_rule
    104 #endif /* yyrule */
    105 
    106 #if YYBTYACC
    107 
    108 #ifndef yycindex
    109 #define yycindex   calc_code_default_cindex
    110 #endif /* yycindex */
    111 
    112 #ifndef yyctable
    113 #define yyctable   calc_code_default_ctable
    114 #endif /* yyctable */
    115 
    116 #endif /* YYBTYACC */
    117 
    118 #define YYPREFIX "calc_code_default_"
    119 
    120 #define YYPURE 0
    121 
    122 #line 5 "calc_code_default.y"
    123 # include <stdio.h>
    124 # include <ctype.h>
    125 
    126 int regs[26];
    127 int base;
    128 
    129 extern int yylex(void);
    130 static void yyerror(const char *s);
    131 
    132 #line 131 "calc_code_default.tab.c"
    133 
    134 #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
    135 /* Default: YYSTYPE is the semantic value type. */
    136 typedef int YYSTYPE;
    137 # define YYSTYPE_IS_DECLARED 1
    138 #endif
    139 
    140 /* compatibility with bison */
    141 #ifdef YYPARSE_PARAM
    142 /* compatibility with FreeBSD */
    143 # ifdef YYPARSE_PARAM_TYPE
    144 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    145 # else
    146 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    147 # endif
    148 #else
    149 # define YYPARSE_DECL() yyparse(void)
    150 #endif
    151 
    152 /* Parameters sent to lex. */
    153 #ifdef YYLEX_PARAM
    154 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    155 # define YYLEX yylex(YYLEX_PARAM)
    156 #else
    157 # define YYLEX_DECL() yylex(void)
    158 # define YYLEX yylex()
    159 #endif
    160 
    161 /* Parameters sent to yyerror. */
    162 #ifndef YYERROR_DECL
    163 #define YYERROR_DECL() yyerror(const char *s)
    164 #endif
    165 #ifndef YYERROR_CALL
    166 #define YYERROR_CALL(msg) yyerror(msg)
    167 #endif
    168 
    169 extern int YYPARSE_DECL();
    170 
    171 #define DIGIT 257
    172 #define LETTER 258
    173 #define UMINUS 259
    174 #define YYERRCODE 256
    175 typedef int YYINT;
    176 static const YYINT calc_code_default_lhs[] = {           -1,
    177     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
    178     2,    2,    2,    2,    2,    2,    3,    3,
    179 };
    180 static const YYINT calc_code_default_len[] = {            2,
    181     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
    182     3,    3,    3,    2,    1,    1,    1,    2,
    183 };
    184 static const YYINT calc_code_default_defred[] = {         1,
    185     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
    186     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
    187     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
    188    10,   11,
    189 };
    190 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
    191 static const YYINT calc_code_default_stos[] = {           0,
    192   261,  256,  257,  258,   45,   40,  262,  263,  264,   10,
    193    61,  258,  263,  263,   10,  124,   38,   43,   45,   42,
    194    47,   37,  257,  263,   41,  263,  263,  263,  263,  263,
    195   263,  263,
    196 };
    197 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
    198 static const YYINT calc_code_default_dgoto[] = {          1,
    199     7,    8,    9,
    200 };
    201 static const YYINT calc_code_default_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 calc_code_default_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 #if YYBTYACC
    214 static const YYINT calc_code_default_cindex[] = {         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,
    219 };
    220 #endif
    221 static const YYINT calc_code_default_gindex[] = {         0,
    222     0,   65,    0,
    223 };
    224 #define YYTABLESIZE 220
    225 static const YYINT calc_code_default_table[] = {          6,
    226    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
    227    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
    228     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
    229     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
    230     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
    231     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
    232     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
    233    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
    234    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
    235     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
    236     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
    237     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
    238     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
    239     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
    240     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
    241     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    242     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    243     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    244     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    246     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    247     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
    248 };
    249 static const YYINT calc_code_default_check[] = {         40,
    250    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
    251    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
    252    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
    253    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
    254    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
    255    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
    256    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
    257     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
    258    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
    259    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
    260    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
    261    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
    262    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
    263    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
    264    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
    265    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    266    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    267    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    268    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    269    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    270    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    271    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
    272 };
    273 #if YYBTYACC
    274 static const YYINT calc_code_default_ctable[] = {        -1,
    275    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    276    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    277    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    278    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    279    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    280    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    281    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    282    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    283    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    284    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    285    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    286    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    287    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    288    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    289    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    290    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    291    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    292    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    293    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    294    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    295    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    296    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    297 };
    298 #endif
    299 #define YYFINAL 1
    300 #ifndef YYDEBUG
    301 #define YYDEBUG 0
    302 #endif
    303 #define YYMAXTOKEN 259
    304 #define YYUNDFTOKEN 265
    305 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    306 #if YYDEBUG
    307 #ifndef NULL
    308 #define NULL (void*)0
    309 #endif
    310 static const char *const calc_code_default_name[] = {
    311 
    312 "$end",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'\\n'",NULL,NULL,NULL,NULL,
    313 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    314 NULL,NULL,NULL,NULL,NULL,NULL,"'%'","'&'",NULL,"'('","')'","'*'","'+'",NULL,
    315 "'-'",NULL,"'/'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    316 NULL,"'='",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    317 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    318 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    319 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    320 NULL,"'|'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    321 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    322 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    323 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    324 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    325 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    326 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    327 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    328 NULL,NULL,NULL,NULL,NULL,NULL,"error","DIGIT","LETTER","UMINUS","$accept",
    329 "list","stat","expr","number","illegal-symbol",
    330 };
    331 static const char *const calc_code_default_rule[] = {
    332 "$accept : list",
    333 "list :",
    334 "list : list stat '\\n'",
    335 "list : list error '\\n'",
    336 "stat : expr",
    337 "stat : LETTER '=' expr",
    338 "expr : '(' expr ')'",
    339 "expr : expr '+' expr",
    340 "expr : expr '-' expr",
    341 "expr : expr '*' expr",
    342 "expr : expr '/' expr",
    343 "expr : expr '%' expr",
    344 "expr : expr '&' expr",
    345 "expr : expr '|' expr",
    346 "expr : '-' expr",
    347 "expr : LETTER",
    348 "expr : number",
    349 "number : DIGIT",
    350 "number : number DIGIT",
    351 
    352 };
    353 #endif
    354 
    355 #if YYDEBUG
    356 int      yydebug;
    357 #endif
    358 
    359 int      yyerrflag;
    360 int      yychar;
    361 YYSTYPE  yyval;
    362 YYSTYPE  yylval;
    363 int      yynerrs;
    364 
    365 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    366 YYLTYPE  yyloc; /* position returned by actions */
    367 YYLTYPE  yylloc; /* position from the lexer */
    368 #endif
    369 
    370 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    371 #ifndef YYLLOC_DEFAULT
    372 #define YYLLOC_DEFAULT(loc, rhs, n) \
    373 do \
    374 { \
    375     if (n == 0) \
    376     { \
    377         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
    378         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
    379         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
    380         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
    381     } \
    382     else \
    383     { \
    384         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
    385         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
    386         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
    387         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
    388     } \
    389 } while (0)
    390 #endif /* YYLLOC_DEFAULT */
    391 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
    392 #if YYBTYACC
    393 
    394 #ifndef YYLVQUEUEGROWTH
    395 #define YYLVQUEUEGROWTH 32
    396 #endif
    397 #endif /* YYBTYACC */
    398 
    399 /* define the initial stack-sizes */
    400 #ifdef YYSTACKSIZE
    401 #undef YYMAXDEPTH
    402 #define YYMAXDEPTH  YYSTACKSIZE
    403 #else
    404 #ifdef YYMAXDEPTH
    405 #define YYSTACKSIZE YYMAXDEPTH
    406 #else
    407 #define YYSTACKSIZE 10000
    408 #define YYMAXDEPTH  10000
    409 #endif
    410 #endif
    411 
    412 #ifndef YYINITSTACKSIZE
    413 #define YYINITSTACKSIZE 200
    414 #endif
    415 
    416 typedef struct {
    417     unsigned stacksize;
    418     YYINT    *s_base;
    419     YYINT    *s_mark;
    420     YYINT    *s_last;
    421     YYSTYPE  *l_base;
    422     YYSTYPE  *l_mark;
    423 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    424     YYLTYPE  *p_base;
    425     YYLTYPE  *p_mark;
    426 #endif
    427 } YYSTACKDATA;
    428 #if YYBTYACC
    429 
    430 struct YYParseState_s
    431 {
    432     struct YYParseState_s *save;    /* Previously saved parser state */
    433     YYSTACKDATA            yystack; /* saved parser stack */
    434     int                    state;   /* saved parser state */
    435     int                    errflag; /* saved error recovery status */
    436     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
    437     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
    438 };
    439 typedef struct YYParseState_s YYParseState;
    440 #endif /* YYBTYACC */
    441 /* variables for the parser stack */
    442 static YYSTACKDATA yystack;
    443 #if YYBTYACC
    444 
    445 /* Current parser state */
    446 static YYParseState *yyps = NULL;
    447 
    448 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
    449 static YYParseState *yypath = NULL;
    450 
    451 /* Base of the lexical value queue */
    452 static YYSTYPE *yylvals = NULL;
    453 
    454 /* Current position at lexical value queue */
    455 static YYSTYPE *yylvp = NULL;
    456 
    457 /* End position of lexical value queue */
    458 static YYSTYPE *yylve = NULL;
    459 
    460 /* The last allocated position at the lexical value queue */
    461 static YYSTYPE *yylvlim = NULL;
    462 
    463 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    464 /* Base of the lexical position queue */
    465 static YYLTYPE *yylpsns = NULL;
    466 
    467 /* Current position at lexical position queue */
    468 static YYLTYPE *yylpp = NULL;
    469 
    470 /* End position of lexical position queue */
    471 static YYLTYPE *yylpe = NULL;
    472 
    473 /* The last allocated position at the lexical position queue */
    474 static YYLTYPE *yylplim = NULL;
    475 #endif
    476 
    477 /* Current position at lexical token queue */
    478 static YYINT  *yylexp = NULL;
    479 
    480 static YYINT  *yylexemes = NULL;
    481 #endif /* YYBTYACC */
    482 
    483 /* %code "" block start */
    484 #line 1 "calc_code_default.y"
    485 /* CODE-DEFAULT */
    486 #line 2 "calc_code_default.y"
    487 /* CODE-DEFAULT2 */
    488 /* %code "" block end */
    489 #line 488 "calc_code_default.tab.c"
    490 #line 69 "calc_code_default.y"
    491  /* start of programs */
    492 
    493 int
    494 main (void)
    495 {
    496     while(!feof(stdin)) {
    497 	yyparse();
    498     }
    499     return 0;
    500 }
    501 
    502 static void
    503 yyerror(const char *s)
    504 {
    505     fprintf(stderr, "%s\n", s);
    506 }
    507 
    508 int
    509 yylex(void)
    510 {
    511 	/* lexical analysis routine */
    512 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
    513 	/* return DIGIT for a digit, yylval = 0 through 9 */
    514 	/* all other characters are returned immediately */
    515 
    516     int c;
    517 
    518     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
    519 
    520     /* c is now nonblank */
    521 
    522     if( islower( c )) {
    523 	yylval = c - 'a';
    524 	return ( LETTER );
    525     }
    526     if( isdigit( c )) {
    527 	yylval = c - '0';
    528 	return ( DIGIT );
    529     }
    530     return( c );
    531 }
    532 #line 531 "calc_code_default.tab.c"
    533 
    534 /* For use in generated program */
    535 #define yydepth (int)(yystack.s_mark - yystack.s_base)
    536 #if YYBTYACC
    537 #define yytrial (yyps->save)
    538 #endif /* YYBTYACC */
    539 
    540 #if YYDEBUG
    541 #include <stdio.h>	/* needed for printf */
    542 #endif
    543 
    544 #include <stdlib.h>	/* needed for malloc, etc */
    545 #include <string.h>	/* needed for memset */
    546 
    547 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    548 static int yygrowstack(YYSTACKDATA *data)
    549 {
    550     int i;
    551     unsigned newsize;
    552     YYINT *newss;
    553     YYSTYPE *newvs;
    554 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    555     YYLTYPE *newps;
    556 #endif
    557 
    558     if ((newsize = data->stacksize) == 0)
    559         newsize = YYINITSTACKSIZE;
    560     else if (newsize >= YYMAXDEPTH)
    561         return YYENOMEM;
    562     else if ((newsize *= 2) > YYMAXDEPTH)
    563         newsize = YYMAXDEPTH;
    564 
    565     i = (int) (data->s_mark - data->s_base);
    566     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    567     if (newss == NULL)
    568         return YYENOMEM;
    569 
    570     data->s_base = newss;
    571     data->s_mark = newss + i;
    572 
    573     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    574     if (newvs == NULL)
    575         return YYENOMEM;
    576 
    577     data->l_base = newvs;
    578     data->l_mark = newvs + i;
    579 
    580 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    581     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
    582     if (newps == NULL)
    583         return YYENOMEM;
    584 
    585     data->p_base = newps;
    586     data->p_mark = newps + i;
    587 #endif
    588 
    589     data->stacksize = newsize;
    590     data->s_last = data->s_base + newsize - 1;
    591 
    592 #if YYDEBUG
    593     if (yydebug)
    594         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
    595 #endif
    596     return 0;
    597 }
    598 
    599 #if YYPURE || defined(YY_NO_LEAKS)
    600 static void yyfreestack(YYSTACKDATA *data)
    601 {
    602     free(data->s_base);
    603     free(data->l_base);
    604 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    605     free(data->p_base);
    606 #endif
    607     memset(data, 0, sizeof(*data));
    608 }
    609 #else
    610 #define yyfreestack(data) /* nothing */
    611 #endif /* YYPURE || defined(YY_NO_LEAKS) */
    612 #if YYBTYACC
    613 
    614 static YYParseState *
    615 yyNewState(unsigned size)
    616 {
    617     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
    618     if (p == NULL) return NULL;
    619 
    620     p->yystack.stacksize = size;
    621     if (size == 0)
    622     {
    623         p->yystack.s_base = NULL;
    624         p->yystack.l_base = NULL;
    625 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    626         p->yystack.p_base = NULL;
    627 #endif
    628         return p;
    629     }
    630     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
    631     if (p->yystack.s_base == NULL) return NULL;
    632     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
    633     if (p->yystack.l_base == NULL) return NULL;
    634     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
    635 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    636     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
    637     if (p->yystack.p_base == NULL) return NULL;
    638     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
    639 #endif
    640 
    641     return p;
    642 }
    643 
    644 static void
    645 yyFreeState(YYParseState *p)
    646 {
    647     yyfreestack(&p->yystack);
    648     free(p);
    649 }
    650 #endif /* YYBTYACC */
    651 
    652 #define YYABORT  goto yyabort
    653 #define YYREJECT goto yyabort
    654 #define YYACCEPT goto yyaccept
    655 #define YYERROR  goto yyerrlab
    656 #if YYBTYACC
    657 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
    658 #define YYVALID_NESTED do { if (yyps->save && \
    659                                 yyps->save->save == 0) goto yyvalid; } while(0)
    660 #endif /* YYBTYACC */
    661 
    662 int
    663 YYPARSE_DECL()
    664 {
    665     int yym, yyn, yystate, yyresult;
    666 #if YYBTYACC
    667     int yynewerrflag;
    668     YYParseState *yyerrctx = NULL;
    669 #endif /* YYBTYACC */
    670 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    671     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
    672 #endif
    673 #if YYDEBUG
    674     const char *yys;
    675 
    676     if ((yys = getenv("YYDEBUG")) != NULL)
    677     {
    678         yyn = *yys;
    679         if (yyn >= '0' && yyn <= '9')
    680             yydebug = yyn - '0';
    681     }
    682     if (yydebug)
    683         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
    684 #endif
    685 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    686     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
    687 #endif
    688 
    689 #if YYBTYACC
    690     yyps = yyNewState(0); if (yyps == NULL) goto yyenomem;
    691     yyps->save = NULL;
    692 #endif /* YYBTYACC */
    693     yym = 0;
    694     /* yyn is set below */
    695     yynerrs = 0;
    696     yyerrflag = 0;
    697     yychar = YYEMPTY;
    698     yystate = 0;
    699 
    700 #if YYPURE
    701     memset(&yystack, 0, sizeof(yystack));
    702 #endif
    703 
    704     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    705     yystack.s_mark = yystack.s_base;
    706     yystack.l_mark = yystack.l_base;
    707 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    708     yystack.p_mark = yystack.p_base;
    709 #endif
    710     yystate = 0;
    711     *yystack.s_mark = 0;
    712 
    713 yyloop:
    714     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    715     if (yychar < 0)
    716     {
    717 #if YYBTYACC
    718         do {
    719         if (yylvp < yylve)
    720         {
    721             /* we're currently re-reading tokens */
    722             yylval = *yylvp++;
    723 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    724             yylloc = *yylpp++;
    725 #endif
    726             yychar = *yylexp++;
    727             break;
    728         }
    729         if (yyps->save)
    730         {
    731             /* in trial mode; save scanner results for future parse attempts */
    732             if (yylvp == yylvlim)
    733             {   /* Enlarge lexical value queue */
    734                 size_t p = (size_t) (yylvp - yylvals);
    735                 size_t s = (size_t) (yylvlim - yylvals);
    736 
    737                 s += YYLVQUEUEGROWTH;
    738                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
    739                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
    740 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    741                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
    742 #endif
    743                 yylvp   = yylve = yylvals + p;
    744                 yylvlim = yylvals + s;
    745 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    746                 yylpp   = yylpe = yylpsns + p;
    747                 yylplim = yylpsns + s;
    748 #endif
    749                 yylexp  = yylexemes + p;
    750             }
    751             *yylexp = (YYINT) YYLEX;
    752             *yylvp++ = yylval;
    753             yylve++;
    754 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    755             *yylpp++ = yylloc;
    756             yylpe++;
    757 #endif
    758             yychar = *yylexp++;
    759             break;
    760         }
    761         /* normal operation, no conflict encountered */
    762 #endif /* YYBTYACC */
    763         yychar = YYLEX;
    764 #if YYBTYACC
    765         } while (0);
    766 #endif /* YYBTYACC */
    767         if (yychar < 0) yychar = YYEOF;
    768 #if YYDEBUG
    769         if (yydebug)
    770         {
    771             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    772             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
    773                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
    774 #ifdef YYSTYPE_TOSTRING
    775 #if YYBTYACC
    776             if (!yytrial)
    777 #endif /* YYBTYACC */
    778                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
    779 #endif
    780             fputc('\n', stderr);
    781         }
    782 #endif
    783     }
    784 #if YYBTYACC
    785 
    786     /* Do we have a conflict? */
    787     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    788         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    789     {
    790         YYINT ctry;
    791 
    792         if (yypath)
    793         {
    794             YYParseState *save;
    795 #if YYDEBUG
    796             if (yydebug)
    797                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
    798                                 YYDEBUGSTR, yydepth, yystate);
    799 #endif
    800             /* Switch to the next conflict context */
    801             save = yypath;
    802             yypath = save->save;
    803             save->save = NULL;
    804             ctry = save->ctry;
    805             if (save->state != yystate) YYABORT;
    806             yyFreeState(save);
    807 
    808         }
    809         else
    810         {
    811 
    812             /* Unresolved conflict - start/continue trial parse */
    813             YYParseState *save;
    814 #if YYDEBUG
    815             if (yydebug)
    816             {
    817                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
    818                 if (yyps->save)
    819                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
    820                 else
    821                     fputs("Starting trial parse.\n", stderr);
    822             }
    823 #endif
    824             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
    825             if (save == NULL) goto yyenomem;
    826             save->save            = yyps->save;
    827             save->state           = yystate;
    828             save->errflag         = yyerrflag;
    829             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
    830             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    831             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
    832             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    833 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    834             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
    835             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
    836 #endif
    837             ctry                  = yytable[yyn];
    838             if (yyctable[ctry] == -1)
    839             {
    840 #if YYDEBUG
    841                 if (yydebug && yychar >= YYEOF)
    842                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
    843 #endif
    844                 ctry++;
    845             }
    846             save->ctry = ctry;
    847             if (yyps->save == NULL)
    848             {
    849                 /* If this is a first conflict in the stack, start saving lexemes */
    850                 if (!yylexemes)
    851                 {
    852                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
    853                     if (yylexemes == NULL) goto yyenomem;
    854                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
    855                     if (yylvals == NULL) goto yyenomem;
    856                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
    857 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    858                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
    859                     if (yylpsns == NULL) goto yyenomem;
    860                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
    861 #endif
    862                 }
    863                 if (yylvp == yylve)
    864                 {
    865                     yylvp  = yylve = yylvals;
    866 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    867                     yylpp  = yylpe = yylpsns;
    868 #endif
    869                     yylexp = yylexemes;
    870                     if (yychar >= YYEOF)
    871                     {
    872                         *yylve++ = yylval;
    873 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    874                         *yylpe++ = yylloc;
    875 #endif
    876                         *yylexp  = (YYINT) yychar;
    877                         yychar   = YYEMPTY;
    878                     }
    879                 }
    880             }
    881             if (yychar >= YYEOF)
    882             {
    883                 yylvp--;
    884 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    885                 yylpp--;
    886 #endif
    887                 yylexp--;
    888                 yychar = YYEMPTY;
    889             }
    890             save->lexeme = (int) (yylvp - yylvals);
    891             yyps->save   = save;
    892         }
    893         if (yytable[yyn] == ctry)
    894         {
    895 #if YYDEBUG
    896             if (yydebug)
    897                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    898                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
    899 #endif
    900             if (yychar < 0)
    901             {
    902                 yylvp++;
    903 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    904                 yylpp++;
    905 #endif
    906                 yylexp++;
    907             }
    908             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
    909                 goto yyoverflow;
    910             yystate = yyctable[ctry];
    911             *++yystack.s_mark = (YYINT) yystate;
    912             *++yystack.l_mark = yylval;
    913 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    914             *++yystack.p_mark = yylloc;
    915 #endif
    916             yychar  = YYEMPTY;
    917             if (yyerrflag > 0) --yyerrflag;
    918             goto yyloop;
    919         }
    920         else
    921         {
    922             yyn = yyctable[ctry];
    923             goto yyreduce;
    924         }
    925     } /* End of code dealing with conflicts */
    926 #endif /* YYBTYACC */
    927     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    928             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    929     {
    930 #if YYDEBUG
    931         if (yydebug)
    932             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
    933                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
    934 #endif
    935         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    936         yystate = yytable[yyn];
    937         *++yystack.s_mark = yytable[yyn];
    938         *++yystack.l_mark = yylval;
    939 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    940         *++yystack.p_mark = yylloc;
    941 #endif
    942         yychar = YYEMPTY;
    943         if (yyerrflag > 0)  --yyerrflag;
    944         goto yyloop;
    945     }
    946     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    947             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    948     {
    949         yyn = yytable[yyn];
    950         goto yyreduce;
    951     }
    952     if (yyerrflag != 0) goto yyinrecovery;
    953 #if YYBTYACC
    954 
    955     yynewerrflag = 1;
    956     goto yyerrhandler;
    957     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    958 
    959 yyerrlab:
    960     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
    961      * before looking for error recovery */
    962     yystack.s_mark -= yym;
    963     yystate = *yystack.s_mark;
    964     yystack.l_mark -= yym;
    965 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    966     yystack.p_mark -= yym;
    967 #endif
    968 
    969     yynewerrflag = 0;
    970 yyerrhandler:
    971     while (yyps->save)
    972     {
    973         int ctry;
    974         YYParseState *save = yyps->save;
    975 #if YYDEBUG
    976         if (yydebug)
    977             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
    978                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
    979                     (int)(yylvp - yylvals - yyps->save->lexeme));
    980 #endif
    981         /* Memorize most forward-looking error state in case it's really an error. */
    982         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
    983         {
    984             /* Free old saved error context state */
    985             if (yyerrctx) yyFreeState(yyerrctx);
    986             /* Create and fill out new saved error context state */
    987             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
    988             if (yyerrctx == NULL) goto yyenomem;
    989             yyerrctx->save           = yyps->save;
    990             yyerrctx->state          = yystate;
    991             yyerrctx->errflag        = yyerrflag;
    992             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
    993             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
    994             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
    995             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
    996 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
    997             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
    998             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
    999 #endif
   1000             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   1001         }
   1002         yylvp          = yylvals   + save->lexeme;
   1003 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1004         yylpp          = yylpsns   + save->lexeme;
   1005 #endif
   1006         yylexp         = yylexemes + save->lexeme;
   1007         yychar         = YYEMPTY;
   1008         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   1009         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1010         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   1011         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1012 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1013         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   1014         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1015 #endif
   1016         ctry           = ++save->ctry;
   1017         yystate        = save->state;
   1018         /* We tried shift, try reduce now */
   1019         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1020         yyps->save     = save->save;
   1021         save->save     = NULL;
   1022         yyFreeState(save);
   1023 
   1024         /* Nothing left on the stack -- error */
   1025         if (!yyps->save)
   1026         {
   1027 #if YYDEBUG
   1028             if (yydebug)
   1029                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1030                                 YYPREFIX, yydepth);
   1031 #endif
   1032             /* Restore state as it was in the most forward-advanced error */
   1033             yylvp          = yylvals   + yyerrctx->lexeme;
   1034 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1035             yylpp          = yylpsns   + yyerrctx->lexeme;
   1036 #endif
   1037             yylexp         = yylexemes + yyerrctx->lexeme;
   1038             yychar         = yylexp[-1];
   1039             yylval         = yylvp[-1];
   1040 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1041             yylloc         = yylpp[-1];
   1042 #endif
   1043             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1044             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1045             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1046             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1047 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1048             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1049             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1050 #endif
   1051             yystate        = yyerrctx->state;
   1052             yyFreeState(yyerrctx);
   1053             yyerrctx       = NULL;
   1054         }
   1055         yynewerrflag = 1;
   1056     }
   1057     if (yynewerrflag == 0) goto yyinrecovery;
   1058 #endif /* YYBTYACC */
   1059 
   1060     YYERROR_CALL("syntax error");
   1061 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1062     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
   1063 #endif
   1064 
   1065 #if !YYBTYACC
   1066     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1067 yyerrlab:
   1068 #endif
   1069     ++yynerrs;
   1070 
   1071 yyinrecovery:
   1072     if (yyerrflag < 3)
   1073     {
   1074         yyerrflag = 3;
   1075         for (;;)
   1076         {
   1077             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1078                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1079             {
   1080 #if YYDEBUG
   1081                 if (yydebug)
   1082                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1083                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1084 #endif
   1085                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1086                 yystate = yytable[yyn];
   1087                 *++yystack.s_mark = yytable[yyn];
   1088                 *++yystack.l_mark = yylval;
   1089 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1090                 /* lookahead position is error end position */
   1091                 yyerror_loc_range[2] = yylloc;
   1092                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1093                 *++yystack.p_mark = yyloc;
   1094 #endif
   1095                 goto yyloop;
   1096             }
   1097             else
   1098             {
   1099 #if YYDEBUG
   1100                 if (yydebug)
   1101                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1102                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1103 #endif
   1104                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1105 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1106                 /* the current TOS position is the error start position */
   1107                 yyerror_loc_range[1] = *yystack.p_mark;
   1108 #endif
   1109 #if defined(YYDESTRUCT_CALL)
   1110 #if YYBTYACC
   1111                 if (!yytrial)
   1112 #endif /* YYBTYACC */
   1113 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1114                     YYDESTRUCT_CALL("error: discarding state",
   1115                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1116 #else
   1117                     YYDESTRUCT_CALL("error: discarding state",
   1118                                     yystos[*yystack.s_mark], yystack.l_mark);
   1119 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1120 #endif /* defined(YYDESTRUCT_CALL) */
   1121                 --yystack.s_mark;
   1122                 --yystack.l_mark;
   1123 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1124                 --yystack.p_mark;
   1125 #endif
   1126             }
   1127         }
   1128     }
   1129     else
   1130     {
   1131         if (yychar == YYEOF) goto yyabort;
   1132 #if YYDEBUG
   1133         if (yydebug)
   1134         {
   1135             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1136             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1137                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1138         }
   1139 #endif
   1140 #if defined(YYDESTRUCT_CALL)
   1141 #if YYBTYACC
   1142         if (!yytrial)
   1143 #endif /* YYBTYACC */
   1144 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1145             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1146 #else
   1147             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1148 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1149 #endif /* defined(YYDESTRUCT_CALL) */
   1150         yychar = YYEMPTY;
   1151         goto yyloop;
   1152     }
   1153 
   1154 yyreduce:
   1155     yym = yylen[yyn];
   1156 #if YYDEBUG
   1157     if (yydebug)
   1158     {
   1159         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1160                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1161 #ifdef YYSTYPE_TOSTRING
   1162 #if YYBTYACC
   1163         if (!yytrial)
   1164 #endif /* YYBTYACC */
   1165             if (yym > 0)
   1166             {
   1167                 int i;
   1168                 fputc('<', stderr);
   1169                 for (i = yym; i > 0; i--)
   1170                 {
   1171                     if (i != yym) fputs(", ", stderr);
   1172                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   1173                                            yystack.l_mark[1-i]), stderr);
   1174                 }
   1175                 fputc('>', stderr);
   1176             }
   1177 #endif
   1178         fputc('\n', stderr);
   1179     }
   1180 #endif
   1181     if (yym > 0)
   1182         yyval = yystack.l_mark[1-yym];
   1183     else
   1184         memset(&yyval, 0, sizeof yyval);
   1185 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1186 
   1187     /* Perform position reduction */
   1188     memset(&yyloc, 0, sizeof(yyloc));
   1189 #if YYBTYACC
   1190     if (!yytrial)
   1191 #endif /* YYBTYACC */
   1192     {
   1193         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
   1194         /* just in case YYERROR is invoked within the action, save
   1195            the start of the rhs as the error start position */
   1196         yyerror_loc_range[1] = yystack.p_mark[1-yym];
   1197     }
   1198 #endif
   1199 
   1200     switch (yyn)
   1201     {
   1202 case 3:
   1203 #line 31 "calc_code_default.y"
   1204 	{  yyerrok ; }
   1205 #line 1204 "calc_code_default.tab.c"
   1206 break;
   1207 case 4:
   1208 #line 35 "calc_code_default.y"
   1209 	{  printf("%d\n",yystack.l_mark[0]);}
   1210 #line 1209 "calc_code_default.tab.c"
   1211 break;
   1212 case 5:
   1213 #line 37 "calc_code_default.y"
   1214 	{  regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }
   1215 #line 1214 "calc_code_default.tab.c"
   1216 break;
   1217 case 6:
   1218 #line 41 "calc_code_default.y"
   1219 	{  yyval = yystack.l_mark[-1]; }
   1220 #line 1219 "calc_code_default.tab.c"
   1221 break;
   1222 case 7:
   1223 #line 43 "calc_code_default.y"
   1224 	{  yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }
   1225 #line 1224 "calc_code_default.tab.c"
   1226 break;
   1227 case 8:
   1228 #line 45 "calc_code_default.y"
   1229 	{  yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }
   1230 #line 1229 "calc_code_default.tab.c"
   1231 break;
   1232 case 9:
   1233 #line 47 "calc_code_default.y"
   1234 	{  yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }
   1235 #line 1234 "calc_code_default.tab.c"
   1236 break;
   1237 case 10:
   1238 #line 49 "calc_code_default.y"
   1239 	{  yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }
   1240 #line 1239 "calc_code_default.tab.c"
   1241 break;
   1242 case 11:
   1243 #line 51 "calc_code_default.y"
   1244 	{  yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }
   1245 #line 1244 "calc_code_default.tab.c"
   1246 break;
   1247 case 12:
   1248 #line 53 "calc_code_default.y"
   1249 	{  yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }
   1250 #line 1249 "calc_code_default.tab.c"
   1251 break;
   1252 case 13:
   1253 #line 55 "calc_code_default.y"
   1254 	{  yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }
   1255 #line 1254 "calc_code_default.tab.c"
   1256 break;
   1257 case 14:
   1258 #line 57 "calc_code_default.y"
   1259 	{  yyval = - yystack.l_mark[0]; }
   1260 #line 1259 "calc_code_default.tab.c"
   1261 break;
   1262 case 15:
   1263 #line 59 "calc_code_default.y"
   1264 	{  yyval = regs[yystack.l_mark[0]]; }
   1265 #line 1264 "calc_code_default.tab.c"
   1266 break;
   1267 case 17:
   1268 #line 64 "calc_code_default.y"
   1269 	{  yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }
   1270 #line 1269 "calc_code_default.tab.c"
   1271 break;
   1272 case 18:
   1273 #line 66 "calc_code_default.y"
   1274 	{  yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }
   1275 #line 1274 "calc_code_default.tab.c"
   1276 break;
   1277 #line 1276 "calc_code_default.tab.c"
   1278     default:
   1279         break;
   1280     }
   1281     yystack.s_mark -= yym;
   1282     yystate = *yystack.s_mark;
   1283     yystack.l_mark -= yym;
   1284 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1285     yystack.p_mark -= yym;
   1286 #endif
   1287     yym = yylhs[yyn];
   1288     if (yystate == 0 && yym == 0)
   1289     {
   1290 #if YYDEBUG
   1291         if (yydebug)
   1292         {
   1293             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1294 #ifdef YYSTYPE_TOSTRING
   1295 #if YYBTYACC
   1296             if (!yytrial)
   1297 #endif /* YYBTYACC */
   1298                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   1299 #endif
   1300             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   1301         }
   1302 #endif
   1303         yystate = YYFINAL;
   1304         *++yystack.s_mark = YYFINAL;
   1305         *++yystack.l_mark = yyval;
   1306 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1307         *++yystack.p_mark = yyloc;
   1308 #endif
   1309         if (yychar < 0)
   1310         {
   1311 #if YYBTYACC
   1312             do {
   1313             if (yylvp < yylve)
   1314             {
   1315                 /* we're currently re-reading tokens */
   1316                 yylval = *yylvp++;
   1317 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1318                 yylloc = *yylpp++;
   1319 #endif
   1320                 yychar = *yylexp++;
   1321                 break;
   1322             }
   1323             if (yyps->save)
   1324             {
   1325                 /* in trial mode; save scanner results for future parse attempts */
   1326                 if (yylvp == yylvlim)
   1327                 {   /* Enlarge lexical value queue */
   1328                     size_t p = (size_t) (yylvp - yylvals);
   1329                     size_t s = (size_t) (yylvlim - yylvals);
   1330 
   1331                     s += YYLVQUEUEGROWTH;
   1332                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   1333                         goto yyenomem;
   1334                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   1335                         goto yyenomem;
   1336 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1337                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   1338                         goto yyenomem;
   1339 #endif
   1340                     yylvp   = yylve = yylvals + p;
   1341                     yylvlim = yylvals + s;
   1342 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1343                     yylpp   = yylpe = yylpsns + p;
   1344                     yylplim = yylpsns + s;
   1345 #endif
   1346                     yylexp  = yylexemes + p;
   1347                 }
   1348                 *yylexp = (YYINT) YYLEX;
   1349                 *yylvp++ = yylval;
   1350                 yylve++;
   1351 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1352                 *yylpp++ = yylloc;
   1353                 yylpe++;
   1354 #endif
   1355                 yychar = *yylexp++;
   1356                 break;
   1357             }
   1358             /* normal operation, no conflict encountered */
   1359 #endif /* YYBTYACC */
   1360             yychar = YYLEX;
   1361 #if YYBTYACC
   1362             } while (0);
   1363 #endif /* YYBTYACC */
   1364             if (yychar < 0) yychar = YYEOF;
   1365 #if YYDEBUG
   1366             if (yydebug)
   1367             {
   1368                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1369                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   1370                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   1371             }
   1372 #endif
   1373         }
   1374         if (yychar == YYEOF) goto yyaccept;
   1375         goto yyloop;
   1376     }
   1377     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   1378             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   1379         yystate = yytable[yyn];
   1380     else
   1381         yystate = yydgoto[yym];
   1382 #if YYDEBUG
   1383     if (yydebug)
   1384     {
   1385         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1386 #ifdef YYSTYPE_TOSTRING
   1387 #if YYBTYACC
   1388         if (!yytrial)
   1389 #endif /* YYBTYACC */
   1390             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   1391 #endif
   1392         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   1393     }
   1394 #endif
   1395     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1396     *++yystack.s_mark = (YYINT) yystate;
   1397     *++yystack.l_mark = yyval;
   1398 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1399     *++yystack.p_mark = yyloc;
   1400 #endif
   1401     goto yyloop;
   1402 #if YYBTYACC
   1403 
   1404     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   1405 yyvalid:
   1406     if (yypath) YYABORT;
   1407     while (yyps->save)
   1408     {
   1409         YYParseState *save = yyps->save;
   1410         yyps->save = save->save;
   1411         save->save = yypath;
   1412         yypath = save;
   1413     }
   1414 #if YYDEBUG
   1415     if (yydebug)
   1416         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   1417                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   1418 #endif
   1419     if (yyerrctx)
   1420     {
   1421         yyFreeState(yyerrctx);
   1422         yyerrctx = NULL;
   1423     }
   1424     yylvp          = yylvals + yypath->lexeme;
   1425 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1426     yylpp          = yylpsns + yypath->lexeme;
   1427 #endif
   1428     yylexp         = yylexemes + yypath->lexeme;
   1429     yychar         = YYEMPTY;
   1430     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   1431     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1432     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   1433     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1434 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1435     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   1436     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1437 #endif
   1438     yystate        = yypath->state;
   1439     goto yyloop;
   1440 #endif /* YYBTYACC */
   1441 
   1442 yyoverflow:
   1443     YYERROR_CALL("yacc stack overflow");
   1444 #if YYBTYACC
   1445     goto yyabort_nomem;
   1446 yyenomem:
   1447     YYERROR_CALL("memory exhausted");
   1448 yyabort_nomem:
   1449 #endif /* YYBTYACC */
   1450     yyresult = 2;
   1451     goto yyreturn;
   1452 
   1453 yyabort:
   1454     yyresult = 1;
   1455     goto yyreturn;
   1456 
   1457 yyaccept:
   1458 #if YYBTYACC
   1459     if (yyps->save) goto yyvalid;
   1460 #endif /* YYBTYACC */
   1461     yyresult = 0;
   1462 
   1463 yyreturn:
   1464 #if defined(YYDESTRUCT_CALL)
   1465     if (yychar != YYEOF && yychar != YYEMPTY)
   1466 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1467         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   1468 #else
   1469         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   1470 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1471 
   1472     {
   1473         YYSTYPE *pv;
   1474 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1475         YYLTYPE *pp;
   1476 
   1477         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   1478              YYDESTRUCT_CALL("cleanup: discarding state",
   1479                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   1480 #else
   1481         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   1482              YYDESTRUCT_CALL("cleanup: discarding state",
   1483                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   1484 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1485     }
   1486 #endif /* defined(YYDESTRUCT_CALL) */
   1487 
   1488 #if YYBTYACC
   1489     if (yyerrctx)
   1490     {
   1491         yyFreeState(yyerrctx);
   1492         yyerrctx = NULL;
   1493     }
   1494     while (yyps)
   1495     {
   1496         YYParseState *save = yyps;
   1497         yyps = save->save;
   1498         save->save = NULL;
   1499         yyFreeState(save);
   1500     }
   1501     while (yypath)
   1502     {
   1503         YYParseState *save = yypath;
   1504         yypath = save->save;
   1505         save->save = NULL;
   1506         yyFreeState(save);
   1507     }
   1508 #endif /* YYBTYACC */
   1509     yyfreestack(&yystack);
   1510     return (yyresult);
   1511 }
   1512