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
00047 #define YYBISON 1
00048
00049
00050 #define YYBISON_VERSION "2.3"
00051
00052
00053 #define YYSKELETON_NAME "yacc.c"
00054
00055
00056 #define YYPURE 1
00057
00058
00059 #define YYLSP_NEEDED 1
00060
00061
00062 #define yyparse osrlparse
00063 #define yylex osrllex
00064 #define yyerror osrlerror
00065 #define yylval osrllval
00066 #define yychar osrlchar
00067 #define yydebug osrldebug
00068 #define yynerrs osrlnerrs
00069 #define yylloc osrllloc
00070
00071
00072 #ifndef YYTOKENTYPE
00073 # define YYTOKENTYPE
00074
00075
00076 enum yytokentype {
00077 ATTRIBUTETEXT = 258,
00078 ELEMENTTEXT = 259,
00079 ITEMTEXT = 260,
00080 INTEGER = 261,
00081 DOUBLE = 262,
00082 QUOTE = 263,
00083 TWOQUOTES = 264,
00084 GREATERTHAN = 265,
00085 ENDOFELEMENT = 266,
00086 OSRLSTART = 267,
00087 OSRLSTARTEMPTY = 268,
00088 OSRLATTRIBUTETEXT = 269,
00089 OSRLEND = 270,
00090 GENERALSTART = 271,
00091 GENERALEND = 272,
00092 SYSTEMSTART = 273,
00093 SYSTEMEND = 274,
00094 SERVICESTART = 275,
00095 SERVICEEND = 276,
00096 JOBSTART = 277,
00097 JOBEND = 278,
00098 SERVICEURISTARTANDEND = 279,
00099 SERVICEURISTART = 280,
00100 SERVICEURIEND = 281,
00101 SERVICENAMESTARTANDEND = 282,
00102 SERVICENAMESTART = 283,
00103 SERVICENAMEEND = 284,
00104 INSTANCENAMESTARTANDEND = 285,
00105 INSTANCENAMESTART = 286,
00106 INSTANCENAMEEND = 287,
00107 JOBIDSTARTANDEND = 288,
00108 JOBIDSTART = 289,
00109 JOBIDEND = 290,
00110 TIMINGINFORMATIONSTART = 291,
00111 TIMINGINFORMATIONEND = 292,
00112 TIMESTARTANDEND = 293,
00113 TIMESTART = 294,
00114 TIMEEND = 295,
00115 OPTIMIZATIONSTART = 296,
00116 OPTIMIZATIONEND = 297,
00117 SOLUTIONSTART = 298,
00118 SOLUTIONEND = 299,
00119 VALUESSTART = 300,
00120 VALUESEND = 301,
00121 DUALVALUESSTART = 302,
00122 DUALVALUESEND = 303,
00123 VARIABLESSTART = 304,
00124 VARIABLESEND = 305,
00125 VARSTART = 306,
00126 VAREND = 307,
00127 OBJECTIVESSTART = 308,
00128 OBJECTIVESEND = 309,
00129 OBJSTART = 310,
00130 OBJEND = 311,
00131 CONSTRAINTSSTART = 312,
00132 CONSTRAINTSEND = 313,
00133 CONSTART = 314,
00134 CONEND = 315,
00135 STATUSSTART = 316,
00136 STATUSEND = 317,
00137 GENERALSTATUSSTART = 318,
00138 GENERALSTATUSEND = 319,
00139 MESSAGESTART = 320,
00140 MESSAGEEND = 321,
00141 MESSAGESTARTANDEND = 322,
00142 OTHERSTART = 323,
00143 OTHEREND = 324,
00144 NUMBEROFTIMESATT = 325,
00145 NUMBEROFSOLUTIONSATT = 326,
00146 NUMBEROFVARIABLESATT = 327,
00147 NUMBEROFCONSTRAINTSATT = 328,
00148 NUMBEROFOBJECTIVESATT = 329,
00149 NUMBEROFOTHERVARIABLERESULTSATT = 330,
00150 NUMBEROFOTHEROBJECTIVERESULTSATT = 331,
00151 NUMBEROFOTHERCONSTRAINTRESULTSATT = 332,
00152 NUMBEROFOTHERSOLUTIONRESULTSATT = 333,
00153 NUMBEROFITEMSATT = 334,
00154 OTHERSOLUTIONRESULTSSTART = 335,
00155 OTHERSOLUTIONRESULTSEND = 336,
00156 OTHERSOLUTIONRESULTSTART = 337,
00157 OTHERSOLUTIONRESULTEND = 338,
00158 ITEMSTART = 339,
00159 ITEMEND = 340,
00160 ITEMSTARTANDEND = 341,
00161 ITEMEMPTY = 342,
00162 NUMBEROFVARATT = 343,
00163 NUMBEROFOBJATT = 344,
00164 NUMBEROFCONATT = 345,
00165 TARGETOBJECTIVEIDXATT = 346,
00166 IDXATT = 347,
00167 TYPEATT = 348,
00168 EMPTYTYPEATT = 349,
00169 DESCRIPTIONATT = 350,
00170 EMPTYDESCRIPTIONATT = 351,
00171 NAMEATT = 352,
00172 EMPTYNAMEATT = 353,
00173 CATEGORYATT = 354,
00174 EMPTYCATEGORYATT = 355,
00175 UNITATT = 356,
00176 EMPTYUNITATT = 357,
00177 VALUEATT = 358,
00178 EMPTYVALUEATT = 359,
00179 DUMMY = 360
00180 };
00181 #endif
00182
00183 #define ATTRIBUTETEXT 258
00184 #define ELEMENTTEXT 259
00185 #define ITEMTEXT 260
00186 #define INTEGER 261
00187 #define DOUBLE 262
00188 #define QUOTE 263
00189 #define TWOQUOTES 264
00190 #define GREATERTHAN 265
00191 #define ENDOFELEMENT 266
00192 #define OSRLSTART 267
00193 #define OSRLSTARTEMPTY 268
00194 #define OSRLATTRIBUTETEXT 269
00195 #define OSRLEND 270
00196 #define GENERALSTART 271
00197 #define GENERALEND 272
00198 #define SYSTEMSTART 273
00199 #define SYSTEMEND 274
00200 #define SERVICESTART 275
00201 #define SERVICEEND 276
00202 #define JOBSTART 277
00203 #define JOBEND 278
00204 #define SERVICEURISTARTANDEND 279
00205 #define SERVICEURISTART 280
00206 #define SERVICEURIEND 281
00207 #define SERVICENAMESTARTANDEND 282
00208 #define SERVICENAMESTART 283
00209 #define SERVICENAMEEND 284
00210 #define INSTANCENAMESTARTANDEND 285
00211 #define INSTANCENAMESTART 286
00212 #define INSTANCENAMEEND 287
00213 #define JOBIDSTARTANDEND 288
00214 #define JOBIDSTART 289
00215 #define JOBIDEND 290
00216 #define TIMINGINFORMATIONSTART 291
00217 #define TIMINGINFORMATIONEND 292
00218 #define TIMESTARTANDEND 293
00219 #define TIMESTART 294
00220 #define TIMEEND 295
00221 #define OPTIMIZATIONSTART 296
00222 #define OPTIMIZATIONEND 297
00223 #define SOLUTIONSTART 298
00224 #define SOLUTIONEND 299
00225 #define VALUESSTART 300
00226 #define VALUESEND 301
00227 #define DUALVALUESSTART 302
00228 #define DUALVALUESEND 303
00229 #define VARIABLESSTART 304
00230 #define VARIABLESEND 305
00231 #define VARSTART 306
00232 #define VAREND 307
00233 #define OBJECTIVESSTART 308
00234 #define OBJECTIVESEND 309
00235 #define OBJSTART 310
00236 #define OBJEND 311
00237 #define CONSTRAINTSSTART 312
00238 #define CONSTRAINTSEND 313
00239 #define CONSTART 314
00240 #define CONEND 315
00241 #define STATUSSTART 316
00242 #define STATUSEND 317
00243 #define GENERALSTATUSSTART 318
00244 #define GENERALSTATUSEND 319
00245 #define MESSAGESTART 320
00246 #define MESSAGEEND 321
00247 #define MESSAGESTARTANDEND 322
00248 #define OTHERSTART 323
00249 #define OTHEREND 324
00250 #define NUMBEROFTIMESATT 325
00251 #define NUMBEROFSOLUTIONSATT 326
00252 #define NUMBEROFVARIABLESATT 327
00253 #define NUMBEROFCONSTRAINTSATT 328
00254 #define NUMBEROFOBJECTIVESATT 329
00255 #define NUMBEROFOTHERVARIABLERESULTSATT 330
00256 #define NUMBEROFOTHEROBJECTIVERESULTSATT 331
00257 #define NUMBEROFOTHERCONSTRAINTRESULTSATT 332
00258 #define NUMBEROFOTHERSOLUTIONRESULTSATT 333
00259 #define NUMBEROFITEMSATT 334
00260 #define OTHERSOLUTIONRESULTSSTART 335
00261 #define OTHERSOLUTIONRESULTSEND 336
00262 #define OTHERSOLUTIONRESULTSTART 337
00263 #define OTHERSOLUTIONRESULTEND 338
00264 #define ITEMSTART 339
00265 #define ITEMEND 340
00266 #define ITEMSTARTANDEND 341
00267 #define ITEMEMPTY 342
00268 #define NUMBEROFVARATT 343
00269 #define NUMBEROFOBJATT 344
00270 #define NUMBEROFCONATT 345
00271 #define TARGETOBJECTIVEIDXATT 346
00272 #define IDXATT 347
00273 #define TYPEATT 348
00274 #define EMPTYTYPEATT 349
00275 #define DESCRIPTIONATT 350
00276 #define EMPTYDESCRIPTIONATT 351
00277 #define NAMEATT 352
00278 #define EMPTYNAMEATT 353
00279 #define CATEGORYATT 354
00280 #define EMPTYCATEGORYATT 355
00281 #define UNITATT 356
00282 #define EMPTYUNITATT 357
00283 #define VALUEATT 358
00284 #define EMPTYVALUEATT 359
00285 #define DUMMY 360
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295 #include "OSDataStructures.h"
00296 #include "OSMathUtil.h"
00297 #include "OSParameters.h"
00298 #include "OSConfig.h"
00299 #include "OSErrorClass.h"
00300 #include "OSResult.h"
00301 #include "OSrLParserData.h"
00302 #include <iostream>
00303 #include <sstream>
00304 #include <stdio.h>
00305
00306
00307 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00308 YY_BUFFER_STATE osrl_scan_string (const char *yy_str , void* yyscanner );
00309 int osrllex_init(void** ptr_yy_globals);
00310 int osrllex_destroy (void* yyscanner );
00311 int osrlget_lineno( void* yyscanner);
00312 char *osrlget_text (void* yyscanner );
00313 void osrlset_lineno (int line_number , void* yyscanner );
00314 void osrlset_extra (OSrLParserData* parserData , void* yyscanner );
00315 void yygetOSResult(const char *ch, OSResult* m_osresult, OSrLParserData *m_parserData ) throw(ErrorClass);
00316 void osrl_empty_vectors( OSrLParserData* parserData);
00317
00318
00319
00320
00321
00322 #ifndef YYDEBUG
00323 # define YYDEBUG 0
00324 #endif
00325
00326
00327 #ifdef YYERROR_VERBOSE
00328 # undef YYERROR_VERBOSE
00329 # define YYERROR_VERBOSE 1
00330 #else
00331 # define YYERROR_VERBOSE 0
00332 #endif
00333
00334
00335 #ifndef YYTOKEN_TABLE
00336 # define YYTOKEN_TABLE 0
00337 #endif
00338
00339 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00340 typedef union YYSTYPE
00341
00342 {
00343 double dval;
00344 int ival;
00345 char* sval;
00346 }
00347
00348
00349 YYSTYPE;
00350 # define yystype YYSTYPE
00351 # define YYSTYPE_IS_DECLARED 1
00352 # define YYSTYPE_IS_TRIVIAL 1
00353 #endif
00354
00355 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
00356 typedef struct YYLTYPE
00357 {
00358 int first_line;
00359 int first_column;
00360 int last_line;
00361 int last_column;
00362 } YYLTYPE;
00363 # define yyltype YYLTYPE
00364 # define YYLTYPE_IS_DECLARED 1
00365 # define YYLTYPE_IS_TRIVIAL 1
00366 #endif
00367
00368
00369
00370
00371
00372
00373 void osrlerror(YYLTYPE* type, OSResult *osresult, OSrLParserData *parserData ,const char* errormsg ) ;
00374 int osrllex(YYSTYPE* lvalp, YYLTYPE* llocp, void* scanner);
00375
00376 #define scanner parserData->scanner
00377
00378
00379
00380
00381
00382 #ifdef short
00383 # undef short
00384 #endif
00385
00386 #ifdef YYTYPE_UINT8
00387 typedef YYTYPE_UINT8 yytype_uint8;
00388 #else
00389 typedef unsigned char yytype_uint8;
00390 #endif
00391
00392 #ifdef YYTYPE_INT8
00393 typedef YYTYPE_INT8 yytype_int8;
00394 #elif (defined __STDC__ || defined __C99__FUNC__ \
00395 || defined __cplusplus || defined _MSC_VER)
00396 typedef signed char yytype_int8;
00397 #else
00398 typedef short int yytype_int8;
00399 #endif
00400
00401 #ifdef YYTYPE_UINT16
00402 typedef YYTYPE_UINT16 yytype_uint16;
00403 #else
00404 typedef unsigned short int yytype_uint16;
00405 #endif
00406
00407 #ifdef YYTYPE_INT16
00408 typedef YYTYPE_INT16 yytype_int16;
00409 #else
00410 typedef short int yytype_int16;
00411 #endif
00412
00413 #ifndef YYSIZE_T
00414 # ifdef __SIZE_TYPE__
00415 # define YYSIZE_T __SIZE_TYPE__
00416 # elif defined size_t
00417 # define YYSIZE_T size_t
00418 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00419 || defined __cplusplus || defined _MSC_VER)
00420 # include <stddef.h>
00421 # define YYSIZE_T size_t
00422 # else
00423 # define YYSIZE_T unsigned int
00424 # endif
00425 #endif
00426
00427 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00428
00429 #ifndef YY_
00430 # if YYENABLE_NLS
00431 # if ENABLE_NLS
00432 # include <libintl.h>
00433 # define YY_(msgid) dgettext ("bison-runtime", msgid)
00434 # endif
00435 # endif
00436 # ifndef YY_
00437 # define YY_(msgid) msgid
00438 # endif
00439 #endif
00440
00441
00442 #if ! defined lint || defined __GNUC__
00443 # define YYUSE(e) ((void) (e))
00444 #else
00445 # define YYUSE(e)
00446 #endif
00447
00448
00449 #ifndef lint
00450 # define YYID(n) (n)
00451 #else
00452 #if (defined __STDC__ || defined __C99__FUNC__ \
00453 || defined __cplusplus || defined _MSC_VER)
00454 static int
00455 YYID (int i)
00456 #else
00457 static int
00458 YYID (i)
00459 int i;
00460 #endif
00461 {
00462 return i;
00463 }
00464 #endif
00465
00466 #if ! defined yyoverflow || YYERROR_VERBOSE
00467
00468
00469
00470 # ifdef YYSTACK_USE_ALLOCA
00471 # if YYSTACK_USE_ALLOCA
00472 # ifdef __GNUC__
00473 # define YYSTACK_ALLOC __builtin_alloca
00474 # elif defined __BUILTIN_VA_ARG_INCR
00475 # include <alloca.h>
00476 # elif defined _AIX
00477 # define YYSTACK_ALLOC __alloca
00478 # elif defined _MSC_VER
00479 # include <malloc.h>
00480 # define alloca _alloca
00481 # else
00482 # define YYSTACK_ALLOC alloca
00483 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00484 || defined __cplusplus || defined _MSC_VER)
00485 # include <stdlib.h>
00486 # ifndef _STDLIB_H
00487 # define _STDLIB_H 1
00488 # endif
00489 # endif
00490 # endif
00491 # endif
00492 # endif
00493
00494 # ifdef YYSTACK_ALLOC
00495
00496 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
00497 # ifndef YYSTACK_ALLOC_MAXIMUM
00498
00499
00500
00501
00502 # define YYSTACK_ALLOC_MAXIMUM 4032
00503 # endif
00504 # else
00505 # define YYSTACK_ALLOC YYMALLOC
00506 # define YYSTACK_FREE YYFREE
00507 # ifndef YYSTACK_ALLOC_MAXIMUM
00508 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00509 # endif
00510 # if (defined __cplusplus && ! defined _STDLIB_H \
00511 && ! ((defined YYMALLOC || defined malloc) \
00512 && (defined YYFREE || defined free)))
00513 # include <stdlib.h>
00514 # ifndef _STDLIB_H
00515 # define _STDLIB_H 1
00516 # endif
00517 # endif
00518 # ifndef YYMALLOC
00519 # define YYMALLOC malloc
00520 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00521 || defined __cplusplus || defined _MSC_VER)
00522 void *malloc (YYSIZE_T);
00523 # endif
00524 # endif
00525 # ifndef YYFREE
00526 # define YYFREE free
00527 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00528 || defined __cplusplus || defined _MSC_VER)
00529 void free (void *);
00530 # endif
00531 # endif
00532 # endif
00533 #endif
00534
00535
00536 #if (! defined yyoverflow \
00537 && (! defined __cplusplus \
00538 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
00539 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00540
00541
00542 union yyalloc
00543 {
00544 yytype_int16 yyss;
00545 YYSTYPE yyvs;
00546 YYLTYPE yyls;
00547 };
00548
00549
00550 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00551
00552
00553
00554 # define YYSTACK_BYTES(N) \
00555 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00556 + 2 * YYSTACK_GAP_MAXIMUM)
00557
00558
00559
00560 # ifndef YYCOPY
00561 # if defined __GNUC__ && 1 < __GNUC__
00562 # define YYCOPY(To, From, Count) \
00563 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00564 # else
00565 # define YYCOPY(To, From, Count) \
00566 do \
00567 { \
00568 YYSIZE_T yyi; \
00569 for (yyi = 0; yyi < (Count); yyi++) \
00570 (To)[yyi] = (From)[yyi]; \
00571 } \
00572 while (YYID (0))
00573 # endif
00574 # endif
00575
00576
00577
00578
00579
00580
00581 # define YYSTACK_RELOCATE(Stack) \
00582 do \
00583 { \
00584 YYSIZE_T yynewbytes; \
00585 YYCOPY (&yyptr->Stack, Stack, yysize); \
00586 Stack = &yyptr->Stack; \
00587 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00588 yyptr += yynewbytes / sizeof (*yyptr); \
00589 } \
00590 while (YYID (0))
00591
00592 #endif
00593
00594
00595 #define YYFINAL 6
00596
00597 #define YYLAST 315
00598
00599
00600 #define YYNTOKENS 110
00601
00602 #define YYNNTS 98
00603
00604 #define YYNRULES 189
00605
00606 #define YYNSTATES 352
00607
00608
00609 #define YYUNDEFTOK 2
00610 #define YYMAXUTOK 360
00611
00612 #define YYTRANSLATE(YYX) \
00613 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00614
00615
00616 static const yytype_uint8 yytranslate[] =
00617 {
00618 0, 2, 2, 2, 2, 2, 2, 2, 2, 107,
00619 109, 2, 2, 108, 2, 2, 2, 2, 2, 2,
00620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00621 2, 2, 106, 2, 2, 2, 2, 2, 2, 2,
00622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00625 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00639 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00643 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00644 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00645 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
00646 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
00647 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
00648 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
00649 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
00650 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
00651 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
00652 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
00653 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
00654 105
00655 };
00656
00657 #if YYDEBUG
00658
00659
00660 static const yytype_uint16 yyprhs[] =
00661 {
00662 0, 0, 3, 11, 14, 18, 19, 28, 33, 37,
00663 39, 42, 46, 48, 52, 54, 55, 57, 61, 64,
00664 65, 67, 71, 74, 75, 77, 81, 84, 85, 87,
00665 91, 94, 95, 97, 101, 104, 105, 108, 109, 112,
00666 113, 117, 118, 122, 127, 129, 133, 134, 137, 139,
00667 145, 146, 149, 151, 153, 155, 157, 161, 163, 167,
00668 169, 173, 175, 179, 181, 183, 185, 186, 190, 193,
00669 195, 198, 199, 202, 205, 208, 211, 214, 218, 222,
00670 226, 230, 231, 234, 235, 247, 248, 253, 258, 262,
00671 264, 267, 271, 273, 277, 279, 280, 284, 287, 288,
00672 299, 300, 305, 310, 312, 315, 321, 323, 325, 329,
00673 330, 333, 339, 341, 342, 345, 347, 349, 351, 353,
00674 358, 360, 364, 366, 370, 374, 375, 378, 384, 386,
00675 388, 390, 392, 393, 403, 408, 409, 412, 418, 424,
00676 428, 429, 430, 441, 446, 448, 451, 457, 463, 467,
00677 471, 472, 474, 475, 477, 478, 484, 485, 491, 492,
00678 495, 501, 502, 503, 507, 509, 511, 513, 515, 520,
00679 522, 526, 530, 532, 536, 538, 539, 542, 544, 546,
00680 547, 548, 554, 556, 559, 561, 563, 565, 567, 568
00681 };
00682
00683
00684 static const yytype_int16 yyrhs[] =
00685 {
00686 111, 0, -1, 112, 113, 122, 123, 124, 137, 15,
00687 -1, 12, 10, -1, 12, 14, 10, -1, -1, 16,
00688 114, 117, 118, 119, 120, 121, 17, -1, 63, 115,
00689 10, 64, -1, 63, 115, 11, -1, 116, -1, 115,
00690 116, -1, 93, 3, 205, -1, 94, -1, 95, 3,
00691 205, -1, 96, -1, -1, 24, -1, 25, 4, 26,
00692 -1, 25, 26, -1, -1, 27, -1, 28, 4, 29,
00693 -1, 28, 29, -1, -1, 30, -1, 31, 4, 32,
00694 -1, 31, 32, -1, -1, 33, -1, 34, 4, 35,
00695 -1, 34, 35, -1, -1, 67, -1, 65, 4, 66,
00696 -1, 65, 66, -1, -1, 18, 19, -1, -1, 20,
00697 21, -1, -1, 22, 125, 23, -1, -1, 36, 126,
00698 127, -1, 70, 8, 6, 8, -1, 11, -1, 10,
00699 128, 37, -1, -1, 128, 129, -1, 38, -1, 39,
00700 130, 10, 136, 40, -1, -1, 130, 131, -1, 132,
00701 -1, 133, -1, 134, -1, 135, -1, 93, 3, 8,
00702 -1, 94, -1, 99, 3, 8, -1, 100, -1, 101,
00703 3, 8, -1, 102, -1, 95, 3, 8, -1, 96,
00704 -1, 7, -1, 6, -1, -1, 41, 138, 42, -1,
00705 140, 139, -1, 11, -1, 10, 146, -1, -1, 140,
00706 141, -1, 142, 205, -1, 143, 205, -1, 144, 205,
00707 -1, 145, 205, -1, 71, 205, 6, -1, 72, 205,
00708 6, -1, 73, 205, 6, -1, 74, 205, 6, -1,
00709 -1, 146, 147, -1, -1, 43, 148, 149, 10, 150,
00710 153, 154, 174, 179, 188, 204, -1, -1, 91, 205,
00711 6, 205, -1, 61, 151, 10, 62, -1, 61, 151,
00712 11, -1, 152, -1, 151, 152, -1, 93, 3, 205,
00713 -1, 94, -1, 95, 3, 205, -1, 96, -1, -1,
00714 65, 4, 66, -1, 65, 66, -1, -1, 49, 155,
00715 10, 45, 156, 10, 157, 46, 161, 50, -1, -1,
00716 75, 205, 6, 205, -1, 88, 205, 6, 205, -1,
00717 158, -1, 157, 158, -1, 51, 160, 10, 159, 52,
00718 -1, 6, -1, 7, -1, 92, 6, 205, -1, -1,
00719 161, 162, -1, 163, 164, 10, 170, 69, -1, 68,
00720 -1, -1, 165, 164, -1, 166, -1, 167, -1, 168,
00721 -1, 169, -1, 88, 205, 6, 205, -1, 104, -1,
00722 103, 3, 205, -1, 98, -1, 97, 3, 205, -1,
00723 95, 3, 205, -1, -1, 171, 170, -1, 173, 185,
00724 10, 172, 52, -1, 4, -1, 6, -1, 7, -1,
00725 51, -1, -1, 53, 10, 45, 175, 10, 176, 46,
00726 186, 54, -1, 89, 205, 6, 205, -1, -1, 176,
00727 177, -1, 55, 178, 10, 7, 56, -1, 55, 178,
00728 10, 6, 56, -1, 92, 6, 205, -1, -1, -1,
00729 57, 10, 47, 181, 180, 10, 182, 48, 187, 58,
00730 -1, 90, 205, 6, 205, -1, 183, -1, 182, 183,
00731 -1, 59, 184, 10, 7, 60, -1, 59, 184, 10,
00732 6, 60, -1, 92, 6, 205, -1, 92, 6, 205,
00733 -1, -1, 105, -1, -1, 105, -1, -1, 80, 189,
00734 10, 191, 81, -1, -1, 78, 8, 6, 190, 8,
00735 -1, -1, 191, 192, -1, 82, 193, 10, 200, 83,
00736 -1, -1, -1, 193, 194, 195, -1, 196, -1, 197,
00737 -1, 198, -1, 199, -1, 79, 8, 6, 8, -1,
00738 98, -1, 97, 3, 205, -1, 99, 3, 8, -1,
00739 100, -1, 95, 3, 8, -1, 96, -1, -1, 200,
00740 201, -1, 86, -1, 87, -1, -1, -1, 84, 202,
00741 5, 203, 85, -1, 44, -1, 207, 8, -1, 106,
00742 -1, 107, -1, 108, -1, 109, -1, -1, 207, 206,
00743 -1
00744 };
00745
00746
00747 static const yytype_uint16 yyrline[] =
00748 {
00749 0, 124, 124, 127, 128, 132, 132, 134, 135, 137,
00750 138, 140, 141, 142, 143, 146, 147, 148, 149, 152,
00751 153, 154, 155, 157, 158, 159, 160, 162, 163, 164,
00752 165, 167, 168, 169, 170, 172, 172, 174, 174, 176,
00753 176, 178, 179, 181, 187, 187, 189, 189, 191, 192,
00754 204, 204, 206, 206, 206, 206, 208, 209, 211, 212,
00755 214, 215, 217, 218, 221, 222, 224, 224, 226, 229,
00756 230, 232, 233, 235, 236, 237, 238, 242, 243, 244,
00757 245, 248, 249, 252, 252, 259, 260, 266, 267, 270,
00758 271, 273, 274, 275, 276, 278, 279, 283, 289, 290,
00759 301, 302, 312, 319, 320, 322, 325, 330, 336, 340,
00760 341, 343, 362, 371, 374, 376, 376, 376, 376, 378,
00761 387, 390, 396, 402, 408, 417, 418, 420, 437, 438,
00762 439, 441, 446, 447, 456, 460, 461, 463, 469, 477,
00763 480, 482, 481, 499, 505, 506, 508, 515, 523, 525,
00764 529, 530, 532, 533, 535, 536, 543, 542, 558, 558,
00765 560, 570, 571, 571, 575, 575, 575, 575, 577, 596,
00766 602, 610, 613, 616, 619, 621, 622, 624, 632, 641,
00767 648, 640, 651, 659, 661, 662, 663, 664, 666, 667
00768 };
00769 #endif
00770
00771 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00772
00773
00774 static const char *const yytname[] =
00775 {
00776 "$end", "error", "$undefined", "ATTRIBUTETEXT", "ELEMENTTEXT",
00777 "ITEMTEXT", "INTEGER", "DOUBLE", "QUOTE", "TWOQUOTES", "GREATERTHAN",
00778 "ENDOFELEMENT", "OSRLSTART", "OSRLSTARTEMPTY", "OSRLATTRIBUTETEXT",
00779 "OSRLEND", "GENERALSTART", "GENERALEND", "SYSTEMSTART", "SYSTEMEND",
00780 "SERVICESTART", "SERVICEEND", "JOBSTART", "JOBEND",
00781 "SERVICEURISTARTANDEND", "SERVICEURISTART", "SERVICEURIEND",
00782 "SERVICENAMESTARTANDEND", "SERVICENAMESTART", "SERVICENAMEEND",
00783 "INSTANCENAMESTARTANDEND", "INSTANCENAMESTART", "INSTANCENAMEEND",
00784 "JOBIDSTARTANDEND", "JOBIDSTART", "JOBIDEND", "TIMINGINFORMATIONSTART",
00785 "TIMINGINFORMATIONEND", "TIMESTARTANDEND", "TIMESTART", "TIMEEND",
00786 "OPTIMIZATIONSTART", "OPTIMIZATIONEND", "SOLUTIONSTART", "SOLUTIONEND",
00787 "VALUESSTART", "VALUESEND", "DUALVALUESSTART", "DUALVALUESEND",
00788 "VARIABLESSTART", "VARIABLESEND", "VARSTART", "VAREND",
00789 "OBJECTIVESSTART", "OBJECTIVESEND", "OBJSTART", "OBJEND",
00790 "CONSTRAINTSSTART", "CONSTRAINTSEND", "CONSTART", "CONEND",
00791 "STATUSSTART", "STATUSEND", "GENERALSTATUSSTART", "GENERALSTATUSEND",
00792 "MESSAGESTART", "MESSAGEEND", "MESSAGESTARTANDEND", "OTHERSTART",
00793 "OTHEREND", "NUMBEROFTIMESATT", "NUMBEROFSOLUTIONSATT",
00794 "NUMBEROFVARIABLESATT", "NUMBEROFCONSTRAINTSATT",
00795 "NUMBEROFOBJECTIVESATT", "NUMBEROFOTHERVARIABLERESULTSATT",
00796 "NUMBEROFOTHEROBJECTIVERESULTSATT", "NUMBEROFOTHERCONSTRAINTRESULTSATT",
00797 "NUMBEROFOTHERSOLUTIONRESULTSATT", "NUMBEROFITEMSATT",
00798 "OTHERSOLUTIONRESULTSSTART", "OTHERSOLUTIONRESULTSEND",
00799 "OTHERSOLUTIONRESULTSTART", "OTHERSOLUTIONRESULTEND", "ITEMSTART",
00800 "ITEMEND", "ITEMSTARTANDEND", "ITEMEMPTY", "NUMBEROFVARATT",
00801 "NUMBEROFOBJATT", "NUMBEROFCONATT", "TARGETOBJECTIVEIDXATT", "IDXATT",
00802 "TYPEATT", "EMPTYTYPEATT", "DESCRIPTIONATT", "EMPTYDESCRIPTIONATT",
00803 "NAMEATT", "EMPTYNAMEATT", "CATEGORYATT", "EMPTYCATEGORYATT", "UNITATT",
00804 "EMPTYUNITATT", "VALUEATT", "EMPTYVALUEATT", "DUMMY", "' '", "'\\t'",
00805 "'\\r'", "'\\n'", "$accept", "osrldoc", "osrlstart", "generalElement",
00806 "generalStatus", "anotherGeneralStatusATT", "generalstatusatt",
00807 "serviceURI", "serviceName", "instanceName", "jobID", "headerMessage",
00808 "systemElement", "serviceElement", "jobElement", "timingInformation",
00809 "numberoftimes", "timingContent", "listOfTimes", "time", "timeAttList",
00810 "timeAtt", "timeType", "timeCategory", "timeUnit", "timeDescription",
00811 "timeValue", "optimizationElement", "optimizationContent", "optend",
00812 "anotherOptATT", "optatt", "optnumsolatt", "optnumvaratt",
00813 "optnumconatt", "optnumobjatt", "solution", "anothersolution", "@1",
00814 "targetObjectiveIDXATT", "status", "anotherStatusATT", "statusatt",
00815 "message", "variables", "numberOfOtherVariableResults", "numberOfVarATT",
00816 "var", "anothervar", "DoubleOrInt", "aVARIDXATT", "otherVariables",
00817 "otherVariableResult", "otherVariableStart", "otherVariableATTlist",
00818 "othervariableATT", "numberOfOtherVarATT", "otherVarValueATT",
00819 "otherVarNameATT", "otherVarDescriptionATT", "othervarlist", "othervar",
00820 "ElementValue", "othervarstart", "objectives", "numberOfObjATT", "obj",
00821 "anotherobj", "anOBJIDXATT", "constraints", "@2", "numberOfConATT",
00822 "con", "anothercon", "aCONIDXATT", "anIDXATT", "otherObjectives",
00823 "otherConstraints", "otherSolutionResults",
00824 "numberOfOtherSolutionResults", "@3", "otherSolutionResultList",
00825 "anotherSolutionResult", "anotherSolutionResultAttList", "@4",
00826 "anotherSolutionResultAtt", "numberOfItems",
00827 "anotherSolutionResultNameATT", "anotherSolutionResultCategoryATT",
00828 "anotherSolutionDescriptionATT", "itemList", "anotherSolutionItem", "@5",
00829 "@6", "solutionEnd", "quote", "xmlWhiteSpaceChar", "xmlWhiteSpace", 0
00830 };
00831 #endif
00832
00833 # ifdef YYPRINT
00834
00835
00836 static const yytype_uint16 yytoknum[] =
00837 {
00838 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00839 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
00840 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
00841 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
00842 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
00843 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
00844 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
00845 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
00846 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
00847 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
00848 355, 356, 357, 358, 359, 360, 32, 9, 13, 10
00849 };
00850 # endif
00851
00852
00853 static const yytype_uint8 yyr1[] =
00854 {
00855 0, 110, 111, 112, 112, 113, 113, 114, 114, 115,
00856 115, 116, 116, 116, 116, 117, 117, 117, 117, 118,
00857 118, 118, 118, 119, 119, 119, 119, 120, 120, 120,
00858 120, 121, 121, 121, 121, 122, 122, 123, 123, 124,
00859 124, 125, 125, 126, 127, 127, 128, 128, 129, 129,
00860 130, 130, 131, 131, 131, 131, 132, 132, 133, 133,
00861 134, 134, 135, 135, 136, 136, 137, 137, 138, 139,
00862 139, 140, 140, 141, 141, 141, 141, 142, 143, 144,
00863 145, 146, 146, 148, 147, 149, 149, 150, 150, 151,
00864 151, 152, 152, 152, 152, 153, 153, 153, 154, 154,
00865 155, 155, 156, 157, 157, 158, 159, 159, 160, 161,
00866 161, 162, 163, 164, 164, 165, 165, 165, 165, 166,
00867 167, 167, 168, 168, 169, 170, 170, 171, 172, 172,
00868 172, 173, 174, 174, 175, 176, 176, 177, 177, 178,
00869 179, 180, 179, 181, 182, 182, 183, 183, 184, 185,
00870 186, 186, 187, 187, 188, 188, 190, 189, 191, 191,
00871 192, 193, 194, 193, 195, 195, 195, 195, 196, 197,
00872 197, 198, 198, 199, 199, 200, 200, 201, 201, 202,
00873 203, 201, 204, 205, 206, 206, 206, 206, 207, 207
00874 };
00875
00876
00877 static const yytype_uint8 yyr2[] =
00878 {
00879 0, 2, 7, 2, 3, 0, 8, 4, 3, 1,
00880 2, 3, 1, 3, 1, 0, 1, 3, 2, 0,
00881 1, 3, 2, 0, 1, 3, 2, 0, 1, 3,
00882 2, 0, 1, 3, 2, 0, 2, 0, 2, 0,
00883 3, 0, 3, 4, 1, 3, 0, 2, 1, 5,
00884 0, 2, 1, 1, 1, 1, 3, 1, 3, 1,
00885 3, 1, 3, 1, 1, 1, 0, 3, 2, 1,
00886 2, 0, 2, 2, 2, 2, 2, 3, 3, 3,
00887 3, 0, 2, 0, 11, 0, 4, 4, 3, 1,
00888 2, 3, 1, 3, 1, 0, 3, 2, 0, 10,
00889 0, 4, 4, 1, 2, 5, 1, 1, 3, 0,
00890 2, 5, 1, 0, 2, 1, 1, 1, 1, 4,
00891 1, 3, 1, 3, 3, 0, 2, 5, 1, 1,
00892 1, 1, 0, 9, 4, 0, 2, 5, 5, 3,
00893 0, 0, 10, 4, 1, 2, 5, 5, 3, 3,
00894 0, 1, 0, 1, 0, 5, 0, 5, 0, 2,
00895 5, 0, 0, 3, 1, 1, 1, 1, 4, 1,
00896 3, 3, 1, 3, 1, 0, 2, 1, 1, 0,
00897 0, 5, 1, 2, 1, 1, 1, 1, 0, 2
00898 };
00899
00900
00901
00902
00903 static const yytype_uint8 yydefact[] =
00904 {
00905 0, 0, 0, 5, 3, 0, 1, 0, 35, 4,
00906 0, 15, 0, 37, 0, 12, 0, 14, 0, 9,
00907 16, 0, 19, 36, 0, 39, 188, 188, 0, 8,
00908 10, 0, 18, 20, 0, 23, 38, 41, 66, 11,
00909 0, 13, 7, 17, 0, 22, 24, 0, 27, 0,
00910 0, 71, 0, 183, 184, 185, 186, 187, 189, 21,
00911 0, 26, 28, 0, 31, 0, 0, 40, 0, 0,
00912 2, 25, 0, 30, 0, 32, 0, 0, 46, 44,
00913 42, 67, 81, 69, 188, 188, 188, 188, 68, 72,
00914 188, 188, 188, 188, 29, 0, 34, 6, 0, 0,
00915 70, 0, 0, 0, 0, 73, 74, 75, 76, 33,
00916 43, 45, 48, 50, 47, 83, 82, 77, 78, 79,
00917 80, 0, 85, 0, 0, 57, 0, 63, 0, 59,
00918 0, 61, 51, 52, 53, 54, 55, 188, 0, 65,
00919 64, 0, 0, 0, 0, 0, 0, 0, 49, 56,
00920 62, 58, 60, 188, 0, 95, 86, 0, 92, 0,
00921 94, 0, 89, 0, 98, 188, 188, 0, 88, 90,
00922 0, 97, 100, 132, 91, 93, 87, 96, 188, 0,
00923 0, 140, 0, 0, 0, 0, 154, 188, 0, 0,
00924 0, 0, 0, 101, 188, 0, 188, 0, 0, 0,
00925 0, 182, 84, 0, 0, 0, 135, 188, 141, 0,
00926 158, 188, 0, 0, 103, 188, 0, 0, 0, 156,
00927 0, 102, 0, 0, 109, 104, 134, 150, 0, 136,
00928 188, 0, 0, 155, 161, 159, 188, 0, 0, 151,
00929 0, 0, 0, 143, 0, 0, 144, 157, 162, 108,
00930 106, 107, 0, 99, 112, 110, 113, 133, 188, 0,
00931 0, 0, 152, 145, 175, 0, 105, 188, 0, 0,
00932 122, 0, 120, 0, 113, 115, 116, 117, 118, 139,
00933 0, 0, 188, 0, 153, 0, 0, 0, 0, 174,
00934 0, 169, 0, 172, 163, 164, 165, 166, 167, 0,
00935 188, 188, 188, 125, 114, 138, 137, 148, 0, 0,
00936 142, 160, 179, 177, 178, 176, 0, 0, 188, 0,
00937 188, 124, 123, 121, 131, 0, 125, 0, 147, 146,
00938 0, 0, 173, 170, 171, 119, 111, 126, 0, 0,
00939 180, 168, 188, 0, 0, 149, 128, 129, 130, 0,
00940 181, 127
00941 };
00942
00943
00944 static const yytype_int16 yydefgoto[] =
00945 {
00946 -1, 2, 3, 8, 11, 18, 19, 22, 35, 48,
00947 64, 76, 13, 25, 38, 50, 66, 80, 99, 114,
00948 121, 132, 133, 134, 135, 136, 141, 52, 68, 88,
00949 69, 89, 90, 91, 92, 93, 100, 116, 122, 138,
00950 155, 161, 162, 164, 173, 179, 195, 213, 214, 252,
00951 223, 238, 255, 256, 273, 274, 275, 276, 277, 278,
00952 325, 326, 349, 327, 181, 197, 216, 229, 242, 186,
00953 218, 208, 245, 246, 261, 339, 240, 285, 192, 200,
00954 232, 220, 235, 248, 265, 294, 295, 296, 297, 298,
00955 286, 315, 330, 344, 202, 39, 58, 40
00956 };
00957
00958
00959
00960 #define YYPACT_NINF -74
00961 static const yytype_int16 yypact[] =
00962 {
00963 24, 29, 22, 26, -74, 35, -74, 15, 64, -74,
00964 -43, 37, 65, 89, 122, -74, 124, -74, 2, -74,
00965 -74, 7, 62, -74, 107, 108, -74, -74, 67, -74,
00966 -74, 106, -74, -74, 1, 77, -74, 93, 92, -74,
00967 -7, -74, -74, -74, 105, -74, -74, 0, 78, 66,
00968 112, -74, 125, -74, -74, -74, -74, -74, -74, -74,
00969 110, -74, -74, -1, 16, 129, 103, -74, 99, -4,
00970 -74, -74, 111, -74, 5, -74, 126, 138, -74, -74,
00971 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
00972 -74, -74, -74, -74, -74, 79, -74, -74, 139, 17,
00973 114, 142, 143, 144, 146, -74, -74, -74, -74, -74,
00974 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
00975 -74, -8, 63, 109, 150, -74, 152, -74, 153, -74,
00976 155, -74, -74, -74, -74, -74, -74, -74, 149, -74,
00977 -74, 121, 154, 156, 157, 158, 162, 102, -74, -74,
00978 -74, -74, -74, -74, -20, 116, -74, 167, -74, 168,
00979 -74, 10, -74, 6, 123, -74, -74, 120, -74, -74,
00980 119, -74, 98, 130, -74, -74, -74, -74, -74, 164,
00981 165, 132, 170, 133, 134, 176, 97, -74, 104, 101,
00982 140, 118, 147, -74, -74, 183, -74, 184, 127, 187,
00983 188, -74, -74, 191, 148, 194, -74, -74, -74, 195,
00984 -74, -74, 128, -2, -74, -74, -32, 196, 197, -74,
00985 36, -74, 198, 200, -74, -74, -74, 100, 131, -74,
00986 -74, 159, 203, -74, -74, -74, -74, 113, -33, -74,
00987 160, 202, 205, -74, 135, -11, -74, -74, 206, -74,
00988 -74, -74, 161, -74, -74, -74, -57, -74, -74, 115,
00989 213, 211, 136, -74, -74, -71, -74, -74, 209, 219,
00990 -74, 221, -74, 215, -57, -74, -74, -74, -74, -74,
00991 172, 173, -74, 117, -74, 174, -68, 218, 227, -74,
00992 230, -74, 231, -74, -74, -74, -74, -74, -74, 229,
00993 -74, -74, -74, 185, -74, -74, -74, -74, 177, 178,
00994 -74, -74, -74, -74, -74, -74, 233, 234, -74, 235,
00995 -74, -74, -74, -74, -74, 137, 185, 166, -74, -74,
00996 239, 237, -74, -74, -74, -74, -74, -74, 240, 238,
00997 -74, -74, -74, 73, 169, -74, -74, -74, -74, 199,
00998 -74, -74
00999 };
01000
01001
01002 static const yytype_int16 yypgoto[] =
01003 {
01004 -74, -74, -74, -74, -74, -74, 232, -74, -74, -74,
01005 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
01006 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
01007 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
01008 -74, -74, 86, -74, -74, -74, -74, -74, 39, -74,
01009 -74, -74, -74, -74, -25, -74, -74, -74, -74, -74,
01010 -73, -74, -74, -74, -74, -74, -74, -74, -74, -74,
01011 -74, -74, -74, 11, -74, -74, -74, -74, -74, -74,
01012 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
01013 -74, -74, -74, -74, -74, -27, -74, -74
01014 };
01015
01016
01017
01018
01019
01020 #define YYTABLE_NINF -1
01021 static const yytype_uint16 yytable[] =
01022 {
01023 41, 53, 123, 72, 60, 44, 82, 83, 287, 95,
01024 170, 31, 28, 29, 227, 311, 312, 253, 313, 314,
01025 167, 168, 6, 228, 288, 289, 290, 291, 292, 293,
01026 45, 267, 61, 32, 73, 254, 1, 262, 268, 4,
01027 269, 270, 7, 5, 224, 9, 271, 272, 244, 212,
01028 14, 15, 16, 17, 111, 112, 113, 101, 102, 103,
01029 104, 20, 21, 105, 106, 107, 108, 84, 85, 86,
01030 87, 96, 171, 157, 158, 159, 160, 346, 10, 347,
01031 348, 74, 12, 75, 23, 124, 125, 126, 127, 33,
01032 34, 128, 129, 130, 131, 14, 15, 16, 17, 54,
01033 55, 56, 57, 157, 158, 159, 160, 46, 47, 24,
01034 146, 62, 63, 78, 79, 139, 140, 233, 234, 250,
01035 251, 280, 281, 308, 309, 26, 156, 27, 36, 49,
01036 37, 42, 43, 51, 59, 67, 65, 77, 174, 175,
01037 70, 81, 71, 97, 98, 109, 94, 110, 117, 118,
01038 119, 182, 120, 142, 137, 143, 144, 115, 145, 147,
01039 193, 148, 149, 154, 150, 151, 152, 203, 153, 205,
01040 165, 166, 172, 178, 183, 184, 187, 191, 188, 189,
01041 217, 163, 176, 180, 221, 177, 190, 198, 226, 185,
01042 196, 201, 194, 204, 206, 209, 199, 211, 210, 212,
01043 215, 219, 230, 243, 236, 239, 336, 231, 258, 249,
01044 237, 247, 300, 266, 257, 259, 264, 207, 244, 282,
01045 222, 283, 301, 241, 302, 303, 316, 260, 305, 306,
01046 317, 279, 310, 318, 319, 320, 324, 328, 329, 331,
01047 299, 284, 332, 334, 340, 341, 342, 169, 343, 304,
01048 30, 351, 225, 337, 350, 307, 263, 0, 338, 0,
01049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01050 0, 0, 0, 321, 322, 323, 0, 0, 0, 0,
01051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01052 0, 333, 0, 335, 0, 0, 0, 0, 0, 0,
01053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01054 0, 0, 0, 0, 0, 345
01055 };
01056
01057 static const yytype_int16 yycheck[] =
01058 {
01059 27, 8, 10, 4, 4, 4, 10, 11, 79, 4,
01060 4, 4, 10, 11, 46, 83, 84, 50, 86, 87,
01061 10, 11, 0, 55, 95, 96, 97, 98, 99, 100,
01062 29, 88, 32, 26, 35, 68, 12, 48, 95, 10,
01063 97, 98, 16, 14, 46, 10, 103, 104, 59, 51,
01064 93, 94, 95, 96, 37, 38, 39, 84, 85, 86,
01065 87, 24, 25, 90, 91, 92, 93, 71, 72, 73,
01066 74, 66, 66, 93, 94, 95, 96, 4, 63, 6,
01067 7, 65, 18, 67, 19, 93, 94, 95, 96, 27,
01068 28, 99, 100, 101, 102, 93, 94, 95, 96, 106,
01069 107, 108, 109, 93, 94, 95, 96, 30, 31, 20,
01070 137, 33, 34, 10, 11, 6, 7, 81, 82, 6,
01071 7, 6, 7, 6, 7, 3, 153, 3, 21, 36,
01072 22, 64, 26, 41, 29, 23, 70, 8, 165, 166,
01073 15, 42, 32, 17, 6, 66, 35, 8, 6, 6,
01074 6, 178, 6, 3, 91, 3, 3, 43, 3, 10,
01075 187, 40, 8, 61, 8, 8, 8, 194, 6, 196,
01076 3, 3, 49, 75, 10, 10, 6, 80, 45, 45,
01077 207, 65, 62, 53, 211, 66, 10, 47, 215, 57,
01078 89, 44, 88, 10, 10, 8, 78, 6, 10, 51,
01079 6, 6, 6, 230, 6, 105, 69, 10, 6, 236,
01080 10, 8, 3, 52, 54, 10, 10, 90, 59, 6,
01081 92, 10, 3, 92, 3, 10, 8, 92, 56, 56,
01082 3, 258, 58, 3, 3, 6, 51, 60, 60, 6,
01083 267, 105, 8, 8, 5, 8, 6, 161, 10, 274,
01084 18, 52, 213, 326, 85, 282, 245, -1, 92, -1,
01085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
01086 -1, -1, -1, 300, 301, 302, -1, -1, -1, -1,
01087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
01088 -1, 318, -1, 320, -1, -1, -1, -1, -1, -1,
01089 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
01090 -1, -1, -1, -1, -1, 342
01091 };
01092
01093
01094
01095 static const yytype_uint8 yystos[] =
01096 {
01097 0, 12, 111, 112, 10, 14, 0, 16, 113, 10,
01098 63, 114, 18, 122, 93, 94, 95, 96, 115, 116,
01099 24, 25, 117, 19, 20, 123, 3, 3, 10, 11,
01100 116, 4, 26, 27, 28, 118, 21, 22, 124, 205,
01101 207, 205, 64, 26, 4, 29, 30, 31, 119, 36,
01102 125, 41, 137, 8, 106, 107, 108, 109, 206, 29,
01103 4, 32, 33, 34, 120, 70, 126, 23, 138, 140,
01104 15, 32, 4, 35, 65, 67, 121, 8, 10, 11,
01105 127, 42, 10, 11, 71, 72, 73, 74, 139, 141,
01106 142, 143, 144, 145, 35, 4, 66, 17, 6, 128,
01107 146, 205, 205, 205, 205, 205, 205, 205, 205, 66,
01108 8, 37, 38, 39, 129, 43, 147, 6, 6, 6,
01109 6, 130, 148, 10, 93, 94, 95, 96, 99, 100,
01110 101, 102, 131, 132, 133, 134, 135, 91, 149, 6,
01111 7, 136, 3, 3, 3, 3, 205, 10, 40, 8,
01112 8, 8, 8, 6, 61, 150, 205, 93, 94, 95,
01113 96, 151, 152, 65, 153, 3, 3, 10, 11, 152,
01114 4, 66, 49, 154, 205, 205, 62, 66, 75, 155,
01115 53, 174, 205, 10, 10, 57, 179, 6, 45, 45,
01116 10, 80, 188, 205, 88, 156, 89, 175, 47, 78,
01117 189, 44, 204, 205, 10, 205, 10, 90, 181, 8,
01118 10, 6, 51, 157, 158, 6, 176, 205, 180, 6,
01119 191, 205, 92, 160, 46, 158, 205, 46, 55, 177,
01120 6, 10, 190, 81, 82, 192, 6, 10, 161, 105,
01121 186, 92, 178, 205, 59, 182, 183, 8, 193, 205,
01122 6, 7, 159, 50, 68, 162, 163, 54, 6, 10,
01123 92, 184, 48, 183, 10, 194, 52, 88, 95, 97,
01124 98, 103, 104, 164, 165, 166, 167, 168, 169, 205,
01125 6, 7, 6, 10, 105, 187, 200, 79, 95, 96,
01126 97, 98, 99, 100, 195, 196, 197, 198, 199, 205,
01127 3, 3, 3, 10, 164, 56, 56, 205, 6, 7,
01128 58, 83, 84, 86, 87, 201, 8, 3, 3, 3,
01129 6, 205, 205, 205, 51, 170, 171, 173, 60, 60,
01130 202, 6, 8, 205, 8, 205, 69, 170, 92, 185,
01131 5, 8, 6, 10, 203, 205, 4, 6, 7, 172,
01132 85, 52
01133 };
01134
01135 #define yyerrok (yyerrstatus = 0)
01136 #define yyclearin (yychar = YYEMPTY)
01137 #define YYEMPTY (-2)
01138 #define YYEOF 0
01139
01140 #define YYACCEPT goto yyacceptlab
01141 #define YYABORT goto yyabortlab
01142 #define YYERROR goto yyerrorlab
01143
01144
01145
01146
01147
01148
01149 #define YYFAIL goto yyerrlab
01150
01151 #define YYRECOVERING() (!!yyerrstatus)
01152
01153 #define YYBACKUP(Token, Value) \
01154 do \
01155 if (yychar == YYEMPTY && yylen == 1) \
01156 { \
01157 yychar = (Token); \
01158 yylval = (Value); \
01159 yytoken = YYTRANSLATE (yychar); \
01160 YYPOPSTACK (1); \
01161 goto yybackup; \
01162 } \
01163 else \
01164 { \
01165 yyerror (&yylloc, osresult, parserData, YY_("syntax error: cannot back up")); \
01166 YYERROR; \
01167 } \
01168 while (YYID (0))
01169
01170
01171 #define YYTERROR 1
01172 #define YYERRCODE 256
01173
01174
01175
01176
01177
01178
01179 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
01180 #ifndef YYLLOC_DEFAULT
01181 # define YYLLOC_DEFAULT(Current, Rhs, N) \
01182 do \
01183 if (YYID (N)) \
01184 { \
01185 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
01186 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
01187 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
01188 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
01189 } \
01190 else \
01191 { \
01192 (Current).first_line = (Current).last_line = \
01193 YYRHSLOC (Rhs, 0).last_line; \
01194 (Current).first_column = (Current).last_column = \
01195 YYRHSLOC (Rhs, 0).last_column; \
01196 } \
01197 while (YYID (0))
01198 #endif
01199
01200
01201
01202
01203
01204
01205 #ifndef YY_LOCATION_PRINT
01206 # if YYLTYPE_IS_TRIVIAL
01207 # define YY_LOCATION_PRINT(File, Loc) \
01208 fprintf (File, "%d.%d-%d.%d", \
01209 (Loc).first_line, (Loc).first_column, \
01210 (Loc).last_line, (Loc).last_column)
01211 # else
01212 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
01213 # endif
01214 #endif
01215
01216
01217
01218
01219 #ifdef YYLEX_PARAM
01220 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
01221 #else
01222 # define YYLEX yylex (&yylval, &yylloc, scanner)
01223 #endif
01224
01225
01226 #if YYDEBUG
01227
01228 # ifndef YYFPRINTF
01229 # include <stdio.h>
01230 # define YYFPRINTF fprintf
01231 # endif
01232
01233 # define YYDPRINTF(Args) \
01234 do { \
01235 if (yydebug) \
01236 YYFPRINTF Args; \
01237 } while (YYID (0))
01238
01239 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
01240 do { \
01241 if (yydebug) \
01242 { \
01243 YYFPRINTF (stderr, "%s ", Title); \
01244 yy_symbol_print (stderr, \
01245 Type, Value, Location, osresult, parserData); \
01246 YYFPRINTF (stderr, "\n"); \
01247 } \
01248 } while (YYID (0))
01249
01250
01251
01252
01253
01254
01255
01256 #if (defined __STDC__ || defined __C99__FUNC__ \
01257 || defined __cplusplus || defined _MSC_VER)
01258 static void
01259 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
01260 #else
01261 static void
01262 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
01263 FILE *yyoutput;
01264 int yytype;
01265 YYSTYPE const * const yyvaluep;
01266 YYLTYPE const * const yylocationp;
01267 OSResult *osresult;
01268 OSrLParserData *parserData;
01269 #endif
01270 {
01271 if (!yyvaluep)
01272 return;
01273 YYUSE (yylocationp);
01274 YYUSE (osresult);
01275 YYUSE (parserData);
01276 # ifdef YYPRINT
01277 if (yytype < YYNTOKENS)
01278 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01279 # else
01280 YYUSE (yyoutput);
01281 # endif
01282 switch (yytype)
01283 {
01284 default:
01285 break;
01286 }
01287 }
01288
01289
01290
01291
01292
01293
01294 #if (defined __STDC__ || defined __C99__FUNC__ \
01295 || defined __cplusplus || defined _MSC_VER)
01296 static void
01297 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
01298 #else
01299 static void
01300 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
01301 FILE *yyoutput;
01302 int yytype;
01303 YYSTYPE const * const yyvaluep;
01304 YYLTYPE const * const yylocationp;
01305 OSResult *osresult;
01306 OSrLParserData *parserData;
01307 #endif
01308 {
01309 if (yytype < YYNTOKENS)
01310 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01311 else
01312 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01313
01314 YY_LOCATION_PRINT (yyoutput, *yylocationp);
01315 YYFPRINTF (yyoutput, ": ");
01316 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData);
01317 YYFPRINTF (yyoutput, ")");
01318 }
01319
01320
01321
01322
01323
01324
01325 #if (defined __STDC__ || defined __C99__FUNC__ \
01326 || defined __cplusplus || defined _MSC_VER)
01327 static void
01328 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
01329 #else
01330 static void
01331 yy_stack_print (bottom, top)
01332 yytype_int16 *bottom;
01333 yytype_int16 *top;
01334 #endif
01335 {
01336 YYFPRINTF (stderr, "Stack now");
01337 for (; bottom <= top; ++bottom)
01338 YYFPRINTF (stderr, " %d", *bottom);
01339 YYFPRINTF (stderr, "\n");
01340 }
01341
01342 # define YY_STACK_PRINT(Bottom, Top) \
01343 do { \
01344 if (yydebug) \
01345 yy_stack_print ((Bottom), (Top)); \
01346 } while (YYID (0))
01347
01348
01349
01350
01351
01352
01353 #if (defined __STDC__ || defined __C99__FUNC__ \
01354 || defined __cplusplus || defined _MSC_VER)
01355 static void
01356 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, OSResult *osresult, OSrLParserData *parserData)
01357 #else
01358 static void
01359 yy_reduce_print (yyvsp, yylsp, yyrule, osresult, parserData)
01360 YYSTYPE *yyvsp;
01361 YYLTYPE *yylsp;
01362 int yyrule;
01363 OSResult *osresult;
01364 OSrLParserData *parserData;
01365 #endif
01366 {
01367 int yynrhs = yyr2[yyrule];
01368 int yyi;
01369 unsigned long int yylno = yyrline[yyrule];
01370 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
01371 yyrule - 1, yylno);
01372
01373 for (yyi = 0; yyi < yynrhs; yyi++)
01374 {
01375 fprintf (stderr, " $%d = ", yyi + 1);
01376 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
01377 &(yyvsp[(yyi + 1) - (yynrhs)])
01378 , &(yylsp[(yyi + 1) - (yynrhs)]) , osresult, parserData);
01379 fprintf (stderr, "\n");
01380 }
01381 }
01382
01383 # define YY_REDUCE_PRINT(Rule) \
01384 do { \
01385 if (yydebug) \
01386 yy_reduce_print (yyvsp, yylsp, Rule, osresult, parserData); \
01387 } while (YYID (0))
01388
01389
01390
01391 int yydebug;
01392 #else
01393 # define YYDPRINTF(Args)
01394 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
01395 # define YY_STACK_PRINT(Bottom, Top)
01396 # define YY_REDUCE_PRINT(Rule)
01397 #endif
01398
01399
01400
01401 #ifndef YYINITDEPTH
01402 # define YYINITDEPTH 200
01403 #endif
01404
01405
01406
01407
01408
01409
01410
01411
01412 #ifndef YYMAXDEPTH
01413 # define YYMAXDEPTH 10000
01414 #endif
01415
01416
01417
01418 #if YYERROR_VERBOSE
01419
01420 # ifndef yystrlen
01421 # if defined __GLIBC__ && defined _STRING_H
01422 # define yystrlen strlen
01423 # else
01424
01425 #if (defined __STDC__ || defined __C99__FUNC__ \
01426 || defined __cplusplus || defined _MSC_VER)
01427 static YYSIZE_T
01428 yystrlen (const char *yystr)
01429 #else
01430 static YYSIZE_T
01431 yystrlen (yystr)
01432 const char *yystr;
01433 #endif
01434 {
01435 YYSIZE_T yylen;
01436 for (yylen = 0; yystr[yylen]; yylen++)
01437 continue;
01438 return yylen;
01439 }
01440 # endif
01441 # endif
01442
01443 # ifndef yystpcpy
01444 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
01445 # define yystpcpy stpcpy
01446 # else
01447
01448
01449 #if (defined __STDC__ || defined __C99__FUNC__ \
01450 || defined __cplusplus || defined _MSC_VER)
01451 static char *
01452 yystpcpy (char *yydest, const char *yysrc)
01453 #else
01454 static char *
01455 yystpcpy (yydest, yysrc)
01456 char *yydest;
01457 const char *yysrc;
01458 #endif
01459 {
01460 char *yyd = yydest;
01461 const char *yys = yysrc;
01462
01463 while ((*yyd++ = *yys++) != '\0')
01464 continue;
01465
01466 return yyd - 1;
01467 }
01468 # endif
01469 # endif
01470
01471 # ifndef yytnamerr
01472
01473
01474
01475
01476
01477
01478
01479 static YYSIZE_T
01480 yytnamerr (char *yyres, const char *yystr)
01481 {
01482 if (*yystr == '"')
01483 {
01484 YYSIZE_T yyn = 0;
01485 char const *yyp = yystr;
01486
01487 for (;;)
01488 switch (*++yyp)
01489 {
01490 case '\'':
01491 case ',':
01492 goto do_not_strip_quotes;
01493
01494 case '\\':
01495 if (*++yyp != '\\')
01496 goto do_not_strip_quotes;
01497
01498 default:
01499 if (yyres)
01500 yyres[yyn] = *yyp;
01501 yyn++;
01502 break;
01503
01504 case '"':
01505 if (yyres)
01506 yyres[yyn] = '\0';
01507 return yyn;
01508 }
01509 do_not_strip_quotes: ;
01510 }
01511
01512 if (! yyres)
01513 return yystrlen (yystr);
01514
01515 return yystpcpy (yyres, yystr) - yyres;
01516 }
01517 # endif
01518
01519
01520
01521
01522
01523
01524
01525
01526 static YYSIZE_T
01527 yysyntax_error (char *yyresult, int yystate, int yychar)
01528 {
01529 int yyn = yypact[yystate];
01530
01531 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01532 return 0;
01533 else
01534 {
01535 int yytype = YYTRANSLATE (yychar);
01536 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01537 YYSIZE_T yysize = yysize0;
01538 YYSIZE_T yysize1;
01539 int yysize_overflow = 0;
01540 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01541 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01542 int yyx;
01543
01544 # if 0
01545
01546
01547 YY_("syntax error, unexpected %s");
01548 YY_("syntax error, unexpected %s, expecting %s");
01549 YY_("syntax error, unexpected %s, expecting %s or %s");
01550 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01551 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01552 # endif
01553 char *yyfmt;
01554 char const *yyf;
01555 static char const yyunexpected[] = "syntax error, unexpected %s";
01556 static char const yyexpecting[] = ", expecting %s";
01557 static char const yyor[] = " or %s";
01558 char yyformat[sizeof yyunexpected
01559 + sizeof yyexpecting - 1
01560 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01561 * (sizeof yyor - 1))];
01562 char const *yyprefix = yyexpecting;
01563
01564
01565
01566 int yyxbegin = yyn < 0 ? -yyn : 0;
01567
01568
01569 int yychecklim = YYLAST - yyn + 1;
01570 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01571 int yycount = 1;
01572
01573 yyarg[0] = yytname[yytype];
01574 yyfmt = yystpcpy (yyformat, yyunexpected);
01575
01576 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01577 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01578 {
01579 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01580 {
01581 yycount = 1;
01582 yysize = yysize0;
01583 yyformat[sizeof yyunexpected - 1] = '\0';
01584 break;
01585 }
01586 yyarg[yycount++] = yytname[yyx];
01587 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01588 yysize_overflow |= (yysize1 < yysize);
01589 yysize = yysize1;
01590 yyfmt = yystpcpy (yyfmt, yyprefix);
01591 yyprefix = yyor;
01592 }
01593
01594 yyf = YY_(yyformat);
01595 yysize1 = yysize + yystrlen (yyf);
01596 yysize_overflow |= (yysize1 < yysize);
01597 yysize = yysize1;
01598
01599 if (yysize_overflow)
01600 return YYSIZE_MAXIMUM;
01601
01602 if (yyresult)
01603 {
01604
01605
01606
01607 char *yyp = yyresult;
01608 int yyi = 0;
01609 while ((*yyp = *yyf) != '\0')
01610 {
01611 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01612 {
01613 yyp += yytnamerr (yyp, yyarg[yyi++]);
01614 yyf += 2;
01615 }
01616 else
01617 {
01618 yyp++;
01619 yyf++;
01620 }
01621 }
01622 }
01623 return yysize;
01624 }
01625 }
01626 #endif
01627
01628
01629
01630
01631
01632
01633
01634 #if (defined __STDC__ || defined __C99__FUNC__ \
01635 || defined __cplusplus || defined _MSC_VER)
01636 static void
01637 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, OSResult *osresult, OSrLParserData *parserData)
01638 #else
01639 static void
01640 yydestruct (yymsg, yytype, yyvaluep, yylocationp, osresult, parserData)
01641 const char *yymsg;
01642 int yytype;
01643 YYSTYPE *yyvaluep;
01644 YYLTYPE *yylocationp;
01645 OSResult *osresult;
01646 OSrLParserData *parserData;
01647 #endif
01648 {
01649 YYUSE (yyvaluep);
01650 YYUSE (yylocationp);
01651 YYUSE (osresult);
01652 YYUSE (parserData);
01653
01654 if (!yymsg)
01655 yymsg = "Deleting";
01656 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01657
01658 switch (yytype)
01659 {
01660
01661 default:
01662 break;
01663 }
01664 }
01665
01666
01667
01668
01669 #ifdef YYPARSE_PARAM
01670 #if defined __STDC__ || defined __cplusplus
01671 int yyparse (void *YYPARSE_PARAM);
01672 #else
01673 int yyparse ();
01674 #endif
01675 #else
01676 #if defined __STDC__ || defined __cplusplus
01677 int yyparse (OSResult *osresult, OSrLParserData *parserData);
01678 #else
01679 int yyparse ();
01680 #endif
01681 #endif
01682
01683
01684
01685
01686
01687
01688
01689
01690
01691
01692 #ifdef YYPARSE_PARAM
01693 #if (defined __STDC__ || defined __C99__FUNC__ \
01694 || defined __cplusplus || defined _MSC_VER)
01695 int
01696 yyparse (void *YYPARSE_PARAM)
01697 #else
01698 int
01699 yyparse (YYPARSE_PARAM)
01700 void *YYPARSE_PARAM;
01701 #endif
01702 #else
01703 #if (defined __STDC__ || defined __C99__FUNC__ \
01704 || defined __cplusplus || defined _MSC_VER)
01705 int
01706 yyparse (OSResult *osresult, OSrLParserData *parserData)
01707 #else
01708 int
01709 yyparse (osresult, parserData)
01710 OSResult *osresult;
01711 OSrLParserData *parserData;
01712 #endif
01713 #endif
01714 {
01715
01716 int yychar;
01717
01718
01719 YYSTYPE yylval;
01720
01721
01722 int yynerrs;
01723
01724 YYLTYPE yylloc;
01725
01726 int yystate;
01727 int yyn;
01728 int yyresult;
01729
01730 int yyerrstatus;
01731
01732 int yytoken = 0;
01733 #if YYERROR_VERBOSE
01734
01735 char yymsgbuf[128];
01736 char *yymsg = yymsgbuf;
01737 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01738 #endif
01739
01740
01741
01742
01743
01744
01745
01746
01747
01748
01749 yytype_int16 yyssa[YYINITDEPTH];
01750 yytype_int16 *yyss = yyssa;
01751 yytype_int16 *yyssp;
01752
01753
01754 YYSTYPE yyvsa[YYINITDEPTH];
01755 YYSTYPE *yyvs = yyvsa;
01756 YYSTYPE *yyvsp;
01757
01758
01759 YYLTYPE yylsa[YYINITDEPTH];
01760 YYLTYPE *yyls = yylsa;
01761 YYLTYPE *yylsp;
01762
01763 YYLTYPE yyerror_range[2];
01764
01765 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
01766
01767 YYSIZE_T yystacksize = YYINITDEPTH;
01768
01769
01770
01771 YYSTYPE yyval;
01772 YYLTYPE yyloc;
01773
01774
01775
01776 int yylen = 0;
01777
01778 YYDPRINTF ((stderr, "Starting parse\n"));
01779
01780 yystate = 0;
01781 yyerrstatus = 0;
01782 yynerrs = 0;
01783 yychar = YYEMPTY;
01784
01785
01786
01787
01788
01789
01790 yyssp = yyss;
01791 yyvsp = yyvs;
01792 yylsp = yyls;
01793 #if YYLTYPE_IS_TRIVIAL
01794
01795 yylloc.first_line = yylloc.last_line = 1;
01796 yylloc.first_column = yylloc.last_column = 0;
01797 #endif
01798
01799 goto yysetstate;
01800
01801
01802
01803
01804 yynewstate:
01805
01806
01807 yyssp++;
01808
01809 yysetstate:
01810 *yyssp = yystate;
01811
01812 if (yyss + yystacksize - 1 <= yyssp)
01813 {
01814
01815 YYSIZE_T yysize = yyssp - yyss + 1;
01816
01817 #ifdef yyoverflow
01818 {
01819
01820
01821
01822 YYSTYPE *yyvs1 = yyvs;
01823 yytype_int16 *yyss1 = yyss;
01824 YYLTYPE *yyls1 = yyls;
01825
01826
01827
01828
01829
01830 yyoverflow (YY_("memory exhausted"),
01831 &yyss1, yysize * sizeof (*yyssp),
01832 &yyvs1, yysize * sizeof (*yyvsp),
01833 &yyls1, yysize * sizeof (*yylsp),
01834 &yystacksize);
01835 yyls = yyls1;
01836 yyss = yyss1;
01837 yyvs = yyvs1;
01838 }
01839 #else
01840 # ifndef YYSTACK_RELOCATE
01841 goto yyexhaustedlab;
01842 # else
01843
01844 if (YYMAXDEPTH <= yystacksize)
01845 goto yyexhaustedlab;
01846 yystacksize *= 2;
01847 if (YYMAXDEPTH < yystacksize)
01848 yystacksize = YYMAXDEPTH;
01849
01850 {
01851 yytype_int16 *yyss1 = yyss;
01852 union yyalloc *yyptr =
01853 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01854 if (! yyptr)
01855 goto yyexhaustedlab;
01856 YYSTACK_RELOCATE (yyss);
01857 YYSTACK_RELOCATE (yyvs);
01858 YYSTACK_RELOCATE (yyls);
01859 # undef YYSTACK_RELOCATE
01860 if (yyss1 != yyssa)
01861 YYSTACK_FREE (yyss1);
01862 }
01863 # endif
01864 #endif
01865
01866 yyssp = yyss + yysize - 1;
01867 yyvsp = yyvs + yysize - 1;
01868 yylsp = yyls + yysize - 1;
01869
01870 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01871 (unsigned long int) yystacksize));
01872
01873 if (yyss + yystacksize - 1 <= yyssp)
01874 YYABORT;
01875 }
01876
01877 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01878
01879 goto yybackup;
01880
01881
01882
01883
01884 yybackup:
01885
01886
01887
01888
01889
01890 yyn = yypact[yystate];
01891 if (yyn == YYPACT_NINF)
01892 goto yydefault;
01893
01894
01895
01896
01897 if (yychar == YYEMPTY)
01898 {
01899 YYDPRINTF ((stderr, "Reading a token: "));
01900 yychar = YYLEX;
01901 }
01902
01903 if (yychar <= YYEOF)
01904 {
01905 yychar = yytoken = YYEOF;
01906 YYDPRINTF ((stderr, "Now at end of input.\n"));
01907 }
01908 else
01909 {
01910 yytoken = YYTRANSLATE (yychar);
01911 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
01912 }
01913
01914
01915
01916 yyn += yytoken;
01917 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01918 goto yydefault;
01919 yyn = yytable[yyn];
01920 if (yyn <= 0)
01921 {
01922 if (yyn == 0 || yyn == YYTABLE_NINF)
01923 goto yyerrlab;
01924 yyn = -yyn;
01925 goto yyreduce;
01926 }
01927
01928 if (yyn == YYFINAL)
01929 YYACCEPT;
01930
01931
01932
01933 if (yyerrstatus)
01934 yyerrstatus--;
01935
01936
01937 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
01938
01939
01940 if (yychar != YYEOF)
01941 yychar = YYEMPTY;
01942
01943 yystate = yyn;
01944 *++yyvsp = yylval;
01945 *++yylsp = yylloc;
01946 goto yynewstate;
01947
01948
01949
01950
01951
01952 yydefault:
01953 yyn = yydefact[yystate];
01954 if (yyn == 0)
01955 goto yyerrlab;
01956 goto yyreduce;
01957
01958
01959
01960
01961
01962 yyreduce:
01963
01964 yylen = yyr2[yyn];
01965
01966
01967
01968
01969
01970
01971
01972
01973
01974 yyval = yyvsp[1-yylen];
01975
01976
01977 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
01978 YY_REDUCE_PRINT (yyn);
01979 switch (yyn)
01980 {
01981 case 7:
01982
01983 {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, parserData, "a type attribute required for generalStatus element");}
01984 break;
01985
01986 case 8:
01987
01988 {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, parserData, "a type attribute required for generalStatus element"); parserData->generalStatusTypePresent = false;}
01989 break;
01990
01991 case 11:
01992
01993 { osresult->setGeneralStatusType((yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); ; parserData->generalStatusTypePresent = true;}
01994 break;
01995
01996 case 12:
01997
01998 { osresult->setGeneralStatusType(""); parserData->generalStatusTypePresent = true;}
01999 break;
02000
02001 case 13:
02002
02003 { osresult->setGeneralStatusDescription((yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval));}
02004 break;
02005
02006 case 14:
02007
02008 { osresult->setGeneralStatusDescription("");}
02009 break;
02010
02011 case 17:
02012
02013 {osresult->setServiceURI( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
02014 break;
02015
02016 case 21:
02017
02018 {osresult->setServiceName( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
02019 break;
02020
02021 case 25:
02022
02023 {osresult->setInstanceName( (yyvsp[(2) - (3)].sval)) ; free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
02024 break;
02025
02026 case 29:
02027
02028 {osresult->setJobID( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
02029 break;
02030
02031 case 33:
02032
02033 {osresult->setGeneralMessage( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
02034 break;
02035
02036 case 43:
02037
02038 { if ((yyvsp[(3) - (4)].ival) < 0) osrlerror(NULL, NULL, parserData, "number of time measurements cannot be negative");
02039 parserData->numberOfTimes = (yyvsp[(3) - (4)].ival);
02040 parserData->ivar = 0;
02041 }
02042 break;
02043
02044 case 49:
02045
02046 {if (parserData->ivar == parserData->numberOfTimes)
02047 osrlerror(NULL, NULL, parserData, "Too many time measurements");
02048 osresult->addTimingInformation(parserData->timeType, parserData->timeCategory,
02049 parserData->timeUnit, parserData->timeDescription, parserData->timeValue);
02050 parserData->ivar++;
02051 parserData->timeType = "elapsedTime";
02052 parserData->timeCategory = "total";
02053 parserData->timeUnit = "second";
02054 parserData->timeDescription = "";
02055 }
02056 break;
02057
02058 case 56:
02059
02060 {parserData->timeType = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
02061 break;
02062
02063 case 58:
02064
02065 {parserData->timeCategory = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
02066 break;
02067
02068 case 60:
02069
02070 {parserData->timeUnit = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
02071 break;
02072
02073 case 62:
02074
02075 {parserData->timeDescription = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
02076 break;
02077
02078 case 64:
02079
02080 { parserData->timeValue = (yyvsp[(1) - (1)].dval); }
02081 break;
02082
02083 case 65:
02084
02085 { parserData->timeValue = (yyvsp[(1) - (1)].ival); }
02086 break;
02087
02088 case 77:
02089
02090 { parserData->numberOfSolutions = (yyvsp[(3) - (3)].ival); osresult->setSolutionNumber((yyvsp[(3) - (3)].ival));}
02091 break;
02092
02093 case 78:
02094
02095 {parserData->numberOfVariables = (yyvsp[(3) - (3)].ival); osresult->setVariableNumber((yyvsp[(3) - (3)].ival)); }
02096 break;
02097
02098 case 79:
02099
02100 {parserData->numberOfConstraints = (yyvsp[(3) - (3)].ival); osresult->setConstraintNumber((yyvsp[(3) - (3)].ival));}
02101 break;
02102
02103 case 80:
02104
02105 {parserData->numberOfObjectives = (yyvsp[(3) - (3)].ival); osresult->setObjectiveNumber((yyvsp[(3) - (3)].ival));}
02106 break;
02107
02108 case 83:
02109
02110 {parserData->numberOfVar = 0; parserData->numberOfCon = 0; parserData->numberOfObj = 0;}
02111 break;
02112
02113 case 84:
02114
02115 {
02116 if (parserData->solutionIdx == parserData->numberOfSolutions)
02117 osrlerror(NULL, NULL, parserData, "too many solutions");
02118 parserData->solutionIdx++;
02119 }
02120 break;
02121
02122 case 86:
02123
02124 {
02125 if((yyvsp[(3) - (4)].ival) >= 0) osrlerror(NULL, NULL, parserData, "target objective index must be negative");
02126
02127 osresult->setSolutionTargetObjectiveIdx(parserData->solutionIdx, (yyvsp[(3) - (4)].ival));
02128 }
02129 break;
02130
02131 case 87:
02132
02133 {if(parserData->statusTypePresent == false) osrlerror(NULL, NULL, parserData, "a type attribute required for status element"); osresult->setSolutionStatus(parserData->solutionIdx, parserData->statusType, parserData->statusDescription);}
02134 break;
02135
02136 case 88:
02137
02138 {if(parserData->statusTypePresent == false) osrlerror(NULL, NULL, parserData, "a type attribute required for status element"); parserData->statusTypePresent = false; osresult->setSolutionStatus(parserData->solutionIdx, parserData->statusType, parserData->statusDescription);}
02139 break;
02140
02141 case 91:
02142
02143 {parserData->statusType = (yyvsp[(2) - (3)].sval); parserData->statusTypePresent = true; free((yyvsp[(2) - (3)].sval));}
02144 break;
02145
02146 case 92:
02147
02148 {parserData->statusType = ""; parserData->statusTypePresent = true;}
02149 break;
02150
02151 case 93:
02152
02153 {parserData->statusDescription = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
02154 break;
02155
02156 case 94:
02157
02158 {parserData->statusDescription = "";}
02159 break;
02160
02161 case 96:
02162
02163 {
02164 osresult->setSolutionMessage(parserData->solutionIdx, (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval));
02165 }
02166 break;
02167
02168 case 97:
02169
02170 {
02171 osresult->setSolutionMessage(parserData->solutionIdx, "");
02172 }
02173 break;
02174
02175 case 99:
02176
02177 {
02178 if(parserData->primalVals.size() != parserData->numberOfVar){
02179 osrlerror(NULL, NULL, parserData, "numberOfVar not consistent with the number of primal values");
02180 } else{
02181 osresult->setPrimalVariableValuesSparse(parserData->solutionIdx, parserData->primalVals);
02182 osresult->optimization->solution[ parserData->solutionIdx]->variables->values->numberOfVar = parserData->numberOfVar;
02183 }
02184 }
02185 break;
02186
02187 case 101:
02188
02189 {
02190 osresult->setNumberOfOtherVariableResults(parserData->solutionIdx, (yyvsp[(3) - (4)].ival));
02191 parserData->iOther = 0;
02192 parserData->tmpOtherValue = "";
02193 parserData->tmpOtherName = "";
02194 parserData->tmpOtherDescription = "";
02195 }
02196 break;
02197
02198 case 102:
02199
02200 {
02201
02202 parserData->numberOfVar = (yyvsp[(3) - (4)].ival);
02203 }
02204 break;
02205
02206 case 106:
02207
02208 {parserData->tempVal = (yyvsp[(1) - (1)].ival);
02209 parserData->primalValPair->value = (yyvsp[(1) - (1)].ival);
02210 parserData->primalVals.push_back( parserData->primalValPair);
02211 }
02212 break;
02213
02214 case 107:
02215
02216 {parserData->tempVal = (yyvsp[(1) - (1)].dval);
02217 parserData->primalValPair->value = (yyvsp[(1) - (1)].dval);
02218 parserData->primalVals.push_back( parserData->primalValPair);
02219 }
02220 break;
02221
02222 case 108:
02223
02224 { parserData->primalValPair = new IndexValuePair(); parserData->primalValPair->idx = (yyvsp[(2) - (3)].ival);}
02225 break;
02226
02227 case 111:
02228
02229 {
02230
02231 parserData->otherVarVec.push_back( parserData->otherVarStruct);
02232 parserData->numberOfOtherVariableResults++;
02233 parserData->otherNamePresent = false;
02234
02235
02236 osresult->setAnOtherVariableResultSparse(parserData->solutionIdx, parserData->iOther, parserData->otherVarStruct->name,
02237 parserData->otherVarStruct->value, parserData->otherVarStruct->description, parserData->otherVarStruct->otherVarIndex,
02238 parserData->otherVarStruct->otherVarText, parserData->otherVarStruct->numberOfVar );
02239
02240 parserData->iOther++;
02241 parserData->tmpOtherName = "";
02242 parserData->tmpOtherValue = "";
02243 parserData->tmpOtherDescription = "";
02244
02245 }
02246 break;
02247
02248 case 112:
02249
02250 {
02251 parserData->otherVarStruct = new OtherVariableResultStruct();
02252
02253
02254 parserData->kounter = 0;
02255 }
02256 break;
02257
02258 case 113:
02259
02260 { if(parserData->otherNamePresent == false)
02261 osrlerror(NULL, NULL, parserData, "other element requires name attribute");
02262 }
02263 break;
02264
02265 case 119:
02266
02267 {
02268 parserData->otherVarStruct->numberOfVar = (yyvsp[(3) - (4)].ival);
02269 parserData->otherVarStruct->otherVarText = new std::string[ parserData->otherVarStruct->numberOfVar];
02270 parserData->otherVarStruct->otherVarIndex = new int[ parserData->otherVarStruct->numberOfVar];
02271
02272 }
02273 break;
02274
02275 case 120:
02276
02277 {parserData->tmpOtherValue=""; parserData->otherVarStruct->value = "";
02278
02279 }
02280 break;
02281
02282 case 121:
02283
02284 {parserData->tmpOtherValue=(yyvsp[(2) - (3)].sval); parserData->otherVarStruct->value = (yyvsp[(2) - (3)].sval);
02285
02286 free((yyvsp[(2) - (3)].sval));}
02287 break;
02288
02289 case 122:
02290
02291 {
02292 parserData->tmpOtherName="";
02293 parserData->otherNamePresent = true;
02294 parserData->otherVarStruct->name = "";
02295 }
02296 break;
02297
02298 case 123:
02299
02300 {
02301 parserData->tmpOtherName=(yyvsp[(2) - (3)].sval); parserData->otherNamePresent = true; parserData->otherVarStruct->name = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));
02302
02303 }
02304 break;
02305
02306 case 124:
02307
02308 {
02309 parserData->tmpOtherDescription=(yyvsp[(2) - (3)].sval); parserData->otherVarStruct->description = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));
02310
02311 }
02312 break;
02313
02314 case 127:
02315
02316 {
02317 parserData->otherVarStruct->otherVarText[parserData->kounter] = parserData->outStr.str();
02318
02319 parserData->outStr.str("");
02320 parserData->otherVarStruct->otherVarIndex[parserData->kounter] = parserData->ivar;
02321 parserData->errorText = NULL;
02322
02323 if (parserData->kounter == osresult->getAnOtherVariableResultNumberOfVar(parserData->solutionIdx, parserData->iOther))
02324 osrlerror(NULL, NULL, parserData, "too many variables");
02325 if (parserData->numberOfVariables > 0 && (parserData->ivar < 0 || parserData->ivar > parserData->numberOfVariables - 1) )
02326 osrlerror(NULL, NULL, parserData, "index must be greater than 0 and less than the number of variables");
02327
02328
02329 parserData->kounter++;
02330 }
02331 break;
02332
02333 case 128:
02334
02335 { parserData->outStr << (yyvsp[(1) - (1)].sval); free((yyvsp[(1) - (1)].sval)); }
02336 break;
02337
02338 case 129:
02339
02340 { parserData->outStr << (yyvsp[(1) - (1)].ival); }
02341 break;
02342
02343 case 130:
02344
02345 { parserData->outStr << (yyvsp[(1) - (1)].dval); }
02346 break;
02347
02348 case 131:
02349
02350 { if(parserData->otherVarStruct->numberOfVar <= 0)
02351 osrlerror(NULL, NULL, parserData, "must specify the number of variables") ;
02352 }
02353 break;
02354
02355 case 133:
02356
02357 {
02358 if(parserData->numberOfObj != parserData->objVals.size()){
02359 osrlerror(NULL, NULL, parserData, "numberOfObj not consistent with the number of objective values");
02360 }else{
02361
02362 osresult->setObjectiveValuesSparse(parserData->solutionIdx, parserData->objVals);
02363 }
02364 }
02365 break;
02366
02367 case 134:
02368
02369 {
02370 parserData->numberOfObj = (yyvsp[(3) - (4)].ival);
02371 }
02372 break;
02373
02374 case 137:
02375
02376 {
02377
02378 parserData->objValPair->value = (yyvsp[(4) - (5)].dval);
02379 parserData->objVals.push_back( parserData->objValPair);
02380
02381 }
02382 break;
02383
02384 case 138:
02385
02386 {
02387
02388
02389 parserData->objValPair->value = (yyvsp[(4) - (5)].ival);
02390 parserData->objVals.push_back( parserData->objValPair);
02391 }
02392 break;
02393
02394 case 139:
02395
02396 { parserData->objValPair = new IndexValuePair(); parserData->objValPair->idx = (yyvsp[(2) - (3)].ival); }
02397 break;
02398
02399 case 141:
02400
02401 {
02402
02403
02404
02405 }
02406 break;
02407
02408 case 142:
02409
02410 {
02411
02412 if(parserData->numberOfCon != parserData->dualVals.size()){
02413 osrlerror(NULL, NULL, parserData, "numberOfCon not consistent with the number of dual values");
02414 }else{
02415
02416 osresult->setDualVariableValuesSparse(parserData->solutionIdx, parserData->dualVals);
02417 osresult->optimization->solution[ parserData->solutionIdx]->constraints->dualValues->numberOfCon = parserData->numberOfCon;
02418 }
02419 }
02420 break;
02421
02422 case 143:
02423
02424 {
02425 parserData->numberOfCon = (yyvsp[(3) - (4)].ival);
02426
02427 }
02428 break;
02429
02430 case 146:
02431
02432 {
02433
02434 parserData->dualValPair->value = (yyvsp[(4) - (5)].dval);
02435 parserData->dualVals.push_back( parserData->dualValPair);
02436
02437
02438 }
02439 break;
02440
02441 case 147:
02442
02443 {
02444
02445 parserData->dualValPair->value = (yyvsp[(4) - (5)].ival);
02446 parserData->dualVals.push_back( parserData->dualValPair);
02447
02448 }
02449 break;
02450
02451 case 148:
02452
02453 { parserData->dualValPair = new IndexValuePair(); parserData->dualValPair->idx = (yyvsp[(2) - (3)].ival); }
02454 break;
02455
02456 case 149:
02457
02458 {parserData->ivar = (yyvsp[(2) - (3)].ival); }
02459 break;
02460
02461 case 155:
02462
02463 {
02464 if(parserData->iOther < osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->numberOfOtherSolutionResults)
02465 osrlerror(NULL, NULL, parserData, "fewer OtherSolutionResult elements present than stated in numberOfOtherSolutionResults attribute");
02466 }
02467 break;
02468
02469 case 156:
02470
02471 {
02472 int temp;
02473 temp = (yyvsp[(3) - (3)].ival);
02474 if (temp < 0) osrlerror(NULL, NULL, parserData, "number of other solution results cannot be negative");
02475 if (osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults != NULL)
02476 osrlerror(NULL, NULL, parserData, "otherSolutionResults previously allocated");
02477 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults = new OtherSolutionResults();
02478 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->numberOfOtherSolutionResults = temp;
02479 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult = new OtherSolutionResult*[ temp];
02480 if (temp > 0)
02481 for(int i = 0; i < temp; i++)
02482 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[i] = new OtherSolutionResult();
02483 parserData->iOther = 0;
02484 }
02485 break;
02486
02487 case 160:
02488
02489 {
02490 if (parserData->kounter < osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->numberOfItems)
02491 osrlerror(NULL, NULL, parserData, "fewer item elements present than given in numberOfItems attribute");
02492
02493 parserData->iOther++;
02494
02495
02496 }
02497 break;
02498
02499 case 162:
02500
02501 {if(parserData->iOther >= osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->numberOfOtherSolutionResults)
02502 osrlerror(NULL, NULL, parserData, "more OtherSolutionResult elements present than in numberOfOtherSolutionResults attribute");
02503 }
02504 break;
02505
02506 case 168:
02507
02508 {
02509
02510 int temp;
02511 temp = (yyvsp[(3) - (4)].ival);
02512 if (temp < 0) osrlerror(NULL, NULL, parserData, "number of items cannot be negative");
02513 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->numberOfItems = temp;
02514
02515
02516
02517
02518
02519 if (osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->item != NULL)
02520 osrlerror(NULL, NULL, parserData, "item array was previously allocated");
02521 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->item = new std::string[temp];
02522 parserData->kounter = 0;
02523 }
02524 break;
02525
02526 case 169:
02527
02528 {
02529 parserData->tmpOtherName="";
02530 parserData->otherNamePresent = true;
02531 parserData->otherVarStruct->name = "";
02532 }
02533 break;
02534
02535 case 170:
02536
02537 {
02538 parserData->tmpOtherName=(yyvsp[(2) - (3)].sval); parserData->otherNamePresent = true;
02539 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->name = (yyvsp[(2) - (3)].sval);
02540 free((yyvsp[(2) - (3)].sval));
02541 }
02542 break;
02543
02544 case 171:
02545
02546 {
02547 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->category = (yyvsp[(2) - (3)].sval);
02548 free((yyvsp[(2) - (3)].sval));}
02549 break;
02550
02551 case 173:
02552
02553 {
02554 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->description = (yyvsp[(2) - (3)].sval);
02555 free((yyvsp[(2) - (3)].sval));}
02556 break;
02557
02558 case 177:
02559
02560 {
02561 if (parserData->kounter >= osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->numberOfItems)
02562 osrlerror(NULL, NULL, parserData, "number of <item> elements exceeds numberOfItems specified");
02563 parserData->itemContent = "";
02564 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->item[parserData->kounter] = parserData->itemContent;
02565 parserData->kounter++;
02566 }
02567 break;
02568
02569 case 178:
02570
02571 {
02572 if (parserData->kounter >= osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->numberOfItems)
02573 osrlerror(NULL, NULL, parserData, "number of <item> elements exceeds numberOfItems specified");
02574 parserData->itemContent = "";
02575 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->item[parserData->kounter] = parserData->itemContent;
02576 parserData->kounter++;
02577 }
02578 break;
02579
02580 case 179:
02581
02582 {
02583 if (parserData->kounter >= osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->numberOfItems)
02584 osrlerror(NULL, NULL, parserData, "number of <item> elements exceeds numberOfItems specified");
02585
02586 osresult->optimization->solution[parserData->solutionIdx]->otherSolutionResults->otherSolutionResult[parserData->iOther]->item[parserData->kounter] = parserData->itemContent;
02587 parserData->kounter++;
02588 }
02589 break;
02590
02591 case 180:
02592
02593 {parserData->itemContent = (yyvsp[(3) - (3)].sval); free((yyvsp[(3) - (3)].sval));}
02594 break;
02595
02596 case 182:
02597
02598 {
02599
02600
02601
02602 osrl_empty_vectors( parserData);
02603
02604 }
02605 break;
02606
02607
02608
02609
02610 default: break;
02611 }
02612 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
02613
02614 YYPOPSTACK (yylen);
02615 yylen = 0;
02616 YY_STACK_PRINT (yyss, yyssp);
02617
02618 *++yyvsp = yyval;
02619 *++yylsp = yyloc;
02620
02621
02622
02623
02624
02625 yyn = yyr1[yyn];
02626
02627 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02628 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02629 yystate = yytable[yystate];
02630 else
02631 yystate = yydefgoto[yyn - YYNTOKENS];
02632
02633 goto yynewstate;
02634
02635
02636
02637
02638
02639 yyerrlab:
02640
02641 if (!yyerrstatus)
02642 {
02643 ++yynerrs;
02644 #if ! YYERROR_VERBOSE
02645 yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
02646 #else
02647 {
02648 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
02649 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
02650 {
02651 YYSIZE_T yyalloc = 2 * yysize;
02652 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
02653 yyalloc = YYSTACK_ALLOC_MAXIMUM;
02654 if (yymsg != yymsgbuf)
02655 YYSTACK_FREE (yymsg);
02656 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
02657 if (yymsg)
02658 yymsg_alloc = yyalloc;
02659 else
02660 {
02661 yymsg = yymsgbuf;
02662 yymsg_alloc = sizeof yymsgbuf;
02663 }
02664 }
02665
02666 if (0 < yysize && yysize <= yymsg_alloc)
02667 {
02668 (void) yysyntax_error (yymsg, yystate, yychar);
02669 yyerror (&yylloc, osresult, parserData, yymsg);
02670 }
02671 else
02672 {
02673 yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
02674 if (yysize != 0)
02675 goto yyexhaustedlab;
02676 }
02677 }
02678 #endif
02679 }
02680
02681 yyerror_range[0] = yylloc;
02682
02683 if (yyerrstatus == 3)
02684 {
02685
02686
02687
02688 if (yychar <= YYEOF)
02689 {
02690
02691 if (yychar == YYEOF)
02692 YYABORT;
02693 }
02694 else
02695 {
02696 yydestruct ("Error: discarding",
02697 yytoken, &yylval, &yylloc, osresult, parserData);
02698 yychar = YYEMPTY;
02699 }
02700 }
02701
02702
02703
02704 goto yyerrlab1;
02705
02706
02707
02708
02709
02710 yyerrorlab:
02711
02712
02713
02714
02715 if ( 0)
02716 goto yyerrorlab;
02717
02718 yyerror_range[0] = yylsp[1-yylen];
02719
02720
02721 YYPOPSTACK (yylen);
02722 yylen = 0;
02723 YY_STACK_PRINT (yyss, yyssp);
02724 yystate = *yyssp;
02725 goto yyerrlab1;
02726
02727
02728
02729
02730
02731 yyerrlab1:
02732 yyerrstatus = 3;
02733
02734 for (;;)
02735 {
02736 yyn = yypact[yystate];
02737 if (yyn != YYPACT_NINF)
02738 {
02739 yyn += YYTERROR;
02740 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02741 {
02742 yyn = yytable[yyn];
02743 if (0 < yyn)
02744 break;
02745 }
02746 }
02747
02748
02749 if (yyssp == yyss)
02750 YYABORT;
02751
02752 yyerror_range[0] = *yylsp;
02753 yydestruct ("Error: popping",
02754 yystos[yystate], yyvsp, yylsp, osresult, parserData);
02755 YYPOPSTACK (1);
02756 yystate = *yyssp;
02757 YY_STACK_PRINT (yyss, yyssp);
02758 }
02759
02760 if (yyn == YYFINAL)
02761 YYACCEPT;
02762
02763 *++yyvsp = yylval;
02764
02765 yyerror_range[1] = yylloc;
02766
02767
02768 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
02769 *++yylsp = yyloc;
02770
02771
02772 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
02773
02774 yystate = yyn;
02775 goto yynewstate;
02776
02777
02778
02779
02780
02781 yyacceptlab:
02782 yyresult = 0;
02783 goto yyreturn;
02784
02785
02786
02787
02788 yyabortlab:
02789 yyresult = 1;
02790 goto yyreturn;
02791
02792 #ifndef yyoverflow
02793
02794
02795
02796 yyexhaustedlab:
02797 yyerror (&yylloc, osresult, parserData, YY_("memory exhausted"));
02798 yyresult = 2;
02799
02800 #endif
02801
02802 yyreturn:
02803 if (yychar != YYEOF && yychar != YYEMPTY)
02804 yydestruct ("Cleanup: discarding lookahead",
02805 yytoken, &yylval, &yylloc, osresult, parserData);
02806
02807
02808 YYPOPSTACK (yylen);
02809 YY_STACK_PRINT (yyss, yyssp);
02810 while (yyssp != yyss)
02811 {
02812 yydestruct ("Cleanup: popping",
02813 yystos[*yyssp], yyvsp, yylsp, osresult, parserData);
02814 YYPOPSTACK (1);
02815 }
02816 #ifndef yyoverflow
02817 if (yyss != yyssa)
02818 YYSTACK_FREE (yyss);
02819 #endif
02820 #if YYERROR_VERBOSE
02821 if (yymsg != yymsgbuf)
02822 YYSTACK_FREE (yymsg);
02823 #endif
02824
02825 return YYID (yyresult);
02826 }
02827
02828
02829
02830
02831
02832 void osrlerror(YYLTYPE* mytype, OSResult *osresult, OSrLParserData* parserData, const char* errormsg )
02833 {
02834 osrl_empty_vectors( parserData);
02835 std::ostringstream outStr;
02836 std::string error = errormsg;
02837 error = "Input is either not valid or well formed: " + error;
02838 outStr << error << std::endl;
02839 outStr << "See line number: " << osrlget_lineno( scanner) << std::endl;
02840 outStr << "The offending text is: " << osrlget_text ( scanner ) << std::endl;
02841 error = outStr.str();
02842
02843
02844
02845 throw ErrorClass( error);
02846 }
02847
02848 void yygetOSResult(const char *parsestring, OSResult *osresult, OSrLParserData *parserData) throw(ErrorClass){
02849 try{
02850 osrl_scan_string( parsestring, scanner);
02851 osrlset_lineno (1 , scanner );
02852
02853
02854
02855 if( osrlparse( osresult, parserData) != 0) {
02856
02857 throw ErrorClass( "Error parsing the OSrL");
02858 }
02859 }
02860 catch(const ErrorClass& eclass){
02861 throw ErrorClass( eclass.errormsg);
02862 }
02863 }
02864
02865 void osrl_empty_vectors( OSrLParserData* parserData){
02866
02867 int k;
02868 int numOtherVarVec = parserData->otherVarVec.size();
02869
02870 for( k = 0; k < numOtherVarVec; k++){
02871 if( (parserData->otherVarVec[ k] != NULL) && (parserData->otherVarVec[ k]->otherVarText != NULL) )
02872 delete[] parserData->otherVarVec[ k]->otherVarText;
02873 if( (parserData->otherVarVec[ k] != NULL) && (parserData->otherVarVec[ k]->otherVarIndex != NULL) )
02874 delete[] parserData->otherVarVec[ k]->otherVarIndex;
02875
02876 if( parserData->otherVarVec[ k] != NULL) delete parserData->otherVarVec[ k];
02877 }
02878 parserData->otherVarVec.clear();
02879
02880 int numDualVals = parserData->dualVals.size();
02881 for(k = 0; k < numDualVals; k++){
02882 if( parserData->dualVals[ k] != NULL )
02883 delete parserData->dualVals[ k];
02884 }
02885 parserData->dualVals.clear();
02886
02887
02888 int numObjVals = parserData->objVals.size();
02889 for(k = 0; k < numObjVals; k++){
02890 if( parserData->objVals[ k] != NULL )
02891 delete parserData->objVals[ k];
02892 }
02893 parserData->objVals.clear();
02894
02895
02896 int numPrimalVals = parserData->primalVals.size();
02897 for(k = 0; k < numPrimalVals; k++){
02898 if( parserData->primalVals[ k] != NULL )
02899 delete parserData->primalVals[ k];
02900 }
02901 parserData->primalVals.clear();
02902 }
02903
02904