52 #define YYBISON_VERSION "3.6.4"
55 #define YYSKELETON_NAME "yacc.c"
76 #include "factory/factoryconf.h"
78 #if defined(WINNT) && ! defined(__GNUC__)
81 # define alloca _alloca
93 # define ISTREAM std::istream
94 # define CERR std::cerr
95 #elif defined(HAVE_IOSTREAM_H)
96 # include <iostream.h>
97 # define ISTREAM istream
111 # define YYSTYPE ParseUtil
113 # define YY_parse_USE_GOTO 1
114 # define YY_parse_STYPE ParseUtil
129 #line 130 "readcf.cc"
133 # define YY_CAST(Type, Val) static_cast<Type> (Val)
134 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
136 # define YY_CAST(Type, Val) ((Type) (Val))
137 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
141 # if defined __cplusplus
142 # if 201103L <= __cplusplus
143 # define YY_NULLPTR nullptr
145 # define YY_NULLPTR 0
148 # define YY_NULLPTR ((void*)0)
183 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
185 # define YYSTYPE_IS_TRIVIAL 1
186 # define YYSTYPE_IS_DECLARED 1
230 #ifndef __PTRDIFF_MAX__
232 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
243 #ifdef __INT_LEAST8_MAX__
245 #elif defined YY_STDINT_H
251 #ifdef __INT_LEAST16_MAX__
253 #elif defined YY_STDINT_H
259 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
261 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
262 && UINT_LEAST8_MAX <= INT_MAX)
264 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
270 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
272 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
273 && UINT_LEAST16_MAX <= INT_MAX)
275 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
282 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
283 # define YYPTRDIFF_T __PTRDIFF_TYPE__
284 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
285 # elif defined PTRDIFF_MAX
289 # define YYPTRDIFF_T ptrdiff_t
290 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
292 # define YYPTRDIFF_T long
293 # define YYPTRDIFF_MAXIMUM LONG_MAX
298 # ifdef __SIZE_TYPE__
299 # define YYSIZE_T __SIZE_TYPE__
300 # elif defined size_t
301 # define YYSIZE_T size_t
302 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
304 # define YYSIZE_T size_t
306 # define YYSIZE_T unsigned
310 #define YYSIZE_MAXIMUM \
311 YY_CAST (YYPTRDIFF_T, \
312 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
313 ? YYPTRDIFF_MAXIMUM \
314 : YY_CAST (YYSIZE_T, -1)))
316 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
326 # if defined YYENABLE_NLS && YYENABLE_NLS
328 # include <libintl.h>
329 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
333 # define YY_(Msgid) Msgid
338 #ifndef YY_ATTRIBUTE_PURE
339 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
340 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
342 # define YY_ATTRIBUTE_PURE
346 #ifndef YY_ATTRIBUTE_UNUSED
347 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
348 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
350 # define YY_ATTRIBUTE_UNUSED
355 #if ! defined lint || defined __GNUC__
356 # define YYUSE(E) ((void) (E))
361 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
363 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
364 _Pragma ("GCC diagnostic push") \
365 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
366 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
367 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
368 _Pragma ("GCC diagnostic pop")
370 # define YY_INITIAL_VALUE(Value) Value
372 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
373 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
374 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
376 #ifndef YY_INITIAL_VALUE
377 # define YY_INITIAL_VALUE(Value)
380 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
381 # define YY_IGNORE_USELESS_CAST_BEGIN \
382 _Pragma ("GCC diagnostic push") \
383 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
384 # define YY_IGNORE_USELESS_CAST_END \
385 _Pragma ("GCC diagnostic pop")
387 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
388 # define YY_IGNORE_USELESS_CAST_BEGIN
389 # define YY_IGNORE_USELESS_CAST_END
393 #define YY_ASSERT(E) ((void) (0 && (E)))
395 #if !defined yyoverflow
399 # ifdef YYSTACK_USE_ALLOCA
400 # if YYSTACK_USE_ALLOCA
402 # define YYSTACK_ALLOC __builtin_alloca
403 # elif defined __BUILTIN_VA_ARG_INCR
406 # define YYSTACK_ALLOC __alloca
407 # elif defined _MSC_VER
409 # define alloca _alloca
411 # define YYSTACK_ALLOC alloca
412 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
415 # ifndef EXIT_SUCCESS
416 # define EXIT_SUCCESS 0
423 # ifdef YYSTACK_ALLOC
425 # define YYSTACK_FREE(Ptr) do { ; } while (0)
426 # ifndef YYSTACK_ALLOC_MAXIMUM
431 # define YYSTACK_ALLOC_MAXIMUM 4032
434 # define YYSTACK_ALLOC YYMALLOC
435 # define YYSTACK_FREE YYFREE
436 # ifndef YYSTACK_ALLOC_MAXIMUM
437 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
439 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
440 && ! ((defined YYMALLOC || defined malloc) \
441 && (defined YYFREE || defined free)))
443 # ifndef EXIT_SUCCESS
444 # define EXIT_SUCCESS 0
448 # define YYMALLOC malloc
449 # if ! defined malloc && ! defined EXIT_SUCCESS
455 # if ! defined free && ! defined EXIT_SUCCESS
462 #if (! defined yyoverflow \
463 && (! defined __cplusplus \
464 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
474 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
478 # define YYSTACK_BYTES(N) \
479 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
480 + YYSTACK_GAP_MAXIMUM)
482 # define YYCOPY_NEEDED 1
489 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
492 YYPTRDIFF_T yynewbytes; \
493 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
494 Stack = &yyptr->Stack_alloc; \
495 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
496 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
502 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
506 # if defined __GNUC__ && 1 < __GNUC__
507 # define YYCOPY(Dst, Src, Count) \
508 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
510 # define YYCOPY(Dst, Src, Count) \
514 for (yyi = 0; yyi < (Count); yyi++) \
515 (Dst)[yyi] = (Src)[yyi]; \
536 #define YYMAXUTOK 259
541 #define YYTRANSLATE(YYX) \
542 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
543 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
550 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
554 11, 12, 6, 5, 2, 4, 2, 7, 2, 2,
555 2, 2, 2, 2, 2, 2, 2, 2, 2, 10,
556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
559 2, 2, 2, 2, 9, 2, 2, 2, 2, 2,
560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575 2, 2, 2, 2, 2, 2, 1, 2, 3, 8
582 0, 73, 73, 74, 77, 78, 81, 82, 83, 84,
588 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
597 static const char *
const yytname[] =
599 "\"end of file\"",
"error",
"\"invalid token\"",
"NUM",
"'-'",
"'+'",
600 "'*'",
"'/'",
"NEG",
"'^'",
"';'",
"'('",
"')'",
"$accept",
"input",
616 0, 256, 257, 258, 45, 43, 42, 47, 259, 94,
621 #define YYPACT_NINF (-8)
623 #define yypact_value_is_default(Yyn) \
624 ((Yyn) == YYPACT_NINF)
626 #define YYTABLE_NINF (-1)
628 #define yytable_value_is_error(Yyn) \
635 -8, 13, -8, -8, 3, 3, -8, 3, -8, 30,
636 -7, -7, 21, 3, 3, 3, 3, 1, -8, -8,
645 2, 0, 1, 6, 0, 0, 4, 0, 3, 0,
646 11, 12, 0, 0, 0, 0, 0, 0, 5, 14,
667 10, 11, 17, 12, 24, 0, 3, 4, 5, 20,
668 21, 22, 23, 2, 7, 0, 3, 4, 5, 0,
669 0, 0, 0, 6, 7, 13, 14, 15, 16, 0,
670 17, 0, 0, 19, 13, 14, 15, 16, 0, 17,
676 4, 5, 9, 7, 3, -1, 3, 4, 5, 13,
677 14, 15, 16, 0, 11, -1, 3, 4, 5, -1,
678 -1, -1, -1, 10, 11, 4, 5, 6, 7, -1,
679 9, -1, -1, 12, 4, 5, 6, 7, -1, 9,
687 0, 14, 0, 3, 4, 5, 10, 11, 15, 16,
688 16, 16, 16, 4, 5, 6, 7, 9, 10, 12,
695 0, 13, 14, 14, 15, 15, 16, 16, 16, 16,
702 0, 2, 0, 2, 1, 2, 1, 3, 3, 3,
709 #define yyerrok (yyerrstatus = 0)
710 #define yyclearin (yychar = YYEMPTY)
712 #define YYACCEPT goto yyacceptlab
713 #define YYABORT goto yyabortlab
714 #define YYERROR goto yyerrorlab
717 #define YYRECOVERING() (!!yyerrstatus)
719 #define YYBACKUP(Token, Value) \
721 if (yychar == YYEMPTY) \
725 YYPOPSTACK (yylen); \
731 yyerror (YY_("syntax error: cannot back up")); \
738 #define YYERRCODE YYUNDEF
746 # define YYFPRINTF fprintf
749 # define YYDPRINTF(Args) \
756 # ifndef YY_LOCATION_PRINT
757 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
761 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
765 YYFPRINTF (stderr, "%s ", Title); \
766 yy_symbol_print (stderr, \
768 YYFPRINTF (stderr, "\n"); \
781 FILE *yyoutput = yyo;
787 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
804 yykind <
YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
819 for (; yybottom <= yytop; yybottom++)
821 int yybot = *yybottom;
827 # define YY_STACK_PRINT(Bottom, Top) \
830 yy_stack_print ((Bottom), (Top)); \
843 int yynrhs =
yyr2[yyrule];
845 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
848 for (yyi = 0; yyi < yynrhs; yyi++)
853 &yyvsp[(yyi + 1) - (yynrhs)]);
858 # define YY_REDUCE_PRINT(Rule) \
861 yy_reduce_print (yyssp, yyvsp, Rule); \
868 # define YYDPRINTF(Args) ((void) 0)
869 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
870 # define YY_STACK_PRINT(Bottom, Top)
871 # define YY_REDUCE_PRINT(Rule)
877 # define YYINITDEPTH 200
888 # define YYMAXDEPTH 10000
968 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
979 yyssp = yyss = yyssa;
980 yyvsp = yyvs = yyvsa;
983 YYDPRINTF ((stderr,
"Starting parse\n"));
1002 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
1009 if (yyss + yystacksize - 1 <= yyssp)
1010 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1011 goto yyexhaustedlab;
1017 # if defined yyoverflow
1029 yyoverflow (
YY_(
"memory exhausted"),
1030 &yyss1, yysize *
YYSIZEOF (*yyssp),
1031 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
1039 goto yyexhaustedlab;
1046 union yyalloc *yyptr =
1050 goto yyexhaustedlab;
1051 YYSTACK_RELOCATE (yyss_alloc, yyss);
1052 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1053 # undef YYSTACK_RELOCATE
1059 yyssp = yyss + yysize - 1;
1060 yyvsp = yyvs + yysize - 1;
1063 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
1064 YY_CAST (
long, yystacksize)));
1067 if (yyss + yystacksize - 1 <= yyssp)
1095 YYDPRINTF ((stderr,
"Reading a token\n"));
1103 YYDPRINTF ((stderr,
"Now at end of input.\n"));
1177 yyval = yyvsp[1-yylen];
1184 #line 78 "readcf.yy"
1186 #line 1187 "readcf.cc"
1190 #line 81 "readcf.yy"
1191 { yyval = yyvsp[0]; }
1192 #line 1193 "readcf.cc"
1196 #line 82 "readcf.yy"
1197 { yyval = yyvsp[-2].getval() + yyvsp[0].getval(); }
1198 #line 1199 "readcf.cc"
1202 #line 83 "readcf.yy"
1203 { yyval = yyvsp[-2].getval() - yyvsp[0].getval(); }
1204 #line 1205 "readcf.cc"
1208 #line 84 "readcf.yy"
1209 { yyval = yyvsp[-2].getval() * yyvsp[0].getval(); }
1210 #line 1211 "readcf.cc"
1214 #line 85 "readcf.yy"
1215 { yyval = yyvsp[-2].getval() / yyvsp[0].getval(); }
1216 #line 1217 "readcf.cc"
1220 #line 86 "readcf.yy"
1221 { yyval = -yyvsp[0].getval(); }
1222 #line 1223 "readcf.cc"
1226 #line 87 "readcf.yy"
1227 { yyval = yyvsp[0].getval(); }
1228 #line 1229 "readcf.cc"
1232 #line 88 "readcf.yy"
1233 { yyval =
power( yyvsp[-2].getval(), yyvsp[0].getintval() ); }
1234 #line 1235 "readcf.cc"
1238 #line 89 "readcf.yy"
1239 { yyval = yyvsp[-1].getval(); }
1240 #line 1241 "readcf.cc"
1244 #line 1245 "readcf.cc"
1271 const int yyi =
yypgoto[yylhs] + *yyssp;
1272 yystate = (0 <= yyi && yyi <=
YYLAST &&
yycheck[yyi] == *yyssp
1294 if (yyerrstatus == 3)
1397 #if !defined yyoverflow
1424 while (yyssp != yyss)
1438 #line 92 "readcf.yy"
1458 while ((c =
defaultin->get()) ==
' ' || c ==
'\t' || c ==
'\n' ) ;
1459 if ( isdigit( c ) ) {
1464 else if ( isalpha( c ) ) {
1487 this->yylval =
Variable( (
char)c );
1495 this->yylval =
Variable( (
char)c );
1510 YY_parse_CLASS my_parser;
1512 if ( my_parser.yyparse() == 0 ) {
1537 static char * buffer = 0;
1538 static int bufsize = 0;
1540 if ( buffer == 0 ) {
1542 buffer =
new char[bufsize];
1544 int i = 0, c, goon = 1;
1546 while ( isdigit( c =
s.get() ) &&
i < bufsize - 2 ) {
1550 if ( isdigit( c ) ) {
1552 char * newbuffer = (
char*)memcpy(
new char[bufsize], buffer, bufsize - 1000 );