Home | History | Annotate | Line # | Download | only in btyacc
varsyntax_calc1.tab.c revision 1.5.8.1
      1 /*	$NetBSD: varsyntax_calc1.tab.c,v 1.5.8.1 2025/08/02 05:20:58 perseant Exp $	*/
      2 
      3 /* original parser id follows */
      4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6 
      7 #define YYBYACC 1
      8 #define YYMAJOR 2
      9 #define YYMINOR 0
     10 #define YYCHECK "yyyymmdd"
     11 
     12 #define YYEMPTY        (-1)
     13 #define yyclearin      (yychar = YYEMPTY)
     14 #define yyerrok        (yyerrflag = 0)
     15 #define YYRECOVERING() (yyerrflag != 0)
     16 #define YYENOMEM       (-2)
     17 #define YYEOF          0
     18 #ident "check variant syntax features"
     19 #undef YYBTYACC
     20 #define YYBTYACC 0
     21 #define YYDEBUGSTR YYPREFIX "debug"
     22 
     23 #ifndef yyparse
     24 #define yyparse    varsyntax_calc1_parse
     25 #endif /* yyparse */
     26 
     27 #ifndef yylex
     28 #define yylex      varsyntax_calc1_lex
     29 #endif /* yylex */
     30 
     31 #ifndef yyerror
     32 #define yyerror    varsyntax_calc1_error
     33 #endif /* yyerror */
     34 
     35 #ifndef yychar
     36 #define yychar     varsyntax_calc1_char
     37 #endif /* yychar */
     38 
     39 #ifndef yyval
     40 #define yyval      varsyntax_calc1_val
     41 #endif /* yyval */
     42 
     43 #ifndef yylval
     44 #define yylval     varsyntax_calc1_lval
     45 #endif /* yylval */
     46 
     47 #ifndef yydebug
     48 #define yydebug    varsyntax_calc1_debug
     49 #endif /* yydebug */
     50 
     51 #ifndef yynerrs
     52 #define yynerrs    varsyntax_calc1_nerrs
     53 #endif /* yynerrs */
     54 
     55 #ifndef yyerrflag
     56 #define yyerrflag  varsyntax_calc1_errflag
     57 #endif /* yyerrflag */
     58 
     59 #ifndef yylhs
     60 #define yylhs      varsyntax_calc1_lhs
     61 #endif /* yylhs */
     62 
     63 #ifndef yylen
     64 #define yylen      varsyntax_calc1_len
     65 #endif /* yylen */
     66 
     67 #ifndef yydefred
     68 #define yydefred   varsyntax_calc1_defred
     69 #endif /* yydefred */
     70 
     71 #ifndef yystos
     72 #define yystos     varsyntax_calc1_stos
     73 #endif /* yystos */
     74 
     75 #ifndef yydgoto
     76 #define yydgoto    varsyntax_calc1_dgoto
     77 #endif /* yydgoto */
     78 
     79 #ifndef yysindex
     80 #define yysindex   varsyntax_calc1_sindex
     81 #endif /* yysindex */
     82 
     83 #ifndef yyrindex
     84 #define yyrindex   varsyntax_calc1_rindex
     85 #endif /* yyrindex */
     86 
     87 #ifndef yygindex
     88 #define yygindex   varsyntax_calc1_gindex
     89 #endif /* yygindex */
     90 
     91 #ifndef yytable
     92 #define yytable    varsyntax_calc1_table
     93 #endif /* yytable */
     94 
     95 #ifndef yycheck
     96 #define yycheck    varsyntax_calc1_check
     97 #endif /* yycheck */
     98 
     99 #ifndef yyname
    100 #define yyname     varsyntax_calc1_name
    101 #endif /* yyname */
    102 
    103 #ifndef yyrule
    104 #define yyrule     varsyntax_calc1_rule
    105 #endif /* yyrule */
    106 
    107 #if YYBTYACC
    108 
    109 #ifndef yycindex
    110 #define yycindex   varsyntax_calc1_cindex
    111 #endif /* yycindex */
    112 
    113 #ifndef yyctable
    114 #define yyctable   varsyntax_calc1_ctable
    115 #endif /* yyctable */
    116 
    117 #endif /* YYBTYACC */
    118 
    119 #define YYPREFIX "varsyntax_calc1_"
    120 
    121 #define YYPURE 0
    122 
    123 #line 3 "varsyntax_calc1.y"
    124 
    125 /* http://dinosaur.compilertools.net/yacc/index.html * /*/
    126 
    127 #include <stdlib.h>
    128 #include <stdio.h>
    129 #include <ctype.h>
    130 #include <math.h>
    131 
    132 typedef struct interval
    133 {
    134     double lo, hi;
    135 }
    136 INTERVAL;
    137 
    138 INTERVAL vmul(double, double, INTERVAL);
    139 INTERVAL vdiv(double, double, INTERVAL);
    140 
    141 extern int yylex(void);
    142 static void yyerror(const char *s);
    143 
    144 int dcheck(INTERVAL);
    145 
    146 double dreg[26];
    147 INTERVAL vreg[26];
    148 
    149 #ifdef YYSTYPE
    150 #undef  YYSTYPE_IS_DECLARED
    151 #define YYSTYPE_IS_DECLARED 1
    152 #endif
    153 #ifndef YYSTYPE_IS_DECLARED
    154 #define YYSTYPE_IS_DECLARED 1
    155 #line 32 "varsyntax_calc1.y"
    156 typedef union YYSTYPE
    157 {
    158 	int ival;	/* dreg & vreg array index values*/
    159 	double dval;	/* floating point values*/
    160 	INTERVAL vval;	/* interval values*/
    161 } YYSTYPE;
    162 #endif /* !YYSTYPE_IS_DECLARED */
    163 #line 162 "varsyntax_calc1.tab.c"
    164 
    165 /* compatibility with bison */
    166 #ifdef YYPARSE_PARAM
    167 /* compatibility with FreeBSD */
    168 # ifdef YYPARSE_PARAM_TYPE
    169 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    170 # else
    171 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    172 # endif
    173 #else
    174 # define YYPARSE_DECL() yyparse(void)
    175 #endif
    176 
    177 /* Parameters sent to lex. */
    178 #ifdef YYLEX_PARAM
    179 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    180 # define YYLEX yylex(YYLEX_PARAM)
    181 #else
    182 # define YYLEX_DECL() yylex(void)
    183 # define YYLEX yylex()
    184 #endif
    185 
    186 /* Parameters sent to yyerror. */
    187 #ifndef YYERROR_DECL
    188 #define YYERROR_DECL() yyerror(const char *s)
    189 #endif
    190 #ifndef YYERROR_CALL
    191 #define YYERROR_CALL(msg) yyerror(msg)
    192 #endif
    193 
    194 extern int YYPARSE_DECL();
    195 
    196 #define DREG 257
    197 #define VREG 258
    198 #define CONST 259
    199 #define UMINUS 260
    200 #define YYERRCODE 256
    201 typedef int YYINT;
    202 static const YYINT varsyntax_calc1_lhs[] = {             -1,
    203     3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
    204     1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
    205     2,    2,    2,    2,    2,    2,    2,    2,
    206 };
    207 static const YYINT varsyntax_calc1_len[] = {              2,
    208     0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
    209     3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
    210     3,    3,    3,    3,    3,    3,    2,    3,
    211 };
    212 static const YYINT varsyntax_calc1_defred[] = {           0,
    213     0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
    214     0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
    215     0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
    216     0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
    217    12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
    218     0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
    219    13,   17,
    220 };
    221 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
    222 static const YYINT varsyntax_calc1_stos[] = {             0,
    223   256,  257,  258,  259,   45,   40,  262,  263,  264,   10,
    224    61,   61,  257,  258,  263,  264,  263,  264,   43,   45,
    225    42,   47,   10,   43,   45,   42,   47,   10,   45,   40,
    226   263,  263,  264,   41,   44,   41,  263,  264,  263,  264,
    227   263,  264,  263,  264,  264,  264,  264,  264,  263,  263,
    228    43,   45,   42,   47,   10,   10,  263,  263,  263,  263,
    229   263,   41,
    230 };
    231 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
    232 static const YYINT varsyntax_calc1_dgoto[] = {            7,
    233    32,    9,    0,
    234 };
    235 static const YYINT varsyntax_calc1_sindex[] = {         -40,
    236    -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
    237   -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
    238   -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
    239    25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
    240     0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
    241   -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
    242     0,    0,
    243 };
    244 static const YYINT varsyntax_calc1_rindex[] = {           0,
    245     0,   38,   44,    0,    0,    0,    0,    0,    0,    0,
    246     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    247     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    248     0,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
    249     0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
    250     0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
    251     0,    0,
    252 };
    253 #if YYBTYACC
    254 static const YYINT varsyntax_calc1_cindex[] = {           0,
    255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    256     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    257     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    258     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    259     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    260     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    261     0,    0,
    262 };
    263 #endif
    264 static const YYINT varsyntax_calc1_gindex[] = {           0,
    265     4,  124,    0,
    266 };
    267 #define YYTABLESIZE 225
    268 static const YYINT varsyntax_calc1_table[] = {            6,
    269    16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
    270    29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
    271     0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
    272    21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
    273    56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
    274     0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
    275    10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
    276    22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
    277     9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
    278    18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
    279    11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
    280    53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
    281    10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
    282    36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
    283     0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
    284    48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
    285    51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
    286     0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    287     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    288     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    289     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    290     0,    0,    0,    0,    0,    1,    2,    3,    4,   13,
    291    14,    4,   13,    0,    4,
    292 };
    293 static const YYINT varsyntax_calc1_check[] = {           40,
    294    10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
    295    45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
    296    -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
    297    42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
    298    10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
    299    -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
    300    10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
    301    10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
    302    43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
    303    47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
    304    45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
    305    42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
    306    43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
    307    41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
    308    -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
    309    27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
    310    43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
    311    -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    312    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    313    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    314    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    315    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
    316   258,  259,  257,   -1,  259,
    317 };
    318 #if YYBTYACC
    319 static const YYINT varsyntax_calc1_ctable[] = {          -1,
    320    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    321    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    322    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    323    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    324    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    325    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    326    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    327    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    328    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    329    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    330    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    331    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    332    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    333    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    334    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    335    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    336    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    337    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    338    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    339    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    340    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    341    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    342    -1,   -1,   -1,   -1,
    343 };
    344 #endif
    345 #define YYFINAL 7
    346 #ifndef YYDEBUG
    347 #define YYDEBUG 0
    348 #endif
    349 #define YYMAXTOKEN 260
    350 #define YYUNDFTOKEN 266
    351 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    352 #if YYDEBUG
    353 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 is set below */
    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 #line 1331 "varsyntax_calc1.tab.c"
   1333 break;
   1334 case 4:
   1335 #line 63 "varsyntax_calc1.y"
   1336 	{
   1337 		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.l_mark[-1].vval.hi);
   1338 	}
   1339 #line 1338 "varsyntax_calc1.tab.c"
   1340 break;
   1341 case 5:
   1342 #line 67 "varsyntax_calc1.y"
   1343 	{
   1344 		dreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].dval;
   1345 	}
   1346 #line 1345 "varsyntax_calc1.tab.c"
   1347 break;
   1348 case 6:
   1349 #line 71 "varsyntax_calc1.y"
   1350 	{
   1351 		vreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].vval;
   1352 	}
   1353 #line 1352 "varsyntax_calc1.tab.c"
   1354 break;
   1355 case 7:
   1356 #line 75 "varsyntax_calc1.y"
   1357 	{
   1358 		yyerrok;
   1359 	}
   1360 #line 1359 "varsyntax_calc1.tab.c"
   1361 break;
   1362 case 9:
   1363 #line 82 "varsyntax_calc1.y"
   1364 	{
   1365 		yyval.dval = dreg[yystack.l_mark[0].ival]; /* $$ & $1 are sufficient here*/
   1366 	}
   1367 #line 1366 "varsyntax_calc1.tab.c"
   1368 break;
   1369 case 10:
   1370 #line 86 "varsyntax_calc1.y"
   1371 	{
   1372 		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
   1373 	}
   1374 #line 1373 "varsyntax_calc1.tab.c"
   1375 break;
   1376 case 11:
   1377 #line 90 "varsyntax_calc1.y"
   1378 	{
   1379 		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
   1380 	}
   1381 #line 1380 "varsyntax_calc1.tab.c"
   1382 break;
   1383 case 12:
   1384 #line 94 "varsyntax_calc1.y"
   1385 	{
   1386 		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
   1387 	}
   1388 #line 1387 "varsyntax_calc1.tab.c"
   1389 break;
   1390 case 13:
   1391 #line 98 "varsyntax_calc1.y"
   1392 	{
   1393 		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
   1394 	}
   1395 #line 1394 "varsyntax_calc1.tab.c"
   1396 break;
   1397 case 14:
   1398 #line 102 "varsyntax_calc1.y"
   1399 	{
   1400 		yyval.dval = -yystack.l_mark[0].dval;
   1401 	}
   1402 #line 1401 "varsyntax_calc1.tab.c"
   1403 break;
   1404 case 15:
   1405 #line 106 "varsyntax_calc1.y"
   1406 	{
   1407 		yyval.dval = yystack.l_mark[-1].dval;
   1408 	}
   1409 #line 1408 "varsyntax_calc1.tab.c"
   1410 break;
   1411 case 16:
   1412 #line 112 "varsyntax_calc1.y"
   1413 	{
   1414 		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
   1415 	}
   1416 #line 1415 "varsyntax_calc1.tab.c"
   1417 break;
   1418 case 17:
   1419 #line 116 "varsyntax_calc1.y"
   1420 	{
   1421 		yyval.vval.lo = yystack.l_mark[-3].dval;
   1422 		yyval.vval.hi = yystack.l_mark[-1].dval;
   1423 		if ( yyval.vval.lo > yyval.vval.hi )
   1424 		{
   1425 			(void) printf("interval out of order\n");
   1426 			YYERROR;
   1427 		}
   1428 	}
   1429 #line 1428 "varsyntax_calc1.tab.c"
   1430 break;
   1431 case 18:
   1432 #line 126 "varsyntax_calc1.y"
   1433 	{
   1434 		yyval.vval = vreg[yystack.l_mark[0].ival];
   1435 	}
   1436 #line 1435 "varsyntax_calc1.tab.c"
   1437 break;
   1438 case 19:
   1439 #line 130 "varsyntax_calc1.y"
   1440 	{
   1441 		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
   1442 		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
   1443 	}
   1444 #line 1443 "varsyntax_calc1.tab.c"
   1445 break;
   1446 case 20:
   1447 #line 135 "varsyntax_calc1.y"
   1448 	{
   1449 		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
   1450 		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
   1451 	}
   1452 #line 1451 "varsyntax_calc1.tab.c"
   1453 break;
   1454 case 21:
   1455 #line 140 "varsyntax_calc1.y"
   1456 	{
   1457 		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
   1458 		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
   1459 	}
   1460 #line 1459 "varsyntax_calc1.tab.c"
   1461 break;
   1462 case 22:
   1463 #line 145 "varsyntax_calc1.y"
   1464 	{
   1465 		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
   1466 		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
   1467 	}
   1468 #line 1467 "varsyntax_calc1.tab.c"
   1469 break;
   1470 case 23:
   1471 #line 150 "varsyntax_calc1.y"
   1472 	{
   1473 		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
   1474 	}
   1475 #line 1474 "varsyntax_calc1.tab.c"
   1476 break;
   1477 case 24:
   1478 #line 154 "varsyntax_calc1.y"
   1479 	{
   1480 		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
   1481 	}
   1482 #line 1481 "varsyntax_calc1.tab.c"
   1483 break;
   1484 case 25:
   1485 #line 158 "varsyntax_calc1.y"
   1486 	{
   1487 		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
   1488 		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
   1489 	}
   1490 #line 1489 "varsyntax_calc1.tab.c"
   1491 break;
   1492 case 26:
   1493 #line 163 "varsyntax_calc1.y"
   1494 	{
   1495 		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
   1496 		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
   1497 	}
   1498 #line 1497 "varsyntax_calc1.tab.c"
   1499 break;
   1500 case 27:
   1501 #line 168 "varsyntax_calc1.y"
   1502 	{
   1503 		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
   1504 		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
   1505 	}
   1506 #line 1505 "varsyntax_calc1.tab.c"
   1507 break;
   1508 case 28:
   1509 #line 173 "varsyntax_calc1.y"
   1510 	{
   1511 		yyval.vval = yystack.l_mark[-1].vval;
   1512 	}
   1513 #line 1512 "varsyntax_calc1.tab.c"
   1514 break;
   1515 #line 1514 "varsyntax_calc1.tab.c"
   1516     default:
   1517         break;
   1518     }
   1519     yystack.s_mark -= yym;
   1520     yystate = *yystack.s_mark;
   1521     yystack.l_mark -= yym;
   1522 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1523     yystack.p_mark -= yym;
   1524 #endif
   1525     yym = yylhs[yyn];
   1526     if (yystate == 0 && yym == 0)
   1527     {
   1528 #if YYDEBUG
   1529         if (yydebug)
   1530         {
   1531             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1532 #ifdef YYSTYPE_TOSTRING
   1533 #if YYBTYACC
   1534             if (!yytrial)
   1535 #endif /* YYBTYACC */
   1536                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   1537 #endif
   1538             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   1539         }
   1540 #endif
   1541         yystate = YYFINAL;
   1542         *++yystack.s_mark = YYFINAL;
   1543         *++yystack.l_mark = yyval;
   1544 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1545         *++yystack.p_mark = yyloc;
   1546 #endif
   1547         if (yychar < 0)
   1548         {
   1549 #if YYBTYACC
   1550             do {
   1551             if (yylvp < yylve)
   1552             {
   1553                 /* we're currently re-reading tokens */
   1554                 yylval = *yylvp++;
   1555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1556                 yylloc = *yylpp++;
   1557 #endif
   1558                 yychar = *yylexp++;
   1559                 break;
   1560             }
   1561             if (yyps->save)
   1562             {
   1563                 /* in trial mode; save scanner results for future parse attempts */
   1564                 if (yylvp == yylvlim)
   1565                 {   /* Enlarge lexical value queue */
   1566                     size_t p = (size_t) (yylvp - yylvals);
   1567                     size_t s = (size_t) (yylvlim - yylvals);
   1568 
   1569                     s += YYLVQUEUEGROWTH;
   1570                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   1571                         goto yyenomem;
   1572                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   1573                         goto yyenomem;
   1574 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1575                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   1576                         goto yyenomem;
   1577 #endif
   1578                     yylvp   = yylve = yylvals + p;
   1579                     yylvlim = yylvals + s;
   1580 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1581                     yylpp   = yylpe = yylpsns + p;
   1582                     yylplim = yylpsns + s;
   1583 #endif
   1584                     yylexp  = yylexemes + p;
   1585                 }
   1586                 *yylexp = (YYINT) YYLEX;
   1587                 *yylvp++ = yylval;
   1588                 yylve++;
   1589 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1590                 *yylpp++ = yylloc;
   1591                 yylpe++;
   1592 #endif
   1593                 yychar = *yylexp++;
   1594                 break;
   1595             }
   1596             /* normal operation, no conflict encountered */
   1597 #endif /* YYBTYACC */
   1598             yychar = YYLEX;
   1599 #if YYBTYACC
   1600             } while (0);
   1601 #endif /* YYBTYACC */
   1602             if (yychar < 0) yychar = YYEOF;
   1603 #if YYDEBUG
   1604             if (yydebug)
   1605             {
   1606                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1607                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   1608                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   1609             }
   1610 #endif
   1611         }
   1612         if (yychar == YYEOF) goto yyaccept;
   1613         goto yyloop;
   1614     }
   1615     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   1616             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   1617         yystate = yytable[yyn];
   1618     else
   1619         yystate = yydgoto[yym];
   1620 #if YYDEBUG
   1621     if (yydebug)
   1622     {
   1623         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   1624 #ifdef YYSTYPE_TOSTRING
   1625 #if YYBTYACC
   1626         if (!yytrial)
   1627 #endif /* YYBTYACC */
   1628             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   1629 #endif
   1630         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   1631     }
   1632 #endif
   1633     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1634     *++yystack.s_mark = (YYINT) yystate;
   1635     *++yystack.l_mark = yyval;
   1636 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1637     *++yystack.p_mark = yyloc;
   1638 #endif
   1639     goto yyloop;
   1640 #if YYBTYACC
   1641 
   1642     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   1643 yyvalid:
   1644     if (yypath) YYABORT;
   1645     while (yyps->save)
   1646     {
   1647         YYParseState *save = yyps->save;
   1648         yyps->save = save->save;
   1649         save->save = yypath;
   1650         yypath = save;
   1651     }
   1652 #if YYDEBUG
   1653     if (yydebug)
   1654         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   1655                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   1656 #endif
   1657     if (yyerrctx)
   1658     {
   1659         yyFreeState(yyerrctx);
   1660         yyerrctx = NULL;
   1661     }
   1662     yylvp          = yylvals + yypath->lexeme;
   1663 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1664     yylpp          = yylpsns + yypath->lexeme;
   1665 #endif
   1666     yylexp         = yylexemes + yypath->lexeme;
   1667     yychar         = YYEMPTY;
   1668     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   1669     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1670     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   1671     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1672 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1673     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   1674     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1675 #endif
   1676     yystate        = yypath->state;
   1677     goto yyloop;
   1678 #endif /* YYBTYACC */
   1679 
   1680 yyoverflow:
   1681     YYERROR_CALL("yacc stack overflow");
   1682 #if YYBTYACC
   1683     goto yyabort_nomem;
   1684 yyenomem:
   1685     YYERROR_CALL("memory exhausted");
   1686 yyabort_nomem:
   1687 #endif /* YYBTYACC */
   1688     yyresult = 2;
   1689     goto yyreturn;
   1690 
   1691 yyabort:
   1692     yyresult = 1;
   1693     goto yyreturn;
   1694 
   1695 yyaccept:
   1696 #if YYBTYACC
   1697     if (yyps->save) goto yyvalid;
   1698 #endif /* YYBTYACC */
   1699     yyresult = 0;
   1700 
   1701 yyreturn:
   1702 #if defined(YYDESTRUCT_CALL)
   1703     if (yychar != YYEOF && yychar != YYEMPTY)
   1704 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1705         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   1706 #else
   1707         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   1708 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1709 
   1710     {
   1711         YYSTYPE *pv;
   1712 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1713         YYLTYPE *pp;
   1714 
   1715         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   1716              YYDESTRUCT_CALL("cleanup: discarding state",
   1717                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   1718 #else
   1719         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   1720              YYDESTRUCT_CALL("cleanup: discarding state",
   1721                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   1722 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1723     }
   1724 #endif /* defined(YYDESTRUCT_CALL) */
   1725 
   1726 #if YYBTYACC
   1727     if (yyerrctx)
   1728     {
   1729         yyFreeState(yyerrctx);
   1730         yyerrctx = NULL;
   1731     }
   1732     while (yyps)
   1733     {
   1734         YYParseState *save = yyps;
   1735         yyps = save->save;
   1736         save->save = NULL;
   1737         yyFreeState(save);
   1738     }
   1739     while (yypath)
   1740     {
   1741         YYParseState *save = yypath;
   1742         yypath = save->save;
   1743         save->save = NULL;
   1744         yyFreeState(save);
   1745     }
   1746 #endif /* YYBTYACC */
   1747     yyfreestack(&yystack);
   1748     return (yyresult);
   1749 }
   1750