File indexing completed on 2024-12-22 04:17:54

0001 /* A Bison parser, made by GNU Bison 2.3.  */
0002 
0003 /* Skeleton implementation for Bison's Yacc-like parsers in C
0004 
0005    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
0006    Free Software Foundation, Inc.
0007 
0008    This program is free software; you can redistribute it and/or modify
0009    it under the terms of the GNU General Public License as published by
0010    the Free Software Foundation; either version 2, or (at your option)
0011    any later version.
0012 
0013    This program is distributed in the hope that it will be useful,
0014    but WITHOUT ANY WARRANTY; without even the implied warranty of
0015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0016    GNU General Public License for more details.
0017 
0018    You should have received a copy of the GNU General Public License
0019    along with this program; if not, write to the Free Software
0020    Foundation, Inc., 51 Franklin Street, Fifth Floor,
0021    Boston, MA 02110-1301, USA.  */
0022 
0023 /* As a special exception, you may create a larger work that contains
0024    part or all of the Bison parser skeleton and distribute that work
0025    under terms of your choice, so long as that work isn't itself a
0026    parser generator using the skeleton or a modified version thereof
0027    as a parser skeleton.  Alternatively, if you modify or redistribute
0028    the parser skeleton itself, you may (at your option) remove this
0029    special exception, which will cause the skeleton and the resulting
0030    Bison output files to be licensed under the GNU General Public
0031    License without this special exception.
0032 
0033    This special exception was added by the Free Software Foundation in
0034    version 2.2 of Bison.  */
0035 
0036 /* C LALR(1) parser skeleton written by Richard Stallman, by
0037    simplifying the original so-called "semantic" parser.  */
0038 
0039 /* All symbols defined below should begin with yy or YY, to avoid
0040    infringing on user name space.  This should be done even for local
0041    variables, as they might otherwise be expanded by user macros.
0042    There are some unavoidable exceptions within include files to
0043    define necessary library symbols; they are noted "INFRINGES ON
0044    USER NAME SPACE" below.  */
0045 
0046 /* Identify Bison output.  */
0047 #define YYBISON 1
0048 
0049 /* Bison version.  */
0050 #define YYBISON_VERSION "2.3"
0051 
0052 /* Skeleton name.  */
0053 #define YYSKELETON_NAME "yacc.c"
0054 
0055 /* Pure parsers.  */
0056 #define YYPURE 0
0057 
0058 /* Using locations.  */
0059 #define YYLSP_NEEDED 0
0060 
0061 
0062 
0063 /* Tokens.  */
0064 #ifndef YYTOKENTYPE
0065 # define YYTOKENTYPE
0066    /* Put the tokens into the symbol table, so that GDB and other debuggers
0067       know about them.  */
0068    enum yytokentype {
0069      T_NUMBER = 258,
0070      T_IDENTIFIER = 259,
0071      T_DATA = 260,
0072      T_OPENPAR = 261,
0073      T_CLOSEPAR = 262,
0074      T_COMMA = 263,
0075      T_INVALID = 264,
0076      T_LOR = 265,
0077      T_LAND = 266,
0078      T_OR = 267,
0079      T_AND = 268,
0080      T_NE = 269,
0081      T_EQ = 270,
0082      T_GE = 271,
0083      T_GT = 272,
0084      T_LE = 273,
0085      T_LT = 274,
0086      T_SUBTRACT = 275,
0087      T_ADD = 276,
0088      T_MOD = 277,
0089      T_DIVIDE = 278,
0090      T_MULTIPLY = 279,
0091      T_NOT = 280,
0092      U_SUBTRACT = 281,
0093      T_EXP = 282
0094    };
0095 #endif
0096 /* Tokens.  */
0097 #define T_NUMBER 258
0098 #define T_IDENTIFIER 259
0099 #define T_DATA 260
0100 #define T_OPENPAR 261
0101 #define T_CLOSEPAR 262
0102 #define T_COMMA 263
0103 #define T_INVALID 264
0104 #define T_LOR 265
0105 #define T_LAND 266
0106 #define T_OR 267
0107 #define T_AND 268
0108 #define T_NE 269
0109 #define T_EQ 270
0110 #define T_GE 271
0111 #define T_GT 272
0112 #define T_LE 273
0113 #define T_LT 274
0114 #define T_SUBTRACT 275
0115 #define T_ADD 276
0116 #define T_MOD 277
0117 #define T_DIVIDE 278
0118 #define T_MULTIPLY 279
0119 #define T_NOT 280
0120 #define U_SUBTRACT 281
0121 #define T_EXP 282
0122 
0123 
0124 
0125 
0126 /* Copy the first part of user declarations.  */
0127 #line 2 "../../../src/libkstmath/eparse.y"
0128 
0129 #include <assert.h>
0130 #include <stdlib.h>
0131 #include <stdio.h>
0132 
0133 #include <objectstore.h>
0134 
0135 #include "enodefactory.h"
0136 
0137 #include "eparse-eh.h"
0138 extern int yylex(Kst::ObjectStore *store);
0139 KSTMATH_EXPORT void *ParsedEquation = 0L;
0140 
0141 
0142 
0143 /* Enabling traces.  */
0144 #ifndef YYDEBUG
0145 # define YYDEBUG 0
0146 #endif
0147 
0148 /* Enabling verbose error messages.  */
0149 #ifdef YYERROR_VERBOSE
0150 # undef YYERROR_VERBOSE
0151 # define YYERROR_VERBOSE 1
0152 #else
0153 # define YYERROR_VERBOSE 0
0154 #endif
0155 
0156 /* Enabling the token table.  */
0157 #ifndef YYTOKEN_TABLE
0158 # define YYTOKEN_TABLE 0
0159 #endif
0160 
0161 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
0162 typedef union YYSTYPE
0163 #line 20 "../../../src/libkstmath/eparse.y"
0164 {
0165         char *data;
0166         double number;
0167         void *n; /* tree node */
0168         char character;
0169        }
0170 /* Line 193 of yacc.c.  */
0171 #line 172 "eparse.tab.c"
0172     YYSTYPE;
0173 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
0174 # define YYSTYPE_IS_DECLARED 1
0175 # define YYSTYPE_IS_TRIVIAL 1
0176 #endif
0177 
0178 
0179 
0180 /* Copy the second part of user declarations.  */
0181 
0182 
0183 /* Line 216 of yacc.c.  */
0184 #line 185 "eparse.tab.c"
0185 
0186 #ifdef short
0187 # undef short
0188 #endif
0189 
0190 #ifdef YYTYPE_UINT8
0191 typedef YYTYPE_UINT8 yytype_uint8;
0192 #else
0193 typedef unsigned char yytype_uint8;
0194 #endif
0195 
0196 #ifdef YYTYPE_INT8
0197 typedef YYTYPE_INT8 yytype_int8;
0198 #elif (defined __STDC__ || defined __C99__FUNC__ \
0199      || defined __cplusplus || defined _MSC_VER)
0200 typedef signed char yytype_int8;
0201 #else
0202 typedef short int yytype_int8;
0203 #endif
0204 
0205 #ifdef YYTYPE_UINT16
0206 typedef YYTYPE_UINT16 yytype_uint16;
0207 #else
0208 typedef unsigned short int yytype_uint16;
0209 #endif
0210 
0211 #ifdef YYTYPE_INT16
0212 typedef YYTYPE_INT16 yytype_int16;
0213 #else
0214 typedef short int yytype_int16;
0215 #endif
0216 
0217 #ifndef YYSIZE_T
0218 # ifdef __SIZE_TYPE__
0219 #  define YYSIZE_T __SIZE_TYPE__
0220 # elif defined size_t
0221 #  define YYSIZE_T size_t
0222 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
0223      || defined __cplusplus || defined _MSC_VER)
0224 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
0225 #  define YYSIZE_T size_t
0226 # else
0227 #  define YYSIZE_T unsigned int
0228 # endif
0229 #endif
0230 
0231 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
0232 
0233 #ifndef YY_
0234 # if YYENABLE_NLS
0235 #  if ENABLE_NLS
0236 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
0237 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
0238 #  endif
0239 # endif
0240 # ifndef YY_
0241 #  define YY_(msgid) msgid
0242 # endif
0243 #endif
0244 
0245 /* Suppress unused-variable warnings by "using" E.  */
0246 #if ! defined lint || defined __GNUC__
0247 # define YYUSE(e) ((void) (e))
0248 #else
0249 # define YYUSE(e) /* empty */
0250 #endif
0251 
0252 /* Identity function, used to suppress warnings about constant conditions.  */
0253 #ifndef lint
0254 # define YYID(n) (n)
0255 #else
0256 #if (defined __STDC__ || defined __C99__FUNC__ \
0257      || defined __cplusplus || defined _MSC_VER)
0258 static int
0259 YYID (int i)
0260 #else
0261 static int
0262 YYID (i)
0263     int i;
0264 #endif
0265 {
0266   return i;
0267 }
0268 #endif
0269 
0270 #if ! defined yyoverflow || YYERROR_VERBOSE
0271 
0272 /* The parser invokes alloca or malloc; define the necessary symbols.  */
0273 
0274 # ifdef YYSTACK_USE_ALLOCA
0275 #  if YYSTACK_USE_ALLOCA
0276 #   ifdef __GNUC__
0277 #    define YYSTACK_ALLOC __builtin_alloca
0278 #   elif defined __BUILTIN_VA_ARG_INCR
0279 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
0280 #   elif defined _AIX
0281 #    define YYSTACK_ALLOC __alloca
0282 #   elif defined _MSC_VER
0283 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
0284 #    define alloca _alloca
0285 #   else
0286 #    define YYSTACK_ALLOC alloca
0287 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
0288      || defined __cplusplus || defined _MSC_VER)
0289 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
0290 #     ifndef _STDLIB_H
0291 #      define _STDLIB_H 1
0292 #     endif
0293 #    endif
0294 #   endif
0295 #  endif
0296 # endif
0297 
0298 # ifdef YYSTACK_ALLOC
0299    /* Pacify GCC's `empty if-body' warning.  */
0300 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
0301 #  ifndef YYSTACK_ALLOC_MAXIMUM
0302     /* The OS might guarantee only one guard page at the bottom of the stack,
0303        and a page size can be as small as 4096 bytes.  So we cannot safely
0304        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
0305        to allow for a few compiler-allocated temporary stack slots.  */
0306 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
0307 #  endif
0308 # else
0309 #  define YYSTACK_ALLOC YYMALLOC
0310 #  define YYSTACK_FREE YYFREE
0311 #  ifndef YYSTACK_ALLOC_MAXIMUM
0312 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
0313 #  endif
0314 #  if (defined __cplusplus && ! defined _STDLIB_H \
0315        && ! ((defined YYMALLOC || defined malloc) \
0316          && (defined YYFREE || defined free)))
0317 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
0318 #   ifndef _STDLIB_H
0319 #    define _STDLIB_H 1
0320 #   endif
0321 #  endif
0322 #  ifndef YYMALLOC
0323 #   define YYMALLOC malloc
0324 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
0325      || defined __cplusplus || defined _MSC_VER)
0326 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
0327 #   endif
0328 #  endif
0329 #  ifndef YYFREE
0330 #   define YYFREE free
0331 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
0332      || defined __cplusplus || defined _MSC_VER)
0333 void free (void *); /* INFRINGES ON USER NAME SPACE */
0334 #   endif
0335 #  endif
0336 # endif
0337 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
0338 
0339 
0340 #if (! defined yyoverflow \
0341      && (! defined __cplusplus \
0342      || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
0343 
0344 /* A type that is properly aligned for any stack member.  */
0345 union yyalloc
0346 {
0347   yytype_int16 yyss;
0348   YYSTYPE yyvs;
0349   };
0350 
0351 /* The size of the maximum gap between one aligned stack and the next.  */
0352 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
0353 
0354 /* The size of an array large to enough to hold all stacks, each with
0355    N elements.  */
0356 # define YYSTACK_BYTES(N) \
0357      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
0358       + YYSTACK_GAP_MAXIMUM)
0359 
0360 /* Copy COUNT objects from FROM to TO.  The source and destination do
0361    not overlap.  */
0362 # ifndef YYCOPY
0363 #  if defined __GNUC__ && 1 < __GNUC__
0364 #   define YYCOPY(To, From, Count) \
0365       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
0366 #  else
0367 #   define YYCOPY(To, From, Count)      \
0368       do                    \
0369     {                   \
0370       YYSIZE_T yyi;             \
0371       for (yyi = 0; yyi < (Count); yyi++)   \
0372         (To)[yyi] = (From)[yyi];        \
0373     }                   \
0374       while (YYID (0))
0375 #  endif
0376 # endif
0377 
0378 /* Relocate STACK from its old location to the new one.  The
0379    local variables YYSIZE and YYSTACKSIZE give the old and new number of
0380    elements in the stack, and YYPTR gives the new location of the
0381    stack.  Advance YYPTR to a properly aligned location for the next
0382    stack.  */
0383 # define YYSTACK_RELOCATE(Stack)                    \
0384     do                                  \
0385       {                                 \
0386     YYSIZE_T yynewbytes;                        \
0387     YYCOPY (&yyptr->Stack, Stack, yysize);              \
0388     Stack = &yyptr->Stack;                      \
0389     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
0390     yyptr += yynewbytes / sizeof (*yyptr);              \
0391       }                                 \
0392     while (YYID (0))
0393 
0394 #endif
0395 
0396 /* YYFINAL -- State number of the termination state.  */
0397 #define YYFINAL  3
0398 /* YYLAST -- Last index in YYTABLE.  */
0399 #define YYLAST   360
0400 
0401 /* YYNTOKENS -- Number of terminals.  */
0402 #define YYNTOKENS  28
0403 /* YYNNTS -- Number of nonterminals.  */
0404 #define YYNNTS  17
0405 /* YYNRULES -- Number of rules.  */
0406 #define YYNRULES  68
0407 /* YYNRULES -- Number of states.  */
0408 #define YYNSTATES  106
0409 
0410 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
0411 #define YYUNDEFTOK  2
0412 #define YYMAXUTOK   282
0413 
0414 #define YYTRANSLATE(YYX)                        \
0415   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
0416 
0417 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
0418 static const yytype_uint8 yytranslate[] =
0419 {
0420        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0421        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0422        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0423        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0424        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0425        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0426        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0431        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0444        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
0445        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
0446        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
0447       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
0448       25,    26,    27
0449 };
0450 
0451 #if YYDEBUG
0452 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
0453    YYRHS.  */
0454 static const yytype_uint8 yyprhs[] =
0455 {
0456        0,     0,     3,     4,     7,     9,    10,    12,    16,    19,
0457       21,    25,    28,    30,    34,    38,    42,    46,    50,    54,
0458       57,    60,    63,    66,    69,    72,    74,    78,    82,    86,
0459       90,    92,    95,    98,   102,   106,   110,   113,   116,   119,
0460      121,   124,   127,   130,   132,   136,   140,   143,   146,   148,
0461      152,   155,   157,   159,   164,   168,   174,   179,   183,   185,
0462      188,   190,   193,   195,   199,   201,   205,   206,   210
0463 };
0464 
0465 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
0466 static const yytype_int8 yyrhs[] =
0467 {
0468       29,     0,    -1,    -1,    30,    31,    -1,    32,    -1,    -1,
0469       33,    -1,    33,    10,    34,    -1,    10,     1,    -1,    34,
0470       -1,    34,    11,    35,    -1,    11,     1,    -1,    35,    -1,
0471       35,    19,    36,    -1,    35,    18,    36,    -1,    35,    17,
0472       36,    -1,    35,    16,    36,    -1,    35,    15,    36,    -1,
0473       35,    14,    36,    -1,    19,     1,    -1,    17,     1,    -1,
0474       18,     1,    -1,    16,     1,    -1,    15,     1,    -1,    14,
0475        1,    -1,    36,    -1,    36,    21,    37,    -1,    36,    20,
0476       37,    -1,    36,    12,    37,    -1,    36,    13,    37,    -1,
0477       37,    -1,    12,     1,    -1,    13,     1,    -1,    37,    24,
0478       38,    -1,    37,    23,    38,    -1,    37,    22,    38,    -1,
0479       24,     1,    -1,    23,     1,    -1,    22,     1,    -1,    38,
0480       -1,    20,    38,    -1,    25,    38,    -1,    25,     1,    -1,
0481       39,    -1,    39,    27,    39,    -1,    39,    27,     1,    -1,
0482       39,    27,    -1,    27,     1,    -1,    40,    -1,     6,    33,
0483        7,    -1,     6,     1,    -1,     4,    -1,     5,    -1,     4,
0484        6,     7,     1,    -1,     4,     6,     7,    -1,     4,     6,
0485       41,     7,     1,    -1,     4,     6,    41,     7,    -1,     4,
0486        6,     1,    -1,     3,    -1,     3,     1,    -1,     9,    -1,
0487        6,     7,    -1,    42,    -1,    42,     8,    44,    -1,    44,
0488       -1,    42,     8,     1,    -1,    -1,    43,     8,    44,    -1,
0489       32,    -1
0490 };
0491 
0492 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
0493 static const yytype_uint8 yyrline[] =
0494 {
0495        0,    46,    46,    46,    57,    60,    63,    67,    69,    71,
0496       75,    77,    79,    83,    85,    87,    89,    91,    93,    95,
0497       97,    99,   101,   103,   105,   107,   111,   113,   115,   117,
0498      119,   121,   123,   127,   129,   131,   133,   135,   137,   139,
0499      143,   145,   147,   149,   153,   155,   157,   159,   161,   165,
0500      167,   169,   171,   173,   175,   180,   182,   184,   186,   188,
0501      190,   192,   196,   200,   202,   204,   206,   206,   210
0502 };
0503 #endif
0504 
0505 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
0506 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
0507    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
0508 static const char *const yytname[] =
0509 {
0510   "$end", "error", "$undefined", "T_NUMBER", "T_IDENTIFIER", "T_DATA",
0511   "T_OPENPAR", "T_CLOSEPAR", "T_COMMA", "T_INVALID", "T_LOR", "T_LAND",
0512   "T_OR", "T_AND", "T_NE", "T_EQ", "T_GE", "T_GT", "T_LE", "T_LT",
0513   "T_SUBTRACT", "T_ADD", "T_MOD", "T_DIVIDE", "T_MULTIPLY", "T_NOT",
0514   "U_SUBTRACT", "T_EXP", "$accept", "WRAPPER", "@1", "PRESTART", "START",
0515   "BOOLEAN_OR", "BOOLEAN_AND", "COMPARISON", "EQUATION", "TERM", "NEG",
0516   "EXP", "ATOMIC", "ARGUMENTS", "ARGLIST", "@2", "ARGUMENT", 0
0517 };
0518 #endif
0519 
0520 # ifdef YYPRINT
0521 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
0522    token YYLEX-NUM.  */
0523 static const yytype_uint16 yytoknum[] =
0524 {
0525        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
0526      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
0527      275,   276,   277,   278,   279,   280,   281,   282
0528 };
0529 # endif
0530 
0531 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
0532 static const yytype_uint8 yyr1[] =
0533 {
0534        0,    28,    30,    29,    31,    31,    32,    33,    33,    33,
0535       34,    34,    34,    35,    35,    35,    35,    35,    35,    35,
0536       35,    35,    35,    35,    35,    35,    36,    36,    36,    36,
0537       36,    36,    36,    37,    37,    37,    37,    37,    37,    37,
0538       38,    38,    38,    38,    39,    39,    39,    39,    39,    40,
0539       40,    40,    40,    40,    40,    40,    40,    40,    40,    40,
0540       40,    40,    41,    42,    42,    42,    43,    42,    44
0541 };
0542 
0543 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
0544 static const yytype_uint8 yyr2[] =
0545 {
0546        0,     2,     0,     2,     1,     0,     1,     3,     2,     1,
0547        3,     2,     1,     3,     3,     3,     3,     3,     3,     2,
0548        2,     2,     2,     2,     2,     1,     3,     3,     3,     3,
0549        1,     2,     2,     3,     3,     3,     2,     2,     2,     1,
0550        2,     2,     2,     1,     3,     3,     2,     2,     1,     3,
0551        2,     1,     1,     4,     3,     5,     4,     3,     1,     2,
0552        1,     2,     1,     3,     1,     3,     0,     3,     1
0553 };
0554 
0555 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
0556    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
0557    means the default is an error.  */
0558 static const yytype_uint8 yydefact[] =
0559 {
0560        2,     0,     5,     1,     0,    51,    52,     0,    60,     0,
0561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0562        0,     0,     0,     0,     0,     3,     4,     6,     9,    12,
0563       25,    30,    39,    43,    48,    59,     0,    50,    61,     0,
0564        8,    11,    31,    32,    24,    23,    22,    20,    21,    19,
0565       40,    38,    37,    36,    42,    41,    47,     0,     0,     0,
0566        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0567        0,     0,     0,    57,     0,    68,     0,    62,     0,    64,
0568       49,     7,    10,    18,    17,    16,    15,    14,    13,    28,
0569       29,    27,    26,    35,    34,    33,    45,    44,    53,     0,
0570        0,     0,    55,    65,    63,    67
0571 };
0572 
0573 /* YYDEFGOTO[NTERM-NUM].  */
0574 static const yytype_int8 yydefgoto[] =
0575 {
0576       -1,     1,     2,    25,    75,    27,    28,    29,    30,    31,
0577       32,    33,    34,    76,    77,    78,    79
0578 };
0579 
0580 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
0581    STATE-NUM.  */
0582 #define YYPACT_NINF -58
0583 static const yytype_int16 yypact[] =
0584 {
0585      -58,     1,   221,   -58,    46,    28,   -58,   146,   -58,    48,
0586       54,    76,    79,    98,    99,   100,   101,   104,   120,   333,
0587      141,   153,   166,   196,   177,   -58,   -58,   169,   181,    23,
0588       15,    52,   -58,   176,   -58,   -58,   121,   -58,   -58,    38,
0589      -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,
0590      -58,   -58,   -58,   -58,   -58,   -58,   -58,   246,   271,   296,
0591      296,   296,   296,   296,   296,   308,   308,   308,   308,   333,
0592      333,   333,     2,   -58,    71,   -58,   197,   204,   205,   -58,
0593      -58,   181,    23,    15,    15,    15,    15,    15,    15,    52,
0594       52,    52,    52,   -58,   -58,   -58,   -58,   176,   -58,    96,
0595      171,   221,   -58,   -58,   -58,   -58
0596 };
0597 
0598 /* YYPGOTO[NTERM-NUM].  */
0599 static const yytype_int16 yypgoto[] =
0600 {
0601      -58,   -58,   -58,   -58,   212,   208,   160,   161,   147,   -35,
0602      -19,   148,   -58,   -58,   -58,   -58,   -57
0603 };
0604 
0605 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
0606    positive, shift that token.  If negative, reduce the rule which
0607    number is the opposite.  If zero, do what YYDEFACT says.
0608    If YYTABLE_NINF, syntax error.  */
0609 #define YYTABLE_NINF -67
0610 static const yytype_int8 yytable[] =
0611 {
0612       50,     3,   -46,    96,    55,     4,     5,     6,     7,   -46,
0613      -46,     8,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,
0614      -46,   -46,   -46,   -46,   -46,   -46,   -46,    65,    66,    24,
0615       89,    90,    91,    92,    36,    67,    68,    59,    60,    61,
0616       62,    63,    64,   104,   105,    80,   -58,    35,    57,    40,
0617       93,    94,    95,   -58,   -58,    41,   -58,   -58,   -58,   -58,
0618      -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,   -58,
0619      -58,   -54,    98,   -58,    69,    70,    71,    42,   -54,   -54,
0620       43,   -54,   -54,   -54,   -54,   -54,   -54,   -54,   -54,   -54,
0621      -54,   -54,   -54,   -54,   -54,   -54,   -56,   102,   -54,    44,
0622       45,    46,    47,   -56,   -56,    48,   -56,   -56,   -56,   -56,
0623      -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,
0624      -56,    49,    73,   -56,     4,     5,     6,     7,    74,   -66,
0625        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
0626       18,    19,    51,    20,    21,    22,    23,    37,    24,     4,
0627        5,     6,     7,    38,    52,     8,     9,    10,    11,    12,
0628       13,    14,    15,    16,    17,    18,    19,    53,    20,    21,
0629       22,    23,   103,    24,     4,     5,     6,     7,    56,    57,
0630        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
0631       18,    19,    58,    20,    21,    22,    23,    54,    24,     4,
0632        5,     6,     7,    72,    99,     8,    83,    84,    85,    86,
0633       87,    88,   100,   101,    26,    39,    19,    81,     0,    82,
0634       97,    23,     0,    24,     4,     5,     6,     7,     0,     0,
0635        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
0636       18,    19,     0,    20,    21,    22,    23,     0,    24,     4,
0637        5,     6,     7,     0,     0,     8,     0,    10,    11,    12,
0638       13,    14,    15,    16,    17,    18,    19,     0,    20,    21,
0639       22,    23,     0,    24,     4,     5,     6,     7,     0,     0,
0640        8,     0,     0,    11,    12,    13,    14,    15,    16,    17,
0641       18,    19,     0,    20,    21,    22,    23,     0,    24,     4,
0642        5,     6,     7,     0,     0,     8,     0,     0,    11,    12,
0643        0,     4,     5,     6,     7,     0,    19,     8,    20,    21,
0644       22,    23,     0,    24,     0,     0,     0,     0,    19,     0,
0645       20,    21,    22,    23,     0,    24,     4,     5,     6,     7,
0646        0,     0,     8,     0,     0,     0,     0,     0,     0,     0,
0647        0,     0,     0,    19,     0,     0,     0,     0,    23,     0,
0648       24
0649 };
0650 
0651 static const yytype_int8 yycheck[] =
0652 {
0653       19,     0,     0,     1,    23,     3,     4,     5,     6,     7,
0654        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
0655       18,    19,    20,    21,    22,    23,    24,    12,    13,    27,
0656       65,    66,    67,    68,     6,    20,    21,    14,    15,    16,
0657       17,    18,    19,   100,   101,     7,     0,     1,    10,     1,
0658       69,    70,    71,     7,     8,     1,    10,    11,    12,    13,
0659       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
0660       24,     0,     1,    27,    22,    23,    24,     1,     7,     8,
0661        1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
0662       19,    20,    21,    22,    23,    24,     0,     1,    27,     1,
0663        1,     1,     1,     7,     8,     1,    10,    11,    12,    13,
0664       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
0665       24,     1,     1,    27,     3,     4,     5,     6,     7,     8,
0666        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
0667       19,    20,     1,    22,    23,    24,    25,     1,    27,     3,
0668        4,     5,     6,     7,     1,     9,    10,    11,    12,    13,
0669       14,    15,    16,    17,    18,    19,    20,     1,    22,    23,
0670       24,    25,     1,    27,     3,     4,     5,     6,     1,    10,
0671        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
0672       19,    20,    11,    22,    23,    24,    25,     1,    27,     3,
0673        4,     5,     6,    27,     7,     9,    59,    60,    61,    62,
0674       63,    64,     8,     8,     2,     7,    20,    57,    -1,    58,
0675       72,    25,    -1,    27,     3,     4,     5,     6,    -1,    -1,
0676        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
0677       19,    20,    -1,    22,    23,    24,    25,    -1,    27,     3,
0678        4,     5,     6,    -1,    -1,     9,    -1,    11,    12,    13,
0679       14,    15,    16,    17,    18,    19,    20,    -1,    22,    23,
0680       24,    25,    -1,    27,     3,     4,     5,     6,    -1,    -1,
0681        9,    -1,    -1,    12,    13,    14,    15,    16,    17,    18,
0682       19,    20,    -1,    22,    23,    24,    25,    -1,    27,     3,
0683        4,     5,     6,    -1,    -1,     9,    -1,    -1,    12,    13,
0684       -1,     3,     4,     5,     6,    -1,    20,     9,    22,    23,
0685       24,    25,    -1,    27,    -1,    -1,    -1,    -1,    20,    -1,
0686       22,    23,    24,    25,    -1,    27,     3,     4,     5,     6,
0687       -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
0688       -1,    -1,    -1,    20,    -1,    -1,    -1,    -1,    25,    -1,
0689       27
0690 };
0691 
0692 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
0693    symbol of state STATE-NUM.  */
0694 static const yytype_uint8 yystos[] =
0695 {
0696        0,    29,    30,     0,     3,     4,     5,     6,     9,    10,
0697       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
0698       22,    23,    24,    25,    27,    31,    32,    33,    34,    35,
0699       36,    37,    38,    39,    40,     1,     6,     1,     7,    33,
0700        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
0701       38,     1,     1,     1,     1,    38,     1,    10,    11,    14,
0702       15,    16,    17,    18,    19,    12,    13,    20,    21,    22,
0703       23,    24,    27,     1,     7,    32,    41,    42,    43,    44,
0704        7,    34,    35,    36,    36,    36,    36,    36,    36,    37,
0705       37,    37,    37,    38,    38,    38,     1,    39,     1,     7,
0706        8,     8,     1,     1,    44,    44
0707 };
0708 
0709 #define yyerrok     (yyerrstatus = 0)
0710 #define yyclearin   (yychar = YYEMPTY)
0711 #define YYEMPTY     (-2)
0712 #define YYEOF       0
0713 
0714 #define YYACCEPT    goto yyacceptlab
0715 #define YYABORT     goto yyabortlab
0716 #define YYERROR     goto yyerrorlab
0717 
0718 
0719 /* Like YYERROR except do call yyerror.  This remains here temporarily
0720    to ease the transition to the new meaning of YYERROR, for GCC.
0721    Once GCC version 2 has supplanted version 1, this can go.  */
0722 
0723 #define YYFAIL      goto yyerrlab
0724 
0725 #define YYRECOVERING()  (!!yyerrstatus)
0726 
0727 #define YYBACKUP(Token, Value)                  \
0728 do                              \
0729   if (yychar == YYEMPTY && yylen == 1)              \
0730     {                               \
0731       yychar = (Token);                     \
0732       yylval = (Value);                     \
0733       yytoken = YYTRANSLATE (yychar);               \
0734       YYPOPSTACK (1);                       \
0735       goto yybackup;                        \
0736     }                               \
0737   else                              \
0738     {                               \
0739       yyerror (store, YY_("syntax error: cannot back up")); \
0740       YYERROR;                          \
0741     }                               \
0742 while (YYID (0))
0743 
0744 
0745 #define YYTERROR    1
0746 #define YYERRCODE   256
0747 
0748 
0749 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
0750    If N is 0, then set CURRENT to the empty location which ends
0751    the previous symbol: RHS[0] (always defined).  */
0752 
0753 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
0754 #ifndef YYLLOC_DEFAULT
0755 # define YYLLOC_DEFAULT(Current, Rhs, N)                \
0756     do                                  \
0757       if (YYID (N))                                                    \
0758     {                               \
0759       (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
0760       (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \
0761       (Current).last_line    = YYRHSLOC (Rhs, N).last_line;     \
0762       (Current).last_column  = YYRHSLOC (Rhs, N).last_column;   \
0763     }                               \
0764       else                              \
0765     {                               \
0766       (Current).first_line   = (Current).last_line   =      \
0767         YYRHSLOC (Rhs, 0).last_line;                \
0768       (Current).first_column = (Current).last_column =      \
0769         YYRHSLOC (Rhs, 0).last_column;              \
0770     }                               \
0771     while (YYID (0))
0772 #endif
0773 
0774 
0775 /* YY_LOCATION_PRINT -- Print the location on the stream.
0776    This macro was not mandated originally: define only if we know
0777    we won't break user code: when these are the locations we know.  */
0778 
0779 #ifndef YY_LOCATION_PRINT
0780 # if YYLTYPE_IS_TRIVIAL
0781 #  define YY_LOCATION_PRINT(File, Loc)          \
0782      fprintf (File, "%d.%d-%d.%d",          \
0783           (Loc).first_line, (Loc).first_column, \
0784           (Loc).last_line,  (Loc).last_column)
0785 # else
0786 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
0787 # endif
0788 #endif
0789 
0790 
0791 /* YYLEX -- calling `yylex' with the right arguments.  */
0792 
0793 #ifdef YYLEX_PARAM
0794 # define YYLEX yylex (YYLEX_PARAM)
0795 #else
0796 # define YYLEX yylex (store)
0797 #endif
0798 
0799 /* Enable debugging if requested.  */
0800 #if YYDEBUG
0801 
0802 # ifndef YYFPRINTF
0803 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
0804 #  define YYFPRINTF fprintf
0805 # endif
0806 
0807 # define YYDPRINTF(Args)            \
0808 do {                        \
0809   if (yydebug)                  \
0810     YYFPRINTF Args;             \
0811 } while (YYID (0))
0812 
0813 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)            \
0814 do {                                      \
0815   if (yydebug)                                \
0816     {                                     \
0817       YYFPRINTF (stderr, "%s ", Title);                   \
0818       yy_symbol_print (stderr,                        \
0819           Type, Value, store); \
0820       YYFPRINTF (stderr, "\n");                       \
0821     }                                     \
0822 } while (YYID (0))
0823 
0824 
0825 /*--------------------------------.
0826 | Print this symbol on YYOUTPUT.  |
0827 `--------------------------------*/
0828 
0829 /*ARGSUSED*/
0830 #if (defined __STDC__ || defined __C99__FUNC__ \
0831      || defined __cplusplus || defined _MSC_VER)
0832 static void
0833 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Kst::ObjectStore *store)
0834 #else
0835 static void
0836 yy_symbol_value_print (yyoutput, yytype, yyvaluep, store)
0837     FILE *yyoutput;
0838     int yytype;
0839     YYSTYPE const * const yyvaluep;
0840     Kst::ObjectStore *store;
0841 #endif
0842 {
0843   if (!yyvaluep)
0844     return;
0845   YYUSE (store);
0846 # ifdef YYPRINT
0847   if (yytype < YYNTOKENS)
0848     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
0849 # else
0850   YYUSE (yyoutput);
0851 # endif
0852   switch (yytype)
0853     {
0854       default:
0855     break;
0856     }
0857 }
0858 
0859 
0860 /*--------------------------------.
0861 | Print this symbol on YYOUTPUT.  |
0862 `--------------------------------*/
0863 
0864 #if (defined __STDC__ || defined __C99__FUNC__ \
0865      || defined __cplusplus || defined _MSC_VER)
0866 static void
0867 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Kst::ObjectStore *store)
0868 #else
0869 static void
0870 yy_symbol_print (yyoutput, yytype, yyvaluep, store)
0871     FILE *yyoutput;
0872     int yytype;
0873     YYSTYPE const * const yyvaluep;
0874     Kst::ObjectStore *store;
0875 #endif
0876 {
0877   if (yytype < YYNTOKENS)
0878     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
0879   else
0880     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
0881 
0882   yy_symbol_value_print (yyoutput, yytype, yyvaluep, store);
0883   YYFPRINTF (yyoutput, ")");
0884 }
0885 
0886 /*------------------------------------------------------------------.
0887 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
0888 | TOP (included).                                                   |
0889 `------------------------------------------------------------------*/
0890 
0891 #if (defined __STDC__ || defined __C99__FUNC__ \
0892      || defined __cplusplus || defined _MSC_VER)
0893 static void
0894 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
0895 #else
0896 static void
0897 yy_stack_print (bottom, top)
0898     yytype_int16 *bottom;
0899     yytype_int16 *top;
0900 #endif
0901 {
0902   YYFPRINTF (stderr, "Stack now");
0903   for (; bottom <= top; ++bottom)
0904     YYFPRINTF (stderr, " %d", *bottom);
0905   YYFPRINTF (stderr, "\n");
0906 }
0907 
0908 # define YY_STACK_PRINT(Bottom, Top)                \
0909 do {                                \
0910   if (yydebug)                          \
0911     yy_stack_print ((Bottom), (Top));               \
0912 } while (YYID (0))
0913 
0914 
0915 /*------------------------------------------------.
0916 | Report that the YYRULE is going to be reduced.  |
0917 `------------------------------------------------*/
0918 
0919 #if (defined __STDC__ || defined __C99__FUNC__ \
0920      || defined __cplusplus || defined _MSC_VER)
0921 static void
0922 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, Kst::ObjectStore *store)
0923 #else
0924 static void
0925 yy_reduce_print (yyvsp, yyrule, store)
0926     YYSTYPE *yyvsp;
0927     int yyrule;
0928     Kst::ObjectStore *store;
0929 #endif
0930 {
0931   int yynrhs = yyr2[yyrule];
0932   int yyi;
0933   unsigned long int yylno = yyrline[yyrule];
0934   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
0935          yyrule - 1, yylno);
0936   /* The symbols being reduced.  */
0937   for (yyi = 0; yyi < yynrhs; yyi++)
0938     {
0939       fprintf (stderr, "   $%d = ", yyi + 1);
0940       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
0941                &(yyvsp[(yyi + 1) - (yynrhs)])
0942                            , store);
0943       fprintf (stderr, "\n");
0944     }
0945 }
0946 
0947 # define YY_REDUCE_PRINT(Rule)      \
0948 do {                    \
0949   if (yydebug)              \
0950     yy_reduce_print (yyvsp, Rule, store); \
0951 } while (YYID (0))
0952 
0953 /* Nonzero means print parse trace.  It is left uninitialized so that
0954    multiple parsers can coexist.  */
0955 int yydebug;
0956 #else /* !YYDEBUG */
0957 # define YYDPRINTF(Args)
0958 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
0959 # define YY_STACK_PRINT(Bottom, Top)
0960 # define YY_REDUCE_PRINT(Rule)
0961 #endif /* !YYDEBUG */
0962 
0963 
0964 /* YYINITDEPTH -- initial size of the parser's stacks.  */
0965 #ifndef YYINITDEPTH
0966 # define YYINITDEPTH 200
0967 #endif
0968 
0969 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
0970    if the built-in stack extension method is used).
0971 
0972    Do not make this value too large; the results are undefined if
0973    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
0974    evaluated with infinite-precision integer arithmetic.  */
0975 
0976 #ifndef YYMAXDEPTH
0977 # define YYMAXDEPTH 10000
0978 #endif
0979 
0980 
0981 
0982 #if YYERROR_VERBOSE
0983 
0984 # ifndef yystrlen
0985 #  if defined __GLIBC__ && defined _STRING_H
0986 #   define yystrlen strlen
0987 #  else
0988 /* Return the length of YYSTR.  */
0989 #if (defined __STDC__ || defined __C99__FUNC__ \
0990      || defined __cplusplus || defined _MSC_VER)
0991 static YYSIZE_T
0992 yystrlen (const char *yystr)
0993 #else
0994 static YYSIZE_T
0995 yystrlen (yystr)
0996     const char *yystr;
0997 #endif
0998 {
0999   YYSIZE_T yylen;
1000   for (yylen = 0; yystr[yylen]; yylen++)
1001     continue;
1002   return yylen;
1003 }
1004 #  endif
1005 # endif
1006 
1007 # ifndef yystpcpy
1008 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1009 #   define yystpcpy stpcpy
1010 #  else
1011 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1012    YYDEST.  */
1013 #if (defined __STDC__ || defined __C99__FUNC__ \
1014      || defined __cplusplus || defined _MSC_VER)
1015 static char *
1016 yystpcpy (char *yydest, const char *yysrc)
1017 #else
1018 static char *
1019 yystpcpy (yydest, yysrc)
1020     char *yydest;
1021     const char *yysrc;
1022 #endif
1023 {
1024   char *yyd = yydest;
1025   const char *yys = yysrc;
1026 
1027   while ((*yyd++ = *yys++) != '\0')
1028     continue;
1029 
1030   return yyd - 1;
1031 }
1032 #  endif
1033 # endif
1034 
1035 # ifndef yytnamerr
1036 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1037    quotes and backslashes, so that it's suitable for yyerror.  The
1038    heuristic is that double-quoting is unnecessary unless the string
1039    contains an apostrophe, a comma, or backslash (other than
1040    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1041    null, do not copy; instead, return the length of what the result
1042    would have been.  */
1043 static YYSIZE_T
1044 yytnamerr (char *yyres, const char *yystr)
1045 {
1046   if (*yystr == '"')
1047     {
1048       YYSIZE_T yyn = 0;
1049       char const *yyp = yystr;
1050 
1051       for (;;)
1052     switch (*++yyp)
1053       {
1054       case '\'':
1055       case ',':
1056         goto do_not_strip_quotes;
1057 
1058       case '\\':
1059         if (*++yyp != '\\')
1060           goto do_not_strip_quotes;
1061         /* Fall through.  */
1062       default:
1063         if (yyres)
1064           yyres[yyn] = *yyp;
1065         yyn++;
1066         break;
1067 
1068       case '"':
1069         if (yyres)
1070           yyres[yyn] = '\0';
1071         return yyn;
1072       }
1073     do_not_strip_quotes: ;
1074     }
1075 
1076   if (! yyres)
1077     return yystrlen (yystr);
1078 
1079   return yystpcpy (yyres, yystr) - yyres;
1080 }
1081 # endif
1082 
1083 /* Copy into YYRESULT an error message about the unexpected token
1084    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1085    including the terminating null byte.  If YYRESULT is null, do not
1086    copy anything; just return the number of bytes that would be
1087    copied.  As a special case, return 0 if an ordinary "syntax error"
1088    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1089    size calculation.  */
1090 static YYSIZE_T
1091 yysyntax_error (char *yyresult, int yystate, int yychar)
1092 {
1093   int yyn = yypact[yystate];
1094 
1095   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1096     return 0;
1097   else
1098     {
1099       int yytype = YYTRANSLATE (yychar);
1100       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1101       YYSIZE_T yysize = yysize0;
1102       YYSIZE_T yysize1;
1103       int yysize_overflow = 0;
1104       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1105       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1106       int yyx;
1107 
1108 # if 0
1109       /* This is so xgettext sees the translatable formats that are
1110      constructed on the fly.  */
1111       YY_("syntax error, unexpected %s");
1112       YY_("syntax error, unexpected %s, expecting %s");
1113       YY_("syntax error, unexpected %s, expecting %s or %s");
1114       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1115       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1116 # endif
1117       char *yyfmt;
1118       char const *yyf;
1119       static char const yyunexpected[] = "syntax error, unexpected %s";
1120       static char const yyexpecting[] = ", expecting %s";
1121       static char const yyor[] = " or %s";
1122       char yyformat[sizeof yyunexpected
1123             + sizeof yyexpecting - 1
1124             + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1125                * (sizeof yyor - 1))];
1126       char const *yyprefix = yyexpecting;
1127 
1128       /* Start YYX at -YYN if negative to avoid negative indexes in
1129      YYCHECK.  */
1130       int yyxbegin = yyn < 0 ? -yyn : 0;
1131 
1132       /* Stay within bounds of both yycheck and yytname.  */
1133       int yychecklim = YYLAST - yyn + 1;
1134       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1135       int yycount = 1;
1136 
1137       yyarg[0] = yytname[yytype];
1138       yyfmt = yystpcpy (yyformat, yyunexpected);
1139 
1140       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1141     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1142       {
1143         if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1144           {
1145         yycount = 1;
1146         yysize = yysize0;
1147         yyformat[sizeof yyunexpected - 1] = '\0';
1148         break;
1149           }
1150         yyarg[yycount++] = yytname[yyx];
1151         yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1152         yysize_overflow |= (yysize1 < yysize);
1153         yysize = yysize1;
1154         yyfmt = yystpcpy (yyfmt, yyprefix);
1155         yyprefix = yyor;
1156       }
1157 
1158       yyf = YY_(yyformat);
1159       yysize1 = yysize + yystrlen (yyf);
1160       yysize_overflow |= (yysize1 < yysize);
1161       yysize = yysize1;
1162 
1163       if (yysize_overflow)
1164     return YYSIZE_MAXIMUM;
1165 
1166       if (yyresult)
1167     {
1168       /* Avoid sprintf, as that infringes on the user's name space.
1169          Don't have undefined behavior even if the translation
1170          produced a string with the wrong number of "%s"s.  */
1171       char *yyp = yyresult;
1172       int yyi = 0;
1173       while ((*yyp = *yyf) != '\0')
1174         {
1175           if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1176         {
1177           yyp += yytnamerr (yyp, yyarg[yyi++]);
1178           yyf += 2;
1179         }
1180           else
1181         {
1182           yyp++;
1183           yyf++;
1184         }
1185         }
1186     }
1187       return yysize;
1188     }
1189 }
1190 #endif /* YYERROR_VERBOSE */
1191 
1192 
1193 /*-----------------------------------------------.
1194 | Release the memory associated to this symbol.  |
1195 `-----------------------------------------------*/
1196 
1197 /*ARGSUSED*/
1198 #if (defined __STDC__ || defined __C99__FUNC__ \
1199      || defined __cplusplus || defined _MSC_VER)
1200 static void
1201 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, Kst::ObjectStore *store)
1202 #else
1203 static void
1204 yydestruct (yymsg, yytype, yyvaluep, store)
1205     const char *yymsg;
1206     int yytype;
1207     YYSTYPE *yyvaluep;
1208     Kst::ObjectStore *store;
1209 #endif
1210 {
1211   YYUSE (yyvaluep);
1212   YYUSE (store);
1213 
1214   if (!yymsg)
1215     yymsg = "Deleting";
1216   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1217 
1218   /*
1219   switch (yytype)
1220     {
1221 
1222       default:
1223         break;
1224     }
1225   */
1226 }
1227 
1228 
1229 /* Prevent warnings from -Wmissing-prototypes.  */
1230 
1231 #ifdef YYPARSE_PARAM
1232 #if defined __STDC__ || defined __cplusplus
1233 int yyparse (void *YYPARSE_PARAM);
1234 #else
1235 int yyparse ();
1236 #endif
1237 #else /* ! YYPARSE_PARAM */
1238 #if defined __STDC__ || defined __cplusplus
1239 KSTMATH_EXPORT int yyparse (Kst::ObjectStore *store);
1240 #else
1241 int yyparse ();
1242 #endif
1243 #endif /* ! YYPARSE_PARAM */
1244 
1245 
1246 
1247 /* The look-ahead symbol.  */
1248 int yychar;
1249 
1250 /* The semantic value of the look-ahead symbol.  */
1251 YYSTYPE yylval;
1252 
1253 /* Number of syntax errors so far.  */
1254 int yynerrs;
1255 
1256 
1257 
1258 /*----------.
1259 | yyparse.  |
1260 `----------*/
1261 
1262 #ifdef YYPARSE_PARAM
1263 #if (defined __STDC__ || defined __C99__FUNC__ \
1264      || defined __cplusplus || defined _MSC_VER)
1265 int
1266 yyparse (void *YYPARSE_PARAM)
1267 #else
1268 int
1269 yyparse (YYPARSE_PARAM)
1270     void *YYPARSE_PARAM;
1271 #endif
1272 #else /* ! YYPARSE_PARAM */
1273 #if (defined __STDC__ || defined __C99__FUNC__ \
1274      || defined __cplusplus || defined _MSC_VER)
1275 int
1276 yyparse (Kst::ObjectStore *store)
1277 #else
1278 int
1279 yyparse (store)
1280     Kst::ObjectStore *store;
1281 #endif
1282 #endif
1283 {
1284   
1285   int yystate;
1286   int yyn;
1287   int yyresult;
1288   /* Number of tokens to shift before error messages enabled.  */
1289   int yyerrstatus;
1290   /* Look-ahead token as an internal (translated) token number.  */
1291   int yytoken = 0;
1292 #if YYERROR_VERBOSE
1293   /* Buffer for error messages, and its allocated size.  */
1294   char yymsgbuf[128];
1295   char *yymsg = yymsgbuf;
1296   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1297 #endif
1298 
1299   /* Three stacks and their tools:
1300      `yyss': related to states,
1301      `yyvs': related to semantic values,
1302      `yyls': related to locations.
1303 
1304      Refer to the stacks thru separate pointers, to allow yyoverflow
1305      to reallocate them elsewhere.  */
1306 
1307   /* The state stack.  */
1308   yytype_int16 yyssa[YYINITDEPTH];
1309   yytype_int16 *yyss = yyssa;
1310   yytype_int16 *yyssp;
1311 
1312   /* The semantic value stack.  */
1313   YYSTYPE yyvsa[YYINITDEPTH];
1314   YYSTYPE *yyvs = yyvsa;
1315   YYSTYPE *yyvsp;
1316 
1317 
1318 
1319 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1320 
1321   YYSIZE_T yystacksize = YYINITDEPTH;
1322 
1323   /* The variables used to return semantic value and location from the
1324      action routines.  */
1325   YYSTYPE yyval;
1326 
1327 
1328   /* The number of symbols on the RHS of the reduced rule.
1329      Keep to zero when no symbol should be popped.  */
1330   int yylen = 0;
1331 
1332   YYDPRINTF ((stderr, "Starting parse\n"));
1333 
1334   yystate = 0;
1335   yyerrstatus = 0;
1336   yynerrs = 0;
1337   yychar = YYEMPTY;     /* Cause a token to be read.  */
1338 
1339   /* Initialize stack pointers.
1340      Waste one element of value and location stack
1341      so that they stay on the same level as the state stack.
1342      The wasted elements are never initialized.  */
1343 
1344   yyssp = yyss;
1345   yyvsp = yyvs;
1346 
1347   goto yysetstate;
1348 
1349 /*------------------------------------------------------------.
1350 | yynewstate -- Push a new state, which is found in yystate.  |
1351 `------------------------------------------------------------*/
1352  yynewstate:
1353   /* In all cases, when you get here, the value and location stacks
1354      have just been pushed.  So pushing a state here evens the stacks.  */
1355   yyssp++;
1356 
1357  yysetstate:
1358   *yyssp = yystate;
1359 
1360   if (yyss + yystacksize - 1 <= yyssp)
1361     {
1362       /* Get the current used size of the three stacks, in elements.  */
1363       YYSIZE_T yysize = yyssp - yyss + 1;
1364 
1365 #ifdef yyoverflow
1366       {
1367     /* Give user a chance to reallocate the stack.  Use copies of
1368        these so that the &'s don't force the real ones into
1369        memory.  */
1370     YYSTYPE *yyvs1 = yyvs;
1371     yytype_int16 *yyss1 = yyss;
1372 
1373 
1374     /* Each stack pointer address is followed by the size of the
1375        data in use in that stack, in bytes.  This used to be a
1376        conditional around just the two extra args, but that might
1377        be undefined if yyoverflow is a macro.  */
1378     yyoverflow (YY_("memory exhausted"),
1379             &yyss1, yysize * sizeof (*yyssp),
1380             &yyvs1, yysize * sizeof (*yyvsp),
1381 
1382             &yystacksize);
1383 
1384     yyss = yyss1;
1385     yyvs = yyvs1;
1386       }
1387 #else /* no yyoverflow */
1388 # ifndef YYSTACK_RELOCATE
1389       goto yyexhaustedlab;
1390 # else
1391       /* Extend the stack our own way.  */
1392       if (YYMAXDEPTH <= yystacksize)
1393     goto yyexhaustedlab;
1394       yystacksize *= 2;
1395       if (YYMAXDEPTH < yystacksize)
1396     yystacksize = YYMAXDEPTH;
1397 
1398       {
1399     yytype_int16 *yyss1 = yyss;
1400     union yyalloc *yyptr =
1401       (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1402     if (! yyptr)
1403       goto yyexhaustedlab;
1404     YYSTACK_RELOCATE (yyss);
1405     YYSTACK_RELOCATE (yyvs);
1406 
1407 #  undef YYSTACK_RELOCATE
1408     if (yyss1 != yyssa)
1409       YYSTACK_FREE (yyss1);
1410       }
1411 # endif
1412 #endif /* no yyoverflow */
1413 
1414       yyssp = yyss + yysize - 1;
1415       yyvsp = yyvs + yysize - 1;
1416 
1417 
1418       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1419           (unsigned long int) yystacksize));
1420 
1421       if (yyss + yystacksize - 1 <= yyssp)
1422     YYABORT;
1423     }
1424 
1425   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1426 
1427   goto yybackup;
1428 
1429 /*-----------.
1430 | yybackup.  |
1431 `-----------*/
1432 yybackup:
1433 
1434   /* Do appropriate processing given the current state.  Read a
1435      look-ahead token if we need one and don't already have one.  */
1436 
1437   /* First try to decide what to do without reference to look-ahead token.  */
1438   yyn = yypact[yystate];
1439   if (yyn == YYPACT_NINF)
1440     goto yydefault;
1441 
1442   /* Not known => get a look-ahead token if don't already have one.  */
1443 
1444   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1445   if (yychar == YYEMPTY)
1446     {
1447       YYDPRINTF ((stderr, "Reading a token: "));
1448       yychar = YYLEX;
1449     }
1450 
1451   if (yychar <= YYEOF)
1452     {
1453       yychar = yytoken = YYEOF;
1454       YYDPRINTF ((stderr, "Now at end of input.\n"));
1455     }
1456   else
1457     {
1458       yytoken = YYTRANSLATE (yychar);
1459       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1460     }
1461 
1462   /* If the proper action on seeing token YYTOKEN is to reduce or to
1463      detect an error, take that action.  */
1464   yyn += yytoken;
1465   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1466     goto yydefault;
1467   yyn = yytable[yyn];
1468   if (yyn <= 0)
1469     {
1470       if (yyn == 0 || yyn == YYTABLE_NINF)
1471     goto yyerrlab;
1472       yyn = -yyn;
1473       goto yyreduce;
1474     }
1475 
1476   if (yyn == YYFINAL)
1477     YYACCEPT;
1478 
1479   /* Count tokens shifted since error; after three, turn off error
1480      status.  */
1481   if (yyerrstatus)
1482     yyerrstatus--;
1483 
1484   /* Shift the look-ahead token.  */
1485   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1486 
1487   /* Discard the shifted token unless it is eof.  */
1488   if (yychar != YYEOF)
1489     yychar = YYEMPTY;
1490 
1491   yystate = yyn;
1492   *++yyvsp = yylval;
1493 
1494   goto yynewstate;
1495 
1496 
1497 /*-----------------------------------------------------------.
1498 | yydefault -- do the default action for the current state.  |
1499 `-----------------------------------------------------------*/
1500 yydefault:
1501   yyn = yydefact[yystate];
1502   if (yyn == 0)
1503     goto yyerrlab;
1504   goto yyreduce;
1505 
1506 
1507 /*-----------------------------.
1508 | yyreduce -- Do a reduction.  |
1509 `-----------------------------*/
1510 yyreduce:
1511   /* yyn is the number of a rule to reduce with.  */
1512   yylen = yyr2[yyn];
1513 
1514   /* If YYLEN is nonzero, implement the default value of the action:
1515      `$$ = $1'.
1516 
1517      Otherwise, the following line sets YYVAL to garbage.
1518      This behavior is undocumented and Bison
1519      users should not rely upon it.  Assigning to YYVAL
1520      unconditionally makes the parser a bit smaller, and it avoids a
1521      GCC warning that YYVAL may be used uninitialized.  */
1522   yyval = yyvsp[1-yylen];
1523 
1524 
1525   YY_REDUCE_PRINT (yyn);
1526   switch (yyn)
1527     {
1528         case 2:
1529 #line 46 "../../../src/libkstmath/eparse.y"
1530     { (yyval.n) = 0L; yyClearErrors(); ParsedEquation = 0L; }
1531     break;
1532 
1533   case 3:
1534 #line 47 "../../../src/libkstmath/eparse.y"
1535     { (yyval.n) = ParsedEquation = (yyvsp[(2) - (2)].n);
1536                 if (yyErrorCount() > 0) {
1537                     DeleteNode((yyval.n));
1538                     (yyval.n) = 0L;
1539                     ParsedEquation = 0L;
1540                     YYERROR;
1541                 }
1542             }
1543     break;
1544 
1545   case 4:
1546 #line 58 "../../../src/libkstmath/eparse.y"
1547     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1548     break;
1549 
1550   case 5:
1551 #line 60 "../../../src/libkstmath/eparse.y"
1552     { (yyval.n) = 0L; yyerror(store, EParseErrorEmpty); }
1553     break;
1554 
1555   case 6:
1556 #line 64 "../../../src/libkstmath/eparse.y"
1557     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1558     break;
1559 
1560   case 7:
1561 #line 68 "../../../src/libkstmath/eparse.y"
1562     { (yyval.n) = NewLogicalOr((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1563     break;
1564 
1565   case 8:
1566 #line 70 "../../../src/libkstmath/eparse.y"
1567     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1568     break;
1569 
1570   case 9:
1571 #line 72 "../../../src/libkstmath/eparse.y"
1572     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1573     break;
1574 
1575   case 10:
1576 #line 76 "../../../src/libkstmath/eparse.y"
1577     { (yyval.n) = NewLogicalAnd((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1578     break;
1579 
1580   case 11:
1581 #line 78 "../../../src/libkstmath/eparse.y"
1582     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1583     break;
1584 
1585   case 12:
1586 #line 80 "../../../src/libkstmath/eparse.y"
1587     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1588     break;
1589 
1590   case 13:
1591 #line 84 "../../../src/libkstmath/eparse.y"
1592     { (yyval.n) = NewLessThan((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1593     break;
1594 
1595   case 14:
1596 #line 86 "../../../src/libkstmath/eparse.y"
1597     { (yyval.n) = NewLessThanEqual((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1598     break;
1599 
1600   case 15:
1601 #line 88 "../../../src/libkstmath/eparse.y"
1602     { (yyval.n) = NewGreaterThan((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1603     break;
1604 
1605   case 16:
1606 #line 90 "../../../src/libkstmath/eparse.y"
1607     { (yyval.n) = NewGreaterThanEqual((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1608     break;
1609 
1610   case 17:
1611 #line 92 "../../../src/libkstmath/eparse.y"
1612     { (yyval.n) = NewEqualTo((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1613     break;
1614 
1615   case 18:
1616 #line 94 "../../../src/libkstmath/eparse.y"
1617     { (yyval.n) = NewNotEqualTo((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1618     break;
1619 
1620   case 19:
1621 #line 96 "../../../src/libkstmath/eparse.y"
1622     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1623     break;
1624 
1625   case 20:
1626 #line 98 "../../../src/libkstmath/eparse.y"
1627     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1628     break;
1629 
1630   case 21:
1631 #line 100 "../../../src/libkstmath/eparse.y"
1632     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1633     break;
1634 
1635   case 22:
1636 #line 102 "../../../src/libkstmath/eparse.y"
1637     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1638     break;
1639 
1640   case 23:
1641 #line 104 "../../../src/libkstmath/eparse.y"
1642     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1643     break;
1644 
1645   case 24:
1646 #line 106 "../../../src/libkstmath/eparse.y"
1647     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1648     break;
1649 
1650   case 25:
1651 #line 108 "../../../src/libkstmath/eparse.y"
1652     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1653     break;
1654 
1655   case 26:
1656 #line 112 "../../../src/libkstmath/eparse.y"
1657     { (yyval.n) = NewAddition((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1658     break;
1659 
1660   case 27:
1661 #line 114 "../../../src/libkstmath/eparse.y"
1662     { (yyval.n) = NewSubtraction((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1663     break;
1664 
1665   case 28:
1666 #line 116 "../../../src/libkstmath/eparse.y"
1667     { (yyval.n) = NewBitwiseOr((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1668     break;
1669 
1670   case 29:
1671 #line 118 "../../../src/libkstmath/eparse.y"
1672     { (yyval.n) = NewBitwiseAnd((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1673     break;
1674 
1675   case 30:
1676 #line 120 "../../../src/libkstmath/eparse.y"
1677     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1678     break;
1679 
1680   case 31:
1681 #line 122 "../../../src/libkstmath/eparse.y"
1682     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1683     break;
1684 
1685   case 32:
1686 #line 124 "../../../src/libkstmath/eparse.y"
1687     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1688     break;
1689 
1690   case 33:
1691 #line 128 "../../../src/libkstmath/eparse.y"
1692     { (yyval.n) = NewMultiplication((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1693     break;
1694 
1695   case 34:
1696 #line 130 "../../../src/libkstmath/eparse.y"
1697     { (yyval.n) = NewDivision((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1698     break;
1699 
1700   case 35:
1701 #line 132 "../../../src/libkstmath/eparse.y"
1702     { (yyval.n) = NewModulo((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1703     break;
1704 
1705   case 36:
1706 #line 134 "../../../src/libkstmath/eparse.y"
1707     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1708     break;
1709 
1710   case 37:
1711 #line 136 "../../../src/libkstmath/eparse.y"
1712     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1713     break;
1714 
1715   case 38:
1716 #line 138 "../../../src/libkstmath/eparse.y"
1717     { yyerror(store, EParseErrorTwoOperands); (yyval.n) = 0L; }
1718     break;
1719 
1720   case 39:
1721 #line 140 "../../../src/libkstmath/eparse.y"
1722     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1723     break;
1724 
1725   case 40:
1726 #line 144 "../../../src/libkstmath/eparse.y"
1727     { (yyval.n) = NewNegation((yyvsp[(2) - (2)].n)); }
1728     break;
1729 
1730   case 41:
1731 #line 146 "../../../src/libkstmath/eparse.y"
1732     { (yyval.n) = NewNot((yyvsp[(2) - (2)].n)); }
1733     break;
1734 
1735   case 42:
1736 #line 148 "../../../src/libkstmath/eparse.y"
1737     { (yyval.n) = 0L; yyerror(store, EParseErrorRequiresOperand); }
1738     break;
1739 
1740   case 43:
1741 #line 150 "../../../src/libkstmath/eparse.y"
1742     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1743     break;
1744 
1745   case 44:
1746 #line 154 "../../../src/libkstmath/eparse.y"
1747     { (yyval.n) = NewPower((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); }
1748     break;
1749 
1750   case 45:
1751 #line 156 "../../../src/libkstmath/eparse.y"
1752     { DeleteNode((yyvsp[(1) - (3)].n)); (yyval.n) = 0L; yyerror(store, EParseErrorTwoOperands); }
1753     break;
1754 
1755   case 46:
1756 #line 158 "../../../src/libkstmath/eparse.y"
1757     { DeleteNode((yyvsp[(1) - (2)].n)); (yyval.n) = 0L; yyerror(store, EParseErrorTwoOperands); }
1758     break;
1759 
1760   case 47:
1761 #line 160 "../../../src/libkstmath/eparse.y"
1762     { (yyval.n) = 0L; yyerror(store, EParseErrorTwoOperands); }
1763     break;
1764 
1765   case 48:
1766 #line 162 "../../../src/libkstmath/eparse.y"
1767     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1768     break;
1769 
1770   case 49:
1771 #line 166 "../../../src/libkstmath/eparse.y"
1772     { (yyval.n) = (yyvsp[(2) - (3)].n); ParenthesizeNode((yyval.n)); }
1773     break;
1774 
1775   case 50:
1776 #line 168 "../../../src/libkstmath/eparse.y"
1777     { yyerror(store, EParseErrorMissingClosingParenthesis); (yyval.n) = 0L; }
1778     break;
1779 
1780   case 51:
1781 #line 170 "../../../src/libkstmath/eparse.y"
1782     { (yyval.n) = NewIdentifier((yyvsp[(1) - (1)].data)); }
1783     break;
1784 
1785   case 52:
1786 #line 172 "../../../src/libkstmath/eparse.y"
1787     { (yyval.n) = NewData(store, (yyvsp[(1) - (1)].data)); }
1788     break;
1789 
1790   case 53:
1791 #line 174 "../../../src/libkstmath/eparse.y"
1792     { yyerror(store, EParseErrorNoImplicitMultiply); free((yyvsp[(1) - (4)].data)); (yyval.n) = 0L; }
1793     break;
1794 
1795   case 54:
1796 #line 176 "../../../src/libkstmath/eparse.y"
1797     { (yyval.n) = NewFunction((yyvsp[(1) - (3)].data), NewArgumentList()); }
1798     break;
1799 
1800   case 55:
1801 #line 181 "../../../src/libkstmath/eparse.y"
1802     { yyerror(store, EParseErrorNoImplicitMultiply); DeleteNode((yyvsp[(3) - (5)].n)); free((yyvsp[(1) - (5)].data)); (yyval.n) = 0L; }
1803     break;
1804 
1805   case 56:
1806 #line 183 "../../../src/libkstmath/eparse.y"
1807     { (yyval.n) = NewFunction((yyvsp[(1) - (4)].data), (yyvsp[(3) - (4)].n)); }
1808     break;
1809 
1810   case 57:
1811 #line 185 "../../../src/libkstmath/eparse.y"
1812     { yyerror(store, EParseErrorMissingClosingParenthesis); free((yyvsp[(1) - (3)].data)); (yyval.n) = 0L; }
1813     break;
1814 
1815   case 58:
1816 #line 187 "../../../src/libkstmath/eparse.y"
1817     { (yyval.n) = NewNumber((yyvsp[(1) - (1)].number)); }
1818     break;
1819 
1820   case 59:
1821 #line 189 "../../../src/libkstmath/eparse.y"
1822     { yyerror(store, EParseErrorNoImplicitMultiply); (yyval.n) = 0L; }
1823     break;
1824 
1825   case 60:
1826 #line 191 "../../../src/libkstmath/eparse.y"
1827     { yyerrortoken((yyvsp[(1) - (1)].character)); (yyval.n) = 0L; }
1828     break;
1829 
1830   case 61:
1831 #line 193 "../../../src/libkstmath/eparse.y"
1832     { yyerror(store, EParseErrorEmptyParentheses); (yyval.n) = 0L; }
1833     break;
1834 
1835   case 62:
1836 #line 197 "../../../src/libkstmath/eparse.y"
1837     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1838     break;
1839 
1840   case 63:
1841 #line 201 "../../../src/libkstmath/eparse.y"
1842     { if ((yyvsp[(1) - (3)].n) && (yyvsp[(3) - (3)].n)) { AppendArgument((yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].n)); } else { DeleteNode((yyvsp[(1) - (3)].n)); DeleteNode((yyvsp[(3) - (3)].n)); (yyvsp[(1) - (3)].n) = 0L; } (yyval.n) = (yyvsp[(1) - (3)].n); }
1843     break;
1844 
1845   case 64:
1846 #line 203 "../../../src/libkstmath/eparse.y"
1847     { if ((yyvsp[(1) - (1)].n)) { (yyval.n) = NewArgumentList(); AppendArgument((yyval.n), (yyvsp[(1) - (1)].n)); } else { (yyval.n) = 0L; } }
1848     break;
1849 
1850   case 65:
1851 #line 205 "../../../src/libkstmath/eparse.y"
1852     { (yyval.n) = 0L; DeleteNode((yyvsp[(1) - (3)].n)); yyerror(store, EParseErrorEmptyArg); }
1853     break;
1854 
1855   case 66:
1856 #line 206 "../../../src/libkstmath/eparse.y"
1857     {}
1858     break;
1859 
1860   case 67:
1861 #line 207 "../../../src/libkstmath/eparse.y"
1862     { yyerror(store, EParseErrorEmptyArg); DeleteNode((yyvsp[(3) - (3)].n)); (yyval.n) = 0L; }
1863     break;
1864 
1865   case 68:
1866 #line 211 "../../../src/libkstmath/eparse.y"
1867     { (yyval.n) = (yyvsp[(1) - (1)].n); }
1868     break;
1869 
1870 
1871 /* Line 1267 of yacc.c.  */
1872 #line 1871 "eparse.tab.c"
1873       default: break;
1874     }
1875   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1876 
1877   YYPOPSTACK (yylen);
1878   yylen = 0;
1879   YY_STACK_PRINT (yyss, yyssp);
1880 
1881   *++yyvsp = yyval;
1882 
1883 
1884   /* Now `shift' the result of the reduction.  Determine what state
1885      that goes to, based on the state we popped back to and the rule
1886      number reduced by.  */
1887 
1888   yyn = yyr1[yyn];
1889 
1890   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1891   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1892     yystate = yytable[yystate];
1893   else
1894     yystate = yydefgoto[yyn - YYNTOKENS];
1895 
1896   goto yynewstate;
1897 
1898 
1899 /*------------------------------------.
1900 | yyerrlab -- here on detecting error |
1901 `------------------------------------*/
1902 yyerrlab:
1903   /* If not already recovering from an error, report this error.  */
1904   if (!yyerrstatus)
1905     {
1906       ++yynerrs;
1907 #if ! YYERROR_VERBOSE
1908       yyerror (store, YY_("syntax error"));
1909 #else
1910       {
1911     YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1912     if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1913       {
1914         YYSIZE_T yyalloc = 2 * yysize;
1915         if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1916           yyalloc = YYSTACK_ALLOC_MAXIMUM;
1917         if (yymsg != yymsgbuf)
1918           YYSTACK_FREE (yymsg);
1919         yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1920         if (yymsg)
1921           yymsg_alloc = yyalloc;
1922         else
1923           {
1924         yymsg = yymsgbuf;
1925         yymsg_alloc = sizeof yymsgbuf;
1926           }
1927       }
1928 
1929     if (0 < yysize && yysize <= yymsg_alloc)
1930       {
1931         (void) yysyntax_error (yymsg, yystate, yychar);
1932         yyerror (store, yymsg);
1933       }
1934     else
1935       {
1936         yyerror (store, YY_("syntax error"));
1937         if (yysize != 0)
1938           goto yyexhaustedlab;
1939       }
1940       }
1941 #endif
1942     }
1943 
1944 
1945 
1946   if (yyerrstatus == 3)
1947     {
1948       /* If just tried and failed to reuse look-ahead token after an
1949      error, discard it.  */
1950 
1951       if (yychar <= YYEOF)
1952     {
1953       /* Return failure if at end of input.  */
1954       if (yychar == YYEOF)
1955         YYABORT;
1956     }
1957       else
1958     {
1959       yydestruct ("Error: discarding",
1960               yytoken, &yylval, store);
1961       yychar = YYEMPTY;
1962     }
1963     }
1964 
1965   /* Else will try to reuse look-ahead token after shifting the error
1966      token.  */
1967   goto yyerrlab1;
1968 
1969 
1970 /*---------------------------------------------------.
1971 | yyerrorlab -- error raised explicitly by YYERROR.  |
1972 `---------------------------------------------------*/
1973 yyerrorlab:
1974 
1975   /* Pacify compilers like GCC when the user code never invokes
1976      YYERROR and the label yyerrorlab therefore never appears in user
1977      code.  */
1978   if (/*CONSTCOND*/ 0)
1979      goto yyerrorlab;
1980 
1981   /* Do not reclaim the symbols of the rule which action triggered
1982      this YYERROR.  */
1983   YYPOPSTACK (yylen);
1984   yylen = 0;
1985   YY_STACK_PRINT (yyss, yyssp);
1986   yystate = *yyssp;
1987   goto yyerrlab1;
1988 
1989 
1990 /*-------------------------------------------------------------.
1991 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
1992 `-------------------------------------------------------------*/
1993 yyerrlab1:
1994   yyerrstatus = 3;  /* Each real token shifted decrements this.  */
1995 
1996   for (;;)
1997     {
1998       yyn = yypact[yystate];
1999       if (yyn != YYPACT_NINF)
2000     {
2001       yyn += YYTERROR;
2002       if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2003         {
2004           yyn = yytable[yyn];
2005           if (0 < yyn)
2006         break;
2007         }
2008     }
2009 
2010       /* Pop the current state because it cannot handle the error token.  */
2011       if (yyssp == yyss)
2012     YYABORT;
2013 
2014 
2015       yydestruct ("Error: popping",
2016           yystos[yystate], yyvsp, store);
2017       YYPOPSTACK (1);
2018       yystate = *yyssp;
2019       YY_STACK_PRINT (yyss, yyssp);
2020     }
2021 
2022   if (yyn == YYFINAL)
2023     YYACCEPT;
2024 
2025   *++yyvsp = yylval;
2026 
2027 
2028   /* Shift the error token.  */
2029   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2030 
2031   yystate = yyn;
2032   goto yynewstate;
2033 
2034 
2035 /*-------------------------------------.
2036 | yyacceptlab -- YYACCEPT comes here.  |
2037 `-------------------------------------*/
2038 yyacceptlab:
2039   yyresult = 0;
2040   goto yyreturn;
2041 
2042 /*-----------------------------------.
2043 | yyabortlab -- YYABORT comes here.  |
2044 `-----------------------------------*/
2045 yyabortlab:
2046   yyresult = 1;
2047   goto yyreturn;
2048 
2049 #ifndef yyoverflow
2050 /*-------------------------------------------------.
2051 | yyexhaustedlab -- memory exhaustion comes here.  |
2052 `-------------------------------------------------*/
2053 yyexhaustedlab:
2054   yyerror (store, YY_("memory exhausted"));
2055   yyresult = 2;
2056   /* Fall through.  */
2057 #endif
2058 
2059 yyreturn:
2060   if (yychar != YYEOF && yychar != YYEMPTY)
2061      yydestruct ("Cleanup: discarding lookahead",
2062          yytoken, &yylval, store);
2063   /* Do not reclaim the symbols of the rule which action triggered
2064      this YYABORT or YYACCEPT.  */
2065   YYPOPSTACK (yylen);
2066   YY_STACK_PRINT (yyss, yyssp);
2067   while (yyssp != yyss)
2068     {
2069       yydestruct ("Cleanup: popping",
2070           yystos[*yyssp], yyvsp, store);
2071       YYPOPSTACK (1);
2072     }
2073 #ifndef yyoverflow
2074   if (yyss != yyssa)
2075     YYSTACK_FREE (yyss);
2076 #endif
2077 #if YYERROR_VERBOSE
2078   if (yymsg != yymsgbuf)
2079     YYSTACK_FREE (yymsg);
2080 #endif
2081   /* Make sure YYID is used.  */
2082   return YYID (yyresult);
2083 }
2084 
2085 
2086 #line 214 "../../../src/libkstmath/eparse.y"
2087 
2088 
2089