Home | History | Annotate | Line # | Download | only in calc
      1  1.1.1.5  mrg /* A Bison parser, made by GNU Bison 3.6.4.  */
      2      1.1  mrg 
      3  1.1.1.5  mrg /* Bison implementation for Yacc-like parsers in C
      4  1.1.1.5  mrg 
      5  1.1.1.5  mrg    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
      6  1.1.1.5  mrg    Inc.
      7  1.1.1.5  mrg 
      8  1.1.1.5  mrg    This program is free software: you can redistribute it and/or modify
      9  1.1.1.5  mrg    it under the terms of the GNU General Public License as published by
     10  1.1.1.5  mrg    the Free Software Foundation, either version 3 of the License, or
     11  1.1.1.5  mrg    (at your option) any later version.
     12  1.1.1.5  mrg 
     13  1.1.1.5  mrg    This program is distributed in the hope that it will be useful,
     14  1.1.1.5  mrg    but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  1.1.1.5  mrg    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  1.1.1.5  mrg    GNU General Public License for more details.
     17  1.1.1.5  mrg 
     18  1.1.1.5  mrg    You should have received a copy of the GNU General Public License
     19  1.1.1.5  mrg    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     20  1.1.1.5  mrg 
     21  1.1.1.5  mrg /* As a special exception, you may create a larger work that contains
     22  1.1.1.5  mrg    part or all of the Bison parser skeleton and distribute that work
     23  1.1.1.5  mrg    under terms of your choice, so long as that work isn't itself a
     24  1.1.1.5  mrg    parser generator using the skeleton or a modified version thereof
     25  1.1.1.5  mrg    as a parser skeleton.  Alternatively, if you modify or redistribute
     26  1.1.1.5  mrg    the parser skeleton itself, you may (at your option) remove this
     27  1.1.1.5  mrg    special exception, which will cause the skeleton and the resulting
     28  1.1.1.5  mrg    Bison output files to be licensed under the GNU General Public
     29  1.1.1.5  mrg    License without this special exception.
     30  1.1.1.5  mrg 
     31  1.1.1.5  mrg    This special exception was added by the Free Software Foundation in
     32  1.1.1.5  mrg    version 2.2 of Bison.  */
     33  1.1.1.5  mrg 
     34  1.1.1.5  mrg /* C LALR(1) parser skeleton written by Richard Stallman, by
     35  1.1.1.5  mrg    simplifying the original so-called "semantic" parser.  */
     36  1.1.1.5  mrg 
     37  1.1.1.5  mrg /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
     38  1.1.1.5  mrg    especially those whose name start with YY_ or yy_.  They are
     39  1.1.1.5  mrg    private implementation details that can be changed or removed.  */
     40  1.1.1.5  mrg 
     41  1.1.1.5  mrg /* All symbols defined below should begin with yy or YY, to avoid
     42  1.1.1.5  mrg    infringing on user name space.  This should be done even for local
     43  1.1.1.5  mrg    variables, as they might otherwise be expanded by user macros.
     44  1.1.1.5  mrg    There are some unavoidable exceptions within include files to
     45  1.1.1.5  mrg    define necessary library symbols; they are noted "INFRINGES ON
     46  1.1.1.5  mrg    USER NAME SPACE" below.  */
     47  1.1.1.5  mrg 
     48  1.1.1.5  mrg /* Identify Bison output.  */
     49  1.1.1.5  mrg #define YYBISON 1
     50  1.1.1.5  mrg 
     51  1.1.1.5  mrg /* Bison version.  */
     52  1.1.1.5  mrg #define YYBISON_VERSION "3.6.4"
     53  1.1.1.5  mrg 
     54  1.1.1.5  mrg /* Skeleton name.  */
     55  1.1.1.5  mrg #define YYSKELETON_NAME "yacc.c"
     56  1.1.1.5  mrg 
     57  1.1.1.5  mrg /* Pure parsers.  */
     58      1.1  mrg #define YYPURE 0
     59      1.1  mrg 
     60  1.1.1.5  mrg /* Push parsers.  */
     61  1.1.1.5  mrg #define YYPUSH 0
     62  1.1.1.5  mrg 
     63  1.1.1.5  mrg /* Pull parsers.  */
     64  1.1.1.5  mrg #define YYPULL 1
     65  1.1.1.5  mrg 
     66  1.1.1.5  mrg 
     67  1.1.1.5  mrg 
     68  1.1.1.5  mrg 
     69  1.1.1.5  mrg /* First part of user prologue.  */
     70  1.1.1.5  mrg #line 1 "../../../gmp/demos/calc/calc.y"
     71  1.1.1.5  mrg 
     72      1.1  mrg /* A simple integer desk calculator using yacc and gmp.
     73      1.1  mrg 
     74  1.1.1.3  mrg Copyright 2000-2002 Free Software Foundation, Inc.
     75      1.1  mrg 
     76      1.1  mrg This file is part of the GNU MP Library.
     77      1.1  mrg 
     78      1.1  mrg This program is free software; you can redistribute it and/or modify it under
     79      1.1  mrg the terms of the GNU General Public License as published by the Free Software
     80      1.1  mrg Foundation; either version 3 of the License, or (at your option) any later
     81      1.1  mrg version.
     82      1.1  mrg 
     83      1.1  mrg This program is distributed in the hope that it will be useful, but WITHOUT ANY
     84      1.1  mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
     85      1.1  mrg PARTICULAR PURPOSE.  See the GNU General Public License for more details.
     86      1.1  mrg 
     87      1.1  mrg You should have received a copy of the GNU General Public License along with
     88  1.1.1.3  mrg this program.  If not, see https://www.gnu.org/licenses/.  */
     89      1.1  mrg 
     90      1.1  mrg 
     91      1.1  mrg /* This is a simple program, meant only to show one way to use GMP for this
     92      1.1  mrg    sort of thing.  There's few features, and error checking is minimal.
     93      1.1  mrg    Standard input is read, calc_help() below shows the inputs accepted.
     94      1.1  mrg 
     95      1.1  mrg    Expressions are evaluated as they're read.  If user defined functions
     96      1.1  mrg    were wanted it'd be necessary to build a parse tree like pexpr.c does, or
     97      1.1  mrg    a list of operations for a stack based evaluator.  That would also make
     98      1.1  mrg    it possible to detect and optimize evaluations "mod m" like pexpr.c does.
     99      1.1  mrg 
    100      1.1  mrg    A stack is used for intermediate values in the expression evaluation,
    101      1.1  mrg    separate from the yacc parser stack.  This is simple, makes error
    102      1.1  mrg    recovery easy, minimizes the junk around mpz calls in the rules, and
    103      1.1  mrg    saves initializing or clearing "mpz_t"s during a calculation.  A
    104      1.1  mrg    disadvantage though is that variables must be copied to the stack to be
    105      1.1  mrg    worked on.  A more sophisticated calculator or language system might be
    106      1.1  mrg    able to avoid that when executing a compiled or semi-compiled form.
    107      1.1  mrg 
    108      1.1  mrg    Avoiding repeated initializing and clearing of "mpz_t"s is important.  In
    109      1.1  mrg    this program the time spent parsing is obviously much greater than any
    110      1.1  mrg    possible saving from this, but a proper calculator or language should
    111      1.1  mrg    take some trouble over it.  Don't be surprised if an init/clear takes 3
    112      1.1  mrg    or more times as long as a 10 limb addition, depending on the system (see
    113      1.1  mrg    the mpz_init_realloc_clear example in tune/README).  */
    114      1.1  mrg 
    115      1.1  mrg 
    116      1.1  mrg #include <stdio.h>
    117      1.1  mrg #include <stdlib.h>
    118      1.1  mrg #include <string.h>
    119      1.1  mrg #include "gmp.h"
    120      1.1  mrg #define NO_CALC_H /* because it conflicts with normal calc.c stuff */
    121      1.1  mrg #include "calc-common.h"
    122      1.1  mrg 
    123      1.1  mrg 
    124      1.1  mrg #define numberof(x)  (sizeof (x) / sizeof ((x)[0]))
    125      1.1  mrg 
    126      1.1  mrg 
    127      1.1  mrg void
    128      1.1  mrg calc_help (void)
    129      1.1  mrg {
    130      1.1  mrg   printf ("Examples:\n");
    131      1.1  mrg   printf ("    2+3*4        expressions are evaluated\n");
    132      1.1  mrg   printf ("    x=5^6        variables a to z can be set and used\n");
    133      1.1  mrg   printf ("Operators:\n");
    134      1.1  mrg   printf ("    + - *        arithmetic\n");
    135      1.1  mrg   printf ("    / %%          division and remainder (rounding towards negative infinity)\n");
    136      1.1  mrg   printf ("    ^            exponentiation\n");
    137      1.1  mrg   printf ("    !            factorial\n");
    138      1.1  mrg   printf ("    << >>        left and right shifts\n");
    139      1.1  mrg   printf ("    <= >= >      \\ comparisons, giving 1 if true, 0 if false\n");
    140      1.1  mrg   printf ("    == != <      /\n");
    141      1.1  mrg   printf ("    && ||        logical and/or, giving 1 if true, 0 if false\n");
    142      1.1  mrg   printf ("Functions:\n");
    143      1.1  mrg   printf ("    abs(n)       absolute value\n");
    144      1.1  mrg   printf ("    bin(n,m)     binomial coefficient\n");
    145      1.1  mrg   printf ("    fib(n)       fibonacci number\n");
    146      1.1  mrg   printf ("    gcd(a,b,..)  greatest common divisor\n");
    147      1.1  mrg   printf ("    kron(a,b)    kronecker symbol\n");
    148      1.1  mrg   printf ("    lcm(a,b,..)  least common multiple\n");
    149      1.1  mrg   printf ("    lucnum(n)    lucas number\n");
    150      1.1  mrg   printf ("    nextprime(n) next prime after n\n");
    151      1.1  mrg   printf ("    powm(b,e,m)  modulo powering, b^e%%m\n");
    152      1.1  mrg   printf ("    root(n,r)    r-th root\n");
    153      1.1  mrg   printf ("    sqrt(n)      square root\n");
    154      1.1  mrg   printf ("Other:\n");
    155      1.1  mrg   printf ("    hex          \\ set hex or decimal for input and output\n");
    156      1.1  mrg   printf ("    decimal      /   (\"0x\" can be used for hex too)\n");
    157      1.1  mrg   printf ("    quit         exit program (EOF works too)\n");
    158      1.1  mrg   printf ("    ;            statements are separated with a ; or newline\n");
    159      1.1  mrg   printf ("    \\            continue expressions with \\ before newline\n");
    160      1.1  mrg   printf ("    # xxx        comments are # though to newline\n");
    161      1.1  mrg   printf ("Hex numbers must be entered in upper case, to distinguish them from the\n");
    162      1.1  mrg   printf ("variables a to f (like in bc).\n");
    163      1.1  mrg }
    164      1.1  mrg 
    165      1.1  mrg 
    166      1.1  mrg int  ibase = 0;
    167      1.1  mrg int  obase = 10;
    168      1.1  mrg 
    169      1.1  mrg 
    170      1.1  mrg /* The stack is a fixed size, which means there's a limit on the nesting
    171      1.1  mrg    allowed in expressions.  A more sophisticated program could let it grow
    172      1.1  mrg    dynamically.  */
    173      1.1  mrg 
    174      1.1  mrg mpz_t    stack[100];
    175      1.1  mrg mpz_ptr  sp = stack[0];
    176      1.1  mrg 
    177      1.1  mrg #define CHECK_OVERFLOW()                                                  \
    178      1.1  mrg   if (sp >= stack[numberof(stack)])	/* FIXME */			\
    179      1.1  mrg     {                                                                     \
    180      1.1  mrg       fprintf (stderr,                                                    \
    181      1.1  mrg                "Value stack overflow, too much nesting in expression\n"); \
    182      1.1  mrg       YYERROR;                                                            \
    183      1.1  mrg     }
    184      1.1  mrg 
    185      1.1  mrg #define CHECK_EMPTY()                                                   \
    186      1.1  mrg   if (sp != stack[0])                                                   \
    187      1.1  mrg     {                                                                   \
    188      1.1  mrg       fprintf (stderr, "Oops, expected the value stack to be empty\n"); \
    189      1.1  mrg       sp = stack[0];                                                    \
    190      1.1  mrg     }
    191      1.1  mrg 
    192      1.1  mrg 
    193      1.1  mrg mpz_t  variable[26];
    194      1.1  mrg 
    195      1.1  mrg #define CHECK_VARIABLE(var)                                             \
    196      1.1  mrg   if ((var) < 0 || (var) >= numberof (variable))                        \
    197      1.1  mrg     {                                                                   \
    198      1.1  mrg       fprintf (stderr, "Oops, bad variable somehow: %d\n", var);        \
    199      1.1  mrg       YYERROR;                                                          \
    200      1.1  mrg     }
    201      1.1  mrg 
    202      1.1  mrg 
    203      1.1  mrg #define CHECK_UI(name,z)                        \
    204      1.1  mrg   if (! mpz_fits_ulong_p (z))                   \
    205      1.1  mrg     {                                           \
    206      1.1  mrg       fprintf (stderr, "%s too big\n", name);   \
    207      1.1  mrg       YYERROR;                                  \
    208      1.1  mrg     }
    209      1.1  mrg 
    210  1.1.1.5  mrg 
    211  1.1.1.5  mrg #line 212 "calc.c"
    212  1.1.1.5  mrg 
    213  1.1.1.5  mrg # ifndef YY_CAST
    214  1.1.1.5  mrg #  ifdef __cplusplus
    215  1.1.1.5  mrg #   define YY_CAST(Type, Val) static_cast<Type> (Val)
    216  1.1.1.5  mrg #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
    217  1.1.1.5  mrg #  else
    218  1.1.1.5  mrg #   define YY_CAST(Type, Val) ((Type) (Val))
    219  1.1.1.5  mrg #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
    220  1.1.1.5  mrg #  endif
    221  1.1.1.5  mrg # endif
    222  1.1.1.5  mrg # ifndef YY_NULLPTR
    223  1.1.1.5  mrg #  if defined __cplusplus
    224  1.1.1.5  mrg #   if 201103L <= __cplusplus
    225  1.1.1.5  mrg #    define YY_NULLPTR nullptr
    226  1.1.1.5  mrg #   else
    227  1.1.1.5  mrg #    define YY_NULLPTR 0
    228  1.1.1.5  mrg #   endif
    229  1.1.1.5  mrg #  else
    230  1.1.1.5  mrg #   define YY_NULLPTR ((void*)0)
    231  1.1.1.5  mrg #  endif
    232  1.1.1.5  mrg # endif
    233  1.1.1.5  mrg 
    234  1.1.1.5  mrg /* Use api.header.include to #include this header
    235  1.1.1.5  mrg    instead of duplicating it here.  */
    236  1.1.1.5  mrg #ifndef YY_YY_CALC_H_INCLUDED
    237  1.1.1.5  mrg # define YY_YY_CALC_H_INCLUDED
    238  1.1.1.5  mrg /* Debug traces.  */
    239  1.1.1.5  mrg #ifndef YYDEBUG
    240  1.1.1.5  mrg # define YYDEBUG 0
    241      1.1  mrg #endif
    242  1.1.1.5  mrg #if YYDEBUG
    243  1.1.1.5  mrg extern int yydebug;
    244  1.1.1.5  mrg #endif
    245  1.1.1.5  mrg 
    246  1.1.1.5  mrg /* Token kinds.  */
    247  1.1.1.5  mrg #ifndef YYTOKENTYPE
    248  1.1.1.5  mrg # define YYTOKENTYPE
    249  1.1.1.5  mrg   enum yytokentype
    250  1.1.1.5  mrg   {
    251  1.1.1.5  mrg     YYEMPTY = -2,
    252  1.1.1.5  mrg     YYEOF = 0,                     /* "end of file"  */
    253  1.1.1.5  mrg     YYerror = 256,                 /* error  */
    254  1.1.1.5  mrg     YYUNDEF = 257,                 /* "invalid token"  */
    255  1.1.1.5  mrg     EOS = 258,                     /* EOS  */
    256  1.1.1.5  mrg     BAD = 259,                     /* BAD  */
    257  1.1.1.5  mrg     HELP = 260,                    /* HELP  */
    258  1.1.1.5  mrg     HEX = 261,                     /* HEX  */
    259  1.1.1.5  mrg     DECIMAL = 262,                 /* DECIMAL  */
    260  1.1.1.5  mrg     QUIT = 263,                    /* QUIT  */
    261  1.1.1.5  mrg     ABS = 264,                     /* ABS  */
    262  1.1.1.5  mrg     BIN = 265,                     /* BIN  */
    263  1.1.1.5  mrg     FIB = 266,                     /* FIB  */
    264  1.1.1.5  mrg     GCD = 267,                     /* GCD  */
    265  1.1.1.5  mrg     KRON = 268,                    /* KRON  */
    266  1.1.1.5  mrg     LCM = 269,                     /* LCM  */
    267  1.1.1.5  mrg     LUCNUM = 270,                  /* LUCNUM  */
    268  1.1.1.5  mrg     NEXTPRIME = 271,               /* NEXTPRIME  */
    269  1.1.1.5  mrg     POWM = 272,                    /* POWM  */
    270  1.1.1.5  mrg     ROOT = 273,                    /* ROOT  */
    271  1.1.1.5  mrg     SQRT = 274,                    /* SQRT  */
    272  1.1.1.5  mrg     NUMBER = 275,                  /* NUMBER  */
    273  1.1.1.5  mrg     VARIABLE = 276,                /* VARIABLE  */
    274  1.1.1.5  mrg     LOR = 277,                     /* LOR  */
    275  1.1.1.5  mrg     LAND = 278,                    /* LAND  */
    276  1.1.1.5  mrg     EQ = 279,                      /* EQ  */
    277  1.1.1.5  mrg     NE = 280,                      /* NE  */
    278  1.1.1.5  mrg     LE = 281,                      /* LE  */
    279  1.1.1.5  mrg     GE = 282,                      /* GE  */
    280  1.1.1.5  mrg     LSHIFT = 283,                  /* LSHIFT  */
    281  1.1.1.5  mrg     RSHIFT = 284,                  /* RSHIFT  */
    282  1.1.1.5  mrg     UMINUS = 285                   /* UMINUS  */
    283  1.1.1.5  mrg   };
    284  1.1.1.5  mrg   typedef enum yytokentype yytoken_kind_t;
    285  1.1.1.5  mrg #endif
    286  1.1.1.5  mrg /* Token kinds.  */
    287  1.1.1.5  mrg #define YYEOF 0
    288  1.1.1.5  mrg #define YYerror 256
    289  1.1.1.5  mrg #define YYUNDEF 257
    290  1.1.1.5  mrg #define EOS 258
    291  1.1.1.5  mrg #define BAD 259
    292  1.1.1.5  mrg #define HELP 260
    293  1.1.1.5  mrg #define HEX 261
    294  1.1.1.5  mrg #define DECIMAL 262
    295  1.1.1.5  mrg #define QUIT 263
    296  1.1.1.5  mrg #define ABS 264
    297  1.1.1.5  mrg #define BIN 265
    298  1.1.1.5  mrg #define FIB 266
    299  1.1.1.5  mrg #define GCD 267
    300  1.1.1.5  mrg #define KRON 268
    301  1.1.1.5  mrg #define LCM 269
    302  1.1.1.5  mrg #define LUCNUM 270
    303  1.1.1.5  mrg #define NEXTPRIME 271
    304  1.1.1.5  mrg #define POWM 272
    305  1.1.1.5  mrg #define ROOT 273
    306  1.1.1.5  mrg #define SQRT 274
    307  1.1.1.5  mrg #define NUMBER 275
    308  1.1.1.5  mrg #define VARIABLE 276
    309  1.1.1.5  mrg #define LOR 277
    310  1.1.1.5  mrg #define LAND 278
    311  1.1.1.5  mrg #define EQ 279
    312  1.1.1.5  mrg #define NE 280
    313  1.1.1.5  mrg #define LE 281
    314  1.1.1.5  mrg #define GE 282
    315  1.1.1.5  mrg #define LSHIFT 283
    316  1.1.1.5  mrg #define RSHIFT 284
    317  1.1.1.5  mrg #define UMINUS 285
    318  1.1.1.5  mrg 
    319  1.1.1.5  mrg /* Value type.  */
    320  1.1.1.5  mrg #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    321  1.1.1.5  mrg union YYSTYPE
    322  1.1.1.5  mrg {
    323  1.1.1.3  mrg #line 142 "../../../gmp/demos/calc/calc.y"
    324  1.1.1.5  mrg 
    325      1.1  mrg   char  *str;
    326      1.1  mrg   int   var;
    327  1.1.1.5  mrg 
    328  1.1.1.5  mrg #line 329 "calc.c"
    329  1.1.1.5  mrg 
    330  1.1.1.5  mrg };
    331  1.1.1.5  mrg typedef union YYSTYPE YYSTYPE;
    332  1.1.1.5  mrg # define YYSTYPE_IS_TRIVIAL 1
    333  1.1.1.5  mrg # define YYSTYPE_IS_DECLARED 1
    334  1.1.1.5  mrg #endif
    335  1.1.1.5  mrg 
    336  1.1.1.5  mrg 
    337  1.1.1.5  mrg extern YYSTYPE yylval;
    338  1.1.1.5  mrg 
    339  1.1.1.5  mrg int yyparse (void);
    340  1.1.1.5  mrg 
    341  1.1.1.5  mrg #endif /* !YY_YY_CALC_H_INCLUDED  */
    342  1.1.1.5  mrg /* Symbol kind.  */
    343  1.1.1.5  mrg enum yysymbol_kind_t
    344  1.1.1.5  mrg {
    345  1.1.1.5  mrg   YYSYMBOL_YYEMPTY = -2,
    346  1.1.1.5  mrg   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
    347  1.1.1.5  mrg   YYSYMBOL_YYerror = 1,                    /* error  */
    348  1.1.1.5  mrg   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
    349  1.1.1.5  mrg   YYSYMBOL_EOS = 3,                        /* EOS  */
    350  1.1.1.5  mrg   YYSYMBOL_BAD = 4,                        /* BAD  */
    351  1.1.1.5  mrg   YYSYMBOL_HELP = 5,                       /* HELP  */
    352  1.1.1.5  mrg   YYSYMBOL_HEX = 6,                        /* HEX  */
    353  1.1.1.5  mrg   YYSYMBOL_DECIMAL = 7,                    /* DECIMAL  */
    354  1.1.1.5  mrg   YYSYMBOL_QUIT = 8,                       /* QUIT  */
    355  1.1.1.5  mrg   YYSYMBOL_ABS = 9,                        /* ABS  */
    356  1.1.1.5  mrg   YYSYMBOL_BIN = 10,                       /* BIN  */
    357  1.1.1.5  mrg   YYSYMBOL_FIB = 11,                       /* FIB  */
    358  1.1.1.5  mrg   YYSYMBOL_GCD = 12,                       /* GCD  */
    359  1.1.1.5  mrg   YYSYMBOL_KRON = 13,                      /* KRON  */
    360  1.1.1.5  mrg   YYSYMBOL_LCM = 14,                       /* LCM  */
    361  1.1.1.5  mrg   YYSYMBOL_LUCNUM = 15,                    /* LUCNUM  */
    362  1.1.1.5  mrg   YYSYMBOL_NEXTPRIME = 16,                 /* NEXTPRIME  */
    363  1.1.1.5  mrg   YYSYMBOL_POWM = 17,                      /* POWM  */
    364  1.1.1.5  mrg   YYSYMBOL_ROOT = 18,                      /* ROOT  */
    365  1.1.1.5  mrg   YYSYMBOL_SQRT = 19,                      /* SQRT  */
    366  1.1.1.5  mrg   YYSYMBOL_NUMBER = 20,                    /* NUMBER  */
    367  1.1.1.5  mrg   YYSYMBOL_VARIABLE = 21,                  /* VARIABLE  */
    368  1.1.1.5  mrg   YYSYMBOL_LOR = 22,                       /* LOR  */
    369  1.1.1.5  mrg   YYSYMBOL_LAND = 23,                      /* LAND  */
    370  1.1.1.5  mrg   YYSYMBOL_24_ = 24,                       /* '<'  */
    371  1.1.1.5  mrg   YYSYMBOL_25_ = 25,                       /* '>'  */
    372  1.1.1.5  mrg   YYSYMBOL_EQ = 26,                        /* EQ  */
    373  1.1.1.5  mrg   YYSYMBOL_NE = 27,                        /* NE  */
    374  1.1.1.5  mrg   YYSYMBOL_LE = 28,                        /* LE  */
    375  1.1.1.5  mrg   YYSYMBOL_GE = 29,                        /* GE  */
    376  1.1.1.5  mrg   YYSYMBOL_LSHIFT = 30,                    /* LSHIFT  */
    377  1.1.1.5  mrg   YYSYMBOL_RSHIFT = 31,                    /* RSHIFT  */
    378  1.1.1.5  mrg   YYSYMBOL_32_ = 32,                       /* '+'  */
    379  1.1.1.5  mrg   YYSYMBOL_33_ = 33,                       /* '-'  */
    380  1.1.1.5  mrg   YYSYMBOL_34_ = 34,                       /* '*'  */
    381  1.1.1.5  mrg   YYSYMBOL_35_ = 35,                       /* '/'  */
    382  1.1.1.5  mrg   YYSYMBOL_36_ = 36,                       /* '%'  */
    383  1.1.1.5  mrg   YYSYMBOL_UMINUS = 37,                    /* UMINUS  */
    384  1.1.1.5  mrg   YYSYMBOL_38_ = 38,                       /* '^'  */
    385  1.1.1.5  mrg   YYSYMBOL_39_ = 39,                       /* '!'  */
    386  1.1.1.5  mrg   YYSYMBOL_40_ = 40,                       /* '='  */
    387  1.1.1.5  mrg   YYSYMBOL_41_ = 41,                       /* '('  */
    388  1.1.1.5  mrg   YYSYMBOL_42_ = 42,                       /* ')'  */
    389  1.1.1.5  mrg   YYSYMBOL_43_ = 43,                       /* ','  */
    390  1.1.1.5  mrg   YYSYMBOL_YYACCEPT = 44,                  /* $accept  */
    391  1.1.1.5  mrg   YYSYMBOL_top = 45,                       /* top  */
    392  1.1.1.5  mrg   YYSYMBOL_statements = 46,                /* statements  */
    393  1.1.1.5  mrg   YYSYMBOL_statement = 47,                 /* statement  */
    394  1.1.1.5  mrg   YYSYMBOL_e = 48,                         /* e  */
    395  1.1.1.5  mrg   YYSYMBOL_gcdlist = 49,                   /* gcdlist  */
    396  1.1.1.5  mrg   YYSYMBOL_lcmlist = 50                    /* lcmlist  */
    397  1.1.1.5  mrg };
    398  1.1.1.5  mrg typedef enum yysymbol_kind_t yysymbol_kind_t;
    399  1.1.1.5  mrg 
    400  1.1.1.5  mrg 
    401  1.1.1.5  mrg 
    402  1.1.1.5  mrg 
    403  1.1.1.5  mrg #ifdef short
    404  1.1.1.5  mrg # undef short
    405  1.1.1.5  mrg #endif
    406  1.1.1.5  mrg 
    407  1.1.1.5  mrg /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
    408  1.1.1.5  mrg    <limits.h> and (if available) <stdint.h> are included
    409  1.1.1.5  mrg    so that the code can choose integer types of a good width.  */
    410  1.1.1.5  mrg 
    411  1.1.1.5  mrg #ifndef __PTRDIFF_MAX__
    412  1.1.1.5  mrg # include <limits.h> /* INFRINGES ON USER NAME SPACE */
    413  1.1.1.5  mrg # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
    414  1.1.1.5  mrg #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
    415  1.1.1.5  mrg #  define YY_STDINT_H
    416  1.1.1.5  mrg # endif
    417  1.1.1.5  mrg #endif
    418  1.1.1.5  mrg 
    419  1.1.1.5  mrg /* Narrow types that promote to a signed type and that can represent a
    420  1.1.1.5  mrg    signed or unsigned integer of at least N bits.  In tables they can
    421  1.1.1.5  mrg    save space and decrease cache pressure.  Promoting to a signed type
    422  1.1.1.5  mrg    helps avoid bugs in integer arithmetic.  */
    423  1.1.1.5  mrg 
    424  1.1.1.5  mrg #ifdef __INT_LEAST8_MAX__
    425  1.1.1.5  mrg typedef __INT_LEAST8_TYPE__ yytype_int8;
    426  1.1.1.5  mrg #elif defined YY_STDINT_H
    427  1.1.1.5  mrg typedef int_least8_t yytype_int8;
    428  1.1.1.5  mrg #else
    429  1.1.1.5  mrg typedef signed char yytype_int8;
    430  1.1.1.5  mrg #endif
    431  1.1.1.5  mrg 
    432  1.1.1.5  mrg #ifdef __INT_LEAST16_MAX__
    433  1.1.1.5  mrg typedef __INT_LEAST16_TYPE__ yytype_int16;
    434  1.1.1.5  mrg #elif defined YY_STDINT_H
    435  1.1.1.5  mrg typedef int_least16_t yytype_int16;
    436  1.1.1.5  mrg #else
    437  1.1.1.5  mrg typedef short yytype_int16;
    438  1.1.1.5  mrg #endif
    439  1.1.1.5  mrg 
    440  1.1.1.5  mrg #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
    441  1.1.1.5  mrg typedef __UINT_LEAST8_TYPE__ yytype_uint8;
    442  1.1.1.5  mrg #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
    443  1.1.1.5  mrg        && UINT_LEAST8_MAX <= INT_MAX)
    444  1.1.1.5  mrg typedef uint_least8_t yytype_uint8;
    445  1.1.1.5  mrg #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
    446  1.1.1.5  mrg typedef unsigned char yytype_uint8;
    447  1.1.1.5  mrg #else
    448  1.1.1.5  mrg typedef short yytype_uint8;
    449  1.1.1.5  mrg #endif
    450  1.1.1.5  mrg 
    451  1.1.1.5  mrg #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
    452  1.1.1.5  mrg typedef __UINT_LEAST16_TYPE__ yytype_uint16;
    453  1.1.1.5  mrg #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
    454  1.1.1.5  mrg        && UINT_LEAST16_MAX <= INT_MAX)
    455  1.1.1.5  mrg typedef uint_least16_t yytype_uint16;
    456  1.1.1.5  mrg #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
    457  1.1.1.5  mrg typedef unsigned short yytype_uint16;
    458  1.1.1.5  mrg #else
    459  1.1.1.5  mrg typedef int yytype_uint16;
    460  1.1.1.5  mrg #endif
    461  1.1.1.5  mrg 
    462  1.1.1.5  mrg #ifndef YYPTRDIFF_T
    463  1.1.1.5  mrg # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
    464  1.1.1.5  mrg #  define YYPTRDIFF_T __PTRDIFF_TYPE__
    465  1.1.1.5  mrg #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
    466  1.1.1.5  mrg # elif defined PTRDIFF_MAX
    467  1.1.1.5  mrg #  ifndef ptrdiff_t
    468  1.1.1.5  mrg #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    469  1.1.1.5  mrg #  endif
    470  1.1.1.5  mrg #  define YYPTRDIFF_T ptrdiff_t
    471  1.1.1.5  mrg #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
    472  1.1.1.5  mrg # else
    473  1.1.1.5  mrg #  define YYPTRDIFF_T long
    474  1.1.1.5  mrg #  define YYPTRDIFF_MAXIMUM LONG_MAX
    475  1.1.1.5  mrg # endif
    476  1.1.1.5  mrg #endif
    477  1.1.1.5  mrg 
    478  1.1.1.5  mrg #ifndef YYSIZE_T
    479  1.1.1.5  mrg # ifdef __SIZE_TYPE__
    480  1.1.1.5  mrg #  define YYSIZE_T __SIZE_TYPE__
    481  1.1.1.5  mrg # elif defined size_t
    482  1.1.1.5  mrg #  define YYSIZE_T size_t
    483  1.1.1.5  mrg # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
    484  1.1.1.5  mrg #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    485  1.1.1.5  mrg #  define YYSIZE_T size_t
    486      1.1  mrg # else
    487  1.1.1.5  mrg #  define YYSIZE_T unsigned
    488      1.1  mrg # endif
    489  1.1.1.5  mrg #endif
    490  1.1.1.5  mrg 
    491  1.1.1.5  mrg #define YYSIZE_MAXIMUM                                  \
    492  1.1.1.5  mrg   YY_CAST (YYPTRDIFF_T,                                 \
    493  1.1.1.5  mrg            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
    494  1.1.1.5  mrg             ? YYPTRDIFF_MAXIMUM                         \
    495  1.1.1.5  mrg             : YY_CAST (YYSIZE_T, -1)))
    496  1.1.1.5  mrg 
    497  1.1.1.5  mrg #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
    498  1.1.1.5  mrg 
    499  1.1.1.5  mrg 
    500  1.1.1.5  mrg /* Stored state numbers (used for stacks). */
    501  1.1.1.5  mrg typedef yytype_int8 yy_state_t;
    502  1.1.1.5  mrg 
    503  1.1.1.5  mrg /* State numbers in computations.  */
    504  1.1.1.5  mrg typedef int yy_state_fast_t;
    505  1.1.1.5  mrg 
    506  1.1.1.5  mrg #ifndef YY_
    507  1.1.1.5  mrg # if defined YYENABLE_NLS && YYENABLE_NLS
    508  1.1.1.5  mrg #  if ENABLE_NLS
    509  1.1.1.5  mrg #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    510  1.1.1.5  mrg #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    511  1.1.1.5  mrg #  endif
    512  1.1.1.5  mrg # endif
    513  1.1.1.5  mrg # ifndef YY_
    514  1.1.1.5  mrg #  define YY_(Msgid) Msgid
    515  1.1.1.5  mrg # endif
    516  1.1.1.5  mrg #endif
    517  1.1.1.5  mrg 
    518  1.1.1.5  mrg 
    519  1.1.1.5  mrg #ifndef YY_ATTRIBUTE_PURE
    520  1.1.1.5  mrg # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
    521  1.1.1.5  mrg #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
    522  1.1.1.5  mrg # else
    523  1.1.1.5  mrg #  define YY_ATTRIBUTE_PURE
    524  1.1.1.5  mrg # endif
    525  1.1.1.5  mrg #endif
    526  1.1.1.5  mrg 
    527  1.1.1.5  mrg #ifndef YY_ATTRIBUTE_UNUSED
    528  1.1.1.5  mrg # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
    529  1.1.1.5  mrg #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
    530  1.1.1.5  mrg # else
    531  1.1.1.5  mrg #  define YY_ATTRIBUTE_UNUSED
    532  1.1.1.5  mrg # endif
    533  1.1.1.5  mrg #endif
    534  1.1.1.5  mrg 
    535  1.1.1.5  mrg /* Suppress unused-variable warnings by "using" E.  */
    536  1.1.1.5  mrg #if ! defined lint || defined __GNUC__
    537  1.1.1.5  mrg # define YYUSE(E) ((void) (E))
    538      1.1  mrg #else
    539  1.1.1.5  mrg # define YYUSE(E) /* empty */
    540      1.1  mrg #endif
    541      1.1  mrg 
    542  1.1.1.5  mrg #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
    543  1.1.1.5  mrg /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    544  1.1.1.5  mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
    545  1.1.1.5  mrg     _Pragma ("GCC diagnostic push")                                     \
    546  1.1.1.5  mrg     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
    547  1.1.1.5  mrg     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    548  1.1.1.5  mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
    549  1.1.1.5  mrg     _Pragma ("GCC diagnostic pop")
    550      1.1  mrg #else
    551  1.1.1.5  mrg # define YY_INITIAL_VALUE(Value) Value
    552  1.1.1.5  mrg #endif
    553  1.1.1.5  mrg #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    554  1.1.1.5  mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    555  1.1.1.5  mrg # define YY_IGNORE_MAYBE_UNINITIALIZED_END
    556  1.1.1.5  mrg #endif
    557  1.1.1.5  mrg #ifndef YY_INITIAL_VALUE
    558  1.1.1.5  mrg # define YY_INITIAL_VALUE(Value) /* Nothing. */
    559  1.1.1.5  mrg #endif
    560  1.1.1.5  mrg 
    561  1.1.1.5  mrg #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
    562  1.1.1.5  mrg # define YY_IGNORE_USELESS_CAST_BEGIN                          \
    563  1.1.1.5  mrg     _Pragma ("GCC diagnostic push")                            \
    564  1.1.1.5  mrg     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
    565  1.1.1.5  mrg # define YY_IGNORE_USELESS_CAST_END            \
    566  1.1.1.5  mrg     _Pragma ("GCC diagnostic pop")
    567  1.1.1.5  mrg #endif
    568  1.1.1.5  mrg #ifndef YY_IGNORE_USELESS_CAST_BEGIN
    569  1.1.1.5  mrg # define YY_IGNORE_USELESS_CAST_BEGIN
    570  1.1.1.5  mrg # define YY_IGNORE_USELESS_CAST_END
    571  1.1.1.5  mrg #endif
    572  1.1.1.5  mrg 
    573  1.1.1.5  mrg 
    574  1.1.1.5  mrg #define YY_ASSERT(E) ((void) (0 && (E)))
    575  1.1.1.5  mrg 
    576  1.1.1.5  mrg #if !defined yyoverflow
    577  1.1.1.5  mrg 
    578  1.1.1.5  mrg /* The parser invokes alloca or malloc; define the necessary symbols.  */
    579  1.1.1.5  mrg 
    580  1.1.1.5  mrg # ifdef YYSTACK_USE_ALLOCA
    581  1.1.1.5  mrg #  if YYSTACK_USE_ALLOCA
    582  1.1.1.5  mrg #   ifdef __GNUC__
    583  1.1.1.5  mrg #    define YYSTACK_ALLOC __builtin_alloca
    584  1.1.1.5  mrg #   elif defined __BUILTIN_VA_ARG_INCR
    585  1.1.1.5  mrg #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    586  1.1.1.5  mrg #   elif defined _AIX
    587  1.1.1.5  mrg #    define YYSTACK_ALLOC __alloca
    588  1.1.1.5  mrg #   elif defined _MSC_VER
    589  1.1.1.5  mrg #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    590  1.1.1.5  mrg #    define alloca _alloca
    591  1.1.1.5  mrg #   else
    592  1.1.1.5  mrg #    define YYSTACK_ALLOC alloca
    593  1.1.1.5  mrg #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    594  1.1.1.5  mrg #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    595  1.1.1.5  mrg       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    596  1.1.1.5  mrg #     ifndef EXIT_SUCCESS
    597  1.1.1.5  mrg #      define EXIT_SUCCESS 0
    598  1.1.1.5  mrg #     endif
    599  1.1.1.5  mrg #    endif
    600  1.1.1.5  mrg #   endif
    601  1.1.1.5  mrg #  endif
    602  1.1.1.5  mrg # endif
    603  1.1.1.5  mrg 
    604  1.1.1.5  mrg # ifdef YYSTACK_ALLOC
    605  1.1.1.5  mrg    /* Pacify GCC's 'empty if-body' warning.  */
    606  1.1.1.5  mrg #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    607  1.1.1.5  mrg #  ifndef YYSTACK_ALLOC_MAXIMUM
    608  1.1.1.5  mrg     /* The OS might guarantee only one guard page at the bottom of the stack,
    609  1.1.1.5  mrg        and a page size can be as small as 4096 bytes.  So we cannot safely
    610  1.1.1.5  mrg        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    611  1.1.1.5  mrg        to allow for a few compiler-allocated temporary stack slots.  */
    612  1.1.1.5  mrg #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    613  1.1.1.5  mrg #  endif
    614  1.1.1.5  mrg # else
    615  1.1.1.5  mrg #  define YYSTACK_ALLOC YYMALLOC
    616  1.1.1.5  mrg #  define YYSTACK_FREE YYFREE
    617  1.1.1.5  mrg #  ifndef YYSTACK_ALLOC_MAXIMUM
    618  1.1.1.5  mrg #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    619  1.1.1.5  mrg #  endif
    620  1.1.1.5  mrg #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    621  1.1.1.5  mrg        && ! ((defined YYMALLOC || defined malloc) \
    622  1.1.1.5  mrg              && (defined YYFREE || defined free)))
    623  1.1.1.5  mrg #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    624  1.1.1.5  mrg #   ifndef EXIT_SUCCESS
    625  1.1.1.5  mrg #    define EXIT_SUCCESS 0
    626  1.1.1.5  mrg #   endif
    627  1.1.1.5  mrg #  endif
    628  1.1.1.5  mrg #  ifndef YYMALLOC
    629  1.1.1.5  mrg #   define YYMALLOC malloc
    630  1.1.1.5  mrg #   if ! defined malloc && ! defined EXIT_SUCCESS
    631  1.1.1.5  mrg void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    632  1.1.1.5  mrg #   endif
    633  1.1.1.5  mrg #  endif
    634  1.1.1.5  mrg #  ifndef YYFREE
    635  1.1.1.5  mrg #   define YYFREE free
    636  1.1.1.5  mrg #   if ! defined free && ! defined EXIT_SUCCESS
    637  1.1.1.5  mrg void free (void *); /* INFRINGES ON USER NAME SPACE */
    638  1.1.1.5  mrg #   endif
    639  1.1.1.5  mrg #  endif
    640  1.1.1.5  mrg # endif
    641  1.1.1.5  mrg #endif /* !defined yyoverflow */
    642  1.1.1.5  mrg 
    643  1.1.1.5  mrg #if (! defined yyoverflow \
    644  1.1.1.5  mrg      && (! defined __cplusplus \
    645  1.1.1.5  mrg          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    646  1.1.1.5  mrg 
    647  1.1.1.5  mrg /* A type that is properly aligned for any stack member.  */
    648  1.1.1.5  mrg union yyalloc
    649  1.1.1.5  mrg {
    650  1.1.1.5  mrg   yy_state_t yyss_alloc;
    651  1.1.1.5  mrg   YYSTYPE yyvs_alloc;
    652  1.1.1.5  mrg };
    653  1.1.1.5  mrg 
    654  1.1.1.5  mrg /* The size of the maximum gap between one aligned stack and the next.  */
    655  1.1.1.5  mrg # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
    656  1.1.1.5  mrg 
    657  1.1.1.5  mrg /* The size of an array large to enough to hold all stacks, each with
    658  1.1.1.5  mrg    N elements.  */
    659  1.1.1.5  mrg # define YYSTACK_BYTES(N) \
    660  1.1.1.5  mrg      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
    661  1.1.1.5  mrg       + YYSTACK_GAP_MAXIMUM)
    662  1.1.1.5  mrg 
    663  1.1.1.5  mrg # define YYCOPY_NEEDED 1
    664  1.1.1.5  mrg 
    665  1.1.1.5  mrg /* Relocate STACK from its old location to the new one.  The
    666  1.1.1.5  mrg    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    667  1.1.1.5  mrg    elements in the stack, and YYPTR gives the new location of the
    668  1.1.1.5  mrg    stack.  Advance YYPTR to a properly aligned location for the next
    669  1.1.1.5  mrg    stack.  */
    670  1.1.1.5  mrg # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    671  1.1.1.5  mrg     do                                                                  \
    672  1.1.1.5  mrg       {                                                                 \
    673  1.1.1.5  mrg         YYPTRDIFF_T yynewbytes;                                         \
    674  1.1.1.5  mrg         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    675  1.1.1.5  mrg         Stack = &yyptr->Stack_alloc;                                    \
    676  1.1.1.5  mrg         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
    677  1.1.1.5  mrg         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
    678  1.1.1.5  mrg       }                                                                 \
    679  1.1.1.5  mrg     while (0)
    680  1.1.1.5  mrg 
    681      1.1  mrg #endif
    682      1.1  mrg 
    683  1.1.1.5  mrg #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    684  1.1.1.5  mrg /* Copy COUNT objects from SRC to DST.  The source and destination do
    685  1.1.1.5  mrg    not overlap.  */
    686  1.1.1.5  mrg # ifndef YYCOPY
    687  1.1.1.5  mrg #  if defined __GNUC__ && 1 < __GNUC__
    688  1.1.1.5  mrg #   define YYCOPY(Dst, Src, Count) \
    689  1.1.1.5  mrg       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
    690  1.1.1.5  mrg #  else
    691  1.1.1.5  mrg #   define YYCOPY(Dst, Src, Count)              \
    692  1.1.1.5  mrg       do                                        \
    693  1.1.1.5  mrg         {                                       \
    694  1.1.1.5  mrg           YYPTRDIFF_T yyi;                      \
    695  1.1.1.5  mrg           for (yyi = 0; yyi < (Count); yyi++)   \
    696  1.1.1.5  mrg             (Dst)[yyi] = (Src)[yyi];            \
    697  1.1.1.5  mrg         }                                       \
    698  1.1.1.5  mrg       while (0)
    699  1.1.1.5  mrg #  endif
    700  1.1.1.5  mrg # endif
    701  1.1.1.5  mrg #endif /* !YYCOPY_NEEDED */
    702  1.1.1.5  mrg 
    703  1.1.1.5  mrg /* YYFINAL -- State number of the termination state.  */
    704  1.1.1.5  mrg #define YYFINAL  41
    705  1.1.1.5  mrg /* YYLAST -- Last index in YYTABLE.  */
    706  1.1.1.5  mrg #define YYLAST   552
    707  1.1.1.5  mrg 
    708  1.1.1.5  mrg /* YYNTOKENS -- Number of terminals.  */
    709  1.1.1.5  mrg #define YYNTOKENS  44
    710  1.1.1.5  mrg /* YYNNTS -- Number of nonterminals.  */
    711  1.1.1.5  mrg #define YYNNTS  7
    712  1.1.1.5  mrg /* YYNRULES -- Number of rules.  */
    713  1.1.1.5  mrg #define YYNRULES  49
    714  1.1.1.5  mrg /* YYNSTATES -- Number of states.  */
    715  1.1.1.5  mrg #define YYNSTATES  118
    716  1.1.1.5  mrg 
    717  1.1.1.5  mrg #define YYMAXUTOK   285
    718  1.1.1.5  mrg 
    719  1.1.1.5  mrg 
    720  1.1.1.5  mrg /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
    721  1.1.1.5  mrg    as returned by yylex, with out-of-bounds checking.  */
    722  1.1.1.5  mrg #define YYTRANSLATE(YYX)                                \
    723  1.1.1.5  mrg   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
    724  1.1.1.5  mrg    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
    725  1.1.1.5  mrg    : YYSYMBOL_YYUNDEF)
    726  1.1.1.5  mrg 
    727  1.1.1.5  mrg /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    728  1.1.1.5  mrg    as returned by yylex.  */
    729  1.1.1.5  mrg static const yytype_int8 yytranslate[] =
    730  1.1.1.5  mrg {
    731  1.1.1.5  mrg        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    732  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    733  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    734  1.1.1.5  mrg        2,     2,     2,    39,     2,     2,     2,    36,     2,     2,
    735  1.1.1.5  mrg       41,    42,    34,    32,    43,    33,     2,    35,     2,     2,
    736  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    737  1.1.1.5  mrg       24,    40,    25,     2,     2,     2,     2,     2,     2,     2,
    738  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    739  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    740  1.1.1.5  mrg        2,     2,     2,     2,    38,     2,     2,     2,     2,     2,
    741  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    742  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    743  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    744  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    745  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    746  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    747  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    748  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    749  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    750  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    751  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    752  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    753  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    754  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    755  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    756  1.1.1.5  mrg        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
    757  1.1.1.5  mrg        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    758  1.1.1.5  mrg       15,    16,    17,    18,    19,    20,    21,    22,    23,    26,
    759  1.1.1.5  mrg       27,    28,    29,    30,    31,    37
    760  1.1.1.5  mrg };
    761  1.1.1.5  mrg 
    762  1.1.1.5  mrg #if YYDEBUG
    763  1.1.1.5  mrg   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    764  1.1.1.5  mrg static const yytype_int16 yyrline[] =
    765  1.1.1.5  mrg {
    766  1.1.1.5  mrg        0,   167,   167,   168,   171,   172,   173,   175,   177,   182,
    767  1.1.1.5  mrg      188,   189,   190,   191,   197,   198,   199,   200,   201,   202,
    768  1.1.1.5  mrg      203,   205,   207,   209,   211,   213,   214,   215,   216,   217,
    769  1.1.1.5  mrg      218,   220,   221,   223,   224,   226,   228,   229,   231,   232,
    770  1.1.1.5  mrg      234,   235,   236,   238,   240,   246,   257,   258,   261,   262
    771      1.1  mrg };
    772  1.1.1.5  mrg #endif
    773  1.1.1.5  mrg 
    774  1.1.1.5  mrg /** Accessing symbol of state STATE.  */
    775  1.1.1.5  mrg #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
    776  1.1.1.5  mrg 
    777  1.1.1.5  mrg #if YYDEBUG || 0
    778  1.1.1.5  mrg /* The user-facing name of the symbol whose (internal) number is
    779  1.1.1.5  mrg    YYSYMBOL.  No bounds checking.  */
    780  1.1.1.5  mrg static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
    781  1.1.1.5  mrg 
    782  1.1.1.5  mrg /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    783  1.1.1.5  mrg    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    784  1.1.1.5  mrg static const char *const yytname[] =
    785  1.1.1.5  mrg {
    786  1.1.1.5  mrg   "\"end of file\"", "error", "\"invalid token\"", "EOS", "BAD", "HELP",
    787  1.1.1.5  mrg   "HEX", "DECIMAL", "QUIT", "ABS", "BIN", "FIB", "GCD", "KRON", "LCM",
    788  1.1.1.5  mrg   "LUCNUM", "NEXTPRIME", "POWM", "ROOT", "SQRT", "NUMBER", "VARIABLE",
    789  1.1.1.5  mrg   "LOR", "LAND", "'<'", "'>'", "EQ", "NE", "LE", "GE", "LSHIFT", "RSHIFT",
    790  1.1.1.5  mrg   "'+'", "'-'", "'*'", "'/'", "'%'", "UMINUS", "'^'", "'!'", "'='", "'('",
    791  1.1.1.5  mrg   "')'", "','", "$accept", "top", "statements", "statement", "e",
    792  1.1.1.5  mrg   "gcdlist", "lcmlist", YY_NULLPTR
    793  1.1.1.5  mrg };
    794  1.1.1.5  mrg 
    795  1.1.1.5  mrg static const char *
    796  1.1.1.5  mrg yysymbol_name (yysymbol_kind_t yysymbol)
    797  1.1.1.5  mrg {
    798  1.1.1.5  mrg   return yytname[yysymbol];
    799  1.1.1.5  mrg }
    800  1.1.1.5  mrg #endif
    801  1.1.1.5  mrg 
    802  1.1.1.5  mrg #ifdef YYPRINT
    803  1.1.1.5  mrg /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    804  1.1.1.5  mrg    (internal) symbol number NUM (which must be that of a token).  */
    805  1.1.1.5  mrg static const yytype_int16 yytoknum[] =
    806  1.1.1.5  mrg {
    807  1.1.1.5  mrg        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
    808  1.1.1.5  mrg      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
    809  1.1.1.5  mrg      275,   276,   277,   278,    60,    62,   279,   280,   281,   282,
    810  1.1.1.5  mrg      283,   284,    43,    45,    42,    47,    37,   285,    94,    33,
    811  1.1.1.5  mrg       61,    40,    41,    44
    812      1.1  mrg };
    813  1.1.1.5  mrg #endif
    814  1.1.1.5  mrg 
    815  1.1.1.5  mrg #define YYPACT_NINF (-39)
    816  1.1.1.5  mrg 
    817  1.1.1.5  mrg #define yypact_value_is_default(Yyn) \
    818  1.1.1.5  mrg   ((Yyn) == YYPACT_NINF)
    819  1.1.1.5  mrg 
    820  1.1.1.5  mrg #define YYTABLE_NINF (-8)
    821  1.1.1.5  mrg 
    822  1.1.1.5  mrg #define yytable_value_is_error(Yyn) \
    823  1.1.1.5  mrg   ((Yyn) == YYTABLE_NINF)
    824  1.1.1.5  mrg 
    825  1.1.1.5  mrg   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    826  1.1.1.5  mrg      STATE-NUM.  */
    827  1.1.1.5  mrg static const yytype_int16 yypact[] =
    828  1.1.1.5  mrg {
    829  1.1.1.5  mrg       41,     3,   -39,   -39,   -39,   -39,     2,     4,    27,    32,
    830  1.1.1.5  mrg       35,    36,    39,    42,    45,    46,    47,   -39,   -18,   124,
    831  1.1.1.5  mrg      124,    89,    91,    87,   464,   -39,   124,   124,   124,   124,
    832  1.1.1.5  mrg      124,   124,   124,   124,   124,   124,   124,   124,   -39,   -36,
    833  1.1.1.5  mrg      254,   -39,    88,   -39,   124,   124,   124,   124,   124,   124,
    834  1.1.1.5  mrg      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
    835  1.1.1.5  mrg      -39,   275,   144,   296,   464,   -38,   166,   464,    29,   317,
    836  1.1.1.5  mrg      338,   188,   210,   359,   464,   -39,   -39,   481,   497,   513,
    837  1.1.1.5  mrg      513,   513,   513,   513,   513,    31,    31,   -15,   -15,   -36,
    838  1.1.1.5  mrg      -36,   -36,   -36,   -39,   124,   -39,   -39,   124,   124,   -39,
    839  1.1.1.5  mrg      124,   -39,   -39,   124,   124,   -39,   380,   464,   401,   464,
    840  1.1.1.5  mrg      232,   422,   -39,   -39,   124,   -39,   443,   -39
    841      1.1  mrg };
    842  1.1.1.5  mrg 
    843  1.1.1.5  mrg   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
    844  1.1.1.5  mrg      Performed when YYTABLE does not specify something else to do.  Zero
    845  1.1.1.5  mrg      means the default is an error.  */
    846  1.1.1.5  mrg static const yytype_int8 yydefact[] =
    847  1.1.1.5  mrg {
    848  1.1.1.5  mrg        0,     0,    10,    11,    12,    13,     0,     0,     0,     0,
    849  1.1.1.5  mrg        0,     0,     0,     0,     0,     0,     0,    45,    44,     0,
    850  1.1.1.5  mrg        0,     0,     7,     2,     8,     6,     0,     0,     0,     0,
    851  1.1.1.5  mrg        0,     0,     0,     0,     0,     0,     0,     0,    44,    24,
    852  1.1.1.5  mrg        0,     1,     3,     4,     0,     0,     0,     0,     0,     0,
    853  1.1.1.5  mrg        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    854  1.1.1.5  mrg       23,     0,     0,     0,    46,     0,     0,    48,     0,     0,
    855  1.1.1.5  mrg        0,     0,     0,     0,     9,    14,     5,    32,    31,    25,
    856  1.1.1.5  mrg       30,    27,    28,    26,    29,    21,    22,    15,    16,    17,
    857  1.1.1.5  mrg       18,    19,    20,    33,     0,    35,    36,     0,     0,    38,
    858  1.1.1.5  mrg        0,    39,    40,     0,     0,    43,     0,    47,     0,    49,
    859  1.1.1.5  mrg        0,     0,    34,    37,     0,    42,     0,    41
    860      1.1  mrg };
    861  1.1.1.5  mrg 
    862  1.1.1.5  mrg   /* YYPGOTO[NTERM-NUM].  */
    863  1.1.1.5  mrg static const yytype_int8 yypgoto[] =
    864  1.1.1.5  mrg {
    865  1.1.1.5  mrg      -39,   -39,   -39,    70,   -19,   -39,   -39
    866      1.1  mrg };
    867  1.1.1.5  mrg 
    868  1.1.1.5  mrg   /* YYDEFGOTO[NTERM-NUM].  */
    869  1.1.1.5  mrg static const yytype_int8 yydefgoto[] =
    870  1.1.1.5  mrg {
    871  1.1.1.5  mrg       -1,    21,    22,    23,    24,    65,    68
    872      1.1  mrg };
    873  1.1.1.5  mrg 
    874  1.1.1.5  mrg   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
    875  1.1.1.5  mrg      positive, shift that token.  If negative, reduce the rule whose
    876  1.1.1.5  mrg      number is the opposite.  If YYTABLE_NINF, syntax error.  */
    877  1.1.1.5  mrg static const yytype_int8 yytable[] =
    878  1.1.1.5  mrg {
    879  1.1.1.5  mrg       39,    40,    59,    60,    96,    97,    25,    61,    62,    63,
    880  1.1.1.5  mrg       64,    66,    67,    69,    70,    71,    72,    73,    74,    56,
    881  1.1.1.5  mrg       57,    58,    37,    59,    60,    77,    78,    79,    80,    81,
    882  1.1.1.5  mrg       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
    883  1.1.1.5  mrg       92,    -7,     1,    26,    -7,    27,     2,     3,     4,     5,
    884  1.1.1.5  mrg        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    885  1.1.1.5  mrg       16,    17,    18,    54,    55,    56,    57,    58,    28,    59,
    886  1.1.1.5  mrg       60,    99,   100,    29,    19,   106,    30,    31,   107,   108,
    887  1.1.1.5  mrg       32,   109,    20,    33,   110,   111,    34,    35,    36,    41,
    888  1.1.1.5  mrg       43,    76,    42,     0,     0,   116,     2,     3,     4,     5,
    889  1.1.1.5  mrg        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    890  1.1.1.5  mrg       16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
    891  1.1.1.5  mrg        0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
    892  1.1.1.5  mrg        0,     0,    20,     6,     7,     8,     9,    10,    11,    12,
    893  1.1.1.5  mrg       13,    14,    15,    16,    17,    38,     0,     0,     0,     0,
    894  1.1.1.5  mrg        0,     0,     0,     0,     0,     0,     0,    19,     0,     0,
    895  1.1.1.5  mrg        0,     0,     0,     0,     0,    20,    44,    45,    46,    47,
    896  1.1.1.5  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    897  1.1.1.5  mrg       58,     0,    59,    60,     0,     0,     0,    94,    44,    45,
    898  1.1.1.5  mrg       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    899  1.1.1.5  mrg       56,    57,    58,     0,    59,    60,     0,     0,     0,    98,
    900  1.1.1.5  mrg       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    901  1.1.1.5  mrg       54,    55,    56,    57,    58,     0,    59,    60,     0,     0,
    902  1.1.1.5  mrg        0,   103,    44,    45,    46,    47,    48,    49,    50,    51,
    903  1.1.1.5  mrg       52,    53,    54,    55,    56,    57,    58,     0,    59,    60,
    904  1.1.1.5  mrg        0,     0,     0,   104,    44,    45,    46,    47,    48,    49,
    905  1.1.1.5  mrg       50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
    906  1.1.1.5  mrg       59,    60,     0,     0,     0,   114,    44,    45,    46,    47,
    907  1.1.1.5  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    908  1.1.1.5  mrg       58,     0,    59,    60,     0,     0,    75,    44,    45,    46,
    909  1.1.1.5  mrg       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
    910  1.1.1.5  mrg       57,    58,     0,    59,    60,     0,     0,    93,    44,    45,
    911  1.1.1.5  mrg       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    912  1.1.1.5  mrg       56,    57,    58,     0,    59,    60,     0,     0,    95,    44,
    913  1.1.1.5  mrg       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    914  1.1.1.5  mrg       55,    56,    57,    58,     0,    59,    60,     0,     0,   101,
    915  1.1.1.5  mrg       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    916  1.1.1.5  mrg       54,    55,    56,    57,    58,     0,    59,    60,     0,     0,
    917  1.1.1.5  mrg      102,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    918  1.1.1.5  mrg       53,    54,    55,    56,    57,    58,     0,    59,    60,     0,
    919  1.1.1.5  mrg        0,   105,    44,    45,    46,    47,    48,    49,    50,    51,
    920  1.1.1.5  mrg       52,    53,    54,    55,    56,    57,    58,     0,    59,    60,
    921  1.1.1.5  mrg        0,     0,   112,    44,    45,    46,    47,    48,    49,    50,
    922  1.1.1.5  mrg       51,    52,    53,    54,    55,    56,    57,    58,     0,    59,
    923  1.1.1.5  mrg       60,     0,     0,   113,    44,    45,    46,    47,    48,    49,
    924  1.1.1.5  mrg       50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
    925  1.1.1.5  mrg       59,    60,     0,     0,   115,    44,    45,    46,    47,    48,
    926  1.1.1.5  mrg       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
    927  1.1.1.5  mrg        0,    59,    60,     0,     0,   117,    44,    45,    46,    47,
    928  1.1.1.5  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    929  1.1.1.5  mrg       58,     0,    59,    60,    45,    46,    47,    48,    49,    50,
    930  1.1.1.5  mrg       51,    52,    53,    54,    55,    56,    57,    58,     0,    59,
    931  1.1.1.5  mrg       60,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    932  1.1.1.5  mrg       55,    56,    57,    58,     0,    59,    60,    -8,    -8,    -8,
    933  1.1.1.5  mrg       -8,    -8,    -8,    52,    53,    54,    55,    56,    57,    58,
    934  1.1.1.5  mrg        0,    59,    60
    935      1.1  mrg };
    936  1.1.1.5  mrg 
    937  1.1.1.5  mrg static const yytype_int8 yycheck[] =
    938  1.1.1.5  mrg {
    939  1.1.1.5  mrg       19,    20,    38,    39,    42,    43,     3,    26,    27,    28,
    940  1.1.1.5  mrg       29,    30,    31,    32,    33,    34,    35,    36,    37,    34,
    941  1.1.1.5  mrg       35,    36,    40,    38,    39,    44,    45,    46,    47,    48,
    942  1.1.1.5  mrg       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
    943  1.1.1.5  mrg       59,     0,     1,    41,     3,    41,     5,     6,     7,     8,
    944  1.1.1.5  mrg        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    945  1.1.1.5  mrg       19,    20,    21,    32,    33,    34,    35,    36,    41,    38,
    946  1.1.1.5  mrg       39,    42,    43,    41,    33,    94,    41,    41,    97,    98,
    947  1.1.1.5  mrg       41,   100,    41,    41,   103,   104,    41,    41,    41,     0,
    948  1.1.1.5  mrg        3,     3,    22,    -1,    -1,   114,     5,     6,     7,     8,
    949  1.1.1.5  mrg        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    950  1.1.1.5  mrg       19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    951  1.1.1.5  mrg       -1,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    -1,
    952  1.1.1.5  mrg       -1,    -1,    41,     9,    10,    11,    12,    13,    14,    15,
    953  1.1.1.5  mrg       16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
    954  1.1.1.5  mrg       -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,
    955  1.1.1.5  mrg       -1,    -1,    -1,    -1,    -1,    41,    22,    23,    24,    25,
    956  1.1.1.5  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    957  1.1.1.5  mrg       36,    -1,    38,    39,    -1,    -1,    -1,    43,    22,    23,
    958  1.1.1.5  mrg       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    959  1.1.1.5  mrg       34,    35,    36,    -1,    38,    39,    -1,    -1,    -1,    43,
    960  1.1.1.5  mrg       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    961  1.1.1.5  mrg       32,    33,    34,    35,    36,    -1,    38,    39,    -1,    -1,
    962  1.1.1.5  mrg       -1,    43,    22,    23,    24,    25,    26,    27,    28,    29,
    963  1.1.1.5  mrg       30,    31,    32,    33,    34,    35,    36,    -1,    38,    39,
    964  1.1.1.5  mrg       -1,    -1,    -1,    43,    22,    23,    24,    25,    26,    27,
    965  1.1.1.5  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    -1,
    966  1.1.1.5  mrg       38,    39,    -1,    -1,    -1,    43,    22,    23,    24,    25,
    967  1.1.1.5  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    968  1.1.1.5  mrg       36,    -1,    38,    39,    -1,    -1,    42,    22,    23,    24,
    969  1.1.1.5  mrg       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    970  1.1.1.5  mrg       35,    36,    -1,    38,    39,    -1,    -1,    42,    22,    23,
    971  1.1.1.5  mrg       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    972  1.1.1.5  mrg       34,    35,    36,    -1,    38,    39,    -1,    -1,    42,    22,
    973  1.1.1.5  mrg       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    974  1.1.1.5  mrg       33,    34,    35,    36,    -1,    38,    39,    -1,    -1,    42,
    975  1.1.1.5  mrg       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    976  1.1.1.5  mrg       32,    33,    34,    35,    36,    -1,    38,    39,    -1,    -1,
    977  1.1.1.5  mrg       42,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    978  1.1.1.5  mrg       31,    32,    33,    34,    35,    36,    -1,    38,    39,    -1,
    979  1.1.1.5  mrg       -1,    42,    22,    23,    24,    25,    26,    27,    28,    29,
    980  1.1.1.5  mrg       30,    31,    32,    33,    34,    35,    36,    -1,    38,    39,
    981  1.1.1.5  mrg       -1,    -1,    42,    22,    23,    24,    25,    26,    27,    28,
    982  1.1.1.5  mrg       29,    30,    31,    32,    33,    34,    35,    36,    -1,    38,
    983  1.1.1.5  mrg       39,    -1,    -1,    42,    22,    23,    24,    25,    26,    27,
    984  1.1.1.5  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    -1,
    985  1.1.1.5  mrg       38,    39,    -1,    -1,    42,    22,    23,    24,    25,    26,
    986  1.1.1.5  mrg       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    987  1.1.1.5  mrg       -1,    38,    39,    -1,    -1,    42,    22,    23,    24,    25,
    988  1.1.1.5  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    989  1.1.1.5  mrg       36,    -1,    38,    39,    23,    24,    25,    26,    27,    28,
    990  1.1.1.5  mrg       29,    30,    31,    32,    33,    34,    35,    36,    -1,    38,
    991  1.1.1.5  mrg       39,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    992  1.1.1.5  mrg       33,    34,    35,    36,    -1,    38,    39,    24,    25,    26,
    993  1.1.1.5  mrg       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    994  1.1.1.5  mrg       -1,    38,    39
    995      1.1  mrg };
    996  1.1.1.5  mrg 
    997  1.1.1.5  mrg   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    998  1.1.1.5  mrg      symbol of state STATE-NUM.  */
    999  1.1.1.5  mrg static const yytype_int8 yystos[] =
   1000  1.1.1.5  mrg {
   1001  1.1.1.5  mrg        0,     1,     5,     6,     7,     8,     9,    10,    11,    12,
   1002  1.1.1.5  mrg       13,    14,    15,    16,    17,    18,    19,    20,    21,    33,
   1003  1.1.1.5  mrg       41,    45,    46,    47,    48,     3,    41,    41,    41,    41,
   1004  1.1.1.5  mrg       41,    41,    41,    41,    41,    41,    41,    40,    21,    48,
   1005  1.1.1.5  mrg       48,     0,    47,     3,    22,    23,    24,    25,    26,    27,
   1006  1.1.1.5  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    38,
   1007  1.1.1.5  mrg       39,    48,    48,    48,    48,    49,    48,    48,    50,    48,
   1008  1.1.1.5  mrg       48,    48,    48,    48,    48,    42,     3,    48,    48,    48,
   1009  1.1.1.5  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
   1010  1.1.1.5  mrg       48,    48,    48,    42,    43,    42,    42,    43,    43,    42,
   1011  1.1.1.5  mrg       43,    42,    42,    43,    43,    42,    48,    48,    48,    48,
   1012  1.1.1.5  mrg       48,    48,    42,    42,    43,    42,    48,    42
   1013      1.1  mrg };
   1014      1.1  mrg 
   1015  1.1.1.5  mrg   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
   1016  1.1.1.5  mrg static const yytype_int8 yyr1[] =
   1017  1.1.1.5  mrg {
   1018  1.1.1.5  mrg        0,    44,    45,    45,    46,    46,    46,    47,    47,    47,
   1019  1.1.1.5  mrg       47,    47,    47,    47,    48,    48,    48,    48,    48,    48,
   1020  1.1.1.5  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
   1021  1.1.1.5  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
   1022  1.1.1.5  mrg       48,    48,    48,    48,    48,    48,    49,    49,    50,    50
   1023      1.1  mrg };
   1024      1.1  mrg 
   1025  1.1.1.5  mrg   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
   1026  1.1.1.5  mrg static const yytype_int8 yyr2[] =
   1027  1.1.1.5  mrg {
   1028  1.1.1.5  mrg        0,     2,     1,     2,     2,     3,     2,     0,     1,     3,
   1029  1.1.1.5  mrg        1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
   1030  1.1.1.5  mrg        3,     3,     3,     2,     2,     3,     3,     3,     3,     3,
   1031  1.1.1.5  mrg        3,     3,     3,     4,     6,     4,     4,     6,     4,     4,
   1032  1.1.1.5  mrg        4,     8,     6,     4,     1,     1,     1,     3,     1,     3
   1033      1.1  mrg };
   1034      1.1  mrg 
   1035      1.1  mrg 
   1036  1.1.1.5  mrg enum { YYENOMEM = -2 };
   1037      1.1  mrg 
   1038  1.1.1.5  mrg #define yyerrok         (yyerrstatus = 0)
   1039  1.1.1.5  mrg #define yyclearin       (yychar = YYEMPTY)
   1040  1.1.1.4  mrg 
   1041  1.1.1.5  mrg #define YYACCEPT        goto yyacceptlab
   1042  1.1.1.5  mrg #define YYABORT         goto yyabortlab
   1043  1.1.1.5  mrg #define YYERROR         goto yyerrorlab
   1044  1.1.1.5  mrg 
   1045  1.1.1.5  mrg 
   1046  1.1.1.5  mrg #define YYRECOVERING()  (!!yyerrstatus)
   1047  1.1.1.5  mrg 
   1048  1.1.1.5  mrg #define YYBACKUP(Token, Value)                                    \
   1049  1.1.1.5  mrg   do                                                              \
   1050  1.1.1.5  mrg     if (yychar == YYEMPTY)                                        \
   1051  1.1.1.5  mrg       {                                                           \
   1052  1.1.1.5  mrg         yychar = (Token);                                         \
   1053  1.1.1.5  mrg         yylval = (Value);                                         \
   1054  1.1.1.5  mrg         YYPOPSTACK (yylen);                                       \
   1055  1.1.1.5  mrg         yystate = *yyssp;                                         \
   1056  1.1.1.5  mrg         goto yybackup;                                            \
   1057  1.1.1.5  mrg       }                                                           \
   1058  1.1.1.5  mrg     else                                                          \
   1059  1.1.1.5  mrg       {                                                           \
   1060  1.1.1.5  mrg         yyerror (YY_("syntax error: cannot back up")); \
   1061  1.1.1.5  mrg         YYERROR;                                                  \
   1062  1.1.1.5  mrg       }                                                           \
   1063  1.1.1.5  mrg   while (0)
   1064  1.1.1.5  mrg 
   1065  1.1.1.5  mrg /* Backward compatibility with an undocumented macro.
   1066  1.1.1.5  mrg    Use YYerror or YYUNDEF. */
   1067  1.1.1.5  mrg #define YYERRCODE YYUNDEF
   1068      1.1  mrg 
   1069  1.1.1.5  mrg 
   1070  1.1.1.5  mrg /* Enable debugging if requested.  */
   1071  1.1.1.5  mrg #if YYDEBUG
   1072  1.1.1.5  mrg 
   1073  1.1.1.5  mrg # ifndef YYFPRINTF
   1074  1.1.1.5  mrg #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
   1075  1.1.1.5  mrg #  define YYFPRINTF fprintf
   1076  1.1.1.5  mrg # endif
   1077  1.1.1.5  mrg 
   1078  1.1.1.5  mrg # define YYDPRINTF(Args)                        \
   1079  1.1.1.5  mrg do {                                            \
   1080  1.1.1.5  mrg   if (yydebug)                                  \
   1081  1.1.1.5  mrg     YYFPRINTF Args;                             \
   1082  1.1.1.5  mrg } while (0)
   1083  1.1.1.5  mrg 
   1084  1.1.1.5  mrg /* This macro is provided for backward compatibility. */
   1085  1.1.1.5  mrg # ifndef YY_LOCATION_PRINT
   1086  1.1.1.5  mrg #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
   1087  1.1.1.5  mrg # endif
   1088  1.1.1.5  mrg 
   1089  1.1.1.5  mrg 
   1090  1.1.1.5  mrg # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
   1091  1.1.1.5  mrg do {                                                                      \
   1092  1.1.1.5  mrg   if (yydebug)                                                            \
   1093  1.1.1.5  mrg     {                                                                     \
   1094  1.1.1.5  mrg       YYFPRINTF (stderr, "%s ", Title);                                   \
   1095  1.1.1.5  mrg       yy_symbol_print (stderr,                                            \
   1096  1.1.1.5  mrg                   Kind, Value); \
   1097  1.1.1.5  mrg       YYFPRINTF (stderr, "\n");                                           \
   1098  1.1.1.5  mrg     }                                                                     \
   1099  1.1.1.5  mrg } while (0)
   1100  1.1.1.5  mrg 
   1101  1.1.1.5  mrg 
   1102  1.1.1.5  mrg /*-----------------------------------.
   1103  1.1.1.5  mrg | Print this symbol's value on YYO.  |
   1104  1.1.1.5  mrg `-----------------------------------*/
   1105  1.1.1.5  mrg 
   1106  1.1.1.5  mrg static void
   1107  1.1.1.5  mrg yy_symbol_value_print (FILE *yyo,
   1108  1.1.1.5  mrg                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
   1109      1.1  mrg {
   1110  1.1.1.5  mrg   FILE *yyoutput = yyo;
   1111  1.1.1.5  mrg   YYUSE (yyoutput);
   1112  1.1.1.5  mrg   if (!yyvaluep)
   1113  1.1.1.5  mrg     return;
   1114  1.1.1.5  mrg # ifdef YYPRINT
   1115  1.1.1.5  mrg   if (yykind < YYNTOKENS)
   1116  1.1.1.5  mrg     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
   1117  1.1.1.5  mrg # endif
   1118  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1119  1.1.1.5  mrg   YYUSE (yykind);
   1120  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1121      1.1  mrg }
   1122      1.1  mrg 
   1123      1.1  mrg 
   1124  1.1.1.5  mrg /*---------------------------.
   1125  1.1.1.5  mrg | Print this symbol on YYO.  |
   1126  1.1.1.5  mrg `---------------------------*/
   1127  1.1.1.5  mrg 
   1128  1.1.1.5  mrg static void
   1129  1.1.1.5  mrg yy_symbol_print (FILE *yyo,
   1130  1.1.1.5  mrg                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
   1131      1.1  mrg {
   1132  1.1.1.5  mrg   YYFPRINTF (yyo, "%s %s (",
   1133  1.1.1.5  mrg              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
   1134      1.1  mrg 
   1135  1.1.1.5  mrg   yy_symbol_value_print (yyo, yykind, yyvaluep);
   1136  1.1.1.5  mrg   YYFPRINTF (yyo, ")");
   1137  1.1.1.5  mrg }
   1138  1.1.1.5  mrg 
   1139  1.1.1.5  mrg /*------------------------------------------------------------------.
   1140  1.1.1.5  mrg | yy_stack_print -- Print the state stack from its BOTTOM up to its |
   1141  1.1.1.5  mrg | TOP (included).                                                   |
   1142  1.1.1.5  mrg `------------------------------------------------------------------*/
   1143  1.1.1.5  mrg 
   1144  1.1.1.5  mrg static void
   1145  1.1.1.5  mrg yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
   1146  1.1.1.5  mrg {
   1147  1.1.1.5  mrg   YYFPRINTF (stderr, "Stack now");
   1148  1.1.1.5  mrg   for (; yybottom <= yytop; yybottom++)
   1149      1.1  mrg     {
   1150  1.1.1.5  mrg       int yybot = *yybottom;
   1151  1.1.1.5  mrg       YYFPRINTF (stderr, " %d", yybot);
   1152      1.1  mrg     }
   1153  1.1.1.5  mrg   YYFPRINTF (stderr, "\n");
   1154  1.1.1.5  mrg }
   1155      1.1  mrg 
   1156  1.1.1.5  mrg # define YY_STACK_PRINT(Bottom, Top)                            \
   1157  1.1.1.5  mrg do {                                                            \
   1158  1.1.1.5  mrg   if (yydebug)                                                  \
   1159  1.1.1.5  mrg     yy_stack_print ((Bottom), (Top));                           \
   1160  1.1.1.5  mrg } while (0)
   1161  1.1.1.5  mrg 
   1162  1.1.1.5  mrg 
   1163  1.1.1.5  mrg /*------------------------------------------------.
   1164  1.1.1.5  mrg | Report that the YYRULE is going to be reduced.  |
   1165  1.1.1.5  mrg `------------------------------------------------*/
   1166  1.1.1.5  mrg 
   1167  1.1.1.5  mrg static void
   1168  1.1.1.5  mrg yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
   1169  1.1.1.5  mrg                  int yyrule)
   1170  1.1.1.5  mrg {
   1171  1.1.1.5  mrg   int yylno = yyrline[yyrule];
   1172  1.1.1.5  mrg   int yynrhs = yyr2[yyrule];
   1173  1.1.1.5  mrg   int yyi;
   1174  1.1.1.5  mrg   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
   1175  1.1.1.5  mrg              yyrule - 1, yylno);
   1176  1.1.1.5  mrg   /* The symbols being reduced.  */
   1177  1.1.1.5  mrg   for (yyi = 0; yyi < yynrhs; yyi++)
   1178      1.1  mrg     {
   1179  1.1.1.5  mrg       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
   1180  1.1.1.5  mrg       yy_symbol_print (stderr,
   1181  1.1.1.5  mrg                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
   1182  1.1.1.5  mrg                        &yyvsp[(yyi + 1) - (yynrhs)]);
   1183  1.1.1.5  mrg       YYFPRINTF (stderr, "\n");
   1184      1.1  mrg     }
   1185  1.1.1.5  mrg }
   1186      1.1  mrg 
   1187  1.1.1.5  mrg # define YY_REDUCE_PRINT(Rule)          \
   1188  1.1.1.5  mrg do {                                    \
   1189  1.1.1.5  mrg   if (yydebug)                          \
   1190  1.1.1.5  mrg     yy_reduce_print (yyssp, yyvsp, Rule); \
   1191  1.1.1.5  mrg } while (0)
   1192      1.1  mrg 
   1193  1.1.1.5  mrg /* Nonzero means print parse trace.  It is left uninitialized so that
   1194  1.1.1.5  mrg    multiple parsers can coexist.  */
   1195  1.1.1.5  mrg int yydebug;
   1196  1.1.1.5  mrg #else /* !YYDEBUG */
   1197  1.1.1.5  mrg # define YYDPRINTF(Args) ((void) 0)
   1198  1.1.1.5  mrg # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
   1199  1.1.1.5  mrg # define YY_STACK_PRINT(Bottom, Top)
   1200  1.1.1.5  mrg # define YY_REDUCE_PRINT(Rule)
   1201  1.1.1.5  mrg #endif /* !YYDEBUG */
   1202  1.1.1.4  mrg 
   1203      1.1  mrg 
   1204  1.1.1.5  mrg /* YYINITDEPTH -- initial size of the parser's stacks.  */
   1205  1.1.1.5  mrg #ifndef YYINITDEPTH
   1206  1.1.1.5  mrg # define YYINITDEPTH 200
   1207      1.1  mrg #endif
   1208      1.1  mrg 
   1209  1.1.1.5  mrg /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   1210  1.1.1.5  mrg    if the built-in stack extension method is used).
   1211      1.1  mrg 
   1212  1.1.1.5  mrg    Do not make this value too large; the results are undefined if
   1213  1.1.1.5  mrg    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   1214  1.1.1.5  mrg    evaluated with infinite-precision integer arithmetic.  */
   1215      1.1  mrg 
   1216  1.1.1.5  mrg #ifndef YYMAXDEPTH
   1217  1.1.1.5  mrg # define YYMAXDEPTH 10000
   1218  1.1.1.5  mrg #endif
   1219      1.1  mrg 
   1220      1.1  mrg 
   1221      1.1  mrg 
   1222      1.1  mrg 
   1223  1.1.1.2  mrg 
   1224      1.1  mrg 
   1225  1.1.1.5  mrg /*-----------------------------------------------.
   1226  1.1.1.5  mrg | Release the memory associated to this symbol.  |
   1227  1.1.1.5  mrg `-----------------------------------------------*/
   1228  1.1.1.5  mrg 
   1229  1.1.1.5  mrg static void
   1230  1.1.1.5  mrg yydestruct (const char *yymsg,
   1231  1.1.1.5  mrg             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
   1232      1.1  mrg {
   1233  1.1.1.5  mrg   YYUSE (yyvaluep);
   1234  1.1.1.5  mrg   if (!yymsg)
   1235  1.1.1.5  mrg     yymsg = "Deleting";
   1236  1.1.1.5  mrg   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
   1237  1.1.1.5  mrg 
   1238  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1239  1.1.1.5  mrg   YYUSE (yykind);
   1240  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1241      1.1  mrg }
   1242  1.1.1.2  mrg 
   1243  1.1.1.5  mrg 
   1244  1.1.1.5  mrg /* The lookahead symbol.  */
   1245  1.1.1.5  mrg int yychar;
   1246  1.1.1.5  mrg 
   1247  1.1.1.5  mrg /* The semantic value of the lookahead symbol.  */
   1248  1.1.1.5  mrg YYSTYPE yylval;
   1249  1.1.1.5  mrg /* Number of syntax errors so far.  */
   1250  1.1.1.5  mrg int yynerrs;
   1251  1.1.1.5  mrg 
   1252  1.1.1.5  mrg 
   1253  1.1.1.5  mrg 
   1254  1.1.1.5  mrg 
   1255  1.1.1.5  mrg /*----------.
   1256  1.1.1.5  mrg | yyparse.  |
   1257  1.1.1.5  mrg `----------*/
   1258      1.1  mrg 
   1259      1.1  mrg int
   1260  1.1.1.5  mrg yyparse (void)
   1261      1.1  mrg {
   1262  1.1.1.5  mrg     yy_state_fast_t yystate;
   1263  1.1.1.5  mrg     /* Number of tokens to shift before error messages enabled.  */
   1264  1.1.1.5  mrg     int yyerrstatus;
   1265  1.1.1.5  mrg 
   1266  1.1.1.5  mrg     /* The stacks and their tools:
   1267  1.1.1.5  mrg        'yyss': related to states.
   1268  1.1.1.5  mrg        'yyvs': related to semantic values.
   1269  1.1.1.5  mrg 
   1270  1.1.1.5  mrg        Refer to the stacks through separate pointers, to allow yyoverflow
   1271  1.1.1.5  mrg        to reallocate them elsewhere.  */
   1272  1.1.1.5  mrg 
   1273  1.1.1.5  mrg     /* Their size.  */
   1274  1.1.1.5  mrg     YYPTRDIFF_T yystacksize;
   1275  1.1.1.5  mrg 
   1276  1.1.1.5  mrg     /* The state stack.  */
   1277  1.1.1.5  mrg     yy_state_t yyssa[YYINITDEPTH];
   1278  1.1.1.5  mrg     yy_state_t *yyss;
   1279  1.1.1.5  mrg     yy_state_t *yyssp;
   1280  1.1.1.5  mrg 
   1281  1.1.1.5  mrg     /* The semantic value stack.  */
   1282  1.1.1.5  mrg     YYSTYPE yyvsa[YYINITDEPTH];
   1283  1.1.1.5  mrg     YYSTYPE *yyvs;
   1284  1.1.1.5  mrg     YYSTYPE *yyvsp;
   1285  1.1.1.5  mrg 
   1286  1.1.1.5  mrg   int yyn;
   1287  1.1.1.5  mrg   /* The return value of yyparse.  */
   1288  1.1.1.5  mrg   int yyresult;
   1289  1.1.1.5  mrg   /* Lookahead token as an internal (translated) token number.  */
   1290  1.1.1.5  mrg   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   1291  1.1.1.5  mrg   /* The variables used to return semantic value and location from the
   1292  1.1.1.5  mrg      action routines.  */
   1293  1.1.1.5  mrg   YYSTYPE yyval;
   1294  1.1.1.5  mrg 
   1295  1.1.1.5  mrg 
   1296  1.1.1.5  mrg 
   1297  1.1.1.5  mrg #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
   1298  1.1.1.5  mrg 
   1299  1.1.1.5  mrg   /* The number of symbols on the RHS of the reduced rule.
   1300  1.1.1.5  mrg      Keep to zero when no symbol should be popped.  */
   1301  1.1.1.5  mrg   int yylen = 0;
   1302  1.1.1.5  mrg 
   1303  1.1.1.5  mrg   yynerrs = 0;
   1304  1.1.1.5  mrg   yystate = 0;
   1305  1.1.1.5  mrg   yyerrstatus = 0;
   1306  1.1.1.5  mrg 
   1307  1.1.1.5  mrg   yystacksize = YYINITDEPTH;
   1308  1.1.1.5  mrg   yyssp = yyss = yyssa;
   1309  1.1.1.5  mrg   yyvsp = yyvs = yyvsa;
   1310  1.1.1.5  mrg 
   1311  1.1.1.5  mrg 
   1312  1.1.1.5  mrg   YYDPRINTF ((stderr, "Starting parse\n"));
   1313  1.1.1.5  mrg 
   1314  1.1.1.5  mrg   yychar = YYEMPTY; /* Cause a token to be read.  */
   1315  1.1.1.5  mrg   goto yysetstate;
   1316  1.1.1.5  mrg 
   1317  1.1.1.5  mrg 
   1318  1.1.1.5  mrg /*------------------------------------------------------------.
   1319  1.1.1.5  mrg | yynewstate -- push a new state, which is found in yystate.  |
   1320  1.1.1.5  mrg `------------------------------------------------------------*/
   1321  1.1.1.5  mrg yynewstate:
   1322  1.1.1.5  mrg   /* In all cases, when you get here, the value and location stacks
   1323  1.1.1.5  mrg      have just been pushed.  So pushing a state here evens the stacks.  */
   1324  1.1.1.5  mrg   yyssp++;
   1325  1.1.1.5  mrg 
   1326  1.1.1.5  mrg 
   1327  1.1.1.5  mrg /*--------------------------------------------------------------------.
   1328  1.1.1.5  mrg | yysetstate -- set current state (the top of the stack) to yystate.  |
   1329  1.1.1.5  mrg `--------------------------------------------------------------------*/
   1330  1.1.1.5  mrg yysetstate:
   1331  1.1.1.5  mrg   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1332  1.1.1.5  mrg   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
   1333  1.1.1.5  mrg   YY_IGNORE_USELESS_CAST_BEGIN
   1334  1.1.1.5  mrg   *yyssp = YY_CAST (yy_state_t, yystate);
   1335  1.1.1.5  mrg   YY_IGNORE_USELESS_CAST_END
   1336  1.1.1.5  mrg   YY_STACK_PRINT (yyss, yyssp);
   1337      1.1  mrg 
   1338  1.1.1.5  mrg   if (yyss + yystacksize - 1 <= yyssp)
   1339  1.1.1.5  mrg #if !defined yyoverflow && !defined YYSTACK_RELOCATE
   1340  1.1.1.5  mrg     goto yyexhaustedlab;
   1341  1.1.1.5  mrg #else
   1342      1.1  mrg     {
   1343  1.1.1.5  mrg       /* Get the current used size of the three stacks, in elements.  */
   1344  1.1.1.5  mrg       YYPTRDIFF_T yysize = yyssp - yyss + 1;
   1345  1.1.1.5  mrg 
   1346  1.1.1.5  mrg # if defined yyoverflow
   1347  1.1.1.5  mrg       {
   1348  1.1.1.5  mrg         /* Give user a chance to reallocate the stack.  Use copies of
   1349  1.1.1.5  mrg            these so that the &'s don't force the real ones into
   1350  1.1.1.5  mrg            memory.  */
   1351  1.1.1.5  mrg         yy_state_t *yyss1 = yyss;
   1352  1.1.1.5  mrg         YYSTYPE *yyvs1 = yyvs;
   1353  1.1.1.5  mrg 
   1354  1.1.1.5  mrg         /* Each stack pointer address is followed by the size of the
   1355  1.1.1.5  mrg            data in use in that stack, in bytes.  This used to be a
   1356  1.1.1.5  mrg            conditional around just the two extra args, but that might
   1357  1.1.1.5  mrg            be undefined if yyoverflow is a macro.  */
   1358  1.1.1.5  mrg         yyoverflow (YY_("memory exhausted"),
   1359  1.1.1.5  mrg                     &yyss1, yysize * YYSIZEOF (*yyssp),
   1360  1.1.1.5  mrg                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
   1361  1.1.1.5  mrg                     &yystacksize);
   1362  1.1.1.5  mrg         yyss = yyss1;
   1363  1.1.1.5  mrg         yyvs = yyvs1;
   1364  1.1.1.5  mrg       }
   1365  1.1.1.5  mrg # else /* defined YYSTACK_RELOCATE */
   1366  1.1.1.5  mrg       /* Extend the stack our own way.  */
   1367  1.1.1.5  mrg       if (YYMAXDEPTH <= yystacksize)
   1368  1.1.1.5  mrg         goto yyexhaustedlab;
   1369  1.1.1.5  mrg       yystacksize *= 2;
   1370  1.1.1.5  mrg       if (YYMAXDEPTH < yystacksize)
   1371  1.1.1.5  mrg         yystacksize = YYMAXDEPTH;
   1372  1.1.1.5  mrg 
   1373  1.1.1.5  mrg       {
   1374  1.1.1.5  mrg         yy_state_t *yyss1 = yyss;
   1375  1.1.1.5  mrg         union yyalloc *yyptr =
   1376  1.1.1.5  mrg           YY_CAST (union yyalloc *,
   1377  1.1.1.5  mrg                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
   1378  1.1.1.5  mrg         if (! yyptr)
   1379  1.1.1.5  mrg           goto yyexhaustedlab;
   1380  1.1.1.5  mrg         YYSTACK_RELOCATE (yyss_alloc, yyss);
   1381  1.1.1.5  mrg         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
   1382  1.1.1.5  mrg #  undef YYSTACK_RELOCATE
   1383  1.1.1.5  mrg         if (yyss1 != yyssa)
   1384  1.1.1.5  mrg           YYSTACK_FREE (yyss1);
   1385  1.1.1.5  mrg       }
   1386  1.1.1.5  mrg # endif
   1387  1.1.1.5  mrg 
   1388  1.1.1.5  mrg       yyssp = yyss + yysize - 1;
   1389  1.1.1.5  mrg       yyvsp = yyvs + yysize - 1;
   1390  1.1.1.5  mrg 
   1391  1.1.1.5  mrg       YY_IGNORE_USELESS_CAST_BEGIN
   1392  1.1.1.5  mrg       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
   1393  1.1.1.5  mrg                   YY_CAST (long, yystacksize)));
   1394  1.1.1.5  mrg       YY_IGNORE_USELESS_CAST_END
   1395  1.1.1.5  mrg 
   1396  1.1.1.5  mrg       if (yyss + yystacksize - 1 <= yyssp)
   1397  1.1.1.5  mrg         YYABORT;
   1398      1.1  mrg     }
   1399  1.1.1.5  mrg #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
   1400      1.1  mrg 
   1401  1.1.1.5  mrg   if (yystate == YYFINAL)
   1402  1.1.1.5  mrg     YYACCEPT;
   1403      1.1  mrg 
   1404  1.1.1.5  mrg   goto yybackup;
   1405  1.1.1.5  mrg 
   1406  1.1.1.5  mrg 
   1407  1.1.1.5  mrg /*-----------.
   1408  1.1.1.5  mrg | yybackup.  |
   1409  1.1.1.5  mrg `-----------*/
   1410  1.1.1.5  mrg yybackup:
   1411  1.1.1.5  mrg   /* Do appropriate processing given the current state.  Read a
   1412  1.1.1.5  mrg      lookahead token if we need one and don't already have one.  */
   1413  1.1.1.5  mrg 
   1414  1.1.1.5  mrg   /* First try to decide what to do without reference to lookahead token.  */
   1415  1.1.1.5  mrg   yyn = yypact[yystate];
   1416  1.1.1.5  mrg   if (yypact_value_is_default (yyn))
   1417  1.1.1.5  mrg     goto yydefault;
   1418      1.1  mrg 
   1419  1.1.1.5  mrg   /* Not known => get a lookahead token if don't already have one.  */
   1420      1.1  mrg 
   1421  1.1.1.5  mrg   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   1422  1.1.1.5  mrg   if (yychar == YYEMPTY)
   1423      1.1  mrg     {
   1424  1.1.1.5  mrg       YYDPRINTF ((stderr, "Reading a token\n"));
   1425  1.1.1.5  mrg       yychar = yylex ();
   1426      1.1  mrg     }
   1427  1.1.1.5  mrg 
   1428  1.1.1.5  mrg   if (yychar <= YYEOF)
   1429      1.1  mrg     {
   1430  1.1.1.5  mrg       yychar = YYEOF;
   1431  1.1.1.5  mrg       yytoken = YYSYMBOL_YYEOF;
   1432  1.1.1.5  mrg       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1433      1.1  mrg     }
   1434  1.1.1.5  mrg   else if (yychar == YYerror)
   1435      1.1  mrg     {
   1436  1.1.1.5  mrg       /* The scanner already issued an error message, process directly
   1437  1.1.1.5  mrg          to error recovery.  But do not keep the error token as
   1438  1.1.1.5  mrg          lookahead, it is too special and may lead us to an endless
   1439  1.1.1.5  mrg          loop in error recovery. */
   1440  1.1.1.5  mrg       yychar = YYUNDEF;
   1441  1.1.1.5  mrg       yytoken = YYSYMBOL_YYerror;
   1442  1.1.1.5  mrg       goto yyerrlab1;
   1443      1.1  mrg     }
   1444  1.1.1.5  mrg   else
   1445      1.1  mrg     {
   1446  1.1.1.5  mrg       yytoken = YYTRANSLATE (yychar);
   1447  1.1.1.5  mrg       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1448  1.1.1.4  mrg     }
   1449  1.1.1.5  mrg 
   1450  1.1.1.5  mrg   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1451  1.1.1.5  mrg      detect an error, take that action.  */
   1452  1.1.1.5  mrg   yyn += yytoken;
   1453  1.1.1.5  mrg   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
   1454  1.1.1.5  mrg     goto yydefault;
   1455  1.1.1.5  mrg   yyn = yytable[yyn];
   1456  1.1.1.5  mrg   if (yyn <= 0)
   1457  1.1.1.4  mrg     {
   1458  1.1.1.5  mrg       if (yytable_value_is_error (yyn))
   1459  1.1.1.5  mrg         goto yyerrlab;
   1460  1.1.1.5  mrg       yyn = -yyn;
   1461  1.1.1.5  mrg       goto yyreduce;
   1462      1.1  mrg     }
   1463      1.1  mrg 
   1464  1.1.1.5  mrg   /* Count tokens shifted since error; after three, turn off error
   1465  1.1.1.5  mrg      status.  */
   1466  1.1.1.5  mrg   if (yyerrstatus)
   1467  1.1.1.5  mrg     yyerrstatus--;
   1468  1.1.1.5  mrg 
   1469  1.1.1.5  mrg   /* Shift the lookahead token.  */
   1470  1.1.1.5  mrg   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1471  1.1.1.5  mrg   yystate = yyn;
   1472  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1473  1.1.1.5  mrg   *++yyvsp = yylval;
   1474  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1475  1.1.1.5  mrg 
   1476  1.1.1.5  mrg   /* Discard the shifted token.  */
   1477  1.1.1.5  mrg   yychar = YYEMPTY;
   1478  1.1.1.5  mrg   goto yynewstate;
   1479  1.1.1.5  mrg 
   1480  1.1.1.5  mrg 
   1481  1.1.1.5  mrg /*-----------------------------------------------------------.
   1482  1.1.1.5  mrg | yydefault -- do the default action for the current state.  |
   1483  1.1.1.5  mrg `-----------------------------------------------------------*/
   1484  1.1.1.5  mrg yydefault:
   1485  1.1.1.5  mrg   yyn = yydefact[yystate];
   1486  1.1.1.5  mrg   if (yyn == 0)
   1487  1.1.1.5  mrg     goto yyerrlab;
   1488  1.1.1.5  mrg   goto yyreduce;
   1489  1.1.1.5  mrg 
   1490  1.1.1.5  mrg 
   1491  1.1.1.5  mrg /*-----------------------------.
   1492  1.1.1.5  mrg | yyreduce -- do a reduction.  |
   1493  1.1.1.5  mrg `-----------------------------*/
   1494      1.1  mrg yyreduce:
   1495  1.1.1.5  mrg   /* yyn is the number of a rule to reduce with.  */
   1496  1.1.1.5  mrg   yylen = yyr2[yyn];
   1497  1.1.1.5  mrg 
   1498  1.1.1.5  mrg   /* If YYLEN is nonzero, implement the default value of the action:
   1499  1.1.1.5  mrg      '$$ = $1'.
   1500      1.1  mrg 
   1501  1.1.1.5  mrg      Otherwise, the following line sets YYVAL to garbage.
   1502  1.1.1.5  mrg      This behavior is undocumented and Bison
   1503  1.1.1.5  mrg      users should not rely upon it.  Assigning to YYVAL
   1504  1.1.1.5  mrg      unconditionally makes the parser a bit smaller, and it avoids a
   1505  1.1.1.5  mrg      GCC warning that YYVAL may be used uninitialized.  */
   1506  1.1.1.5  mrg   yyval = yyvsp[1-yylen];
   1507  1.1.1.5  mrg 
   1508  1.1.1.5  mrg 
   1509  1.1.1.5  mrg   YY_REDUCE_PRINT (yyn);
   1510  1.1.1.5  mrg   switch (yyn)
   1511      1.1  mrg     {
   1512  1.1.1.5  mrg   case 6:
   1513  1.1.1.3  mrg #line 173 "../../../gmp/demos/calc/calc.y"
   1514  1.1.1.5  mrg               { sp = stack[0]; yyerrok; }
   1515  1.1.1.5  mrg #line 1516 "calc.c"
   1516  1.1.1.5  mrg     break;
   1517  1.1.1.5  mrg 
   1518  1.1.1.5  mrg   case 8:
   1519  1.1.1.3  mrg #line 177 "../../../gmp/demos/calc/calc.y"
   1520  1.1.1.5  mrg       {
   1521      1.1  mrg       mpz_out_str (stdout, obase, sp); putchar ('\n');
   1522      1.1  mrg       sp--;
   1523      1.1  mrg       CHECK_EMPTY ();
   1524      1.1  mrg     }
   1525  1.1.1.5  mrg #line 1526 "calc.c"
   1526  1.1.1.5  mrg     break;
   1527  1.1.1.5  mrg 
   1528  1.1.1.5  mrg   case 9:
   1529  1.1.1.3  mrg #line 182 "../../../gmp/demos/calc/calc.y"
   1530  1.1.1.5  mrg                    {
   1531  1.1.1.5  mrg       CHECK_VARIABLE ((yyvsp[-2].var));
   1532  1.1.1.5  mrg       mpz_swap (variable[(yyvsp[-2].var)], sp);
   1533      1.1  mrg       sp--;
   1534      1.1  mrg       CHECK_EMPTY ();
   1535      1.1  mrg     }
   1536  1.1.1.5  mrg #line 1537 "calc.c"
   1537  1.1.1.5  mrg     break;
   1538  1.1.1.5  mrg 
   1539  1.1.1.5  mrg   case 10:
   1540  1.1.1.3  mrg #line 188 "../../../gmp/demos/calc/calc.y"
   1541  1.1.1.5  mrg             { calc_help (); }
   1542  1.1.1.5  mrg #line 1543 "calc.c"
   1543  1.1.1.5  mrg     break;
   1544  1.1.1.5  mrg 
   1545  1.1.1.5  mrg   case 11:
   1546  1.1.1.3  mrg #line 189 "../../../gmp/demos/calc/calc.y"
   1547  1.1.1.5  mrg             { ibase = 16; obase = -16; }
   1548  1.1.1.5  mrg #line 1549 "calc.c"
   1549  1.1.1.5  mrg     break;
   1550  1.1.1.5  mrg 
   1551  1.1.1.5  mrg   case 12:
   1552  1.1.1.3  mrg #line 190 "../../../gmp/demos/calc/calc.y"
   1553  1.1.1.5  mrg             { ibase = 0;  obase = 10; }
   1554  1.1.1.5  mrg #line 1555 "calc.c"
   1555  1.1.1.5  mrg     break;
   1556  1.1.1.5  mrg 
   1557  1.1.1.5  mrg   case 13:
   1558  1.1.1.3  mrg #line 191 "../../../gmp/demos/calc/calc.y"
   1559  1.1.1.5  mrg             { exit (0); }
   1560  1.1.1.5  mrg #line 1561 "calc.c"
   1561  1.1.1.5  mrg     break;
   1562  1.1.1.5  mrg 
   1563  1.1.1.5  mrg   case 15:
   1564  1.1.1.3  mrg #line 198 "../../../gmp/demos/calc/calc.y"
   1565  1.1.1.5  mrg                   { sp--; mpz_add    (sp, sp, sp+1); }
   1566  1.1.1.5  mrg #line 1567 "calc.c"
   1567  1.1.1.5  mrg     break;
   1568  1.1.1.5  mrg 
   1569  1.1.1.5  mrg   case 16:
   1570  1.1.1.3  mrg #line 199 "../../../gmp/demos/calc/calc.y"
   1571  1.1.1.5  mrg                   { sp--; mpz_sub    (sp, sp, sp+1); }
   1572  1.1.1.5  mrg #line 1573 "calc.c"
   1573  1.1.1.5  mrg     break;
   1574  1.1.1.5  mrg 
   1575  1.1.1.5  mrg   case 17:
   1576  1.1.1.3  mrg #line 200 "../../../gmp/demos/calc/calc.y"
   1577  1.1.1.5  mrg                   { sp--; mpz_mul    (sp, sp, sp+1); }
   1578  1.1.1.5  mrg #line 1579 "calc.c"
   1579  1.1.1.5  mrg     break;
   1580  1.1.1.5  mrg 
   1581  1.1.1.5  mrg   case 18:
   1582  1.1.1.3  mrg #line 201 "../../../gmp/demos/calc/calc.y"
   1583  1.1.1.5  mrg                   { sp--; mpz_fdiv_q (sp, sp, sp+1); }
   1584  1.1.1.5  mrg #line 1585 "calc.c"
   1585  1.1.1.5  mrg     break;
   1586  1.1.1.5  mrg 
   1587  1.1.1.5  mrg   case 19:
   1588  1.1.1.3  mrg #line 202 "../../../gmp/demos/calc/calc.y"
   1589  1.1.1.5  mrg                   { sp--; mpz_fdiv_r (sp, sp, sp+1); }
   1590  1.1.1.5  mrg #line 1591 "calc.c"
   1591  1.1.1.5  mrg     break;
   1592  1.1.1.5  mrg 
   1593  1.1.1.5  mrg   case 20:
   1594  1.1.1.3  mrg #line 203 "../../../gmp/demos/calc/calc.y"
   1595  1.1.1.5  mrg                   { CHECK_UI ("Exponent", sp);
   1596      1.1  mrg                     sp--; mpz_pow_ui (sp, sp, mpz_get_ui (sp+1)); }
   1597  1.1.1.5  mrg #line 1598 "calc.c"
   1598  1.1.1.5  mrg     break;
   1599  1.1.1.5  mrg 
   1600  1.1.1.5  mrg   case 21:
   1601  1.1.1.3  mrg #line 205 "../../../gmp/demos/calc/calc.y"
   1602  1.1.1.5  mrg                   { CHECK_UI ("Shift count", sp);
   1603      1.1  mrg                     sp--; mpz_mul_2exp (sp, sp, mpz_get_ui (sp+1)); }
   1604  1.1.1.5  mrg #line 1605 "calc.c"
   1605  1.1.1.5  mrg     break;
   1606  1.1.1.5  mrg 
   1607  1.1.1.5  mrg   case 22:
   1608  1.1.1.3  mrg #line 207 "../../../gmp/demos/calc/calc.y"
   1609  1.1.1.5  mrg                   { CHECK_UI ("Shift count", sp);
   1610      1.1  mrg                     sp--; mpz_fdiv_q_2exp (sp, sp, mpz_get_ui (sp+1)); }
   1611  1.1.1.5  mrg #line 1612 "calc.c"
   1612  1.1.1.5  mrg     break;
   1613  1.1.1.5  mrg 
   1614  1.1.1.5  mrg   case 23:
   1615  1.1.1.3  mrg #line 209 "../../../gmp/demos/calc/calc.y"
   1616  1.1.1.5  mrg                   { CHECK_UI ("Factorial", sp);
   1617      1.1  mrg                     mpz_fac_ui (sp, mpz_get_ui (sp)); }
   1618  1.1.1.5  mrg #line 1619 "calc.c"
   1619  1.1.1.5  mrg     break;
   1620  1.1.1.5  mrg 
   1621  1.1.1.5  mrg   case 24:
   1622  1.1.1.3  mrg #line 211 "../../../gmp/demos/calc/calc.y"
   1623  1.1.1.5  mrg                            { mpz_neg (sp, sp); }
   1624  1.1.1.5  mrg #line 1625 "calc.c"
   1625  1.1.1.5  mrg     break;
   1626  1.1.1.5  mrg 
   1627  1.1.1.5  mrg   case 25:
   1628  1.1.1.3  mrg #line 213 "../../../gmp/demos/calc/calc.y"
   1629  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <  0); }
   1630  1.1.1.5  mrg #line 1631 "calc.c"
   1631  1.1.1.5  mrg     break;
   1632  1.1.1.5  mrg 
   1633  1.1.1.5  mrg   case 26:
   1634  1.1.1.3  mrg #line 214 "../../../gmp/demos/calc/calc.y"
   1635  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <= 0); }
   1636  1.1.1.5  mrg #line 1637 "calc.c"
   1637  1.1.1.5  mrg     break;
   1638  1.1.1.5  mrg 
   1639  1.1.1.5  mrg   case 27:
   1640  1.1.1.3  mrg #line 215 "../../../gmp/demos/calc/calc.y"
   1641  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) == 0); }
   1642  1.1.1.5  mrg #line 1643 "calc.c"
   1643  1.1.1.5  mrg     break;
   1644  1.1.1.5  mrg 
   1645  1.1.1.5  mrg   case 28:
   1646  1.1.1.3  mrg #line 216 "../../../gmp/demos/calc/calc.y"
   1647  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) != 0); }
   1648  1.1.1.5  mrg #line 1649 "calc.c"
   1649  1.1.1.5  mrg     break;
   1650  1.1.1.5  mrg 
   1651  1.1.1.5  mrg   case 29:
   1652  1.1.1.3  mrg #line 217 "../../../gmp/demos/calc/calc.y"
   1653  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >= 0); }
   1654  1.1.1.5  mrg #line 1655 "calc.c"
   1655  1.1.1.5  mrg     break;
   1656  1.1.1.5  mrg 
   1657  1.1.1.5  mrg   case 30:
   1658  1.1.1.3  mrg #line 218 "../../../gmp/demos/calc/calc.y"
   1659  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >  0); }
   1660  1.1.1.5  mrg #line 1661 "calc.c"
   1661  1.1.1.5  mrg     break;
   1662  1.1.1.5  mrg 
   1663  1.1.1.5  mrg   case 31:
   1664  1.1.1.3  mrg #line 220 "../../../gmp/demos/calc/calc.y"
   1665  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_sgn (sp) && mpz_sgn (sp+1)); }
   1666  1.1.1.5  mrg #line 1667 "calc.c"
   1667  1.1.1.5  mrg     break;
   1668  1.1.1.5  mrg 
   1669  1.1.1.5  mrg   case 32:
   1670  1.1.1.3  mrg #line 221 "../../../gmp/demos/calc/calc.y"
   1671  1.1.1.5  mrg                   { sp--; mpz_set_ui (sp, mpz_sgn (sp) || mpz_sgn (sp+1)); }
   1672  1.1.1.5  mrg #line 1673 "calc.c"
   1673  1.1.1.5  mrg     break;
   1674  1.1.1.5  mrg 
   1675  1.1.1.5  mrg   case 33:
   1676  1.1.1.3  mrg #line 223 "../../../gmp/demos/calc/calc.y"
   1677  1.1.1.5  mrg                                  { mpz_abs (sp, sp); }
   1678  1.1.1.5  mrg #line 1679 "calc.c"
   1679  1.1.1.5  mrg     break;
   1680  1.1.1.5  mrg 
   1681  1.1.1.5  mrg   case 34:
   1682  1.1.1.3  mrg #line 224 "../../../gmp/demos/calc/calc.y"
   1683  1.1.1.5  mrg                                  { sp--; CHECK_UI ("Binomial base", sp+1);
   1684      1.1  mrg                                    mpz_bin_ui (sp, sp, mpz_get_ui (sp+1)); }
   1685  1.1.1.5  mrg #line 1686 "calc.c"
   1686  1.1.1.5  mrg     break;
   1687  1.1.1.5  mrg 
   1688  1.1.1.5  mrg   case 35:
   1689  1.1.1.3  mrg #line 226 "../../../gmp/demos/calc/calc.y"
   1690  1.1.1.5  mrg                                  { CHECK_UI ("Fibonacci", sp);
   1691      1.1  mrg                                    mpz_fib_ui (sp, mpz_get_ui (sp)); }
   1692  1.1.1.5  mrg #line 1693 "calc.c"
   1693  1.1.1.5  mrg     break;
   1694  1.1.1.5  mrg 
   1695  1.1.1.5  mrg   case 37:
   1696  1.1.1.3  mrg #line 229 "../../../gmp/demos/calc/calc.y"
   1697  1.1.1.5  mrg                                  { sp--; mpz_set_si (sp,
   1698      1.1  mrg                                          mpz_kronecker (sp, sp+1)); }
   1699  1.1.1.5  mrg #line 1700 "calc.c"
   1700  1.1.1.5  mrg     break;
   1701  1.1.1.5  mrg 
   1702  1.1.1.5  mrg   case 39:
   1703  1.1.1.3  mrg #line 232 "../../../gmp/demos/calc/calc.y"
   1704  1.1.1.5  mrg                                  { CHECK_UI ("Lucas number", sp);
   1705      1.1  mrg                                    mpz_lucnum_ui (sp, mpz_get_ui (sp)); }
   1706  1.1.1.5  mrg #line 1707 "calc.c"
   1707  1.1.1.5  mrg     break;
   1708  1.1.1.5  mrg 
   1709  1.1.1.5  mrg   case 40:
   1710  1.1.1.3  mrg #line 234 "../../../gmp/demos/calc/calc.y"
   1711  1.1.1.5  mrg                                  { mpz_nextprime (sp, sp); }
   1712  1.1.1.5  mrg #line 1713 "calc.c"
   1713  1.1.1.5  mrg     break;
   1714  1.1.1.5  mrg 
   1715  1.1.1.5  mrg   case 41:
   1716  1.1.1.3  mrg #line 235 "../../../gmp/demos/calc/calc.y"
   1717  1.1.1.5  mrg                                  { sp -= 2; mpz_powm (sp, sp, sp+1, sp+2); }
   1718  1.1.1.5  mrg #line 1719 "calc.c"
   1719  1.1.1.5  mrg     break;
   1720  1.1.1.5  mrg 
   1721  1.1.1.5  mrg   case 42:
   1722  1.1.1.3  mrg #line 236 "../../../gmp/demos/calc/calc.y"
   1723  1.1.1.5  mrg                                  { sp--; CHECK_UI ("Nth-root", sp+1);
   1724      1.1  mrg                                    mpz_root (sp, sp, mpz_get_ui (sp+1)); }
   1725  1.1.1.5  mrg #line 1726 "calc.c"
   1726  1.1.1.5  mrg     break;
   1727  1.1.1.5  mrg 
   1728  1.1.1.5  mrg   case 43:
   1729  1.1.1.3  mrg #line 238 "../../../gmp/demos/calc/calc.y"
   1730  1.1.1.5  mrg                                  { mpz_sqrt (sp, sp); }
   1731  1.1.1.5  mrg #line 1732 "calc.c"
   1732  1.1.1.5  mrg     break;
   1733  1.1.1.5  mrg 
   1734  1.1.1.5  mrg   case 44:
   1735  1.1.1.3  mrg #line 240 "../../../gmp/demos/calc/calc.y"
   1736  1.1.1.5  mrg                {
   1737      1.1  mrg         sp++;
   1738      1.1  mrg         CHECK_OVERFLOW ();
   1739  1.1.1.5  mrg         CHECK_VARIABLE ((yyvsp[0].var));
   1740  1.1.1.5  mrg         mpz_set (sp, variable[(yyvsp[0].var)]);
   1741      1.1  mrg       }
   1742  1.1.1.5  mrg #line 1743 "calc.c"
   1743  1.1.1.5  mrg     break;
   1744  1.1.1.5  mrg 
   1745  1.1.1.5  mrg   case 45:
   1746  1.1.1.3  mrg #line 246 "../../../gmp/demos/calc/calc.y"
   1747  1.1.1.5  mrg              {
   1748      1.1  mrg         sp++;
   1749      1.1  mrg         CHECK_OVERFLOW ();
   1750  1.1.1.5  mrg         if (mpz_set_str (sp, (yyvsp[0].str), ibase) != 0)
   1751      1.1  mrg           {
   1752  1.1.1.5  mrg             fprintf (stderr, "Invalid number: %s\n", (yyvsp[0].str));
   1753      1.1  mrg             YYERROR;
   1754      1.1  mrg           }
   1755      1.1  mrg       }
   1756  1.1.1.5  mrg #line 1757 "calc.c"
   1757  1.1.1.5  mrg     break;
   1758  1.1.1.5  mrg 
   1759  1.1.1.5  mrg   case 47:
   1760  1.1.1.3  mrg #line 258 "../../../gmp/demos/calc/calc.y"
   1761  1.1.1.5  mrg                      { sp--; mpz_gcd (sp, sp, sp+1); }
   1762  1.1.1.5  mrg #line 1763 "calc.c"
   1763  1.1.1.5  mrg     break;
   1764  1.1.1.5  mrg 
   1765  1.1.1.5  mrg   case 49:
   1766  1.1.1.3  mrg #line 262 "../../../gmp/demos/calc/calc.y"
   1767  1.1.1.5  mrg                      { sp--; mpz_lcm (sp, sp, sp+1); }
   1768  1.1.1.5  mrg #line 1769 "calc.c"
   1769  1.1.1.5  mrg     break;
   1770  1.1.1.5  mrg 
   1771  1.1.1.5  mrg 
   1772  1.1.1.5  mrg #line 1773 "calc.c"
   1773  1.1.1.5  mrg 
   1774  1.1.1.5  mrg       default: break;
   1775  1.1.1.5  mrg     }
   1776  1.1.1.5  mrg   /* User semantic actions sometimes alter yychar, and that requires
   1777  1.1.1.5  mrg      that yytoken be updated with the new translation.  We take the
   1778  1.1.1.5  mrg      approach of translating immediately before every use of yytoken.
   1779  1.1.1.5  mrg      One alternative is translating here after every semantic action,
   1780  1.1.1.5  mrg      but that translation would be missed if the semantic action invokes
   1781  1.1.1.5  mrg      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
   1782  1.1.1.5  mrg      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
   1783  1.1.1.5  mrg      incorrect destructor might then be invoked immediately.  In the
   1784  1.1.1.5  mrg      case of YYERROR or YYBACKUP, subsequent parser actions might lead
   1785  1.1.1.5  mrg      to an incorrect destructor call or verbose syntax error message
   1786  1.1.1.5  mrg      before the lookahead is translated.  */
   1787  1.1.1.5  mrg   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
   1788  1.1.1.5  mrg 
   1789  1.1.1.5  mrg   YYPOPSTACK (yylen);
   1790  1.1.1.5  mrg   yylen = 0;
   1791  1.1.1.5  mrg 
   1792  1.1.1.5  mrg   *++yyvsp = yyval;
   1793  1.1.1.5  mrg 
   1794  1.1.1.5  mrg   /* Now 'shift' the result of the reduction.  Determine what state
   1795  1.1.1.5  mrg      that goes to, based on the state we popped back to and the rule
   1796  1.1.1.5  mrg      number reduced by.  */
   1797  1.1.1.5  mrg   {
   1798  1.1.1.5  mrg     const int yylhs = yyr1[yyn] - YYNTOKENS;
   1799  1.1.1.5  mrg     const int yyi = yypgoto[yylhs] + *yyssp;
   1800  1.1.1.5  mrg     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
   1801  1.1.1.5  mrg                ? yytable[yyi]
   1802  1.1.1.5  mrg                : yydefgoto[yylhs]);
   1803  1.1.1.5  mrg   }
   1804  1.1.1.5  mrg 
   1805  1.1.1.5  mrg   goto yynewstate;
   1806  1.1.1.5  mrg 
   1807  1.1.1.5  mrg 
   1808  1.1.1.5  mrg /*--------------------------------------.
   1809  1.1.1.5  mrg | yyerrlab -- here on detecting error.  |
   1810  1.1.1.5  mrg `--------------------------------------*/
   1811  1.1.1.5  mrg yyerrlab:
   1812  1.1.1.5  mrg   /* Make sure we have latest lookahead translation.  See comments at
   1813  1.1.1.5  mrg      user semantic actions for why this is necessary.  */
   1814  1.1.1.5  mrg   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   1815  1.1.1.5  mrg   /* If not already recovering from an error, report this error.  */
   1816  1.1.1.5  mrg   if (!yyerrstatus)
   1817      1.1  mrg     {
   1818  1.1.1.5  mrg       ++yynerrs;
   1819  1.1.1.5  mrg       yyerror (YY_("syntax error"));
   1820  1.1.1.5  mrg     }
   1821  1.1.1.5  mrg 
   1822  1.1.1.5  mrg   if (yyerrstatus == 3)
   1823  1.1.1.5  mrg     {
   1824  1.1.1.5  mrg       /* If just tried and failed to reuse lookahead token after an
   1825  1.1.1.5  mrg          error, discard it.  */
   1826  1.1.1.5  mrg 
   1827  1.1.1.5  mrg       if (yychar <= YYEOF)
   1828      1.1  mrg         {
   1829  1.1.1.5  mrg           /* Return failure if at end of input.  */
   1830  1.1.1.5  mrg           if (yychar == YYEOF)
   1831  1.1.1.5  mrg             YYABORT;
   1832  1.1.1.5  mrg         }
   1833  1.1.1.5  mrg       else
   1834  1.1.1.5  mrg         {
   1835  1.1.1.5  mrg           yydestruct ("Error: discarding",
   1836  1.1.1.5  mrg                       yytoken, &yylval);
   1837  1.1.1.5  mrg           yychar = YYEMPTY;
   1838  1.1.1.5  mrg         }
   1839  1.1.1.5  mrg     }
   1840  1.1.1.5  mrg 
   1841  1.1.1.5  mrg   /* Else will try to reuse lookahead token after shifting the error
   1842  1.1.1.5  mrg      token.  */
   1843  1.1.1.5  mrg   goto yyerrlab1;
   1844  1.1.1.5  mrg 
   1845  1.1.1.5  mrg 
   1846  1.1.1.5  mrg /*---------------------------------------------------.
   1847  1.1.1.5  mrg | yyerrorlab -- error raised explicitly by YYERROR.  |
   1848  1.1.1.5  mrg `---------------------------------------------------*/
   1849  1.1.1.5  mrg yyerrorlab:
   1850  1.1.1.5  mrg   /* Pacify compilers when the user code never invokes YYERROR and the
   1851  1.1.1.5  mrg      label yyerrorlab therefore never appears in user code.  */
   1852  1.1.1.5  mrg   if (0)
   1853  1.1.1.5  mrg     YYERROR;
   1854  1.1.1.5  mrg 
   1855  1.1.1.5  mrg   /* Do not reclaim the symbols of the rule whose action triggered
   1856  1.1.1.5  mrg      this YYERROR.  */
   1857  1.1.1.5  mrg   YYPOPSTACK (yylen);
   1858  1.1.1.5  mrg   yylen = 0;
   1859  1.1.1.5  mrg   YY_STACK_PRINT (yyss, yyssp);
   1860  1.1.1.5  mrg   yystate = *yyssp;
   1861  1.1.1.5  mrg   goto yyerrlab1;
   1862  1.1.1.5  mrg 
   1863  1.1.1.5  mrg 
   1864  1.1.1.5  mrg /*-------------------------------------------------------------.
   1865  1.1.1.5  mrg | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   1866  1.1.1.5  mrg `-------------------------------------------------------------*/
   1867  1.1.1.5  mrg yyerrlab1:
   1868  1.1.1.5  mrg   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
   1869  1.1.1.5  mrg 
   1870  1.1.1.5  mrg   /* Pop stack until we find a state that shifts the error token.  */
   1871  1.1.1.5  mrg   for (;;)
   1872  1.1.1.5  mrg     {
   1873  1.1.1.5  mrg       yyn = yypact[yystate];
   1874  1.1.1.5  mrg       if (!yypact_value_is_default (yyn))
   1875  1.1.1.5  mrg         {
   1876  1.1.1.5  mrg           yyn += YYSYMBOL_YYerror;
   1877  1.1.1.5  mrg           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
   1878  1.1.1.4  mrg             {
   1879  1.1.1.5  mrg               yyn = yytable[yyn];
   1880  1.1.1.5  mrg               if (0 < yyn)
   1881  1.1.1.5  mrg                 break;
   1882  1.1.1.4  mrg             }
   1883  1.1.1.5  mrg         }
   1884  1.1.1.5  mrg 
   1885  1.1.1.5  mrg       /* Pop the current state because it cannot handle the error token.  */
   1886  1.1.1.5  mrg       if (yyssp == yyss)
   1887  1.1.1.5  mrg         YYABORT;
   1888  1.1.1.5  mrg 
   1889  1.1.1.5  mrg 
   1890  1.1.1.5  mrg       yydestruct ("Error: popping",
   1891  1.1.1.5  mrg                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
   1892  1.1.1.5  mrg       YYPOPSTACK (1);
   1893  1.1.1.5  mrg       yystate = *yyssp;
   1894  1.1.1.5  mrg       YY_STACK_PRINT (yyss, yyssp);
   1895  1.1.1.5  mrg     }
   1896  1.1.1.5  mrg 
   1897  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1898  1.1.1.5  mrg   *++yyvsp = yylval;
   1899  1.1.1.5  mrg   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1900  1.1.1.5  mrg 
   1901  1.1.1.5  mrg 
   1902  1.1.1.5  mrg   /* Shift the error token.  */
   1903  1.1.1.5  mrg   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
   1904  1.1.1.5  mrg 
   1905  1.1.1.5  mrg   yystate = yyn;
   1906  1.1.1.5  mrg   goto yynewstate;
   1907  1.1.1.5  mrg 
   1908  1.1.1.5  mrg 
   1909  1.1.1.5  mrg /*-------------------------------------.
   1910  1.1.1.5  mrg | yyacceptlab -- YYACCEPT comes here.  |
   1911  1.1.1.5  mrg `-------------------------------------*/
   1912  1.1.1.5  mrg yyacceptlab:
   1913  1.1.1.5  mrg   yyresult = 0;
   1914  1.1.1.5  mrg   goto yyreturn;
   1915  1.1.1.5  mrg 
   1916  1.1.1.5  mrg 
   1917  1.1.1.5  mrg /*-----------------------------------.
   1918  1.1.1.5  mrg | yyabortlab -- YYABORT comes here.  |
   1919  1.1.1.5  mrg `-----------------------------------*/
   1920  1.1.1.5  mrg yyabortlab:
   1921  1.1.1.5  mrg   yyresult = 1;
   1922  1.1.1.5  mrg   goto yyreturn;
   1923  1.1.1.5  mrg 
   1924  1.1.1.5  mrg 
   1925  1.1.1.5  mrg #if !defined yyoverflow
   1926  1.1.1.5  mrg /*-------------------------------------------------.
   1927  1.1.1.5  mrg | yyexhaustedlab -- memory exhaustion comes here.  |
   1928  1.1.1.5  mrg `-------------------------------------------------*/
   1929  1.1.1.5  mrg yyexhaustedlab:
   1930  1.1.1.5  mrg   yyerror (YY_("memory exhausted"));
   1931  1.1.1.5  mrg   yyresult = 2;
   1932  1.1.1.5  mrg   /* Fall through.  */
   1933  1.1.1.4  mrg #endif
   1934  1.1.1.5  mrg 
   1935  1.1.1.5  mrg 
   1936  1.1.1.5  mrg /*-----------------------------------------------------.
   1937  1.1.1.5  mrg | yyreturn -- parsing is finished, return the result.  |
   1938  1.1.1.5  mrg `-----------------------------------------------------*/
   1939  1.1.1.5  mrg yyreturn:
   1940  1.1.1.5  mrg   if (yychar != YYEMPTY)
   1941  1.1.1.5  mrg     {
   1942  1.1.1.5  mrg       /* Make sure we have latest lookahead translation.  See comments at
   1943  1.1.1.5  mrg          user semantic actions for why this is necessary.  */
   1944  1.1.1.5  mrg       yytoken = YYTRANSLATE (yychar);
   1945  1.1.1.5  mrg       yydestruct ("Cleanup: discarding lookahead",
   1946  1.1.1.5  mrg                   yytoken, &yylval);
   1947  1.1.1.5  mrg     }
   1948  1.1.1.5  mrg   /* Do not reclaim the symbols of the rule whose action triggered
   1949  1.1.1.5  mrg      this YYABORT or YYACCEPT.  */
   1950  1.1.1.5  mrg   YYPOPSTACK (yylen);
   1951  1.1.1.5  mrg   YY_STACK_PRINT (yyss, yyssp);
   1952  1.1.1.5  mrg   while (yyssp != yyss)
   1953  1.1.1.5  mrg     {
   1954  1.1.1.5  mrg       yydestruct ("Cleanup: popping",
   1955  1.1.1.5  mrg                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
   1956  1.1.1.5  mrg       YYPOPSTACK (1);
   1957  1.1.1.5  mrg     }
   1958  1.1.1.5  mrg #ifndef yyoverflow
   1959  1.1.1.5  mrg   if (yyss != yyssa)
   1960  1.1.1.5  mrg     YYSTACK_FREE (yyss);
   1961  1.1.1.5  mrg #endif
   1962  1.1.1.5  mrg 
   1963  1.1.1.5  mrg   return yyresult;
   1964  1.1.1.5  mrg }
   1965  1.1.1.5  mrg 
   1966  1.1.1.5  mrg #line 264 "../../../gmp/demos/calc/calc.y"
   1967  1.1.1.5  mrg 
   1968  1.1.1.5  mrg 
   1969  1.1.1.5  mrg yyerror (char *s)
   1970  1.1.1.5  mrg {
   1971  1.1.1.5  mrg   fprintf (stderr, "%s\n", s);
   1972  1.1.1.5  mrg }
   1973  1.1.1.5  mrg 
   1974  1.1.1.5  mrg int calc_option_readline = -1;
   1975  1.1.1.5  mrg 
   1976  1.1.1.5  mrg int
   1977  1.1.1.5  mrg main (int argc, char *argv[])
   1978  1.1.1.5  mrg {
   1979  1.1.1.5  mrg   int  i;
   1980  1.1.1.5  mrg 
   1981  1.1.1.5  mrg   for (i = 1; i < argc; i++)
   1982  1.1.1.5  mrg     {
   1983  1.1.1.5  mrg       if (strcmp (argv[i], "--readline") == 0)
   1984  1.1.1.5  mrg         calc_option_readline = 1;
   1985  1.1.1.5  mrg       else if (strcmp (argv[i], "--noreadline") == 0)
   1986  1.1.1.5  mrg         calc_option_readline = 0;
   1987  1.1.1.5  mrg       else if (strcmp (argv[i], "--help") == 0)
   1988  1.1.1.5  mrg         {
   1989  1.1.1.5  mrg           printf ("Usage: calc [--option]...\n");
   1990  1.1.1.5  mrg           printf ("  --readline    use readline\n");
   1991  1.1.1.5  mrg           printf ("  --noreadline  don't use readline\n");
   1992  1.1.1.5  mrg           printf ("  --help        this message\n");
   1993  1.1.1.5  mrg           printf ("Readline is only available when compiled in,\n");
   1994  1.1.1.5  mrg           printf ("and in that case it's the default on a tty.\n");
   1995  1.1.1.5  mrg           exit (0);
   1996  1.1.1.5  mrg         }
   1997  1.1.1.5  mrg       else
   1998  1.1.1.5  mrg         {
   1999  1.1.1.5  mrg           fprintf (stderr, "Unrecognised option: %s\n", argv[i]);
   2000  1.1.1.5  mrg           exit (1);
   2001      1.1  mrg         }
   2002      1.1  mrg     }
   2003  1.1.1.5  mrg 
   2004  1.1.1.5  mrg #if WITH_READLINE
   2005  1.1.1.5  mrg   calc_init_readline ();
   2006  1.1.1.5  mrg #else
   2007  1.1.1.5  mrg   if (calc_option_readline == 1)
   2008  1.1.1.5  mrg     {
   2009  1.1.1.5  mrg       fprintf (stderr, "Readline support not available\n");
   2010  1.1.1.5  mrg       exit (1);
   2011  1.1.1.5  mrg     }
   2012  1.1.1.5  mrg #endif
   2013  1.1.1.5  mrg 
   2014  1.1.1.5  mrg   for (i = 0; i < numberof (variable); i++)
   2015  1.1.1.5  mrg     mpz_init (variable[i]);
   2016  1.1.1.5  mrg 
   2017  1.1.1.5  mrg   for (i = 0; i < numberof (stack); i++)
   2018  1.1.1.5  mrg     mpz_init (stack[i]);
   2019  1.1.1.5  mrg 
   2020  1.1.1.5  mrg   return yyparse ();
   2021      1.1  mrg }
   2022