OSParseosrl.tab.cpp
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 2.3. */
2 
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6  Free Software Foundation, Inc.
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2, or (at your option)
11  any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  Boston, MA 02110-1301, USA. */
22 
23 /* As a special exception, you may create a larger work that contains
24  part or all of the Bison parser skeleton and distribute that work
25  under terms of your choice, so long as that work isn't itself a
26  parser generator using the skeleton or a modified version thereof
27  as a parser skeleton. Alternatively, if you modify or redistribute
28  the parser skeleton itself, you may (at your option) remove this
29  special exception, which will cause the skeleton and the resulting
30  Bison output files to be licensed under the GNU General Public
31  License without this special exception.
32 
33  This special exception was added by the Free Software Foundation in
34  version 2.2 of Bison. */
35 
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37  simplifying the original so-called "semantic" parser. */
38 
39 /* All symbols defined below should begin with yy or YY, to avoid
40  infringing on user name space. This should be done even for local
41  variables, as they might otherwise be expanded by user macros.
42  There are some unavoidable exceptions within include files to
43  define necessary library symbols; they are noted "INFRINGES ON
44  USER NAME SPACE" below. */
45 
46 /* Identify Bison output. */
47 #define YYBISON 1
48 
49 /* Bison version. */
50 #define YYBISON_VERSION "2.3"
51 
52 /* Skeleton name. */
53 #define YYSKELETON_NAME "yacc.c"
54 
55 /* Pure parsers. */
56 #define YYPURE 1
57 
58 /* Using locations. */
59 #define YYLSP_NEEDED 1
60 
61 /* Substitute the variable and function names. */
62 #define yyparse osrlparse
63 #define yylex osrllex
64 #define yyerror osrlerror
65 #define yylval osrllval
66 #define yychar osrlchar
67 #define yydebug osrldebug
68 #define yynerrs osrlnerrs
69 #define yylloc osrllloc
70 
71 /* Tokens. */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74  /* Put the tokens into the symbol table, so that GDB and other debuggers
75  know about them. */
76  enum yytokentype {
78  ELEMENTTEXT = 259,
79  INTEGER = 260,
80  DOUBLE = 261,
81  QUOTE = 262,
82  TWOQUOTES = 263,
83  GREATERTHAN = 264,
84  ENDOFELEMENT = 265,
85  OSRLSTART = 266,
88  OSRLEND = 269,
89  GENERALSTART = 270,
90  GENERALEND = 271,
91  SYSTEMSTART = 272,
92  SYSTEMEND = 273,
93  SERVICESTART = 274,
94  SERVICEEND = 275,
95  JOBSTART = 276,
96  JOBEND = 277,
107  JOBIDSTART = 288,
108  JOBIDEND = 289,
112  TIMESTART = 293,
113  TIMEEND = 294,
117  SOLUTIONEND = 298,
118  VALUESSTART = 299,
119  VALUESEND = 300,
124  VARSTART = 305,
125  VAREND = 306,
128  OBJSTART = 309,
129  OBJEND = 310,
132  CONSTART = 313,
133  CONEND = 314,
134  STATUSSTART = 315,
135  STATUSEND = 316,
139  MESSAGEEND = 320,
141  OTHERSTART = 322,
142  OTHEREND = 323,
155  IDXATT = 336,
156  TYPEATT = 337,
160  NAMEATT = 341,
162  CATEGORYATT = 343,
164  UNITATT = 345,
166  VALUEATT = 347,
168  DUMMY = 349
169  };
170 #endif
171 /* Tokens. */
172 #define ATTRIBUTETEXT 258
173 #define ELEMENTTEXT 259
174 #define INTEGER 260
175 #define DOUBLE 261
176 #define QUOTE 262
177 #define TWOQUOTES 263
178 #define GREATERTHAN 264
179 #define ENDOFELEMENT 265
180 #define OSRLSTART 266
181 #define OSRLSTARTEMPTY 267
182 #define OSRLATTRIBUTETEXT 268
183 #define OSRLEND 269
184 #define GENERALSTART 270
185 #define GENERALEND 271
186 #define SYSTEMSTART 272
187 #define SYSTEMEND 273
188 #define SERVICESTART 274
189 #define SERVICEEND 275
190 #define JOBSTART 276
191 #define JOBEND 277
192 #define SERVICEURISTARTANDEND 278
193 #define SERVICEURISTART 279
194 #define SERVICEURIEND 280
195 #define SERVICENAMESTARTANDEND 281
196 #define SERVICENAMESTART 282
197 #define SERVICENAMEEND 283
198 #define INSTANCENAMESTARTANDEND 284
199 #define INSTANCENAMESTART 285
200 #define INSTANCENAMEEND 286
201 #define JOBIDSTARTANDEND 287
202 #define JOBIDSTART 288
203 #define JOBIDEND 289
204 #define TIMINGINFORMATIONSTART 290
205 #define TIMINGINFORMATIONEND 291
206 #define TIMESTARTANDEND 292
207 #define TIMESTART 293
208 #define TIMEEND 294
209 #define OPTIMIZATIONSTART 295
210 #define OPTIMIZATIONEND 296
211 #define SOLUTIONSTART 297
212 #define SOLUTIONEND 298
213 #define VALUESSTART 299
214 #define VALUESEND 300
215 #define DUALVALUESSTART 301
216 #define DUALVALUESEND 302
217 #define VARIABLESSTART 303
218 #define VARIABLESEND 304
219 #define VARSTART 305
220 #define VAREND 306
221 #define OBJECTIVESSTART 307
222 #define OBJECTIVESEND 308
223 #define OBJSTART 309
224 #define OBJEND 310
225 #define CONSTRAINTSSTART 311
226 #define CONSTRAINTSEND 312
227 #define CONSTART 313
228 #define CONEND 314
229 #define STATUSSTART 315
230 #define STATUSEND 316
231 #define GENERALSTATUSSTART 317
232 #define GENERALSTATUSEND 318
233 #define MESSAGESTART 319
234 #define MESSAGEEND 320
235 #define MESSAGESTARTANDEND 321
236 #define OTHERSTART 322
237 #define OTHEREND 323
238 #define NUMBEROFTIMESATT 324
239 #define NUMBEROFSOLUTIONSATT 325
240 #define NUMBEROFVARIABLESATT 326
241 #define NUMBEROFCONSTRAINTSATT 327
242 #define NUMBEROFOBJECTIVESATT 328
243 #define NUMBEROFOTHERVARIABLERESULTSATT 329
244 #define NUMBEROFOTHEROBJECTIVERESULTSATT 330
245 #define NUMBEROFOTHERCONSTRAINTRESULTSATT 331
246 #define NUMBEROFVARATT 332
247 #define NUMBEROFOBJATT 333
248 #define NUMBEROFCONATT 334
249 #define TARGETOBJECTIVEIDXATT 335
250 #define IDXATT 336
251 #define TYPEATT 337
252 #define EMPTYTYPEATT 338
253 #define DESCRIPTIONATT 339
254 #define EMPTYDESCRIPTIONATT 340
255 #define NAMEATT 341
256 #define EMPTYNAMEATT 342
257 #define CATEGORYATT 343
258 #define EMPTYCATEGORYATT 344
259 #define UNITATT 345
260 #define EMPTYUNITATT 346
261 #define VALUEATT 347
262 #define EMPTYVALUEATT 348
263 #define DUMMY 349
264 
265 
266 
267 
268 /* Copy the first part of user declarations. */
269 
270 
271 
272 
273 #include "OSDataStructures.h"
274 #include "OSMathUtil.h"
275 #include "OSParameters.h"
276 #include "OSConfig.h"
277 #include "OSErrorClass.h"
278 #include "OSResult.h"
279 #include "OSrLParserData.h"
280 #include <iostream>
281 #include <sstream>
282 #include <stdio.h>
283 
284 
286 YY_BUFFER_STATE osrl_scan_string (const char *yy_str , void* yyscanner );
287 int osrllex_init(void** ptr_yy_globals);
288 int osrllex_destroy (void* yyscanner );
289 int osrlget_lineno( void* yyscanner);
290 char *osrlget_text (void* yyscanner );
291 void osrlset_lineno (int line_number , void* yyscanner );
292 void osrlset_extra (OSrLParserData* parserData , void* yyscanner );
293 void yygetOSResult(const char *ch, OSResult* m_osresult, OSrLParserData *m_parserData ) throw(ErrorClass);
294 
295 
296 
297 
298 /* Enabling traces. */
299 #ifndef YYDEBUG
300 # define YYDEBUG 0
301 #endif
302 
303 /* Enabling verbose error messages. */
304 #ifdef YYERROR_VERBOSE
305 # undef YYERROR_VERBOSE
306 # define YYERROR_VERBOSE 1
307 #else
308 # define YYERROR_VERBOSE 0
309 #endif
310 
311 /* Enabling the token table. */
312 #ifndef YYTOKEN_TABLE
313 # define YYTOKEN_TABLE 0
314 #endif
315 
316 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
317 typedef union YYSTYPE
318 
319 {
320  double dval;
321  int ival;
322  char* sval;
323 }
324 /* Line 187 of yacc.c. */
325 
326  YYSTYPE;
327 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
328 # define YYSTYPE_IS_DECLARED 1
329 # define YYSTYPE_IS_TRIVIAL 1
330 #endif
331 
332 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
333 typedef struct YYLTYPE
334 {
335  int first_line;
336  int first_column;
337  int last_line;
338  int last_column;
339 } YYLTYPE;
340 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
341 # define YYLTYPE_IS_DECLARED 1
342 # define YYLTYPE_IS_TRIVIAL 1
343 #endif
344 
345 
346 /* Copy the second part of user declarations. */
347 
348 
349 
350 void osrlerror(YYLTYPE* type, OSResult *osresult, OSrLParserData *parserData ,const char* errormsg ) ;
351 int osrllex(YYSTYPE* lvalp, YYLTYPE* llocp, void* scanner);
352 
353 #define scanner parserData->scanner
354 
355 
356 /* Line 216 of yacc.c. */
357 
358 
359 #ifdef short
360 # undef short
361 #endif
362 
363 #ifdef YYTYPE_UINT8
364 typedef YYTYPE_UINT8 yytype_uint8;
365 #else
366 typedef unsigned char yytype_uint8;
367 #endif
368 
369 #ifdef YYTYPE_INT8
370 typedef YYTYPE_INT8 yytype_int8;
371 #elif (defined __STDC__ || defined __C99__FUNC__ \
372  || defined __cplusplus || defined _MSC_VER)
373 typedef signed char yytype_int8;
374 #else
375 typedef short int yytype_int8;
376 #endif
377 
378 #ifdef YYTYPE_UINT16
379 typedef YYTYPE_UINT16 yytype_uint16;
380 #else
381 typedef unsigned short int yytype_uint16;
382 #endif
383 
384 #ifdef YYTYPE_INT16
385 typedef YYTYPE_INT16 yytype_int16;
386 #else
387 typedef short int yytype_int16;
388 #endif
389 
390 #ifndef YYSIZE_T
391 # ifdef __SIZE_TYPE__
392 # define YYSIZE_T __SIZE_TYPE__
393 # elif defined size_t
394 # define YYSIZE_T size_t
395 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
396  || defined __cplusplus || defined _MSC_VER)
397 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
398 # define YYSIZE_T size_t
399 # else
400 # define YYSIZE_T unsigned int
401 # endif
402 #endif
403 
404 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
405 
406 #ifndef YY_
407 # if YYENABLE_NLS
408 # if ENABLE_NLS
409 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
410 # define YY_(msgid) dgettext ("bison-runtime", msgid)
411 # endif
412 # endif
413 # ifndef YY_
414 # define YY_(msgid) msgid
415 # endif
416 #endif
417 
418 /* Suppress unused-variable warnings by "using" E. */
419 #if ! defined lint || defined __GNUC__
420 # define YYUSE(e) ((void) (e))
421 #else
422 # define YYUSE(e) /* empty */
423 #endif
424 
425 /* Identity function, used to suppress warnings about constant conditions. */
426 #ifndef lint
427 # define YYID(n) (n)
428 #else
429 #if (defined __STDC__ || defined __C99__FUNC__ \
430  || defined __cplusplus || defined _MSC_VER)
431 static int
432 YYID (int i)
433 #else
434 static int
435 YYID (i)
436  int i;
437 #endif
438 {
439  return i;
440 }
441 #endif
442 
443 #if ! defined yyoverflow || YYERROR_VERBOSE
444 
445 /* The parser invokes alloca or malloc; define the necessary symbols. */
446 
447 # ifdef YYSTACK_USE_ALLOCA
448 # if YYSTACK_USE_ALLOCA
449 # ifdef __GNUC__
450 # define YYSTACK_ALLOC __builtin_alloca
451 # elif defined __BUILTIN_VA_ARG_INCR
452 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
453 # elif defined _AIX
454 # define YYSTACK_ALLOC __alloca
455 # elif defined _MSC_VER
456 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
457 # define alloca _alloca
458 # else
459 # define YYSTACK_ALLOC alloca
460 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
461  || defined __cplusplus || defined _MSC_VER)
462 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
463 # ifndef _STDLIB_H
464 # define _STDLIB_H 1
465 # endif
466 # endif
467 # endif
468 # endif
469 # endif
470 
471 # ifdef YYSTACK_ALLOC
472  /* Pacify GCC's `empty if-body' warning. */
473 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
474 # ifndef YYSTACK_ALLOC_MAXIMUM
475  /* The OS might guarantee only one guard page at the bottom of the stack,
476  and a page size can be as small as 4096 bytes. So we cannot safely
477  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
478  to allow for a few compiler-allocated temporary stack slots. */
479 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
480 # endif
481 # else
482 # define YYSTACK_ALLOC YYMALLOC
483 # define YYSTACK_FREE YYFREE
484 # ifndef YYSTACK_ALLOC_MAXIMUM
485 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
486 # endif
487 # if (defined __cplusplus && ! defined _STDLIB_H \
488  && ! ((defined YYMALLOC || defined malloc) \
489  && (defined YYFREE || defined free)))
490 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
491 # ifndef _STDLIB_H
492 # define _STDLIB_H 1
493 # endif
494 # endif
495 # ifndef YYMALLOC
496 # define YYMALLOC malloc
497 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
498  || defined __cplusplus || defined _MSC_VER)
499 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
500 # endif
501 # endif
502 # ifndef YYFREE
503 # define YYFREE free
504 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
505  || defined __cplusplus || defined _MSC_VER)
506 void free (void *); /* INFRINGES ON USER NAME SPACE */
507 # endif
508 # endif
509 # endif
510 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
511 
512 
513 #if (! defined yyoverflow \
514  && (! defined __cplusplus \
515  || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
516  && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
517 
518 /* A type that is properly aligned for any stack member. */
519 union yyalloc
520 {
521  yytype_int16 yyss;
524 };
525 
526 /* The size of the maximum gap between one aligned stack and the next. */
527 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
528 
529 /* The size of an array large to enough to hold all stacks, each with
530  N elements. */
531 # define YYSTACK_BYTES(N) \
532  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
533  + 2 * YYSTACK_GAP_MAXIMUM)
534 
535 /* Copy COUNT objects from FROM to TO. The source and destination do
536  not overlap. */
537 # ifndef YYCOPY
538 # if defined __GNUC__ && 1 < __GNUC__
539 # define YYCOPY(To, From, Count) \
540  __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
541 # else
542 # define YYCOPY(To, From, Count) \
543  do \
544  { \
545  YYSIZE_T yyi; \
546  for (yyi = 0; yyi < (Count); yyi++) \
547  (To)[yyi] = (From)[yyi]; \
548  } \
549  while (YYID (0))
550 # endif
551 # endif
552 
553 /* Relocate STACK from its old location to the new one. The
554  local variables YYSIZE and YYSTACKSIZE give the old and new number of
555  elements in the stack, and YYPTR gives the new location of the
556  stack. Advance YYPTR to a properly aligned location for the next
557  stack. */
558 # define YYSTACK_RELOCATE(Stack) \
559  do \
560  { \
561  YYSIZE_T yynewbytes; \
562  YYCOPY (&yyptr->Stack, Stack, yysize); \
563  Stack = &yyptr->Stack; \
564  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
565  yyptr += yynewbytes / sizeof (*yyptr); \
566  } \
567  while (YYID (0))
568 
569 #endif
570 
571 /* YYFINAL -- State number of the termination state. */
572 #define YYFINAL 6
573 /* YYLAST -- Last index in YYTABLE. */
574 #define YYLAST 252
575 
576 /* YYNTOKENS -- Number of terminals. */
577 #define YYNTOKENS 99
578 /* YYNNTS -- Number of nonterminals. */
579 #define YYNNTS 80
580 /* YYNRULES -- Number of rules. */
581 #define YYNRULES 160
582 /* YYNRULES -- Number of states. */
583 #define YYNSTATES 299
584 
585 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
586 #define YYUNDEFTOK 2
587 #define YYMAXUTOK 349
588 
589 #define YYTRANSLATE(YYX) \
590  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
591 
592 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
593 static const yytype_uint8 yytranslate[] =
594 {
595  0, 2, 2, 2, 2, 2, 2, 2, 2, 96,
596  98, 2, 2, 97, 2, 2, 2, 2, 2, 2,
597  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
598  2, 2, 95, 2, 2, 2, 2, 2, 2, 2,
599  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
600  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
601  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
602  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
603  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
604  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
605  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
606  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
607  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
608  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
609  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
610  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
611  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
612  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
613  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
614  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
615  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
616  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
617  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
618  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
619  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
620  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
621  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
622  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
623  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
624  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
625  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
626  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
627  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
628  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
629  85, 86, 87, 88, 89, 90, 91, 92, 93, 94
630 };
631 
632 #if YYDEBUG
633 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
634  YYRHS. */
635 static const yytype_uint16 yyprhs[] =
636 {
637  0, 0, 3, 11, 14, 18, 19, 28, 33, 37,
638  39, 42, 46, 48, 52, 54, 55, 57, 61, 64,
639  65, 67, 71, 74, 75, 77, 81, 84, 85, 87,
640  91, 94, 95, 97, 101, 104, 105, 108, 109, 112,
641  113, 117, 118, 122, 127, 129, 133, 134, 137, 139,
642  145, 146, 149, 151, 153, 155, 157, 161, 163, 167,
643  169, 173, 175, 179, 181, 183, 185, 186, 187, 192,
644  193, 197, 199, 202, 203, 206, 209, 212, 215, 218,
645  222, 226, 230, 234, 235, 238, 248, 249, 254, 259,
646  263, 265, 268, 272, 274, 278, 280, 281, 285, 288,
647  289, 300, 301, 306, 311, 313, 316, 322, 324, 326,
648  327, 330, 336, 338, 339, 342, 344, 346, 348, 350,
649  355, 357, 361, 363, 367, 371, 372, 375, 381, 383,
650  385, 387, 389, 390, 400, 405, 406, 409, 415, 421,
651  422, 423, 434, 439, 441, 444, 450, 456, 460, 461,
652  463, 464, 466, 468, 471, 474, 476, 478, 480, 482,
653  483
654 };
655 
656 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
657 static const yytype_int16 yyrhs[] =
658 {
659  100, 0, -1, 101, 102, 111, 112, 113, 126, 14,
660  -1, 11, 9, -1, 11, 13, 9, -1, -1, 15,
661  103, 106, 107, 108, 109, 110, 16, -1, 62, 104,
662  9, 63, -1, 62, 104, 10, -1, 105, -1, 104,
663  105, -1, 82, 3, 176, -1, 83, -1, 84, 3,
664  176, -1, 85, -1, -1, 23, -1, 24, 4, 25,
665  -1, 24, 25, -1, -1, 26, -1, 27, 4, 28,
666  -1, 27, 28, -1, -1, 29, -1, 30, 4, 31,
667  -1, 30, 31, -1, -1, 32, -1, 33, 4, 34,
668  -1, 33, 34, -1, -1, 66, -1, 64, 4, 65,
669  -1, 64, 65, -1, -1, 17, 18, -1, -1, 19,
670  20, -1, -1, 21, 114, 22, -1, -1, 35, 115,
671  116, -1, 69, 7, 5, 7, -1, 10, -1, 9,
672  117, 36, -1, -1, 117, 118, -1, 37, -1, 38,
673  119, 9, 125, 39, -1, -1, 119, 120, -1, 121,
674  -1, 122, -1, 123, -1, 124, -1, 82, 3, 7,
675  -1, 83, -1, 88, 3, 7, -1, 89, -1, 90,
676  3, 7, -1, 91, -1, 84, 3, 7, -1, 85,
677  -1, 6, -1, 5, -1, -1, -1, 40, 128, 127,
678  41, -1, -1, 131, 129, 130, -1, 10, -1, 9,
679  137, -1, -1, 131, 132, -1, 133, 176, -1, 134,
680  176, -1, 135, 176, -1, 136, 176, -1, 70, 176,
681  5, -1, 71, 176, 5, -1, 72, 176, 5, -1,
682  73, 176, 5, -1, -1, 137, 138, -1, 42, 139,
683  9, 140, 143, 144, 163, 167, 175, -1, -1, 80,
684  176, 5, 176, -1, 60, 141, 9, 61, -1, 60,
685  141, 10, -1, 142, -1, 141, 142, -1, 82, 3,
686  176, -1, 83, -1, 84, 3, 176, -1, 85, -1,
687  -1, 64, 4, 65, -1, 64, 65, -1, -1, 48,
688  145, 9, 44, 146, 9, 147, 45, 150, 49, -1,
689  -1, 74, 176, 5, 176, -1, 77, 176, 5, 176,
690  -1, 148, -1, 147, 148, -1, 50, 172, 9, 149,
691  51, -1, 5, -1, 6, -1, -1, 150, 151, -1,
692  152, 153, 9, 159, 68, -1, 67, -1, -1, 154,
693  153, -1, 155, -1, 156, -1, 157, -1, 158, -1,
694  77, 176, 5, 176, -1, 93, -1, 92, 3, 176,
695  -1, 87, -1, 86, 3, 176, -1, 84, 3, 176,
696  -1, -1, 160, 159, -1, 162, 172, 9, 161, 51,
697  -1, 4, -1, 5, -1, 6, -1, 50, -1, -1,
698  52, 9, 44, 164, 9, 165, 45, 173, 53, -1,
699  78, 176, 5, 176, -1, -1, 165, 166, -1, 54,
700  172, 9, 6, 55, -1, 54, 172, 9, 5, 55,
701  -1, -1, -1, 56, 9, 46, 169, 168, 9, 170,
702  47, 174, 57, -1, 79, 176, 5, 176, -1, 171,
703  -1, 170, 171, -1, 58, 172, 9, 6, 59, -1,
704  58, 172, 9, 5, 59, -1, 81, 5, 176, -1,
705  -1, 94, -1, -1, 94, -1, 43, -1, 94, 43,
706  -1, 178, 7, -1, 95, -1, 96, -1, 97, -1,
707  98, -1, -1, 178, 177, -1
708 };
709 
710 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
711 static const yytype_uint16 yyrline[] =
712 {
713  0, 116, 116, 119, 120, 124, 124, 126, 127, 129,
714  130, 132, 133, 134, 135, 138, 139, 140, 141, 144,
715  145, 146, 147, 149, 150, 151, 152, 154, 155, 156,
716  157, 159, 160, 161, 162, 164, 164, 166, 166, 168,
717  168, 170, 171, 173, 179, 179, 181, 181, 183, 184,
718  196, 196, 198, 198, 198, 198, 200, 201, 203, 204,
719  206, 207, 209, 210, 213, 214, 218, 218, 218, 221,
720  220, 248, 249, 251, 252, 254, 255, 256, 257, 261,
721  263, 265, 267, 271, 272, 275, 282, 283, 286, 287,
722  290, 291, 293, 294, 295, 296, 298, 299, 301, 305,
723  306, 309, 310, 321, 327, 328, 330, 349, 350, 353,
724  354, 356, 401, 410, 413, 415, 415, 415, 415, 417,
725  423, 424, 428, 432, 437, 445, 446, 448, 469, 470,
726  471, 473, 478, 479, 481, 483, 484, 486, 488, 491,
727  493, 492, 504, 506, 507, 509, 512, 519, 525, 526,
728  528, 529, 531, 532, 538, 540, 541, 542, 543, 545,
729  546
730 };
731 #endif
732 
733 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
734 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
735  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
736 static const char *const yytname[] =
737 {
738  "$end", "error", "$undefined", "ATTRIBUTETEXT", "ELEMENTTEXT",
739  "INTEGER", "DOUBLE", "QUOTE", "TWOQUOTES", "GREATERTHAN", "ENDOFELEMENT",
740  "OSRLSTART", "OSRLSTARTEMPTY", "OSRLATTRIBUTETEXT", "OSRLEND",
741  "GENERALSTART", "GENERALEND", "SYSTEMSTART", "SYSTEMEND", "SERVICESTART",
742  "SERVICEEND", "JOBSTART", "JOBEND", "SERVICEURISTARTANDEND",
743  "SERVICEURISTART", "SERVICEURIEND", "SERVICENAMESTARTANDEND",
744  "SERVICENAMESTART", "SERVICENAMEEND", "INSTANCENAMESTARTANDEND",
745  "INSTANCENAMESTART", "INSTANCENAMEEND", "JOBIDSTARTANDEND", "JOBIDSTART",
746  "JOBIDEND", "TIMINGINFORMATIONSTART", "TIMINGINFORMATIONEND",
747  "TIMESTARTANDEND", "TIMESTART", "TIMEEND", "OPTIMIZATIONSTART",
748  "OPTIMIZATIONEND", "SOLUTIONSTART", "SOLUTIONEND", "VALUESSTART",
749  "VALUESEND", "DUALVALUESSTART", "DUALVALUESEND", "VARIABLESSTART",
750  "VARIABLESEND", "VARSTART", "VAREND", "OBJECTIVESSTART", "OBJECTIVESEND",
751  "OBJSTART", "OBJEND", "CONSTRAINTSSTART", "CONSTRAINTSEND", "CONSTART",
752  "CONEND", "STATUSSTART", "STATUSEND", "GENERALSTATUSSTART",
753  "GENERALSTATUSEND", "MESSAGESTART", "MESSAGEEND", "MESSAGESTARTANDEND",
754  "OTHERSTART", "OTHEREND", "NUMBEROFTIMESATT", "NUMBEROFSOLUTIONSATT",
755  "NUMBEROFVARIABLESATT", "NUMBEROFCONSTRAINTSATT",
756  "NUMBEROFOBJECTIVESATT", "NUMBEROFOTHERVARIABLERESULTSATT",
757  "NUMBEROFOTHEROBJECTIVERESULTSATT", "NUMBEROFOTHERCONSTRAINTRESULTSATT",
758  "NUMBEROFVARATT", "NUMBEROFOBJATT", "NUMBEROFCONATT",
759  "TARGETOBJECTIVEIDXATT", "IDXATT", "TYPEATT", "EMPTYTYPEATT",
760  "DESCRIPTIONATT", "EMPTYDESCRIPTIONATT", "NAMEATT", "EMPTYNAMEATT",
761  "CATEGORYATT", "EMPTYCATEGORYATT", "UNITATT", "EMPTYUNITATT", "VALUEATT",
762  "EMPTYVALUEATT", "DUMMY", "' '", "'\\t'", "'\\r'", "'\\n'", "$accept",
763  "osrldoc", "osrlstart", "generalElement", "generalStatus",
764  "anotherGeneralStatusATT", "generalstatusatt", "serviceURI",
765  "serviceName", "instanceName", "jobID", "headerMessage", "systemElement",
766  "serviceElement", "jobElement", "timingInformation", "numberoftimes",
767  "timingContent", "listOfTimes", "time", "timeAttList", "timeAtt",
768  "timeType", "timeCategory", "timeUnit", "timeDescription", "timeValue",
769  "optimizationElement", "@1", "optimizationContent", "@2", "optend",
770  "anotherOptATT", "optatt", "optnumsolatt", "optnumvaratt",
771  "optnumconatt", "optnumobjatt", "solution", "anothersolution",
772  "targetObjectiveIDXATT", "status", "anotherStatusATT", "statusatt",
773  "message", "variables", "numberOfOtherVariableResults", "numberOfVarATT",
774  "var", "anothervar", "DoubleOrInt", "otherVariables",
775  "otherVariableResult", "otherVariableStart", "otherVariableATTlist",
776  "othervariableATT", "numberOfOtherVarATT", "otherVarValueATT",
777  "otherVarNameATT", "otherVarDescriptionATT", "othervarlist", "othervar",
778  "ElementValue", "othervarstart", "objectives", "numberOfObjATT", "obj",
779  "anotherobj", "constraints", "@3", "numberOfConATT", "con", "anothercon",
780  "anIDXATT", "otherObjectives", "otherConstraints", "otherSolution",
781  "quote", "xmlWhiteSpaceChar", "xmlWhiteSpace", 0
782 };
783 #endif
784 
785 # ifdef YYPRINT
786 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
787  token YYLEX-NUM. */
788 static const yytype_uint16 yytoknum[] =
789 {
790  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
791  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
792  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
793  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
794  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
795  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
796  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
797  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
798  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
799  345, 346, 347, 348, 349, 32, 9, 13, 10
800 };
801 # endif
802 
803 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
804 static const yytype_uint8 yyr1[] =
805 {
806  0, 99, 100, 101, 101, 102, 102, 103, 103, 104,
807  104, 105, 105, 105, 105, 106, 106, 106, 106, 107,
808  107, 107, 107, 108, 108, 108, 108, 109, 109, 109,
809  109, 110, 110, 110, 110, 111, 111, 112, 112, 113,
810  113, 114, 114, 115, 116, 116, 117, 117, 118, 118,
811  119, 119, 120, 120, 120, 120, 121, 121, 122, 122,
812  123, 123, 124, 124, 125, 125, 126, 127, 126, 129,
813  128, 130, 130, 131, 131, 132, 132, 132, 132, 133,
814  134, 135, 136, 137, 137, 138, 139, 139, 140, 140,
815  141, 141, 142, 142, 142, 142, 143, 143, 143, 144,
816  144, 145, 145, 146, 147, 147, 148, 149, 149, 150,
817  150, 151, 152, 153, 153, 154, 154, 154, 154, 155,
818  156, 156, 157, 157, 158, 159, 159, 160, 161, 161,
819  161, 162, 163, 163, 164, 165, 165, 166, 166, 167,
820  168, 167, 169, 170, 170, 171, 171, 172, 173, 173,
821  174, 174, 175, 175, 176, 177, 177, 177, 177, 178,
822  178
823 };
824 
825 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
826 static const yytype_uint8 yyr2[] =
827 {
828  0, 2, 7, 2, 3, 0, 8, 4, 3, 1,
829  2, 3, 1, 3, 1, 0, 1, 3, 2, 0,
830  1, 3, 2, 0, 1, 3, 2, 0, 1, 3,
831  2, 0, 1, 3, 2, 0, 2, 0, 2, 0,
832  3, 0, 3, 4, 1, 3, 0, 2, 1, 5,
833  0, 2, 1, 1, 1, 1, 3, 1, 3, 1,
834  3, 1, 3, 1, 1, 1, 0, 0, 4, 0,
835  3, 1, 2, 0, 2, 2, 2, 2, 2, 3,
836  3, 3, 3, 0, 2, 9, 0, 4, 4, 3,
837  1, 2, 3, 1, 3, 1, 0, 3, 2, 0,
838  10, 0, 4, 4, 1, 2, 5, 1, 1, 0,
839  2, 5, 1, 0, 2, 1, 1, 1, 1, 4,
840  1, 3, 1, 3, 3, 0, 2, 5, 1, 1,
841  1, 1, 0, 9, 4, 0, 2, 5, 5, 0,
842  0, 10, 4, 1, 2, 5, 5, 3, 0, 1,
843  0, 1, 1, 2, 2, 1, 1, 1, 1, 0,
844  2
845 };
846 
847 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
848  STATE-NUM when YYTABLE doesn't specify something else to do. Zero
849  means the default is an error. */
850 static const yytype_uint8 yydefact[] =
851 {
852  0, 0, 0, 5, 3, 0, 1, 0, 35, 4,
853  0, 15, 0, 37, 0, 12, 0, 14, 0, 9,
854  16, 0, 19, 36, 0, 39, 159, 159, 0, 8,
855  10, 0, 18, 20, 0, 23, 38, 41, 66, 11,
856  0, 13, 7, 17, 0, 22, 24, 0, 27, 0,
857  0, 73, 0, 154, 155, 156, 157, 158, 160, 21,
858  0, 26, 28, 0, 31, 0, 0, 40, 67, 69,
859  2, 25, 0, 30, 0, 32, 0, 0, 46, 44,
860  42, 0, 159, 159, 159, 159, 0, 74, 159, 159,
861  159, 159, 29, 0, 34, 6, 0, 0, 68, 0,
862  0, 0, 0, 83, 71, 70, 75, 76, 77, 78,
863  33, 43, 45, 48, 50, 47, 79, 80, 81, 82,
864  72, 0, 86, 84, 0, 0, 57, 0, 63, 0,
865  59, 0, 61, 51, 52, 53, 54, 55, 159, 0,
866  65, 64, 0, 0, 0, 0, 0, 0, 0, 49,
867  56, 62, 58, 60, 159, 0, 96, 87, 0, 93,
868  0, 95, 0, 90, 0, 99, 159, 159, 0, 89,
869  91, 0, 98, 101, 132, 92, 94, 88, 97, 159,
870  0, 0, 139, 0, 0, 0, 0, 0, 159, 0,
871  0, 0, 152, 0, 85, 102, 159, 0, 159, 0,
872  0, 153, 0, 0, 0, 135, 159, 140, 159, 0,
873  0, 104, 159, 0, 0, 0, 103, 0, 0, 109,
874  105, 134, 148, 0, 136, 159, 0, 159, 0, 0,
875  149, 0, 0, 142, 0, 0, 143, 147, 107, 108,
876  0, 100, 112, 110, 113, 133, 0, 0, 150, 144,
877  106, 159, 0, 0, 122, 0, 120, 0, 113, 115,
878  116, 117, 118, 0, 0, 0, 151, 0, 0, 159,
879  159, 159, 125, 114, 138, 137, 0, 0, 141, 159,
880  124, 123, 121, 131, 0, 125, 0, 146, 145, 119,
881  111, 126, 0, 0, 128, 129, 130, 0, 127
882 };
883 
884 /* YYDEFGOTO[NTERM-NUM]. */
885 static const yytype_int16 yydefgoto[] =
886 {
887  -1, 2, 3, 8, 11, 18, 19, 22, 35, 48,
888  64, 76, 13, 25, 38, 50, 66, 80, 97, 115,
889  121, 133, 134, 135, 136, 137, 142, 52, 81, 68,
890  86, 105, 69, 87, 88, 89, 90, 91, 120, 123,
891  139, 156, 162, 163, 165, 174, 180, 197, 210, 211,
892  240, 229, 243, 244, 257, 258, 259, 260, 261, 262,
893  284, 285, 297, 286, 182, 199, 213, 224, 187, 215,
894  207, 235, 236, 218, 231, 267, 194, 39, 58, 40
895 };
896 
897 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
898  STATE-NUM. */
899 #define YYPACT_NINF -221
900 static const yytype_int16 yypact[] =
901 {
902  13, 14, 29, 16, -221, 24, -221, -24, 43, -221,
903  -41, 56, 98, 55, 114, -221, 115, -221, 3, -221,
904  -221, 7, 71, -221, 99, 100, -221, -221, 57, -221,
905  -221, 97, -221, -221, 6, 70, -221, 88, 84, -221,
906  -6, -221, -221, -221, 101, -221, -221, 5, 69, 59,
907  103, -221, 112, -221, -221, -221, -221, -221, -221, -221,
908  105, -221, -221, 1, -48, 123, 94, -221, -221, -23,
909  -221, -221, 108, -221, 0, -221, 116, 126, -221, -221,
910  -221, 92, -221, -221, -221, -221, 96, -221, -221, -221,
911  -221, -221, -221, 72, -221, -221, 127, 32, -221, 130,
912  133, 136, 138, -221, -221, -221, -221, -221, -221, -221,
913  -221, -221, -221, -221, -221, -221, -221, -221, -221, -221,
914  106, -7, 64, -221, 102, 142, -221, 143, -221, 144,
915  -221, 146, -221, -221, -221, -221, -221, -221, -221, 141,
916  -221, -221, 117, 147, 148, 150, 151, 154, 91, -221,
917  -221, -221, -221, -221, -221, -31, 89, -221, 157, -221,
918  159, -221, 11, -221, 2, 118, -221, -221, 111, -221,
919  -221, 110, -221, 90, 113, -221, -221, -221, -221, -221,
920  158, 161, 120, 163, 119, 129, 165, -35, -221, 122,
921  124, 131, -221, 135, -221, -221, -221, 171, -221, 173,
922  125, -221, 178, 134, 181, -221, -221, -221, -221, 128,
923  -28, -221, -221, -26, 182, 179, -221, 184, 183, -221,
924  -221, -221, 121, 128, -221, -221, 132, -221, 104, -42,
925  -221, 140, 185, -221, 128, -32, -221, -221, -221, -221,
926  145, -221, -221, -221, -47, -221, 107, 186, 137, -221,
927  -221, -221, 188, 194, -221, 198, -221, 196, -47, -221,
928  -221, -221, -221, 152, 153, 109, -221, 149, 205, -221,
929  -221, -221, 162, -221, -221, -221, 155, 160, -221, -221,
930  -221, -221, -221, -221, 164, 162, 128, -221, -221, -221,
931  -221, -221, 202, 67, -221, -221, -221, 166, -221
932 };
933 
934 /* YYPGOTO[NTERM-NUM]. */
935 static const yytype_int16 yypgoto[] =
936 {
937  -221, -221, -221, -221, -221, -221, 195, -221, -221, -221,
938  -221, -221, -221, -221, -221, -221, -221, -221, -221, -221,
939  -221, -221, -221, -221, -221, -221, -221, -221, -221, -221,
940  -221, -221, -221, -221, -221, -221, -221, -221, -221, -221,
941  -221, -221, -221, 41, -221, -221, -221, -221, -221, 8,
942  -221, -221, -221, -221, -38, -221, -221, -221, -221, -221,
943  -69, -221, -221, -221, -221, -221, -221, -221, -221, -221,
944  -221, -221, -14, -220, -221, -221, -221, -27, -221, -221
945 };
946 
947 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
948  positive, shift that token. If negative, reduce the rule which
949  number is the opposite. If zero, do what YYDEFACT says.
950  If YYTABLE_NINF, syntax error. */
951 #define YYTABLE_NINF -1
952 static const yytype_uint16 yytable[] =
953 {
954  41, 53, 124, 232, 93, 72, 171, 241, 192, 60,
955  44, 31, 28, 29, 247, 248, 74, 219, 75, 222,
956  168, 169, 209, 4, 1, 242, 234, 5, 223, 6,
957  251, 7, 32, 9, 45, 73, 61, 252, 10, 253,
958  254, 14, 15, 16, 17, 255, 256, 82, 83, 84,
959  85, 158, 159, 160, 161, 99, 100, 101, 102, 193,
960  12, 106, 107, 108, 109, 94, 292, 172, 112, 113,
961  114, 294, 295, 296, 24, 125, 126, 127, 128, 20,
962  21, 129, 130, 131, 132, 14, 15, 16, 17, 54,
963  55, 56, 57, 158, 159, 160, 161, 33, 34, 46,
964  47, 62, 63, 78, 79, 103, 104, 140, 141, 238,
965  239, 147, 263, 264, 276, 277, 23, 26, 27, 36,
966  42, 37, 43, 49, 51, 67, 70, 157, 65, 59,
967  77, 96, 95, 98, 111, 116, 71, 110, 117, 175,
968  176, 118, 92, 119, 138, 143, 144, 145, 122, 146,
969  148, 155, 183, 164, 150, 151, 149, 152, 153, 154,
970  166, 195, 167, 189, 179, 181, 173, 184, 188, 202,
971  185, 204, 177, 190, 191, 178, 186, 200, 201, 214,
972  203, 216, 205, 208, 209, 221, 212, 225, 226, 227,
973  234, 269, 228, 245, 246, 265, 250, 270, 233, 196,
974  237, 271, 198, 170, 206, 272, 278, 274, 275, 217,
975  279, 293, 283, 30, 287, 230, 291, 298, 220, 288,
976  273, 249, 0, 0, 268, 0, 0, 0, 0, 0,
977  0, 266, 290, 0, 0, 0, 0, 0, 0, 0,
978  0, 0, 280, 281, 282, 0, 0, 0, 0, 0,
979  0, 0, 289
980 };
981 
982 static const yytype_int16 yycheck[] =
983 {
984  27, 7, 9, 223, 4, 4, 4, 49, 43, 4,
985  4, 4, 9, 10, 234, 47, 64, 45, 66, 45,
986  9, 10, 50, 9, 11, 67, 58, 13, 54, 0,
987  77, 15, 25, 9, 28, 34, 31, 84, 62, 86,
988  87, 82, 83, 84, 85, 92, 93, 70, 71, 72,
989  73, 82, 83, 84, 85, 82, 83, 84, 85, 94,
990  17, 88, 89, 90, 91, 65, 286, 65, 36, 37,
991  38, 4, 5, 6, 19, 82, 83, 84, 85, 23,
992  24, 88, 89, 90, 91, 82, 83, 84, 85, 95,
993  96, 97, 98, 82, 83, 84, 85, 26, 27, 29,
994  30, 32, 33, 9, 10, 9, 10, 5, 6, 5,
995  6, 138, 5, 6, 5, 6, 18, 3, 3, 20,
996  63, 21, 25, 35, 40, 22, 14, 154, 69, 28,
997  7, 5, 16, 41, 7, 5, 31, 65, 5, 166,
998  167, 5, 34, 5, 80, 3, 3, 3, 42, 3,
999  9, 60, 179, 64, 7, 7, 39, 7, 7, 5,
1000  3, 188, 3, 44, 74, 52, 48, 9, 5, 196,
1001  9, 198, 61, 44, 9, 65, 56, 46, 43, 206,
1002  9, 208, 9, 5, 50, 212, 5, 5, 9, 5,
1003  58, 3, 9, 53, 9, 9, 51, 3, 225, 77,
1004  227, 3, 78, 162, 79, 9, 57, 55, 55, 81,
1005  5, 9, 50, 18, 59, 94, 285, 51, 210, 59,
1006  258, 235, -1, -1, 251, -1, -1, -1, -1, -1,
1007  -1, 94, 68, -1, -1, -1, -1, -1, -1, -1,
1008  -1, -1, 269, 270, 271, -1, -1, -1, -1, -1,
1009  -1, -1, 279
1010 };
1011 
1012 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1013  symbol of state STATE-NUM. */
1014 static const yytype_uint8 yystos[] =
1015 {
1016  0, 11, 100, 101, 9, 13, 0, 15, 102, 9,
1017  62, 103, 17, 111, 82, 83, 84, 85, 104, 105,
1018  23, 24, 106, 18, 19, 112, 3, 3, 9, 10,
1019  105, 4, 25, 26, 27, 107, 20, 21, 113, 176,
1020  178, 176, 63, 25, 4, 28, 29, 30, 108, 35,
1021  114, 40, 126, 7, 95, 96, 97, 98, 177, 28,
1022  4, 31, 32, 33, 109, 69, 115, 22, 128, 131,
1023  14, 31, 4, 34, 64, 66, 110, 7, 9, 10,
1024  116, 127, 70, 71, 72, 73, 129, 132, 133, 134,
1025  135, 136, 34, 4, 65, 16, 5, 117, 41, 176,
1026  176, 176, 176, 9, 10, 130, 176, 176, 176, 176,
1027  65, 7, 36, 37, 38, 118, 5, 5, 5, 5,
1028  137, 119, 42, 138, 9, 82, 83, 84, 85, 88,
1029  89, 90, 91, 120, 121, 122, 123, 124, 80, 139,
1030  5, 6, 125, 3, 3, 3, 3, 176, 9, 39,
1031  7, 7, 7, 7, 5, 60, 140, 176, 82, 83,
1032  84, 85, 141, 142, 64, 143, 3, 3, 9, 10,
1033  142, 4, 65, 48, 144, 176, 176, 61, 65, 74,
1034  145, 52, 163, 176, 9, 9, 56, 167, 5, 44,
1035  44, 9, 43, 94, 175, 176, 77, 146, 78, 164,
1036  46, 43, 176, 9, 176, 9, 79, 169, 5, 50,
1037  147, 148, 5, 165, 176, 168, 176, 81, 172, 45,
1038  148, 176, 45, 54, 166, 5, 9, 5, 9, 150,
1039  94, 173, 172, 176, 58, 170, 171, 176, 5, 6,
1040  149, 49, 67, 151, 152, 53, 9, 172, 47, 171,
1041  51, 77, 84, 86, 87, 92, 93, 153, 154, 155,
1042  156, 157, 158, 5, 6, 9, 94, 174, 176, 3,
1043  3, 3, 9, 153, 55, 55, 5, 6, 57, 5,
1044  176, 176, 176, 50, 159, 160, 162, 59, 59, 176,
1045  68, 159, 172, 9, 4, 5, 6, 161, 51
1046 };
1047 
1048 #define yyerrok (yyerrstatus = 0)
1049 #define yyclearin (yychar = YYEMPTY)
1050 #define YYEMPTY (-2)
1051 #define YYEOF 0
1052 
1053 #define YYACCEPT goto yyacceptlab
1054 #define YYABORT goto yyabortlab
1055 #define YYERROR goto yyerrorlab
1056 
1057 
1058 /* Like YYERROR except do call yyerror. This remains here temporarily
1059  to ease the transition to the new meaning of YYERROR, for GCC.
1060  Once GCC version 2 has supplanted version 1, this can go. */
1061 
1062 #define YYFAIL goto yyerrlab
1063 
1064 #define YYRECOVERING() (!!yyerrstatus)
1065 
1066 #define YYBACKUP(Token, Value) \
1067 do \
1068  if (yychar == YYEMPTY && yylen == 1) \
1069  { \
1070  yychar = (Token); \
1071  yylval = (Value); \
1072  yytoken = YYTRANSLATE (yychar); \
1073  YYPOPSTACK (1); \
1074  goto yybackup; \
1075  } \
1076  else \
1077  { \
1078  yyerror (&yylloc, osresult, parserData, YY_("syntax error: cannot back up")); \
1079  YYERROR; \
1080  } \
1081 while (YYID (0))
1082 
1083 
1084 #define YYTERROR 1
1085 #define YYERRCODE 256
1086 
1087 
1088 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1089  If N is 0, then set CURRENT to the empty location which ends
1090  the previous symbol: RHS[0] (always defined). */
1091 
1092 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1093 #ifndef YYLLOC_DEFAULT
1094 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1095  do \
1096  if (YYID (N)) \
1097  { \
1098  (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1099  (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1100  (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1101  (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1102  } \
1103  else \
1104  { \
1105  (Current).first_line = (Current).last_line = \
1106  YYRHSLOC (Rhs, 0).last_line; \
1107  (Current).first_column = (Current).last_column = \
1108  YYRHSLOC (Rhs, 0).last_column; \
1109  } \
1110  while (YYID (0))
1111 #endif
1112 
1113 
1114 /* YY_LOCATION_PRINT -- Print the location on the stream.
1115  This macro was not mandated originally: define only if we know
1116  we won't break user code: when these are the locations we know. */
1117 
1118 #ifndef YY_LOCATION_PRINT
1119 # if YYLTYPE_IS_TRIVIAL
1120 # define YY_LOCATION_PRINT(File, Loc) \
1121  fprintf (File, "%d.%d-%d.%d", \
1122  (Loc).first_line, (Loc).first_column, \
1123  (Loc).last_line, (Loc).last_column)
1124 # else
1125 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1126 # endif
1127 #endif
1128 
1129 
1130 /* YYLEX -- calling `yylex' with the right arguments. */
1131 
1132 #ifdef YYLEX_PARAM
1133 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
1134 #else
1135 # define YYLEX yylex (&yylval, &yylloc, scanner)
1136 #endif
1137 
1138 /* Enable debugging if requested. */
1139 #if YYDEBUG
1140 
1141 # ifndef YYFPRINTF
1142 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1143 # define YYFPRINTF fprintf
1144 # endif
1145 
1146 # define YYDPRINTF(Args) \
1147 do { \
1148  if (yydebug) \
1149  YYFPRINTF Args; \
1150 } while (YYID (0))
1151 
1152 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1153 do { \
1154  if (yydebug) \
1155  { \
1156  YYFPRINTF (stderr, "%s ", Title); \
1157  yy_symbol_print (stderr, \
1158  Type, Value, Location, osresult, parserData); \
1159  YYFPRINTF (stderr, "\n"); \
1160  } \
1161 } while (YYID (0))
1162 
1163 
1164 /*--------------------------------.
1165 | Print this symbol on YYOUTPUT. |
1166 `--------------------------------*/
1167 
1168 /*ARGSUSED*/
1169 #if (defined __STDC__ || defined __C99__FUNC__ \
1170  || defined __cplusplus || defined _MSC_VER)
1171 static void
1172 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
1173 #else
1174 static void
1175 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
1176  FILE *yyoutput;
1177  int yytype;
1178  YYSTYPE const * const yyvaluep;
1179  YYLTYPE const * const yylocationp;
1180  OSResult *osresult;
1181  OSrLParserData *parserData;
1182 #endif
1183 {
1184  if (!yyvaluep)
1185  return;
1186  YYUSE (yylocationp);
1187  YYUSE (osresult);
1188  YYUSE (parserData);
1189 # ifdef YYPRINT
1190  if (yytype < YYNTOKENS)
1191  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1192 # else
1193  YYUSE (yyoutput);
1194 # endif
1195  switch (yytype)
1196  {
1197  default:
1198  break;
1199  }
1200 }
1201 
1202 
1203 /*--------------------------------.
1204 | Print this symbol on YYOUTPUT. |
1205 `--------------------------------*/
1206 
1207 #if (defined __STDC__ || defined __C99__FUNC__ \
1208  || defined __cplusplus || defined _MSC_VER)
1209 static void
1210 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSResult *osresult, OSrLParserData *parserData)
1211 #else
1212 static void
1213 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData)
1214  FILE *yyoutput;
1215  int yytype;
1216  YYSTYPE const * const yyvaluep;
1217  YYLTYPE const * const yylocationp;
1218  OSResult *osresult;
1219  OSrLParserData *parserData;
1220 #endif
1221 {
1222  if (yytype < YYNTOKENS)
1223  YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1224  else
1225  YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1226 
1227  YY_LOCATION_PRINT (yyoutput, *yylocationp);
1228  YYFPRINTF (yyoutput, ": ");
1229  yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osresult, parserData);
1230  YYFPRINTF (yyoutput, ")");
1231 }
1232 
1233 /*------------------------------------------------------------------.
1234 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1235 | TOP (included). |
1236 `------------------------------------------------------------------*/
1237 
1238 #if (defined __STDC__ || defined __C99__FUNC__ \
1239  || defined __cplusplus || defined _MSC_VER)
1240 static void
1241 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1242 #else
1243 static void
1244 yy_stack_print (bottom, top)
1245  yytype_int16 *bottom;
1246  yytype_int16 *top;
1247 #endif
1248 {
1249  YYFPRINTF (stderr, "Stack now");
1250  for (; bottom <= top; ++bottom)
1251  YYFPRINTF (stderr, " %d", *bottom);
1252  YYFPRINTF (stderr, "\n");
1253 }
1254 
1255 # define YY_STACK_PRINT(Bottom, Top) \
1256 do { \
1257  if (yydebug) \
1258  yy_stack_print ((Bottom), (Top)); \
1259 } while (YYID (0))
1260 
1261 
1262 /*------------------------------------------------.
1263 | Report that the YYRULE is going to be reduced. |
1264 `------------------------------------------------*/
1265 
1266 #if (defined __STDC__ || defined __C99__FUNC__ \
1267  || defined __cplusplus || defined _MSC_VER)
1268 static void
1269 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, OSResult *osresult, OSrLParserData *parserData)
1270 #else
1271 static void
1272 yy_reduce_print (yyvsp, yylsp, yyrule, osresult, parserData)
1273  YYSTYPE *yyvsp;
1274  YYLTYPE *yylsp;
1275  int yyrule;
1276  OSResult *osresult;
1277  OSrLParserData *parserData;
1278 #endif
1279 {
1280  int yynrhs = yyr2[yyrule];
1281  int yyi;
1282  unsigned long int yylno = yyrline[yyrule];
1283  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1284  yyrule - 1, yylno);
1285  /* The symbols being reduced. */
1286  for (yyi = 0; yyi < yynrhs; yyi++)
1287  {
1288  fprintf (stderr, " $%d = ", yyi + 1);
1289  yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1290  &(yyvsp[(yyi + 1) - (yynrhs)])
1291  , &(yylsp[(yyi + 1) - (yynrhs)]) , osresult, parserData);
1292  fprintf (stderr, "\n");
1293  }
1294 }
1295 
1296 # define YY_REDUCE_PRINT(Rule) \
1297 do { \
1298  if (yydebug) \
1299  yy_reduce_print (yyvsp, yylsp, Rule, osresult, parserData); \
1300 } while (YYID (0))
1301 
1302 /* Nonzero means print parse trace. It is left uninitialized so that
1303  multiple parsers can coexist. */
1304 int yydebug;
1305 #else /* !YYDEBUG */
1306 # define YYDPRINTF(Args)
1307 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1308 # define YY_STACK_PRINT(Bottom, Top)
1309 # define YY_REDUCE_PRINT(Rule)
1310 #endif /* !YYDEBUG */
1311 
1312 
1313 /* YYINITDEPTH -- initial size of the parser's stacks. */
1314 #ifndef YYINITDEPTH
1315 # define YYINITDEPTH 200
1316 #endif
1317 
1318 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1319  if the built-in stack extension method is used).
1320 
1321  Do not make this value too large; the results are undefined if
1322  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1323  evaluated with infinite-precision integer arithmetic. */
1324 
1325 #ifndef YYMAXDEPTH
1326 # define YYMAXDEPTH 10000
1327 #endif
1328 
1329 
1330 
1331 #if YYERROR_VERBOSE
1332 
1333 # ifndef yystrlen
1334 # if defined __GLIBC__ && defined _STRING_H
1335 # define yystrlen strlen
1336 # else
1337 /* Return the length of YYSTR. */
1338 #if (defined __STDC__ || defined __C99__FUNC__ \
1339  || defined __cplusplus || defined _MSC_VER)
1340 static YYSIZE_T
1341 yystrlen (const char *yystr)
1342 #else
1343 static YYSIZE_T
1344 yystrlen (yystr)
1345  const char *yystr;
1346 #endif
1347 {
1348  YYSIZE_T yylen;
1349  for (yylen = 0; yystr[yylen]; yylen++)
1350  continue;
1351  return yylen;
1352 }
1353 # endif
1354 # endif
1355 
1356 # ifndef yystpcpy
1357 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1358 # define yystpcpy stpcpy
1359 # else
1360 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1361  YYDEST. */
1362 #if (defined __STDC__ || defined __C99__FUNC__ \
1363  || defined __cplusplus || defined _MSC_VER)
1364 static char *
1365 yystpcpy (char *yydest, const char *yysrc)
1366 #else
1367 static char *
1368 yystpcpy (yydest, yysrc)
1369  char *yydest;
1370  const char *yysrc;
1371 #endif
1372 {
1373  char *yyd = yydest;
1374  const char *yys = yysrc;
1375 
1376  while ((*yyd++ = *yys++) != '\0')
1377  continue;
1378 
1379  return yyd - 1;
1380 }
1381 # endif
1382 # endif
1383 
1384 # ifndef yytnamerr
1385 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1386  quotes and backslashes, so that it's suitable for yyerror. The
1387  heuristic is that double-quoting is unnecessary unless the string
1388  contains an apostrophe, a comma, or backslash (other than
1389  backslash-backslash). YYSTR is taken from yytname. If YYRES is
1390  null, do not copy; instead, return the length of what the result
1391  would have been. */
1392 static YYSIZE_T
1393 yytnamerr (char *yyres, const char *yystr)
1394 {
1395  if (*yystr == '"')
1396  {
1397  YYSIZE_T yyn = 0;
1398  char const *yyp = yystr;
1399 
1400  for (;;)
1401  switch (*++yyp)
1402  {
1403  case '\'':
1404  case ',':
1405  goto do_not_strip_quotes;
1406 
1407  case '\\':
1408  if (*++yyp != '\\')
1409  goto do_not_strip_quotes;
1410  /* Fall through. */
1411  default:
1412  if (yyres)
1413  yyres[yyn] = *yyp;
1414  yyn++;
1415  break;
1416 
1417  case '"':
1418  if (yyres)
1419  yyres[yyn] = '\0';
1420  return yyn;
1421  }
1422  do_not_strip_quotes: ;
1423  }
1424 
1425  if (! yyres)
1426  return yystrlen (yystr);
1427 
1428  return yystpcpy (yyres, yystr) - yyres;
1429 }
1430 # endif
1431 
1432 /* Copy into YYRESULT an error message about the unexpected token
1433  YYCHAR while in state YYSTATE. Return the number of bytes copied,
1434  including the terminating null byte. If YYRESULT is null, do not
1435  copy anything; just return the number of bytes that would be
1436  copied. As a special case, return 0 if an ordinary "syntax error"
1437  message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1438  size calculation. */
1439 static YYSIZE_T
1440 yysyntax_error (char *yyresult, int yystate, int yychar)
1441 {
1442  int yyn = yypact[yystate];
1443 
1444  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1445  return 0;
1446  else
1447  {
1448  int yytype = YYTRANSLATE (yychar);
1449  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1450  YYSIZE_T yysize = yysize0;
1451  YYSIZE_T yysize1;
1452  int yysize_overflow = 0;
1453  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1454  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1455  int yyx;
1456 
1457 # if 0
1458  /* This is so xgettext sees the translatable formats that are
1459  constructed on the fly. */
1460  YY_("syntax error, unexpected %s");
1461  YY_("syntax error, unexpected %s, expecting %s");
1462  YY_("syntax error, unexpected %s, expecting %s or %s");
1463  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1464  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1465 # endif
1466  char *yyfmt;
1467  char const *yyf;
1468  static char const yyunexpected[] = "syntax error, unexpected %s";
1469  static char const yyexpecting[] = ", expecting %s";
1470  static char const yyor[] = " or %s";
1471  char yyformat[sizeof yyunexpected
1472  + sizeof yyexpecting - 1
1473  + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1474  * (sizeof yyor - 1))];
1475  char const *yyprefix = yyexpecting;
1476 
1477  /* Start YYX at -YYN if negative to avoid negative indexes in
1478  YYCHECK. */
1479  int yyxbegin = yyn < 0 ? -yyn : 0;
1480 
1481  /* Stay within bounds of both yycheck and yytname. */
1482  int yychecklim = YYLAST - yyn + 1;
1483  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1484  int yycount = 1;
1485 
1486  yyarg[0] = yytname[yytype];
1487  yyfmt = yystpcpy (yyformat, yyunexpected);
1488 
1489  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1490  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1491  {
1492  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1493  {
1494  yycount = 1;
1495  yysize = yysize0;
1496  yyformat[sizeof yyunexpected - 1] = '\0';
1497  break;
1498  }
1499  yyarg[yycount++] = yytname[yyx];
1500  yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1501  yysize_overflow |= (yysize1 < yysize);
1502  yysize = yysize1;
1503  yyfmt = yystpcpy (yyfmt, yyprefix);
1504  yyprefix = yyor;
1505  }
1506 
1507  yyf = YY_(yyformat);
1508  yysize1 = yysize + yystrlen (yyf);
1509  yysize_overflow |= (yysize1 < yysize);
1510  yysize = yysize1;
1511 
1512  if (yysize_overflow)
1513  return YYSIZE_MAXIMUM;
1514 
1515  if (yyresult)
1516  {
1517  /* Avoid sprintf, as that infringes on the user's name space.
1518  Don't have undefined behavior even if the translation
1519  produced a string with the wrong number of "%s"s. */
1520  char *yyp = yyresult;
1521  int yyi = 0;
1522  while ((*yyp = *yyf) != '\0')
1523  {
1524  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1525  {
1526  yyp += yytnamerr (yyp, yyarg[yyi++]);
1527  yyf += 2;
1528  }
1529  else
1530  {
1531  yyp++;
1532  yyf++;
1533  }
1534  }
1535  }
1536  return yysize;
1537  }
1538 }
1539 #endif /* YYERROR_VERBOSE */
1540 
1541 
1542 /*-----------------------------------------------.
1543 | Release the memory associated to this symbol. |
1544 `-----------------------------------------------*/
1545 
1546 /*ARGSUSED*/
1547 #if (defined __STDC__ || defined __C99__FUNC__ \
1548  || defined __cplusplus || defined _MSC_VER)
1549 static void
1550 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, OSResult *osresult, OSrLParserData *parserData)
1551 #else
1552 static void
1553 yydestruct (yymsg, yytype, yyvaluep, yylocationp, osresult, parserData)
1554  const char *yymsg;
1555  int yytype;
1556  YYSTYPE *yyvaluep;
1557  YYLTYPE *yylocationp;
1558  OSResult *osresult;
1559  OSrLParserData *parserData;
1560 #endif
1561 {
1562  YYUSE (yyvaluep);
1563  YYUSE (yylocationp);
1564  YYUSE (osresult);
1565  YYUSE (parserData);
1566 
1567  if (!yymsg)
1568  yymsg = "Deleting";
1569  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1570 
1571  switch (yytype)
1572  {
1573 
1574  default:
1575  break;
1576  }
1577 }
1578 
1579 
1580 /* Prevent warnings from -Wmissing-prototypes. */
1581 
1582 #ifdef YYPARSE_PARAM
1583 #if defined __STDC__ || defined __cplusplus
1584 int yyparse (void *YYPARSE_PARAM);
1585 #else
1586 int yyparse ();
1587 #endif
1588 #else /* ! YYPARSE_PARAM */
1589 #if defined __STDC__ || defined __cplusplus
1590 int yyparse (OSResult *osresult, OSrLParserData *parserData);
1591 #else
1592 int yyparse ();
1593 #endif
1594 #endif /* ! YYPARSE_PARAM */
1595 
1596 
1597 
1598 
1599 
1600 
1601 /*----------.
1602 | yyparse. |
1603 `----------*/
1604 
1605 #ifdef YYPARSE_PARAM
1606 #if (defined __STDC__ || defined __C99__FUNC__ \
1607  || defined __cplusplus || defined _MSC_VER)
1608 int
1609 yyparse (void *YYPARSE_PARAM)
1610 #else
1611 int
1612 yyparse (YYPARSE_PARAM)
1613  void *YYPARSE_PARAM;
1614 #endif
1615 #else /* ! YYPARSE_PARAM */
1616 #if (defined __STDC__ || defined __C99__FUNC__ \
1617  || defined __cplusplus || defined _MSC_VER)
1618 int
1619 yyparse (OSResult *osresult, OSrLParserData *parserData)
1620 #else
1621 int
1622 yyparse (osresult, parserData)
1623  OSResult *osresult;
1624  OSrLParserData *parserData;
1625 #endif
1626 #endif
1628  /* The look-ahead symbol. */
1629 int yychar;
1630 
1631 /* The semantic value of the look-ahead symbol. */
1632 YYSTYPE yylval;
1633 
1634 /* Number of syntax errors so far. */
1636 /* Location data for the look-ahead symbol. */
1638 
1639  int yystate;
1640  int yyn;
1642  /* Number of tokens to shift before error messages enabled. */
1644  /* Look-ahead token as an internal (translated) token number. */
1645  int yytoken = 0;
1646 #if YYERROR_VERBOSE
1647  /* Buffer for error messages, and its allocated size. */
1648  char yymsgbuf[128];
1649  char *yymsg = yymsgbuf;
1650  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1651 #endif
1652 
1653  /* Three stacks and their tools:
1654  `yyss': related to states,
1655  `yyvs': related to semantic values,
1656  `yyls': related to locations.
1657 
1658  Refer to the stacks thru separate pointers, to allow yyoverflow
1659  to reallocate them elsewhere. */
1660 
1661  /* The state stack. */
1662  yytype_int16 yyssa[YYINITDEPTH];
1663  yytype_int16 *yyss = yyssa;
1664  yytype_int16 *yyssp;
1665 
1666  /* The semantic value stack. */
1670 
1671  /* The location stack. */
1675  /* The locations where the error started and ended. */
1677 
1678 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1679 
1681 
1682  /* The variables used to return semantic value and location from the
1683  action routines. */
1686 
1687  /* The number of symbols on the RHS of the reduced rule.
1688  Keep to zero when no symbol should be popped. */
1689  int yylen = 0;
1690 
1691  YYDPRINTF ((stderr, "Starting parse\n"));
1692 
1693  yystate = 0;
1694  yyerrstatus = 0;
1695  yynerrs = 0;
1696  yychar = YYEMPTY; /* Cause a token to be read. */
1697 
1698  /* Initialize stack pointers.
1699  Waste one element of value and location stack
1700  so that they stay on the same level as the state stack.
1701  The wasted elements are never initialized. */
1702 
1703  yyssp = yyss;
1704  yyvsp = yyvs;
1705  yylsp = yyls;
1706 #if YYLTYPE_IS_TRIVIAL
1707  /* Initialize the default location before parsing starts. */
1708  yylloc.first_line = yylloc.last_line = 1;
1709  yylloc.first_column = yylloc.last_column = 0;
1710 #endif
1711 
1713 
1714 /*------------------------------------------------------------.
1715 | yynewstate -- Push a new state, which is found in yystate. |
1716 `------------------------------------------------------------*/
1717  yynewstate:
1718  /* In all cases, when you get here, the value and location stacks
1719  have just been pushed. So pushing a state here evens the stacks. */
1720  yyssp++;
1721 
1722  yysetstate:
1723  *yyssp = yystate;
1724 
1725  if (yyss + yystacksize - 1 <= yyssp)
1726  {
1727  /* Get the current used size of the three stacks, in elements. */
1728  YYSIZE_T yysize = yyssp - yyss + 1;
1729 
1730 #ifdef yyoverflow
1731  {
1732  /* Give user a chance to reallocate the stack. Use copies of
1733  these so that the &'s don't force the real ones into
1734  memory. */
1735  YYSTYPE *yyvs1 = yyvs;
1736  yytype_int16 *yyss1 = yyss;
1737  YYLTYPE *yyls1 = yyls;
1738 
1739  /* Each stack pointer address is followed by the size of the
1740  data in use in that stack, in bytes. This used to be a
1741  conditional around just the two extra args, but that might
1742  be undefined if yyoverflow is a macro. */
1743  yyoverflow (YY_("memory exhausted"),
1744  &yyss1, yysize * sizeof (*yyssp),
1745  &yyvs1, yysize * sizeof (*yyvsp),
1746  &yyls1, yysize * sizeof (*yylsp),
1747  &yystacksize);
1748  yyls = yyls1;
1749  yyss = yyss1;
1750  yyvs = yyvs1;
1751  }
1752 #else /* no yyoverflow */
1753 # ifndef YYSTACK_RELOCATE
1754  goto yyexhaustedlab;
1755 # else
1756  /* Extend the stack our own way. */
1757  if (YYMAXDEPTH <= yystacksize)
1758  goto yyexhaustedlab;
1759  yystacksize *= 2;
1760  if (YYMAXDEPTH < yystacksize)
1761  yystacksize = YYMAXDEPTH;
1762 
1763  {
1764  yytype_int16 *yyss1 = yyss;
1765  union yyalloc *yyptr =
1766  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1767  if (! yyptr)
1768  goto yyexhaustedlab;
1769  YYSTACK_RELOCATE (yyss);
1770  YYSTACK_RELOCATE (yyvs);
1771  YYSTACK_RELOCATE (yyls);
1772 # undef YYSTACK_RELOCATE
1773  if (yyss1 != yyssa)
1774  YYSTACK_FREE (yyss1);
1775  }
1776 # endif
1777 #endif /* no yyoverflow */
1778 
1779  yyssp = yyss + yysize - 1;
1780  yyvsp = yyvs + yysize - 1;
1781  yylsp = yyls + yysize - 1;
1782 
1783  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1784  (unsigned long int) yystacksize));
1785 
1786  if (yyss + yystacksize - 1 <= yyssp)
1787  YYABORT;
1788  }
1789 
1790  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1791 
1792  goto yybackup;
1793 
1794 /*-----------.
1795 | yybackup. |
1796 `-----------*/
1797 yybackup:
1798 
1799  /* Do appropriate processing given the current state. Read a
1800  look-ahead token if we need one and don't already have one. */
1801 
1802  /* First try to decide what to do without reference to look-ahead token. */
1803  yyn = yypact[yystate];
1804  if (yyn == YYPACT_NINF)
1806 
1807  /* Not known => get a look-ahead token if don't already have one. */
1808 
1809  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1810  if (yychar == YYEMPTY)
1811  {
1812  YYDPRINTF ((stderr, "Reading a token: "));
1813  yychar = YYLEX;
1814  }
1815 
1816  if (yychar <= YYEOF)
1817  {
1818  yychar = yytoken = YYEOF;
1819  YYDPRINTF ((stderr, "Now at end of input.\n"));
1820  }
1821  else
1822  {
1823  yytoken = YYTRANSLATE (yychar);
1824  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1825  }
1826 
1827  /* If the proper action on seeing token YYTOKEN is to reduce or to
1828  detect an error, take that action. */
1829  yyn += yytoken;
1830  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1831  goto yydefault;
1832  yyn = yytable[yyn];
1833  if (yyn <= 0)
1834  {
1835  if (yyn == 0 || yyn == YYTABLE_NINF)
1836  goto yyerrlab;
1837  yyn = -yyn;
1838  goto yyreduce;
1839  }
1840 
1841  if (yyn == YYFINAL)
1843 
1844  /* Count tokens shifted since error; after three, turn off error
1845  status. */
1846  if (yyerrstatus)
1847  yyerrstatus--;
1848 
1849  /* Shift the look-ahead token. */
1850  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1851 
1852  /* Discard the shifted token unless it is eof. */
1853  if (yychar != YYEOF)
1854  yychar = YYEMPTY;
1855 
1856  yystate = yyn;
1857  *++yyvsp = yylval;
1858  *++yylsp = yylloc;
1860 
1861 
1862 /*-----------------------------------------------------------.
1863 | yydefault -- do the default action for the current state. |
1864 `-----------------------------------------------------------*/
1865 yydefault:
1866  yyn = yydefact[yystate];
1867  if (yyn == 0)
1868  goto yyerrlab;
1869  goto yyreduce;
1870 
1871 
1872 /*-----------------------------.
1873 | yyreduce -- Do a reduction. |
1874 `-----------------------------*/
1875 yyreduce:
1876  /* yyn is the number of a rule to reduce with. */
1877  yylen = yyr2[yyn];
1878 
1879  /* If YYLEN is nonzero, implement the default value of the action:
1880  `$$ = $1'.
1881 
1882  Otherwise, the following line sets YYVAL to garbage.
1883  This behavior is undocumented and Bison
1884  users should not rely upon it. Assigning to YYVAL
1885  unconditionally makes the parser a bit smaller, and it avoids a
1886  GCC warning that YYVAL may be used uninitialized. */
1887  yyval = yyvsp[1-yylen];
1888 
1889  /* Default location. */
1890  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1891  YY_REDUCE_PRINT (yyn);
1892  switch (yyn)
1893  {
1894  case 7:
1895 
1896  {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for generalStatus element");}
1897  break;
1898 
1899  case 8:
1900 
1901  {if(parserData->generalStatusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for generalStatus element"); parserData->generalStatusTypePresent = false;}
1902  break;
1903 
1904  case 11:
1905 
1906  { osresult->setGeneralStatusType((yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); ; parserData->generalStatusTypePresent = true;}
1907  break;
1908 
1909  case 12:
1910 
1911  { osresult->setGeneralStatusType(""); parserData->generalStatusTypePresent = true;}
1912  break;
1913 
1914  case 13:
1915 
1916  { osresult->setGeneralStatusDescription((yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval));}
1917  break;
1918 
1919  case 14:
1920 
1921  { osresult->setGeneralStatusDescription("");}
1922  break;
1923 
1924  case 17:
1925 
1926  {osresult->setServiceURI( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
1927  break;
1928 
1929  case 21:
1930 
1931  {osresult->setServiceName( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
1932  break;
1933 
1934  case 25:
1935 
1936  {osresult->setInstanceName( (yyvsp[(2) - (3)].sval)) ; free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
1937  break;
1938 
1939  case 29:
1940 
1941  {osresult->setJobID( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
1942  break;
1943 
1944  case 33:
1945 
1946  {osresult->setGeneralMessage( (yyvsp[(2) - (3)].sval)); free((yyvsp[(2) - (3)].sval)); parserData->errorText = NULL;}
1947  break;
1948 
1949  case 43:
1950 
1951  { if ((yyvsp[(3) - (4)].ival) < 0) osrlerror(NULL, NULL, NULL, "number of time measurements cannot be negative");
1952  parserData->numberOfTimes = (yyvsp[(3) - (4)].ival);
1953  parserData->ivar = 0;
1954 }
1955  break;
1956 
1957  case 49:
1958 
1959  {if (parserData->ivar == parserData->numberOfTimes)
1960  osrlerror(NULL, NULL, NULL, "Too many time measurements");
1961  osresult->addTimingInformation(parserData->timeType, parserData->timeCategory,
1962  parserData->timeUnit, parserData->timeDescription, parserData->timeValue);
1963  parserData->ivar++;
1964  parserData->timeType = "elapsedTime";
1965  parserData->timeCategory = "total";
1966  parserData->timeUnit = "second";
1967  parserData->timeDescription = "";
1968  }
1969  break;
1970 
1971  case 56:
1972 
1973  {parserData->timeType = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
1974  break;
1975 
1976  case 58:
1977 
1978  {parserData->timeCategory = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
1979  break;
1980 
1981  case 60:
1982 
1983  {parserData->timeUnit = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
1984  break;
1985 
1986  case 62:
1987 
1988  {parserData->timeDescription = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
1989  break;
1990 
1991  case 64:
1992 
1993  { parserData->timeValue = (yyvsp[(1) - (1)].dval); }
1994  break;
1995 
1996  case 65:
1997 
1998  { parserData->timeValue = (yyvsp[(1) - (1)].ival); }
1999  break;
2000 
2001  case 67:
2002 
2003  {printf("\nbefore OPTIMIZATIONEND\n");}
2004  break;
2005 
2006  case 69:
2007 
2008  {
2009 // we now have the basic problem parameters
2010  if(parserData->numberOfSolutions > 0){
2011  if( parserData->numberOfVariables > 0){
2012  parserData->primalSolution = new double* [parserData->numberOfSolutions];
2013  for(int i = 0; i < parserData->numberOfSolutions; i++){
2014  parserData->primalSolution[ i] = new double[ parserData->numberOfVariables];
2015  }
2016  }
2017  //if( parserData->numberOfConstraints > 0){
2018  // parserData->dualSolution = new double*[ parserData->numberOfSolutions];
2019  // for(int i = 0; i < parserData->numberOfSolutions; i++){
2020  // parserData->dualSolution[ i] = new double[ parserData->numberOfConstraints];
2021  // }
2022  //}
2023  if( parserData->numberOfObjectives > 0){
2024  parserData->objectiveValues = new double*[ parserData->numberOfSolutions];
2025  parserData->objectiveIdx = new int[ parserData->numberOfSolutions];
2026  for(int i = 0; i < parserData->numberOfSolutions; i++){
2027  parserData->objectiveValues[ i] = new double[ parserData->numberOfObjectives];
2028  }
2029  }
2030  }
2031 }
2032  break;
2033 
2034  case 72:
2035 
2036  {printf("\nat optend\n");}
2037  break;
2038 
2039  case 79:
2040 
2041  { parserData->numberOfSolutions = (yyvsp[(3) - (3)].ival); osresult->setSolutionNumber((yyvsp[(3) - (3)].ival));}
2042  break;
2043 
2044  case 80:
2045 
2046  {parserData->numberOfVariables = (yyvsp[(3) - (3)].ival); osresult->setVariableNumber((yyvsp[(3) - (3)].ival)); }
2047  break;
2048 
2049  case 81:
2050 
2051  {parserData->numberOfConstraints = (yyvsp[(3) - (3)].ival); osresult->setConstraintNumber((yyvsp[(3) - (3)].ival));}
2052  break;
2053 
2054  case 82:
2055 
2056  {parserData->numberOfObjectives = (yyvsp[(3) - (3)].ival); osresult->setObjectiveNumber((yyvsp[(3) - (3)].ival));}
2057  break;
2058 
2059  case 85:
2060 
2061  {printf("\ncompleted solution %d out of %d\n",parserData->solutionIdx,parserData->numberOfSolutions);
2062  if (parserData->solutionIdx == parserData->numberOfSolutions)
2063  osrlerror(NULL, NULL, NULL, "too many solutions");
2064  parserData->solutionIdx++;
2065  }
2066  break;
2067 
2068  case 87:
2069 
2070  {if((yyvsp[(3) - (4)].ival) >= 0) osrlerror(NULL, NULL, NULL, "target objective index must be negative");
2071 *(parserData->objectiveIdx + parserData->solutionIdx) = (yyvsp[(3) - (4)].ival);}
2072  break;
2073 
2074  case 88:
2075 
2076  {if(parserData->statusTypePresent == false) osrlerror(NULL, NULL, NULL, "a type attribute required for status element"); osresult->setSolutionStatus(parserData->solutionIdx, parserData->statusType, parserData->statusDescription);}
2077  break;
2078 
2079  case 89:
2080 
2081  {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);}
2082  break;
2083 
2084  case 92:
2085 
2086  {parserData->statusType = (yyvsp[(2) - (3)].sval); parserData->statusTypePresent = true; free((yyvsp[(2) - (3)].sval));}
2087  break;
2088 
2089  case 93:
2090 
2091  {parserData->statusType = ""; parserData->statusTypePresent = true;}
2092  break;
2093 
2094  case 94:
2095 
2096  {parserData->statusDescription = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
2097  break;
2098 
2099  case 95:
2100 
2101  {parserData->statusDescription = "";}
2102  break;
2103 
2104  case 97:
2105 
2106  {osresult->optimization->solution[parserData->solutionIdx]->message = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
2107  break;
2108 
2109  case 98:
2110 
2111  {osresult->optimization->solution[parserData->solutionIdx]->message = "";}
2112  break;
2113 
2114  case 101:
2115 
2116  { parserData->kounter = 0;}
2117  break;
2118 
2119  case 102:
2120 
2121  { osresult->setNumberOfOtherVariableResults(parserData->solutionIdx, (yyvsp[(3) - (4)].ival));
2122  /*osresult->optimization->solution[parserData->solutionIdx]->variables->numberOfOtherVariableResults = $3*/;
2123  parserData->kounter = 0;
2124  parserData->iOther = 0;
2125  parserData->tmpOtherValue = "";
2126  parserData->tmpOtherName = "";
2127  parserData->tmpOtherDescription = "";
2128  }
2129  break;
2130 
2131  case 103:
2132 
2133  {osresult->setNumberOfPrimalVariableValues(parserData->solutionIdx, (yyvsp[(3) - (4)].ival));
2134  /*osresult->optimization->solution[parserData->solutionIdx]->variables->values->numberOfVar = $3;*/
2135  }
2136  break;
2137 
2138  case 106:
2139 
2140  {
2141  if (parserData->kounter == osresult->optimization->solution[parserData->solutionIdx]->variables->values->numberOfVar)
2142  osrlerror(NULL, NULL, NULL, "too many variables");
2143 
2144  if (parserData->ivar < 0 || parserData->ivar > parserData->numberOfVariables - 1)
2145  osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
2146 
2147 
2148  *(parserData->primalSolution[parserData->solutionIdx] + parserData->ivar ) = parserData->tempVal;
2149  osresult->optimization->solution[parserData->solutionIdx]->variables->values->var.push_back(new VarValue());
2150  osresult->optimization->solution[parserData->solutionIdx]->variables->values->var[parserData->kounter]->idx = parserData->ivar;
2151  osresult->optimization->solution[parserData->solutionIdx]->variables->values->var[parserData->kounter]->value = parserData->tempVal;
2152 
2153 
2154  parserData->kounter++;
2155 }
2156  break;
2157 
2158  case 107:
2159 
2160  {parserData->tempVal = (yyvsp[(1) - (1)].ival);}
2161  break;
2162 
2163  case 108:
2164 
2165  {parserData->tempVal = (yyvsp[(1) - (1)].dval);}
2166  break;
2167 
2168  case 111:
2169 
2170  {
2171 
2172  parserData->otherVarVec.push_back( parserData->otherVarStruct);
2173  parserData->numberOfOtherVariableResults++;
2174  parserData->otherNamePresent = false;
2175 
2176 
2177  osresult->setAnOtherVariableResult(parserData->solutionIdx, parserData->iOther, parserData->otherVarStruct->name,
2178  parserData->otherVarStruct->description, parserData->otherVarStruct->otherVarIndex, parserData->otherVarStruct->otherVarText,
2179  parserData->otherVarStruct->numberOfVar );
2180 
2181 
2182  std::cout << "Other Name = " << parserData->otherVarStruct->name << std::endl;
2183  std::cout << "Description = " << parserData->otherVarStruct->description << std::endl;
2184 
2185 
2186  parserData->iOther++;
2187  parserData->tmpOtherName = "";
2188  parserData->tmpOtherValue = "";
2189  parserData->tmpOtherDescription = "";
2190 
2191  /*
2192  if (osresult->optimization == NULL)
2193  osresult->optimization = new OptimizationResult();
2194 
2195  if (osresult->optimization->solution == NULL)
2196  { osresult->optimization->solution = new OptimizationSolution*();
2197  for (int i = 0; i < parserData->numberOfSolutions; i++)
2198  osresult->optimization->solution[i] = new OptimizationSolution();
2199  }
2200  if (osresult->optimization->solution[parserData->solutionIdx]->variables == NULL){
2201  osresult->optimization->solution[parserData->solutionIdx]->variables = new VariableSolution();
2202  osresult->optimization->solution[parserData->solutionIdx]->variables->other = new OtherVariableResult*[osresult->getNumberOfOtherVariableResults(parserData->solutionIdx)];
2203  }
2204  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther] = new OtherVariableResult();
2205  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->name = parserData->tmpOtherName;
2206  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->value = parserData->tmpOtherValue;
2207  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->description = parserData->tmpOtherDescription;
2208  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->numberOfVar = parserData->otherVarStruct->numberOfVar;
2209  */
2210 
2211 
2212  }
2213  break;
2214 
2215  case 112:
2216 
2217  { // parserData->numberOfOtherVariableResults++;
2218  parserData->otherVarStruct = new OtherVariableResultStruct();
2219  parserData->otherVarStruct->otherVarText = new std::string[parserData->numberOfVariables];
2220  parserData->otherVarStruct->otherVarIndex = new int[parserData->numberOfVariables];
2221  parserData->kounter = 0;
2222  }
2223  break;
2224 
2225  case 113:
2226 
2227  { if(parserData->otherNamePresent == false)
2228  osrlerror(NULL, NULL, NULL, "other element requires name attribute");
2229  }
2230  break;
2231 
2232  case 119:
2233 
2234  {parserData->otherVarStruct->numberOfVar = (yyvsp[(3) - (4)].ival);
2235  osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->numberOfVar = (yyvsp[(3) - (4)].ival);
2236 }
2237  break;
2238 
2239  case 120:
2240 
2241  {parserData->tmpOtherValue=""; parserData->otherVarStruct->value = ""; osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->value = "";}
2242  break;
2243 
2244  case 121:
2245 
2246  {printf("\nset tmpOtherValue: %s\n",(yyvsp[(2) - (3)].sval)); parserData->tmpOtherValue=(yyvsp[(2) - (3)].sval); parserData->otherVarStruct->value = (yyvsp[(2) - (3)].sval); osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->value = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
2247  break;
2248 
2249  case 122:
2250 
2251  { parserData->tmpOtherName=""; parserData->otherNamePresent = true; parserData->otherVarStruct->name = "";
2252  // osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->name = "";
2253 }
2254  break;
2255 
2256  case 123:
2257 
2258  {printf("\nset tmpOtherName: %s\n",(yyvsp[(2) - (3)].sval)); parserData->tmpOtherName=(yyvsp[(2) - (3)].sval); parserData->otherNamePresent = true; parserData->otherVarStruct->name = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));
2259  // osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->name = $2;
2260 }
2261  break;
2262 
2263  case 124:
2264 
2265  {printf("\nset tmpOtherDescription: %s\n",(yyvsp[(2) - (3)].sval)); parserData->tmpOtherDescription=(yyvsp[(2) - (3)].sval); parserData->otherVarStruct->description = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));
2266  //osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->description = $2;
2267 }
2268  break;
2269 
2270  case 127:
2271 
2272  {
2273 parserData->otherVarStruct->otherVarText[parserData->kounter] = parserData->outStr.str();
2274 //reset the buffer;
2275 parserData->outStr.str("");
2276 parserData->otherVarStruct->otherVarIndex[parserData->kounter] = parserData->ivar;
2277 parserData->errorText = NULL;
2278 if (parserData->kounter == osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->numberOfVar)
2279  osrlerror(NULL, NULL, NULL, "too many variables");
2280 if (parserData->ivar < 0 || parserData->ivar > parserData->numberOfVariables - 1)
2281  osrlerror(NULL, NULL, NULL, "index must be greater than 0 and less than the number of variables");
2282 
2283 //osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->var.push_back(new OtherVarResult());
2284 //osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->var[parserData->kounter]->idx = parserData->ivar;
2285 //osresult->optimization->solution[parserData->solutionIdx]->variables->other[parserData->iOther]->var[parserData->kounter]->value = parserData->tempVal;
2286 
2287 
2288 
2289 parserData->kounter++;
2290 }
2291  break;
2292 
2293  case 128:
2294 
2295  {/*std::cout << "FOUND OTHER ELEMENT TEXT" << std::endl;*/ parserData->outStr << (yyvsp[(1) - (1)].sval); /*free($1);*/ }
2296  break;
2297 
2298  case 129:
2299 
2300  {/*std::cout << "FOUND OTHER ELEMENT INTEGER" << std::endl;*/ parserData->outStr << (yyvsp[(1) - (1)].ival); /*free($1);*/ }
2301  break;
2302 
2303  case 130:
2304 
2305  {/*std::cout << "FOUND OTHER ELEMENT DOUBLE" << std::endl;*/ parserData->outStr << (yyvsp[(1) - (1)].dval); /*free($1);*/ }
2306  break;
2307 
2308  case 131:
2309 
2310  { if(parserData->otherVarStruct->numberOfVar <= 0)
2311  osrlerror(NULL, NULL, parserData, "must specify the number of variables") ;
2312  }
2313  break;
2314 
2315  case 137:
2316 
2317  { /* *( parserData->objectiveValues[parserData->solutionIdx] + (parserData->kounter + parserData->numberOfObjectives)) = $4;*/
2318 }
2319  break;
2320 
2321  case 138:
2322 
2323  {/* *(parserData->objectiveValues[parserData->solutionIdx] + (parserData->kounter + parserData->numberOfObjectives)) = $4; */}
2324  break;
2325 
2326  case 140:
2327 
2328  {
2329  if( parserData->numberOfConstraints > 0){
2330  parserData->dualSolution = new double*[ parserData->numberOfSolutions];
2331  for(int i = 0; i < parserData->numberOfSolutions; i++){
2332  parserData->dualSolution[ i] = new double[ parserData->numberOfConstraints];
2333  }
2334  }
2335 }
2336  break;
2337 
2338  case 145:
2339 
2340  {
2341  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");
2342  *(parserData->dualSolution[parserData->solutionIdx] + parserData->kounter) = (yyvsp[(4) - (5)].dval);}
2343  break;
2344 
2345  case 146:
2346 
2347  {
2348  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");
2349  *(parserData->dualSolution[parserData->solutionIdx] + parserData->kounter) = (yyvsp[(4) - (5)].ival);}
2350  break;
2351 
2352  case 147:
2353 
2354  {parserData->ivar = (yyvsp[(2) - (3)].ival);}
2355  break;
2356 
2357  case 152:
2358 
2359  {printf("\nprocessed SOLUTIONEND\n");}
2360  break;
2361 
2362  case 153:
2363 
2364  {printf("\nprocessed SOLUTIONEND\n");}
2365  break;
2366 
2367 
2368 /* Line 1267 of yacc.c. */
2369 
2370  default: break;
2371  }
2372  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2373 
2374  YYPOPSTACK (yylen);
2375  yylen = 0;
2376  YY_STACK_PRINT (yyss, yyssp);
2377 
2378  *++yyvsp = yyval;
2379  *++yylsp = yyloc;
2380 
2381  /* Now `shift' the result of the reduction. Determine what state
2382  that goes to, based on the state we popped back to and the rule
2383  number reduced by. */
2384 
2385  yyn = yyr1[yyn];
2386 
2387  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2388  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2389  yystate = yytable[yystate];
2390  else
2391  yystate = yydefgoto[yyn - YYNTOKENS];
2392 
2393  goto yynewstate;
2394 
2395 
2396 /*------------------------------------.
2397 | yyerrlab -- here on detecting error |
2398 `------------------------------------*/
2399 yyerrlab:
2400  /* If not already recovering from an error, report this error. */
2401  if (!yyerrstatus)
2402  {
2404 #if ! YYERROR_VERBOSE
2405  yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
2406 #else
2407  {
2408  YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2409  if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2410  {
2411  YYSIZE_T yyalloc = 2 * yysize;
2412  if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2413  yyalloc = YYSTACK_ALLOC_MAXIMUM;
2414  if (yymsg != yymsgbuf)
2415  YYSTACK_FREE (yymsg);
2416  yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2417  if (yymsg)
2418  yymsg_alloc = yyalloc;
2419  else
2420  {
2421  yymsg = yymsgbuf;
2422  yymsg_alloc = sizeof yymsgbuf;
2423  }
2424  }
2425 
2426  if (0 < yysize && yysize <= yymsg_alloc)
2427  {
2428  (void) yysyntax_error (yymsg, yystate, yychar);
2429  yyerror (&yylloc, osresult, parserData, yymsg);
2430  }
2431  else
2432  {
2433  yyerror (&yylloc, osresult, parserData, YY_("syntax error"));
2434  if (yysize != 0)
2435  goto yyexhaustedlab;
2436  }
2437  }
2438 #endif
2439  }
2440 
2441  yyerror_range[0] = yylloc;
2442 
2443  if (yyerrstatus == 3)
2444  {
2445  /* If just tried and failed to reuse look-ahead token after an
2446  error, discard it. */
2447 
2448  if (yychar <= YYEOF)
2449  {
2450  /* Return failure if at end of input. */
2451  if (yychar == YYEOF)
2452  YYABORT;
2453  }
2454  else
2455  {
2456  yydestruct ("Error: discarding",
2457  yytoken, &yylval, &yylloc, osresult, parserData);
2458  yychar = YYEMPTY;
2459  }
2460  }
2461 
2462  /* Else will try to reuse look-ahead token after shifting the error
2463  token. */
2465 
2466 
2467 /*---------------------------------------------------.
2468 | yyerrorlab -- error raised explicitly by YYERROR. |
2469 `---------------------------------------------------*/
2470 yyerrorlab:
2471 
2472  /* Pacify compilers like GCC when the user code never invokes
2473  YYERROR and the label yyerrorlab therefore never appears in user
2474  code. */
2475  if (/*CONSTCOND*/ 0)
2476  goto yyerrorlab;
2477 
2478  yyerror_range[0] = yylsp[1-yylen];
2479  /* Do not reclaim the symbols of the rule which action triggered
2480  this YYERROR. */
2481  YYPOPSTACK (yylen);
2482  yylen = 0;
2483  YY_STACK_PRINT (yyss, yyssp);
2484  yystate = *yyssp;
2485  goto yyerrlab1;
2486 
2487 
2488 /*-------------------------------------------------------------.
2489 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2490 `-------------------------------------------------------------*/
2491 yyerrlab1:
2492  yyerrstatus = 3; /* Each real token shifted decrements this. */
2493 
2494  for (;;)
2495  {
2496  yyn = yypact[yystate];
2497  if (yyn != YYPACT_NINF)
2498  {
2499  yyn += YYTERROR;
2500  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2501  {
2502  yyn = yytable[yyn];
2503  if (0 < yyn)
2504  break;
2505  }
2506  }
2507 
2508  /* Pop the current state because it cannot handle the error token. */
2509  if (yyssp == yyss)
2510  YYABORT;
2511 
2512  yyerror_range[0] = *yylsp;
2513  yydestruct ("Error: popping",
2514  yystos[yystate], yyvsp, yylsp, osresult, parserData);
2515  YYPOPSTACK (1);
2516  yystate = *yyssp;
2517  YY_STACK_PRINT (yyss, yyssp);
2518  }
2519 
2520  if (yyn == YYFINAL)
2521  YYACCEPT;
2522 
2523  *++yyvsp = yylval;
2524 
2525  yyerror_range[1] = yylloc;
2526  /* Using YYLLOC is tempting, but would change the location of
2527  the look-ahead. YYLOC is available though. */
2528  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
2529  *++yylsp = yyloc;
2530 
2531  /* Shift the error token. */
2532  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2533 
2534  yystate = yyn;
2535  goto yynewstate;
2536 
2537 
2538 /*-------------------------------------.
2539 | yyacceptlab -- YYACCEPT comes here. |
2540 `-------------------------------------*/
2541 yyacceptlab:
2542  yyresult = 0;
2543  goto yyreturn;
2544 
2545 /*-----------------------------------.
2546 | yyabortlab -- YYABORT comes here. |
2547 `-----------------------------------*/
2548 yyabortlab:
2549  yyresult = 1;
2550  goto yyreturn;
2551 
2552 #ifndef yyoverflow
2553 /*-------------------------------------------------.
2554 | yyexhaustedlab -- memory exhaustion comes here. |
2555 `-------------------------------------------------*/
2557  yyerror (&yylloc, osresult, parserData, YY_("memory exhausted"));
2558  yyresult = 2;
2559  /* Fall through. */
2560 #endif
2561 
2562 yyreturn:
2563  if (yychar != YYEOF && yychar != YYEMPTY)
2564  yydestruct ("Cleanup: discarding lookahead",
2565  yytoken, &yylval, &yylloc, osresult, parserData);
2566  /* Do not reclaim the symbols of the rule which action triggered
2567  this YYABORT or YYACCEPT. */
2568  YYPOPSTACK (yylen);
2569  YY_STACK_PRINT (yyss, yyssp);
2570  while (yyssp != yyss)
2571  {
2572  yydestruct ("Cleanup: popping",
2573  yystos[*yyssp], yyvsp, yylsp, osresult, parserData);
2574  YYPOPSTACK (1);
2575  }
2576 #ifndef yyoverflow
2577  if (yyss != yyssa)
2578  YYSTACK_FREE (yyss);
2579 #endif
2580 #if YYERROR_VERBOSE
2581  if (yymsg != yymsgbuf)
2582  YYSTACK_FREE (yymsg);
2583 #endif
2584  /* Make sure YYID is used. */
2585  return YYID (yyresult);
2586 }
2587 
2588 
2589 
2590 
2591 
2592 void osrlerror(YYLTYPE* mytype, OSResult *osresult, OSrLParserData* parserData, const char* errormsg )
2593 {
2594  std::ostringstream outStr;
2595  std::string error = errormsg;
2596  error = "Input is either not valid or well formed: " + error;
2597  outStr << error << std::endl;
2598  outStr << "See line number: " << osrlget_lineno( scanner) << std::endl;
2599  outStr << "The offending text is: " << osrlget_text ( scanner ) << std::endl;
2600  error = outStr.str();
2601  //printf("THIS DID NOT GET DESTROYED: %s\n", parserData->errorText);
2602  //if( (parserData->errorText != NULL) && (strlen(parserData->errorText) > 0) ) free( parserData->errorText);
2603  //osrllex_destroy( scanner);
2604  throw ErrorClass( error);
2605 } //end osrlerror
2606 
2607 void yygetOSResult(const char *parsestring, OSResult *osresult, OSrLParserData *parserData) throw(ErrorClass){
2608  try{
2609  osrl_scan_string( parsestring, scanner);
2610  osrlset_lineno (1 , scanner );
2611  //
2612  // call the Bison parser
2613  //
2614  if( osrlparse( osresult, parserData) != 0) {
2615  //osrllex_destroy(scanner);
2616  throw ErrorClass( "Error parsing the OSrL");
2617  }
2618  }
2619  catch(const ErrorClass& eclass){
2620  throw ErrorClass( eclass.errormsg);
2621  }
2622 } //end yygetOSResult
2623 
2624 
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
#define YYMAXDEPTH
int yyerrstatus
#define GENERALEND
#define JOBIDSTARTANDEND
#define SYSTEMEND
#define NUMBEROFTIMESATT
goto yysetstate
#define YYID(n)
int numberOfOtherVariableResults
the number of types of variable results other than the value of the variable
YYSTYPE yyvs
#define yylval
#define INSTANCENAMEEND
char yymsgbuf[128]
#define SOLUTIONEND
std::string value
value holds the text of the value attribute of the OtherVariableResult element
#define INSTANCENAMESTART
int numberOfConstraints
total number of constraints in the model instance
bool generalStatusTypePresent
set generalStatusTypePresent to true if there is a general status attribute parsed ...
#define TIMINGINFORMATIONSTART
goto yyexhaustedlab
YYSTYPE * yyvsp
#define CONSTRAINTSEND
#define EMPTYCATEGORYATT
std::vector< OtherVariableResultStruct * > otherVarVec
store a vector of pointers to otherVarVec structures
const char * yys
unsigned short int yytype_uint16
#define YYEOF
yytype_int16 * yyss
#define YY_LOCATION_PRINT(File, Loc)
#define YYINITDEPTH
#define DESCRIPTIONATT
std::string timeUnit
#define EMPTYVALUEATT
#define YYSTACK_ALLOC
int iOther
a temporary counter to count other variable, objective and constraint results
#define NUMBEROFSOLUTIONSATT
double timeValue
the next few variables store a time measurement and associated attribute values
unsigned char yytype_uint8
#define JOBEND
static const yytype_int16 yypact[]
std::string tmpOtherValue
Provide temporary storage for attribute values associated with an OtherVarResult. ...
std::string errormsg
errormsg is the error that is causing the exception to be thrown
Definition: OSErrorClass.h:42
unsigned int numberOfSolutions
number of result solutions
#define YYPACT_NINF
int numberOfObjectives
total number of Objectives in the model instance
YYLTYPE yyloc
#define NUMBEROFCONATT
#define YYTERROR
std::string statusType
the status type of the result
The Result Class.
Definition: OSResult.h:2548
#define YYSIZE_MAXIMUM
union YYSTYPE YYSTYPE
YYSTYPE * yyvs
goto yyerrlab
#define NUMBEROFOTHERCONSTRAINTRESULTSATT
#define OSRLEND
#define SERVICENAMESTARTANDEND
#define OTHEREND
std::string name
name holds the text of the name attribute of the OtherVariableResult element
int * objectiveIdx
pointer to the array of objective function indexes in each solution
void osrlset_extra(OSrLParserData *parserData, void *yyscanner)
std::ostringstream outStr
a temporary variable to hold an output stream value
#define QUOTE
int osrllex_destroy(void *scanner)
goto yyreturn
#define YYSIZE_T
#define OSRLATTRIBUTETEXT
#define EMPTYNAMEATT
#define SYSTEMSTART
std::string tmpOtherDescription
#define YYSTACK_RELOCATE(Stack)
#define MESSAGEEND
std::string description
description holds the text of the description attribute of the OtherVariableResult element ...
bool otherNamePresent
set otherNamePresent to true if there is a name attribute in anotherVarResult
#define TIMESTART
#define YY_(msgid)
#define YYTRANSLATE(YYX)
#define VARIABLESEND
int yyn
#define NAMEATT
#define STATUSSTART
#define YYTABLE_NINF
#define EMPTYTYPEATT
static const yytype_int16 yypgoto[]
goto yybackup
yytype_int16 yyss
#define YYACCEPT
#define NUMBEROFOTHEROBJECTIVERESULTSATT
static const yytype_uint8 yyr1[]
#define YYLEX
#define yynerrs
#define YYPOPSTACK(N)
static const yytype_uint8 yytranslate[]
char * errorText
if the parser finds invalid text it is held here and we delete if the file was not valid ...
OSiLParserData * parserData
goto yydefault
#define YYUSE(e)
#define DUMMY
#define YYDPRINTF(Args)
#define VALUESEND
struct yy_buffer_state * YY_BUFFER_STATE
#define CONSTART
const char * yysrc
#define OPTIMIZATIONEND
#define GREATERTHAN
void osrlset_lineno(int line_number, yyscan_t yyscanner)
Set the current line number.
#define yychar
int numberOfTimes
There could be more than one time measurement; numberOfTimes stores the number of them...
#define yyparse
#define TIMEEND
#define OBJEND
#define CONSTRAINTSSTART
YYLTYPE * yyls
#define SERVICEURISTARTANDEND
#define NUMBEROFVARIABLESATT
char * osrlget_text(yyscan_t yyscanner)
Get the current token.
#define VAREND
static YYSIZE_T yysyntax_error(char *yyresult, int yystate, int yychar)
#define SERVICEURISTART
#define GENERALSTATUSEND
#define YYABORT
#define DUALVALUESSTART
#define CATEGORYATT
#define SERVICENAMEEND
#define CONEND
#define VARSTART
#define IDXATT
int osrlget_lineno(yyscan_t yyscanner)
Get the current line number.
#define YY_REDUCE_PRINT(Rule)
#define JOBIDEND
#define yyerror
YYSIZE_T yystacksize
#define DUALVALUESEND
#define yydebug
YY_BUFFER_STATE osrl_scan_string(yyconst char *yy_str, yyscan_t yyscanner)
Setup the input buffer state to scan a string.
short int yytype_int8
static const yytype_uint8 yyr2[]
int * otherVarIndex
otherVarIndex is a pointer to an array with number of elements equal to the number of variables...
#define dval(x)
Definition: OSdtoa.cpp:363
#define SERVICEEND
#define OBJECTIVESSTART
#define TARGETOBJECTIVEIDXATT
return yylen
int osrllex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)
OSResult * osresult
std::string timeDescription
#define OPTIMIZATIONSTART
#define OBJSTART
YYLTYPE yyerror_range[2]
short int yytype_int16
static YYSIZE_T yytnamerr(char *yyres, const char *yystr)
static void const char * yymsg
#define SERVICEURIEND
#define VARIABLESSTART
#define YYEMPTY
int yytoken
#define YYSTACK_FREE
#define OTHERSTART
#define SERVICESTART
double ** objectiveValues
for each solution we have a pointer to the value of each objective function
std::string timeCategory
#define VALUEATT
static int
Definition: OSdtoa.cpp:2173
goto yynewstate
#define OBJECTIVESEND
YYLTYPE yylsa[YYINITDEPTH]
#define INTEGER
#define ELEMENTTEXT
std::string tmpOtherName
int yytype
YYLTYPE yyls
#define TIMINGINFORMATIONEND
#define YYLAST
#define scanner
#define YY_STACK_PRINT(Bottom, Top)
int yyresult
int ivar
a temporary counter to count second-level objects
return yyd
#define ENDOFELEMENT
static const yytype_uint16 yytable[]
int osrllex_init(void **ptr_yy_globals)
#define MESSAGESTARTANDEND
#define yylloc
std::string * otherVarText
otherVarText is a pointer to an array with number of elements equal to the number of variables...
#define NUMBEROFOBJECTIVESATT
#define NUMBEROFVARATT
void osrlerror(YYLTYPE *type, OSResult *osresult, OSrLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData, std::string errormsg)
#define TIMESTARTANDEND
bool statusTypePresent
set statusTypePresent to true if there is a status attribute parsed
goto yyerrlab1
static const char *const yytname[]
#define DOUBLE
VarValue Class.
Definition: OSResult.h:847
yytype_int16 yyssa[YYINITDEPTH]
YYLTYPE * yylocationp
static const yytype_uint8 yydefact[]
yytokentype
goto yyreduce
#define GENERALSTART
int kounter
a temporary counter to count variables, number of attributes, etc.
A structure to information about an OtherVariableResult element.
#define JOBIDSTART
YYLTYPE * yylsp
#define OSRLSTART
static void
Definition: OSdtoa.cpp:1741
#define TWOQUOTES
int yystate
#define VALUESSTART
void yygetOSResult(const char *ch, OSResult *m_osresult, OSrLParserData *m_parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
#define YYSTACK_ALLOC_MAXIMUM
#define MESSAGESTART
#define NUMBEROFCONSTRAINTSATT
#define GENERALSTATUSSTART
#define INSTANCENAMESTARTANDEND
YYSTYPE yyval
YYSIZE_T yymsg_alloc
#define SERVICENAMESTART
std::string timeType
static char *char * yydest
int numberOfVariables
total number of variables in the model instance
unsigned int solutionIdx
an index of which solution we have found
#define UNITATT
static const yytype_int16 yycheck[]
#define YYLLOC_DEFAULT(Current, Rhs, N)
struct YYLTYPE YYLTYPE
#define YYSTACK_BYTES(N)
#define EMPTYUNITATT
#define ATTRIBUTETEXT
static const yytype_int16 yydefgoto[]
#define YYFINAL
#define SOLUTIONSTART
#define STATUSEND
yytype_int16 * yyssp
used for throwing exceptions.
Definition: OSErrorClass.h:31
#define JOBSTART
struct OtherVariableResultStruct * otherVarStruct
a pointer to an OtherVariableResultStruct structure
double tempVal
a temporary variable to hold an integer or double value
The OSrLParserData Class.
#define OSRLSTARTEMPTY
static const yytype_uint8 yystos[]
#define YYNTOKENS
#define TYPEATT
#define NUMBEROFOBJATT
int numberOfVar
numberOfVar holds the number of variables in the array of the OtherVariableResult element ...
YYSTYPE * yyvaluep
static YYSIZE_T const char * yystr
double ** dualSolution
for each solution we have a pointer to each dual solution
double ** primalSolution
for each solution we have a pointer to each primal solution
YYSTYPE yyvsa[YYINITDEPTH]
std::string statusDescription
the status Description of the solution
#define EMPTYDESCRIPTIONATT
#define NUMBEROFOTHERVARIABLERESULTSATT