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