Home | History | Annotate | Line # | Download | only in calc
calc.c revision 1.1.1.1
      1  1.1  mrg /* A Bison parser, made by GNU Bison 2.4.3.  */
      2  1.1  mrg 
      3  1.1  mrg /* Skeleton implementation for Bison's Yacc-like parsers in C
      4  1.1  mrg 
      5  1.1  mrg       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
      6  1.1  mrg    2009, 2010 Free Software Foundation, Inc.
      7  1.1  mrg 
      8  1.1  mrg    This program is free software: you can redistribute it and/or modify
      9  1.1  mrg    it under the terms of the GNU General Public License as published by
     10  1.1  mrg    the Free Software Foundation, either version 3 of the License, or
     11  1.1  mrg    (at your option) any later version.
     12  1.1  mrg 
     13  1.1  mrg    This program is distributed in the hope that it will be useful,
     14  1.1  mrg    but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  1.1  mrg    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  1.1  mrg    GNU General Public License for more details.
     17  1.1  mrg 
     18  1.1  mrg    You should have received a copy of the GNU General Public License
     19  1.1  mrg    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     20  1.1  mrg 
     21  1.1  mrg /* As a special exception, you may create a larger work that contains
     22  1.1  mrg    part or all of the Bison parser skeleton and distribute that work
     23  1.1  mrg    under terms of your choice, so long as that work isn't itself a
     24  1.1  mrg    parser generator using the skeleton or a modified version thereof
     25  1.1  mrg    as a parser skeleton.  Alternatively, if you modify or redistribute
     26  1.1  mrg    the parser skeleton itself, you may (at your option) remove this
     27  1.1  mrg    special exception, which will cause the skeleton and the resulting
     28  1.1  mrg    Bison output files to be licensed under the GNU General Public
     29  1.1  mrg    License without this special exception.
     30  1.1  mrg 
     31  1.1  mrg    This special exception was added by the Free Software Foundation in
     32  1.1  mrg    version 2.2 of Bison.  */
     33  1.1  mrg 
     34  1.1  mrg /* C LALR(1) parser skeleton written by Richard Stallman, by
     35  1.1  mrg    simplifying the original so-called "semantic" parser.  */
     36  1.1  mrg 
     37  1.1  mrg /* All symbols defined below should begin with yy or YY, to avoid
     38  1.1  mrg    infringing on user name space.  This should be done even for local
     39  1.1  mrg    variables, as they might otherwise be expanded by user macros.
     40  1.1  mrg    There are some unavoidable exceptions within include files to
     41  1.1  mrg    define necessary library symbols; they are noted "INFRINGES ON
     42  1.1  mrg    USER NAME SPACE" below.  */
     43  1.1  mrg 
     44  1.1  mrg /* Identify Bison output.  */
     45  1.1  mrg #define YYBISON 1
     46  1.1  mrg 
     47  1.1  mrg /* Bison version.  */
     48  1.1  mrg #define YYBISON_VERSION "2.4.3"
     49  1.1  mrg 
     50  1.1  mrg /* Skeleton name.  */
     51  1.1  mrg #define YYSKELETON_NAME "yacc.c"
     52  1.1  mrg 
     53  1.1  mrg /* Pure parsers.  */
     54  1.1  mrg #define YYPURE 0
     55  1.1  mrg 
     56  1.1  mrg /* Push parsers.  */
     57  1.1  mrg #define YYPUSH 0
     58  1.1  mrg 
     59  1.1  mrg /* Pull parsers.  */
     60  1.1  mrg #define YYPULL 1
     61  1.1  mrg 
     62  1.1  mrg /* Using locations.  */
     63  1.1  mrg #define YYLSP_NEEDED 0
     64  1.1  mrg 
     65  1.1  mrg 
     66  1.1  mrg 
     67  1.1  mrg /* Copy the first part of user declarations.  */
     68  1.1  mrg 
     69  1.1  mrg /* Line 189 of yacc.c  */
     70  1.1  mrg #line 1 "calc.y"
     71  1.1  mrg 
     72  1.1  mrg /* A simple integer desk calculator using yacc and gmp.
     73  1.1  mrg 
     74  1.1  mrg Copyright 2000, 2001, 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  mrg this program.  If not, see http://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  mrg 
    211  1.1  mrg 
    212  1.1  mrg /* Line 189 of yacc.c  */
    213  1.1  mrg #line 214 "calc.c"
    214  1.1  mrg 
    215  1.1  mrg /* Enabling traces.  */
    216  1.1  mrg #ifndef YYDEBUG
    217  1.1  mrg # define YYDEBUG 0
    218  1.1  mrg #endif
    219  1.1  mrg 
    220  1.1  mrg /* Enabling verbose error messages.  */
    221  1.1  mrg #ifdef YYERROR_VERBOSE
    222  1.1  mrg # undef YYERROR_VERBOSE
    223  1.1  mrg # define YYERROR_VERBOSE 1
    224  1.1  mrg #else
    225  1.1  mrg # define YYERROR_VERBOSE 0
    226  1.1  mrg #endif
    227  1.1  mrg 
    228  1.1  mrg /* Enabling the token table.  */
    229  1.1  mrg #ifndef YYTOKEN_TABLE
    230  1.1  mrg # define YYTOKEN_TABLE 0
    231  1.1  mrg #endif
    232  1.1  mrg 
    233  1.1  mrg 
    234  1.1  mrg /* Tokens.  */
    235  1.1  mrg #ifndef YYTOKENTYPE
    236  1.1  mrg # define YYTOKENTYPE
    237  1.1  mrg    /* Put the tokens into the symbol table, so that GDB and other debuggers
    238  1.1  mrg       know about them.  */
    239  1.1  mrg    enum yytokentype {
    240  1.1  mrg      EOS = 258,
    241  1.1  mrg      BAD = 259,
    242  1.1  mrg      HELP = 260,
    243  1.1  mrg      HEX = 261,
    244  1.1  mrg      DECIMAL = 262,
    245  1.1  mrg      QUIT = 263,
    246  1.1  mrg      ABS = 264,
    247  1.1  mrg      BIN = 265,
    248  1.1  mrg      FIB = 266,
    249  1.1  mrg      GCD = 267,
    250  1.1  mrg      KRON = 268,
    251  1.1  mrg      LCM = 269,
    252  1.1  mrg      LUCNUM = 270,
    253  1.1  mrg      NEXTPRIME = 271,
    254  1.1  mrg      POWM = 272,
    255  1.1  mrg      ROOT = 273,
    256  1.1  mrg      SQRT = 274,
    257  1.1  mrg      NUMBER = 275,
    258  1.1  mrg      VARIABLE = 276,
    259  1.1  mrg      LOR = 277,
    260  1.1  mrg      LAND = 278,
    261  1.1  mrg      GE = 279,
    262  1.1  mrg      LE = 280,
    263  1.1  mrg      NE = 281,
    264  1.1  mrg      EQ = 282,
    265  1.1  mrg      RSHIFT = 283,
    266  1.1  mrg      LSHIFT = 284,
    267  1.1  mrg      UMINUS = 285
    268  1.1  mrg    };
    269  1.1  mrg #endif
    270  1.1  mrg /* Tokens.  */
    271  1.1  mrg #define EOS 258
    272  1.1  mrg #define BAD 259
    273  1.1  mrg #define HELP 260
    274  1.1  mrg #define HEX 261
    275  1.1  mrg #define DECIMAL 262
    276  1.1  mrg #define QUIT 263
    277  1.1  mrg #define ABS 264
    278  1.1  mrg #define BIN 265
    279  1.1  mrg #define FIB 266
    280  1.1  mrg #define GCD 267
    281  1.1  mrg #define KRON 268
    282  1.1  mrg #define LCM 269
    283  1.1  mrg #define LUCNUM 270
    284  1.1  mrg #define NEXTPRIME 271
    285  1.1  mrg #define POWM 272
    286  1.1  mrg #define ROOT 273
    287  1.1  mrg #define SQRT 274
    288  1.1  mrg #define NUMBER 275
    289  1.1  mrg #define VARIABLE 276
    290  1.1  mrg #define LOR 277
    291  1.1  mrg #define LAND 278
    292  1.1  mrg #define GE 279
    293  1.1  mrg #define LE 280
    294  1.1  mrg #define NE 281
    295  1.1  mrg #define EQ 282
    296  1.1  mrg #define RSHIFT 283
    297  1.1  mrg #define LSHIFT 284
    298  1.1  mrg #define UMINUS 285
    299  1.1  mrg 
    300  1.1  mrg 
    301  1.1  mrg 
    302  1.1  mrg 
    303  1.1  mrg #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    304  1.1  mrg typedef union YYSTYPE
    305  1.1  mrg {
    306  1.1  mrg 
    307  1.1  mrg /* Line 214 of yacc.c  */
    308  1.1  mrg #line 142 "calc.y"
    309  1.1  mrg 
    310  1.1  mrg   char  *str;
    311  1.1  mrg   int   var;
    312  1.1  mrg 
    313  1.1  mrg 
    314  1.1  mrg 
    315  1.1  mrg /* Line 214 of yacc.c  */
    316  1.1  mrg #line 317 "calc.c"
    317  1.1  mrg } YYSTYPE;
    318  1.1  mrg # define YYSTYPE_IS_TRIVIAL 1
    319  1.1  mrg # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    320  1.1  mrg # define YYSTYPE_IS_DECLARED 1
    321  1.1  mrg #endif
    322  1.1  mrg 
    323  1.1  mrg 
    324  1.1  mrg /* Copy the second part of user declarations.  */
    325  1.1  mrg 
    326  1.1  mrg 
    327  1.1  mrg /* Line 264 of yacc.c  */
    328  1.1  mrg #line 329 "calc.c"
    329  1.1  mrg 
    330  1.1  mrg #ifdef short
    331  1.1  mrg # undef short
    332  1.1  mrg #endif
    333  1.1  mrg 
    334  1.1  mrg #ifdef YYTYPE_UINT8
    335  1.1  mrg typedef YYTYPE_UINT8 yytype_uint8;
    336  1.1  mrg #else
    337  1.1  mrg typedef unsigned char yytype_uint8;
    338  1.1  mrg #endif
    339  1.1  mrg 
    340  1.1  mrg #ifdef YYTYPE_INT8
    341  1.1  mrg typedef YYTYPE_INT8 yytype_int8;
    342  1.1  mrg #elif (defined __STDC__ || defined __C99__FUNC__ \
    343  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    344  1.1  mrg typedef signed char yytype_int8;
    345  1.1  mrg #else
    346  1.1  mrg typedef short int yytype_int8;
    347  1.1  mrg #endif
    348  1.1  mrg 
    349  1.1  mrg #ifdef YYTYPE_UINT16
    350  1.1  mrg typedef YYTYPE_UINT16 yytype_uint16;
    351  1.1  mrg #else
    352  1.1  mrg typedef unsigned short int yytype_uint16;
    353  1.1  mrg #endif
    354  1.1  mrg 
    355  1.1  mrg #ifdef YYTYPE_INT16
    356  1.1  mrg typedef YYTYPE_INT16 yytype_int16;
    357  1.1  mrg #else
    358  1.1  mrg typedef short int yytype_int16;
    359  1.1  mrg #endif
    360  1.1  mrg 
    361  1.1  mrg #ifndef YYSIZE_T
    362  1.1  mrg # ifdef __SIZE_TYPE__
    363  1.1  mrg #  define YYSIZE_T __SIZE_TYPE__
    364  1.1  mrg # elif defined size_t
    365  1.1  mrg #  define YYSIZE_T size_t
    366  1.1  mrg # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
    367  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    368  1.1  mrg #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    369  1.1  mrg #  define YYSIZE_T size_t
    370  1.1  mrg # else
    371  1.1  mrg #  define YYSIZE_T unsigned int
    372  1.1  mrg # endif
    373  1.1  mrg #endif
    374  1.1  mrg 
    375  1.1  mrg #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
    376  1.1  mrg 
    377  1.1  mrg #ifndef YY_
    378  1.1  mrg # if defined YYENABLE_NLS && YYENABLE_NLS
    379  1.1  mrg #  if ENABLE_NLS
    380  1.1  mrg #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    381  1.1  mrg #   define YY_(msgid) dgettext ("bison-runtime", msgid)
    382  1.1  mrg #  endif
    383  1.1  mrg # endif
    384  1.1  mrg # ifndef YY_
    385  1.1  mrg #  define YY_(msgid) msgid
    386  1.1  mrg # endif
    387  1.1  mrg #endif
    388  1.1  mrg 
    389  1.1  mrg /* Suppress unused-variable warnings by "using" E.  */
    390  1.1  mrg #if ! defined lint || defined __GNUC__
    391  1.1  mrg # define YYUSE(e) ((void) (e))
    392  1.1  mrg #else
    393  1.1  mrg # define YYUSE(e) /* empty */
    394  1.1  mrg #endif
    395  1.1  mrg 
    396  1.1  mrg /* Identity function, used to suppress warnings about constant conditions.  */
    397  1.1  mrg #ifndef lint
    398  1.1  mrg # define YYID(n) (n)
    399  1.1  mrg #else
    400  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
    401  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    402  1.1  mrg static int
    403  1.1  mrg YYID (int yyi)
    404  1.1  mrg #else
    405  1.1  mrg static int
    406  1.1  mrg YYID (yyi)
    407  1.1  mrg     int yyi;
    408  1.1  mrg #endif
    409  1.1  mrg {
    410  1.1  mrg   return yyi;
    411  1.1  mrg }
    412  1.1  mrg #endif
    413  1.1  mrg 
    414  1.1  mrg #if ! defined yyoverflow || YYERROR_VERBOSE
    415  1.1  mrg 
    416  1.1  mrg /* The parser invokes alloca or malloc; define the necessary symbols.  */
    417  1.1  mrg 
    418  1.1  mrg # ifdef YYSTACK_USE_ALLOCA
    419  1.1  mrg #  if YYSTACK_USE_ALLOCA
    420  1.1  mrg #   ifdef __GNUC__
    421  1.1  mrg #    define YYSTACK_ALLOC __builtin_alloca
    422  1.1  mrg #   elif defined __BUILTIN_VA_ARG_INCR
    423  1.1  mrg #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    424  1.1  mrg #   elif defined _AIX
    425  1.1  mrg #    define YYSTACK_ALLOC __alloca
    426  1.1  mrg #   elif defined _MSC_VER
    427  1.1  mrg #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    428  1.1  mrg #    define alloca _alloca
    429  1.1  mrg #   else
    430  1.1  mrg #    define YYSTACK_ALLOC alloca
    431  1.1  mrg #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
    432  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    433  1.1  mrg #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    434  1.1  mrg #     ifndef _STDLIB_H
    435  1.1  mrg #      define _STDLIB_H 1
    436  1.1  mrg #     endif
    437  1.1  mrg #    endif
    438  1.1  mrg #   endif
    439  1.1  mrg #  endif
    440  1.1  mrg # endif
    441  1.1  mrg 
    442  1.1  mrg # ifdef YYSTACK_ALLOC
    443  1.1  mrg    /* Pacify GCC's `empty if-body' warning.  */
    444  1.1  mrg #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
    445  1.1  mrg #  ifndef YYSTACK_ALLOC_MAXIMUM
    446  1.1  mrg     /* The OS might guarantee only one guard page at the bottom of the stack,
    447  1.1  mrg        and a page size can be as small as 4096 bytes.  So we cannot safely
    448  1.1  mrg        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    449  1.1  mrg        to allow for a few compiler-allocated temporary stack slots.  */
    450  1.1  mrg #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    451  1.1  mrg #  endif
    452  1.1  mrg # else
    453  1.1  mrg #  define YYSTACK_ALLOC YYMALLOC
    454  1.1  mrg #  define YYSTACK_FREE YYFREE
    455  1.1  mrg #  ifndef YYSTACK_ALLOC_MAXIMUM
    456  1.1  mrg #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    457  1.1  mrg #  endif
    458  1.1  mrg #  if (defined __cplusplus && ! defined _STDLIB_H \
    459  1.1  mrg        && ! ((defined YYMALLOC || defined malloc) \
    460  1.1  mrg 	     && (defined YYFREE || defined free)))
    461  1.1  mrg #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    462  1.1  mrg #   ifndef _STDLIB_H
    463  1.1  mrg #    define _STDLIB_H 1
    464  1.1  mrg #   endif
    465  1.1  mrg #  endif
    466  1.1  mrg #  ifndef YYMALLOC
    467  1.1  mrg #   define YYMALLOC malloc
    468  1.1  mrg #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
    469  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    470  1.1  mrg void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    471  1.1  mrg #   endif
    472  1.1  mrg #  endif
    473  1.1  mrg #  ifndef YYFREE
    474  1.1  mrg #   define YYFREE free
    475  1.1  mrg #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
    476  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
    477  1.1  mrg void free (void *); /* INFRINGES ON USER NAME SPACE */
    478  1.1  mrg #   endif
    479  1.1  mrg #  endif
    480  1.1  mrg # endif
    481  1.1  mrg #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
    482  1.1  mrg 
    483  1.1  mrg 
    484  1.1  mrg #if (! defined yyoverflow \
    485  1.1  mrg      && (! defined __cplusplus \
    486  1.1  mrg 	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    487  1.1  mrg 
    488  1.1  mrg /* A type that is properly aligned for any stack member.  */
    489  1.1  mrg union yyalloc
    490  1.1  mrg {
    491  1.1  mrg   yytype_int16 yyss_alloc;
    492  1.1  mrg   YYSTYPE yyvs_alloc;
    493  1.1  mrg };
    494  1.1  mrg 
    495  1.1  mrg /* The size of the maximum gap between one aligned stack and the next.  */
    496  1.1  mrg # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
    497  1.1  mrg 
    498  1.1  mrg /* The size of an array large to enough to hold all stacks, each with
    499  1.1  mrg    N elements.  */
    500  1.1  mrg # define YYSTACK_BYTES(N) \
    501  1.1  mrg      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
    502  1.1  mrg       + YYSTACK_GAP_MAXIMUM)
    503  1.1  mrg 
    504  1.1  mrg /* Copy COUNT objects from FROM to TO.  The source and destination do
    505  1.1  mrg    not overlap.  */
    506  1.1  mrg # ifndef YYCOPY
    507  1.1  mrg #  if defined __GNUC__ && 1 < __GNUC__
    508  1.1  mrg #   define YYCOPY(To, From, Count) \
    509  1.1  mrg       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
    510  1.1  mrg #  else
    511  1.1  mrg #   define YYCOPY(To, From, Count)		\
    512  1.1  mrg       do					\
    513  1.1  mrg 	{					\
    514  1.1  mrg 	  YYSIZE_T yyi;				\
    515  1.1  mrg 	  for (yyi = 0; yyi < (Count); yyi++)	\
    516  1.1  mrg 	    (To)[yyi] = (From)[yyi];		\
    517  1.1  mrg 	}					\
    518  1.1  mrg       while (YYID (0))
    519  1.1  mrg #  endif
    520  1.1  mrg # endif
    521  1.1  mrg 
    522  1.1  mrg /* Relocate STACK from its old location to the new one.  The
    523  1.1  mrg    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    524  1.1  mrg    elements in the stack, and YYPTR gives the new location of the
    525  1.1  mrg    stack.  Advance YYPTR to a properly aligned location for the next
    526  1.1  mrg    stack.  */
    527  1.1  mrg # define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
    528  1.1  mrg     do									\
    529  1.1  mrg       {									\
    530  1.1  mrg 	YYSIZE_T yynewbytes;						\
    531  1.1  mrg 	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
    532  1.1  mrg 	Stack = &yyptr->Stack_alloc;					\
    533  1.1  mrg 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    534  1.1  mrg 	yyptr += yynewbytes / sizeof (*yyptr);				\
    535  1.1  mrg       }									\
    536  1.1  mrg     while (YYID (0))
    537  1.1  mrg 
    538  1.1  mrg #endif
    539  1.1  mrg 
    540  1.1  mrg /* YYFINAL -- State number of the termination state.  */
    541  1.1  mrg #define YYFINAL  41
    542  1.1  mrg /* YYLAST -- Last index in YYTABLE.  */
    543  1.1  mrg #define YYLAST   552
    544  1.1  mrg 
    545  1.1  mrg /* YYNTOKENS -- Number of terminals.  */
    546  1.1  mrg #define YYNTOKENS  44
    547  1.1  mrg /* YYNNTS -- Number of nonterminals.  */
    548  1.1  mrg #define YYNNTS  7
    549  1.1  mrg /* YYNRULES -- Number of rules.  */
    550  1.1  mrg #define YYNRULES  49
    551  1.1  mrg /* YYNRULES -- Number of states.  */
    552  1.1  mrg #define YYNSTATES  118
    553  1.1  mrg 
    554  1.1  mrg /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    555  1.1  mrg #define YYUNDEFTOK  2
    556  1.1  mrg #define YYMAXUTOK   285
    557  1.1  mrg 
    558  1.1  mrg #define YYTRANSLATE(YYX)						\
    559  1.1  mrg   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    560  1.1  mrg 
    561  1.1  mrg /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
    562  1.1  mrg static const yytype_uint8 yytranslate[] =
    563  1.1  mrg {
    564  1.1  mrg        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    565  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    566  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    567  1.1  mrg        2,     2,     2,    39,     2,     2,     2,    36,     2,     2,
    568  1.1  mrg       41,    42,    34,    32,    43,    33,     2,    35,     2,     2,
    569  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    570  1.1  mrg       24,    40,    25,     2,     2,     2,     2,     2,     2,     2,
    571  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    572  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    573  1.1  mrg        2,     2,     2,     2,    38,     2,     2,     2,     2,     2,
    574  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    575  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    576  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    577  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    578  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    579  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    580  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    581  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    582  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    583  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    584  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    585  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    586  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    587  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    588  1.1  mrg        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    589  1.1  mrg        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
    590  1.1  mrg        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    591  1.1  mrg       15,    16,    17,    18,    19,    20,    21,    22,    23,    26,
    592  1.1  mrg       27,    28,    29,    30,    31,    37
    593  1.1  mrg };
    594  1.1  mrg 
    595  1.1  mrg #if YYDEBUG
    596  1.1  mrg /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    597  1.1  mrg    YYRHS.  */
    598  1.1  mrg static const yytype_uint8 yyprhs[] =
    599  1.1  mrg {
    600  1.1  mrg        0,     0,     3,     5,     8,    11,    15,    18,    19,    21,
    601  1.1  mrg       25,    27,    29,    31,    33,    37,    41,    45,    49,    53,
    602  1.1  mrg       57,    61,    65,    69,    72,    75,    79,    83,    87,    91,
    603  1.1  mrg       95,    99,   103,   107,   112,   119,   124,   129,   136,   141,
    604  1.1  mrg      146,   151,   160,   167,   172,   174,   176,   178,   182,   184
    605  1.1  mrg };
    606  1.1  mrg 
    607  1.1  mrg /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
    608  1.1  mrg static const yytype_int8 yyrhs[] =
    609  1.1  mrg {
    610  1.1  mrg       45,     0,    -1,    47,    -1,    46,    47,    -1,    47,     3,
    611  1.1  mrg       -1,    46,    47,     3,    -1,     1,     3,    -1,    -1,    48,
    612  1.1  mrg       -1,    21,    40,    48,    -1,     5,    -1,     6,    -1,     7,
    613  1.1  mrg       -1,     8,    -1,    41,    48,    42,    -1,    48,    32,    48,
    614  1.1  mrg       -1,    48,    33,    48,    -1,    48,    34,    48,    -1,    48,
    615  1.1  mrg       35,    48,    -1,    48,    36,    48,    -1,    48,    38,    48,
    616  1.1  mrg       -1,    48,    31,    48,    -1,    48,    30,    48,    -1,    48,
    617  1.1  mrg       39,    -1,    33,    48,    -1,    48,    24,    48,    -1,    48,
    618  1.1  mrg       27,    48,    -1,    48,    29,    48,    -1,    48,    28,    48,
    619  1.1  mrg       -1,    48,    26,    48,    -1,    48,    25,    48,    -1,    48,
    620  1.1  mrg       23,    48,    -1,    48,    22,    48,    -1,     9,    41,    48,
    621  1.1  mrg       42,    -1,    10,    41,    48,    43,    48,    42,    -1,    11,
    622  1.1  mrg       41,    48,    42,    -1,    12,    41,    49,    42,    -1,    13,
    623  1.1  mrg       41,    48,    43,    48,    42,    -1,    14,    41,    50,    42,
    624  1.1  mrg       -1,    15,    41,    48,    42,    -1,    16,    41,    48,    42,
    625  1.1  mrg       -1,    17,    41,    48,    43,    48,    43,    48,    42,    -1,
    626  1.1  mrg       18,    41,    48,    43,    48,    42,    -1,    19,    41,    48,
    627  1.1  mrg       42,    -1,    21,    -1,    20,    -1,    48,    -1,    49,    43,
    628  1.1  mrg       48,    -1,    48,    -1,    50,    43,    48,    -1
    629  1.1  mrg };
    630  1.1  mrg 
    631  1.1  mrg /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
    632  1.1  mrg static const yytype_uint16 yyrline[] =
    633  1.1  mrg {
    634  1.1  mrg        0,   167,   167,   168,   171,   172,   173,   175,   177,   182,
    635  1.1  mrg      188,   189,   190,   191,   197,   198,   199,   200,   201,   202,
    636  1.1  mrg      203,   205,   207,   209,   211,   213,   214,   215,   216,   217,
    637  1.1  mrg      218,   220,   221,   223,   224,   226,   228,   229,   231,   232,
    638  1.1  mrg      234,   235,   236,   238,   240,   246,   257,   258,   261,   262
    639  1.1  mrg };
    640  1.1  mrg #endif
    641  1.1  mrg 
    642  1.1  mrg #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
    643  1.1  mrg /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    644  1.1  mrg    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    645  1.1  mrg static const char *const yytname[] =
    646  1.1  mrg {
    647  1.1  mrg   "$end", "error", "$undefined", "EOS", "BAD", "HELP", "HEX", "DECIMAL",
    648  1.1  mrg   "QUIT", "ABS", "BIN", "FIB", "GCD", "KRON", "LCM", "LUCNUM", "NEXTPRIME",
    649  1.1  mrg   "POWM", "ROOT", "SQRT", "NUMBER", "VARIABLE", "LOR", "LAND", "'<'",
    650  1.1  mrg   "'>'", "GE", "LE", "NE", "EQ", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'",
    651  1.1  mrg   "'/'", "'%'", "UMINUS", "'^'", "'!'", "'='", "'('", "')'", "','",
    652  1.1  mrg   "$accept", "top", "statements", "statement", "e", "gcdlist", "lcmlist", 0
    653  1.1  mrg };
    654  1.1  mrg #endif
    655  1.1  mrg 
    656  1.1  mrg # ifdef YYPRINT
    657  1.1  mrg /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    658  1.1  mrg    token YYLEX-NUM.  */
    659  1.1  mrg static const yytype_uint16 yytoknum[] =
    660  1.1  mrg {
    661  1.1  mrg        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
    662  1.1  mrg      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
    663  1.1  mrg      275,   276,   277,   278,    60,    62,   279,   280,   281,   282,
    664  1.1  mrg      283,   284,    43,    45,    42,    47,    37,   285,    94,    33,
    665  1.1  mrg       61,    40,    41,    44
    666  1.1  mrg };
    667  1.1  mrg # endif
    668  1.1  mrg 
    669  1.1  mrg /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    670  1.1  mrg static const yytype_uint8 yyr1[] =
    671  1.1  mrg {
    672  1.1  mrg        0,    44,    45,    45,    46,    46,    46,    47,    47,    47,
    673  1.1  mrg       47,    47,    47,    47,    48,    48,    48,    48,    48,    48,
    674  1.1  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
    675  1.1  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
    676  1.1  mrg       48,    48,    48,    48,    48,    48,    49,    49,    50,    50
    677  1.1  mrg };
    678  1.1  mrg 
    679  1.1  mrg /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
    680  1.1  mrg static const yytype_uint8 yyr2[] =
    681  1.1  mrg {
    682  1.1  mrg        0,     2,     1,     2,     2,     3,     2,     0,     1,     3,
    683  1.1  mrg        1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
    684  1.1  mrg        3,     3,     3,     2,     2,     3,     3,     3,     3,     3,
    685  1.1  mrg        3,     3,     3,     4,     6,     4,     4,     6,     4,     4,
    686  1.1  mrg        4,     8,     6,     4,     1,     1,     1,     3,     1,     3
    687  1.1  mrg };
    688  1.1  mrg 
    689  1.1  mrg /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
    690  1.1  mrg    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    691  1.1  mrg    means the default is an error.  */
    692  1.1  mrg static const yytype_uint8 yydefact[] =
    693  1.1  mrg {
    694  1.1  mrg        0,     0,    10,    11,    12,    13,     0,     0,     0,     0,
    695  1.1  mrg        0,     0,     0,     0,     0,     0,     0,    45,    44,     0,
    696  1.1  mrg        0,     0,     7,     2,     8,     6,     0,     0,     0,     0,
    697  1.1  mrg        0,     0,     0,     0,     0,     0,     0,     0,    44,    24,
    698  1.1  mrg        0,     1,     3,     4,     0,     0,     0,     0,     0,     0,
    699  1.1  mrg        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    700  1.1  mrg       23,     0,     0,     0,    46,     0,     0,    48,     0,     0,
    701  1.1  mrg        0,     0,     0,     0,     9,    14,     5,    32,    31,    25,
    702  1.1  mrg       30,    29,    26,    28,    27,    22,    21,    15,    16,    17,
    703  1.1  mrg       18,    19,    20,    33,     0,    35,    36,     0,     0,    38,
    704  1.1  mrg        0,    39,    40,     0,     0,    43,     0,    47,     0,    49,
    705  1.1  mrg        0,     0,    34,    37,     0,    42,     0,    41
    706  1.1  mrg };
    707  1.1  mrg 
    708  1.1  mrg /* YYDEFGOTO[NTERM-NUM].  */
    709  1.1  mrg static const yytype_int8 yydefgoto[] =
    710  1.1  mrg {
    711  1.1  mrg       -1,    21,    22,    23,    24,    65,    68
    712  1.1  mrg };
    713  1.1  mrg 
    714  1.1  mrg /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    715  1.1  mrg    STATE-NUM.  */
    716  1.1  mrg #define YYPACT_NINF -39
    717  1.1  mrg static const yytype_int16 yypact[] =
    718  1.1  mrg {
    719  1.1  mrg       41,     3,   -39,   -39,   -39,   -39,     2,     4,    27,    32,
    720  1.1  mrg       35,    36,    39,    42,    45,    46,    47,   -39,   -18,   124,
    721  1.1  mrg      124,    89,    91,    87,   464,   -39,   124,   124,   124,   124,
    722  1.1  mrg      124,   124,   124,   124,   124,   124,   124,   124,   -39,   -36,
    723  1.1  mrg      254,   -39,    88,   -39,   124,   124,   124,   124,   124,   124,
    724  1.1  mrg      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
    725  1.1  mrg      -39,   275,   144,   296,   464,   -38,   166,   464,    29,   317,
    726  1.1  mrg      338,   188,   210,   359,   464,   -39,   -39,   481,   497,   513,
    727  1.1  mrg      513,   513,   513,   513,   513,    31,    31,   -15,   -15,   -36,
    728  1.1  mrg      -36,   -36,   -36,   -39,   124,   -39,   -39,   124,   124,   -39,
    729  1.1  mrg      124,   -39,   -39,   124,   124,   -39,   380,   464,   401,   464,
    730  1.1  mrg      232,   422,   -39,   -39,   124,   -39,   443,   -39
    731  1.1  mrg };
    732  1.1  mrg 
    733  1.1  mrg /* YYPGOTO[NTERM-NUM].  */
    734  1.1  mrg static const yytype_int8 yypgoto[] =
    735  1.1  mrg {
    736  1.1  mrg      -39,   -39,   -39,    70,   -19,   -39,   -39
    737  1.1  mrg };
    738  1.1  mrg 
    739  1.1  mrg /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    740  1.1  mrg    positive, shift that token.  If negative, reduce the rule which
    741  1.1  mrg    number is the opposite.  If zero, do what YYDEFACT says.
    742  1.1  mrg    If YYTABLE_NINF, syntax error.  */
    743  1.1  mrg #define YYTABLE_NINF -8
    744  1.1  mrg static const yytype_int8 yytable[] =
    745  1.1  mrg {
    746  1.1  mrg       39,    40,    59,    60,    96,    97,    25,    61,    62,    63,
    747  1.1  mrg       64,    66,    67,    69,    70,    71,    72,    73,    74,    56,
    748  1.1  mrg       57,    58,    37,    59,    60,    77,    78,    79,    80,    81,
    749  1.1  mrg       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
    750  1.1  mrg       92,    -7,     1,    26,    -7,    27,     2,     3,     4,     5,
    751  1.1  mrg        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    752  1.1  mrg       16,    17,    18,    54,    55,    56,    57,    58,    28,    59,
    753  1.1  mrg       60,    99,   100,    29,    19,   106,    30,    31,   107,   108,
    754  1.1  mrg       32,   109,    20,    33,   110,   111,    34,    35,    36,    41,
    755  1.1  mrg       43,    76,    42,     0,     0,   116,     2,     3,     4,     5,
    756  1.1  mrg        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    757  1.1  mrg       16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
    758  1.1  mrg        0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
    759  1.1  mrg        0,     0,    20,     6,     7,     8,     9,    10,    11,    12,
    760  1.1  mrg       13,    14,    15,    16,    17,    38,     0,     0,     0,     0,
    761  1.1  mrg        0,     0,     0,     0,     0,     0,     0,    19,     0,     0,
    762  1.1  mrg        0,     0,     0,     0,     0,    20,    44,    45,    46,    47,
    763  1.1  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    764  1.1  mrg       58,     0,    59,    60,     0,     0,     0,    94,    44,    45,
    765  1.1  mrg       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    766  1.1  mrg       56,    57,    58,     0,    59,    60,     0,     0,     0,    98,
    767  1.1  mrg       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    768  1.1  mrg       54,    55,    56,    57,    58,     0,    59,    60,     0,     0,
    769  1.1  mrg        0,   103,    44,    45,    46,    47,    48,    49,    50,    51,
    770  1.1  mrg       52,    53,    54,    55,    56,    57,    58,     0,    59,    60,
    771  1.1  mrg        0,     0,     0,   104,    44,    45,    46,    47,    48,    49,
    772  1.1  mrg       50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
    773  1.1  mrg       59,    60,     0,     0,     0,   114,    44,    45,    46,    47,
    774  1.1  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    775  1.1  mrg       58,     0,    59,    60,     0,     0,    75,    44,    45,    46,
    776  1.1  mrg       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
    777  1.1  mrg       57,    58,     0,    59,    60,     0,     0,    93,    44,    45,
    778  1.1  mrg       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    779  1.1  mrg       56,    57,    58,     0,    59,    60,     0,     0,    95,    44,
    780  1.1  mrg       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    781  1.1  mrg       55,    56,    57,    58,     0,    59,    60,     0,     0,   101,
    782  1.1  mrg       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    783  1.1  mrg       54,    55,    56,    57,    58,     0,    59,    60,     0,     0,
    784  1.1  mrg      102,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    785  1.1  mrg       53,    54,    55,    56,    57,    58,     0,    59,    60,     0,
    786  1.1  mrg        0,   105,    44,    45,    46,    47,    48,    49,    50,    51,
    787  1.1  mrg       52,    53,    54,    55,    56,    57,    58,     0,    59,    60,
    788  1.1  mrg        0,     0,   112,    44,    45,    46,    47,    48,    49,    50,
    789  1.1  mrg       51,    52,    53,    54,    55,    56,    57,    58,     0,    59,
    790  1.1  mrg       60,     0,     0,   113,    44,    45,    46,    47,    48,    49,
    791  1.1  mrg       50,    51,    52,    53,    54,    55,    56,    57,    58,     0,
    792  1.1  mrg       59,    60,     0,     0,   115,    44,    45,    46,    47,    48,
    793  1.1  mrg       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
    794  1.1  mrg        0,    59,    60,     0,     0,   117,    44,    45,    46,    47,
    795  1.1  mrg       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
    796  1.1  mrg       58,     0,    59,    60,    45,    46,    47,    48,    49,    50,
    797  1.1  mrg       51,    52,    53,    54,    55,    56,    57,    58,     0,    59,
    798  1.1  mrg       60,    46,    47,    48,    49,    50,    51,    52,    53,    54,
    799  1.1  mrg       55,    56,    57,    58,     0,    59,    60,    -8,    -8,    -8,
    800  1.1  mrg       -8,    -8,    -8,    52,    53,    54,    55,    56,    57,    58,
    801  1.1  mrg        0,    59,    60
    802  1.1  mrg };
    803  1.1  mrg 
    804  1.1  mrg static const yytype_int8 yycheck[] =
    805  1.1  mrg {
    806  1.1  mrg       19,    20,    38,    39,    42,    43,     3,    26,    27,    28,
    807  1.1  mrg       29,    30,    31,    32,    33,    34,    35,    36,    37,    34,
    808  1.1  mrg       35,    36,    40,    38,    39,    44,    45,    46,    47,    48,
    809  1.1  mrg       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
    810  1.1  mrg       59,     0,     1,    41,     3,    41,     5,     6,     7,     8,
    811  1.1  mrg        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    812  1.1  mrg       19,    20,    21,    32,    33,    34,    35,    36,    41,    38,
    813  1.1  mrg       39,    42,    43,    41,    33,    94,    41,    41,    97,    98,
    814  1.1  mrg       41,   100,    41,    41,   103,   104,    41,    41,    41,     0,
    815  1.1  mrg        3,     3,    22,    -1,    -1,   114,     5,     6,     7,     8,
    816  1.1  mrg        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    817  1.1  mrg       19,    20,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    818  1.1  mrg       -1,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    -1,
    819  1.1  mrg       -1,    -1,    41,     9,    10,    11,    12,    13,    14,    15,
    820  1.1  mrg       16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
    821  1.1  mrg       -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,
    822  1.1  mrg       -1,    -1,    -1,    -1,    -1,    41,    22,    23,    24,    25,
    823  1.1  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    824  1.1  mrg       36,    -1,    38,    39,    -1,    -1,    -1,    43,    22,    23,
    825  1.1  mrg       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    826  1.1  mrg       34,    35,    36,    -1,    38,    39,    -1,    -1,    -1,    43,
    827  1.1  mrg       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    828  1.1  mrg       32,    33,    34,    35,    36,    -1,    38,    39,    -1,    -1,
    829  1.1  mrg       -1,    43,    22,    23,    24,    25,    26,    27,    28,    29,
    830  1.1  mrg       30,    31,    32,    33,    34,    35,    36,    -1,    38,    39,
    831  1.1  mrg       -1,    -1,    -1,    43,    22,    23,    24,    25,    26,    27,
    832  1.1  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    -1,
    833  1.1  mrg       38,    39,    -1,    -1,    -1,    43,    22,    23,    24,    25,
    834  1.1  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    835  1.1  mrg       36,    -1,    38,    39,    -1,    -1,    42,    22,    23,    24,
    836  1.1  mrg       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    837  1.1  mrg       35,    36,    -1,    38,    39,    -1,    -1,    42,    22,    23,
    838  1.1  mrg       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    839  1.1  mrg       34,    35,    36,    -1,    38,    39,    -1,    -1,    42,    22,
    840  1.1  mrg       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    841  1.1  mrg       33,    34,    35,    36,    -1,    38,    39,    -1,    -1,    42,
    842  1.1  mrg       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    843  1.1  mrg       32,    33,    34,    35,    36,    -1,    38,    39,    -1,    -1,
    844  1.1  mrg       42,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    845  1.1  mrg       31,    32,    33,    34,    35,    36,    -1,    38,    39,    -1,
    846  1.1  mrg       -1,    42,    22,    23,    24,    25,    26,    27,    28,    29,
    847  1.1  mrg       30,    31,    32,    33,    34,    35,    36,    -1,    38,    39,
    848  1.1  mrg       -1,    -1,    42,    22,    23,    24,    25,    26,    27,    28,
    849  1.1  mrg       29,    30,    31,    32,    33,    34,    35,    36,    -1,    38,
    850  1.1  mrg       39,    -1,    -1,    42,    22,    23,    24,    25,    26,    27,
    851  1.1  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    -1,
    852  1.1  mrg       38,    39,    -1,    -1,    42,    22,    23,    24,    25,    26,
    853  1.1  mrg       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    854  1.1  mrg       -1,    38,    39,    -1,    -1,    42,    22,    23,    24,    25,
    855  1.1  mrg       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    856  1.1  mrg       36,    -1,    38,    39,    23,    24,    25,    26,    27,    28,
    857  1.1  mrg       29,    30,    31,    32,    33,    34,    35,    36,    -1,    38,
    858  1.1  mrg       39,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    859  1.1  mrg       33,    34,    35,    36,    -1,    38,    39,    24,    25,    26,
    860  1.1  mrg       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    861  1.1  mrg       -1,    38,    39
    862  1.1  mrg };
    863  1.1  mrg 
    864  1.1  mrg /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    865  1.1  mrg    symbol of state STATE-NUM.  */
    866  1.1  mrg static const yytype_uint8 yystos[] =
    867  1.1  mrg {
    868  1.1  mrg        0,     1,     5,     6,     7,     8,     9,    10,    11,    12,
    869  1.1  mrg       13,    14,    15,    16,    17,    18,    19,    20,    21,    33,
    870  1.1  mrg       41,    45,    46,    47,    48,     3,    41,    41,    41,    41,
    871  1.1  mrg       41,    41,    41,    41,    41,    41,    41,    40,    21,    48,
    872  1.1  mrg       48,     0,    47,     3,    22,    23,    24,    25,    26,    27,
    873  1.1  mrg       28,    29,    30,    31,    32,    33,    34,    35,    36,    38,
    874  1.1  mrg       39,    48,    48,    48,    48,    49,    48,    48,    50,    48,
    875  1.1  mrg       48,    48,    48,    48,    48,    42,     3,    48,    48,    48,
    876  1.1  mrg       48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
    877  1.1  mrg       48,    48,    48,    42,    43,    42,    42,    43,    43,    42,
    878  1.1  mrg       43,    42,    42,    43,    43,    42,    48,    48,    48,    48,
    879  1.1  mrg       48,    48,    42,    42,    43,    42,    48,    42
    880  1.1  mrg };
    881  1.1  mrg 
    882  1.1  mrg #define yyerrok		(yyerrstatus = 0)
    883  1.1  mrg #define yyclearin	(yychar = YYEMPTY)
    884  1.1  mrg #define YYEMPTY		(-2)
    885  1.1  mrg #define YYEOF		0
    886  1.1  mrg 
    887  1.1  mrg #define YYACCEPT	goto yyacceptlab
    888  1.1  mrg #define YYABORT		goto yyabortlab
    889  1.1  mrg #define YYERROR		goto yyerrorlab
    890  1.1  mrg 
    891  1.1  mrg 
    892  1.1  mrg /* Like YYERROR except do call yyerror.  This remains here temporarily
    893  1.1  mrg    to ease the transition to the new meaning of YYERROR, for GCC.
    894  1.1  mrg    Once GCC version 2 has supplanted version 1, this can go.  However,
    895  1.1  mrg    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    896  1.1  mrg    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    897  1.1  mrg    discussed.  */
    898  1.1  mrg 
    899  1.1  mrg #define YYFAIL		goto yyerrlab
    900  1.1  mrg #if defined YYFAIL
    901  1.1  mrg   /* This is here to suppress warnings from the GCC cpp's
    902  1.1  mrg      -Wunused-macros.  Normally we don't worry about that warning, but
    903  1.1  mrg      some users do, and we want to make it easy for users to remove
    904  1.1  mrg      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    905  1.1  mrg #endif
    906  1.1  mrg 
    907  1.1  mrg #define YYRECOVERING()  (!!yyerrstatus)
    908  1.1  mrg 
    909  1.1  mrg #define YYBACKUP(Token, Value)					\
    910  1.1  mrg do								\
    911  1.1  mrg   if (yychar == YYEMPTY && yylen == 1)				\
    912  1.1  mrg     {								\
    913  1.1  mrg       yychar = (Token);						\
    914  1.1  mrg       yylval = (Value);						\
    915  1.1  mrg       yytoken = YYTRANSLATE (yychar);				\
    916  1.1  mrg       YYPOPSTACK (1);						\
    917  1.1  mrg       goto yybackup;						\
    918  1.1  mrg     }								\
    919  1.1  mrg   else								\
    920  1.1  mrg     {								\
    921  1.1  mrg       yyerror (YY_("syntax error: cannot back up")); \
    922  1.1  mrg       YYERROR;							\
    923  1.1  mrg     }								\
    924  1.1  mrg while (YYID (0))
    925  1.1  mrg 
    926  1.1  mrg 
    927  1.1  mrg #define YYTERROR	1
    928  1.1  mrg #define YYERRCODE	256
    929  1.1  mrg 
    930  1.1  mrg 
    931  1.1  mrg /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    932  1.1  mrg    If N is 0, then set CURRENT to the empty location which ends
    933  1.1  mrg    the previous symbol: RHS[0] (always defined).  */
    934  1.1  mrg 
    935  1.1  mrg #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    936  1.1  mrg #ifndef YYLLOC_DEFAULT
    937  1.1  mrg # define YYLLOC_DEFAULT(Current, Rhs, N)				\
    938  1.1  mrg     do									\
    939  1.1  mrg       if (YYID (N))                                                    \
    940  1.1  mrg 	{								\
    941  1.1  mrg 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
    942  1.1  mrg 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
    943  1.1  mrg 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
    944  1.1  mrg 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
    945  1.1  mrg 	}								\
    946  1.1  mrg       else								\
    947  1.1  mrg 	{								\
    948  1.1  mrg 	  (Current).first_line   = (Current).last_line   =		\
    949  1.1  mrg 	    YYRHSLOC (Rhs, 0).last_line;				\
    950  1.1  mrg 	  (Current).first_column = (Current).last_column =		\
    951  1.1  mrg 	    YYRHSLOC (Rhs, 0).last_column;				\
    952  1.1  mrg 	}								\
    953  1.1  mrg     while (YYID (0))
    954  1.1  mrg #endif
    955  1.1  mrg 
    956  1.1  mrg 
    957  1.1  mrg /* YY_LOCATION_PRINT -- Print the location on the stream.
    958  1.1  mrg    This macro was not mandated originally: define only if we know
    959  1.1  mrg    we won't break user code: when these are the locations we know.  */
    960  1.1  mrg 
    961  1.1  mrg #ifndef YY_LOCATION_PRINT
    962  1.1  mrg # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
    963  1.1  mrg #  define YY_LOCATION_PRINT(File, Loc)			\
    964  1.1  mrg      fprintf (File, "%d.%d-%d.%d",			\
    965  1.1  mrg 	      (Loc).first_line, (Loc).first_column,	\
    966  1.1  mrg 	      (Loc).last_line,  (Loc).last_column)
    967  1.1  mrg # else
    968  1.1  mrg #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    969  1.1  mrg # endif
    970  1.1  mrg #endif
    971  1.1  mrg 
    972  1.1  mrg 
    973  1.1  mrg /* YYLEX -- calling `yylex' with the right arguments.  */
    974  1.1  mrg 
    975  1.1  mrg #ifdef YYLEX_PARAM
    976  1.1  mrg # define YYLEX yylex (YYLEX_PARAM)
    977  1.1  mrg #else
    978  1.1  mrg # define YYLEX yylex ()
    979  1.1  mrg #endif
    980  1.1  mrg 
    981  1.1  mrg /* Enable debugging if requested.  */
    982  1.1  mrg #if YYDEBUG
    983  1.1  mrg 
    984  1.1  mrg # ifndef YYFPRINTF
    985  1.1  mrg #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
    986  1.1  mrg #  define YYFPRINTF fprintf
    987  1.1  mrg # endif
    988  1.1  mrg 
    989  1.1  mrg # define YYDPRINTF(Args)			\
    990  1.1  mrg do {						\
    991  1.1  mrg   if (yydebug)					\
    992  1.1  mrg     YYFPRINTF Args;				\
    993  1.1  mrg } while (YYID (0))
    994  1.1  mrg 
    995  1.1  mrg # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
    996  1.1  mrg do {									  \
    997  1.1  mrg   if (yydebug)								  \
    998  1.1  mrg     {									  \
    999  1.1  mrg       YYFPRINTF (stderr, "%s ", Title);					  \
   1000  1.1  mrg       yy_symbol_print (stderr,						  \
   1001  1.1  mrg 		  Type, Value); \
   1002  1.1  mrg       YYFPRINTF (stderr, "\n");						  \
   1003  1.1  mrg     }									  \
   1004  1.1  mrg } while (YYID (0))
   1005  1.1  mrg 
   1006  1.1  mrg 
   1007  1.1  mrg /*--------------------------------.
   1008  1.1  mrg | Print this symbol on YYOUTPUT.  |
   1009  1.1  mrg `--------------------------------*/
   1010  1.1  mrg 
   1011  1.1  mrg /*ARGSUSED*/
   1012  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1013  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1014  1.1  mrg static void
   1015  1.1  mrg yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
   1016  1.1  mrg #else
   1017  1.1  mrg static void
   1018  1.1  mrg yy_symbol_value_print (yyoutput, yytype, yyvaluep)
   1019  1.1  mrg     FILE *yyoutput;
   1020  1.1  mrg     int yytype;
   1021  1.1  mrg     YYSTYPE const * const yyvaluep;
   1022  1.1  mrg #endif
   1023  1.1  mrg {
   1024  1.1  mrg   if (!yyvaluep)
   1025  1.1  mrg     return;
   1026  1.1  mrg # ifdef YYPRINT
   1027  1.1  mrg   if (yytype < YYNTOKENS)
   1028  1.1  mrg     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
   1029  1.1  mrg # else
   1030  1.1  mrg   YYUSE (yyoutput);
   1031  1.1  mrg # endif
   1032  1.1  mrg   switch (yytype)
   1033  1.1  mrg     {
   1034  1.1  mrg       default:
   1035  1.1  mrg 	break;
   1036  1.1  mrg     }
   1037  1.1  mrg }
   1038  1.1  mrg 
   1039  1.1  mrg 
   1040  1.1  mrg /*--------------------------------.
   1041  1.1  mrg | Print this symbol on YYOUTPUT.  |
   1042  1.1  mrg `--------------------------------*/
   1043  1.1  mrg 
   1044  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1045  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1046  1.1  mrg static void
   1047  1.1  mrg yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
   1048  1.1  mrg #else
   1049  1.1  mrg static void
   1050  1.1  mrg yy_symbol_print (yyoutput, yytype, yyvaluep)
   1051  1.1  mrg     FILE *yyoutput;
   1052  1.1  mrg     int yytype;
   1053  1.1  mrg     YYSTYPE const * const yyvaluep;
   1054  1.1  mrg #endif
   1055  1.1  mrg {
   1056  1.1  mrg   if (yytype < YYNTOKENS)
   1057  1.1  mrg     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
   1058  1.1  mrg   else
   1059  1.1  mrg     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
   1060  1.1  mrg 
   1061  1.1  mrg   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   1062  1.1  mrg   YYFPRINTF (yyoutput, ")");
   1063  1.1  mrg }
   1064  1.1  mrg 
   1065  1.1  mrg /*------------------------------------------------------------------.
   1066  1.1  mrg | yy_stack_print -- Print the state stack from its BOTTOM up to its |
   1067  1.1  mrg | TOP (included).                                                   |
   1068  1.1  mrg `------------------------------------------------------------------*/
   1069  1.1  mrg 
   1070  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1071  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1072  1.1  mrg static void
   1073  1.1  mrg yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
   1074  1.1  mrg #else
   1075  1.1  mrg static void
   1076  1.1  mrg yy_stack_print (yybottom, yytop)
   1077  1.1  mrg     yytype_int16 *yybottom;
   1078  1.1  mrg     yytype_int16 *yytop;
   1079  1.1  mrg #endif
   1080  1.1  mrg {
   1081  1.1  mrg   YYFPRINTF (stderr, "Stack now");
   1082  1.1  mrg   for (; yybottom <= yytop; yybottom++)
   1083  1.1  mrg     {
   1084  1.1  mrg       int yybot = *yybottom;
   1085  1.1  mrg       YYFPRINTF (stderr, " %d", yybot);
   1086  1.1  mrg     }
   1087  1.1  mrg   YYFPRINTF (stderr, "\n");
   1088  1.1  mrg }
   1089  1.1  mrg 
   1090  1.1  mrg # define YY_STACK_PRINT(Bottom, Top)				\
   1091  1.1  mrg do {								\
   1092  1.1  mrg   if (yydebug)							\
   1093  1.1  mrg     yy_stack_print ((Bottom), (Top));				\
   1094  1.1  mrg } while (YYID (0))
   1095  1.1  mrg 
   1096  1.1  mrg 
   1097  1.1  mrg /*------------------------------------------------.
   1098  1.1  mrg | Report that the YYRULE is going to be reduced.  |
   1099  1.1  mrg `------------------------------------------------*/
   1100  1.1  mrg 
   1101  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1102  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1103  1.1  mrg static void
   1104  1.1  mrg yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
   1105  1.1  mrg #else
   1106  1.1  mrg static void
   1107  1.1  mrg yy_reduce_print (yyvsp, yyrule)
   1108  1.1  mrg     YYSTYPE *yyvsp;
   1109  1.1  mrg     int yyrule;
   1110  1.1  mrg #endif
   1111  1.1  mrg {
   1112  1.1  mrg   int yynrhs = yyr2[yyrule];
   1113  1.1  mrg   int yyi;
   1114  1.1  mrg   unsigned long int yylno = yyrline[yyrule];
   1115  1.1  mrg   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
   1116  1.1  mrg 	     yyrule - 1, yylno);
   1117  1.1  mrg   /* The symbols being reduced.  */
   1118  1.1  mrg   for (yyi = 0; yyi < yynrhs; yyi++)
   1119  1.1  mrg     {
   1120  1.1  mrg       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
   1121  1.1  mrg       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
   1122  1.1  mrg 		       &(yyvsp[(yyi + 1) - (yynrhs)])
   1123  1.1  mrg 		       		       );
   1124  1.1  mrg       YYFPRINTF (stderr, "\n");
   1125  1.1  mrg     }
   1126  1.1  mrg }
   1127  1.1  mrg 
   1128  1.1  mrg # define YY_REDUCE_PRINT(Rule)		\
   1129  1.1  mrg do {					\
   1130  1.1  mrg   if (yydebug)				\
   1131  1.1  mrg     yy_reduce_print (yyvsp, Rule); \
   1132  1.1  mrg } while (YYID (0))
   1133  1.1  mrg 
   1134  1.1  mrg /* Nonzero means print parse trace.  It is left uninitialized so that
   1135  1.1  mrg    multiple parsers can coexist.  */
   1136  1.1  mrg int yydebug;
   1137  1.1  mrg #else /* !YYDEBUG */
   1138  1.1  mrg # define YYDPRINTF(Args)
   1139  1.1  mrg # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
   1140  1.1  mrg # define YY_STACK_PRINT(Bottom, Top)
   1141  1.1  mrg # define YY_REDUCE_PRINT(Rule)
   1142  1.1  mrg #endif /* !YYDEBUG */
   1143  1.1  mrg 
   1144  1.1  mrg 
   1145  1.1  mrg /* YYINITDEPTH -- initial size of the parser's stacks.  */
   1146  1.1  mrg #ifndef	YYINITDEPTH
   1147  1.1  mrg # define YYINITDEPTH 200
   1148  1.1  mrg #endif
   1149  1.1  mrg 
   1150  1.1  mrg /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   1151  1.1  mrg    if the built-in stack extension method is used).
   1152  1.1  mrg 
   1153  1.1  mrg    Do not make this value too large; the results are undefined if
   1154  1.1  mrg    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   1155  1.1  mrg    evaluated with infinite-precision integer arithmetic.  */
   1156  1.1  mrg 
   1157  1.1  mrg #ifndef YYMAXDEPTH
   1158  1.1  mrg # define YYMAXDEPTH 10000
   1159  1.1  mrg #endif
   1160  1.1  mrg 
   1161  1.1  mrg 
   1162  1.1  mrg 
   1164  1.1  mrg #if YYERROR_VERBOSE
   1165  1.1  mrg 
   1166  1.1  mrg # ifndef yystrlen
   1167  1.1  mrg #  if defined __GLIBC__ && defined _STRING_H
   1168  1.1  mrg #   define yystrlen strlen
   1169  1.1  mrg #  else
   1170  1.1  mrg /* Return the length of YYSTR.  */
   1171  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1172  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1173  1.1  mrg static YYSIZE_T
   1174  1.1  mrg yystrlen (const char *yystr)
   1175  1.1  mrg #else
   1176  1.1  mrg static YYSIZE_T
   1177  1.1  mrg yystrlen (yystr)
   1178  1.1  mrg     const char *yystr;
   1179  1.1  mrg #endif
   1180  1.1  mrg {
   1181  1.1  mrg   YYSIZE_T yylen;
   1182  1.1  mrg   for (yylen = 0; yystr[yylen]; yylen++)
   1183  1.1  mrg     continue;
   1184  1.1  mrg   return yylen;
   1185  1.1  mrg }
   1186  1.1  mrg #  endif
   1187  1.1  mrg # endif
   1188  1.1  mrg 
   1189  1.1  mrg # ifndef yystpcpy
   1190  1.1  mrg #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
   1191  1.1  mrg #   define yystpcpy stpcpy
   1192  1.1  mrg #  else
   1193  1.1  mrg /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   1194  1.1  mrg    YYDEST.  */
   1195  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1196  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1197  1.1  mrg static char *
   1198  1.1  mrg yystpcpy (char *yydest, const char *yysrc)
   1199  1.1  mrg #else
   1200  1.1  mrg static char *
   1201  1.1  mrg yystpcpy (yydest, yysrc)
   1202  1.1  mrg     char *yydest;
   1203  1.1  mrg     const char *yysrc;
   1204  1.1  mrg #endif
   1205  1.1  mrg {
   1206  1.1  mrg   char *yyd = yydest;
   1207  1.1  mrg   const char *yys = yysrc;
   1208  1.1  mrg 
   1209  1.1  mrg   while ((*yyd++ = *yys++) != '\0')
   1210  1.1  mrg     continue;
   1211  1.1  mrg 
   1212  1.1  mrg   return yyd - 1;
   1213  1.1  mrg }
   1214  1.1  mrg #  endif
   1215  1.1  mrg # endif
   1216  1.1  mrg 
   1217  1.1  mrg # ifndef yytnamerr
   1218  1.1  mrg /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   1219  1.1  mrg    quotes and backslashes, so that it's suitable for yyerror.  The
   1220  1.1  mrg    heuristic is that double-quoting is unnecessary unless the string
   1221  1.1  mrg    contains an apostrophe, a comma, or backslash (other than
   1222  1.1  mrg    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   1223  1.1  mrg    null, do not copy; instead, return the length of what the result
   1224  1.1  mrg    would have been.  */
   1225  1.1  mrg static YYSIZE_T
   1226  1.1  mrg yytnamerr (char *yyres, const char *yystr)
   1227  1.1  mrg {
   1228  1.1  mrg   if (*yystr == '"')
   1229  1.1  mrg     {
   1230  1.1  mrg       YYSIZE_T yyn = 0;
   1231  1.1  mrg       char const *yyp = yystr;
   1232  1.1  mrg 
   1233  1.1  mrg       for (;;)
   1234  1.1  mrg 	switch (*++yyp)
   1235  1.1  mrg 	  {
   1236  1.1  mrg 	  case '\'':
   1237  1.1  mrg 	  case ',':
   1238  1.1  mrg 	    goto do_not_strip_quotes;
   1239  1.1  mrg 
   1240  1.1  mrg 	  case '\\':
   1241  1.1  mrg 	    if (*++yyp != '\\')
   1242  1.1  mrg 	      goto do_not_strip_quotes;
   1243  1.1  mrg 	    /* Fall through.  */
   1244  1.1  mrg 	  default:
   1245  1.1  mrg 	    if (yyres)
   1246  1.1  mrg 	      yyres[yyn] = *yyp;
   1247  1.1  mrg 	    yyn++;
   1248  1.1  mrg 	    break;
   1249  1.1  mrg 
   1250  1.1  mrg 	  case '"':
   1251  1.1  mrg 	    if (yyres)
   1252  1.1  mrg 	      yyres[yyn] = '\0';
   1253  1.1  mrg 	    return yyn;
   1254  1.1  mrg 	  }
   1255  1.1  mrg     do_not_strip_quotes: ;
   1256  1.1  mrg     }
   1257  1.1  mrg 
   1258  1.1  mrg   if (! yyres)
   1259  1.1  mrg     return yystrlen (yystr);
   1260  1.1  mrg 
   1261  1.1  mrg   return yystpcpy (yyres, yystr) - yyres;
   1262  1.1  mrg }
   1263  1.1  mrg # endif
   1264  1.1  mrg 
   1265  1.1  mrg /* Copy into YYRESULT an error message about the unexpected token
   1266  1.1  mrg    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
   1267  1.1  mrg    including the terminating null byte.  If YYRESULT is null, do not
   1268  1.1  mrg    copy anything; just return the number of bytes that would be
   1269  1.1  mrg    copied.  As a special case, return 0 if an ordinary "syntax error"
   1270  1.1  mrg    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
   1271  1.1  mrg    size calculation.  */
   1272  1.1  mrg static YYSIZE_T
   1273  1.1  mrg yysyntax_error (char *yyresult, int yystate, int yychar)
   1274  1.1  mrg {
   1275  1.1  mrg   int yyn = yypact[yystate];
   1276  1.1  mrg 
   1277  1.1  mrg   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
   1278  1.1  mrg     return 0;
   1279  1.1  mrg   else
   1280  1.1  mrg     {
   1281  1.1  mrg       int yytype = YYTRANSLATE (yychar);
   1282  1.1  mrg       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
   1283  1.1  mrg       YYSIZE_T yysize = yysize0;
   1284  1.1  mrg       YYSIZE_T yysize1;
   1285  1.1  mrg       int yysize_overflow = 0;
   1286  1.1  mrg       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   1287  1.1  mrg       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   1288  1.1  mrg       int yyx;
   1289  1.1  mrg 
   1290  1.1  mrg # if 0
   1291  1.1  mrg       /* This is so xgettext sees the translatable formats that are
   1292  1.1  mrg 	 constructed on the fly.  */
   1293  1.1  mrg       YY_("syntax error, unexpected %s");
   1294  1.1  mrg       YY_("syntax error, unexpected %s, expecting %s");
   1295  1.1  mrg       YY_("syntax error, unexpected %s, expecting %s or %s");
   1296  1.1  mrg       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
   1297  1.1  mrg       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
   1298  1.1  mrg # endif
   1299  1.1  mrg       char *yyfmt;
   1300  1.1  mrg       char const *yyf;
   1301  1.1  mrg       static char const yyunexpected[] = "syntax error, unexpected %s";
   1302  1.1  mrg       static char const yyexpecting[] = ", expecting %s";
   1303  1.1  mrg       static char const yyor[] = " or %s";
   1304  1.1  mrg       char yyformat[sizeof yyunexpected
   1305  1.1  mrg 		    + sizeof yyexpecting - 1
   1306  1.1  mrg 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
   1307  1.1  mrg 		       * (sizeof yyor - 1))];
   1308  1.1  mrg       char const *yyprefix = yyexpecting;
   1309  1.1  mrg 
   1310  1.1  mrg       /* Start YYX at -YYN if negative to avoid negative indexes in
   1311  1.1  mrg 	 YYCHECK.  */
   1312  1.1  mrg       int yyxbegin = yyn < 0 ? -yyn : 0;
   1313  1.1  mrg 
   1314  1.1  mrg       /* Stay within bounds of both yycheck and yytname.  */
   1315  1.1  mrg       int yychecklim = YYLAST - yyn + 1;
   1316  1.1  mrg       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
   1317  1.1  mrg       int yycount = 1;
   1318  1.1  mrg 
   1319  1.1  mrg       yyarg[0] = yytname[yytype];
   1320  1.1  mrg       yyfmt = yystpcpy (yyformat, yyunexpected);
   1321  1.1  mrg 
   1322  1.1  mrg       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
   1323  1.1  mrg 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
   1324  1.1  mrg 	  {
   1325  1.1  mrg 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
   1326  1.1  mrg 	      {
   1327  1.1  mrg 		yycount = 1;
   1328  1.1  mrg 		yysize = yysize0;
   1329  1.1  mrg 		yyformat[sizeof yyunexpected - 1] = '\0';
   1330  1.1  mrg 		break;
   1331  1.1  mrg 	      }
   1332  1.1  mrg 	    yyarg[yycount++] = yytname[yyx];
   1333  1.1  mrg 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
   1334  1.1  mrg 	    yysize_overflow |= (yysize1 < yysize);
   1335  1.1  mrg 	    yysize = yysize1;
   1336  1.1  mrg 	    yyfmt = yystpcpy (yyfmt, yyprefix);
   1337  1.1  mrg 	    yyprefix = yyor;
   1338  1.1  mrg 	  }
   1339  1.1  mrg 
   1340  1.1  mrg       yyf = YY_(yyformat);
   1341  1.1  mrg       yysize1 = yysize + yystrlen (yyf);
   1342  1.1  mrg       yysize_overflow |= (yysize1 < yysize);
   1343  1.1  mrg       yysize = yysize1;
   1344  1.1  mrg 
   1345  1.1  mrg       if (yysize_overflow)
   1346  1.1  mrg 	return YYSIZE_MAXIMUM;
   1347  1.1  mrg 
   1348  1.1  mrg       if (yyresult)
   1349  1.1  mrg 	{
   1350  1.1  mrg 	  /* Avoid sprintf, as that infringes on the user's name space.
   1351  1.1  mrg 	     Don't have undefined behavior even if the translation
   1352  1.1  mrg 	     produced a string with the wrong number of "%s"s.  */
   1353  1.1  mrg 	  char *yyp = yyresult;
   1354  1.1  mrg 	  int yyi = 0;
   1355  1.1  mrg 	  while ((*yyp = *yyf) != '\0')
   1356  1.1  mrg 	    {
   1357  1.1  mrg 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
   1358  1.1  mrg 		{
   1359  1.1  mrg 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
   1360  1.1  mrg 		  yyf += 2;
   1361  1.1  mrg 		}
   1362  1.1  mrg 	      else
   1363  1.1  mrg 		{
   1364  1.1  mrg 		  yyp++;
   1365  1.1  mrg 		  yyf++;
   1366  1.1  mrg 		}
   1367  1.1  mrg 	    }
   1368  1.1  mrg 	}
   1369  1.1  mrg       return yysize;
   1370  1.1  mrg     }
   1371  1.1  mrg }
   1372  1.1  mrg #endif /* YYERROR_VERBOSE */
   1373  1.1  mrg 
   1374  1.1  mrg 
   1376  1.1  mrg /*-----------------------------------------------.
   1377  1.1  mrg | Release the memory associated to this symbol.  |
   1378  1.1  mrg `-----------------------------------------------*/
   1379  1.1  mrg 
   1380  1.1  mrg /*ARGSUSED*/
   1381  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1382  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1383  1.1  mrg static void
   1384  1.1  mrg yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
   1385  1.1  mrg #else
   1386  1.1  mrg static void
   1387  1.1  mrg yydestruct (yymsg, yytype, yyvaluep)
   1388  1.1  mrg     const char *yymsg;
   1389  1.1  mrg     int yytype;
   1390  1.1  mrg     YYSTYPE *yyvaluep;
   1391  1.1  mrg #endif
   1392  1.1  mrg {
   1393  1.1  mrg   YYUSE (yyvaluep);
   1394  1.1  mrg 
   1395  1.1  mrg   if (!yymsg)
   1396  1.1  mrg     yymsg = "Deleting";
   1397  1.1  mrg   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
   1398  1.1  mrg 
   1399  1.1  mrg   switch (yytype)
   1400  1.1  mrg     {
   1401  1.1  mrg 
   1402  1.1  mrg       default:
   1403  1.1  mrg 	break;
   1404  1.1  mrg     }
   1405  1.1  mrg }
   1406  1.1  mrg 
   1407  1.1  mrg /* Prevent warnings from -Wmissing-prototypes.  */
   1408  1.1  mrg #ifdef YYPARSE_PARAM
   1409  1.1  mrg #if defined __STDC__ || defined __cplusplus
   1410  1.1  mrg int yyparse (void *YYPARSE_PARAM);
   1411  1.1  mrg #else
   1412  1.1  mrg int yyparse ();
   1413  1.1  mrg #endif
   1414  1.1  mrg #else /* ! YYPARSE_PARAM */
   1415  1.1  mrg #if defined __STDC__ || defined __cplusplus
   1416  1.1  mrg int yyparse (void);
   1417  1.1  mrg #else
   1418  1.1  mrg int yyparse ();
   1419  1.1  mrg #endif
   1420  1.1  mrg #endif /* ! YYPARSE_PARAM */
   1421  1.1  mrg 
   1422  1.1  mrg 
   1423  1.1  mrg /* The lookahead symbol.  */
   1424  1.1  mrg int yychar;
   1425  1.1  mrg 
   1426  1.1  mrg /* The semantic value of the lookahead symbol.  */
   1427  1.1  mrg YYSTYPE yylval;
   1428  1.1  mrg 
   1429  1.1  mrg /* Number of syntax errors so far.  */
   1430  1.1  mrg int yynerrs;
   1431  1.1  mrg 
   1432  1.1  mrg 
   1433  1.1  mrg 
   1434  1.1  mrg /*-------------------------.
   1435  1.1  mrg | yyparse or yypush_parse.  |
   1436  1.1  mrg `-------------------------*/
   1437  1.1  mrg 
   1438  1.1  mrg #ifdef YYPARSE_PARAM
   1439  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1440  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1441  1.1  mrg int
   1442  1.1  mrg yyparse (void *YYPARSE_PARAM)
   1443  1.1  mrg #else
   1444  1.1  mrg int
   1445  1.1  mrg yyparse (YYPARSE_PARAM)
   1446  1.1  mrg     void *YYPARSE_PARAM;
   1447  1.1  mrg #endif
   1448  1.1  mrg #else /* ! YYPARSE_PARAM */
   1449  1.1  mrg #if (defined __STDC__ || defined __C99__FUNC__ \
   1450  1.1  mrg      || defined __cplusplus || defined _MSC_VER)
   1451  1.1  mrg int
   1452  1.1  mrg yyparse (void)
   1453  1.1  mrg #else
   1454  1.1  mrg int
   1455  1.1  mrg yyparse ()
   1456  1.1  mrg 
   1457  1.1  mrg #endif
   1458  1.1  mrg #endif
   1459  1.1  mrg {
   1460  1.1  mrg 
   1461  1.1  mrg 
   1462  1.1  mrg     int yystate;
   1463  1.1  mrg     /* Number of tokens to shift before error messages enabled.  */
   1464  1.1  mrg     int yyerrstatus;
   1465  1.1  mrg 
   1466  1.1  mrg     /* The stacks and their tools:
   1467  1.1  mrg        `yyss': related to states.
   1468  1.1  mrg        `yyvs': related to semantic values.
   1469  1.1  mrg 
   1470  1.1  mrg        Refer to the stacks thru separate pointers, to allow yyoverflow
   1471  1.1  mrg        to reallocate them elsewhere.  */
   1472  1.1  mrg 
   1473  1.1  mrg     /* The state stack.  */
   1474  1.1  mrg     yytype_int16 yyssa[YYINITDEPTH];
   1475  1.1  mrg     yytype_int16 *yyss;
   1476  1.1  mrg     yytype_int16 *yyssp;
   1477  1.1  mrg 
   1478  1.1  mrg     /* The semantic value stack.  */
   1479  1.1  mrg     YYSTYPE yyvsa[YYINITDEPTH];
   1480  1.1  mrg     YYSTYPE *yyvs;
   1481  1.1  mrg     YYSTYPE *yyvsp;
   1482  1.1  mrg 
   1483  1.1  mrg     YYSIZE_T yystacksize;
   1484  1.1  mrg 
   1485  1.1  mrg   int yyn;
   1486  1.1  mrg   int yyresult;
   1487  1.1  mrg   /* Lookahead token as an internal (translated) token number.  */
   1488  1.1  mrg   int yytoken;
   1489  1.1  mrg   /* The variables used to return semantic value and location from the
   1490  1.1  mrg      action routines.  */
   1491  1.1  mrg   YYSTYPE yyval;
   1492  1.1  mrg 
   1493  1.1  mrg #if YYERROR_VERBOSE
   1494  1.1  mrg   /* Buffer for error messages, and its allocated size.  */
   1495  1.1  mrg   char yymsgbuf[128];
   1496  1.1  mrg   char *yymsg = yymsgbuf;
   1497  1.1  mrg   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
   1498  1.1  mrg #endif
   1499  1.1  mrg 
   1500  1.1  mrg #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
   1501  1.1  mrg 
   1502  1.1  mrg   /* The number of symbols on the RHS of the reduced rule.
   1503  1.1  mrg      Keep to zero when no symbol should be popped.  */
   1504  1.1  mrg   int yylen = 0;
   1505  1.1  mrg 
   1506  1.1  mrg   yytoken = 0;
   1507  1.1  mrg   yyss = yyssa;
   1508  1.1  mrg   yyvs = yyvsa;
   1509  1.1  mrg   yystacksize = YYINITDEPTH;
   1510  1.1  mrg 
   1511  1.1  mrg   YYDPRINTF ((stderr, "Starting parse\n"));
   1512  1.1  mrg 
   1513  1.1  mrg   yystate = 0;
   1514  1.1  mrg   yyerrstatus = 0;
   1515  1.1  mrg   yynerrs = 0;
   1516  1.1  mrg   yychar = YYEMPTY; /* Cause a token to be read.  */
   1517  1.1  mrg 
   1518  1.1  mrg   /* Initialize stack pointers.
   1519  1.1  mrg      Waste one element of value and location stack
   1520  1.1  mrg      so that they stay on the same level as the state stack.
   1521  1.1  mrg      The wasted elements are never initialized.  */
   1522  1.1  mrg   yyssp = yyss;
   1523  1.1  mrg   yyvsp = yyvs;
   1524  1.1  mrg 
   1525  1.1  mrg   goto yysetstate;
   1526  1.1  mrg 
   1527  1.1  mrg /*------------------------------------------------------------.
   1528  1.1  mrg | yynewstate -- Push a new state, which is found in yystate.  |
   1529  1.1  mrg `------------------------------------------------------------*/
   1530  1.1  mrg  yynewstate:
   1531  1.1  mrg   /* In all cases, when you get here, the value and location stacks
   1532  1.1  mrg      have just been pushed.  So pushing a state here evens the stacks.  */
   1533  1.1  mrg   yyssp++;
   1534  1.1  mrg 
   1535  1.1  mrg  yysetstate:
   1536  1.1  mrg   *yyssp = yystate;
   1537  1.1  mrg 
   1538  1.1  mrg   if (yyss + yystacksize - 1 <= yyssp)
   1539  1.1  mrg     {
   1540  1.1  mrg       /* Get the current used size of the three stacks, in elements.  */
   1541  1.1  mrg       YYSIZE_T yysize = yyssp - yyss + 1;
   1542  1.1  mrg 
   1543  1.1  mrg #ifdef yyoverflow
   1544  1.1  mrg       {
   1545  1.1  mrg 	/* Give user a chance to reallocate the stack.  Use copies of
   1546  1.1  mrg 	   these so that the &'s don't force the real ones into
   1547  1.1  mrg 	   memory.  */
   1548  1.1  mrg 	YYSTYPE *yyvs1 = yyvs;
   1549  1.1  mrg 	yytype_int16 *yyss1 = yyss;
   1550  1.1  mrg 
   1551  1.1  mrg 	/* Each stack pointer address is followed by the size of the
   1552  1.1  mrg 	   data in use in that stack, in bytes.  This used to be a
   1553  1.1  mrg 	   conditional around just the two extra args, but that might
   1554  1.1  mrg 	   be undefined if yyoverflow is a macro.  */
   1555  1.1  mrg 	yyoverflow (YY_("memory exhausted"),
   1556  1.1  mrg 		    &yyss1, yysize * sizeof (*yyssp),
   1557  1.1  mrg 		    &yyvs1, yysize * sizeof (*yyvsp),
   1558  1.1  mrg 		    &yystacksize);
   1559  1.1  mrg 
   1560  1.1  mrg 	yyss = yyss1;
   1561  1.1  mrg 	yyvs = yyvs1;
   1562  1.1  mrg       }
   1563  1.1  mrg #else /* no yyoverflow */
   1564  1.1  mrg # ifndef YYSTACK_RELOCATE
   1565  1.1  mrg       goto yyexhaustedlab;
   1566  1.1  mrg # else
   1567  1.1  mrg       /* Extend the stack our own way.  */
   1568  1.1  mrg       if (YYMAXDEPTH <= yystacksize)
   1569  1.1  mrg 	goto yyexhaustedlab;
   1570  1.1  mrg       yystacksize *= 2;
   1571  1.1  mrg       if (YYMAXDEPTH < yystacksize)
   1572  1.1  mrg 	yystacksize = YYMAXDEPTH;
   1573  1.1  mrg 
   1574  1.1  mrg       {
   1575  1.1  mrg 	yytype_int16 *yyss1 = yyss;
   1576  1.1  mrg 	union yyalloc *yyptr =
   1577  1.1  mrg 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
   1578  1.1  mrg 	if (! yyptr)
   1579  1.1  mrg 	  goto yyexhaustedlab;
   1580  1.1  mrg 	YYSTACK_RELOCATE (yyss_alloc, yyss);
   1581  1.1  mrg 	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
   1582  1.1  mrg #  undef YYSTACK_RELOCATE
   1583  1.1  mrg 	if (yyss1 != yyssa)
   1584  1.1  mrg 	  YYSTACK_FREE (yyss1);
   1585  1.1  mrg       }
   1586  1.1  mrg # endif
   1587  1.1  mrg #endif /* no yyoverflow */
   1588  1.1  mrg 
   1589  1.1  mrg       yyssp = yyss + yysize - 1;
   1590  1.1  mrg       yyvsp = yyvs + yysize - 1;
   1591  1.1  mrg 
   1592  1.1  mrg       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
   1593  1.1  mrg 		  (unsigned long int) yystacksize));
   1594  1.1  mrg 
   1595  1.1  mrg       if (yyss + yystacksize - 1 <= yyssp)
   1596  1.1  mrg 	YYABORT;
   1597  1.1  mrg     }
   1598  1.1  mrg 
   1599  1.1  mrg   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1600  1.1  mrg 
   1601  1.1  mrg   if (yystate == YYFINAL)
   1602  1.1  mrg     YYACCEPT;
   1603  1.1  mrg 
   1604  1.1  mrg   goto yybackup;
   1605  1.1  mrg 
   1606  1.1  mrg /*-----------.
   1607  1.1  mrg | yybackup.  |
   1608  1.1  mrg `-----------*/
   1609  1.1  mrg yybackup:
   1610  1.1  mrg 
   1611  1.1  mrg   /* Do appropriate processing given the current state.  Read a
   1612  1.1  mrg      lookahead token if we need one and don't already have one.  */
   1613  1.1  mrg 
   1614  1.1  mrg   /* First try to decide what to do without reference to lookahead token.  */
   1615  1.1  mrg   yyn = yypact[yystate];
   1616  1.1  mrg   if (yyn == YYPACT_NINF)
   1617  1.1  mrg     goto yydefault;
   1618  1.1  mrg 
   1619  1.1  mrg   /* Not known => get a lookahead token if don't already have one.  */
   1620  1.1  mrg 
   1621  1.1  mrg   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   1622  1.1  mrg   if (yychar == YYEMPTY)
   1623  1.1  mrg     {
   1624  1.1  mrg       YYDPRINTF ((stderr, "Reading a token: "));
   1625  1.1  mrg       yychar = YYLEX;
   1626  1.1  mrg     }
   1627  1.1  mrg 
   1628  1.1  mrg   if (yychar <= YYEOF)
   1629  1.1  mrg     {
   1630  1.1  mrg       yychar = yytoken = YYEOF;
   1631  1.1  mrg       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1632  1.1  mrg     }
   1633  1.1  mrg   else
   1634  1.1  mrg     {
   1635  1.1  mrg       yytoken = YYTRANSLATE (yychar);
   1636  1.1  mrg       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1637  1.1  mrg     }
   1638  1.1  mrg 
   1639  1.1  mrg   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1640  1.1  mrg      detect an error, take that action.  */
   1641  1.1  mrg   yyn += yytoken;
   1642  1.1  mrg   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
   1643  1.1  mrg     goto yydefault;
   1644  1.1  mrg   yyn = yytable[yyn];
   1645  1.1  mrg   if (yyn <= 0)
   1646  1.1  mrg     {
   1647  1.1  mrg       if (yyn == 0 || yyn == YYTABLE_NINF)
   1648  1.1  mrg 	goto yyerrlab;
   1649  1.1  mrg       yyn = -yyn;
   1650  1.1  mrg       goto yyreduce;
   1651  1.1  mrg     }
   1652  1.1  mrg 
   1653  1.1  mrg   /* Count tokens shifted since error; after three, turn off error
   1654  1.1  mrg      status.  */
   1655  1.1  mrg   if (yyerrstatus)
   1656  1.1  mrg     yyerrstatus--;
   1657  1.1  mrg 
   1658  1.1  mrg   /* Shift the lookahead token.  */
   1659  1.1  mrg   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1660  1.1  mrg 
   1661  1.1  mrg   /* Discard the shifted token.  */
   1662  1.1  mrg   yychar = YYEMPTY;
   1663  1.1  mrg 
   1664  1.1  mrg   yystate = yyn;
   1665  1.1  mrg   *++yyvsp = yylval;
   1666  1.1  mrg 
   1667  1.1  mrg   goto yynewstate;
   1668  1.1  mrg 
   1669  1.1  mrg 
   1670  1.1  mrg /*-----------------------------------------------------------.
   1671  1.1  mrg | yydefault -- do the default action for the current state.  |
   1672  1.1  mrg `-----------------------------------------------------------*/
   1673  1.1  mrg yydefault:
   1674  1.1  mrg   yyn = yydefact[yystate];
   1675  1.1  mrg   if (yyn == 0)
   1676  1.1  mrg     goto yyerrlab;
   1677  1.1  mrg   goto yyreduce;
   1678  1.1  mrg 
   1679  1.1  mrg 
   1680  1.1  mrg /*-----------------------------.
   1681  1.1  mrg | yyreduce -- Do a reduction.  |
   1682  1.1  mrg `-----------------------------*/
   1683  1.1  mrg yyreduce:
   1684  1.1  mrg   /* yyn is the number of a rule to reduce with.  */
   1685  1.1  mrg   yylen = yyr2[yyn];
   1686  1.1  mrg 
   1687  1.1  mrg   /* If YYLEN is nonzero, implement the default value of the action:
   1688  1.1  mrg      `$$ = $1'.
   1689  1.1  mrg 
   1690  1.1  mrg      Otherwise, the following line sets YYVAL to garbage.
   1691  1.1  mrg      This behavior is undocumented and Bison
   1692  1.1  mrg      users should not rely upon it.  Assigning to YYVAL
   1693  1.1  mrg      unconditionally makes the parser a bit smaller, and it avoids a
   1694  1.1  mrg      GCC warning that YYVAL may be used uninitialized.  */
   1695  1.1  mrg   yyval = yyvsp[1-yylen];
   1696  1.1  mrg 
   1697  1.1  mrg 
   1698  1.1  mrg   YY_REDUCE_PRINT (yyn);
   1699  1.1  mrg   switch (yyn)
   1700  1.1  mrg     {
   1701  1.1  mrg         case 6:
   1702  1.1  mrg 
   1703  1.1  mrg /* Line 1464 of yacc.c  */
   1704  1.1  mrg #line 173 "calc.y"
   1705  1.1  mrg     { sp = stack[0]; yyerrok; }
   1706  1.1  mrg     break;
   1707  1.1  mrg 
   1708  1.1  mrg   case 8:
   1709  1.1  mrg 
   1710  1.1  mrg /* Line 1464 of yacc.c  */
   1711  1.1  mrg #line 177 "calc.y"
   1712  1.1  mrg     {
   1713  1.1  mrg       mpz_out_str (stdout, obase, sp); putchar ('\n');
   1714  1.1  mrg       sp--;
   1715  1.1  mrg       CHECK_EMPTY ();
   1716  1.1  mrg     }
   1717  1.1  mrg     break;
   1718  1.1  mrg 
   1719  1.1  mrg   case 9:
   1720  1.1  mrg 
   1721  1.1  mrg /* Line 1464 of yacc.c  */
   1722  1.1  mrg #line 182 "calc.y"
   1723  1.1  mrg     {
   1724  1.1  mrg       CHECK_VARIABLE ((yyvsp[(1) - (3)].var));
   1725  1.1  mrg       mpz_swap (variable[(yyvsp[(1) - (3)].var)], sp);
   1726  1.1  mrg       sp--;
   1727  1.1  mrg       CHECK_EMPTY ();
   1728  1.1  mrg     }
   1729  1.1  mrg     break;
   1730  1.1  mrg 
   1731  1.1  mrg   case 10:
   1732  1.1  mrg 
   1733  1.1  mrg /* Line 1464 of yacc.c  */
   1734  1.1  mrg #line 188 "calc.y"
   1735  1.1  mrg     { calc_help (); }
   1736  1.1  mrg     break;
   1737  1.1  mrg 
   1738  1.1  mrg   case 11:
   1739  1.1  mrg 
   1740  1.1  mrg /* Line 1464 of yacc.c  */
   1741  1.1  mrg #line 189 "calc.y"
   1742  1.1  mrg     { ibase = 16; obase = -16; }
   1743  1.1  mrg     break;
   1744  1.1  mrg 
   1745  1.1  mrg   case 12:
   1746  1.1  mrg 
   1747  1.1  mrg /* Line 1464 of yacc.c  */
   1748  1.1  mrg #line 190 "calc.y"
   1749  1.1  mrg     { ibase = 0;  obase = 10; }
   1750  1.1  mrg     break;
   1751  1.1  mrg 
   1752  1.1  mrg   case 13:
   1753  1.1  mrg 
   1754  1.1  mrg /* Line 1464 of yacc.c  */
   1755  1.1  mrg #line 191 "calc.y"
   1756  1.1  mrg     { exit (0); }
   1757  1.1  mrg     break;
   1758  1.1  mrg 
   1759  1.1  mrg   case 15:
   1760  1.1  mrg 
   1761  1.1  mrg /* Line 1464 of yacc.c  */
   1762  1.1  mrg #line 198 "calc.y"
   1763  1.1  mrg     { sp--; mpz_add    (sp, sp, sp+1); }
   1764  1.1  mrg     break;
   1765  1.1  mrg 
   1766  1.1  mrg   case 16:
   1767  1.1  mrg 
   1768  1.1  mrg /* Line 1464 of yacc.c  */
   1769  1.1  mrg #line 199 "calc.y"
   1770  1.1  mrg     { sp--; mpz_sub    (sp, sp, sp+1); }
   1771  1.1  mrg     break;
   1772  1.1  mrg 
   1773  1.1  mrg   case 17:
   1774  1.1  mrg 
   1775  1.1  mrg /* Line 1464 of yacc.c  */
   1776  1.1  mrg #line 200 "calc.y"
   1777  1.1  mrg     { sp--; mpz_mul    (sp, sp, sp+1); }
   1778  1.1  mrg     break;
   1779  1.1  mrg 
   1780  1.1  mrg   case 18:
   1781  1.1  mrg 
   1782  1.1  mrg /* Line 1464 of yacc.c  */
   1783  1.1  mrg #line 201 "calc.y"
   1784  1.1  mrg     { sp--; mpz_fdiv_q (sp, sp, sp+1); }
   1785  1.1  mrg     break;
   1786  1.1  mrg 
   1787  1.1  mrg   case 19:
   1788  1.1  mrg 
   1789  1.1  mrg /* Line 1464 of yacc.c  */
   1790  1.1  mrg #line 202 "calc.y"
   1791  1.1  mrg     { sp--; mpz_fdiv_r (sp, sp, sp+1); }
   1792  1.1  mrg     break;
   1793  1.1  mrg 
   1794  1.1  mrg   case 20:
   1795  1.1  mrg 
   1796  1.1  mrg /* Line 1464 of yacc.c  */
   1797  1.1  mrg #line 203 "calc.y"
   1798  1.1  mrg     { CHECK_UI ("Exponent", sp);
   1799  1.1  mrg                     sp--; mpz_pow_ui (sp, sp, mpz_get_ui (sp+1)); }
   1800  1.1  mrg     break;
   1801  1.1  mrg 
   1802  1.1  mrg   case 21:
   1803  1.1  mrg 
   1804  1.1  mrg /* Line 1464 of yacc.c  */
   1805  1.1  mrg #line 205 "calc.y"
   1806  1.1  mrg     { CHECK_UI ("Shift count", sp);
   1807  1.1  mrg                     sp--; mpz_mul_2exp (sp, sp, mpz_get_ui (sp+1)); }
   1808  1.1  mrg     break;
   1809  1.1  mrg 
   1810  1.1  mrg   case 22:
   1811  1.1  mrg 
   1812  1.1  mrg /* Line 1464 of yacc.c  */
   1813  1.1  mrg #line 207 "calc.y"
   1814  1.1  mrg     { CHECK_UI ("Shift count", sp);
   1815  1.1  mrg                     sp--; mpz_fdiv_q_2exp (sp, sp, mpz_get_ui (sp+1)); }
   1816  1.1  mrg     break;
   1817  1.1  mrg 
   1818  1.1  mrg   case 23:
   1819  1.1  mrg 
   1820  1.1  mrg /* Line 1464 of yacc.c  */
   1821  1.1  mrg #line 209 "calc.y"
   1822  1.1  mrg     { CHECK_UI ("Factorial", sp);
   1823  1.1  mrg                     mpz_fac_ui (sp, mpz_get_ui (sp)); }
   1824  1.1  mrg     break;
   1825  1.1  mrg 
   1826  1.1  mrg   case 24:
   1827  1.1  mrg 
   1828  1.1  mrg /* Line 1464 of yacc.c  */
   1829  1.1  mrg #line 211 "calc.y"
   1830  1.1  mrg     { mpz_neg (sp, sp); }
   1831  1.1  mrg     break;
   1832  1.1  mrg 
   1833  1.1  mrg   case 25:
   1834  1.1  mrg 
   1835  1.1  mrg /* Line 1464 of yacc.c  */
   1836  1.1  mrg #line 213 "calc.y"
   1837  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <  0); }
   1838  1.1  mrg     break;
   1839  1.1  mrg 
   1840  1.1  mrg   case 26:
   1841  1.1  mrg 
   1842  1.1  mrg /* Line 1464 of yacc.c  */
   1843  1.1  mrg #line 214 "calc.y"
   1844  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) <= 0); }
   1845  1.1  mrg     break;
   1846  1.1  mrg 
   1847  1.1  mrg   case 27:
   1848  1.1  mrg 
   1849  1.1  mrg /* Line 1464 of yacc.c  */
   1850  1.1  mrg #line 215 "calc.y"
   1851  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) == 0); }
   1852  1.1  mrg     break;
   1853  1.1  mrg 
   1854  1.1  mrg   case 28:
   1855  1.1  mrg 
   1856  1.1  mrg /* Line 1464 of yacc.c  */
   1857  1.1  mrg #line 216 "calc.y"
   1858  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) != 0); }
   1859  1.1  mrg     break;
   1860  1.1  mrg 
   1861  1.1  mrg   case 29:
   1862  1.1  mrg 
   1863  1.1  mrg /* Line 1464 of yacc.c  */
   1864  1.1  mrg #line 217 "calc.y"
   1865  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >= 0); }
   1866  1.1  mrg     break;
   1867  1.1  mrg 
   1868  1.1  mrg   case 30:
   1869  1.1  mrg 
   1870  1.1  mrg /* Line 1464 of yacc.c  */
   1871  1.1  mrg #line 218 "calc.y"
   1872  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_cmp (sp, sp+1) >  0); }
   1873  1.1  mrg     break;
   1874  1.1  mrg 
   1875  1.1  mrg   case 31:
   1876  1.1  mrg 
   1877  1.1  mrg /* Line 1464 of yacc.c  */
   1878  1.1  mrg #line 220 "calc.y"
   1879  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_sgn (sp) && mpz_sgn (sp+1)); }
   1880  1.1  mrg     break;
   1881  1.1  mrg 
   1882  1.1  mrg   case 32:
   1883  1.1  mrg 
   1884  1.1  mrg /* Line 1464 of yacc.c  */
   1885  1.1  mrg #line 221 "calc.y"
   1886  1.1  mrg     { sp--; mpz_set_ui (sp, mpz_sgn (sp) || mpz_sgn (sp+1)); }
   1887  1.1  mrg     break;
   1888  1.1  mrg 
   1889  1.1  mrg   case 33:
   1890  1.1  mrg 
   1891  1.1  mrg /* Line 1464 of yacc.c  */
   1892  1.1  mrg #line 223 "calc.y"
   1893  1.1  mrg     { mpz_abs (sp, sp); }
   1894  1.1  mrg     break;
   1895  1.1  mrg 
   1896  1.1  mrg   case 34:
   1897  1.1  mrg 
   1898  1.1  mrg /* Line 1464 of yacc.c  */
   1899  1.1  mrg #line 224 "calc.y"
   1900  1.1  mrg     { sp--; CHECK_UI ("Binomial base", sp+1);
   1901  1.1  mrg                                    mpz_bin_ui (sp, sp, mpz_get_ui (sp+1)); }
   1902  1.1  mrg     break;
   1903  1.1  mrg 
   1904  1.1  mrg   case 35:
   1905  1.1  mrg 
   1906  1.1  mrg /* Line 1464 of yacc.c  */
   1907  1.1  mrg #line 226 "calc.y"
   1908  1.1  mrg     { CHECK_UI ("Fibonacci", sp);
   1909  1.1  mrg                                    mpz_fib_ui (sp, mpz_get_ui (sp)); }
   1910  1.1  mrg     break;
   1911  1.1  mrg 
   1912  1.1  mrg   case 37:
   1913  1.1  mrg 
   1914  1.1  mrg /* Line 1464 of yacc.c  */
   1915  1.1  mrg #line 229 "calc.y"
   1916  1.1  mrg     { sp--; mpz_set_si (sp,
   1917  1.1  mrg                                          mpz_kronecker (sp, sp+1)); }
   1918  1.1  mrg     break;
   1919  1.1  mrg 
   1920  1.1  mrg   case 39:
   1921  1.1  mrg 
   1922  1.1  mrg /* Line 1464 of yacc.c  */
   1923  1.1  mrg #line 232 "calc.y"
   1924  1.1  mrg     { CHECK_UI ("Lucas number", sp);
   1925  1.1  mrg                                    mpz_lucnum_ui (sp, mpz_get_ui (sp)); }
   1926  1.1  mrg     break;
   1927  1.1  mrg 
   1928  1.1  mrg   case 40:
   1929  1.1  mrg 
   1930  1.1  mrg /* Line 1464 of yacc.c  */
   1931  1.1  mrg #line 234 "calc.y"
   1932  1.1  mrg     { mpz_nextprime (sp, sp); }
   1933  1.1  mrg     break;
   1934  1.1  mrg 
   1935  1.1  mrg   case 41:
   1936  1.1  mrg 
   1937  1.1  mrg /* Line 1464 of yacc.c  */
   1938  1.1  mrg #line 235 "calc.y"
   1939  1.1  mrg     { sp -= 2; mpz_powm (sp, sp, sp+1, sp+2); }
   1940  1.1  mrg     break;
   1941  1.1  mrg 
   1942  1.1  mrg   case 42:
   1943  1.1  mrg 
   1944  1.1  mrg /* Line 1464 of yacc.c  */
   1945  1.1  mrg #line 236 "calc.y"
   1946  1.1  mrg     { sp--; CHECK_UI ("Nth-root", sp+1);
   1947  1.1  mrg                                    mpz_root (sp, sp, mpz_get_ui (sp+1)); }
   1948  1.1  mrg     break;
   1949  1.1  mrg 
   1950  1.1  mrg   case 43:
   1951  1.1  mrg 
   1952  1.1  mrg /* Line 1464 of yacc.c  */
   1953  1.1  mrg #line 238 "calc.y"
   1954  1.1  mrg     { mpz_sqrt (sp, sp); }
   1955  1.1  mrg     break;
   1956  1.1  mrg 
   1957  1.1  mrg   case 44:
   1958  1.1  mrg 
   1959  1.1  mrg /* Line 1464 of yacc.c  */
   1960  1.1  mrg #line 240 "calc.y"
   1961  1.1  mrg     {
   1962  1.1  mrg         sp++;
   1963  1.1  mrg         CHECK_OVERFLOW ();
   1964  1.1  mrg         CHECK_VARIABLE ((yyvsp[(1) - (1)].var));
   1965  1.1  mrg         mpz_set (sp, variable[(yyvsp[(1) - (1)].var)]);
   1966  1.1  mrg       }
   1967  1.1  mrg     break;
   1968  1.1  mrg 
   1969  1.1  mrg   case 45:
   1970  1.1  mrg 
   1971  1.1  mrg /* Line 1464 of yacc.c  */
   1972  1.1  mrg #line 246 "calc.y"
   1973  1.1  mrg     {
   1974  1.1  mrg         sp++;
   1975  1.1  mrg         CHECK_OVERFLOW ();
   1976  1.1  mrg         if (mpz_set_str (sp, (yyvsp[(1) - (1)].str), ibase) != 0)
   1977  1.1  mrg           {
   1978  1.1  mrg             fprintf (stderr, "Invalid number: %s\n", (yyvsp[(1) - (1)].str));
   1979  1.1  mrg             YYERROR;
   1980  1.1  mrg           }
   1981  1.1  mrg       }
   1982  1.1  mrg     break;
   1983  1.1  mrg 
   1984  1.1  mrg   case 47:
   1985  1.1  mrg 
   1986  1.1  mrg /* Line 1464 of yacc.c  */
   1987  1.1  mrg #line 258 "calc.y"
   1988  1.1  mrg     { sp--; mpz_gcd (sp, sp, sp+1); }
   1989  1.1  mrg     break;
   1990  1.1  mrg 
   1991  1.1  mrg   case 49:
   1992  1.1  mrg 
   1993  1.1  mrg /* Line 1464 of yacc.c  */
   1994  1.1  mrg #line 262 "calc.y"
   1995  1.1  mrg     { sp--; mpz_lcm (sp, sp, sp+1); }
   1996  1.1  mrg     break;
   1997  1.1  mrg 
   1998  1.1  mrg 
   1999  1.1  mrg 
   2000  1.1  mrg /* Line 1464 of yacc.c  */
   2001  1.1  mrg #line 2000 "calc.c"
   2002  1.1  mrg       default: break;
   2003  1.1  mrg     }
   2004  1.1  mrg   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
   2005  1.1  mrg 
   2006  1.1  mrg   YYPOPSTACK (yylen);
   2007  1.1  mrg   yylen = 0;
   2008  1.1  mrg   YY_STACK_PRINT (yyss, yyssp);
   2009  1.1  mrg 
   2010  1.1  mrg   *++yyvsp = yyval;
   2011  1.1  mrg 
   2012  1.1  mrg   /* Now `shift' the result of the reduction.  Determine what state
   2013  1.1  mrg      that goes to, based on the state we popped back to and the rule
   2014  1.1  mrg      number reduced by.  */
   2015  1.1  mrg 
   2016  1.1  mrg   yyn = yyr1[yyn];
   2017  1.1  mrg 
   2018  1.1  mrg   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
   2019  1.1  mrg   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
   2020  1.1  mrg     yystate = yytable[yystate];
   2021  1.1  mrg   else
   2022  1.1  mrg     yystate = yydefgoto[yyn - YYNTOKENS];
   2023  1.1  mrg 
   2024  1.1  mrg   goto yynewstate;
   2025  1.1  mrg 
   2026  1.1  mrg 
   2027  1.1  mrg /*------------------------------------.
   2028  1.1  mrg | yyerrlab -- here on detecting error |
   2029  1.1  mrg `------------------------------------*/
   2030  1.1  mrg yyerrlab:
   2031  1.1  mrg   /* If not already recovering from an error, report this error.  */
   2032  1.1  mrg   if (!yyerrstatus)
   2033  1.1  mrg     {
   2034  1.1  mrg       ++yynerrs;
   2035  1.1  mrg #if ! YYERROR_VERBOSE
   2036  1.1  mrg       yyerror (YY_("syntax error"));
   2037  1.1  mrg #else
   2038  1.1  mrg       {
   2039  1.1  mrg 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
   2040  1.1  mrg 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
   2041  1.1  mrg 	  {
   2042  1.1  mrg 	    YYSIZE_T yyalloc = 2 * yysize;
   2043  1.1  mrg 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
   2044  1.1  mrg 	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
   2045  1.1  mrg 	    if (yymsg != yymsgbuf)
   2046  1.1  mrg 	      YYSTACK_FREE (yymsg);
   2047  1.1  mrg 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
   2048  1.1  mrg 	    if (yymsg)
   2049  1.1  mrg 	      yymsg_alloc = yyalloc;
   2050  1.1  mrg 	    else
   2051  1.1  mrg 	      {
   2052  1.1  mrg 		yymsg = yymsgbuf;
   2053  1.1  mrg 		yymsg_alloc = sizeof yymsgbuf;
   2054  1.1  mrg 	      }
   2055  1.1  mrg 	  }
   2056  1.1  mrg 
   2057  1.1  mrg 	if (0 < yysize && yysize <= yymsg_alloc)
   2058  1.1  mrg 	  {
   2059  1.1  mrg 	    (void) yysyntax_error (yymsg, yystate, yychar);
   2060  1.1  mrg 	    yyerror (yymsg);
   2061  1.1  mrg 	  }
   2062  1.1  mrg 	else
   2063  1.1  mrg 	  {
   2064  1.1  mrg 	    yyerror (YY_("syntax error"));
   2065  1.1  mrg 	    if (yysize != 0)
   2066  1.1  mrg 	      goto yyexhaustedlab;
   2067  1.1  mrg 	  }
   2068  1.1  mrg       }
   2069  1.1  mrg #endif
   2070  1.1  mrg     }
   2071  1.1  mrg 
   2072  1.1  mrg 
   2073  1.1  mrg 
   2074  1.1  mrg   if (yyerrstatus == 3)
   2075  1.1  mrg     {
   2076  1.1  mrg       /* If just tried and failed to reuse lookahead token after an
   2077  1.1  mrg 	 error, discard it.  */
   2078  1.1  mrg 
   2079  1.1  mrg       if (yychar <= YYEOF)
   2080  1.1  mrg 	{
   2081  1.1  mrg 	  /* Return failure if at end of input.  */
   2082  1.1  mrg 	  if (yychar == YYEOF)
   2083  1.1  mrg 	    YYABORT;
   2084  1.1  mrg 	}
   2085  1.1  mrg       else
   2086  1.1  mrg 	{
   2087  1.1  mrg 	  yydestruct ("Error: discarding",
   2088  1.1  mrg 		      yytoken, &yylval);
   2089  1.1  mrg 	  yychar = YYEMPTY;
   2090  1.1  mrg 	}
   2091  1.1  mrg     }
   2092  1.1  mrg 
   2093  1.1  mrg   /* Else will try to reuse lookahead token after shifting the error
   2094  1.1  mrg      token.  */
   2095  1.1  mrg   goto yyerrlab1;
   2096  1.1  mrg 
   2097  1.1  mrg 
   2098  1.1  mrg /*---------------------------------------------------.
   2099  1.1  mrg | yyerrorlab -- error raised explicitly by YYERROR.  |
   2100  1.1  mrg `---------------------------------------------------*/
   2101  1.1  mrg yyerrorlab:
   2102  1.1  mrg 
   2103  1.1  mrg   /* Pacify compilers like GCC when the user code never invokes
   2104  1.1  mrg      YYERROR and the label yyerrorlab therefore never appears in user
   2105  1.1  mrg      code.  */
   2106  1.1  mrg   if (/*CONSTCOND*/ 0)
   2107  1.1  mrg      goto yyerrorlab;
   2108  1.1  mrg 
   2109  1.1  mrg   /* Do not reclaim the symbols of the rule which action triggered
   2110  1.1  mrg      this YYERROR.  */
   2111  1.1  mrg   YYPOPSTACK (yylen);
   2112  1.1  mrg   yylen = 0;
   2113  1.1  mrg   YY_STACK_PRINT (yyss, yyssp);
   2114  1.1  mrg   yystate = *yyssp;
   2115  1.1  mrg   goto yyerrlab1;
   2116  1.1  mrg 
   2117  1.1  mrg 
   2118  1.1  mrg /*-------------------------------------------------------------.
   2119  1.1  mrg | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   2120  1.1  mrg `-------------------------------------------------------------*/
   2121  1.1  mrg yyerrlab1:
   2122  1.1  mrg   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
   2123  1.1  mrg 
   2124  1.1  mrg   for (;;)
   2125  1.1  mrg     {
   2126  1.1  mrg       yyn = yypact[yystate];
   2127  1.1  mrg       if (yyn != YYPACT_NINF)
   2128  1.1  mrg 	{
   2129  1.1  mrg 	  yyn += YYTERROR;
   2130  1.1  mrg 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
   2131  1.1  mrg 	    {
   2132  1.1  mrg 	      yyn = yytable[yyn];
   2133  1.1  mrg 	      if (0 < yyn)
   2134  1.1  mrg 		break;
   2135  1.1  mrg 	    }
   2136  1.1  mrg 	}
   2137  1.1  mrg 
   2138  1.1  mrg       /* Pop the current state because it cannot handle the error token.  */
   2139  1.1  mrg       if (yyssp == yyss)
   2140  1.1  mrg 	YYABORT;
   2141  1.1  mrg 
   2142  1.1  mrg 
   2143  1.1  mrg       yydestruct ("Error: popping",
   2144  1.1  mrg 		  yystos[yystate], yyvsp);
   2145  1.1  mrg       YYPOPSTACK (1);
   2146  1.1  mrg       yystate = *yyssp;
   2147  1.1  mrg       YY_STACK_PRINT (yyss, yyssp);
   2148  1.1  mrg     }
   2149  1.1  mrg 
   2150  1.1  mrg   *++yyvsp = yylval;
   2151  1.1  mrg 
   2152  1.1  mrg 
   2153  1.1  mrg   /* Shift the error token.  */
   2154  1.1  mrg   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
   2155  1.1  mrg 
   2156  1.1  mrg   yystate = yyn;
   2157  1.1  mrg   goto yynewstate;
   2158  1.1  mrg 
   2159  1.1  mrg 
   2160  1.1  mrg /*-------------------------------------.
   2161  1.1  mrg | yyacceptlab -- YYACCEPT comes here.  |
   2162  1.1  mrg `-------------------------------------*/
   2163  1.1  mrg yyacceptlab:
   2164  1.1  mrg   yyresult = 0;
   2165  1.1  mrg   goto yyreturn;
   2166  1.1  mrg 
   2167  1.1  mrg /*-----------------------------------.
   2168  1.1  mrg | yyabortlab -- YYABORT comes here.  |
   2169  1.1  mrg `-----------------------------------*/
   2170  1.1  mrg yyabortlab:
   2171  1.1  mrg   yyresult = 1;
   2172  1.1  mrg   goto yyreturn;
   2173  1.1  mrg 
   2174  1.1  mrg #if !defined(yyoverflow) || YYERROR_VERBOSE
   2175  1.1  mrg /*-------------------------------------------------.
   2176  1.1  mrg | yyexhaustedlab -- memory exhaustion comes here.  |
   2177  1.1  mrg `-------------------------------------------------*/
   2178  1.1  mrg yyexhaustedlab:
   2179  1.1  mrg   yyerror (YY_("memory exhausted"));
   2180  1.1  mrg   yyresult = 2;
   2181  1.1  mrg   /* Fall through.  */
   2182  1.1  mrg #endif
   2183  1.1  mrg 
   2184  1.1  mrg yyreturn:
   2185  1.1  mrg   if (yychar != YYEMPTY)
   2186  1.1  mrg      yydestruct ("Cleanup: discarding lookahead",
   2187  1.1  mrg 		 yytoken, &yylval);
   2188  1.1  mrg   /* Do not reclaim the symbols of the rule which action triggered
   2189  1.1  mrg      this YYABORT or YYACCEPT.  */
   2190  1.1  mrg   YYPOPSTACK (yylen);
   2191  1.1  mrg   YY_STACK_PRINT (yyss, yyssp);
   2192  1.1  mrg   while (yyssp != yyss)
   2193  1.1  mrg     {
   2194  1.1  mrg       yydestruct ("Cleanup: popping",
   2195  1.1  mrg 		  yystos[*yyssp], yyvsp);
   2196  1.1  mrg       YYPOPSTACK (1);
   2197  1.1  mrg     }
   2198  1.1  mrg #ifndef yyoverflow
   2199  1.1  mrg   if (yyss != yyssa)
   2200  1.1  mrg     YYSTACK_FREE (yyss);
   2201  1.1  mrg #endif
   2202  1.1  mrg #if YYERROR_VERBOSE
   2203  1.1  mrg   if (yymsg != yymsgbuf)
   2204  1.1  mrg     YYSTACK_FREE (yymsg);
   2205  1.1  mrg #endif
   2206  1.1  mrg   /* Make sure YYID is used.  */
   2207  1.1  mrg   return YYID (yyresult);
   2208  1.1  mrg }
   2209  1.1  mrg 
   2210  1.1  mrg 
   2211  1.1  mrg 
   2212  1.1  mrg /* Line 1684 of yacc.c  */
   2213  1.1  mrg #line 264 "calc.y"
   2214  1.1  mrg 
   2215  1.1  mrg 
   2216  1.1  mrg yyerror (char *s)
   2217  1.1  mrg {
   2218  1.1  mrg   fprintf (stderr, "%s\n", s);
   2219  1.1  mrg }
   2220  1.1  mrg 
   2221  1.1  mrg int calc_option_readline = -1;
   2222  1.1  mrg 
   2223  1.1  mrg int
   2224  1.1  mrg main (int argc, char *argv[])
   2225  1.1  mrg {
   2226  1.1  mrg   int  i;
   2227  1.1  mrg 
   2228  1.1  mrg   for (i = 1; i < argc; i++)
   2229  1.1  mrg     {
   2230  1.1  mrg       if (strcmp (argv[i], "--readline") == 0)
   2231  1.1  mrg         calc_option_readline = 1;
   2232  1.1  mrg       else if (strcmp (argv[i], "--noreadline") == 0)
   2233  1.1  mrg         calc_option_readline = 0;
   2234  1.1  mrg       else if (strcmp (argv[i], "--help") == 0)
   2235  1.1  mrg         {
   2236  1.1  mrg           printf ("Usage: calc [--option]...\n");
   2237  1.1  mrg           printf ("  --readline    use readline\n");
   2238  1.1  mrg           printf ("  --noreadline  don't use readline\n");
   2239  1.1  mrg           printf ("  --help        this message\n");
   2240  1.1  mrg           printf ("Readline is only available when compiled in,\n");
   2241  1.1  mrg           printf ("and in that case it's the default on a tty.\n");
   2242  1.1  mrg           exit (0);
   2243  1.1  mrg         }
   2244  1.1  mrg       else
   2245  1.1  mrg         {
   2246  1.1  mrg           fprintf (stderr, "Unrecognised option: %s\n", argv[i]);
   2247  1.1  mrg           exit (1);
   2248  1.1  mrg         }
   2249  1.1  mrg     }
   2250  1.1  mrg 
   2251  1.1  mrg #if WITH_READLINE
   2252  1.1  mrg   calc_init_readline ();
   2253  1.1  mrg #else
   2254  1.1  mrg   if (calc_option_readline == 1)
   2255  1.1  mrg     {
   2256  1.1  mrg       fprintf (stderr, "Readline support not available\n");
   2257  1.1  mrg       exit (1);
   2258  1.1  mrg     }
   2259  1.1  mrg #endif
   2260  1.1  mrg 
   2261  1.1  mrg   for (i = 0; i < numberof (variable); i++)
   2262  1.1  mrg     mpz_init (variable[i]);
   2263  1.1  mrg 
   2264  1.1  mrg   for (i = 0; i < numberof (stack); i++)
   2265  1.1  mrg     mpz_init (stack[i]);
   2266  1.1  mrg 
   2267  1.1  mrg   return yyparse ();
   2268           }
   2269           
   2270