Home | History | Annotate | Line # | Download | only in yacc
      1  1.4  christos /*	$NetBSD: varsyntax_calc1.tab.c,v 1.6 2026/01/18 16:41:31 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.6  christos #ifndef NULL
    285  1.6  christos #define NULL (void*)0
    286  1.6  christos #endif
    287  1.1  christos static const char *const varsyntax_calc1_name[] = {
    288  1.1  christos 
    289  1.6  christos "end-of-file",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'\\n'",NULL,NULL,
    290  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    291  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'('","')'","'*'","'+'",
    292  1.6  christos "','","'-'",NULL,"'/'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    293  1.6  christos NULL,NULL,"'='",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    294  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    295  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    296  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    297  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    298  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    299  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    300  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    301  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    302  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    303  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    304  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    305  1.6  christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,"DREG","VREG","CONST","UMINUS",NULL,NULL,
    306  1.6  christos NULL,NULL,NULL,"illegal-symbol",
    307  1.1  christos };
    308  1.1  christos static const char *const varsyntax_calc1_rule[] = {
    309  1.1  christos "$accept : line",
    310  1.1  christos "lines :",
    311  1.1  christos "lines : lines line",
    312  1.1  christos "line : dexp '\\n'",
    313  1.1  christos "line : vexp '\\n'",
    314  1.1  christos "line : DREG '=' dexp '\\n'",
    315  1.1  christos "line : VREG '=' vexp '\\n'",
    316  1.1  christos "line : error '\\n'",
    317  1.1  christos "dexp : CONST",
    318  1.1  christos "dexp : DREG",
    319  1.1  christos "dexp : dexp '+' dexp",
    320  1.1  christos "dexp : dexp '-' dexp",
    321  1.1  christos "dexp : dexp '*' dexp",
    322  1.1  christos "dexp : dexp '/' dexp",
    323  1.1  christos "dexp : '-' dexp",
    324  1.1  christos "dexp : '(' dexp ')'",
    325  1.1  christos "vexp : dexp",
    326  1.1  christos "vexp : '(' dexp ',' dexp ')'",
    327  1.1  christos "vexp : VREG",
    328  1.1  christos "vexp : vexp '+' vexp",
    329  1.1  christos "vexp : dexp '+' vexp",
    330  1.1  christos "vexp : vexp '-' vexp",
    331  1.1  christos "vexp : dexp '-' vexp",
    332  1.1  christos "vexp : vexp '*' vexp",
    333  1.1  christos "vexp : dexp '*' vexp",
    334  1.1  christos "vexp : vexp '/' vexp",
    335  1.1  christos "vexp : dexp '/' vexp",
    336  1.1  christos "vexp : '-' vexp",
    337  1.1  christos "vexp : '(' vexp ')'",
    338  1.1  christos 
    339  1.1  christos };
    340  1.1  christos #endif
    341  1.1  christos 
    342  1.3  christos #if YYDEBUG
    343  1.1  christos int      yydebug;
    344  1.3  christos #endif
    345  1.1  christos 
    346  1.1  christos int      yyerrflag;
    347  1.1  christos int      yychar;
    348  1.1  christos YYSTYPE  yyval;
    349  1.1  christos YYSTYPE  yylval;
    350  1.3  christos int      yynerrs;
    351  1.1  christos 
    352  1.1  christos /* define the initial stack-sizes */
    353  1.1  christos #ifdef YYSTACKSIZE
    354  1.1  christos #undef YYMAXDEPTH
    355  1.1  christos #define YYMAXDEPTH  YYSTACKSIZE
    356  1.1  christos #else
    357  1.1  christos #ifdef YYMAXDEPTH
    358  1.1  christos #define YYSTACKSIZE YYMAXDEPTH
    359  1.1  christos #else
    360  1.1  christos #define YYSTACKSIZE 10000
    361  1.1  christos #define YYMAXDEPTH  10000
    362  1.1  christos #endif
    363  1.1  christos #endif
    364  1.1  christos 
    365  1.1  christos #define YYINITSTACKSIZE 200
    366  1.1  christos 
    367  1.1  christos typedef struct {
    368  1.1  christos     unsigned stacksize;
    369  1.1  christos     YYINT    *s_base;
    370  1.1  christos     YYINT    *s_mark;
    371  1.1  christos     YYINT    *s_last;
    372  1.1  christos     YYSTYPE  *l_base;
    373  1.1  christos     YYSTYPE  *l_mark;
    374  1.1  christos } YYSTACKDATA;
    375  1.1  christos /* variables for the parser stack */
    376  1.1  christos static YYSTACKDATA yystack;
    377  1.1  christos #line 178 "varsyntax_calc1.y"
    378  1.1  christos 	/* beginning of subroutines section */
    379  1.1  christos 
    380  1.1  christos #define BSZ 50			/* buffer size for floating point numbers */
    381  1.1  christos 
    382  1.1  christos 	/* lexical analysis */
    383  1.1  christos 
    384  1.1  christos static void
    385  1.1  christos yyerror(const char *s)
    386  1.1  christos {
    387  1.1  christos     fprintf(stderr, "%s\n", s);
    388  1.1  christos }
    389  1.1  christos 
    390  1.1  christos int
    391  1.1  christos yylex(void)
    392  1.1  christos {
    393  1.1  christos     int c;
    394  1.1  christos 
    395  1.1  christos     while ((c = getchar()) == ' ')
    396  1.1  christos     {				/* skip over blanks */
    397  1.1  christos     }
    398  1.1  christos 
    399  1.1  christos     if (isupper(c))
    400  1.1  christos     {
    401  1.1  christos 	yylval.ival = c - 'A';
    402  1.1  christos 	return (VREG);
    403  1.1  christos     }
    404  1.1  christos     if (islower(c))
    405  1.1  christos     {
    406  1.1  christos 	yylval.ival = c - 'a';
    407  1.1  christos 	return (DREG);
    408  1.1  christos     }
    409  1.1  christos 
    410  1.1  christos     if (isdigit(c) || c == '.')
    411  1.1  christos     {
    412  1.1  christos 	/* gobble up digits, points, exponents */
    413  1.1  christos 	char buf[BSZ + 1], *cp = buf;
    414  1.1  christos 	int dot = 0, expr = 0;
    415  1.1  christos 
    416  1.1  christos 	for (; (cp - buf) < BSZ; ++cp, c = getchar())
    417  1.1  christos 	{
    418  1.1  christos 
    419  1.1  christos 	    *cp = (char) c;
    420  1.1  christos 	    if (isdigit(c))
    421  1.1  christos 		continue;
    422  1.1  christos 	    if (c == '.')
    423  1.1  christos 	    {
    424  1.1  christos 		if (dot++ || expr)
    425  1.1  christos 		    return ('.');	/* will cause syntax error */
    426  1.1  christos 		continue;
    427  1.1  christos 	    }
    428  1.1  christos 
    429  1.1  christos 	    if (c == 'e')
    430  1.1  christos 	    {
    431  1.1  christos 		if (expr++)
    432  1.1  christos 		    return ('e');	/*  will  cause  syntax  error  */
    433  1.1  christos 		continue;
    434  1.1  christos 	    }
    435  1.1  christos 
    436  1.1  christos 	    /*  end  of  number  */
    437  1.1  christos 	    break;
    438  1.1  christos 	}
    439  1.1  christos 	*cp = '\0';
    440  1.1  christos 
    441  1.1  christos 	if ((cp - buf) >= BSZ)
    442  1.1  christos 	    printf("constant  too  long:  truncated\n");
    443  1.1  christos 	else
    444  1.1  christos 	    ungetc(c, stdin);	/*  push  back  last  char  read  */
    445  1.1  christos 	yylval.dval = atof(buf);
    446  1.1  christos 	return (CONST);
    447  1.1  christos     }
    448  1.1  christos     return (c);
    449  1.1  christos }
    450  1.1  christos 
    451  1.1  christos static INTERVAL
    452  1.1  christos hilo(double a, double b, double c, double d)
    453  1.1  christos {
    454  1.1  christos     /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
    455  1.1  christos     /*  used  by  *,  /  routines  */
    456  1.1  christos     INTERVAL v;
    457  1.1  christos 
    458  1.1  christos     if (a > b)
    459  1.1  christos     {
    460  1.1  christos 	v.hi = a;
    461  1.1  christos 	v.lo = b;
    462  1.1  christos     }
    463  1.1  christos     else
    464  1.1  christos     {
    465  1.1  christos 	v.hi = b;
    466  1.1  christos 	v.lo = a;
    467  1.1  christos     }
    468  1.1  christos 
    469  1.1  christos     if (c > d)
    470  1.1  christos     {
    471  1.1  christos 	if (c > v.hi)
    472  1.1  christos 	    v.hi = c;
    473  1.1  christos 	if (d < v.lo)
    474  1.1  christos 	    v.lo = d;
    475  1.1  christos     }
    476  1.1  christos     else
    477  1.1  christos     {
    478  1.1  christos 	if (d > v.hi)
    479  1.1  christos 	    v.hi = d;
    480  1.1  christos 	if (c < v.lo)
    481  1.1  christos 	    v.lo = c;
    482  1.1  christos     }
    483  1.1  christos     return (v);
    484  1.1  christos }
    485  1.1  christos 
    486  1.1  christos INTERVAL
    487  1.1  christos vmul(double a, double b, INTERVAL v)
    488  1.1  christos {
    489  1.1  christos     return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
    490  1.1  christos }
    491  1.1  christos 
    492  1.1  christos int
    493  1.1  christos dcheck(INTERVAL v)
    494  1.1  christos {
    495  1.1  christos     if (v.hi >= 0. && v.lo <= 0.)
    496  1.1  christos     {
    497  1.1  christos 	printf("divisor  interval  contains  0.\n");
    498  1.1  christos 	return (1);
    499  1.1  christos     }
    500  1.1  christos     return (0);
    501  1.1  christos }
    502  1.1  christos 
    503  1.1  christos INTERVAL
    504  1.1  christos vdiv(double a, double b, INTERVAL v)
    505  1.1  christos {
    506  1.1  christos     return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
    507  1.1  christos }
    508  1.6  christos #line 507 "varsyntax_calc1.tab.c"
    509  1.1  christos 
    510  1.1  christos #if YYDEBUG
    511  1.2  christos #include <stdio.h>	/* needed for printf */
    512  1.1  christos #endif
    513  1.1  christos 
    514  1.1  christos #include <stdlib.h>	/* needed for malloc, etc */
    515  1.1  christos #include <string.h>	/* needed for memset */
    516  1.1  christos 
    517  1.1  christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    518  1.1  christos static int yygrowstack(YYSTACKDATA *data)
    519  1.1  christos {
    520  1.1  christos     int i;
    521  1.1  christos     unsigned newsize;
    522  1.1  christos     YYINT *newss;
    523  1.1  christos     YYSTYPE *newvs;
    524  1.1  christos 
    525  1.1  christos     if ((newsize = data->stacksize) == 0)
    526  1.1  christos         newsize = YYINITSTACKSIZE;
    527  1.1  christos     else if (newsize >= YYMAXDEPTH)
    528  1.1  christos         return YYENOMEM;
    529  1.1  christos     else if ((newsize *= 2) > YYMAXDEPTH)
    530  1.1  christos         newsize = YYMAXDEPTH;
    531  1.1  christos 
    532  1.1  christos     i = (int) (data->s_mark - data->s_base);
    533  1.1  christos     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    534  1.6  christos     if (newss == NULL)
    535  1.1  christos         return YYENOMEM;
    536  1.1  christos 
    537  1.1  christos     data->s_base = newss;
    538  1.1  christos     data->s_mark = newss + i;
    539  1.1  christos 
    540  1.1  christos     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    541  1.6  christos     if (newvs == NULL)
    542  1.1  christos         return YYENOMEM;
    543  1.1  christos 
    544  1.1  christos     data->l_base = newvs;
    545  1.1  christos     data->l_mark = newvs + i;
    546  1.1  christos 
    547  1.1  christos     data->stacksize = newsize;
    548  1.1  christos     data->s_last = data->s_base + newsize - 1;
    549  1.1  christos     return 0;
    550  1.1  christos }
    551  1.1  christos 
    552  1.1  christos #if YYPURE || defined(YY_NO_LEAKS)
    553  1.1  christos static void yyfreestack(YYSTACKDATA *data)
    554  1.1  christos {
    555  1.1  christos     free(data->s_base);
    556  1.1  christos     free(data->l_base);
    557  1.1  christos     memset(data, 0, sizeof(*data));
    558  1.1  christos }
    559  1.1  christos #else
    560  1.1  christos #define yyfreestack(data) /* nothing */
    561  1.1  christos #endif
    562  1.1  christos 
    563  1.1  christos #define YYABORT  goto yyabort
    564  1.1  christos #define YYREJECT goto yyabort
    565  1.1  christos #define YYACCEPT goto yyaccept
    566  1.1  christos #define YYERROR  goto yyerrlab
    567  1.1  christos 
    568  1.1  christos int
    569  1.1  christos YYPARSE_DECL()
    570  1.1  christos {
    571  1.1  christos     int yym, yyn, yystate;
    572  1.1  christos #if YYDEBUG
    573  1.1  christos     const char *yys;
    574  1.1  christos 
    575  1.6  christos     if ((yys = getenv("YYDEBUG")) != NULL)
    576  1.1  christos     {
    577  1.1  christos         yyn = *yys;
    578  1.1  christos         if (yyn >= '0' && yyn <= '9')
    579  1.1  christos             yydebug = yyn - '0';
    580  1.1  christos     }
    581  1.1  christos #endif
    582  1.1  christos 
    583  1.5  christos     /* yym is set below */
    584  1.5  christos     /* yyn is set below */
    585  1.1  christos     yynerrs = 0;
    586  1.1  christos     yyerrflag = 0;
    587  1.1  christos     yychar = YYEMPTY;
    588  1.1  christos     yystate = 0;
    589  1.1  christos 
    590  1.1  christos #if YYPURE
    591  1.1  christos     memset(&yystack, 0, sizeof(yystack));
    592  1.1  christos #endif
    593  1.1  christos 
    594  1.1  christos     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    595  1.1  christos     yystack.s_mark = yystack.s_base;
    596  1.1  christos     yystack.l_mark = yystack.l_base;
    597  1.1  christos     yystate = 0;
    598  1.1  christos     *yystack.s_mark = 0;
    599  1.1  christos 
    600  1.1  christos yyloop:
    601  1.1  christos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    602  1.1  christos     if (yychar < 0)
    603  1.1  christos     {
    604  1.2  christos         yychar = YYLEX;
    605  1.2  christos         if (yychar < 0) yychar = YYEOF;
    606  1.1  christos #if YYDEBUG
    607  1.1  christos         if (yydebug)
    608  1.1  christos         {
    609  1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    610  1.1  christos             printf("%sdebug: state %d, reading %d (%s)\n",
    611  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    612  1.1  christos         }
    613  1.1  christos #endif
    614  1.1  christos     }
    615  1.2  christos     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    616  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    617  1.1  christos     {
    618  1.1  christos #if YYDEBUG
    619  1.1  christos         if (yydebug)
    620  1.1  christos             printf("%sdebug: state %d, shifting to state %d\n",
    621  1.1  christos                     YYPREFIX, yystate, yytable[yyn]);
    622  1.1  christos #endif
    623  1.2  christos         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    624  1.1  christos         yystate = yytable[yyn];
    625  1.1  christos         *++yystack.s_mark = yytable[yyn];
    626  1.1  christos         *++yystack.l_mark = yylval;
    627  1.1  christos         yychar = YYEMPTY;
    628  1.1  christos         if (yyerrflag > 0)  --yyerrflag;
    629  1.1  christos         goto yyloop;
    630  1.1  christos     }
    631  1.2  christos     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    632  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    633  1.1  christos     {
    634  1.1  christos         yyn = yytable[yyn];
    635  1.1  christos         goto yyreduce;
    636  1.1  christos     }
    637  1.2  christos     if (yyerrflag != 0) goto yyinrecovery;
    638  1.1  christos 
    639  1.1  christos     YYERROR_CALL("syntax error");
    640  1.1  christos 
    641  1.2  christos     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    642  1.1  christos yyerrlab:
    643  1.1  christos     ++yynerrs;
    644  1.1  christos 
    645  1.1  christos yyinrecovery:
    646  1.1  christos     if (yyerrflag < 3)
    647  1.1  christos     {
    648  1.1  christos         yyerrflag = 3;
    649  1.1  christos         for (;;)
    650  1.1  christos         {
    651  1.2  christos             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
    652  1.2  christos                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
    653  1.1  christos             {
    654  1.1  christos #if YYDEBUG
    655  1.1  christos                 if (yydebug)
    656  1.1  christos                     printf("%sdebug: state %d, error recovery shifting\
    657  1.1  christos  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
    658  1.1  christos #endif
    659  1.2  christos                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    660  1.1  christos                 yystate = yytable[yyn];
    661  1.1  christos                 *++yystack.s_mark = yytable[yyn];
    662  1.1  christos                 *++yystack.l_mark = yylval;
    663  1.1  christos                 goto yyloop;
    664  1.1  christos             }
    665  1.1  christos             else
    666  1.1  christos             {
    667  1.1  christos #if YYDEBUG
    668  1.1  christos                 if (yydebug)
    669  1.1  christos                     printf("%sdebug: error recovery discarding state %d\n",
    670  1.1  christos                             YYPREFIX, *yystack.s_mark);
    671  1.1  christos #endif
    672  1.1  christos                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
    673  1.1  christos                 --yystack.s_mark;
    674  1.1  christos                 --yystack.l_mark;
    675  1.1  christos             }
    676  1.1  christos         }
    677  1.1  christos     }
    678  1.1  christos     else
    679  1.1  christos     {
    680  1.1  christos         if (yychar == YYEOF) goto yyabort;
    681  1.1  christos #if YYDEBUG
    682  1.1  christos         if (yydebug)
    683  1.1  christos         {
    684  1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    685  1.1  christos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
    686  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    687  1.1  christos         }
    688  1.1  christos #endif
    689  1.1  christos         yychar = YYEMPTY;
    690  1.1  christos         goto yyloop;
    691  1.1  christos     }
    692  1.1  christos 
    693  1.1  christos yyreduce:
    694  1.1  christos #if YYDEBUG
    695  1.1  christos     if (yydebug)
    696  1.1  christos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
    697  1.1  christos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
    698  1.1  christos #endif
    699  1.1  christos     yym = yylen[yyn];
    700  1.2  christos     if (yym > 0)
    701  1.1  christos         yyval = yystack.l_mark[1-yym];
    702  1.1  christos     else
    703  1.1  christos         memset(&yyval, 0, sizeof yyval);
    704  1.2  christos 
    705  1.1  christos     switch (yyn)
    706  1.1  christos     {
    707  1.1  christos case 3:
    708  1.1  christos #line 59 "varsyntax_calc1.y"
    709  1.1  christos 	{
    710  1.1  christos 		(void) printf("%15.8f\n", yystack.l_mark[-1].dval);
    711  1.1  christos 	}
    712  1.6  christos #line 711 "varsyntax_calc1.tab.c"
    713  1.1  christos break;
    714  1.1  christos case 4:
    715  1.1  christos #line 63 "varsyntax_calc1.y"
    716  1.1  christos 	{
    717  1.1  christos 		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.l_mark[-1].vval.hi);
    718  1.1  christos 	}
    719  1.6  christos #line 718 "varsyntax_calc1.tab.c"
    720  1.1  christos break;
    721  1.1  christos case 5:
    722  1.1  christos #line 67 "varsyntax_calc1.y"
    723  1.1  christos 	{
    724  1.1  christos 		dreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].dval;
    725  1.1  christos 	}
    726  1.6  christos #line 725 "varsyntax_calc1.tab.c"
    727  1.1  christos break;
    728  1.1  christos case 6:
    729  1.1  christos #line 71 "varsyntax_calc1.y"
    730  1.1  christos 	{
    731  1.1  christos 		vreg[yystack.l_mark[-3].ival] = yystack.l_mark[-1].vval;
    732  1.1  christos 	}
    733  1.6  christos #line 732 "varsyntax_calc1.tab.c"
    734  1.1  christos break;
    735  1.1  christos case 7:
    736  1.1  christos #line 75 "varsyntax_calc1.y"
    737  1.1  christos 	{
    738  1.1  christos 		yyerrok;
    739  1.1  christos 	}
    740  1.6  christos #line 739 "varsyntax_calc1.tab.c"
    741  1.1  christos break;
    742  1.1  christos case 9:
    743  1.1  christos #line 82 "varsyntax_calc1.y"
    744  1.1  christos 	{
    745  1.1  christos 		yyval.dval = dreg[yystack.l_mark[0].ival]; /* $$ & $1 are sufficient here*/
    746  1.1  christos 	}
    747  1.6  christos #line 746 "varsyntax_calc1.tab.c"
    748  1.1  christos break;
    749  1.1  christos case 10:
    750  1.1  christos #line 86 "varsyntax_calc1.y"
    751  1.1  christos 	{
    752  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
    753  1.1  christos 	}
    754  1.6  christos #line 753 "varsyntax_calc1.tab.c"
    755  1.1  christos break;
    756  1.1  christos case 11:
    757  1.1  christos #line 90 "varsyntax_calc1.y"
    758  1.1  christos 	{
    759  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
    760  1.1  christos 	}
    761  1.6  christos #line 760 "varsyntax_calc1.tab.c"
    762  1.1  christos break;
    763  1.1  christos case 12:
    764  1.1  christos #line 94 "varsyntax_calc1.y"
    765  1.1  christos 	{
    766  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
    767  1.1  christos 	}
    768  1.6  christos #line 767 "varsyntax_calc1.tab.c"
    769  1.1  christos break;
    770  1.1  christos case 13:
    771  1.1  christos #line 98 "varsyntax_calc1.y"
    772  1.1  christos 	{
    773  1.1  christos 		yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
    774  1.1  christos 	}
    775  1.6  christos #line 774 "varsyntax_calc1.tab.c"
    776  1.1  christos break;
    777  1.1  christos case 14:
    778  1.1  christos #line 102 "varsyntax_calc1.y"
    779  1.1  christos 	{
    780  1.1  christos 		yyval.dval = -yystack.l_mark[0].dval;
    781  1.1  christos 	}
    782  1.6  christos #line 781 "varsyntax_calc1.tab.c"
    783  1.1  christos break;
    784  1.1  christos case 15:
    785  1.1  christos #line 106 "varsyntax_calc1.y"
    786  1.1  christos 	{
    787  1.1  christos 		yyval.dval = yystack.l_mark[-1].dval;
    788  1.1  christos 	}
    789  1.6  christos #line 788 "varsyntax_calc1.tab.c"
    790  1.1  christos break;
    791  1.1  christos case 16:
    792  1.1  christos #line 112 "varsyntax_calc1.y"
    793  1.1  christos 	{
    794  1.1  christos 		yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval;
    795  1.1  christos 	}
    796  1.6  christos #line 795 "varsyntax_calc1.tab.c"
    797  1.1  christos break;
    798  1.1  christos case 17:
    799  1.1  christos #line 116 "varsyntax_calc1.y"
    800  1.1  christos 	{
    801  1.1  christos 		yyval.vval.lo = yystack.l_mark[-3].dval;
    802  1.1  christos 		yyval.vval.hi = yystack.l_mark[-1].dval;
    803  1.6  christos 		if ( yyval.vval.lo > yyval.vval.hi )
    804  1.1  christos 		{
    805  1.1  christos 			(void) printf("interval out of order\n");
    806  1.1  christos 			YYERROR;
    807  1.1  christos 		}
    808  1.1  christos 	}
    809  1.6  christos #line 808 "varsyntax_calc1.tab.c"
    810  1.1  christos break;
    811  1.1  christos case 18:
    812  1.1  christos #line 126 "varsyntax_calc1.y"
    813  1.1  christos 	{
    814  1.1  christos 		yyval.vval = vreg[yystack.l_mark[0].ival];
    815  1.1  christos 	}
    816  1.6  christos #line 815 "varsyntax_calc1.tab.c"
    817  1.1  christos break;
    818  1.1  christos case 19:
    819  1.1  christos #line 130 "varsyntax_calc1.y"
    820  1.1  christos 	{
    821  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
    822  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
    823  1.1  christos 	}
    824  1.6  christos #line 823 "varsyntax_calc1.tab.c"
    825  1.1  christos break;
    826  1.1  christos case 20:
    827  1.1  christos #line 135 "varsyntax_calc1.y"
    828  1.1  christos 	{
    829  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
    830  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
    831  1.1  christos 	}
    832  1.6  christos #line 831 "varsyntax_calc1.tab.c"
    833  1.1  christos break;
    834  1.1  christos case 21:
    835  1.1  christos #line 140 "varsyntax_calc1.y"
    836  1.1  christos 	{
    837  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
    838  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
    839  1.1  christos 	}
    840  1.6  christos #line 839 "varsyntax_calc1.tab.c"
    841  1.1  christos break;
    842  1.1  christos case 22:
    843  1.1  christos #line 145 "varsyntax_calc1.y"
    844  1.1  christos 	{
    845  1.1  christos 		yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
    846  1.1  christos 		yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
    847  1.1  christos 	}
    848  1.6  christos #line 847 "varsyntax_calc1.tab.c"
    849  1.1  christos break;
    850  1.1  christos case 23:
    851  1.1  christos #line 150 "varsyntax_calc1.y"
    852  1.1  christos 	{
    853  1.1  christos 		yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
    854  1.1  christos 	}
    855  1.6  christos #line 854 "varsyntax_calc1.tab.c"
    856  1.1  christos break;
    857  1.1  christos case 24:
    858  1.1  christos #line 154 "varsyntax_calc1.y"
    859  1.1  christos 	{
    860  1.1  christos 		yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
    861  1.1  christos 	}
    862  1.6  christos #line 861 "varsyntax_calc1.tab.c"
    863  1.1  christos break;
    864  1.1  christos case 25:
    865  1.1  christos #line 158 "varsyntax_calc1.y"
    866  1.1  christos 	{
    867  1.1  christos 		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
    868  1.1  christos 		yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval );
    869  1.1  christos 	}
    870  1.6  christos #line 869 "varsyntax_calc1.tab.c"
    871  1.1  christos break;
    872  1.1  christos case 26:
    873  1.1  christos #line 163 "varsyntax_calc1.y"
    874  1.1  christos 	{
    875  1.1  christos 		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
    876  1.1  christos 		yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval );
    877  1.1  christos 	}
    878  1.6  christos #line 877 "varsyntax_calc1.tab.c"
    879  1.1  christos break;
    880  1.1  christos case 27:
    881  1.1  christos #line 168 "varsyntax_calc1.y"
    882  1.1  christos 	{
    883  1.1  christos 		yyval.vval.hi = -yystack.l_mark[0].vval.lo;
    884  1.1  christos 		yyval.vval.lo = -yystack.l_mark[0].vval.hi;
    885  1.1  christos 	}
    886  1.6  christos #line 885 "varsyntax_calc1.tab.c"
    887  1.1  christos break;
    888  1.1  christos case 28:
    889  1.1  christos #line 173 "varsyntax_calc1.y"
    890  1.1  christos 	{
    891  1.1  christos 		yyval.vval = yystack.l_mark[-1].vval;
    892  1.1  christos 	}
    893  1.6  christos #line 892 "varsyntax_calc1.tab.c"
    894  1.1  christos break;
    895  1.6  christos #line 894 "varsyntax_calc1.tab.c"
    896  1.1  christos     }
    897  1.1  christos     yystack.s_mark -= yym;
    898  1.1  christos     yystate = *yystack.s_mark;
    899  1.1  christos     yystack.l_mark -= yym;
    900  1.1  christos     yym = yylhs[yyn];
    901  1.1  christos     if (yystate == 0 && yym == 0)
    902  1.1  christos     {
    903  1.1  christos #if YYDEBUG
    904  1.1  christos         if (yydebug)
    905  1.1  christos             printf("%sdebug: after reduction, shifting from state 0 to\
    906  1.1  christos  state %d\n", YYPREFIX, YYFINAL);
    907  1.1  christos #endif
    908  1.1  christos         yystate = YYFINAL;
    909  1.1  christos         *++yystack.s_mark = YYFINAL;
    910  1.1  christos         *++yystack.l_mark = yyval;
    911  1.1  christos         if (yychar < 0)
    912  1.1  christos         {
    913  1.2  christos             yychar = YYLEX;
    914  1.2  christos             if (yychar < 0) yychar = YYEOF;
    915  1.1  christos #if YYDEBUG
    916  1.1  christos             if (yydebug)
    917  1.1  christos             {
    918  1.2  christos                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    919  1.1  christos                 printf("%sdebug: state %d, reading %d (%s)\n",
    920  1.1  christos                         YYPREFIX, YYFINAL, yychar, yys);
    921  1.1  christos             }
    922  1.1  christos #endif
    923  1.1  christos         }
    924  1.1  christos         if (yychar == YYEOF) goto yyaccept;
    925  1.1  christos         goto yyloop;
    926  1.1  christos     }
    927  1.2  christos     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
    928  1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
    929  1.1  christos         yystate = yytable[yyn];
    930  1.1  christos     else
    931  1.1  christos         yystate = yydgoto[yym];
    932  1.1  christos #if YYDEBUG
    933  1.1  christos     if (yydebug)
    934  1.1  christos         printf("%sdebug: after reduction, shifting from state %d \
    935  1.1  christos to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
    936  1.1  christos #endif
    937  1.2  christos     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    938  1.1  christos     *++yystack.s_mark = (YYINT) yystate;
    939  1.1  christos     *++yystack.l_mark = yyval;
    940  1.1  christos     goto yyloop;
    941  1.1  christos 
    942  1.1  christos yyoverflow:
    943  1.1  christos     YYERROR_CALL("yacc stack overflow");
    944  1.1  christos 
    945  1.1  christos yyabort:
    946  1.1  christos     yyfreestack(&yystack);
    947  1.1  christos     return (1);
    948  1.1  christos 
    949  1.1  christos yyaccept:
    950  1.1  christos     yyfreestack(&yystack);
    951  1.1  christos     return (0);
    952  1.1  christos }
    953