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