Home | History | Annotate | Line # | Download | only in yacc
varsyntax_calc1.tab.c revision 1.5
      1  1.4  christos /*	$NetBSD: varsyntax_calc1.tab.c,v 1.5 2024/09/14 21:29:05 christos Exp $	*/
      2  1.1  christos 
      3  1.1  christos /* original parser id follows */
      4  1.1  christos /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5  1.1  christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6  1.1  christos 
      7  1.1  christos #define YYBYACC 1
      8  1.4  christos #define YYMAJOR 2
      9  1.4  christos #define YYMINOR 0
     10  1.1  christos #define YYCHECK "yyyymmdd"
     11  1.1  christos 
     12  1.1  christos #define YYEMPTY        (-1)
     13  1.1  christos #define yyclearin      (yychar = YYEMPTY)
     14  1.1  christos #define yyerrok        (yyerrflag = 0)
     15  1.1  christos #define YYRECOVERING() (yyerrflag != 0)
     16  1.1  christos #define YYENOMEM       (-2)
     17  1.1  christos #define YYEOF          0
     18  1.1  christos #ident "check variant syntax features"
     19  1.1  christos 
     20  1.1  christos #ifndef yyparse
     21  1.1  christos #define yyparse    varsyntax_calc1_parse
     22  1.1  christos #endif /* yyparse */
     23  1.1  christos 
     24  1.1  christos #ifndef yylex
     25  1.1  christos #define yylex      varsyntax_calc1_lex
     26  1.1  christos #endif /* yylex */
     27  1.1  christos 
     28  1.1  christos #ifndef yyerror
     29  1.1  christos #define yyerror    varsyntax_calc1_error
     30  1.1  christos #endif /* yyerror */
     31  1.1  christos 
     32  1.1  christos #ifndef yychar
     33  1.1  christos #define yychar     varsyntax_calc1_char
     34  1.1  christos #endif /* yychar */
     35  1.1  christos 
     36  1.1  christos #ifndef yyval
     37  1.1  christos #define yyval      varsyntax_calc1_val
     38  1.1  christos #endif /* yyval */
     39  1.1  christos 
     40  1.1  christos #ifndef yylval
     41  1.1  christos #define yylval     varsyntax_calc1_lval
     42  1.1  christos #endif /* yylval */
     43  1.1  christos 
     44  1.1  christos #ifndef yydebug
     45  1.1  christos #define yydebug    varsyntax_calc1_debug
     46  1.1  christos #endif /* yydebug */
     47  1.1  christos 
     48  1.1  christos #ifndef yynerrs
     49  1.1  christos #define yynerrs    varsyntax_calc1_nerrs
     50  1.1  christos #endif /* yynerrs */
     51  1.1  christos 
     52  1.1  christos #ifndef yyerrflag
     53  1.1  christos #define yyerrflag  varsyntax_calc1_errflag
     54  1.1  christos #endif /* yyerrflag */
     55  1.1  christos 
     56  1.1  christos #ifndef yylhs
     57  1.1  christos #define yylhs      varsyntax_calc1_lhs
     58  1.1  christos #endif /* yylhs */
     59  1.1  christos 
     60  1.1  christos #ifndef yylen
     61  1.1  christos #define yylen      varsyntax_calc1_len
     62  1.1  christos #endif /* yylen */
     63  1.1  christos 
     64  1.1  christos #ifndef yydefred
     65  1.1  christos #define yydefred   varsyntax_calc1_defred
     66  1.1  christos #endif /* yydefred */
     67  1.1  christos 
     68  1.1  christos #ifndef yydgoto
     69  1.1  christos #define yydgoto    varsyntax_calc1_dgoto
     70  1.1  christos #endif /* yydgoto */
     71  1.1  christos 
     72  1.1  christos #ifndef yysindex
     73  1.1  christos #define yysindex   varsyntax_calc1_sindex
     74  1.1  christos #endif /* yysindex */
     75  1.1  christos 
     76  1.1  christos #ifndef yyrindex
     77  1.1  christos #define yyrindex   varsyntax_calc1_rindex
     78  1.1  christos #endif /* yyrindex */
     79  1.1  christos 
     80  1.1  christos #ifndef yygindex
     81  1.1  christos #define yygindex   varsyntax_calc1_gindex
     82  1.1  christos #endif /* yygindex */
     83  1.1  christos 
     84  1.1  christos #ifndef yytable
     85  1.1  christos #define yytable    varsyntax_calc1_table
     86  1.1  christos #endif /* yytable */
     87  1.1  christos 
     88  1.1  christos #ifndef yycheck
     89  1.1  christos #define yycheck    varsyntax_calc1_check
     90  1.1  christos #endif /* yycheck */
     91  1.1  christos 
     92  1.1  christos #ifndef yyname
     93  1.1  christos #define yyname     varsyntax_calc1_name
     94  1.1  christos #endif /* yyname */
     95  1.1  christos 
     96  1.1  christos #ifndef yyrule
     97  1.1  christos #define yyrule     varsyntax_calc1_rule
     98  1.1  christos #endif /* yyrule */
     99  1.1  christos #define YYPREFIX "varsyntax_calc1_"
    100  1.1  christos 
    101  1.1  christos #define YYPURE 0
    102  1.1  christos 
    103  1.1  christos #line 3 "varsyntax_calc1.y"
    104  1.1  christos 
    105  1.1  christos /* http://dinosaur.compilertools.net/yacc/index.html * /*/
    106  1.1  christos 
    107  1.1  christos #include <stdlib.h>
    108  1.1  christos #include <stdio.h>
    109  1.1  christos #include <ctype.h>
    110  1.1  christos #include <math.h>
    111  1.1  christos 
    112  1.1  christos typedef struct interval
    113  1.1  christos {
    114  1.1  christos     double lo, hi;
    115  1.1  christos }
    116  1.1  christos INTERVAL;
    117  1.1  christos 
    118  1.1  christos INTERVAL vmul(double, double, INTERVAL);
    119  1.1  christos INTERVAL vdiv(double, double, INTERVAL);
    120  1.1  christos 
    121  1.1  christos extern int yylex(void);
    122  1.1  christos static void yyerror(const char *s);
    123  1.1  christos 
    124  1.1  christos int dcheck(INTERVAL);
    125  1.1  christos 
    126  1.1  christos double dreg[26];
    127  1.1  christos INTERVAL vreg[26];
    128  1.1  christos 
    129  1.1  christos #ifdef YYSTYPE
    130  1.1  christos #undef  YYSTYPE_IS_DECLARED
    131  1.1  christos #define YYSTYPE_IS_DECLARED 1
    132  1.1  christos #endif
    133  1.1  christos #ifndef YYSTYPE_IS_DECLARED
    134  1.1  christos #define YYSTYPE_IS_DECLARED 1
    135  1.2  christos #line 32 "varsyntax_calc1.y"
    136  1.5  christos typedef union YYSTYPE
    137  1.1  christos {
    138  1.1  christos 	int ival;	/* dreg & vreg array index values*/
    139  1.1  christos 	double dval;	/* floating point values*/
    140  1.1  christos 	INTERVAL vval;	/* interval values*/
    141  1.1  christos } YYSTYPE;
    142  1.1  christos #endif /* !YYSTYPE_IS_DECLARED */
    143  1.1  christos #line 142 "varsyntax_calc1.tab.c"
    144  1.1  christos 
    145  1.1  christos /* compatibility with bison */
    146  1.1  christos #ifdef YYPARSE_PARAM
    147  1.1  christos /* compatibility with FreeBSD */
    148  1.1  christos # ifdef YYPARSE_PARAM_TYPE
    149  1.1  christos #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    150  1.1  christos # else
    151  1.1  christos #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    152  1.1  christos # endif
    153  1.1  christos #else
    154  1.1  christos # define YYPARSE_DECL() yyparse(void)
    155  1.1  christos #endif
    156  1.1  christos 
    157  1.1  christos /* Parameters sent to lex. */
    158  1.1  christos #ifdef YYLEX_PARAM
    159  1.1  christos # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    160  1.1  christos # define YYLEX yylex(YYLEX_PARAM)
    161  1.1  christos #else
    162  1.1  christos # define YYLEX_DECL() yylex(void)
    163  1.1  christos # define YYLEX yylex()
    164  1.1  christos #endif
    165  1.1  christos 
    166  1.1  christos /* Parameters sent to yyerror. */
    167  1.1  christos #ifndef YYERROR_DECL
    168  1.1  christos #define YYERROR_DECL() yyerror(const char *s)
    169  1.1  christos #endif
    170  1.1  christos #ifndef YYERROR_CALL
    171  1.1  christos #define YYERROR_CALL(msg) yyerror(msg)
    172  1.1  christos #endif
    173  1.1  christos 
    174  1.1  christos extern int YYPARSE_DECL();
    175  1.1  christos 
    176  1.1  christos #define DREG 257
    177  1.1  christos #define VREG 258
    178  1.1  christos #define CONST 259
    179  1.1  christos #define UMINUS 260
    180  1.1  christos #define YYERRCODE 256
    181  1.5  christos typedef int YYINT;
    182  1.1  christos static const YYINT varsyntax_calc1_lhs[] = {             -1,
    183  1.1  christos     3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
    184  1.1  christos     1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
    185  1.1  christos     2,    2,    2,    2,    2,    2,    2,    2,
    186  1.1  christos };
    187  1.1  christos static const YYINT varsyntax_calc1_len[] = {              2,
    188  1.1  christos     0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
    189  1.1  christos     3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
    190  1.1  christos     3,    3,    3,    3,    3,    3,    2,    3,
    191  1.1  christos };
    192  1.1  christos static const YYINT varsyntax_calc1_defred[] = {           0,
    193  1.1  christos     0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
    194  1.1  christos     0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
    195  1.1  christos     0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
    196  1.1  christos     0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
    197  1.1  christos    12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
    198  1.1  christos     0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
    199  1.1  christos    13,   17,
    200  1.1  christos };
    201  1.1  christos static const YYINT varsyntax_calc1_dgoto[] = {            7,
    202  1.1  christos    32,    9,    0,
    203  1.1  christos };
    204  1.1  christos static const YYINT varsyntax_calc1_sindex[] = {         -40,
    205  1.1  christos    -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
    206  1.1  christos   -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
    207  1.1  christos   -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
    208  1.1  christos    25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
    209  1.1  christos     0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
    210  1.1  christos   -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
    211  1.1  christos     0,    0,
    212  1.1  christos };
    213  1.1  christos static const YYINT varsyntax_calc1_rindex[] = {           0,
    214  1.1  christos     0,   38,   44,    0,    0,    0,    0,    0,    0,    0,
    215  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    216  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    217  1.1  christos     0,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
    218  1.1  christos     0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
    219  1.1  christos     0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
    220  1.1  christos     0,    0,
    221  1.1  christos };
    222  1.1  christos static const YYINT varsyntax_calc1_gindex[] = {           0,
    223  1.1  christos     4,  124,    0,
    224  1.1  christos };
    225  1.1  christos #define YYTABLESIZE 225
    226  1.1  christos static const YYINT varsyntax_calc1_table[] = {            6,
    227  1.1  christos    16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
    228  1.1  christos    29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
    229  1.1  christos     0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
    230  1.1  christos    21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
    231  1.1  christos    56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
    232  1.1  christos     0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
    233  1.1  christos    10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
    234  1.1  christos    22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
    235  1.1  christos     9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
    236  1.1  christos    18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
    237  1.1  christos    11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
    238  1.1  christos    53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
    239  1.1  christos    10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
    240  1.1  christos    36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
    241  1.1  christos     0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
    242  1.1  christos    48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
    243  1.1  christos    51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
    244  1.1  christos     0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
    245  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    246  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    247  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    248  1.1  christos     0,    0,    0,    0,    0,    1,    2,    3,    4,   13,
    249  1.1  christos    14,    4,   13,    0,    4,
    250  1.1  christos };
    251  1.1  christos static const YYINT varsyntax_calc1_check[] = {           40,
    252  1.1  christos    10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
    253  1.1  christos    45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
    254  1.1  christos    -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
    255  1.1  christos    42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
    256  1.1  christos    10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
    257  1.1  christos    -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
    258  1.1  christos    10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
    259  1.1  christos    10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
    260  1.1  christos    43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
    261  1.1  christos    47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
    262  1.1  christos    45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
    263  1.1  christos    42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
    264  1.1  christos    43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
    265  1.1  christos    41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
    266  1.1  christos    -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
    267  1.1  christos    27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
    268  1.1  christos    43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
    269  1.1  christos    -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    270  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    271  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    272  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    273  1.1  christos    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
    274  1.1  christos   258,  259,  257,   -1,  259,
    275  1.1  christos };
    276  1.1  christos #define YYFINAL 7
    277  1.1  christos #ifndef YYDEBUG
    278  1.1  christos #define YYDEBUG 0
    279  1.1  christos #endif
    280  1.1  christos #define YYMAXTOKEN 260
    281  1.1  christos #define YYUNDFTOKEN 266
    282  1.1  christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    283  1.1  christos #if YYDEBUG
    284  1.1  christos static const char *const varsyntax_calc1_name[] = {
    285  1.1  christos 
    286  1.1  christos "end-of-file",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,
    287  1.1  christos 0,0,0,0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,
    288  1.1  christos 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,
    289  1.1  christos 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,
    290  1.1  christos 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,
    291  1.1  christos 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,
    292  1.1  christos 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,
    293  1.1  christos 0,0,"DREG","VREG","CONST","UMINUS",0,0,0,0,0,"illegal-symbol",
    294  1.1  christos };
    295  1.1  christos static const char *const varsyntax_calc1_rule[] = {
    296  1.1  christos "$accept : line",
    297  1.1  christos "lines :",
    298  1.1  christos "lines : lines line",
    299  1.1  christos "line : dexp '\\n'",
    300  1.1  christos "line : vexp '\\n'",
    301  1.1  christos "line : DREG '=' dexp '\\n'",
    302  1.1  christos "line : VREG '=' vexp '\\n'",
    303  1.1  christos "line : error '\\n'",
    304  1.1  christos "dexp : CONST",
    305  1.1  christos "dexp : DREG",
    306  1.1  christos "dexp : dexp '+' dexp",
    307  1.1  christos "dexp : dexp '-' dexp",
    308  1.1  christos "dexp : dexp '*' dexp",
    309  1.1  christos "dexp : dexp '/' dexp",
    310  1.1  christos "dexp : '-' dexp",
    311  1.1  christos "dexp : '(' dexp ')'",
    312  1.1  christos "vexp : dexp",
    313  1.1  christos "vexp : '(' dexp ',' dexp ')'",
    314  1.1  christos "vexp : VREG",
    315  1.1  christos "vexp : vexp '+' vexp",
    316  1.1  christos "vexp : dexp '+' vexp",
    317  1.1  christos "vexp : vexp '-' vexp",
    318  1.1  christos "vexp : dexp '-' vexp",
    319  1.1  christos "vexp : vexp '*' vexp",
    320  1.1  christos "vexp : dexp '*' vexp",
    321  1.1  christos "vexp : vexp '/' vexp",
    322  1.1  christos "vexp : dexp '/' vexp",
    323  1.1  christos "vexp : '-' vexp",
    324  1.1  christos "vexp : '(' vexp ')'",
    325  1.1  christos 
    326  1.1  christos };
    327  1.1  christos #endif
    328  1.1  christos 
    329  1.3  christos #if YYDEBUG
    330  1.1  christos int      yydebug;
    331  1.3  christos #endif
    332  1.1  christos 
    333  1.1  christos int      yyerrflag;
    334  1.1  christos int      yychar;
    335  1.1  christos YYSTYPE  yyval;
    336  1.1  christos YYSTYPE  yylval;
    337  1.3  christos int      yynerrs;
    338  1.1  christos 
    339  1.1  christos /* define the initial stack-sizes */
    340  1.1  christos #ifdef YYSTACKSIZE
    341  1.1  christos #undef YYMAXDEPTH
    342  1.1  christos #define YYMAXDEPTH  YYSTACKSIZE
    343  1.1  christos #else
    344  1.1  christos #ifdef YYMAXDEPTH
    345  1.1  christos #define YYSTACKSIZE YYMAXDEPTH
    346  1.1  christos #else
    347  1.1  christos #define YYSTACKSIZE 10000
    348  1.1  christos #define YYMAXDEPTH  10000
    349  1.1  christos #endif
    350  1.1  christos #endif
    351  1.1  christos 
    352  1.1  christos #define YYINITSTACKSIZE 200
    353  1.1  christos 
    354  1.1  christos typedef struct {
    355  1.1  christos     unsigned stacksize;
    356  1.1  christos     YYINT    *s_base;
    357  1.1  christos     YYINT    *s_mark;
    358  1.1  christos     YYINT    *s_last;
    359  1.1  christos     YYSTYPE  *l_base;
    360  1.1  christos     YYSTYPE  *l_mark;
    361  1.1  christos } YYSTACKDATA;
    362  1.1  christos /* variables for the parser stack */
    363  1.1  christos static YYSTACKDATA yystack;
    364  1.1  christos #line 178 "varsyntax_calc1.y"
    365  1.1  christos 	/* beginning of subroutines section */
    366  1.1  christos 
    367  1.1  christos #define BSZ 50			/* buffer size for floating point numbers */
    368  1.1  christos 
    369  1.1  christos 	/* lexical analysis */
    370  1.1  christos 
    371  1.1  christos static void
    372  1.1  christos yyerror(const char *s)
    373  1.1  christos {
    374  1.1  christos     fprintf(stderr, "%s\n", s);
    375  1.1  christos }
    376  1.1  christos 
    377  1.1  christos int
    378  1.1  christos yylex(void)
    379  1.1  christos {
    380  1.1  christos     int c;
    381  1.1  christos 
    382  1.1  christos     while ((c = getchar()) == ' ')
    383  1.1  christos     {				/* skip over blanks */
    384  1.1  christos     }
    385  1.1  christos 
    386  1.1  christos     if (isupper(c))
    387  1.1  christos     {
    388  1.1  christos 	yylval.ival = c - 'A';
    389  1.1  christos 	return (VREG);
    390  1.1  christos     }
    391  1.1  christos     if (islower(c))
    392  1.1  christos     {
    393  1.1  christos 	yylval.ival = c - 'a';
    394  1.1  christos 	return (DREG);
    395  1.1  christos     }
    396  1.1  christos 
    397  1.1  christos     if (isdigit(c) || c == '.')
    398  1.1  christos     {
    399  1.1  christos 	/* gobble up digits, points, exponents */
    400  1.1  christos 	char buf[BSZ + 1], *cp = buf;
    401  1.1  christos 	int dot = 0, expr = 0;
    402  1.1  christos 
    403  1.1  christos 	for (; (cp - buf) < BSZ; ++cp, c = getchar())
    404  1.1  christos 	{
    405  1.1  christos 
    406  1.1  christos 	    *cp = (char) c;
    407  1.1  christos 	    if (isdigit(c))
    408  1.1  christos 		continue;
    409  1.1  christos 	    if (c == '.')
    410  1.1  christos 	    {
    411  1.1  christos 		if (dot++ || expr)
    412  1.1  christos 		    return ('.');	/* will cause syntax error */
    413  1.1  christos 		continue;
    414  1.1  christos 	    }
    415  1.1  christos 
    416  1.1  christos 	    if (c == 'e')
    417  1.1  christos 	    {
    418  1.1  christos 		if (expr++)
    419  1.1  christos 		    return ('e');	/*  will  cause  syntax  error  */
    420  1.1  christos 		continue;
    421  1.1  christos 	    }
    422  1.1  christos 
    423  1.1  christos 	    /*  end  of  number  */
    424  1.1  christos 	    break;
    425  1.1  christos 	}
    426  1.1  christos 	*cp = '\0';
    427  1.1  christos 
    428  1.1  christos 	if ((cp - buf) >= BSZ)
    429  1.1  christos 	    printf("constant  too  long:  truncated\n");
    430  1.1  christos 	else
    431  1.1  christos 	    ungetc(c, stdin);	/*  push  back  last  char  read  */
    432  1.1  christos 	yylval.dval = atof(buf);
    433  1.1  christos 	return (CONST);
    434  1.1  christos     }
    435  1.1  christos     return (c);
    436  1.1  christos }
    437  1.1  christos 
    438  1.1  christos static INTERVAL
    439  1.1  christos hilo(double a, double b, double c, double d)
    440  1.1  christos {
    441  1.1  christos     /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
    442  1.1  christos     /*  used  by  *,  /  routines  */
    443  1.1  christos     INTERVAL v;
    444  1.1  christos 
    445  1.1  christos     if (a > b)
    446  1.1  christos     {
    447  1.1  christos 	v.hi = a;
    448  1.1  christos 	v.lo = b;
    449  1.1  christos     }
    450  1.1  christos     else
    451  1.1  christos     {
    452  1.1  christos 	v.hi = b;
    453  1.1  christos 	v.lo = a;
    454  1.1  christos     }
    455  1.1  christos 
    456  1.1  christos     if (c > d)
    457  1.1  christos     {
    458  1.1  christos 	if (c > v.hi)
    459  1.1  christos 	    v.hi = c;
    460  1.1  christos 	if (d < v.lo)
    461  1.1  christos 	    v.lo = d;
    462  1.1  christos     }
    463  1.1  christos     else
    464  1.1  christos     {
    465  1.1  christos 	if (d > v.hi)
    466  1.1  christos 	    v.hi = d;
    467  1.1  christos 	if (c < v.lo)
    468  1.1  christos 	    v.lo = c;
    469  1.1  christos     }
    470  1.1  christos     return (v);
    471  1.1  christos }
    472  1.1  christos 
    473  1.1  christos INTERVAL
    474  1.1  christos vmul(double a, double b, INTERVAL v)
    475  1.1  christos {
    476  1.1  christos     return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
    477  1.1  christos }
    478  1.1  christos 
    479  1.1  christos int
    480  1.1  christos dcheck(INTERVAL v)
    481  1.1  christos {
    482  1.1  christos     if (v.hi >= 0. && v.lo <= 0.)
    483  1.1  christos     {
    484  1.1  christos 	printf("divisor  interval  contains  0.\n");
    485  1.1  christos 	return (1);
    486  1.1  christos     }
    487  1.1  christos     return (0);
    488  1.1  christos }
    489  1.1  christos 
    490  1.1  christos INTERVAL
    491  1.1  christos vdiv(double a, double b, INTERVAL v)
    492  1.1  christos {
    493  1.1  christos     return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
    494  1.1  christos }
    495  1.3  christos #line 494 "varsyntax_calc1.tab.c"
    496  1.1  christos 
    497  1.1  christos #if YYDEBUG
    498  1.2  christos #include <stdio.h>	/* needed for printf */
    499  1.1  christos #endif
    500  1.1  christos 
    501  1.1  christos #include <stdlib.h>	/* needed for malloc, etc */
    502  1.1  christos #include <string.h>	/* needed for memset */
    503  1.1  christos 
    504  1.1  christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    505  1.1  christos static int yygrowstack(YYSTACKDATA *data)
    506  1.1  christos {
    507  1.1  christos     int i;
    508  1.1  christos     unsigned newsize;
    509  1.1  christos     YYINT *newss;
    510  1.1  christos     YYSTYPE *newvs;
    511  1.1  christos 
    512  1.1  christos     if ((newsize = data->stacksize) == 0)
    513  1.1  christos         newsize = YYINITSTACKSIZE;
    514  1.1  christos     else if (newsize >= YYMAXDEPTH)
    515  1.1  christos         return YYENOMEM;
    516  1.1  christos     else if ((newsize *= 2) > YYMAXDEPTH)
    517  1.1  christos         newsize = YYMAXDEPTH;
    518  1.1  christos 
    519  1.1  christos     i = (int) (data->s_mark - data->s_base);
    520  1.1  christos     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    521  1.1  christos     if (newss == 0)
    522  1.1  christos         return YYENOMEM;
    523  1.1  christos 
    524  1.1  christos     data->s_base = newss;
    525  1.1  christos     data->s_mark = newss + i;
    526  1.1  christos 
    527  1.1  christos     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    528  1.1  christos     if (newvs == 0)
    529  1.1  christos         return YYENOMEM;
    530  1.1  christos 
    531  1.1  christos     data->l_base = newvs;
    532  1.1  christos     data->l_mark = newvs + i;
    533  1.1  christos 
    534  1.1  christos     data->stacksize = newsize;
    535  1.1  christos     data->s_last = data->s_base + newsize - 1;
    536  1.1  christos     return 0;
    537  1.1  christos }
    538  1.1  christos 
    539  1.1  christos #if YYPURE || defined(YY_NO_LEAKS)
    540  1.1  christos static void yyfreestack(YYSTACKDATA *data)
    541  1.1  christos {
    542  1.1  christos     free(data->s_base);
    543  1.1  christos     free(data->l_base);
    544  1.1  christos     memset(data, 0, sizeof(*data));
    545  1.1  christos }
    546  1.1  christos #else
    547  1.1  christos #define yyfreestack(data) /* nothing */
    548  1.1  christos #endif
    549  1.1  christos 
    550  1.1  christos #define YYABORT  goto yyabort
    551  1.1  christos #define YYREJECT goto yyabort
    552  1.1  christos #define YYACCEPT goto yyaccept
    553  1.1  christos #define YYERROR  goto yyerrlab
    554  1.1  christos 
    555  1.1  christos int
    556  1.1  christos YYPARSE_DECL()
    557  1.1  christos {
    558  1.1  christos     int yym, yyn, yystate;
    559  1.1  christos #if YYDEBUG
    560  1.1  christos     const char *yys;
    561  1.1  christos 
    562  1.1  christos     if ((yys = getenv("YYDEBUG")) != 0)
    563  1.1  christos     {
    564  1.1  christos         yyn = *yys;
    565  1.1  christos         if (yyn >= '0' && yyn <= '9')
    566  1.1  christos             yydebug = yyn - '0';
    567  1.1  christos     }
    568  1.1  christos #endif
    569  1.1  christos 
    570  1.5  christos     /* yym is set below */
    571  1.5  christos     /* yyn is set below */
    572  1.1  christos     yynerrs = 0;
    573  1.1  christos     yyerrflag = 0;
    574  1.1  christos     yychar = YYEMPTY;
    575  1.1  christos     yystate = 0;
    576  1.1  christos 
    577  1.1  christos #if YYPURE
    578  1.1  christos     memset(&yystack, 0, sizeof(yystack));
    579  1.1  christos #endif
    580  1.1  christos 
    581  1.1  christos     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    582  1.1  christos     yystack.s_mark = yystack.s_base;
    583  1.1  christos     yystack.l_mark = yystack.l_base;
    584  1.1  christos     yystate = 0;
    585  1.1  christos     *yystack.s_mark = 0;
    586  1.1  christos 
    587  1.1  christos yyloop:
    588  1.1  christos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    589  1.1  christos     if (yychar < 0)
    590  1.1  christos     {
    591  1.2  christos         yychar = YYLEX;
    592  1.2  christos         if (yychar < 0) yychar = YYEOF;
    593  1.1  christos #if YYDEBUG
    594  1.1  christos         if (yydebug)
    595  1.1  christos         {
    596  1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    597  1.1  christos             printf("%sdebug: state %d, reading %d (%s)\n",
    598  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    599  1.1  christos         }
    600  1.1  christos #endif
    601  1.1  christos     }
    602  1.2  christos     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    603  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    604  1.1  christos     {
    605  1.1  christos #if YYDEBUG
    606  1.1  christos         if (yydebug)
    607  1.1  christos             printf("%sdebug: state %d, shifting to state %d\n",
    608  1.1  christos                     YYPREFIX, yystate, yytable[yyn]);
    609  1.1  christos #endif
    610  1.2  christos         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    611  1.1  christos         yystate = yytable[yyn];
    612  1.1  christos         *++yystack.s_mark = yytable[yyn];
    613  1.1  christos         *++yystack.l_mark = yylval;
    614  1.1  christos         yychar = YYEMPTY;
    615  1.1  christos         if (yyerrflag > 0)  --yyerrflag;
    616  1.1  christos         goto yyloop;
    617  1.1  christos     }
    618  1.2  christos     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    619  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    620  1.1  christos     {
    621  1.1  christos         yyn = yytable[yyn];
    622  1.1  christos         goto yyreduce;
    623  1.1  christos     }
    624  1.2  christos     if (yyerrflag != 0) goto yyinrecovery;
    625  1.1  christos 
    626  1.1  christos     YYERROR_CALL("syntax error");
    627  1.1  christos 
    628  1.2  christos     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    629  1.1  christos yyerrlab:
    630  1.1  christos     ++yynerrs;
    631  1.1  christos 
    632  1.1  christos yyinrecovery:
    633  1.1  christos     if (yyerrflag < 3)
    634  1.1  christos     {
    635  1.1  christos         yyerrflag = 3;
    636  1.1  christos         for (;;)
    637  1.1  christos         {
    638  1.2  christos             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
    639  1.2  christos                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
    640  1.1  christos             {
    641  1.1  christos #if YYDEBUG
    642  1.1  christos                 if (yydebug)
    643  1.1  christos                     printf("%sdebug: state %d, error recovery shifting\
    644  1.1  christos  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
    645  1.1  christos #endif
    646  1.2  christos                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    647  1.1  christos                 yystate = yytable[yyn];
    648  1.1  christos                 *++yystack.s_mark = yytable[yyn];
    649  1.1  christos                 *++yystack.l_mark = yylval;
    650  1.1  christos                 goto yyloop;
    651  1.1  christos             }
    652  1.1  christos             else
    653  1.1  christos             {
    654  1.1  christos #if YYDEBUG
    655  1.1  christos                 if (yydebug)
    656  1.1  christos                     printf("%sdebug: error recovery discarding state %d\n",
    657  1.1  christos                             YYPREFIX, *yystack.s_mark);
    658  1.1  christos #endif
    659  1.1  christos                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
    660  1.1  christos                 --yystack.s_mark;
    661  1.1  christos                 --yystack.l_mark;
    662  1.1  christos             }
    663  1.1  christos         }
    664  1.1  christos     }
    665  1.1  christos     else
    666  1.1  christos     {
    667  1.1  christos         if (yychar == YYEOF) goto yyabort;
    668  1.1  christos #if YYDEBUG
    669  1.1  christos         if (yydebug)
    670  1.1  christos         {
    671  1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    672  1.1  christos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
    673  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    674  1.1  christos         }
    675  1.1  christos #endif
    676  1.1  christos         yychar = YYEMPTY;
    677  1.1  christos         goto yyloop;
    678  1.1  christos     }
    679  1.1  christos 
    680  1.1  christos yyreduce:
    681  1.1  christos #if YYDEBUG
    682  1.1  christos     if (yydebug)
    683  1.1  christos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
    684  1.1  christos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
    685  1.1  christos #endif
    686  1.1  christos     yym = yylen[yyn];
    687  1.2  christos     if (yym > 0)
    688  1.1  christos         yyval = yystack.l_mark[1-yym];
    689  1.1  christos     else
    690  1.1  christos         memset(&yyval, 0, sizeof yyval);
    691  1.2  christos 
    692  1.1  christos     switch (yyn)
    693  1.1  christos     {
    694  1.1  christos case 3:
    695  1.1  christos #line 59 "varsyntax_calc1.y"
    696  1.1  christos 	{
    697  1.1  christos 		(void) printf("%15.8f\n", yystack.l_mark[-1].dval);
    698  1.1  christos 	}
    699  1.5  christos #line 698 "varsyntax_calc1.tab.c"
    700  1.1  christos break;
    701  1.1  christos case 4:
    702  1.1  christos #line 63 "varsyntax_calc1.y"
    703  1.1  christos 	{
    704  1.1  christos 		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.l_mark[-1].vval.hi);
    705  1.1  christos 	}
    706  1.5  christos #line 705 "varsyntax_calc1.tab.c"
    707  1.1  christos break;
    708  1.1  christos case 5:
    709  1.1  christos #line 67 "varsyntax_calc1.y"
    710  1.1  christos 	{
    711  1.1  christos 		dreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].dval;
    712  1.1  christos 	}
    713  1.5  christos #line 712 "varsyntax_calc1.tab.c"
    714  1.1  christos break;
    715  1.1  christos case 6:
    716  1.1  christos #line 71 "varsyntax_calc1.y"
    717  1.1  christos 	{
    718  1.1  christos 		vreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].vval;
    719  1.1  christos 	}
    720  1.5  christos #line 719 "varsyntax_calc1.tab.c"
    721  1.1  christos break;
    722  1.1  christos case 7:
    723  1.1  christos #line 75 "varsyntax_calc1.y"
    724  1.1  christos 	{
    725  1.1  christos 		yyerrok;
    726  1.1  christos 	}
    727  1.5  christos #line 726 "varsyntax_calc1.tab.c"
    728  1.1  christos break;
    729  1.1  christos case 9:
    730  1.1  christos #line 82 "varsyntax_calc1.y"
    731  1.1  christos 	{
    732  1.1  christos 		yyval.dval = dreg[yystack.l_mark[0].ival]; /* $$ & $1 are sufficient here*/
    733  1.1  christos 	}
    734  1.5  christos #line 733 "varsyntax_calc1.tab.c"
    735  1.1  christos break;
    736  1.1  christos case 10:
    737  1.1  christos #line 86 "varsyntax_calc1.y"
    738  1.1  christos 	{
    739  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
    740  1.1  christos 	}
    741  1.5  christos #line 740 "varsyntax_calc1.tab.c"
    742  1.1  christos break;
    743  1.1  christos case 11:
    744  1.1  christos #line 90 "varsyntax_calc1.y"
    745  1.1  christos 	{
    746  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
    747  1.1  christos 	}
    748  1.5  christos #line 747 "varsyntax_calc1.tab.c"
    749  1.1  christos break;
    750  1.1  christos case 12:
    751  1.1  christos #line 94 "varsyntax_calc1.y"
    752  1.1  christos 	{
    753  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
    754  1.1  christos 	}
    755  1.5  christos #line 754 "varsyntax_calc1.tab.c"
    756  1.1  christos break;
    757  1.1  christos case 13:
    758  1.1  christos #line 98 "varsyntax_calc1.y"
    759  1.1  christos 	{
    760  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
    761  1.1  christos 	}
    762  1.5  christos #line 761 "varsyntax_calc1.tab.c"
    763  1.1  christos break;
    764  1.1  christos case 14:
    765  1.1  christos #line 102 "varsyntax_calc1.y"
    766  1.1  christos 	{
    767  1.1  christos 		yyval.dval = -yystack.l_mark[0].dval;
    768  1.1  christos 	}
    769  1.5  christos #line 768 "varsyntax_calc1.tab.c"
    770  1.1  christos break;
    771  1.1  christos case 15:
    772  1.1  christos #line 106 "varsyntax_calc1.y"
    773  1.1  christos 	{
    774  1.1  christos 		yyval.dval = yystack.l_mark[-1].dval;
    775  1.1  christos 	}
    776  1.5  christos #line 775 "varsyntax_calc1.tab.c"
    777  1.1  christos break;
    778  1.1  christos case 16:
    779  1.1  christos #line 112 "varsyntax_calc1.y"
    780  1.1  christos 	{
    781  1.1  christos 		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
    782  1.1  christos 	}
    783  1.5  christos #line 782 "varsyntax_calc1.tab.c"
    784  1.1  christos break;
    785  1.1  christos case 17:
    786  1.1  christos #line 116 "varsyntax_calc1.y"
    787  1.1  christos 	{
    788  1.1  christos 		yyval.vval.lo = yystack.l_mark[-3].dval;
    789  1.1  christos 		yyval.vval.hi = yystack.l_mark[-1].dval;
    790  1.1  christos 		if ( yyval.vval.lo > yyval.vval.hi )
    791  1.1  christos 		{
    792  1.1  christos 			(void) printf("interval out of order\n");
    793  1.1  christos 			YYERROR;
    794  1.1  christos 		}
    795  1.1  christos 	}
    796  1.5  christos #line 795 "varsyntax_calc1.tab.c"
    797  1.1  christos break;
    798  1.1  christos case 18:
    799  1.1  christos #line 126 "varsyntax_calc1.y"
    800  1.1  christos 	{
    801  1.1  christos 		yyval.vval = vreg[yystack.l_mark[0].ival];
    802  1.1  christos 	}
    803  1.5  christos #line 802 "varsyntax_calc1.tab.c"
    804  1.1  christos break;
    805  1.1  christos case 19:
    806  1.1  christos #line 130 "varsyntax_calc1.y"
    807  1.1  christos 	{
    808  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
    809  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
    810  1.1  christos 	}
    811  1.5  christos #line 810 "varsyntax_calc1.tab.c"
    812  1.1  christos break;
    813  1.1  christos case 20:
    814  1.1  christos #line 135 "varsyntax_calc1.y"
    815  1.1  christos 	{
    816  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
    817  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
    818  1.1  christos 	}
    819  1.5  christos #line 818 "varsyntax_calc1.tab.c"
    820  1.1  christos break;
    821  1.1  christos case 21:
    822  1.1  christos #line 140 "varsyntax_calc1.y"
    823  1.1  christos 	{
    824  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
    825  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
    826  1.1  christos 	}
    827  1.5  christos #line 826 "varsyntax_calc1.tab.c"
    828  1.1  christos break;
    829  1.1  christos case 22:
    830  1.1  christos #line 145 "varsyntax_calc1.y"
    831  1.1  christos 	{
    832  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
    833  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
    834  1.1  christos 	}
    835  1.5  christos #line 834 "varsyntax_calc1.tab.c"
    836  1.1  christos break;
    837  1.1  christos case 23:
    838  1.1  christos #line 150 "varsyntax_calc1.y"
    839  1.1  christos 	{
    840  1.1  christos 		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
    841  1.1  christos 	}
    842  1.5  christos #line 841 "varsyntax_calc1.tab.c"
    843  1.1  christos break;
    844  1.1  christos case 24:
    845  1.1  christos #line 154 "varsyntax_calc1.y"
    846  1.1  christos 	{
    847  1.1  christos 		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
    848  1.1  christos 	}
    849  1.5  christos #line 848 "varsyntax_calc1.tab.c"
    850  1.1  christos break;
    851  1.1  christos case 25:
    852  1.1  christos #line 158 "varsyntax_calc1.y"
    853  1.1  christos 	{
    854  1.1  christos 		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
    855  1.1  christos 		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
    856  1.1  christos 	}
    857  1.5  christos #line 856 "varsyntax_calc1.tab.c"
    858  1.1  christos break;
    859  1.1  christos case 26:
    860  1.1  christos #line 163 "varsyntax_calc1.y"
    861  1.1  christos 	{
    862  1.1  christos 		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
    863  1.1  christos 		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
    864  1.1  christos 	}
    865  1.5  christos #line 864 "varsyntax_calc1.tab.c"
    866  1.1  christos break;
    867  1.1  christos case 27:
    868  1.1  christos #line 168 "varsyntax_calc1.y"
    869  1.1  christos 	{
    870  1.1  christos 		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
    871  1.1  christos 		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
    872  1.1  christos 	}
    873  1.5  christos #line 872 "varsyntax_calc1.tab.c"
    874  1.1  christos break;
    875  1.1  christos case 28:
    876  1.1  christos #line 173 "varsyntax_calc1.y"
    877  1.1  christos 	{
    878  1.1  christos 		yyval.vval = yystack.l_mark[-1].vval;
    879  1.1  christos 	}
    880  1.5  christos #line 879 "varsyntax_calc1.tab.c"
    881  1.1  christos break;
    882  1.5  christos #line 881 "varsyntax_calc1.tab.c"
    883  1.1  christos     }
    884  1.1  christos     yystack.s_mark -= yym;
    885  1.1  christos     yystate = *yystack.s_mark;
    886  1.1  christos     yystack.l_mark -= yym;
    887  1.1  christos     yym = yylhs[yyn];
    888  1.1  christos     if (yystate == 0 && yym == 0)
    889  1.1  christos     {
    890  1.1  christos #if YYDEBUG
    891  1.1  christos         if (yydebug)
    892  1.1  christos             printf("%sdebug: after reduction, shifting from state 0 to\
    893  1.1  christos  state %d\n", YYPREFIX, YYFINAL);
    894  1.1  christos #endif
    895  1.1  christos         yystate = YYFINAL;
    896  1.1  christos         *++yystack.s_mark = YYFINAL;
    897  1.1  christos         *++yystack.l_mark = yyval;
    898  1.1  christos         if (yychar < 0)
    899  1.1  christos         {
    900  1.2  christos             yychar = YYLEX;
    901  1.2  christos             if (yychar < 0) yychar = YYEOF;
    902  1.1  christos #if YYDEBUG
    903  1.1  christos             if (yydebug)
    904  1.1  christos             {
    905  1.2  christos                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    906  1.1  christos                 printf("%sdebug: state %d, reading %d (%s)\n",
    907  1.1  christos                         YYPREFIX, YYFINAL, yychar, yys);
    908  1.1  christos             }
    909  1.1  christos #endif
    910  1.1  christos         }
    911  1.1  christos         if (yychar == YYEOF) goto yyaccept;
    912  1.1  christos         goto yyloop;
    913  1.1  christos     }
    914  1.2  christos     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
    915  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
    916  1.1  christos         yystate = yytable[yyn];
    917  1.1  christos     else
    918  1.1  christos         yystate = yydgoto[yym];
    919  1.1  christos #if YYDEBUG
    920  1.1  christos     if (yydebug)
    921  1.1  christos         printf("%sdebug: after reduction, shifting from state %d \
    922  1.1  christos to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
    923  1.1  christos #endif
    924  1.2  christos     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    925  1.1  christos     *++yystack.s_mark = (YYINT) yystate;
    926  1.1  christos     *++yystack.l_mark = yyval;
    927  1.1  christos     goto yyloop;
    928  1.1  christos 
    929  1.1  christos yyoverflow:
    930  1.1  christos     YYERROR_CALL("yacc stack overflow");
    931  1.1  christos 
    932  1.1  christos yyabort:
    933  1.1  christos     yyfreestack(&yystack);
    934  1.1  christos     return (1);
    935  1.1  christos 
    936  1.1  christos yyaccept:
    937  1.1  christos     yyfreestack(&yystack);
    938  1.1  christos     return (0);
    939  1.1  christos }
    940