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