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