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 INTEGER = 260,
00080 DOUBLE = 261,
00081 QUOTE = 262,
00082 GREATERTHAN = 263,
00083 ENDOFELEMENT = 264,
00084 OSRLSTART = 265,
00085 OSRLATTRIBUTETEXT = 266,
00086 OSRLEND = 267,
00087 RESULTHEADERSTART = 268,
00088 RESULTHEADEREND = 269,
00089 SERVICEURISTARTANDEND = 270,
00090 SERVICEURISTART = 271,
00091 SERVICEURIEND = 272,
00092 SERVICENAMESTARTANDEND = 273,
00093 SERVICENAMESTART = 274,
00094 SERVICENAMEEND = 275,
00095 INSTANCENAMESTARTANDEND = 276,
00096 INSTANCENAMESTART = 277,
00097 INSTANCENAMEEND = 278,
00098 JOBIDSTARTANDEND = 279,
00099 JOBIDSTART = 280,
00100 JOBIDEND = 281,
00101 RESULTDATASTART = 282,
00102 RESULTDATAEND = 283,
00103 RESULTDATASTARTANDEND = 284,
00104 OPTIMIZATIONSTART = 285,
00105 OPTIMIZATIONEND = 286,
00106 SOLUTIONSTART = 287,
00107 SOLUTIONEND = 288,
00108 VALUESSTART = 289,
00109 VALUESEND = 290,
00110 DUALVALUESSTART = 291,
00111 DUALVALUESEND = 292,
00112 VARIABLESSTART = 293,
00113 VARIABLESEND = 294,
00114 VARSTART = 295,
00115 VAREND = 296,
00116 OBJECTIVESSTART = 297,
00117 OBJECTIVESEND = 298,
00118 OBJSTART = 299,
00119 OBJEND = 300,
00120 CONSTRAINTSSTART = 301,
00121 CONSTRAINTSEND = 302,
00122 CONSTART = 303,
00123 CONEND = 304,
00124 STATUSSTART = 305,
00125 STATUSEND = 306,
00126 GENERALSTATUSSTART = 307,
00127 GENERALSTATUSEND = 308,
00128 MESSAGESTART = 309,
00129 MESSAGEEND = 310,
00130 MESSAGESTARTANDEND = 311,
00131 OTHERSTART = 312,
00132 OTHEREND = 313,
00133 NUMBEROFSOLUTIONSATT = 314,
00134 NUMBEROFVARIABLESATT = 315,
00135 NUMBEROFCONSTRAINTSATT = 316,
00136 NUMBEROFOBJECTIVESATT = 317,
00137 OBJECTIVEIDXATT = 318,
00138 IDXATT = 319,
00139 TYPEATT = 320,
00140 DESCRIPTIONATT = 321,
00141 NAMEATT = 322,
00142 DUMMY = 323
00143 };
00144 #endif
00145
00146 #define ATTRIBUTETEXT 258
00147 #define ELEMENTTEXT 259
00148 #define INTEGER 260
00149 #define DOUBLE 261
00150 #define QUOTE 262
00151 #define GREATERTHAN 263
00152 #define ENDOFELEMENT 264
00153 #define OSRLSTART 265
00154 #define OSRLATTRIBUTETEXT 266
00155 #define OSRLEND 267
00156 #define RESULTHEADERSTART 268
00157 #define RESULTHEADEREND 269
00158 #define SERVICEURISTARTANDEND 270
00159 #define SERVICEURISTART 271
00160 #define SERVICEURIEND 272
00161 #define SERVICENAMESTARTANDEND 273
00162 #define SERVICENAMESTART 274
00163 #define SERVICENAMEEND 275
00164 #define INSTANCENAMESTARTANDEND 276
00165 #define INSTANCENAMESTART 277
00166 #define INSTANCENAMEEND 278
00167 #define JOBIDSTARTANDEND 279
00168 #define JOBIDSTART 280
00169 #define JOBIDEND 281
00170 #define RESULTDATASTART 282
00171 #define RESULTDATAEND 283
00172 #define RESULTDATASTARTANDEND 284
00173 #define OPTIMIZATIONSTART 285
00174 #define OPTIMIZATIONEND 286
00175 #define SOLUTIONSTART 287
00176 #define SOLUTIONEND 288
00177 #define VALUESSTART 289
00178 #define VALUESEND 290
00179 #define DUALVALUESSTART 291
00180 #define DUALVALUESEND 292
00181 #define VARIABLESSTART 293
00182 #define VARIABLESEND 294
00183 #define VARSTART 295
00184 #define VAREND 296
00185 #define OBJECTIVESSTART 297
00186 #define OBJECTIVESEND 298
00187 #define OBJSTART 299
00188 #define OBJEND 300
00189 #define CONSTRAINTSSTART 301
00190 #define CONSTRAINTSEND 302
00191 #define CONSTART 303
00192 #define CONEND 304
00193 #define STATUSSTART 305
00194 #define STATUSEND 306
00195 #define GENERALSTATUSSTART 307
00196 #define GENERALSTATUSEND 308
00197 #define MESSAGESTART 309
00198 #define MESSAGEEND 310
00199 #define MESSAGESTARTANDEND 311
00200 #define OTHERSTART 312
00201 #define OTHEREND 313
00202 #define NUMBEROFSOLUTIONSATT 314
00203 #define NUMBEROFVARIABLESATT 315
00204 #define NUMBEROFCONSTRAINTSATT 316
00205 #define NUMBEROFOBJECTIVESATT 317
00206 #define OBJECTIVEIDXATT 318
00207 #define IDXATT 319
00208 #define TYPEATT 320
00209 #define DESCRIPTIONATT 321
00210 #define NAMEATT 322
00211 #define DUMMY 323
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223 #include "OSErrorClass.h"
00224 #include "OSResult.h"
00225 #include "OSrLParserData.h"
00226 #include <iostream>
00227 #include <sstream>
00228
00229
00230 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00231 YY_BUFFER_STATE osrl_scan_string (const char *yy_str , void* yyscanner );
00232 int osrllex_init(void** ptr_yy_globals);
00233 int osrllex_destroy (void* yyscanner );
00234 int osrlget_lineno( void* yyscanner);
00235 char *osrlget_text (void* yyscanner );
00236 void osrlset_lineno (int line_number , void* yyscanner );
00237 void osrlset_extra (OSrLParserData* parserData , void* yyscanner );
00238 void yygetOSResult(const char *ch, OSResult* m_osresult, OSrLParserData *m_parserData ) throw(ErrorClass);
00239
00240
00241
00242
00243
00244 #ifndef YYDEBUG
00245 # define YYDEBUG 0
00246 #endif
00247
00248
00249 #ifdef YYERROR_VERBOSE
00250 # undef YYERROR_VERBOSE
00251 # define YYERROR_VERBOSE 1
00252 #else
00253 # define YYERROR_VERBOSE 0
00254 #endif
00255
00256
00257 #ifndef YYTOKEN_TABLE
00258 # define YYTOKEN_TABLE 0
00259 #endif
00260
00261 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00262 typedef union YYSTYPE
00263
00264 {
00265 double dval;
00266 int ival;
00267 char* charval;
00268 }
00269
00270
00271 YYSTYPE;
00272 # define yystype YYSTYPE
00273 # define YYSTYPE_IS_DECLARED 1
00274 # define YYSTYPE_IS_TRIVIAL 1
00275 #endif
00276
00277 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
00278 typedef struct YYLTYPE
00279 {
00280 int first_line;
00281 int first_column;
00282 int last_line;
00283 int last_column;
00284 } YYLTYPE;
00285 # define yyltype YYLTYPE
00286 # define YYLTYPE_IS_DECLARED 1
00287 # define YYLTYPE_IS_TRIVIAL 1
00288 #endif
00289
00290
00291
00292
00293
00294
00295 void osrlerror(YYLTYPE* type, OSResult *osresult, OSrLParserData *parserData ,const char* errormsg ) ;
00296 int osrllex(YYSTYPE* lvalp, YYLTYPE* llocp, void* scanner);
00297
00298 #define scanner parserData->scanner
00299
00300
00301
00302
00303
00304 #ifdef short
00305 # undef short
00306 #endif
00307
00308 #ifdef YYTYPE_UINT8
00309 typedef YYTYPE_UINT8 yytype_uint8;
00310 #else
00311 typedef unsigned char yytype_uint8;
00312 #endif
00313
00314 #ifdef YYTYPE_INT8
00315 typedef YYTYPE_INT8 yytype_int8;
00316 #elif (defined __STDC__ || defined __C99__FUNC__ \
00317 || defined __cplusplus || defined _MSC_VER)
00318 typedef signed char yytype_int8;
00319 #else
00320 typedef short int yytype_int8;
00321 #endif
00322
00323 #ifdef YYTYPE_UINT16
00324 typedef YYTYPE_UINT16 yytype_uint16;
00325 #else
00326 typedef unsigned short int yytype_uint16;
00327 #endif
00328
00329 #ifdef YYTYPE_INT16
00330 typedef YYTYPE_INT16 yytype_int16;
00331 #else
00332 typedef short int yytype_int16;
00333 #endif
00334
00335 #ifndef YYSIZE_T
00336 # ifdef __SIZE_TYPE__
00337 # define YYSIZE_T __SIZE_TYPE__
00338 # elif defined size_t
00339 # define YYSIZE_T size_t
00340 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00341 || defined __cplusplus || defined _MSC_VER)
00342 # include <stddef.h>
00343 # define YYSIZE_T size_t
00344 # else
00345 # define YYSIZE_T unsigned int
00346 # endif
00347 #endif
00348
00349 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00350
00351 #ifndef YY_
00352 # if YYENABLE_NLS
00353 # if ENABLE_NLS
00354 # include <libintl.h>
00355 # define YY_(msgid) dgettext ("bison-runtime", msgid)
00356 # endif
00357 # endif
00358 # ifndef YY_
00359 # define YY_(msgid) msgid
00360 # endif
00361 #endif
00362
00363
00364 #if ! defined lint || defined __GNUC__
00365 # define YYUSE(e) ((void) (e))
00366 #else
00367 # define YYUSE(e)
00368 #endif
00369
00370
00371 #ifndef lint
00372 # define YYID(n) (n)
00373 #else
00374 #if (defined __STDC__ || defined __C99__FUNC__ \
00375 || defined __cplusplus || defined _MSC_VER)
00376 static int
00377 YYID (int i)
00378 #else
00379 static int
00380 YYID (i)
00381 int i;
00382 #endif
00383 {
00384 return i;
00385 }
00386 #endif
00387
00388 #if ! defined yyoverflow || YYERROR_VERBOSE
00389
00390
00391
00392 # ifdef YYSTACK_USE_ALLOCA
00393 # if YYSTACK_USE_ALLOCA
00394 # ifdef __GNUC__
00395 # define YYSTACK_ALLOC __builtin_alloca
00396 # elif defined __BUILTIN_VA_ARG_INCR
00397 # include <alloca.h>
00398 # elif defined _AIX
00399 # define YYSTACK_ALLOC __alloca
00400 # elif defined _MSC_VER
00401 # include <malloc.h>
00402 # define alloca _alloca
00403 # else
00404 # define YYSTACK_ALLOC alloca
00405 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00406 || defined __cplusplus || defined _MSC_VER)
00407 # include <stdlib.h>
00408 # ifndef _STDLIB_H
00409 # define _STDLIB_H 1
00410 # endif
00411 # endif
00412 # endif
00413 # endif
00414 # endif
00415
00416 # ifdef YYSTACK_ALLOC
00417
00418 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
00419 # ifndef YYSTACK_ALLOC_MAXIMUM
00420
00421
00422
00423
00424 # define YYSTACK_ALLOC_MAXIMUM 4032
00425 # endif
00426 # else
00427 # define YYSTACK_ALLOC YYMALLOC
00428 # define YYSTACK_FREE YYFREE
00429 # ifndef YYSTACK_ALLOC_MAXIMUM
00430 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00431 # endif
00432 # if (defined __cplusplus && ! defined _STDLIB_H \
00433 && ! ((defined YYMALLOC || defined malloc) \
00434 && (defined YYFREE || defined free)))
00435 # include <stdlib.h>
00436 # ifndef _STDLIB_H
00437 # define _STDLIB_H 1
00438 # endif
00439 # endif
00440 # ifndef YYMALLOC
00441 # define YYMALLOC malloc
00442 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00443 || defined __cplusplus || defined _MSC_VER)
00444 void *malloc (YYSIZE_T);
00445 # endif
00446 # endif
00447 # ifndef YYFREE
00448 # define YYFREE free
00449 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00450 || defined __cplusplus || defined _MSC_VER)
00451 void free (void *);
00452 # endif
00453 # endif
00454 # endif
00455 #endif
00456
00457
00458 #if (! defined yyoverflow \
00459 && (! defined __cplusplus \
00460 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
00461 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00462
00463
00464 union yyalloc
00465 {
00466 yytype_int16 yyss;
00467 YYSTYPE yyvs;
00468 YYLTYPE yyls;
00469 };
00470
00471
00472 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00473
00474
00475
00476 # define YYSTACK_BYTES(N) \
00477 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00478 + 2 * YYSTACK_GAP_MAXIMUM)
00479
00480
00481
00482 # ifndef YYCOPY
00483 # if defined __GNUC__ && 1 < __GNUC__
00484 # define YYCOPY(To, From, Count) \
00485 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00486 # else
00487 # define YYCOPY(To, From, Count) \
00488 do \
00489 { \
00490 YYSIZE_T yyi; \
00491 for (yyi = 0; yyi < (Count); yyi++) \
00492 (To)[yyi] = (From)[yyi]; \
00493 } \
00494 while (YYID (0))
00495 # endif
00496 # endif
00497
00498
00499
00500
00501
00502
00503 # define YYSTACK_RELOCATE(Stack) \
00504 do \
00505 { \
00506 YYSIZE_T yynewbytes; \
00507 YYCOPY (&yyptr->Stack, Stack, yysize); \
00508 Stack = &yyptr->Stack; \
00509 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00510 yyptr += yynewbytes / sizeof (*yyptr); \
00511 } \
00512 while (YYID (0))
00513
00514 #endif
00515
00516
00517 #define YYFINAL 6
00518
00519 #define YYLAST 173
00520
00521
00522 #define YYNTOKENS 73
00523
00524 #define YYNNTS 57
00525
00526 #define YYNRULES 115
00527
00528 #define YYNSTATES 219
00529
00530
00531 #define YYUNDEFTOK 2
00532 #define YYMAXUTOK 323
00533
00534 #define YYTRANSLATE(YYX) \
00535 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00536
00537
00538 static const yytype_uint8 yytranslate[] =
00539 {
00540 0, 2, 2, 2, 2, 2, 2, 2, 2, 70,
00541 72, 2, 2, 71, 2, 2, 2, 2, 2, 2,
00542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00543 2, 2, 69, 2, 2, 2, 2, 2, 2, 2,
00544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00565 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00566 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00567 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
00568 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
00569 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
00570 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
00571 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
00572 65, 66, 67, 68
00573 };
00574
00575 #if YYDEBUG
00576
00577
00578 static const yytype_uint16 yyprhs[] =
00579 {
00580 0, 0, 3, 4, 10, 13, 17, 26, 31, 35,
00581 37, 40, 44, 48, 49, 51, 55, 58, 59, 61,
00582 65, 68, 69, 71, 75, 78, 79, 81, 85, 88,
00583 89, 91, 95, 98, 100, 106, 109, 110, 112, 113,
00584 115, 116, 121, 123, 126, 127, 130, 133, 136, 139,
00585 142, 145, 148, 151, 154, 156, 159, 163, 173, 174,
00586 178, 183, 187, 189, 192, 196, 200, 201, 205, 208,
00587 209, 218, 220, 223, 229, 235, 236, 239, 240, 241,
00588 249, 251, 254, 260, 266, 272, 274, 277, 281, 285,
00589 286, 295, 297, 300, 306, 312, 313, 314, 324, 326,
00590 329, 335, 341, 345, 346, 348, 349, 351, 353, 356,
00591 359, 361, 363, 365, 367, 368
00592 };
00593
00594
00595 static const yytype_int16 yyrhs[] =
00596 {
00597 74, 0, -1, -1, 76, 77, 86, 75, 12, -1,
00598 10, 8, -1, 10, 11, 8, -1, 13, 78, 81,
00599 82, 83, 84, 85, 14, -1, 52, 79, 8, 53,
00600 -1, 52, 79, 9, -1, 80, -1, 79, 80, -1,
00601 65, 3, 127, -1, 66, 3, 127, -1, -1, 15,
00602 -1, 16, 4, 17, -1, 16, 17, -1, -1, 18,
00603 -1, 19, 4, 20, -1, 19, 20, -1, -1, 21,
00604 -1, 22, 4, 23, -1, 22, 23, -1, -1, 24,
00605 -1, 25, 4, 26, -1, 25, 26, -1, -1, 56,
00606 -1, 54, 4, 55, -1, 54, 55, -1, 29, -1,
00607 27, 88, 89, 87, 28, -1, 27, 28, -1, -1,
00608 68, -1, -1, 68, -1, -1, 30, 92, 90, 91,
00609 -1, 9, -1, 8, 98, -1, -1, 92, 93, -1,
00610 94, 127, -1, 95, 127, -1, 96, 127, -1, 97,
00611 127, -1, 59, 5, -1, 60, 5, -1, 61, 5,
00612 -1, 62, 5, -1, 31, -1, 99, 31, -1, 98,
00613 99, 31, -1, 32, 100, 8, 101, 104, 105, 116,
00614 119, 126, -1, -1, 63, 5, 127, -1, 50, 102,
00615 8, 51, -1, 50, 102, 9, -1, 103, -1, 102,
00616 103, -1, 65, 3, 127, -1, 66, 3, 127, -1,
00617 -1, 54, 4, 55, -1, 54, 55, -1, -1, 38,
00618 8, 34, 8, 106, 35, 108, 39, -1, 107, -1,
00619 106, 107, -1, 40, 123, 8, 6, 41, -1, 40,
00620 123, 8, 5, 41, -1, -1, 108, 109, -1, -1,
00621 -1, 57, 110, 114, 8, 111, 112, 58, -1, 113,
00622 -1, 112, 113, -1, 40, 123, 8, 4, 41, -1,
00623 40, 123, 8, 6, 41, -1, 40, 123, 8, 5,
00624 41, -1, 115, -1, 114, 115, -1, 67, 3, 127,
00625 -1, 66, 3, 127, -1, -1, 42, 8, 34, 8,
00626 117, 35, 124, 43, -1, 118, -1, 117, 118, -1,
00627 44, 123, 8, 6, 45, -1, 44, 123, 8, 5,
00628 45, -1, -1, -1, 46, 8, 36, 120, 8, 121,
00629 37, 125, 47, -1, 122, -1, 121, 122, -1, 48,
00630 123, 8, 6, 49, -1, 48, 123, 8, 5, 49,
00631 -1, 64, 5, 127, -1, -1, 68, -1, -1, 68,
00632 -1, 33, -1, 68, 33, -1, 129, 7, -1, 69,
00633 -1, 70, -1, 71, -1, 72, -1, -1, 129, 128,
00634 -1
00635 };
00636
00637
00638 static const yytype_uint16 yyrline[] =
00639 {
00640 0, 106, 106, 105, 123, 124, 128, 130, 131, 133,
00641 134, 136, 137, 140, 141, 142, 143, 146, 147, 148,
00642 149, 151, 152, 153, 154, 156, 157, 158, 159, 161,
00643 162, 163, 164, 166, 167, 168, 170, 171, 173, 174,
00644 177, 176, 204, 205, 207, 208, 210, 211, 212, 213,
00645 217, 219, 221, 223, 227, 228, 229, 232, 238, 239,
00646 242, 243, 246, 247, 249, 250, 252, 253, 254, 256,
00647 257, 260, 261, 263, 267, 274, 275, 277, 280, 277,
00648 284, 285, 287, 295, 301, 309, 310, 312, 313, 316,
00649 317, 319, 320, 322, 324, 327, 329, 328, 339, 340,
00650 342, 345, 352, 358, 359, 361, 362, 364, 365, 371,
00651 373, 374, 375, 376, 378, 379
00652 };
00653 #endif
00654
00655 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00656
00657
00658 static const char *const yytname[] =
00659 {
00660 "$end", "error", "$undefined", "ATTRIBUTETEXT", "ELEMENTTEXT",
00661 "INTEGER", "DOUBLE", "QUOTE", "GREATERTHAN", "ENDOFELEMENT", "OSRLSTART",
00662 "OSRLATTRIBUTETEXT", "OSRLEND", "RESULTHEADERSTART", "RESULTHEADEREND",
00663 "SERVICEURISTARTANDEND", "SERVICEURISTART", "SERVICEURIEND",
00664 "SERVICENAMESTARTANDEND", "SERVICENAMESTART", "SERVICENAMEEND",
00665 "INSTANCENAMESTARTANDEND", "INSTANCENAMESTART", "INSTANCENAMEEND",
00666 "JOBIDSTARTANDEND", "JOBIDSTART", "JOBIDEND", "RESULTDATASTART",
00667 "RESULTDATAEND", "RESULTDATASTARTANDEND", "OPTIMIZATIONSTART",
00668 "OPTIMIZATIONEND", "SOLUTIONSTART", "SOLUTIONEND", "VALUESSTART",
00669 "VALUESEND", "DUALVALUESSTART", "DUALVALUESEND", "VARIABLESSTART",
00670 "VARIABLESEND", "VARSTART", "VAREND", "OBJECTIVESSTART", "OBJECTIVESEND",
00671 "OBJSTART", "OBJEND", "CONSTRAINTSSTART", "CONSTRAINTSEND", "CONSTART",
00672 "CONEND", "STATUSSTART", "STATUSEND", "GENERALSTATUSSTART",
00673 "GENERALSTATUSEND", "MESSAGESTART", "MESSAGEEND", "MESSAGESTARTANDEND",
00674 "OTHERSTART", "OTHEREND", "NUMBEROFSOLUTIONSATT", "NUMBEROFVARIABLESATT",
00675 "NUMBEROFCONSTRAINTSATT", "NUMBEROFOBJECTIVESATT", "OBJECTIVEIDXATT",
00676 "IDXATT", "TYPEATT", "DESCRIPTIONATT", "NAMEATT", "DUMMY", "' '",
00677 "'\\t'", "'\\r'", "'\\n'", "$accept", "osrldoc", "@1", "osrlstart",
00678 "resultHeader", "generalStatus", "anotherGeneralStatusATT",
00679 "generalstatusatt", "serviceURI", "serviceName", "instanceName", "jobID",
00680 "headerMessage", "resultData", "otherResultData", "statistics",
00681 "optimization", "@2", "optend", "anotherOptATT", "optatt",
00682 "optnumsolatt", "optnumvaratt", "optnumconatt", "optnumobjatt",
00683 "solution", "anothersolution", "objectiveIDXATT", "status",
00684 "anotherStatusATT", "statusatt", "message", "variables", "var",
00685 "anothervar", "otherVariables", "otherVariableResult", "@3", "@4",
00686 "othervar", "anotherothervar", "anotherotherVarATT", "otheratt",
00687 "objectives", "obj", "anotherobj", "constraints", "@5", "con",
00688 "anothercon", "anIDXATT", "otherObjectives", "otherConstraints",
00689 "otherSolution", "quote", "xmlWhiteSpaceChar", "xmlWhiteSpace", 0
00690 };
00691 #endif
00692
00693 # ifdef YYPRINT
00694
00695
00696 static const yytype_uint16 yytoknum[] =
00697 {
00698 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00699 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
00700 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
00701 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
00702 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
00703 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
00704 315, 316, 317, 318, 319, 320, 321, 322, 323, 32,
00705 9, 13, 10
00706 };
00707 # endif
00708
00709
00710 static const yytype_uint8 yyr1[] =
00711 {
00712 0, 73, 75, 74, 76, 76, 77, 78, 78, 79,
00713 79, 80, 80, 81, 81, 81, 81, 82, 82, 82,
00714 82, 83, 83, 83, 83, 84, 84, 84, 84, 85,
00715 85, 85, 85, 86, 86, 86, 87, 87, 88, 88,
00716 90, 89, 91, 91, 92, 92, 93, 93, 93, 93,
00717 94, 95, 96, 97, 98, 98, 98, 99, 100, 100,
00718 101, 101, 102, 102, 103, 103, 104, 104, 104, 105,
00719 105, 106, 106, 107, 107, 108, 108, 110, 111, 109,
00720 112, 112, 113, 113, 113, 114, 114, 115, 115, 116,
00721 116, 117, 117, 118, 118, 119, 120, 119, 121, 121,
00722 122, 122, 123, 124, 124, 125, 125, 126, 126, 127,
00723 128, 128, 128, 128, 129, 129
00724 };
00725
00726
00727 static const yytype_uint8 yyr2[] =
00728 {
00729 0, 2, 0, 5, 2, 3, 8, 4, 3, 1,
00730 2, 3, 3, 0, 1, 3, 2, 0, 1, 3,
00731 2, 0, 1, 3, 2, 0, 1, 3, 2, 0,
00732 1, 3, 2, 1, 5, 2, 0, 1, 0, 1,
00733 0, 4, 1, 2, 0, 2, 2, 2, 2, 2,
00734 2, 2, 2, 2, 1, 2, 3, 9, 0, 3,
00735 4, 3, 1, 2, 3, 3, 0, 3, 2, 0,
00736 8, 1, 2, 5, 5, 0, 2, 0, 0, 7,
00737 1, 2, 5, 5, 5, 1, 2, 3, 3, 0,
00738 8, 1, 2, 5, 5, 0, 0, 9, 1, 2,
00739 5, 5, 3, 0, 1, 0, 1, 1, 2, 2,
00740 1, 1, 1, 1, 0, 2
00741 };
00742
00743
00744
00745
00746 static const yytype_uint8 yydefact[] =
00747 {
00748 0, 0, 0, 0, 4, 0, 1, 0, 0, 5,
00749 0, 13, 38, 33, 2, 0, 0, 0, 9, 14,
00750 0, 17, 35, 39, 0, 0, 114, 114, 0, 8,
00751 10, 0, 16, 18, 0, 21, 44, 36, 3, 11,
00752 0, 12, 7, 15, 0, 20, 22, 0, 25, 40,
00753 37, 0, 109, 110, 111, 112, 113, 115, 19, 0,
00754 24, 26, 0, 29, 0, 0, 0, 0, 0, 45,
00755 114, 114, 114, 114, 34, 23, 0, 28, 0, 30,
00756 0, 50, 51, 52, 53, 0, 42, 41, 46, 47,
00757 48, 49, 27, 0, 32, 6, 54, 58, 43, 0,
00758 31, 0, 0, 0, 55, 114, 0, 56, 59, 0,
00759 66, 0, 0, 0, 62, 0, 69, 114, 114, 0,
00760 61, 63, 0, 68, 0, 89, 64, 65, 60, 67,
00761 0, 0, 95, 0, 0, 0, 0, 0, 0, 0,
00762 107, 0, 57, 0, 0, 71, 0, 96, 108, 0,
00763 0, 75, 72, 0, 0, 91, 0, 114, 0, 0,
00764 0, 103, 92, 0, 102, 0, 0, 70, 77, 76,
00765 0, 104, 0, 0, 0, 98, 74, 73, 0, 0,
00766 0, 90, 0, 105, 99, 0, 0, 0, 85, 94,
00767 93, 0, 106, 0, 114, 114, 78, 86, 0, 0,
00768 97, 88, 87, 0, 101, 100, 0, 0, 80, 0,
00769 79, 81, 0, 0, 0, 0, 82, 84, 83
00770 };
00771
00772
00773 static const yytype_int16 yydefgoto[] =
00774 {
00775 -1, 2, 25, 3, 8, 11, 17, 18, 21, 35,
00776 48, 63, 80, 14, 51, 24, 37, 68, 87, 49,
00777 69, 70, 71, 72, 73, 98, 99, 102, 110, 113,
00778 114, 116, 125, 144, 145, 159, 169, 178, 203, 207,
00779 208, 187, 188, 132, 154, 155, 136, 156, 174, 175,
00780 150, 172, 193, 142, 39, 57, 40
00781 };
00782
00783
00784
00785 #define YYPACT_NINF -152
00786 static const yytype_int16 yypact[] =
00787 {
00788 22, 19, 21, 34, -152, 33, -152, 37, 13, -152,
00789 -12, 44, -20, -152, -152, 54, 69, 2, -152, -152,
00790 11, 56, -152, -152, -7, 86, -152, -152, 46, -152,
00791 -152, 83, -152, -152, 15, 55, -152, 35, -152, -152,
00792 -6, -152, -152, -152, 81, -152, -152, 10, 57, -10,
00793 -152, 74, -152, -152, -152, -152, -152, -152, -152, 84,
00794 -152, -152, 5, 17, 99, 100, 101, 103, 71, -152,
00795 -152, -152, -152, -152, -152, -152, 85, -152, 1, -152,
00796 95, -152, -152, -152, -152, 52, -152, -152, -152, -152,
00797 -152, -152, -152, 58, -152, -152, -152, 47, 80, 88,
00798 -152, 109, 107, 89, -152, -152, 66, -152, -152, 20,
00799 63, 115, 118, 4, -152, 3, 90, -152, -152, 72,
00800 -152, -152, 67, -152, 116, 92, -152, -152, -152, -152,
00801 93, 117, 94, 121, 97, 124, -29, 96, 125, 102,
00802 -152, 104, -152, 62, -15, -152, 98, -152, -152, 130,
00803 131, -152, -152, 62, -18, -152, 133, -152, 82, -33,
00804 135, 76, -152, 105, -152, 106, 108, -152, -152, -152,
00805 87, -152, 111, 62, -19, -152, -152, -152, 28, 110,
00806 112, -152, 137, 78, -152, 145, 147, -5, -152, -152,
00807 -152, 91, -152, 113, -152, -152, -152, -152, 114, 120,
00808 -152, -152, -152, 119, -152, -152, 62, -24, -152, 143,
00809 -152, -152, 32, 123, 129, 132, -152, -152, -152
00810 };
00811
00812
00813 static const yytype_int16 yypgoto[] =
00814 {
00815 -152, -152, -152, -152, -152, -152, -152, 139, -152, -152,
00816 -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
00817 -152, -152, -152, -152, -152, -152, 60, -152, -152, -152,
00818 39, -152, -152, -152, 18, -152, -152, -152, -152, -152,
00819 -46, -152, -22, -152, -152, 12, -152, -152, -152, -3,
00820 -151, -152, -152, -152, -27, -152, -152
00821 };
00822
00823
00824
00825
00826
00827 #define YYTABLE_NINF -1
00828 static const yytype_uint8 yytable[] =
00829 {
00830 41, 52, 160, 196, 140, 93, 167, 122, 22, 76,
00831 28, 29, 119, 120, 59, 31, 206, 161, 183, 44,
00832 151, 6, 182, 36, 168, 143, 153, 4, 32, 173,
00833 5, 77, 1, 60, 210, 45, 213, 214, 215, 141,
00834 12, 9, 13, 88, 89, 90, 91, 7, 23, 64,
00835 65, 66, 67, 15, 16, 209, 94, 26, 123, 19,
00836 20, 185, 186, 53, 54, 55, 56, 15, 16, 111,
00837 112, 78, 27, 79, 33, 34, 46, 47, 108, 85,
00838 86, 61, 62, 96, 97, 111, 112, 165, 166, 10,
00839 126, 127, 179, 180, 185, 186, 198, 199, 38, 42,
00840 43, 58, 74, 50, 81, 82, 83, 75, 84, 95,
00841 101, 92, 97, 100, 105, 106, 109, 115, 117, 104,
00842 107, 118, 129, 128, 130, 134, 149, 133, 124, 137,
00843 164, 138, 139, 146, 131, 157, 143, 148, 147, 158,
00844 135, 163, 153, 170, 171, 191, 192, 176, 194, 177,
00845 195, 212, 121, 173, 181, 189, 30, 190, 103, 206,
00846 200, 211, 152, 204, 216, 197, 162, 201, 202, 205,
00847 217, 184, 0, 218
00848 };
00849
00850 static const yytype_int16 yycheck[] =
00851 {
00852 27, 7, 153, 8, 33, 4, 39, 4, 28, 4,
00853 8, 9, 8, 9, 4, 4, 40, 35, 37, 4,
00854 35, 0, 173, 30, 57, 40, 44, 8, 17, 48,
00855 11, 26, 10, 23, 58, 20, 4, 5, 6, 68,
00856 27, 8, 29, 70, 71, 72, 73, 13, 68, 59,
00857 60, 61, 62, 65, 66, 206, 55, 3, 55, 15,
00858 16, 66, 67, 69, 70, 71, 72, 65, 66, 65,
00859 66, 54, 3, 56, 18, 19, 21, 22, 105, 8,
00860 9, 24, 25, 31, 32, 65, 66, 5, 6, 52,
00861 117, 118, 5, 6, 66, 67, 5, 6, 12, 53,
00862 17, 20, 28, 68, 5, 5, 5, 23, 5, 14,
00863 63, 26, 32, 55, 5, 8, 50, 54, 3, 31,
00864 31, 3, 55, 51, 8, 8, 64, 34, 38, 8,
00865 157, 34, 8, 8, 42, 5, 40, 33, 36, 8,
00866 46, 8, 44, 8, 68, 8, 68, 41, 3, 41,
00867 3, 8, 113, 48, 43, 45, 17, 45, 98, 40,
00868 47, 207, 144, 49, 41, 187, 154, 194, 195, 49,
00869 41, 174, -1, 41
00870 };
00871
00872
00873
00874 static const yytype_uint8 yystos[] =
00875 {
00876 0, 10, 74, 76, 8, 11, 0, 13, 77, 8,
00877 52, 78, 27, 29, 86, 65, 66, 79, 80, 15,
00878 16, 81, 28, 68, 88, 75, 3, 3, 8, 9,
00879 80, 4, 17, 18, 19, 82, 30, 89, 12, 127,
00880 129, 127, 53, 17, 4, 20, 21, 22, 83, 92,
00881 68, 87, 7, 69, 70, 71, 72, 128, 20, 4,
00882 23, 24, 25, 84, 59, 60, 61, 62, 90, 93,
00883 94, 95, 96, 97, 28, 23, 4, 26, 54, 56,
00884 85, 5, 5, 5, 5, 8, 9, 91, 127, 127,
00885 127, 127, 26, 4, 55, 14, 31, 32, 98, 99,
00886 55, 63, 100, 99, 31, 5, 8, 31, 127, 50,
00887 101, 65, 66, 102, 103, 54, 104, 3, 3, 8,
00888 9, 103, 4, 55, 38, 105, 127, 127, 51, 55,
00889 8, 42, 116, 34, 8, 46, 119, 8, 34, 8,
00890 33, 68, 126, 40, 106, 107, 8, 36, 33, 64,
00891 123, 35, 107, 44, 117, 118, 120, 5, 8, 108,
00892 123, 35, 118, 8, 127, 5, 6, 39, 57, 109,
00893 8, 68, 124, 48, 121, 122, 41, 41, 110, 5,
00894 6, 43, 123, 37, 122, 66, 67, 114, 115, 45,
00895 45, 8, 68, 125, 3, 3, 8, 115, 5, 6,
00896 47, 127, 127, 111, 49, 49, 40, 112, 113, 123,
00897 58, 113, 8, 4, 5, 6, 41, 41, 41
00898 };
00899
00900 #define yyerrok (yyerrstatus = 0)
00901 #define yyclearin (yychar = YYEMPTY)
00902 #define YYEMPTY (-2)
00903 #define YYEOF 0
00904
00905 #define YYACCEPT goto yyacceptlab
00906 #define YYABORT goto yyabortlab
00907 #define YYERROR goto yyerrorlab
00908
00909
00910
00911
00912
00913
00914 #define YYFAIL goto yyerrlab
00915
00916 #define YYRECOVERING() (!!yyerrstatus)
00917
00918 #define YYBACKUP(Token, Value) \
00919 do \
00920 if (yychar == YYEMPTY && yylen == 1) \
00921 { \
00922 yychar = (Token); \
00923 yylval = (Value); \
00924 yytoken = YYTRANSLATE (yychar); \
00925 YYPOPSTACK (1); \
00926 goto yybackup; \
00927 } \
00928 else \
00929 { \
00930 yyerror (&yylloc, osresult, parserData, YY_("syntax error: cannot back up")); \
00931 YYERROR; \
00932 } \
00933 while (YYID (0))
00934
00935
00936 #define YYTERROR 1
00937 #define YYERRCODE 256
00938
00939
00940
00941
00942
00943
00944 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
00945 #ifndef YYLLOC_DEFAULT
00946 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00947 do \
00948 if (YYID (N)) \
00949 { \
00950 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
00951 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
00952 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
00953 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
00954 } \
00955 else \
00956 { \
00957 (Current).first_line = (Current).last_line = \
00958 YYRHSLOC (Rhs, 0).last_line; \
00959 (Current).first_column = (Current).last_column = \
00960 YYRHSLOC (Rhs, 0).last_column; \
00961 } \
00962 while (YYID (0))
00963 #endif
00964
00965
00966
00967
00968
00969
00970 #ifndef YY_LOCATION_PRINT
00971 # if YYLTYPE_IS_TRIVIAL
00972 # define YY_LOCATION_PRINT(File, Loc) \
00973 fprintf (File, "%d.%d-%d.%d", \
00974 (Loc).first_line, (Loc).first_column, \
00975 (Loc).last_line, (Loc).last_column)
00976 # else
00977 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
00978 # endif
00979 #endif
00980
00981
00982
00983
00984 #ifdef YYLEX_PARAM
00985 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
00986 #else
00987 # define YYLEX yylex (&yylval, &yylloc, scanner)
00988 #endif
00989
00990
00991 #if YYDEBUG
00992
00993 # ifndef YYFPRINTF
00994 # include <stdio.h>
00995 # define YYFPRINTF fprintf
00996 # endif
00997
00998 # define YYDPRINTF(Args) \
00999 do { \
01000 if (yydebug) \
01001 YYFPRINTF Args; \
01002 } while (YYID (0))
01003
01004 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
01005 do { \
01006 if (yydebug) \
01007 { \
01008 YYFPRINTF (stderr, "%s ", Title); \
01009 yy_symbol_print (stderr, \
01010 Type, Value, Location, osresult, parserData); \
01011 YYFPRINTF (stderr, "\n"); \
01012 } \
01013 } while (YYID (0))
01014
01015
01016
01017
01018
01019
01020
01021 #if (defined __STDC__ || defined __C99__FUNC__ \
01022 || defined __cplusplus || defined _MSC_VER)
01023 static void
01024 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
01025 #else
01026 static void
01027 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
01028 FILE *yyoutput;
01029 int yytype;
01030 YYSTYPE const * const yyvaluep;
01031 YYLTYPE const * const yylocationp;
01032 OSResult *osresult;
01033 OSrLParserData *parserData;
01034 #endif
01035 {
01036 if (!yyvaluep)
01037 return;
01038 YYUSE (yylocationp);
01039 YYUSE (osresult);
01040 YYUSE (parserData);
01041 # ifdef YYPRINT
01042 if (yytype < YYNTOKENS)
01043 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01044 # else
01045 YYUSE (yyoutput);
01046 # endif
01047 switch (yytype)
01048 {
01049 default:
01050 break;
01051 }
01052 }
01053
01054
01055
01056
01057
01058
01059 #if (defined __STDC__ || defined __C99__FUNC__ \
01060 || defined __cplusplus || defined _MSC_VER)
01061 static void
01062 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
01063 #else
01064 static void
01065 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
01066 FILE *yyoutput;
01067 int yytype;
01068 YYSTYPE const * const yyvaluep;
01069 YYLTYPE const * const yylocationp;
01070 OSResult *osresult;
01071 OSrLParserData *parserData;
01072 #endif
01073 {
01074 if (yytype < YYNTOKENS)
01075 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01076 else
01077 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01078
01079 YY_LOCATION_PRINT (yyoutput, *yylocationp);
01080 YYFPRINTF (yyoutput, ": ");
01081 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData);
01082 YYFPRINTF (yyoutput, ")");
01083 }
01084
01085
01086
01087
01088
01089
01090 #if (defined __STDC__ || defined __C99__FUNC__ \
01091 || defined __cplusplus || defined _MSC_VER)
01092 static void
01093 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
01094 #else
01095 static void
01096 yy_stack_print (bottom, top)
01097 yytype_int16 *bottom;
01098 yytype_int16 *top;
01099 #endif
01100 {
01101 YYFPRINTF (stderr, "Stack now");
01102 for (; bottom <= top; ++bottom)
01103 YYFPRINTF (stderr, " %d", *bottom);
01104 YYFPRINTF (stderr, "\n");
01105 }
01106
01107 # define YY_STACK_PRINT(Bottom, Top) \
01108 do { \
01109 if (yydebug) \
01110 yy_stack_print ((Bottom), (Top)); \
01111 } while (YYID (0))
01112
01113
01114
01115
01116
01117
01118 #if (defined __STDC__ || defined __C99__FUNC__ \
01119 || defined __cplusplus || defined _MSC_VER)
01120 static void
01121 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, OSResult *osresult, OSrLParserData *parserData)
01122 #else
01123 static void
01124 yy_reduce_print (yyvsp, yylsp, yyrule, osresult, parserData)
01125 YYSTYPE *yyvsp;
01126 YYLTYPE *yylsp;
01127 int yyrule;
01128 OSResult *osresult;
01129 OSrLParserData *parserData;
01130 #endif
01131 {
01132 int yynrhs = yyr2[yyrule];
01133 int yyi;
01134 unsigned long int yylno = yyrline[yyrule];
01135 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
01136 yyrule - 1, yylno);
01137
01138 for (yyi = 0; yyi < yynrhs; yyi++)
01139 {
01140 fprintf (stderr, " $%d = ", yyi + 1);
01141 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
01142 &(yyvsp[(yyi + 1) - (yynrhs)])
01143 , &(yylsp[(yyi + 1) - (yynrhs)]) , osresult, parserData);
01144 fprintf (stderr, "\n");
01145 }
01146 }
01147
01148 # define YY_REDUCE_PRINT(Rule) \
01149 do { \
01150 if (yydebug) \
01151 yy_reduce_print (yyvsp, yylsp, Rule, osresult, parserData); \
01152 } while (YYID (0))
01153
01154
01155
01156 int yydebug;
01157 #else
01158 # define YYDPRINTF(Args)
01159 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
01160 # define YY_STACK_PRINT(Bottom, Top)
01161 # define YY_REDUCE_PRINT(Rule)
01162 #endif
01163
01164
01165
01166 #ifndef YYINITDEPTH
01167 # define YYINITDEPTH 200
01168 #endif
01169
01170
01171
01172
01173
01174
01175
01176
01177 #ifndef YYMAXDEPTH
01178 # define YYMAXDEPTH 10000
01179 #endif
01180
01181
01182
01183 #if YYERROR_VERBOSE
01184
01185 # ifndef yystrlen
01186 # if defined __GLIBC__ && defined _STRING_H
01187 # define yystrlen strlen
01188 # else
01189
01190 #if (defined __STDC__ || defined __C99__FUNC__ \
01191 || defined __cplusplus || defined _MSC_VER)
01192 static YYSIZE_T
01193 yystrlen (const char *yystr)
01194 #else
01195 static YYSIZE_T
01196 yystrlen (yystr)
01197 const char *yystr;
01198 #endif
01199 {
01200 YYSIZE_T yylen;
01201 for (yylen = 0; yystr[yylen]; yylen++)
01202 continue;
01203 return yylen;
01204 }
01205 # endif
01206 # endif
01207
01208 # ifndef yystpcpy
01209 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
01210 # define yystpcpy stpcpy
01211 # else
01212
01213
01214 #if (defined __STDC__ || defined __C99__FUNC__ \
01215 || defined __cplusplus || defined _MSC_VER)
01216 static char *
01217 yystpcpy (char *yydest, const char *yysrc)
01218 #else
01219 static char *
01220 yystpcpy (yydest, yysrc)
01221 char *yydest;
01222 const char *yysrc;
01223 #endif
01224 {
01225 char *yyd = yydest;
01226 const char *yys = yysrc;
01227
01228 while ((*yyd++ = *yys++) != '\0')
01229 continue;
01230
01231 return yyd - 1;
01232 }
01233 # endif
01234 # endif
01235
01236 # ifndef yytnamerr
01237
01238
01239
01240
01241
01242
01243
01244 static YYSIZE_T
01245 yytnamerr (char *yyres, const char *yystr)
01246 {
01247 if (*yystr == '"')
01248 {
01249 YYSIZE_T yyn = 0;
01250 char const *yyp = yystr;
01251
01252 for (;;)
01253 switch (*++yyp)
01254 {
01255 case '\'':
01256 case ',':
01257 goto do_not_strip_quotes;
01258
01259 case '\\':
01260 if (*++yyp != '\\')
01261 goto do_not_strip_quotes;
01262
01263 default:
01264 if (yyres)
01265 yyres[yyn] = *yyp;
01266 yyn++;
01267 break;
01268
01269 case '"':
01270 if (yyres)
01271 yyres[yyn] = '\0';
01272 return yyn;
01273 }
01274 do_not_strip_quotes: ;
01275 }
01276
01277 if (! yyres)
01278 return yystrlen (yystr);
01279
01280 return yystpcpy (yyres, yystr) - yyres;
01281 }
01282 # endif
01283
01284
01285
01286
01287
01288
01289
01290
01291 static YYSIZE_T
01292 yysyntax_error (char *yyresult, int yystate, int yychar)
01293 {
01294 int yyn = yypact[yystate];
01295
01296 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01297 return 0;
01298 else
01299 {
01300 int yytype = YYTRANSLATE (yychar);
01301 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01302 YYSIZE_T yysize = yysize0;
01303 YYSIZE_T yysize1;
01304 int yysize_overflow = 0;
01305 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01306 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01307 int yyx;
01308
01309 # if 0
01310
01311
01312 YY_("syntax error, unexpected %s");
01313 YY_("syntax error, unexpected %s, expecting %s");
01314 YY_("syntax error, unexpected %s, expecting %s or %s");
01315 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01316 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01317 # endif
01318 char *yyfmt;
01319 char const *yyf;
01320 static char const yyunexpected[] = "syntax error, unexpected %s";
01321 static char const yyexpecting[] = ", expecting %s";
01322 static char const yyor[] = " or %s";
01323 char yyformat[sizeof yyunexpected
01324 + sizeof yyexpecting - 1
01325 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01326 * (sizeof yyor - 1))];
01327 char const *yyprefix = yyexpecting;
01328
01329
01330
01331 int yyxbegin = yyn < 0 ? -yyn : 0;
01332
01333
01334 int yychecklim = YYLAST - yyn + 1;
01335 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01336 int yycount = 1;
01337
01338 yyarg[0] = yytname[yytype];
01339 yyfmt = yystpcpy (yyformat, yyunexpected);
01340
01341 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01342 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01343 {
01344 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01345 {
01346 yycount = 1;
01347 yysize = yysize0;
01348 yyformat[sizeof yyunexpected - 1] = '\0';
01349 break;
01350 }
01351 yyarg[yycount++] = yytname[yyx];
01352 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01353 yysize_overflow |= (yysize1 < yysize);
01354 yysize = yysize1;
01355 yyfmt = yystpcpy (yyfmt, yyprefix);
01356 yyprefix = yyor;
01357 }
01358
01359 yyf = YY_(yyformat);
01360 yysize1 = yysize + yystrlen (yyf);
01361 yysize_overflow |= (yysize1 < yysize);
01362 yysize = yysize1;
01363
01364 if (yysize_overflow)
01365 return YYSIZE_MAXIMUM;
01366
01367 if (yyresult)
01368 {
01369
01370
01371
01372 char *yyp = yyresult;
01373 int yyi = 0;
01374 while ((*yyp = *yyf) != '\0')
01375 {
01376 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01377 {
01378 yyp += yytnamerr (yyp, yyarg[yyi++]);
01379 yyf += 2;
01380 }
01381 else
01382 {
01383 yyp++;
01384 yyf++;
01385 }
01386 }
01387 }
01388 return yysize;
01389 }
01390 }
01391 #endif
01392
01393
01394
01395
01396
01397
01398
01399 #if (defined __STDC__ || defined __C99__FUNC__ \
01400 || defined __cplusplus || defined _MSC_VER)
01401 static void
01402 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, OSResult *osresult, OSrLParserData *parserData)
01403 #else
01404 static void
01405 yydestruct (yymsg, yytype, yyvaluep, yylocationp, osresult, parserData)
01406 const char *yymsg;
01407 int yytype;
01408 YYSTYPE *yyvaluep;
01409 YYLTYPE *yylocationp;
01410 OSResult *osresult;
01411 OSrLParserData *parserData;
01412 #endif
01413 {
01414 YYUSE (yyvaluep);
01415 YYUSE (yylocationp);
01416 YYUSE (osresult);
01417 YYUSE (parserData);
01418
01419 if (!yymsg)
01420 yymsg = "Deleting";
01421 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01422
01423 switch (yytype)
01424 {
01425
01426 default:
01427 break;
01428 }
01429 }
01430
01431
01432
01433
01434 #ifdef YYPARSE_PARAM
01435 #if defined __STDC__ || defined __cplusplus
01436 int yyparse (void *YYPARSE_PARAM);
01437 #else
01438 int yyparse ();
01439 #endif
01440 #else
01441 #if defined __STDC__ || defined __cplusplus
01442 int yyparse (OSResult *osresult, OSrLParserData *parserData);
01443 #else
01444 int yyparse ();
01445 #endif
01446 #endif
01447
01448
01449
01450
01451
01452
01453
01454
01455
01456
01457 #ifdef YYPARSE_PARAM
01458 #if (defined __STDC__ || defined __C99__FUNC__ \
01459 || defined __cplusplus || defined _MSC_VER)
01460 int
01461 yyparse (void *YYPARSE_PARAM)
01462 #else
01463 int
01464 yyparse (YYPARSE_PARAM)
01465 void *YYPARSE_PARAM;
01466 #endif
01467 #else
01468 #if (defined __STDC__ || defined __C99__FUNC__ \
01469 || defined __cplusplus || defined _MSC_VER)
01470 int
01471 yyparse (OSResult *osresult, OSrLParserData *parserData)
01472 #else
01473 int
01474 yyparse (osresult, parserData)
01475 OSResult *osresult;
01476 OSrLParserData *parserData;
01477 #endif
01478 #endif
01479 {
01480
01481 int yychar;
01482
01483
01484 YYSTYPE yylval;
01485
01486
01487 int yynerrs;
01488
01489 YYLTYPE yylloc;
01490
01491 int yystate;
01492 int yyn;
01493 int yyresult;
01494
01495 int yyerrstatus;
01496
01497 int yytoken = 0;
01498 #if YYERROR_VERBOSE
01499
01500 char yymsgbuf[128];
01501 char *yymsg = yymsgbuf;
01502 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01503 #endif
01504
01505
01506
01507
01508
01509
01510
01511
01512
01513
01514 yytype_int16 yyssa[YYINITDEPTH];
01515 yytype_int16 *yyss = yyssa;
01516 yytype_int16 *yyssp;
01517
01518
01519 YYSTYPE yyvsa[YYINITDEPTH];
01520 YYSTYPE *yyvs = yyvsa;
01521 YYSTYPE *yyvsp;
01522
01523
01524 YYLTYPE yylsa[YYINITDEPTH];
01525 YYLTYPE *yyls = yylsa;
01526 YYLTYPE *yylsp;
01527
01528 YYLTYPE yyerror_range[2];
01529
01530 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
01531
01532 YYSIZE_T yystacksize = YYINITDEPTH;
01533
01534
01535
01536 YYSTYPE yyval;
01537 YYLTYPE yyloc;
01538
01539
01540
01541 int yylen = 0;
01542
01543 YYDPRINTF ((stderr, "Starting parse\n"));
01544
01545 yystate = 0;
01546 yyerrstatus = 0;
01547 yynerrs = 0;
01548 yychar = YYEMPTY;
01549
01550
01551
01552
01553
01554
01555 yyssp = yyss;
01556 yyvsp = yyvs;
01557 yylsp = yyls;
01558 #if YYLTYPE_IS_TRIVIAL
01559
01560 yylloc.first_line = yylloc.last_line = 1;
01561 yylloc.first_column = yylloc.last_column = 0;
01562 #endif
01563
01564 goto yysetstate;
01565
01566
01567
01568
01569 yynewstate:
01570
01571
01572 yyssp++;
01573
01574 yysetstate:
01575 *yyssp = yystate;
01576
01577 if (yyss + yystacksize - 1 <= yyssp)
01578 {
01579
01580 YYSIZE_T yysize = yyssp - yyss + 1;
01581
01582 #ifdef yyoverflow
01583 {
01584
01585
01586
01587 YYSTYPE *yyvs1 = yyvs;
01588 yytype_int16 *yyss1 = yyss;
01589 YYLTYPE *yyls1 = yyls;
01590
01591
01592
01593
01594
01595 yyoverflow (YY_("memory exhausted"),
01596 &yyss1, yysize * sizeof (*yyssp),
01597 &yyvs1, yysize * sizeof (*yyvsp),
01598 &yyls1, yysize * sizeof (*yylsp),
01599 &yystacksize);
01600 yyls = yyls1;
01601 yyss = yyss1;
01602 yyvs = yyvs1;
01603 }
01604 #else
01605 # ifndef YYSTACK_RELOCATE
01606 goto yyexhaustedlab;
01607 # else
01608
01609 if (YYMAXDEPTH <= yystacksize)
01610 goto yyexhaustedlab;
01611 yystacksize *= 2;
01612 if (YYMAXDEPTH < yystacksize)
01613 yystacksize = YYMAXDEPTH;
01614
01615 {
01616 yytype_int16 *yyss1 = yyss;
01617 union yyalloc *yyptr =
01618 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01619 if (! yyptr)
01620 goto yyexhaustedlab;
01621 YYSTACK_RELOCATE (yyss);
01622 YYSTACK_RELOCATE (yyvs);
01623 YYSTACK_RELOCATE (yyls);
01624 # undef YYSTACK_RELOCATE
01625 if (yyss1 != yyssa)
01626 YYSTACK_FREE (yyss1);
01627 }
01628 # endif
01629 #endif
01630
01631 yyssp = yyss + yysize - 1;
01632 yyvsp = yyvs + yysize - 1;
01633 yylsp = yyls + yysize - 1;
01634
01635 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01636 (unsigned long int) yystacksize));
01637
01638 if (yyss + yystacksize - 1 <= yyssp)
01639 YYABORT;
01640 }
01641
01642 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01643
01644 goto yybackup;
01645
01646
01647
01648
01649 yybackup:
01650
01651
01652
01653
01654
01655 yyn = yypact[yystate];
01656 if (yyn == YYPACT_NINF)
01657 goto yydefault;
01658
01659
01660
01661
01662 if (yychar == YYEMPTY)
01663 {
01664 YYDPRINTF ((stderr, "Reading a token: "));
01665 yychar = YYLEX;
01666 }
01667
01668 if (yychar <= YYEOF)
01669 {
01670 yychar = yytoken = YYEOF;
01671 YYDPRINTF ((stderr, "Now at end of input.\n"));
01672 }
01673 else
01674 {
01675 yytoken = YYTRANSLATE (yychar);
01676 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
01677 }
01678
01679
01680
01681 yyn += yytoken;
01682 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01683 goto yydefault;
01684 yyn = yytable[yyn];
01685 if (yyn <= 0)
01686 {
01687 if (yyn == 0 || yyn == YYTABLE_NINF)
01688 goto yyerrlab;
01689 yyn = -yyn;
01690 goto yyreduce;
01691 }
01692
01693 if (yyn == YYFINAL)
01694 YYACCEPT;
01695
01696
01697
01698 if (yyerrstatus)
01699 yyerrstatus--;
01700
01701
01702 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
01703
01704
01705 if (yychar != YYEOF)
01706 yychar = YYEMPTY;
01707
01708 yystate = yyn;
01709 *++yyvsp = yylval;
01710 *++yylsp = yylloc;
01711 goto yynewstate;
01712
01713
01714
01715
01716
01717 yydefault:
01718 yyn = yydefact[yystate];
01719 if (yyn == 0)
01720 goto yyerrlab;
01721 goto yyreduce;
01722
01723
01724
01725
01726
01727 yyreduce:
01728
01729 yylen = yyr2[yyn];
01730
01731
01732
01733
01734
01735
01736
01737
01738
01739 yyval = yyvsp[1-yylen];
01740
01741
01742 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
01743 YY_REDUCE_PRINT (yyn);
01744 switch (yyn)
01745 {
01746 case 2:
01747
01748 {
01749 if(parserData->numberOfSolutions > 0){
01750 for(int solIdx = 0; solIdx < parserData->numberOfSolutions; solIdx++){
01751 osresult->setSolutionStatus(solIdx, parserData->statusType, parserData->statusDescription);
01752 osresult->setPrimalVariableValues(solIdx, parserData->primalSolution[ solIdx]);
01753 osresult->setNumberOfOtherVariableResult(solIdx, parserData->numberOfOtherVariableResult);
01754 for(int k = 0; k < parserData->numberOfOtherVariableResult; k++){
01755 osresult->setAnOtherVariableResult(solIdx, k, parserData->otherVarVec[ k]->name, parserData->otherVarVec[ k]->description, parserData->otherVarVec[ k]->otherVarText);
01756 }
01757 if( (parserData->dualSolution != NULL) && (parserData->dualSolution[ solIdx] != NULL) ) osresult->setDualVariableValues(solIdx, parserData->dualSolution[ solIdx]);
01758 if( (parserData->objectiveValues != NULL) && (parserData->objectiveValues[ solIdx] != NULL) ) osresult->setObjectiveValues(solIdx, parserData->objectiveValues[ solIdx]);
01759 osresult->setSolutionObjectiveIndex(solIdx, *(parserData->objectiveIdx + solIdx));
01760 }
01761 }
01762 }
01763 break;
01764
01765 case 7:
01766
01767 {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for generalStatus element");}
01768 break;
01769
01770 case 8:
01771
01772 {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for generalStatus element"); parserData->generalStatusTypePresent = false;}
01773 break;
01774
01775 case 11:
01776
01777 { osresult->setGeneralStatusType((yyvsp[(2) - (3)].charval)); parserData->generalStatusTypePresent = true;}
01778 break;
01779
01780 case 12:
01781
01782 { osresult->setGeneralStatusDescription((yyvsp[(2) - (3)].charval)); }
01783 break;
01784
01785 case 15:
01786
01787 {osresult->setServiceURI( (yyvsp[(2) - (3)].charval)); free((yyvsp[(2) - (3)].charval)); parserData->errorText = NULL;}
01788 break;
01789
01790 case 19:
01791
01792 {osresult->setServiceName( (yyvsp[(2) - (3)].charval)); free((yyvsp[(2) - (3)].charval)); parserData->errorText = NULL;}
01793 break;
01794
01795 case 23:
01796
01797 {osresult->setInstanceName( (yyvsp[(2) - (3)].charval)) ; free((yyvsp[(2) - (3)].charval)); parserData->errorText = NULL;}
01798 break;
01799
01800 case 27:
01801
01802 {osresult->setJobID( (yyvsp[(2) - (3)].charval)); free((yyvsp[(2) - (3)].charval)); parserData->errorText = NULL;}
01803 break;
01804
01805 case 31:
01806
01807 {osresult->setGeneralMessage( (yyvsp[(2) - (3)].charval)); free((yyvsp[(2) - (3)].charval)); parserData->errorText = NULL;}
01808 break;
01809
01810 case 40:
01811
01812 {
01813
01814 if(parserData->numberOfSolutions > 0){
01815 if( parserData->numberOfVariables > 0){
01816 parserData->primalSolution = new double* [parserData->numberOfSolutions];
01817 for(int i = 0; i < parserData->numberOfSolutions; i++){
01818 parserData->primalSolution[ i] = new double[ parserData->numberOfVariables];
01819 }
01820 }
01821
01822
01823
01824
01825
01826
01827 if( parserData->numberOfObjectives > 0){
01828 parserData->objectiveValues = new double*[ parserData->numberOfSolutions];
01829 parserData->objectiveIdx = new int[ parserData->numberOfSolutions];
01830 for(int i = 0; i < parserData->numberOfSolutions; i++){
01831 parserData->objectiveValues[ i] = new double[ parserData->numberOfObjectives];
01832 }
01833 }
01834 }
01835 }
01836 break;
01837
01838 case 50:
01839
01840 {parserData->numberOfSolutions = (yyvsp[(2) - (2)].ival); osresult->setSolutionNumber((yyvsp[(2) - (2)].ival));}
01841 break;
01842
01843 case 51:
01844
01845 {parserData->numberOfVariables = (yyvsp[(2) - (2)].ival); osresult->setVariableNumber((yyvsp[(2) - (2)].ival)); }
01846 break;
01847
01848 case 52:
01849
01850 {parserData->numberOfConstraints = (yyvsp[(2) - (2)].ival); osresult->setConstraintNumber((yyvsp[(2) - (2)].ival));}
01851 break;
01852
01853 case 53:
01854
01855 {parserData->numberOfObjectives = (yyvsp[(2) - (2)].ival); osresult->setObjectiveNumber((yyvsp[(2) - (2)].ival));}
01856 break;
01857
01858 case 57:
01859
01860 {parserData->solutionIdx++;}
01861 break;
01862
01863 case 59:
01864
01865 {if((yyvsp[(2) - (3)].ival) >= 0) osrlerror(NULL, NULL, NULL, "objective index must be nonpositive");
01866 *(parserData->objectiveIdx + parserData->solutionIdx) = (yyvsp[(2) - (3)].ival);}
01867 break;
01868
01869 case 60:
01870
01871 {if(parserData->statusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for status element"); osresult->setSolutionStatus(parserData->solutionIdx, parserData->statusType, parserData->statusDescription);}
01872 break;
01873
01874 case 61:
01875
01876 {if(parserData->statusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for status element"); parserData->statusTypePresent = false; osresult->setSolutionStatus(parserData->solutionIdx, parserData->statusType, parserData->statusDescription);}
01877 break;
01878
01879 case 64:
01880
01881 {parserData->statusType = (yyvsp[(2) - (3)].charval); parserData->statusTypePresent = true;}
01882 break;
01883
01884 case 65:
01885
01886 {parserData->statusDescription = (yyvsp[(2) - (3)].charval);}
01887 break;
01888
01889 case 73:
01890
01891 {
01892 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfVariables - 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
01893 *(parserData->primalSolution[parserData->solutionIdx] + parserData->kounter ) = (yyvsp[(4) - (5)].dval);
01894 }
01895 break;
01896
01897 case 74:
01898
01899 {
01900 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfVariables - 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
01901 *(parserData->primalSolution[parserData->solutionIdx] + parserData->kounter) = (yyvsp[(4) - (5)].ival);
01902 }
01903 break;
01904
01905 case 77:
01906
01907 {
01908
01909 parserData->otherVarStruct = new OtherVariableResultStruct();
01910 parserData->otherVarStruct->otherVarText = new std::string[parserData->numberOfVariables];}
01911 break;
01912
01913 case 78:
01914
01915 {if(parserData->otherNamePresent == false) osrlerror(NULL, NULL, NULL, "other element requires name attribute");
01916 parserData->otherNamePresent = false;
01917 }
01918 break;
01919
01920 case 79:
01921
01922 {parserData->otherVarVec.push_back( parserData->otherVarStruct); parserData->numberOfOtherVariableResult++; }
01923 break;
01924
01925 case 82:
01926
01927 {
01928 std::ostringstream outStr;
01929 outStr << (yyvsp[(4) - (5)].charval);
01930 parserData->otherVarStruct->otherVarText[parserData->kounter] = outStr.str();
01931 free((yyvsp[(4) - (5)].charval)); parserData->errorText = NULL;
01932 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfVariables - 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
01933 }
01934 break;
01935
01936 case 83:
01937
01938 {
01939 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfVariables - 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
01940 std::ostringstream outStr;
01941 outStr << (yyvsp[(4) - (5)].dval);
01942 parserData->otherVarStruct->otherVarText[parserData->kounter] = outStr.str();
01943 }
01944 break;
01945
01946 case 84:
01947
01948 {
01949 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfVariables - 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
01950 std::ostringstream outStr;
01951 outStr << (yyvsp[(4) - (5)].ival);
01952 parserData->otherVarStruct->otherVarText[parserData->kounter] = outStr.str();
01953 }
01954 break;
01955
01956 case 87:
01957
01958 { parserData->otherNamePresent = true; parserData->otherVarStruct->name = (yyvsp[(2) - (3)].charval);}
01959 break;
01960
01961 case 88:
01962
01963 { parserData->otherVarStruct->description = (yyvsp[(2) - (3)].charval);}
01964 break;
01965
01966 case 93:
01967
01968 { *(parserData->objectiveValues[parserData->solutionIdx] + (parserData->kounter + parserData->numberOfObjectives)) = (yyvsp[(4) - (5)].dval);
01969 }
01970 break;
01971
01972 case 94:
01973
01974 { *(parserData->objectiveValues[parserData->solutionIdx] + (parserData->kounter + parserData->numberOfObjectives)) = (yyvsp[(4) - (5)].ival);}
01975 break;
01976
01977 case 96:
01978
01979 {
01980 if( parserData->numberOfConstraints > 0){
01981 parserData->dualSolution = new double*[ parserData->numberOfSolutions];
01982 for(int i = 0; i < parserData->numberOfSolutions; i++){
01983 parserData->dualSolution[ i] = new double[ parserData->numberOfConstraints];
01984 }
01985 }
01986 }
01987 break;
01988
01989 case 100:
01990
01991 {
01992 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfConstraints- 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of constraints");
01993 *(parserData->dualSolution[parserData->solutionIdx] + parserData->kounter) = (yyvsp[(4) - (5)].dval);}
01994 break;
01995
01996 case 101:
01997
01998 {
01999 if(parserData->kounter < 0 || parserData->kounter > parserData->numberOfConstraints- 1) osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of constraints");
02000 *(parserData->dualSolution[parserData->solutionIdx] + parserData->kounter) = (yyvsp[(4) - (5)].ival);}
02001 break;
02002
02003 case 102:
02004
02005 {parserData->kounter = (yyvsp[(2) - (3)].ival);}
02006 break;
02007
02008
02009
02010
02011 default: break;
02012 }
02013 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
02014
02015 YYPOPSTACK (yylen);
02016 yylen = 0;
02017 YY_STACK_PRINT (yyss, yyssp);
02018
02019 *++yyvsp = yyval;
02020 *++yylsp = yyloc;
02021
02022
02023
02024
02025
02026 yyn = yyr1[yyn];
02027
02028 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02029 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02030 yystate = yytable[yystate];
02031 else
02032 yystate = yydefgoto[yyn - YYNTOKENS];
02033
02034 goto yynewstate;
02035
02036
02037
02038
02039
02040 yyerrlab:
02041
02042 if (!yyerrstatus)
02043 {
02044 ++yynerrs;
02045 #if ! YYERROR_VERBOSE
02046 yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
02047 #else
02048 {
02049 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
02050 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
02051 {
02052 YYSIZE_T yyalloc = 2 * yysize;
02053 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
02054 yyalloc = YYSTACK_ALLOC_MAXIMUM;
02055 if (yymsg != yymsgbuf)
02056 YYSTACK_FREE (yymsg);
02057 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
02058 if (yymsg)
02059 yymsg_alloc = yyalloc;
02060 else
02061 {
02062 yymsg = yymsgbuf;
02063 yymsg_alloc = sizeof yymsgbuf;
02064 }
02065 }
02066
02067 if (0 < yysize && yysize <= yymsg_alloc)
02068 {
02069 (void) yysyntax_error (yymsg, yystate, yychar);
02070 yyerror (&yylloc, osresult, parserData, yymsg);
02071 }
02072 else
02073 {
02074 yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
02075 if (yysize != 0)
02076 goto yyexhaustedlab;
02077 }
02078 }
02079 #endif
02080 }
02081
02082 yyerror_range[0] = yylloc;
02083
02084 if (yyerrstatus == 3)
02085 {
02086
02087
02088
02089 if (yychar <= YYEOF)
02090 {
02091
02092 if (yychar == YYEOF)
02093 YYABORT;
02094 }
02095 else
02096 {
02097 yydestruct ("Error: discarding",
02098 yytoken, &yylval, &yylloc, osresult, parserData);
02099 yychar = YYEMPTY;
02100 }
02101 }
02102
02103
02104
02105 goto yyerrlab1;
02106
02107
02108
02109
02110
02111 yyerrorlab:
02112
02113
02114
02115
02116 if ( 0)
02117 goto yyerrorlab;
02118
02119 yyerror_range[0] = yylsp[1-yylen];
02120
02121
02122 YYPOPSTACK (yylen);
02123 yylen = 0;
02124 YY_STACK_PRINT (yyss, yyssp);
02125 yystate = *yyssp;
02126 goto yyerrlab1;
02127
02128
02129
02130
02131
02132 yyerrlab1:
02133 yyerrstatus = 3;
02134
02135 for (;;)
02136 {
02137 yyn = yypact[yystate];
02138 if (yyn != YYPACT_NINF)
02139 {
02140 yyn += YYTERROR;
02141 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02142 {
02143 yyn = yytable[yyn];
02144 if (0 < yyn)
02145 break;
02146 }
02147 }
02148
02149
02150 if (yyssp == yyss)
02151 YYABORT;
02152
02153 yyerror_range[0] = *yylsp;
02154 yydestruct ("Error: popping",
02155 yystos[yystate], yyvsp, yylsp, osresult, parserData);
02156 YYPOPSTACK (1);
02157 yystate = *yyssp;
02158 YY_STACK_PRINT (yyss, yyssp);
02159 }
02160
02161 if (yyn == YYFINAL)
02162 YYACCEPT;
02163
02164 *++yyvsp = yylval;
02165
02166 yyerror_range[1] = yylloc;
02167
02168
02169 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
02170 *++yylsp = yyloc;
02171
02172
02173 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
02174
02175 yystate = yyn;
02176 goto yynewstate;
02177
02178
02179
02180
02181
02182 yyacceptlab:
02183 yyresult = 0;
02184 goto yyreturn;
02185
02186
02187
02188
02189 yyabortlab:
02190 yyresult = 1;
02191 goto yyreturn;
02192
02193 #ifndef yyoverflow
02194
02195
02196
02197 yyexhaustedlab:
02198 yyerror (&yylloc, osresult, parserData, YY_("memory exhausted"));
02199 yyresult = 2;
02200
02201 #endif
02202
02203 yyreturn:
02204 if (yychar != YYEOF && yychar != YYEMPTY)
02205 yydestruct ("Cleanup: discarding lookahead",
02206 yytoken, &yylval, &yylloc, osresult, parserData);
02207
02208
02209 YYPOPSTACK (yylen);
02210 YY_STACK_PRINT (yyss, yyssp);
02211 while (yyssp != yyss)
02212 {
02213 yydestruct ("Cleanup: popping",
02214 yystos[*yyssp], yyvsp, yylsp, osresult, parserData);
02215 YYPOPSTACK (1);
02216 }
02217 #ifndef yyoverflow
02218 if (yyss != yyssa)
02219 YYSTACK_FREE (yyss);
02220 #endif
02221 #if YYERROR_VERBOSE
02222 if (yymsg != yymsgbuf)
02223 YYSTACK_FREE (yymsg);
02224 #endif
02225
02226 return YYID (yyresult);
02227 }
02228
02229
02230
02231
02232
02233 void osrlerror(YYLTYPE* mytype, OSResult *osresult, OSrLParserData* parserData, const char* errormsg )
02234 {
02235 std::ostringstream outStr;
02236 std::string error = errormsg;
02237 error = "Input is either not valid or well formed: " + error;
02238 outStr << error << std::endl;
02239 outStr << "See line number: " << osrlget_lineno( scanner) << std::endl;
02240 outStr << "The offending text is: " << osrlget_text ( scanner ) << std::endl;
02241 error = outStr.str();
02242
02243
02244
02245 throw ErrorClass( error);
02246 }
02247
02248 void yygetOSResult(const char *parsestring, OSResult *osresult, OSrLParserData *parserData) throw(ErrorClass){
02249 try{
02250 osrl_scan_string( parsestring, scanner);
02251 osrlset_lineno (1 , scanner );
02252
02253
02254
02255 if( osrlparse( osresult, parserData) != 0) {
02256
02257 throw ErrorClass( "Error parsing the OSrL");
02258 }
02259 }
02260 catch(const ErrorClass& eclass){
02261 throw ErrorClass( eclass.errormsg);
02262 }
02263 }
02264
02265