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