00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #define YYBISON 1
00047
00048
00049 #define YYBISON_VERSION "2.4.1"
00050
00051
00052 #define YYSKELETON_NAME "yacc.c"
00053
00054
00055 #define YYPURE 0
00056
00057
00058 #define YYPUSH 0
00059
00060
00061 #define YYPULL 1
00062
00063
00064 #define YYLSP_NEEDED 0
00065
00066
00067
00068
00069
00070
00071 #line 1 "data-syntax.y"
00072
00073 #define YYDEBUG 1
00074 #include "data.h"
00075 #include "array-creator.h"
00076 #include "data-token.h"
00077 #include "symbol.h"
00078 #define YYSTYPE Data
00079
00080
00081 #line 15 "data-syntax.y"
00082
00083
00084 #define y_tabbed
00085 #include <stdlib.h>
00086 #include <assert.h>
00087 #include <stdlib.h>
00088 #include <stdio.h>
00089 #include <string>
00090 extern int yylex();
00091 Data parse_result;
00092 void yyerror(const char* text)
00093 {
00094 printf("%s\n",text);
00095 exit(10);
00096 }
00097
00098
00099
00100
00101 #line 102 "data-syntax.cpp"
00102
00103
00104 #ifndef YYDEBUG
00105 # define YYDEBUG 0
00106 #endif
00107
00108
00109 #ifdef YYERROR_VERBOSE
00110 # undef YYERROR_VERBOSE
00111 # define YYERROR_VERBOSE 1
00112 #else
00113 # define YYERROR_VERBOSE 0
00114 #endif
00115
00116
00117 #ifndef YYTOKEN_TABLE
00118 # define YYTOKEN_TABLE 0
00119 #endif
00120
00121
00122
00123 #ifndef YYTOKENTYPE
00124 # define YYTOKENTYPE
00125
00126
00127 enum yytokentype {
00128 BRACE_OPEN = 258,
00129 BRACE_CLOSE = 259,
00130 COLON = 260,
00131 BRACKET_OPEN = 261,
00132 BRACKET_CLOSE = 262,
00133 SYMBOL = 263,
00134 NUMBER = 264,
00135 STRING = 265,
00136 DIMENSION_OPEN = 266,
00137 DIMENSION_CLOSE = 267
00138 };
00139 #endif
00140
00141
00142
00143 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00144 typedef int YYSTYPE;
00145 # define YYSTYPE_IS_TRIVIAL 1
00146 # define yystype YYSTYPE
00147 # define YYSTYPE_IS_DECLARED 1
00148 #endif
00149
00150
00151
00152
00153
00154
00155 #line 156 "data-syntax.cpp"
00156
00157 #ifdef short
00158 # undef short
00159 #endif
00160
00161 #ifdef YYTYPE_UINT8
00162 typedef YYTYPE_UINT8 yytype_uint8;
00163 #else
00164 typedef unsigned char yytype_uint8;
00165 #endif
00166
00167 #ifdef YYTYPE_INT8
00168 typedef YYTYPE_INT8 yytype_int8;
00169 #elif (defined __STDC__ || defined __C99__FUNC__ \
00170 || defined __cplusplus || defined _MSC_VER)
00171 typedef signed char yytype_int8;
00172 #else
00173 typedef short int yytype_int8;
00174 #endif
00175
00176 #ifdef YYTYPE_UINT16
00177 typedef YYTYPE_UINT16 yytype_uint16;
00178 #else
00179 typedef unsigned short int yytype_uint16;
00180 #endif
00181
00182 #ifdef YYTYPE_INT16
00183 typedef YYTYPE_INT16 yytype_int16;
00184 #else
00185 typedef short int yytype_int16;
00186 #endif
00187
00188 #ifndef YYSIZE_T
00189 # ifdef __SIZE_TYPE__
00190 # define YYSIZE_T __SIZE_TYPE__
00191 # elif defined size_t
00192 # define YYSIZE_T size_t
00193 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00194 || defined __cplusplus || defined _MSC_VER)
00195 # include <stddef.h>
00196 # define YYSIZE_T size_t
00197 # else
00198 # define YYSIZE_T unsigned int
00199 # endif
00200 #endif
00201
00202 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00203
00204 #ifndef YY_
00205 # if YYENABLE_NLS
00206 # if ENABLE_NLS
00207 # include <libintl.h>
00208 # define YY_(msgid) dgettext ("bison-runtime", msgid)
00209 # endif
00210 # endif
00211 # ifndef YY_
00212 # define YY_(msgid) msgid
00213 # endif
00214 #endif
00215
00216
00217 #if ! defined lint || defined __GNUC__
00218 # define YYUSE(e) ((void) (e))
00219 #else
00220 # define YYUSE(e)
00221 #endif
00222
00223
00224 #ifndef lint
00225 # define YYID(n) (n)
00226 #else
00227 #if (defined __STDC__ || defined __C99__FUNC__ \
00228 || defined __cplusplus || defined _MSC_VER)
00229 static int
00230 YYID (int yyi)
00231 #else
00232 static int
00233 YYID (yyi)
00234 int yyi;
00235 #endif
00236 {
00237 return yyi;
00238 }
00239 #endif
00240
00241 #if ! defined yyoverflow || YYERROR_VERBOSE
00242
00243
00244
00245 # ifdef YYSTACK_USE_ALLOCA
00246 # if YYSTACK_USE_ALLOCA
00247 # ifdef __GNUC__
00248 # define YYSTACK_ALLOC __builtin_alloca
00249 # elif defined __BUILTIN_VA_ARG_INCR
00250 # include <alloca.h>
00251 # elif defined _AIX
00252 # define YYSTACK_ALLOC __alloca
00253 # elif defined _MSC_VER
00254 # include <malloc.h>
00255 # define alloca _alloca
00256 # else
00257 # define YYSTACK_ALLOC alloca
00258 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00259 || defined __cplusplus || defined _MSC_VER)
00260 # include <stdlib.h>
00261 # ifndef _STDLIB_H
00262 # define _STDLIB_H 1
00263 # endif
00264 # endif
00265 # endif
00266 # endif
00267 # endif
00268
00269 # ifdef YYSTACK_ALLOC
00270
00271 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
00272 # ifndef YYSTACK_ALLOC_MAXIMUM
00273
00274
00275
00276
00277 # define YYSTACK_ALLOC_MAXIMUM 4032
00278 # endif
00279 # else
00280 # define YYSTACK_ALLOC YYMALLOC
00281 # define YYSTACK_FREE YYFREE
00282 # ifndef YYSTACK_ALLOC_MAXIMUM
00283 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00284 # endif
00285 # if (defined __cplusplus && ! defined _STDLIB_H \
00286 && ! ((defined YYMALLOC || defined malloc) \
00287 && (defined YYFREE || defined free)))
00288 # include <stdlib.h>
00289 # ifndef _STDLIB_H
00290 # define _STDLIB_H 1
00291 # endif
00292 # endif
00293 # ifndef YYMALLOC
00294 # define YYMALLOC malloc
00295 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00296 || defined __cplusplus || defined _MSC_VER)
00297 void *malloc (YYSIZE_T);
00298 # endif
00299 # endif
00300 # ifndef YYFREE
00301 # define YYFREE free
00302 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00303 || defined __cplusplus || defined _MSC_VER)
00304 void free (void *);
00305 # endif
00306 # endif
00307 # endif
00308 #endif
00309
00310
00311 #if (! defined yyoverflow \
00312 && (! defined __cplusplus \
00313 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00314
00315
00316 union yyalloc
00317 {
00318 yytype_int16 yyss_alloc;
00319 YYSTYPE yyvs_alloc;
00320 };
00321
00322
00323 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00324
00325
00326
00327 # define YYSTACK_BYTES(N) \
00328 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00329 + YYSTACK_GAP_MAXIMUM)
00330
00331
00332
00333 # ifndef YYCOPY
00334 # if defined __GNUC__ && 1 < __GNUC__
00335 # define YYCOPY(To, From, Count) \
00336 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00337 # else
00338 # define YYCOPY(To, From, Count) \
00339 do \
00340 { \
00341 YYSIZE_T yyi; \
00342 for (yyi = 0; yyi < (Count); yyi++) \
00343 (To)[yyi] = (From)[yyi]; \
00344 } \
00345 while (YYID (0))
00346 # endif
00347 # endif
00348
00349
00350
00351
00352
00353
00354 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
00355 do \
00356 { \
00357 YYSIZE_T yynewbytes; \
00358 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
00359 Stack = &yyptr->Stack_alloc; \
00360 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00361 yyptr += yynewbytes / sizeof (*yyptr); \
00362 } \
00363 while (YYID (0))
00364
00365 #endif
00366
00367
00368 #define YYFINAL 15
00369
00370 #define YYLAST 26
00371
00372
00373 #define YYNTOKENS 13
00374
00375 #define YYNNTS 9
00376
00377 #define YYNRULES 16
00378
00379 #define YYNSTATES 27
00380
00381
00382 #define YYUNDEFTOK 2
00383 #define YYMAXUTOK 267
00384
00385 #define YYTRANSLATE(YYX) \
00386 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00387
00388
00389 static const yytype_uint8 yytranslate[] =
00390 {
00391 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00401 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00405 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00416 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00417 5, 6, 7, 8, 9, 10, 11, 12
00418 };
00419
00420 #if YYDEBUG
00421
00422
00423 static const yytype_uint8 yyprhs[] =
00424 {
00425 0, 0, 3, 5, 7, 9, 11, 13, 15, 17,
00426 21, 25, 26, 29, 36, 40, 43
00427 };
00428
00429
00430 static const yytype_int8 yyrhs[] =
00431 {
00432 14, 0, -1, 15, -1, 16, -1, 8, -1, 9,
00433 -1, 10, -1, 19, -1, 20, -1, 3, 17, 4,
00434 -1, 17, 18, 15, -1, -1, 8, 5, -1, 11,
00435 9, 5, 8, 12, 20, -1, 6, 21, 7, -1,
00436 21, 15, -1, -1
00437 };
00438
00439
00440 static const yytype_uint8 yyrline[] =
00441 {
00442 0, 34, 34, 36, 37, 38, 39, 40, 41, 43,
00443 46, 51, 53, 56, 59, 62, 66
00444 };
00445 #endif
00446
00447 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00448
00449
00450 static const char *const yytname[] =
00451 {
00452 "$end", "error", "$undefined", "BRACE_OPEN", "BRACE_CLOSE", "COLON",
00453 "BRACKET_OPEN", "BRACKET_CLOSE", "SYMBOL", "NUMBER", "STRING",
00454 "DIMENSION_OPEN", "DIMENSION_CLOSE", "$accept", "main", "data", "token",
00455 "associations", "field", "array", "sequence", "elements", 0
00456 };
00457 #endif
00458
00459 # ifdef YYPRINT
00460
00461
00462 static const yytype_uint16 yytoknum[] =
00463 {
00464 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00465 265, 266, 267
00466 };
00467 # endif
00468
00469
00470 static const yytype_uint8 yyr1[] =
00471 {
00472 0, 13, 14, 15, 15, 15, 15, 15, 15, 16,
00473 17, 17, 18, 19, 20, 21, 21
00474 };
00475
00476
00477 static const yytype_uint8 yyr2[] =
00478 {
00479 0, 2, 1, 1, 1, 1, 1, 1, 1, 3,
00480 3, 0, 2, 6, 3, 2, 0
00481 };
00482
00483
00484
00485
00486 static const yytype_uint8 yydefact[] =
00487 {
00488 0, 11, 16, 4, 5, 6, 0, 0, 2, 3,
00489 7, 8, 0, 0, 0, 1, 9, 0, 0, 14,
00490 15, 0, 12, 10, 0, 0, 13
00491 };
00492
00493
00494 static const yytype_int8 yydefgoto[] =
00495 {
00496 -1, 7, 8, 9, 12, 18, 10, 11, 13
00497 };
00498
00499
00500
00501 #define YYPACT_NINF -9
00502 static const yytype_int8 yypact[] =
00503 {
00504 6, -9, -9, -9, -9, -9, -8, 2, -9, -9,
00505 -9, -9, 15, -3, 5, -9, -9, 16, 6, -9,
00506 -9, 3, -9, -9, 8, 18, -9
00507 };
00508
00509
00510 static const yytype_int8 yypgoto[] =
00511 {
00512 -9, -9, 0, -9, -9, -9, -9, 1, -9
00513 };
00514
00515
00516
00517
00518
00519 #define YYTABLE_NINF -1
00520 static const yytype_uint8 yytable[] =
00521 {
00522 1, 14, 15, 2, 19, 3, 4, 5, 6, 1,
00523 21, 24, 2, 20, 3, 4, 5, 6, 23, 16,
00524 25, 22, 0, 17, 2, 0, 26
00525 };
00526
00527 static const yytype_int8 yycheck[] =
00528 {
00529 3, 9, 0, 6, 7, 8, 9, 10, 11, 3,
00530 5, 8, 6, 13, 8, 9, 10, 11, 18, 4,
00531 12, 5, -1, 8, 6, -1, 25
00532 };
00533
00534
00535
00536 static const yytype_uint8 yystos[] =
00537 {
00538 0, 3, 6, 8, 9, 10, 11, 14, 15, 16,
00539 19, 20, 17, 21, 9, 0, 4, 8, 18, 7,
00540 15, 5, 5, 15, 8, 12, 20
00541 };
00542
00543 #define yyerrok (yyerrstatus = 0)
00544 #define yyclearin (yychar = YYEMPTY)
00545 #define YYEMPTY (-2)
00546 #define YYEOF 0
00547
00548 #define YYACCEPT goto yyacceptlab
00549 #define YYABORT goto yyabortlab
00550 #define YYERROR goto yyerrorlab
00551
00552
00553
00554
00555
00556
00557 #define YYFAIL goto yyerrlab
00558
00559 #define YYRECOVERING() (!!yyerrstatus)
00560
00561 #define YYBACKUP(Token, Value) \
00562 do \
00563 if (yychar == YYEMPTY && yylen == 1) \
00564 { \
00565 yychar = (Token); \
00566 yylval = (Value); \
00567 yytoken = YYTRANSLATE (yychar); \
00568 YYPOPSTACK (1); \
00569 goto yybackup; \
00570 } \
00571 else \
00572 { \
00573 yyerror (YY_("syntax error: cannot back up")); \
00574 YYERROR; \
00575 } \
00576 while (YYID (0))
00577
00578
00579 #define YYTERROR 1
00580 #define YYERRCODE 256
00581
00582
00583
00584
00585
00586
00587 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
00588 #ifndef YYLLOC_DEFAULT
00589 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00590 do \
00591 if (YYID (N)) \
00592 { \
00593 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
00594 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
00595 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
00596 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
00597 } \
00598 else \
00599 { \
00600 (Current).first_line = (Current).last_line = \
00601 YYRHSLOC (Rhs, 0).last_line; \
00602 (Current).first_column = (Current).last_column = \
00603 YYRHSLOC (Rhs, 0).last_column; \
00604 } \
00605 while (YYID (0))
00606 #endif
00607
00608
00609
00610
00611
00612
00613 #ifndef YY_LOCATION_PRINT
00614 # if YYLTYPE_IS_TRIVIAL
00615 # define YY_LOCATION_PRINT(File, Loc) \
00616 fprintf (File, "%d.%d-%d.%d", \
00617 (Loc).first_line, (Loc).first_column, \
00618 (Loc).last_line, (Loc).last_column)
00619 # else
00620 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
00621 # endif
00622 #endif
00623
00624
00625
00626
00627 #ifdef YYLEX_PARAM
00628 # define YYLEX yylex (YYLEX_PARAM)
00629 #else
00630 # define YYLEX yylex ()
00631 #endif
00632
00633
00634 #if YYDEBUG
00635
00636 # ifndef YYFPRINTF
00637 # include <stdio.h>
00638 # define YYFPRINTF fprintf
00639 # endif
00640
00641 # define YYDPRINTF(Args) \
00642 do { \
00643 if (yydebug) \
00644 YYFPRINTF Args; \
00645 } while (YYID (0))
00646
00647 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
00648 do { \
00649 if (yydebug) \
00650 { \
00651 YYFPRINTF (stderr, "%s ", Title); \
00652 yy_symbol_print (stderr, \
00653 Type, Value); \
00654 YYFPRINTF (stderr, "\n"); \
00655 } \
00656 } while (YYID (0))
00657
00658
00659
00660
00661
00662
00663
00664 #if (defined __STDC__ || defined __C99__FUNC__ \
00665 || defined __cplusplus || defined _MSC_VER)
00666 static void
00667 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00668 #else
00669 static void
00670 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
00671 FILE *yyoutput;
00672 int yytype;
00673 YYSTYPE const * const yyvaluep;
00674 #endif
00675 {
00676 if (!yyvaluep)
00677 return;
00678 # ifdef YYPRINT
00679 if (yytype < YYNTOKENS)
00680 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
00681 # else
00682 YYUSE (yyoutput);
00683 # endif
00684 switch (yytype)
00685 {
00686 default:
00687 break;
00688 }
00689 }
00690
00691
00692
00693
00694
00695
00696 #if (defined __STDC__ || defined __C99__FUNC__ \
00697 || defined __cplusplus || defined _MSC_VER)
00698 static void
00699 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00700 #else
00701 static void
00702 yy_symbol_print (yyoutput, yytype, yyvaluep)
00703 FILE *yyoutput;
00704 int yytype;
00705 YYSTYPE const * const yyvaluep;
00706 #endif
00707 {
00708 if (yytype < YYNTOKENS)
00709 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
00710 else
00711 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
00712
00713 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
00714 YYFPRINTF (yyoutput, ")");
00715 }
00716
00717
00718
00719
00720
00721
00722 #if (defined __STDC__ || defined __C99__FUNC__ \
00723 || defined __cplusplus || defined _MSC_VER)
00724 static void
00725 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
00726 #else
00727 static void
00728 yy_stack_print (yybottom, yytop)
00729 yytype_int16 *yybottom;
00730 yytype_int16 *yytop;
00731 #endif
00732 {
00733 YYFPRINTF (stderr, "Stack now");
00734 for (; yybottom <= yytop; yybottom++)
00735 {
00736 int yybot = *yybottom;
00737 YYFPRINTF (stderr, " %d", yybot);
00738 }
00739 YYFPRINTF (stderr, "\n");
00740 }
00741
00742 # define YY_STACK_PRINT(Bottom, Top) \
00743 do { \
00744 if (yydebug) \
00745 yy_stack_print ((Bottom), (Top)); \
00746 } while (YYID (0))
00747
00748
00749
00750
00751
00752
00753 #if (defined __STDC__ || defined __C99__FUNC__ \
00754 || defined __cplusplus || defined _MSC_VER)
00755 static void
00756 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
00757 #else
00758 static void
00759 yy_reduce_print (yyvsp, yyrule)
00760 YYSTYPE *yyvsp;
00761 int yyrule;
00762 #endif
00763 {
00764 int yynrhs = yyr2[yyrule];
00765 int yyi;
00766 unsigned long int yylno = yyrline[yyrule];
00767 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
00768 yyrule - 1, yylno);
00769
00770 for (yyi = 0; yyi < yynrhs; yyi++)
00771 {
00772 YYFPRINTF (stderr, " $%d = ", yyi + 1);
00773 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
00774 &(yyvsp[(yyi + 1) - (yynrhs)])
00775 );
00776 YYFPRINTF (stderr, "\n");
00777 }
00778 }
00779
00780 # define YY_REDUCE_PRINT(Rule) \
00781 do { \
00782 if (yydebug) \
00783 yy_reduce_print (yyvsp, Rule); \
00784 } while (YYID (0))
00785
00786
00787
00788 int yydebug;
00789 #else
00790 # define YYDPRINTF(Args)
00791 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
00792 # define YY_STACK_PRINT(Bottom, Top)
00793 # define YY_REDUCE_PRINT(Rule)
00794 #endif
00795
00796
00797
00798 #ifndef YYINITDEPTH
00799 # define YYINITDEPTH 200
00800 #endif
00801
00802
00803
00804
00805
00806
00807
00808
00809 #ifndef YYMAXDEPTH
00810 # define YYMAXDEPTH 10000
00811 #endif
00812
00813
00814
00815 #if YYERROR_VERBOSE
00816
00817 # ifndef yystrlen
00818 # if defined __GLIBC__ && defined _STRING_H
00819 # define yystrlen strlen
00820 # else
00821
00822 #if (defined __STDC__ || defined __C99__FUNC__ \
00823 || defined __cplusplus || defined _MSC_VER)
00824 static YYSIZE_T
00825 yystrlen (const char *yystr)
00826 #else
00827 static YYSIZE_T
00828 yystrlen (yystr)
00829 const char *yystr;
00830 #endif
00831 {
00832 YYSIZE_T yylen;
00833 for (yylen = 0; yystr[yylen]; yylen++)
00834 continue;
00835 return yylen;
00836 }
00837 # endif
00838 # endif
00839
00840 # ifndef yystpcpy
00841 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
00842 # define yystpcpy stpcpy
00843 # else
00844
00845
00846 #if (defined __STDC__ || defined __C99__FUNC__ \
00847 || defined __cplusplus || defined _MSC_VER)
00848 static char *
00849 yystpcpy (char *yydest, const char *yysrc)
00850 #else
00851 static char *
00852 yystpcpy (yydest, yysrc)
00853 char *yydest;
00854 const char *yysrc;
00855 #endif
00856 {
00857 char *yyd = yydest;
00858 const char *yys = yysrc;
00859
00860 while ((*yyd++ = *yys++) != '\0')
00861 continue;
00862
00863 return yyd - 1;
00864 }
00865 # endif
00866 # endif
00867
00868 # ifndef yytnamerr
00869
00870
00871
00872
00873
00874
00875
00876 static YYSIZE_T
00877 yytnamerr (char *yyres, const char *yystr)
00878 {
00879 if (*yystr == '"')
00880 {
00881 YYSIZE_T yyn = 0;
00882 char const *yyp = yystr;
00883
00884 for (;;)
00885 switch (*++yyp)
00886 {
00887 case '\'':
00888 case ',':
00889 goto do_not_strip_quotes;
00890
00891 case '\\':
00892 if (*++yyp != '\\')
00893 goto do_not_strip_quotes;
00894
00895 default:
00896 if (yyres)
00897 yyres[yyn] = *yyp;
00898 yyn++;
00899 break;
00900
00901 case '"':
00902 if (yyres)
00903 yyres[yyn] = '\0';
00904 return yyn;
00905 }
00906 do_not_strip_quotes: ;
00907 }
00908
00909 if (! yyres)
00910 return yystrlen (yystr);
00911
00912 return yystpcpy (yyres, yystr) - yyres;
00913 }
00914 # endif
00915
00916
00917
00918
00919
00920
00921
00922
00923 static YYSIZE_T
00924 yysyntax_error (char *yyresult, int yystate, int yychar)
00925 {
00926 int yyn = yypact[yystate];
00927
00928 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
00929 return 0;
00930 else
00931 {
00932 int yytype = YYTRANSLATE (yychar);
00933 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
00934 YYSIZE_T yysize = yysize0;
00935 YYSIZE_T yysize1;
00936 int yysize_overflow = 0;
00937 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
00938 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
00939 int yyx;
00940
00941 # if 0
00942
00943
00944 YY_("syntax error, unexpected %s");
00945 YY_("syntax error, unexpected %s, expecting %s");
00946 YY_("syntax error, unexpected %s, expecting %s or %s");
00947 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
00948 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
00949 # endif
00950 char *yyfmt;
00951 char const *yyf;
00952 static char const yyunexpected[] = "syntax error, unexpected %s";
00953 static char const yyexpecting[] = ", expecting %s";
00954 static char const yyor[] = " or %s";
00955 char yyformat[sizeof yyunexpected
00956 + sizeof yyexpecting - 1
00957 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
00958 * (sizeof yyor - 1))];
00959 char const *yyprefix = yyexpecting;
00960
00961
00962
00963 int yyxbegin = yyn < 0 ? -yyn : 0;
00964
00965
00966 int yychecklim = YYLAST - yyn + 1;
00967 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
00968 int yycount = 1;
00969
00970 yyarg[0] = yytname[yytype];
00971 yyfmt = yystpcpy (yyformat, yyunexpected);
00972
00973 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
00974 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
00975 {
00976 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
00977 {
00978 yycount = 1;
00979 yysize = yysize0;
00980 yyformat[sizeof yyunexpected - 1] = '\0';
00981 break;
00982 }
00983 yyarg[yycount++] = yytname[yyx];
00984 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
00985 yysize_overflow |= (yysize1 < yysize);
00986 yysize = yysize1;
00987 yyfmt = yystpcpy (yyfmt, yyprefix);
00988 yyprefix = yyor;
00989 }
00990
00991 yyf = YY_(yyformat);
00992 yysize1 = yysize + yystrlen (yyf);
00993 yysize_overflow |= (yysize1 < yysize);
00994 yysize = yysize1;
00995
00996 if (yysize_overflow)
00997 return YYSIZE_MAXIMUM;
00998
00999 if (yyresult)
01000 {
01001
01002
01003
01004 char *yyp = yyresult;
01005 int yyi = 0;
01006 while ((*yyp = *yyf) != '\0')
01007 {
01008 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01009 {
01010 yyp += yytnamerr (yyp, yyarg[yyi++]);
01011 yyf += 2;
01012 }
01013 else
01014 {
01015 yyp++;
01016 yyf++;
01017 }
01018 }
01019 }
01020 return yysize;
01021 }
01022 }
01023 #endif
01024
01025
01026
01027
01028
01029
01030
01031 #if (defined __STDC__ || defined __C99__FUNC__ \
01032 || defined __cplusplus || defined _MSC_VER)
01033 static void
01034 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
01035 #else
01036 static void
01037 yydestruct (yymsg, yytype, yyvaluep)
01038 const char *yymsg;
01039 int yytype;
01040 YYSTYPE *yyvaluep;
01041 #endif
01042 {
01043 YYUSE (yyvaluep);
01044
01045 if (!yymsg)
01046 yymsg = "Deleting";
01047 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01048
01049 switch (yytype)
01050 {
01051
01052 default:
01053 break;
01054 }
01055 }
01056
01057
01058 #ifdef YYPARSE_PARAM
01059 #if defined __STDC__ || defined __cplusplus
01060 int yyparse (void *YYPARSE_PARAM);
01061 #else
01062 int yyparse ();
01063 #endif
01064 #else
01065 #if defined __STDC__ || defined __cplusplus
01066 int yyparse (void);
01067 #else
01068 int yyparse ();
01069 #endif
01070 #endif
01071
01072
01073
01074 int yychar;
01075
01076
01077 YYSTYPE yylval;
01078
01079
01080 int yynerrs;
01081
01082
01083
01084
01085
01086
01087
01088 #ifdef YYPARSE_PARAM
01089 #if (defined __STDC__ || defined __C99__FUNC__ \
01090 || defined __cplusplus || defined _MSC_VER)
01091 int
01092 yyparse (void *YYPARSE_PARAM)
01093 #else
01094 int
01095 yyparse (YYPARSE_PARAM)
01096 void *YYPARSE_PARAM;
01097 #endif
01098 #else
01099 #if (defined __STDC__ || defined __C99__FUNC__ \
01100 || defined __cplusplus || defined _MSC_VER)
01101 int
01102 yyparse (void)
01103 #else
01104 int
01105 yyparse ()
01106
01107 #endif
01108 #endif
01109 {
01110
01111
01112 int yystate;
01113
01114 int yyerrstatus;
01115
01116
01117
01118
01119
01120
01121
01122
01123
01124 yytype_int16 yyssa[YYINITDEPTH];
01125 yytype_int16 *yyss;
01126 yytype_int16 *yyssp;
01127
01128
01129 YYSTYPE yyvsa[YYINITDEPTH];
01130 YYSTYPE *yyvs;
01131 YYSTYPE *yyvsp;
01132
01133 YYSIZE_T yystacksize;
01134
01135 int yyn;
01136 int yyresult;
01137
01138 int yytoken;
01139
01140
01141 YYSTYPE yyval;
01142
01143 #if YYERROR_VERBOSE
01144
01145 char yymsgbuf[128];
01146 char *yymsg = yymsgbuf;
01147 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01148 #endif
01149
01150 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
01151
01152
01153
01154 int yylen = 0;
01155
01156 yytoken = 0;
01157 yyss = yyssa;
01158 yyvs = yyvsa;
01159 yystacksize = YYINITDEPTH;
01160
01161 YYDPRINTF ((stderr, "Starting parse\n"));
01162
01163 yystate = 0;
01164 yyerrstatus = 0;
01165 yynerrs = 0;
01166 yychar = YYEMPTY;
01167
01168
01169
01170
01171
01172 yyssp = yyss;
01173 yyvsp = yyvs;
01174
01175 goto yysetstate;
01176
01177
01178
01179
01180 yynewstate:
01181
01182
01183 yyssp++;
01184
01185 yysetstate:
01186 *yyssp = yystate;
01187
01188 if (yyss + yystacksize - 1 <= yyssp)
01189 {
01190
01191 YYSIZE_T yysize = yyssp - yyss + 1;
01192
01193 #ifdef yyoverflow
01194 {
01195
01196
01197
01198 YYSTYPE *yyvs1 = yyvs;
01199 yytype_int16 *yyss1 = yyss;
01200
01201
01202
01203
01204
01205 yyoverflow (YY_("memory exhausted"),
01206 &yyss1, yysize * sizeof (*yyssp),
01207 &yyvs1, yysize * sizeof (*yyvsp),
01208 &yystacksize);
01209
01210 yyss = yyss1;
01211 yyvs = yyvs1;
01212 }
01213 #else
01214 # ifndef YYSTACK_RELOCATE
01215 goto yyexhaustedlab;
01216 # else
01217
01218 if (YYMAXDEPTH <= yystacksize)
01219 goto yyexhaustedlab;
01220 yystacksize *= 2;
01221 if (YYMAXDEPTH < yystacksize)
01222 yystacksize = YYMAXDEPTH;
01223
01224 {
01225 yytype_int16 *yyss1 = yyss;
01226 union yyalloc *yyptr =
01227 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01228 if (! yyptr)
01229 goto yyexhaustedlab;
01230 YYSTACK_RELOCATE (yyss_alloc, yyss);
01231 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
01232 # undef YYSTACK_RELOCATE
01233 if (yyss1 != yyssa)
01234 YYSTACK_FREE (yyss1);
01235 }
01236 # endif
01237 #endif
01238
01239 yyssp = yyss + yysize - 1;
01240 yyvsp = yyvs + yysize - 1;
01241
01242 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01243 (unsigned long int) yystacksize));
01244
01245 if (yyss + yystacksize - 1 <= yyssp)
01246 YYABORT;
01247 }
01248
01249 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01250
01251 if (yystate == YYFINAL)
01252 YYACCEPT;
01253
01254 goto yybackup;
01255
01256
01257
01258
01259 yybackup:
01260
01261
01262
01263
01264
01265 yyn = yypact[yystate];
01266 if (yyn == YYPACT_NINF)
01267 goto yydefault;
01268
01269
01270
01271
01272 if (yychar == YYEMPTY)
01273 {
01274 YYDPRINTF ((stderr, "Reading a token: "));
01275 yychar = YYLEX;
01276 }
01277
01278 if (yychar <= YYEOF)
01279 {
01280 yychar = yytoken = YYEOF;
01281 YYDPRINTF ((stderr, "Now at end of input.\n"));
01282 }
01283 else
01284 {
01285 yytoken = YYTRANSLATE (yychar);
01286 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
01287 }
01288
01289
01290
01291 yyn += yytoken;
01292 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01293 goto yydefault;
01294 yyn = yytable[yyn];
01295 if (yyn <= 0)
01296 {
01297 if (yyn == 0 || yyn == YYTABLE_NINF)
01298 goto yyerrlab;
01299 yyn = -yyn;
01300 goto yyreduce;
01301 }
01302
01303
01304
01305 if (yyerrstatus)
01306 yyerrstatus--;
01307
01308
01309 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
01310
01311
01312 yychar = YYEMPTY;
01313
01314 yystate = yyn;
01315 *++yyvsp = yylval;
01316
01317 goto yynewstate;
01318
01319
01320
01321
01322
01323 yydefault:
01324 yyn = yydefact[yystate];
01325 if (yyn == 0)
01326 goto yyerrlab;
01327 goto yyreduce;
01328
01329
01330
01331
01332
01333 yyreduce:
01334
01335 yylen = yyr2[yyn];
01336
01337
01338
01339
01340
01341
01342
01343
01344
01345 yyval = yyvsp[1-yylen];
01346
01347
01348 YY_REDUCE_PRINT (yyn);
01349 switch (yyn)
01350 {
01351 case 2:
01352
01353
01354 #line 34 "data-syntax.y"
01355 {(yyval)=(yyvsp[(1) - (1)]); parse_result = (yyvsp[(1) - (1)]);;}
01356 break;
01357
01358 case 3:
01359
01360
01361 #line 36 "data-syntax.y"
01362 {(yyval)=(yyvsp[(1) - (1)]);;}
01363 break;
01364
01365 case 4:
01366
01367
01368 #line 37 "data-syntax.y"
01369 {(yyval)=(yyvsp[(1) - (1)]);;}
01370 break;
01371
01372 case 5:
01373
01374
01375 #line 38 "data-syntax.y"
01376 {(yyval)=(yyvsp[(1) - (1)]);;}
01377 break;
01378
01379 case 6:
01380
01381
01382 #line 39 "data-syntax.y"
01383 {(yyval)=(yyvsp[(1) - (1)]);;}
01384 break;
01385
01386 case 7:
01387
01388
01389 #line 40 "data-syntax.y"
01390 {(yyval)=(yyvsp[(1) - (1)]);;}
01391 break;
01392
01393 case 8:
01394
01395
01396 #line 41 "data-syntax.y"
01397 {(yyval)=Creator((yyvsp[(1) - (1)])).getContentData();;}
01398 break;
01399
01400 case 9:
01401
01402
01403 #line 44 "data-syntax.y"
01404 {(yyval)=(yyvsp[(2) - (3)]);;}
01405 break;
01406
01407 case 10:
01408
01409
01410 #line 47 "data-syntax.y"
01411 {Token t((yyvsp[(1) - (3)]));
01412 Symbol s((yyvsp[(2) - (3)]));
01413 t[s]=(yyvsp[(3) - (3)]);
01414 (yyval)=(yyvsp[(1) - (3)]);;}
01415 break;
01416
01417 case 11:
01418
01419
01420 #line 51 "data-syntax.y"
01421 {(yyval)=Token();;}
01422 break;
01423
01424 case 12:
01425
01426
01427 #line 54 "data-syntax.y"
01428 {(yyval)=(yyvsp[(1) - (2)]);;}
01429 break;
01430
01431 case 13:
01432
01433
01434 #line 57 "data-syntax.y"
01435 { (yyval)=Creator((yyvsp[(6) - (6)])).convertTo((yyvsp[(2) - (6)]),(yyvsp[(4) - (6)])); ;}
01436 break;
01437
01438 case 14:
01439
01440
01441 #line 60 "data-syntax.y"
01442 { (yyval)=(yyvsp[(2) - (3)]); ;}
01443 break;
01444
01445 case 15:
01446
01447
01448 #line 63 "data-syntax.y"
01449 { Creator t((yyvsp[(1) - (2)]));
01450 t.append((yyvsp[(2) - (2)]));
01451 (yyval)=t; ;}
01452 break;
01453
01454 case 16:
01455
01456
01457 #line 66 "data-syntax.y"
01458 {(yyval)=Creator();;}
01459 break;
01460
01461
01462
01463
01464 #line 1465 "data-syntax.cpp"
01465 default: break;
01466 }
01467 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
01468
01469 YYPOPSTACK (yylen);
01470 yylen = 0;
01471 YY_STACK_PRINT (yyss, yyssp);
01472
01473 *++yyvsp = yyval;
01474
01475
01476
01477
01478
01479 yyn = yyr1[yyn];
01480
01481 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
01482 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01483 yystate = yytable[yystate];
01484 else
01485 yystate = yydefgoto[yyn - YYNTOKENS];
01486
01487 goto yynewstate;
01488
01489
01490
01491
01492
01493 yyerrlab:
01494
01495 if (!yyerrstatus)
01496 {
01497 ++yynerrs;
01498 #if ! YYERROR_VERBOSE
01499 yyerror (YY_("syntax error"));
01500 #else
01501 {
01502 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
01503 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
01504 {
01505 YYSIZE_T yyalloc = 2 * yysize;
01506 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
01507 yyalloc = YYSTACK_ALLOC_MAXIMUM;
01508 if (yymsg != yymsgbuf)
01509 YYSTACK_FREE (yymsg);
01510 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
01511 if (yymsg)
01512 yymsg_alloc = yyalloc;
01513 else
01514 {
01515 yymsg = yymsgbuf;
01516 yymsg_alloc = sizeof yymsgbuf;
01517 }
01518 }
01519
01520 if (0 < yysize && yysize <= yymsg_alloc)
01521 {
01522 (void) yysyntax_error (yymsg, yystate, yychar);
01523 yyerror (yymsg);
01524 }
01525 else
01526 {
01527 yyerror (YY_("syntax error"));
01528 if (yysize != 0)
01529 goto yyexhaustedlab;
01530 }
01531 }
01532 #endif
01533 }
01534
01535
01536
01537 if (yyerrstatus == 3)
01538 {
01539
01540
01541
01542 if (yychar <= YYEOF)
01543 {
01544
01545 if (yychar == YYEOF)
01546 YYABORT;
01547 }
01548 else
01549 {
01550 yydestruct ("Error: discarding",
01551 yytoken, &yylval);
01552 yychar = YYEMPTY;
01553 }
01554 }
01555
01556
01557
01558 goto yyerrlab1;
01559
01560
01561
01562
01563
01564 yyerrorlab:
01565
01566
01567
01568
01569 if ( 0)
01570 goto yyerrorlab;
01571
01572
01573
01574 YYPOPSTACK (yylen);
01575 yylen = 0;
01576 YY_STACK_PRINT (yyss, yyssp);
01577 yystate = *yyssp;
01578 goto yyerrlab1;
01579
01580
01581
01582
01583
01584 yyerrlab1:
01585 yyerrstatus = 3;
01586
01587 for (;;)
01588 {
01589 yyn = yypact[yystate];
01590 if (yyn != YYPACT_NINF)
01591 {
01592 yyn += YYTERROR;
01593 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
01594 {
01595 yyn = yytable[yyn];
01596 if (0 < yyn)
01597 break;
01598 }
01599 }
01600
01601
01602 if (yyssp == yyss)
01603 YYABORT;
01604
01605
01606 yydestruct ("Error: popping",
01607 yystos[yystate], yyvsp);
01608 YYPOPSTACK (1);
01609 yystate = *yyssp;
01610 YY_STACK_PRINT (yyss, yyssp);
01611 }
01612
01613 *++yyvsp = yylval;
01614
01615
01616
01617 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
01618
01619 yystate = yyn;
01620 goto yynewstate;
01621
01622
01623
01624
01625
01626 yyacceptlab:
01627 yyresult = 0;
01628 goto yyreturn;
01629
01630
01631
01632
01633 yyabortlab:
01634 yyresult = 1;
01635 goto yyreturn;
01636
01637 #if !defined(yyoverflow) || YYERROR_VERBOSE
01638
01639
01640
01641 yyexhaustedlab:
01642 yyerror (YY_("memory exhausted"));
01643 yyresult = 2;
01644
01645 #endif
01646
01647 yyreturn:
01648 if (yychar != YYEMPTY)
01649 yydestruct ("Cleanup: discarding lookahead",
01650 yytoken, &yylval);
01651
01652
01653 YYPOPSTACK (yylen);
01654 YY_STACK_PRINT (yyss, yyssp);
01655 while (yyssp != yyss)
01656 {
01657 yydestruct ("Cleanup: popping",
01658 yystos[*yyssp], yyvsp);
01659 YYPOPSTACK (1);
01660 }
01661 #ifndef yyoverflow
01662 if (yyss != yyssa)
01663 YYSTACK_FREE (yyss);
01664 #endif
01665 #if YYERROR_VERBOSE
01666 if (yymsg != yymsgbuf)
01667 YYSTACK_FREE (yymsg);
01668 #endif
01669
01670 return YYID (yyresult);
01671 }
01672
01673
01674
01675
01676 #line 68 "data-syntax.y"
01677
01678