/home/coin/SVN-release/OS-2.3.3/OS/src/OSParsers/OSParseosol.tab.cpp

Go to the documentation of this file.
00001 /* A Bison parser, made by GNU Bison 2.3.  */
00002 
00003 /* Skeleton implementation for Bison's Yacc-like parsers in C
00004 
00005    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
00006    Free Software Foundation, Inc.
00007 
00008    This program is free software; you can redistribute it and/or modify
00009    it under the terms of the GNU General Public License as published by
00010    the Free Software Foundation; either version 2, or (at your option)
00011    any later version.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 51 Franklin Street, Fifth Floor,
00021    Boston, MA 02110-1301, USA.  */
00022 
00023 /* As a special exception, you may create a larger work that contains
00024    part or all of the Bison parser skeleton and distribute that work
00025    under terms of your choice, so long as that work isn't itself a
00026    parser generator using the skeleton or a modified version thereof
00027    as a parser skeleton.  Alternatively, if you modify or redistribute
00028    the parser skeleton itself, you may (at your option) remove this
00029    special exception, which will cause the skeleton and the resulting
00030    Bison output files to be licensed under the GNU General Public
00031    License without this special exception.
00032 
00033    This special exception was added by the Free Software Foundation in
00034    version 2.2 of Bison.  */
00035 
00036 /* C LALR(1) parser skeleton written by Richard Stallman, by
00037    simplifying the original so-called "semantic" parser.  */
00038 
00039 /* All symbols defined below should begin with yy or YY, to avoid
00040    infringing on user name space.  This should be done even for local
00041    variables, as they might otherwise be expanded by user macros.
00042    There are some unavoidable exceptions within include files to
00043    define necessary library symbols; they are noted "INFRINGES ON
00044    USER NAME SPACE" below.  */
00045 
00046 /* Identify Bison output.  */
00047 #define YYBISON 1
00048 
00049 /* Bison version.  */
00050 #define YYBISON_VERSION "2.3"
00051 
00052 /* Skeleton name.  */
00053 #define YYSKELETON_NAME "yacc.c"
00054 
00055 /* Pure parsers.  */
00056 #define YYPURE 1
00057 
00058 /* Using locations.  */
00059 #define YYLSP_NEEDED 1
00060 
00061 /* Substitute the variable and function names.  */
00062 #define yyparse osolparse
00063 #define yylex   osollex
00064 #define yyerror osolerror
00065 #define yylval  osollval
00066 #define yychar  osolchar
00067 #define yydebug osoldebug
00068 #define yynerrs osolnerrs
00069 #define yylloc osollloc
00070 
00071 /* Tokens.  */
00072 #ifndef YYTOKENTYPE
00073 # define YYTOKENTYPE
00074    /* Put the tokens into the symbol table, so that GDB and other debuggers
00075       know about them.  */
00076    enum yytokentype {
00077      ATTRIBUTETEXT = 258,
00078      ELEMENTTEXT = 259,
00079      INTEGER = 260,
00080      DOUBLE = 261,
00081      QUOTE = 262,
00082      TWOQUOTES = 263,
00083      GREATERTHAN = 264,
00084      ENDOFELEMENT = 265,
00085      OSOLSTART = 266,
00086      OSOLSTARTEMPTY = 267,
00087      OSOLATTRIBUTETEXT = 268,
00088      OSOLEND = 269,
00089      LOCATIONTYPEATT = 270,
00090      TRANSPORTTYPEATT = 271,
00091      NUMBEROFOTHEROPTIONSATT = 272,
00092      NUMBEROFJOBIDSATT = 273,
00093      NUMBEROFPATHSATT = 274,
00094      NUMBEROFPATHPAIRSATT = 275,
00095      FROMATT = 276,
00096      TOATT = 277,
00097      MAKECOPYATT = 278,
00098      SOLVERATT = 279,
00099      CATEGORYATT = 280,
00100      TYPEATT = 281,
00101      GROUPWEIGHTATT = 282,
00102      NUMBEROFPROCESSESATT = 283,
00103      NUMBEROFSOLVEROPTIONSATT = 284,
00104      NUMBEROFSOSATT = 285,
00105      NUMBEROFVARIABLESATT = 286,
00106      NUMBEROFOBJECTIVESATT = 287,
00107      NUMBEROFCONSTRAINTSATT = 288,
00108      NUMBEROFOTHERVARIABLEOPTIONSATT = 289,
00109      NUMBEROFOTHEROBJECTIVEOPTIONSATT = 290,
00110      NUMBEROFOTHERCONSTRAINTOPTIONSATT = 291,
00111      NUMBEROFVARATT = 292,
00112      NUMBEROFOBJATT = 293,
00113      NUMBEROFCONATT = 294,
00114      NAMEATT = 295,
00115      IDXATT = 296,
00116      SOSIDXATT = 297,
00117      VALUEATT = 298,
00118      UNITATT = 299,
00119      DESCRIPTIONATT = 300,
00120      LBVALUEATT = 301,
00121      UBVALUEATT = 302,
00122      LBDUALVALUEATT = 303,
00123      UBDUALVALUEATT = 304,
00124      GENERALSTART = 305,
00125      GENERALEND = 306,
00126      SYSTEMSTART = 307,
00127      SYSTEMEND = 308,
00128      SERVICESTART = 309,
00129      SERVICEEND = 310,
00130      JOBSTART = 311,
00131      JOBEND = 312,
00132      OPTIMIZATIONSTART = 313,
00133      OPTIMIZATIONEND = 314,
00134      SERVICEURISTART = 315,
00135      SERVICEURIEND = 316,
00136      SERVICENAMESTART = 317,
00137      SERVICENAMEEND = 318,
00138      INSTANCENAMESTART = 319,
00139      INSTANCENAMEEND = 320,
00140      INSTANCELOCATIONSTART = 321,
00141      INSTANCELOCATIONEND = 322,
00142      JOBIDSTART = 323,
00143      JOBIDEND = 324,
00144      SOLVERTOINVOKESTART = 325,
00145      SOLVERTOINVOKEEND = 326,
00146      LICENSESTART = 327,
00147      LICENSEEND = 328,
00148      USERNAMESTART = 329,
00149      USERNAMEEND = 330,
00150      PASSWORDSTART = 331,
00151      PASSWORDEND = 332,
00152      CONTACTSTART = 333,
00153      CONTACTEND = 334,
00154      OTHEROPTIONSSTART = 335,
00155      OTHEROPTIONSEND = 336,
00156      OTHERSTART = 337,
00157      OTHEREND = 338,
00158      MINDISKSPACESTART = 339,
00159      MINDISKSPACEEND = 340,
00160      MINMEMORYSIZESTART = 341,
00161      MINMEMORYSIZEEND = 342,
00162      MINCPUSPEEDSTART = 343,
00163      MINCPUSPEEDEND = 344,
00164      MINCPUNUMBERSTART = 345,
00165      MINCPUNUMBEREND = 346,
00166      SERVICETYPESTART = 347,
00167      SERVICETYPEEND = 348,
00168      MAXTIMESTART = 349,
00169      MAXTIMEEND = 350,
00170      REQUESTEDSTARTTIMESTART = 351,
00171      REQUESTEDSTARTTIMEEND = 352,
00172      DEPENDENCIESSTART = 353,
00173      DEPENDENCIESEND = 354,
00174      REQUIREDDIRECTORIESSTART = 355,
00175      REQUIREDDIRECTORIESEND = 356,
00176      REQUIREDFILESSTART = 357,
00177      REQUIREDFILESEND = 358,
00178      PATHSTART = 359,
00179      PATHEND = 360,
00180      PATHPAIRSTART = 361,
00181      PATHPAIREND = 362,
00182      DIRECTORIESTOMAKESTART = 363,
00183      DIRECTORIESTOMAKEEND = 364,
00184      FILESTOMAKESTART = 365,
00185      FILESTOMAKEEND = 366,
00186      DIRECTORIESTODELETESTART = 367,
00187      DIRECTORIESTODELETEEND = 368,
00188      FILESTODELETESTART = 369,
00189      FILESTODELETEEND = 370,
00190      INPUTDIRECTORIESTOMOVESTART = 371,
00191      INPUTDIRECTORIESTOMOVEEND = 372,
00192      INPUTFILESTOMOVESTART = 373,
00193      INPUTFILESTOMOVEEND = 374,
00194      OUTPUTDIRECTORIESTOMOVESTART = 375,
00195      OUTPUTDIRECTORIESTOMOVEEND = 376,
00196      OUTPUTFILESTOMOVESTART = 377,
00197      OUTPUTFILESTOMOVEEND = 378,
00198      PROCESSESTOKILLSTART = 379,
00199      PROCESSESTOKILLEND = 380,
00200      PROCESSSTART = 381,
00201      PROCESSEND = 382,
00202      VARIABLESSTART = 383,
00203      VARIABLESEND = 384,
00204      INITIALVARIABLEVALUESSTART = 385,
00205      INITIALVARIABLEVALUESEND = 386,
00206      VARSTART = 387,
00207      VAREND = 388,
00208      INITIALVARIABLEVALUESSTRINGSTART = 389,
00209      INITIALVARIABLEVALUESSTRINGEND = 390,
00210      INITIALBASISSTATUSSTART = 391,
00211      INITIALBASISSTATUSEND = 392,
00212      INTEGERVARIABLEBRANCHINGWEIGHTSSTART = 393,
00213      INTEGERVARIABLEBRANCHINGWEIGHTSEND = 394,
00214      SOSVARIABLEBRANCHINGWEIGHTSSTART = 395,
00215      SOSVARIABLEBRANCHINGWEIGHTSEND = 396,
00216      SOSSTART = 397,
00217      SOSEND = 398,
00218      OBJECTIVESSTART = 399,
00219      OBJECTIVESEND = 400,
00220      INITIALOBJECTIVEVALUESSTART = 401,
00221      INITIALOBJECTIVEVALUESEND = 402,
00222      OBJSTART = 403,
00223      OBJEND = 404,
00224      INITIALOBJECTIVEBOUNDSSTART = 405,
00225      INITIALOBJECTIVEBOUNDSEND = 406,
00226      CONSTRAINTSSTART = 407,
00227      CONSTRAINTSEND = 408,
00228      INITIALCONSTRAINTVALUESSTART = 409,
00229      INITIALCONSTRAINTVALUESEND = 410,
00230      CONSTART = 411,
00231      CONEND = 412,
00232      INITIALDUALVALUESSTART = 413,
00233      INITIALDUALVALUESEND = 414,
00234      SOLVEROPTIONSSTART = 415,
00235      SOLVEROPTIONSEND = 416,
00236      SOLVEROPTIONSTART = 417,
00237      SOLVEROPTIONEND = 418,
00238      DUMMY = 419
00239    };
00240 #endif
00241 /* Tokens.  */
00242 #define ATTRIBUTETEXT 258
00243 #define ELEMENTTEXT 259
00244 #define INTEGER 260
00245 #define DOUBLE 261
00246 #define QUOTE 262
00247 #define TWOQUOTES 263
00248 #define GREATERTHAN 264
00249 #define ENDOFELEMENT 265
00250 #define OSOLSTART 266
00251 #define OSOLSTARTEMPTY 267
00252 #define OSOLATTRIBUTETEXT 268
00253 #define OSOLEND 269
00254 #define LOCATIONTYPEATT 270
00255 #define TRANSPORTTYPEATT 271
00256 #define NUMBEROFOTHEROPTIONSATT 272
00257 #define NUMBEROFJOBIDSATT 273
00258 #define NUMBEROFPATHSATT 274
00259 #define NUMBEROFPATHPAIRSATT 275
00260 #define FROMATT 276
00261 #define TOATT 277
00262 #define MAKECOPYATT 278
00263 #define SOLVERATT 279
00264 #define CATEGORYATT 280
00265 #define TYPEATT 281
00266 #define GROUPWEIGHTATT 282
00267 #define NUMBEROFPROCESSESATT 283
00268 #define NUMBEROFSOLVEROPTIONSATT 284
00269 #define NUMBEROFSOSATT 285
00270 #define NUMBEROFVARIABLESATT 286
00271 #define NUMBEROFOBJECTIVESATT 287
00272 #define NUMBEROFCONSTRAINTSATT 288
00273 #define NUMBEROFOTHERVARIABLEOPTIONSATT 289
00274 #define NUMBEROFOTHEROBJECTIVEOPTIONSATT 290
00275 #define NUMBEROFOTHERCONSTRAINTOPTIONSATT 291
00276 #define NUMBEROFVARATT 292
00277 #define NUMBEROFOBJATT 293
00278 #define NUMBEROFCONATT 294
00279 #define NAMEATT 295
00280 #define IDXATT 296
00281 #define SOSIDXATT 297
00282 #define VALUEATT 298
00283 #define UNITATT 299
00284 #define DESCRIPTIONATT 300
00285 #define LBVALUEATT 301
00286 #define UBVALUEATT 302
00287 #define LBDUALVALUEATT 303
00288 #define UBDUALVALUEATT 304
00289 #define GENERALSTART 305
00290 #define GENERALEND 306
00291 #define SYSTEMSTART 307
00292 #define SYSTEMEND 308
00293 #define SERVICESTART 309
00294 #define SERVICEEND 310
00295 #define JOBSTART 311
00296 #define JOBEND 312
00297 #define OPTIMIZATIONSTART 313
00298 #define OPTIMIZATIONEND 314
00299 #define SERVICEURISTART 315
00300 #define SERVICEURIEND 316
00301 #define SERVICENAMESTART 317
00302 #define SERVICENAMEEND 318
00303 #define INSTANCENAMESTART 319
00304 #define INSTANCENAMEEND 320
00305 #define INSTANCELOCATIONSTART 321
00306 #define INSTANCELOCATIONEND 322
00307 #define JOBIDSTART 323
00308 #define JOBIDEND 324
00309 #define SOLVERTOINVOKESTART 325
00310 #define SOLVERTOINVOKEEND 326
00311 #define LICENSESTART 327
00312 #define LICENSEEND 328
00313 #define USERNAMESTART 329
00314 #define USERNAMEEND 330
00315 #define PASSWORDSTART 331
00316 #define PASSWORDEND 332
00317 #define CONTACTSTART 333
00318 #define CONTACTEND 334
00319 #define OTHEROPTIONSSTART 335
00320 #define OTHEROPTIONSEND 336
00321 #define OTHERSTART 337
00322 #define OTHEREND 338
00323 #define MINDISKSPACESTART 339
00324 #define MINDISKSPACEEND 340
00325 #define MINMEMORYSIZESTART 341
00326 #define MINMEMORYSIZEEND 342
00327 #define MINCPUSPEEDSTART 343
00328 #define MINCPUSPEEDEND 344
00329 #define MINCPUNUMBERSTART 345
00330 #define MINCPUNUMBEREND 346
00331 #define SERVICETYPESTART 347
00332 #define SERVICETYPEEND 348
00333 #define MAXTIMESTART 349
00334 #define MAXTIMEEND 350
00335 #define REQUESTEDSTARTTIMESTART 351
00336 #define REQUESTEDSTARTTIMEEND 352
00337 #define DEPENDENCIESSTART 353
00338 #define DEPENDENCIESEND 354
00339 #define REQUIREDDIRECTORIESSTART 355
00340 #define REQUIREDDIRECTORIESEND 356
00341 #define REQUIREDFILESSTART 357
00342 #define REQUIREDFILESEND 358
00343 #define PATHSTART 359
00344 #define PATHEND 360
00345 #define PATHPAIRSTART 361
00346 #define PATHPAIREND 362
00347 #define DIRECTORIESTOMAKESTART 363
00348 #define DIRECTORIESTOMAKEEND 364
00349 #define FILESTOMAKESTART 365
00350 #define FILESTOMAKEEND 366
00351 #define DIRECTORIESTODELETESTART 367
00352 #define DIRECTORIESTODELETEEND 368
00353 #define FILESTODELETESTART 369
00354 #define FILESTODELETEEND 370
00355 #define INPUTDIRECTORIESTOMOVESTART 371
00356 #define INPUTDIRECTORIESTOMOVEEND 372
00357 #define INPUTFILESTOMOVESTART 373
00358 #define INPUTFILESTOMOVEEND 374
00359 #define OUTPUTDIRECTORIESTOMOVESTART 375
00360 #define OUTPUTDIRECTORIESTOMOVEEND 376
00361 #define OUTPUTFILESTOMOVESTART 377
00362 #define OUTPUTFILESTOMOVEEND 378
00363 #define PROCESSESTOKILLSTART 379
00364 #define PROCESSESTOKILLEND 380
00365 #define PROCESSSTART 381
00366 #define PROCESSEND 382
00367 #define VARIABLESSTART 383
00368 #define VARIABLESEND 384
00369 #define INITIALVARIABLEVALUESSTART 385
00370 #define INITIALVARIABLEVALUESEND 386
00371 #define VARSTART 387
00372 #define VAREND 388
00373 #define INITIALVARIABLEVALUESSTRINGSTART 389
00374 #define INITIALVARIABLEVALUESSTRINGEND 390
00375 #define INITIALBASISSTATUSSTART 391
00376 #define INITIALBASISSTATUSEND 392
00377 #define INTEGERVARIABLEBRANCHINGWEIGHTSSTART 393
00378 #define INTEGERVARIABLEBRANCHINGWEIGHTSEND 394
00379 #define SOSVARIABLEBRANCHINGWEIGHTSSTART 395
00380 #define SOSVARIABLEBRANCHINGWEIGHTSEND 396
00381 #define SOSSTART 397
00382 #define SOSEND 398
00383 #define OBJECTIVESSTART 399
00384 #define OBJECTIVESEND 400
00385 #define INITIALOBJECTIVEVALUESSTART 401
00386 #define INITIALOBJECTIVEVALUESEND 402
00387 #define OBJSTART 403
00388 #define OBJEND 404
00389 #define INITIALOBJECTIVEBOUNDSSTART 405
00390 #define INITIALOBJECTIVEBOUNDSEND 406
00391 #define CONSTRAINTSSTART 407
00392 #define CONSTRAINTSEND 408
00393 #define INITIALCONSTRAINTVALUESSTART 409
00394 #define INITIALCONSTRAINTVALUESEND 410
00395 #define CONSTART 411
00396 #define CONEND 412
00397 #define INITIALDUALVALUESSTART 413
00398 #define INITIALDUALVALUESEND 414
00399 #define SOLVEROPTIONSSTART 415
00400 #define SOLVEROPTIONSEND 416
00401 #define SOLVEROPTIONSTART 417
00402 #define SOLVEROPTIONEND 418
00403 #define DUMMY 419
00404 
00405 
00406 
00407 
00408 /* Copy the first part of user declarations.  */
00409 
00410 
00411 
00412 
00413 #include "OSDataStructures.h"
00414 #include "OSMathUtil.h"
00415 #include "OSParameters.h"
00416 #include "OSConfig.h"
00417 #include "OSGeneral.h"
00418 #include "OSErrorClass.h"
00419 #include "OSOption.h"
00420 #include "OSoLParserData.h"
00421 #include <iostream>
00422 #include <sstream>
00423 #include <stdio.h>
00424 
00425 
00426 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00427 YY_BUFFER_STATE osol_scan_string (const char *yy_str , void* yyscanner  );
00428 int osollex_init(void** ptr_yy_globals);
00429 int osollex_destroy (void* yyscanner );
00430 int osolget_lineno( void* yyscanner);
00431 char *osolget_text (void* yyscanner );
00432 void osolset_lineno (int line_number , void* yyscanner );
00433 void osolset_extra (OSoLParserData* parserData , void* yyscanner );
00434 void  yygetOSOption(const char *ch, OSOption* m_osoption, OSoLParserData *m_parserData ) throw(ErrorClass);
00435 
00436 
00437 
00438 
00439 /* Enabling traces.  */
00440 #ifndef YYDEBUG
00441 # define YYDEBUG 0
00442 #endif
00443 
00444 /* Enabling verbose error messages.  */
00445 #ifdef YYERROR_VERBOSE
00446 # undef YYERROR_VERBOSE
00447 # define YYERROR_VERBOSE 1
00448 #else
00449 # define YYERROR_VERBOSE 0
00450 #endif
00451 
00452 /* Enabling the token table.  */
00453 #ifndef YYTOKEN_TABLE
00454 # define YYTOKEN_TABLE 0
00455 #endif
00456 
00457 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00458 typedef union YYSTYPE
00459 
00460 {
00461         double dval;
00462         int ival;
00463         char* sval;
00464 }
00465 /* Line 193 of yacc.c.  */
00466 
00467         YYSTYPE;
00468 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00469 # define YYSTYPE_IS_DECLARED 1
00470 # define YYSTYPE_IS_TRIVIAL 1
00471 #endif
00472 
00473 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
00474 typedef struct YYLTYPE
00475 {
00476   int first_line;
00477   int first_column;
00478   int last_line;
00479   int last_column;
00480 } YYLTYPE;
00481 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
00482 # define YYLTYPE_IS_DECLARED 1
00483 # define YYLTYPE_IS_TRIVIAL 1
00484 #endif
00485 
00486 
00487 /* Copy the second part of user declarations.  */
00488 
00489 
00490 
00491 void osolerror(YYLTYPE* type, OSOption *osoption,  OSoLParserData *parserData, const char* errormsg ) ;
00492 int osollex(YYSTYPE* lvalp,  YYLTYPE* llocp, void* scanner);
00493 
00494 #define scanner parserData->scanner
00495 
00496 
00497 /* Line 216 of yacc.c.  */
00498 
00499 
00500 #ifdef short
00501 # undef short
00502 #endif
00503 
00504 #ifdef YYTYPE_UINT8
00505 typedef YYTYPE_UINT8 yytype_uint8;
00506 #else
00507 typedef unsigned char yytype_uint8;
00508 #endif
00509 
00510 #ifdef YYTYPE_INT8
00511 typedef YYTYPE_INT8 yytype_int8;
00512 #elif (defined __STDC__ || defined __C99__FUNC__ \
00513      || defined __cplusplus || defined _MSC_VER)
00514 typedef signed char yytype_int8;
00515 #else
00516 typedef short int yytype_int8;
00517 #endif
00518 
00519 #ifdef YYTYPE_UINT16
00520 typedef YYTYPE_UINT16 yytype_uint16;
00521 #else
00522 typedef unsigned short int yytype_uint16;
00523 #endif
00524 
00525 #ifdef YYTYPE_INT16
00526 typedef YYTYPE_INT16 yytype_int16;
00527 #else
00528 typedef short int yytype_int16;
00529 #endif
00530 
00531 #ifndef YYSIZE_T
00532 # ifdef __SIZE_TYPE__
00533 #  define YYSIZE_T __SIZE_TYPE__
00534 # elif defined size_t
00535 #  define YYSIZE_T size_t
00536 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00537      || defined __cplusplus || defined _MSC_VER)
00538 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00539 #  define YYSIZE_T size_t
00540 # else
00541 #  define YYSIZE_T unsigned int
00542 # endif
00543 #endif
00544 
00545 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00546 
00547 #ifndef YY_
00548 # if defined YYENABLE_NLS && YYENABLE_NLS
00549 #  if ENABLE_NLS
00550 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00551 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00552 #  endif
00553 # endif
00554 # ifndef YY_
00555 #  define YY_(msgid) msgid
00556 # endif
00557 #endif
00558 
00559 /* Suppress unused-variable warnings by "using" E.  */
00560 #if ! defined lint || defined __GNUC__
00561 # define YYUSE(e) ((void) (e))
00562 #else
00563 # define YYUSE(e) /* empty */
00564 #endif
00565 
00566 /* Identity function, used to suppress warnings about constant conditions.  */
00567 #ifndef lint
00568 # define YYID(n) (n)
00569 #else
00570 #if (defined __STDC__ || defined __C99__FUNC__ \
00571      || defined __cplusplus || defined _MSC_VER)
00572 static int
00573 YYID (int i)
00574 #else
00575 static int
00576 YYID (i)
00577     int i;
00578 #endif
00579 {
00580   return i;
00581 }
00582 #endif
00583 
00584 #if ! defined yyoverflow || YYERROR_VERBOSE
00585 
00586 /* The parser invokes alloca or malloc; define the necessary symbols.  */
00587 
00588 # ifdef YYSTACK_USE_ALLOCA
00589 #  if YYSTACK_USE_ALLOCA
00590 #   ifdef __GNUC__
00591 #    define YYSTACK_ALLOC __builtin_alloca
00592 #   elif defined __BUILTIN_VA_ARG_INCR
00593 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
00594 #   elif defined _AIX
00595 #    define YYSTACK_ALLOC __alloca
00596 #   elif defined _MSC_VER
00597 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
00598 #    define alloca _alloca
00599 #   else
00600 #    define YYSTACK_ALLOC alloca
00601 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00602      || defined __cplusplus || defined _MSC_VER)
00603 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00604 #     ifndef _STDLIB_H
00605 #      define _STDLIB_H 1
00606 #     endif
00607 #    endif
00608 #   endif
00609 #  endif
00610 # endif
00611 
00612 # ifdef YYSTACK_ALLOC
00613    /* Pacify GCC's `empty if-body' warning.  */
00614 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
00615 #  ifndef YYSTACK_ALLOC_MAXIMUM
00616     /* The OS might guarantee only one guard page at the bottom of the stack,
00617        and a page size can be as small as 4096 bytes.  So we cannot safely
00618        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
00619        to allow for a few compiler-allocated temporary stack slots.  */
00620 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
00621 #  endif
00622 # else
00623 #  define YYSTACK_ALLOC YYMALLOC
00624 #  define YYSTACK_FREE YYFREE
00625 #  ifndef YYSTACK_ALLOC_MAXIMUM
00626 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00627 #  endif
00628 #  if (defined __cplusplus && ! defined _STDLIB_H \
00629        && ! ((defined YYMALLOC || defined malloc) \
00630              && (defined YYFREE || defined free)))
00631 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00632 #   ifndef _STDLIB_H
00633 #    define _STDLIB_H 1
00634 #   endif
00635 #  endif
00636 #  ifndef YYMALLOC
00637 #   define YYMALLOC malloc
00638 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00639      || defined __cplusplus || defined _MSC_VER)
00640 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
00641 #   endif
00642 #  endif
00643 #  ifndef YYFREE
00644 #   define YYFREE free
00645 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00646      || defined __cplusplus || defined _MSC_VER)
00647 void free (void *); /* INFRINGES ON USER NAME SPACE */
00648 #   endif
00649 #  endif
00650 # endif
00651 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
00652 
00653 
00654 #if (! defined yyoverflow \
00655      && (! defined __cplusplus \
00656          || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
00657              && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00658 
00659 /* A type that is properly aligned for any stack member.  */
00660 union yyalloc
00661 {
00662   yytype_int16 yyss;
00663   YYSTYPE yyvs;
00664     YYLTYPE yyls;
00665 };
00666 
00667 /* The size of the maximum gap between one aligned stack and the next.  */
00668 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00669 
00670 /* The size of an array large to enough to hold all stacks, each with
00671    N elements.  */
00672 # define YYSTACK_BYTES(N) \
00673      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00674       + 2 * YYSTACK_GAP_MAXIMUM)
00675 
00676 /* Copy COUNT objects from FROM to TO.  The source and destination do
00677    not overlap.  */
00678 # ifndef YYCOPY
00679 #  if defined __GNUC__ && 1 < __GNUC__
00680 #   define YYCOPY(To, From, Count) \
00681       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00682 #  else
00683 #   define YYCOPY(To, From, Count)              \
00684       do                                        \
00685         {                                       \
00686           YYSIZE_T yyi;                         \
00687           for (yyi = 0; yyi < (Count); yyi++)   \
00688             (To)[yyi] = (From)[yyi];            \
00689         }                                       \
00690       while (YYID (0))
00691 #  endif
00692 # endif
00693 
00694 /* Relocate STACK from its old location to the new one.  The
00695    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00696    elements in the stack, and YYPTR gives the new location of the
00697    stack.  Advance YYPTR to a properly aligned location for the next
00698    stack.  */
00699 # define YYSTACK_RELOCATE(Stack)                                        \
00700     do                                                                  \
00701       {                                                                 \
00702         YYSIZE_T yynewbytes;                                            \
00703         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
00704         Stack = &yyptr->Stack;                                          \
00705         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00706         yyptr += yynewbytes / sizeof (*yyptr);                          \
00707       }                                                                 \
00708     while (YYID (0))
00709 
00710 #endif
00711 
00712 /* YYFINAL -- State number of the termination state.  */
00713 #define YYFINAL  6
00714 /* YYLAST -- Last index in YYTABLE.  */
00715 #define YYLAST   795
00716 
00717 /* YYNTOKENS -- Number of terminals.  */
00718 #define YYNTOKENS  165
00719 /* YYNNTS -- Number of nonterminals.  */
00720 #define YYNNTS  522
00721 /* YYNRULES -- Number of rules.  */
00722 #define YYNRULES  775
00723 /* YYNRULES -- Number of states.  */
00724 #define YYNSTATES  1300
00725 
00726 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00727 #define YYUNDEFTOK  2
00728 #define YYMAXUTOK   419
00729 
00730 #define YYTRANSLATE(YYX)                                                \
00731   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00732 
00733 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00734 static const yytype_uint8 yytranslate[] =
00735 {
00736        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00737        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00738        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00739        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00740        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00741        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00742        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00743        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00744        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00745        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00746        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00747        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00748        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00749        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00750        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00751        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00752        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00753        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00754        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00755        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00756        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00757        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00758        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00759        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00760        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00761        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00762        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00763       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00764       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
00765       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
00766       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
00767       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
00768       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
00769       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
00770       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
00771       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
00772      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
00773      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
00774      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
00775      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
00776      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
00777      155,   156,   157,   158,   159,   160,   161,   162,   163,   164
00778 };
00779 
00780 #if YYDEBUG
00781 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00782    YYRHS.  */
00783 static const yytype_uint16 yyprhs[] =
00784 {
00785        0,     0,     3,     7,    10,    12,    16,    22,    23,    26,
00786       28,    32,    34,    35,    38,    40,    42,    44,    46,    48,
00787       50,    52,    54,    56,    58,    60,    63,    65,    67,    70,
00788       71,    76,    79,    81,    83,    86,    87,    92,    95,    97,
00789       99,   102,   103,   108,   112,   114,   115,   116,   121,   123,
00790      127,   128,   130,   133,   135,   137,   140,   141,   146,   149,
00791      151,   153,   156,   157,   162,   165,   167,   169,   172,   173,
00792      178,   181,   183,   185,   188,   189,   194,   197,   199,   201,
00793      204,   205,   210,   214,   216,   217,   218,   223,   225,   229,
00794      230,   232,   237,   239,   244,   247,   248,   251,   252,   257,
00795      258,   261,   263,   265,   267,   268,   273,   274,   279,   280,
00796      285,   287,   290,   291,   294,   296,   300,   302,   303,   306,
00797      308,   310,   312,   314,   316,   320,   322,   323,   324,   329,
00798      331,   334,   338,   342,   346,   348,   349,   350,   355,   357,
00799      360,   364,   368,   372,   374,   375,   376,   381,   383,   386,
00800      390,   394,   397,   399,   401,   404,   405,   410,   415,   417,
00801      422,   425,   426,   429,   430,   435,   436,   439,   441,   443,
00802      445,   446,   451,   452,   457,   458,   463,   465,   468,   469,
00803      472,   474,   478,   480,   481,   484,   486,   488,   491,   493,
00804      495,   498,   499,   504,   509,   511,   516,   519,   520,   523,
00805      524,   529,   530,   533,   535,   537,   539,   540,   545,   546,
00806      551,   552,   557,   559,   562,   563,   566,   568,   572,   574,
00807      575,   578,   580,   582,   584,   586,   588,   590,   592,   594,
00808      596,   598,   600,   602,   604,   606,   608,   612,   614,   615,
00809      616,   621,   623,   626,   630,   634,   637,   639,   641,   644,
00810      645,   650,   656,   658,   663,   664,   667,   668,   674,   680,
00811      682,   687,   688,   691,   692,   698,   704,   706,   711,   712,
00812      715,   716,   722,   728,   730,   735,   736,   739,   740,   746,
00813      752,   754,   759,   760,   763,   764,   770,   776,   778,   783,
00814      784,   787,   791,   793,   794,   797,   799,   801,   803,   804,
00815      809,   810,   815,   816,   821,   824,   826,   832,   834,   839,
00816      840,   843,   847,   849,   850,   853,   855,   857,   859,   860,
00817      865,   866,   871,   872,   877,   880,   882,   888,   890,   895,
00818      896,   899,   903,   905,   906,   909,   911,   913,   915,   916,
00819      921,   922,   927,   928,   933,   936,   938,   944,   946,   951,
00820      952,   955,   959,   961,   962,   965,   967,   969,   971,   972,
00821      977,   978,   983,   984,   989,   992,   994,  1000,  1002,  1007,
00822     1008,  1011,  1012,  1018,  1024,  1026,  1031,  1032,  1035,  1036,
00823     1042,  1048,  1050,  1055,  1056,  1059,  1060,  1066,  1071,  1073,
00824     1078,  1081,  1082,  1085,  1086,  1091,  1092,  1095,  1097,  1099,
00825     1101,  1102,  1107,  1108,  1113,  1114,  1119,  1121,  1124,  1125,
00826     1129,  1131,  1132,  1135,  1137,  1139,  1141,  1146,  1151,  1156,
00827     1160,  1162,  1167,  1168,  1172,  1174,  1175,  1180,  1189,  1191,
00828     1192,  1198,  1203,  1204,  1207,  1211,  1213,  1214,  1217,  1219,
00829     1221,  1226,  1227,  1232,  1235,  1237,  1238,  1244,  1249,  1250,
00830     1253,  1257,  1259,  1260,  1263,  1265,  1267,  1272,  1273,  1278,
00831     1281,  1283,  1284,  1290,  1295,  1296,  1299,  1303,  1305,  1306,
00832     1309,  1311,  1313,  1318,  1319,  1324,  1327,  1329,  1330,  1336,
00833     1341,  1342,  1345,  1349,  1351,  1352,  1355,  1357,  1359,  1364,
00834     1365,  1370,  1373,  1375,  1376,  1382,  1387,  1388,  1391,  1395,
00835     1397,  1398,  1401,  1403,  1405,  1407,  1412,  1417,  1422,  1427,
00836     1431,  1433,  1434,  1437,  1441,  1443,  1444,  1447,  1449,  1451,
00837     1456,  1457,  1462,  1465,  1467,  1468,  1471,  1475,  1477,  1478,
00838     1481,  1483,  1485,  1487,  1489,  1491,  1493,  1495,  1500,  1501,
00839     1506,  1507,  1512,  1513,  1518,  1519,  1524,  1525,  1530,  1531,
00840     1536,  1540,  1541,  1544,  1548,  1550,  1551,  1554,  1556,  1558,
00841     1560,  1562,  1567,  1568,  1573,  1574,  1579,  1580,  1585,  1588,
00842     1590,  1591,  1595,  1597,  1598,  1603,  1609,  1611,  1612,  1618,
00843     1623,  1624,  1627,  1631,  1633,  1634,  1637,  1639,  1641,  1646,
00844     1647,  1652,  1655,  1657,  1658,  1664,  1669,  1670,  1673,  1677,
00845     1679,  1680,  1683,  1685,  1687,  1689,  1694,  1695,  1700,  1701,
00846     1706,  1709,  1711,  1712,  1715,  1719,  1721,  1722,  1725,  1727,
00847     1729,  1731,  1733,  1735,  1737,  1739,  1744,  1745,  1750,  1751,
00848     1756,  1757,  1762,  1763,  1768,  1769,  1774,  1775,  1780,  1784,
00849     1785,  1788,  1792,  1794,  1795,  1798,  1800,  1802,  1804,  1806,
00850     1811,  1812,  1817,  1818,  1823,  1824,  1829,  1832,  1834,  1835,
00851     1839,  1841,  1842,  1847,  1853,  1855,  1856,  1862,  1867,  1868,
00852     1871,  1875,  1877,  1878,  1881,  1883,  1885,  1890,  1891,  1896,
00853     1899,  1901,  1902,  1908,  1913,  1914,  1917,  1921,  1923,  1924,
00854     1927,  1929,  1931,  1933,  1938,  1939,  1944,  1945,  1950,  1953,
00855     1955,  1956,  1959,  1963,  1965,  1966,  1969,  1971,  1973,  1975,
00856     1977,  1979,  1981,  1983,  1988,  1989,  1994,  1995,  2000,  2001,
00857     2006,  2007,  2012,  2013,  2018,  2019,  2024,  2028,  2029,  2032,
00858     2036,  2038,  2039,  2042,  2044,  2046,  2048,  2050,  2055,  2056,
00859     2061,  2062,  2067,  2068,  2073,  2076,  2078,  2079,  2085,  2087,
00860     2092,  2093,  2096,  2097,  2102,  2103,  2106,  2108,  2110,  2112,
00861     2114,  2116,  2118,  2119,  2124,  2125,  2130,  2131,  2136,  2137,
00862     2142,  2143,  2148,  2149,  2154,  2157
00863 };
00864 
00865 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
00866 static const yytype_int16 yyrhs[] =
00867 {
00868      166,     0,    -1,   167,   168,    14,    -1,   167,    10,    -1,
00869       12,    -1,    11,    13,     9,    -1,   169,   234,   274,   299,
00870      437,    -1,    -1,   170,   171,    -1,    50,    -1,     9,   172,
00871       51,    -1,    10,    -1,    -1,   172,   173,    -1,   174,    -1,
00872      178,    -1,   182,    -1,   186,    -1,   192,    -1,   196,    -1,
00873      200,    -1,   204,    -1,   208,    -1,   212,    -1,   218,    -1,
00874      175,   176,    -1,    60,    -1,    10,    -1,     9,    61,    -1,
00875       -1,     9,     4,   177,    61,    -1,   179,   180,    -1,    62,
00876       -1,    10,    -1,     9,    63,    -1,    -1,     9,     4,   181,
00877       63,    -1,   183,   184,    -1,    64,    -1,    10,    -1,     9,
00878       65,    -1,    -1,     9,     4,   185,    65,    -1,   187,   188,
00879      190,    -1,    66,    -1,    -1,    -1,    15,     3,   189,     7,
00880       -1,    10,    -1,     9,   191,    67,    -1,    -1,     4,    -1,
00881      193,   194,    -1,    68,    -1,    10,    -1,     9,    69,    -1,
00882       -1,     9,     4,   195,    69,    -1,   197,   198,    -1,    70,
00883       -1,    10,    -1,     9,    71,    -1,    -1,     9,     4,   199,
00884       71,    -1,   201,   202,    -1,    72,    -1,    10,    -1,     9,
00885       73,    -1,    -1,     9,     4,   203,    73,    -1,   205,   206,
00886       -1,    74,    -1,    10,    -1,     9,    75,    -1,    -1,     9,
00887        4,   207,    75,    -1,   209,   210,    -1,    76,    -1,    10,
00888       -1,     9,    77,    -1,    -1,     9,     4,   211,    77,    -1,
00889      213,   214,   216,    -1,    78,    -1,    -1,    -1,    16,     3,
00890      215,     7,    -1,    10,    -1,     9,   217,    79,    -1,    -1,
00891        4,    -1,   219,   220,     9,   221,    -1,    80,    -1,    17,
00892        7,     5,     7,    -1,   222,    81,    -1,    -1,   222,   223,
00893       -1,    -1,    82,   224,   225,   233,    -1,    -1,   225,   226,
00894       -1,   227,    -1,   229,    -1,   231,    -1,    -1,    40,     3,
00895      228,     7,    -1,    -1,    43,     3,   230,     7,    -1,    -1,
00896       45,     3,   232,     7,    -1,    10,    -1,     9,    83,    -1,
00897       -1,   235,   236,    -1,    52,    -1,     9,   237,    53,    -1,
00898       10,    -1,    -1,   237,   238,    -1,   239,    -1,   244,    -1,
00899      249,    -1,   254,    -1,   258,    -1,   240,   241,   243,    -1,
00900       84,    -1,    -1,    -1,    44,     3,   242,     7,    -1,    10,
00901       -1,     9,    85,    -1,     9,     6,    85,    -1,     9,     5,
00902       85,    -1,   245,   246,   248,    -1,    86,    -1,    -1,    -1,
00903       44,     3,   247,     7,    -1,    10,    -1,     9,    87,    -1,
00904        9,     6,    87,    -1,     9,     5,    87,    -1,   250,   251,
00905      253,    -1,    88,    -1,    -1,    -1,    44,     3,   252,     7,
00906       -1,    10,    -1,     9,    89,    -1,     9,     6,    89,    -1,
00907        9,     5,    89,    -1,   255,   256,    -1,    90,    -1,    10,
00908       -1,     9,    91,    -1,    -1,     9,     5,   257,    91,    -1,
00909      259,   260,     9,   261,    -1,    80,    -1,    17,     7,     5,
00910        7,    -1,   262,    81,    -1,    -1,   262,   263,    -1,    -1,
00911       82,   264,   265,   273,    -1,    -1,   265,   266,    -1,   267,
00912       -1,   269,    -1,   271,    -1,    -1,    40,     3,   268,     7,
00913       -1,    -1,    43,     3,   270,     7,    -1,    -1,    45,     3,
00914      272,     7,    -1,    10,    -1,     9,    83,    -1,    -1,   275,
00915      276,    -1,    54,    -1,     9,   277,    55,    -1,    10,    -1,
00916       -1,   277,   278,    -1,   279,    -1,   283,    -1,   280,   281,
00917       -1,    92,    -1,    10,    -1,     9,    93,    -1,    -1,     9,
00918        4,   282,    93,    -1,   284,   285,     9,   286,    -1,    80,
00919       -1,    17,     7,     5,     7,    -1,   287,    81,    -1,    -1,
00920      287,   288,    -1,    -1,    82,   289,   290,   298,    -1,    -1,
00921      290,   291,    -1,   292,    -1,   294,    -1,   296,    -1,    -1,
00922       40,     3,   293,     7,    -1,    -1,    43,     3,   295,     7,
00923       -1,    -1,    45,     3,   297,     7,    -1,    10,    -1,     9,
00924       83,    -1,    -1,   300,   301,    -1,    56,    -1,     9,   302,
00925       57,    -1,    10,    -1,    -1,   302,   303,    -1,   304,    -1,
00926      309,    -1,   313,    -1,   319,    -1,   325,    -1,   331,    -1,
00927      337,    -1,   343,    -1,   358,    -1,   373,    -1,   388,    -1,
00928      403,    -1,   409,    -1,   415,    -1,   421,    -1,   305,   306,
00929      308,    -1,    94,    -1,    -1,    -1,    44,     3,   307,     7,
00930       -1,    10,    -1,     9,    95,    -1,     9,     6,    95,    -1,
00931        9,     5,    95,    -1,   310,   311,    -1,    96,    -1,    10,
00932       -1,     9,    97,    -1,    -1,     9,     4,   312,    97,    -1,
00933      314,   315,     9,   316,    99,    -1,    98,    -1,    18,     7,
00934        5,     7,    -1,    -1,   316,   317,    -1,    -1,    68,     9,
00935        4,   318,    69,    -1,   320,   321,     9,   322,   101,    -1,
00936      100,    -1,    19,     7,     5,     7,    -1,    -1,   322,   323,
00937       -1,    -1,   104,     9,     4,   324,   105,    -1,   326,   327,
00938        9,   328,   103,    -1,   102,    -1,    19,     7,     5,     7,
00939       -1,    -1,   328,   329,    -1,    -1,   104,     9,     4,   330,
00940      105,    -1,   332,   333,     9,   334,   109,    -1,   108,    -1,
00941       19,     7,     5,     7,    -1,    -1,   334,   335,    -1,    -1,
00942      104,     9,     4,   336,   105,    -1,   338,   339,     9,   340,
00943      111,    -1,   110,    -1,    19,     7,     5,     7,    -1,    -1,
00944      340,   341,    -1,    -1,   104,     9,     4,   342,   105,    -1,
00945      344,   345,     9,   346,   117,    -1,   116,    -1,    20,     7,
00946        5,     7,    -1,    -1,   346,   347,    -1,   348,   349,   357,
00947       -1,   106,    -1,    -1,   349,   350,    -1,   351,    -1,   353,
00948       -1,   355,    -1,    -1,    21,     3,   352,     7,    -1,    -1,
00949       22,     3,   354,     7,    -1,    -1,    23,     3,   356,     7,
00950       -1,     9,   107,    -1,    10,    -1,   359,   360,     9,   361,
00951      119,    -1,   118,    -1,    20,     7,     5,     7,    -1,    -1,
00952      361,   362,    -1,   363,   364,   372,    -1,   106,    -1,    -1,
00953      364,   365,    -1,   366,    -1,   368,    -1,   370,    -1,    -1,
00954       21,     3,   367,     7,    -1,    -1,    22,     3,   369,     7,
00955       -1,    -1,    23,     3,   371,     7,    -1,     9,   107,    -1,
00956       10,    -1,   374,   375,     9,   376,   121,    -1,   120,    -1,
00957       20,     7,     5,     7,    -1,    -1,   376,   377,    -1,   378,
00958      379,   387,    -1,   106,    -1,    -1,   379,   380,    -1,   381,
00959       -1,   383,    -1,   385,    -1,    -1,    21,     3,   382,     7,
00960       -1,    -1,    22,     3,   384,     7,    -1,    -1,    23,     3,
00961      386,     7,    -1,     9,   107,    -1,    10,    -1,   389,   390,
00962        9,   391,   123,    -1,   122,    -1,    20,     7,     5,     7,
00963       -1,    -1,   391,   392,    -1,   393,   394,   402,    -1,   106,
00964       -1,    -1,   394,   395,    -1,   396,    -1,   398,    -1,   400,
00965       -1,    -1,    21,     3,   397,     7,    -1,    -1,    22,     3,
00966      399,     7,    -1,    -1,    23,     3,   401,     7,    -1,     9,
00967      107,    -1,    10,    -1,   404,   405,     9,   406,   115,    -1,
00968      114,    -1,    19,     7,     5,     7,    -1,    -1,   406,   407,
00969       -1,    -1,   104,     9,     4,   408,   105,    -1,   410,   411,
00970        9,   412,   113,    -1,   112,    -1,    19,     7,     5,     7,
00971       -1,    -1,   412,   413,    -1,    -1,   104,     9,     4,   414,
00972      105,    -1,   416,   417,     9,   418,   125,    -1,   124,    -1,
00973       28,     7,     5,     7,    -1,    -1,   418,   419,    -1,    -1,
00974      126,     9,     4,   420,   127,    -1,   422,   423,     9,   424,
00975       -1,    80,    -1,    17,     7,     5,     7,    -1,   425,    81,
00976       -1,    -1,   425,   426,    -1,    -1,    82,   427,   428,   436,
00977       -1,    -1,   428,   429,    -1,   430,    -1,   432,    -1,   434,
00978       -1,    -1,    40,     3,   431,     7,    -1,    -1,    43,     3,
00979      433,     7,    -1,    -1,    45,     3,   435,     7,    -1,    10,
00980       -1,     9,    83,    -1,    -1,   438,   439,   444,    -1,    58,
00981       -1,    -1,   439,   440,    -1,   441,    -1,   442,    -1,   443,
00982       -1,    31,     7,     5,     7,    -1,    33,     7,     5,     7,
00983       -1,    32,     7,     5,     7,    -1,     9,   445,    59,    -1,
00984       10,    -1,   446,   546,   606,   666,    -1,    -1,   447,   448,
00985      449,    -1,   128,    -1,    -1,    34,     7,     5,     7,    -1,
00986        9,   450,   461,   472,   483,   494,   514,   129,    -1,    10,
00987       -1,    -1,   130,   451,     9,   452,   131,    -1,    37,     7,
00988        5,     7,    -1,    -1,   452,   453,    -1,   454,   455,   460,
00989       -1,   132,    -1,    -1,   455,   456,    -1,   457,    -1,   458,
00990       -1,    41,     7,     5,     7,    -1,    -1,    43,     3,   459,
00991        7,    -1,     9,   133,    -1,    10,    -1,    -1,   134,   462,
00992        9,   463,   135,    -1,    37,     7,     5,     7,    -1,    -1,
00993      463,   464,    -1,   465,   466,   471,    -1,   132,    -1,    -1,
00994      466,   467,    -1,   468,    -1,   469,    -1,    41,     7,     5,
00995        7,    -1,    -1,    43,     3,   470,     7,    -1,     9,   133,
00996       -1,    10,    -1,    -1,   136,   473,     9,   474,   137,    -1,
00997       37,     7,     5,     7,    -1,    -1,   474,   475,    -1,   476,
00998      477,   482,    -1,   132,    -1,    -1,   477,   478,    -1,   479,
00999       -1,   480,    -1,    41,     7,     5,     7,    -1,    -1,    43,
01000        3,   481,     7,    -1,     9,   133,    -1,    10,    -1,    -1,
01001      138,   484,     9,   485,   139,    -1,    37,     7,     5,     7,
01002       -1,    -1,   485,   486,    -1,   487,   488,   493,    -1,   132,
01003       -1,    -1,   488,   489,    -1,   490,    -1,   491,    -1,    41,
01004        7,     5,     7,    -1,    -1,    43,     3,   492,     7,    -1,
01005        9,   133,    -1,    10,    -1,    -1,   140,   495,     9,   496,
01006      141,    -1,    30,     7,     5,     7,    -1,    -1,   496,   497,
01007       -1,   498,   499,   504,    -1,   142,    -1,    -1,   499,   500,
01008       -1,   501,    -1,   503,    -1,   502,    -1,    42,     7,     5,
01009        7,    -1,    27,     7,     6,     7,    -1,    27,     7,     5,
01010        7,    -1,    37,     7,     5,     7,    -1,     9,   505,   143,
01011       -1,    10,    -1,    -1,   505,   506,    -1,   507,   508,   513,
01012       -1,   132,    -1,    -1,   508,   509,    -1,   510,    -1,   511,
01013       -1,    41,     7,     5,     7,    -1,    -1,    43,     3,   512,
01014        7,    -1,     9,   133,    -1,    10,    -1,    -1,   514,   515,
01015       -1,   516,   517,   532,    -1,    82,    -1,    -1,   517,   518,
01016       -1,   519,    -1,   520,    -1,   522,    -1,   524,    -1,   526,
01017       -1,   528,    -1,   530,    -1,    37,     7,     5,     7,    -1,
01018       -1,    40,     3,   521,     7,    -1,    -1,    43,     3,   523,
01019        7,    -1,    -1,    24,     3,   525,     7,    -1,    -1,    25,
01020        3,   527,     7,    -1,    -1,    26,     3,   529,     7,    -1,
01021       -1,    45,     3,   531,     7,    -1,     9,   533,    83,    -1,
01022       -1,   533,   534,    -1,   535,   536,   545,    -1,   132,    -1,
01023       -1,   536,   537,    -1,   538,    -1,   539,    -1,   541,    -1,
01024      543,    -1,    41,     7,     5,     7,    -1,    -1,    43,     3,
01025      540,     7,    -1,    -1,    46,     3,   542,     7,    -1,    -1,
01026       47,     3,   544,     7,    -1,     9,   133,    -1,    10,    -1,
01027       -1,   547,   548,   549,    -1,   144,    -1,    -1,    35,     7,
01028        5,     7,    -1,     9,   550,   561,   574,   145,    -1,    10,
01029       -1,    -1,   146,   551,     9,   552,   147,    -1,    38,     7,
01030        5,     7,    -1,    -1,   552,   553,    -1,   554,   555,   560,
01031       -1,   148,    -1,    -1,   555,   556,    -1,   557,    -1,   558,
01032       -1,    41,     7,     5,     7,    -1,    -1,    43,     3,   559,
01033        7,    -1,     9,   149,    -1,    10,    -1,    -1,   150,   562,
01034        9,   563,   151,    -1,    38,     7,     5,     7,    -1,    -1,
01035      563,   564,    -1,   565,   566,   573,    -1,   148,    -1,    -1,
01036      566,   567,    -1,   568,    -1,   569,    -1,   571,    -1,    41,
01037        7,     5,     7,    -1,    -1,    46,     3,   570,     7,    -1,
01038       -1,    47,     3,   572,     7,    -1,     9,   149,    -1,    10,
01039       -1,    -1,   574,   575,    -1,   576,   577,   592,    -1,    82,
01040       -1,    -1,   577,   578,    -1,   579,    -1,   580,    -1,   582,
01041       -1,   584,    -1,   586,    -1,   588,    -1,   590,    -1,    38,
01042        7,     5,     7,    -1,    -1,    40,     3,   581,     7,    -1,
01043       -1,    43,     3,   583,     7,    -1,    -1,    24,     3,   585,
01044        7,    -1,    -1,    25,     3,   587,     7,    -1,    -1,    26,
01045        3,   589,     7,    -1,    -1,    45,     3,   591,     7,    -1,
01046        9,   593,    83,    -1,    -1,   593,   594,    -1,   595,   596,
01047      605,    -1,   148,    -1,    -1,   596,   597,    -1,   598,    -1,
01048      599,    -1,   601,    -1,   603,    -1,    41,     7,     5,     7,
01049       -1,    -1,    43,     3,   600,     7,    -1,    -1,    46,     3,
01050      602,     7,    -1,    -1,    47,     3,   604,     7,    -1,     9,
01051      133,    -1,    10,    -1,    -1,   607,   608,   609,    -1,   152,
01052       -1,    -1,    36,     7,     5,     7,    -1,     9,   610,   621,
01053      634,   153,    -1,    10,    -1,    -1,   154,   611,     9,   612,
01054      155,    -1,    39,     7,     5,     7,    -1,    -1,   612,   613,
01055       -1,   614,   615,   620,    -1,   156,    -1,    -1,   615,   616,
01056       -1,   617,    -1,   618,    -1,    41,     7,     5,     7,    -1,
01057       -1,    43,     3,   619,     7,    -1,     9,   157,    -1,    10,
01058       -1,    -1,   158,   622,     9,   623,   159,    -1,    39,     7,
01059        5,     7,    -1,    -1,   623,   624,    -1,   625,   626,   633,
01060       -1,   156,    -1,    -1,   626,   627,    -1,   628,    -1,   629,
01061       -1,   631,    -1,    41,     7,     5,     7,    -1,    -1,    48,
01062        3,   630,     7,    -1,    -1,    49,     3,   632,     7,    -1,
01063        9,   157,    -1,    10,    -1,    -1,   634,   635,    -1,   636,
01064      637,   652,    -1,    82,    -1,    -1,   637,   638,    -1,   639,
01065       -1,   640,    -1,   642,    -1,   644,    -1,   646,    -1,   648,
01066       -1,   650,    -1,    39,     7,     5,     7,    -1,    -1,    40,
01067        3,   641,     7,    -1,    -1,    43,     3,   643,     7,    -1,
01068       -1,    24,     3,   645,     7,    -1,    -1,    25,     3,   647,
01069        7,    -1,    -1,    26,     3,   649,     7,    -1,    -1,    45,
01070        3,   651,     7,    -1,     9,   653,    83,    -1,    -1,   653,
01071      654,    -1,   655,   656,   665,    -1,   156,    -1,    -1,   656,
01072      657,    -1,   658,    -1,   659,    -1,   661,    -1,   663,    -1,
01073       41,     7,     5,     7,    -1,    -1,    43,     3,   660,     7,
01074       -1,    -1,    46,     3,   662,     7,    -1,    -1,    47,     3,
01075      664,     7,    -1,     9,   157,    -1,    10,    -1,    -1,   667,
01076      668,     9,   669,   161,    -1,   160,    -1,    29,     7,     5,
01077        7,    -1,    -1,   669,   670,    -1,    -1,   162,   671,   672,
01078      686,    -1,    -1,   672,   673,    -1,   674,    -1,   676,    -1,
01079      678,    -1,   680,    -1,   682,    -1,   684,    -1,    -1,    40,
01080        3,   675,     7,    -1,    -1,    43,     3,   677,     7,    -1,
01081       -1,    24,     3,   679,     7,    -1,    -1,    25,     3,   681,
01082        7,    -1,    -1,    26,     3,   683,     7,    -1,    -1,    45,
01083        3,   685,     7,    -1,     9,   163,    -1,    10,    -1
01084 };
01085 
01086 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
01087 static const yytype_uint16 yyrline[] =
01088 {
01089        0,   135,   135,   136,   138,   139,   142,   144,   144,   146,
01090      157,   158,   160,   160,   162,   162,   162,   162,   162,   163,
01091      163,   163,   163,   163,   163,   166,   168,   177,   178,   179,
01092      179,   182,   184,   193,   194,   195,   195,   198,   200,   209,
01093      210,   211,   211,   214,   216,   227,   228,   227,   236,   237,
01094      239,   239,   242,   244,   253,   254,   255,   255,   258,   260,
01095      269,   270,   271,   271,   274,   276,   285,   286,   287,   287,
01096      290,   292,   301,   302,   303,   303,   306,   308,   317,   318,
01097      319,   319,   322,   324,   335,   336,   335,   344,   345,   347,
01098      347,   350,   352,   362,   370,   375,   375,   378,   377,   393,
01099      393,   395,   395,   395,   398,   397,   409,   408,   420,   419,
01100      430,   430,   433,   433,   435,   446,   447,   449,   449,   451,
01101      451,   451,   451,   451,   453,   455,   466,   467,   466,   475,
01102      476,   477,   482,   489,   491,   502,   503,   502,   511,   512,
01103      513,   518,   526,   528,   539,   540,   539,   548,   549,   550,
01104      555,   563,   565,   574,   575,   577,   576,   584,   586,   596,
01105      604,   609,   609,   612,   611,   626,   626,   628,   628,   628,
01106      631,   630,   642,   641,   654,   653,   664,   664,   667,   667,
01107      669,   680,   681,   683,   683,   685,   685,   687,   689,   699,
01108      700,   702,   701,   710,   712,   722,   730,   735,   735,   738,
01109      737,   752,   752,   754,   754,   754,   757,   756,   768,   767,
01110      779,   778,   789,   789,   792,   792,   794,   804,   805,   807,
01111      807,   809,   809,   809,   809,   809,   810,   810,   810,   810,
01112      810,   811,   811,   811,   811,   811,   814,   816,   827,   828,
01113      827,   836,   837,   838,   843,   850,   852,   862,   863,   864,
01114      864,   866,   868,   878,   885,   885,   888,   887,   900,   903,
01115      913,   920,   920,   922,   922,   934,   937,   947,   954,   954,
01116      956,   956,   968,   971,   980,   987,   987,   990,   989,  1001,
01117     1004,  1014,  1021,  1021,  1024,  1023,  1035,  1038,  1048,  1057,
01118     1057,  1059,  1071,  1077,  1077,  1079,  1079,  1079,  1082,  1081,
01119     1093,  1092,  1104,  1103,  1115,  1115,  1118,  1121,  1131,  1139,
01120     1139,  1141,  1153,  1159,  1159,  1161,  1161,  1161,  1164,  1163,
01121     1175,  1174,  1186,  1185,  1197,  1197,  1200,  1203,  1213,  1222,
01122     1222,  1224,  1236,  1242,  1242,  1244,  1244,  1244,  1247,  1246,
01123     1258,  1257,  1269,  1268,  1280,  1280,  1283,  1286,  1296,  1304,
01124     1304,  1306,  1318,  1324,  1324,  1326,  1326,  1326,  1329,  1328,
01125     1340,  1339,  1351,  1350,  1362,  1362,  1365,  1368,  1378,  1385,
01126     1385,  1388,  1387,  1399,  1402,  1412,  1419,  1419,  1422,  1421,
01127     1433,  1437,  1447,  1454,  1454,  1457,  1456,  1468,  1470,  1480,
01128     1488,  1493,  1493,  1496,  1495,  1510,  1510,  1512,  1512,  1512,
01129     1515,  1514,  1526,  1525,  1537,  1536,  1547,  1547,  1550,  1550,
01130     1552,  1562,  1562,  1564,  1564,  1564,  1566,  1572,  1578,  1584,
01131     1584,  1586,  1588,  1588,  1590,  1594,  1594,  1603,  1605,  1607,
01132     1607,  1609,  1619,  1619,  1621,  1629,  1634,  1634,  1636,  1636,
01133     1638,  1652,  1651,  1664,  1664,  1667,  1667,  1670,  1680,  1680,
01134     1682,  1690,  1695,  1695,  1697,  1697,  1699,  1713,  1712,  1720,
01135     1720,  1723,  1723,  1726,  1736,  1736,  1738,  1746,  1751,  1751,
01136     1753,  1753,  1755,  1769,  1768,  1776,  1776,  1779,  1779,  1782,
01137     1792,  1792,  1794,  1802,  1807,  1807,  1809,  1809,  1811,  1825,
01138     1824,  1837,  1837,  1840,  1840,  1843,  1854,  1854,  1856,  1868,
01139     1874,  1874,  1876,  1876,  1876,  1878,  1888,  1895,  1902,  1913,
01140     1914,  1916,  1916,  1918,  1926,  1931,  1931,  1933,  1933,  1935,
01141     1949,  1948,  1961,  1961,  1964,  1964,  1966,  1968,  1973,  1973,
01142     1976,  1977,  1978,  1979,  1980,  1981,  1982,  1984,  1998,  1997,
01143     2006,  2005,  2014,  2013,  2022,  2021,  2030,  2029,  2038,  2037,
01144     2046,  2063,  2063,  2065,  2075,  2080,  2080,  2083,  2084,  2085,
01145     2086,  2088,  2102,  2101,  2110,  2109,  2118,  2117,  2125,  2125,
01146     2129,  2129,  2131,  2135,  2135,  2144,  2145,  2147,  2147,  2150,
01147     2160,  2160,  2162,  2170,  2175,  2175,  2177,  2177,  2179,  2194,
01148     2193,  2206,  2206,  2209,  2209,  2212,  2222,  2222,  2224,  2233,
01149     2238,  2238,  2240,  2240,  2240,  2242,  2256,  2255,  2269,  2268,
01150     2281,  2281,  2285,  2285,  2287,  2289,  2294,  2294,  2297,  2298,
01151     2299,  2300,  2301,  2302,  2303,  2305,  2319,  2318,  2328,  2327,
01152     2337,  2336,  2346,  2345,  2355,  2354,  2364,  2363,  2373,  2390,
01153     2390,  2392,  2402,  2407,  2407,  2410,  2411,  2412,  2413,  2415,
01154     2430,  2429,  2439,  2438,  2448,  2447,  2456,  2456,  2459,  2459,
01155     2461,  2465,  2465,  2474,  2476,  2478,  2478,  2481,  2491,  2491,
01156     2493,  2501,  2506,  2506,  2508,  2508,  2510,  2525,  2524,  2537,
01157     2537,  2540,  2540,  2543,  2553,  2553,  2555,  2564,  2569,  2569,
01158     2571,  2571,  2571,  2573,  2587,  2586,  2600,  2599,  2613,  2613,
01159     2616,  2616,  2618,  2620,  2625,  2625,  2628,  2629,  2630,  2631,
01160     2632,  2633,  2634,  2636,  2650,  2649,  2658,  2657,  2666,  2665,
01161     2674,  2673,  2682,  2681,  2690,  2689,  2698,  2715,  2715,  2717,
01162     2727,  2732,  2732,  2735,  2736,  2737,  2738,  2740,  2755,  2754,
01163     2764,  2763,  2772,  2771,  2779,  2779,  2782,  2782,  2787,  2797,
01164     2805,  2805,  2808,  2807,  2825,  2825,  2828,  2829,  2830,  2831,
01165     2832,  2833,  2837,  2836,  2848,  2847,  2859,  2858,  2870,  2869,
01166     2881,  2880,  2892,  2891,  2903,  2903
01167 };
01168 #endif
01169 
01170 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
01171 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
01172    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
01173 static const char *const yytname[] =
01174 {
01175   "$end", "error", "$undefined", "ATTRIBUTETEXT", "ELEMENTTEXT",
01176   "INTEGER", "DOUBLE", "QUOTE", "TWOQUOTES", "GREATERTHAN", "ENDOFELEMENT",
01177   "OSOLSTART", "OSOLSTARTEMPTY", "OSOLATTRIBUTETEXT", "OSOLEND",
01178   "LOCATIONTYPEATT", "TRANSPORTTYPEATT", "NUMBEROFOTHEROPTIONSATT",
01179   "NUMBEROFJOBIDSATT", "NUMBEROFPATHSATT", "NUMBEROFPATHPAIRSATT",
01180   "FROMATT", "TOATT", "MAKECOPYATT", "SOLVERATT", "CATEGORYATT", "TYPEATT",
01181   "GROUPWEIGHTATT", "NUMBEROFPROCESSESATT", "NUMBEROFSOLVEROPTIONSATT",
01182   "NUMBEROFSOSATT", "NUMBEROFVARIABLESATT", "NUMBEROFOBJECTIVESATT",
01183   "NUMBEROFCONSTRAINTSATT", "NUMBEROFOTHERVARIABLEOPTIONSATT",
01184   "NUMBEROFOTHEROBJECTIVEOPTIONSATT", "NUMBEROFOTHERCONSTRAINTOPTIONSATT",
01185   "NUMBEROFVARATT", "NUMBEROFOBJATT", "NUMBEROFCONATT", "NAMEATT",
01186   "IDXATT", "SOSIDXATT", "VALUEATT", "UNITATT", "DESCRIPTIONATT",
01187   "LBVALUEATT", "UBVALUEATT", "LBDUALVALUEATT", "UBDUALVALUEATT",
01188   "GENERALSTART", "GENERALEND", "SYSTEMSTART", "SYSTEMEND", "SERVICESTART",
01189   "SERVICEEND", "JOBSTART", "JOBEND", "OPTIMIZATIONSTART",
01190   "OPTIMIZATIONEND", "SERVICEURISTART", "SERVICEURIEND",
01191   "SERVICENAMESTART", "SERVICENAMEEND", "INSTANCENAMESTART",
01192   "INSTANCENAMEEND", "INSTANCELOCATIONSTART", "INSTANCELOCATIONEND",
01193   "JOBIDSTART", "JOBIDEND", "SOLVERTOINVOKESTART", "SOLVERTOINVOKEEND",
01194   "LICENSESTART", "LICENSEEND", "USERNAMESTART", "USERNAMEEND",
01195   "PASSWORDSTART", "PASSWORDEND", "CONTACTSTART", "CONTACTEND",
01196   "OTHEROPTIONSSTART", "OTHEROPTIONSEND", "OTHERSTART", "OTHEREND",
01197   "MINDISKSPACESTART", "MINDISKSPACEEND", "MINMEMORYSIZESTART",
01198   "MINMEMORYSIZEEND", "MINCPUSPEEDSTART", "MINCPUSPEEDEND",
01199   "MINCPUNUMBERSTART", "MINCPUNUMBEREND", "SERVICETYPESTART",
01200   "SERVICETYPEEND", "MAXTIMESTART", "MAXTIMEEND",
01201   "REQUESTEDSTARTTIMESTART", "REQUESTEDSTARTTIMEEND", "DEPENDENCIESSTART",
01202   "DEPENDENCIESEND", "REQUIREDDIRECTORIESSTART", "REQUIREDDIRECTORIESEND",
01203   "REQUIREDFILESSTART", "REQUIREDFILESEND", "PATHSTART", "PATHEND",
01204   "PATHPAIRSTART", "PATHPAIREND", "DIRECTORIESTOMAKESTART",
01205   "DIRECTORIESTOMAKEEND", "FILESTOMAKESTART", "FILESTOMAKEEND",
01206   "DIRECTORIESTODELETESTART", "DIRECTORIESTODELETEEND",
01207   "FILESTODELETESTART", "FILESTODELETEEND", "INPUTDIRECTORIESTOMOVESTART",
01208   "INPUTDIRECTORIESTOMOVEEND", "INPUTFILESTOMOVESTART",
01209   "INPUTFILESTOMOVEEND", "OUTPUTDIRECTORIESTOMOVESTART",
01210   "OUTPUTDIRECTORIESTOMOVEEND", "OUTPUTFILESTOMOVESTART",
01211   "OUTPUTFILESTOMOVEEND", "PROCESSESTOKILLSTART", "PROCESSESTOKILLEND",
01212   "PROCESSSTART", "PROCESSEND", "VARIABLESSTART", "VARIABLESEND",
01213   "INITIALVARIABLEVALUESSTART", "INITIALVARIABLEVALUESEND", "VARSTART",
01214   "VAREND", "INITIALVARIABLEVALUESSTRINGSTART",
01215   "INITIALVARIABLEVALUESSTRINGEND", "INITIALBASISSTATUSSTART",
01216   "INITIALBASISSTATUSEND", "INTEGERVARIABLEBRANCHINGWEIGHTSSTART",
01217   "INTEGERVARIABLEBRANCHINGWEIGHTSEND", "SOSVARIABLEBRANCHINGWEIGHTSSTART",
01218   "SOSVARIABLEBRANCHINGWEIGHTSEND", "SOSSTART", "SOSEND",
01219   "OBJECTIVESSTART", "OBJECTIVESEND", "INITIALOBJECTIVEVALUESSTART",
01220   "INITIALOBJECTIVEVALUESEND", "OBJSTART", "OBJEND",
01221   "INITIALOBJECTIVEBOUNDSSTART", "INITIALOBJECTIVEBOUNDSEND",
01222   "CONSTRAINTSSTART", "CONSTRAINTSEND", "INITIALCONSTRAINTVALUESSTART",
01223   "INITIALCONSTRAINTVALUESEND", "CONSTART", "CONEND",
01224   "INITIALDUALVALUESSTART", "INITIALDUALVALUESEND", "SOLVEROPTIONSSTART",
01225   "SOLVEROPTIONSEND", "SOLVEROPTIONSTART", "SOLVEROPTIONEND", "DUMMY",
01226   "$accept", "osoldoc", "osolstart", "osolcontent", "osolgeneral",
01227   "generalhead", "generalbody", "generalcontent", "generaloption",
01228   "serviceURI", "serviceURIhead", "serviceURIbody", "@1", "servicename",
01229   "servicenamehead", "servicenamebody", "@2", "instancename",
01230   "instancenamehead", "instancenamebody", "@3", "instancelocation",
01231   "instancelocationhead", "locationtypeatt", "@4", "instancelocationbody",
01232   "instancelocationtext", "jobid", "jobidhead", "jobidbody", "@5",
01233   "solvertoinvoke", "solvertoinvokehead", "solvertoinvokebody", "@6",
01234   "license", "licensehead", "licensebody", "@7", "username",
01235   "usernamehead", "usernamebody", "@8", "password", "passwordhead",
01236   "passwordbody", "@9", "contact", "contacthead", "transporttypeatt",
01237   "@10", "contactbody", "contacttext", "othergeneraloptions",
01238   "othergeneraloptionshead", "numberofothergeneraloptions",
01239   "othergeneraloptionsbody", "othergeneraloptionslist",
01240   "othergeneraloption", "@11", "othergeneralattributes",
01241   "othergeneralattribute", "generaloptionnameatt", "@12",
01242   "generaloptionvalueatt", "@13", "generaloptiondescriptionatt", "@14",
01243   "othergeneraloptionend", "osolsystem", "systemhead", "systembody",
01244   "systemcontent", "systemoption", "mindiskspace", "mindiskspacehead",
01245   "mindiskspaceunit", "@15", "mindiskspacebody", "minmemorysize",
01246   "minmemorysizehead", "minmemoryunit", "@16", "minmemorysizebody",
01247   "mincpuspeed", "mincpuspeedhead", "mincpuspeedunit", "@17",
01248   "mincpuspeedbody", "mincpunumber", "mincpunumberhead",
01249   "mincpunumberbody", "@18", "othersystemoptions",
01250   "othersystemoptionshead", "numberofothersystemoptions",
01251   "othersystemoptionsbody", "othersystemoptionslist", "othersystemoption",
01252   "@19", "othersystemattributes", "othersystemattribute",
01253   "systemoptionnameatt", "@20", "systemoptionvalueatt", "@21",
01254   "systemoptiondescriptionatt", "@22", "othersystemoptionend",
01255   "osolservice", "servicehead", "servicebody", "servicecontent",
01256   "serviceoption", "servicetype", "servicetypehead", "servicetypebody",
01257   "@23", "otherserviceoptions", "otherserviceoptionshead",
01258   "numberofotherserviceoptions", "otherserviceoptionsbody",
01259   "otherserviceoptionslist", "otherserviceoption", "@24",
01260   "otherserviceattributes", "otherserviceattribute",
01261   "serviceoptionnameatt", "@25", "serviceoptionvalueatt", "@26",
01262   "serviceoptiondescriptionatt", "@27", "otherserviceoptionsend",
01263   "osoljob", "jobhead", "jobbody", "jobcontent", "joboption", "maxtime",
01264   "maxtimehead", "maxtimeunit", "@28", "maxtimebody", "requestedstarttime",
01265   "starttimehead", "starttimebody", "@29", "dependencies",
01266   "dependencieshead", "numberofjobidsatt", "dependencieslist",
01267   "dependencyjobid", "@30", "requireddirectories",
01268   "requireddirectorieshead", "numberofreqdirpathsatt", "reqdirpathlist",
01269   "reqdirpath", "@31", "requiredfiles", "requiredfileshead",
01270   "numberofreqfilespathsatt", "reqfilespathlist", "reqfilepath", "@32",
01271   "directoriestomake", "directoriestomakehead",
01272   "numberofdirtomakepathsatt", "dirtomakepathlist", "dirtomakepath", "@33",
01273   "filestomake", "filestomakehead", "numberoffilestomakepathsatt",
01274   "filestomakepathlist", "filestomakepath", "@34",
01275   "inputdirectoriestomove", "inputdirectoriestomovehead",
01276   "numberofindirtomovepathpairsatt", "indirtomovepathpairlist",
01277   "indirtomovepathpair", "indirtomovepathpairhead",
01278   "indirtomovepathpairattlist", "indirtomovepathpairatt",
01279   "indirtomovefromatt", "@35", "indirtomovetoatt", "@36",
01280   "indirtomovemakecopyatt", "@37", "indirtomovepathpairend",
01281   "inputfilestomove", "inputfilestomovehead",
01282   "numberofinfilestomovepathpairsatt", "infilestomovepathpairlist",
01283   "infilestomovepathpair", "infilestomovepathpairhead",
01284   "infilestomovepathpairattlist", "infilestomovepathpairatt",
01285   "infilestomovefromatt", "@38", "infilestomovetoatt", "@39",
01286   "infilestomovemakecopyatt", "@40", "infilestomovepathpairend",
01287   "outputdirectoriestomove", "outputdirectoriestomovehead",
01288   "numberofoutdirtomovepathpairsatt", "outdirtomovepathpairlist",
01289   "outdirtomovepathpair", "outdirtomovepathpairhead",
01290   "outdirtomovepathpairattlist", "outdirtomovepathpairatt",
01291   "outdirtomovefromatt", "@41", "outdirtomovetoatt", "@42",
01292   "outdirtomovemakecopyatt", "@43", "outdirtomovepathpairend",
01293   "outputfilestomove", "outputfilestomovehead",
01294   "numberofoutfilestomovepathpairsatt", "outfilestomovepathpairlist",
01295   "outfilestomovepathpair", "outfilestomovepathpairhead",
01296   "outfilestomovepathpairattlist", "outfilestomovepathpairatt",
01297   "outfilestomovefromatt", "@44", "outfilestomovetoatt", "@45",
01298   "outfilestomovemakecopyatt", "@46", "outfilestomovepathpairend",
01299   "filestodelete", "filestodeletehead", "numberoffilestodeletepathsatt",
01300   "filestodeletepathlist", "filestodeletepath", "@47",
01301   "directoriestodelete", "directoriestodeletehead",
01302   "numberofdirtodeletepathsatt", "dirtodeletepathlist", "dirtodeletepath",
01303   "@48", "processestokill", "processestokillhead",
01304   "numberofprocesstokillatt", "processestokilllist", "processtokill",
01305   "@49", "otherjoboptions", "otherjoboptionshead",
01306   "numberofotherjoboptions", "otherjoboptionsbody", "otherjoboptionslist",
01307   "otherjoboption", "@50", "otherjobattributes", "otherjobattribute",
01308   "joboptionnameatt", "@51", "joboptionvalueatt", "@52",
01309   "joboptiondescriptionatt", "@53", "otherjoboptionsend",
01310   "osoloptimization", "optimizationhead", "optimizationattlist",
01311   "optimizationatt", "optimizationnvar", "optimizationncon",
01312   "optimizationnobj", "optimizationbody", "optimizationcontent",
01313   "variables", "variablesstart", "numberofothervariablesatt",
01314   "restofvariables", "initialvariablevalues", "numberofvar", "varlist",
01315   "initvarvalue", "varstart", "initvarvalueattlist", "initvarvalueatt",
01316   "initvarvalueidxatt", "initvarvaluevalueatt", "@54", "initvarvalueend",
01317   "initialvariablevaluesstring", "numberofvarstr", "varstrlist",
01318   "initvarstrvalue", "varstrstart", "initvarstrvalueattlist",
01319   "initvarstrvalueatt", "initvarstrvalueidxatt", "initvarstrvaluevalueatt",
01320   "@55", "initvarstrvalueend", "initialbasisstatus", "numberofbasvar",
01321   "basvarlist", "initbasvalue", "basvarstart", "initbasvarvalueattlist",
01322   "initbasvarvalueatt", "initbasvarvalueidxatt", "initbasvarvaluevalueatt",
01323   "@56", "initbasvarvalueend", "integervariablebranchingweights",
01324   "numberofintegerweights", "intweightlist", "intweight", "intweightstart",
01325   "intweightattlist", "intweightatt", "intweightidxatt",
01326   "intweightvalueatt", "@57", "intweightend",
01327   "sosvariablebranchingweights", "numberofsosweightgroups",
01328   "sosweightgrouplist", "sosweightgroup", "sosweightgroupstart",
01329   "sosweightgroupattlist", "sosweightgroupatt", "sosweightgroupidxatt",
01330   "sosweightgroupweightatt", "sosweightgroupnvaratt",
01331   "sosweightgroupcontent", "sosweightgroupvars", "sosweightvar",
01332   "sosweightvarstart", "sosweightvarattlist", "sosweightvaratt",
01333   "sosweightvaridxatt", "sosweightvarvalueatt", "@58", "sosweightvarend",
01334   "othervariableoptionlist", "othervariableoption",
01335   "othervariableoptionstart", "othervariableoptionsattlist",
01336   "othervariableoptionsatt", "othervariableoptionnumberofvar",
01337   "othervariableoptionname", "@59", "othervariableoptionvalue", "@60",
01338   "othervariableoptionsolver", "@61", "othervariableoptioncategory", "@62",
01339   "othervariableoptiontype", "@63", "othervariableoptiondescription",
01340   "@64", "restofothervariableoption", "othervariableoptionsvarlist",
01341   "othervariableoptionsvar", "othervariableoptionsvarstart",
01342   "othervaroptionattlist", "othervaroptionatt", "othervaroptionidx",
01343   "othervaroptionvalue", "@65", "othervaroptionlbvalue", "@66",
01344   "othervaroptionubvalue", "@67", "othervaroptionend", "objectives",
01345   "objectivesstart", "numberofotherobjectivesatt", "restofobjectives",
01346   "initialobjectivevalues", "numberofobjval", "objvaluelist",
01347   "initobjvalue", "objvaluestart", "initobjvalueattlist",
01348   "initobjvalueatt", "initobjvalueidxatt", "initobjvaluevalueatt", "@68",
01349   "initobjvalueend", "initialobjectivebounds", "numberofobjbounds",
01350   "objboundlist", "initobjbound", "objboundstart", "initobjboundattlist",
01351   "initobjboundatt", "initobjboundidxatt", "initobjvaluelowerboundatt",
01352   "@69", "initobjvalueupperboundatt", "@70", "initobjboundend",
01353   "otherobjectiveoptionlist", "otherobjectiveoption",
01354   "otherobjectiveoptionstart", "otherobjectiveoptionsattlist",
01355   "otherobjectiveoptionsatt", "otherobjectiveoptionnumberofobj",
01356   "otherobjectiveoptionname", "@71", "otherobjectiveoptionvalue", "@72",
01357   "otherobjectiveoptionsolver", "@73", "otherobjectiveoptioncategory",
01358   "@74", "otherobjectiveoptiontype", "@75",
01359   "otherobjectiveoptiondescription", "@76", "restofotherobjectiveoption",
01360   "otherobjectiveoptionsobjlist", "otherobjectiveoptionsobj",
01361   "otherobjectiveoptionsobjstart", "otherobjoptionattlist",
01362   "otherobjoptionatt", "otherobjoptionidx", "otherobjoptionvalue", "@77",
01363   "otherobjoptionlbvalue", "@78", "otherobjoptionubvalue", "@79",
01364   "otherobjoptionend", "constraints", "constraintsstart",
01365   "numberofotherconstraintsatt", "restofconstraints",
01366   "initialconstraintvalues", "numberofconval", "conlist", "initconvalue",
01367   "constart", "initconvalueattlist", "initconvalueatt",
01368   "initconvalueidxatt", "initconvaluevalueatt", "@80", "initconvalueend",
01369   "initialdualvalues", "numberofduals", "duallist", "initdualvalue",
01370   "dualstart", "initdualvalueattlist", "initdualvalueatt",
01371   "initdualvalueidxatt", "initdualvaluelowerboundatt", "@81",
01372   "initdualvalueupperboundatt", "@82", "initdualvalueend",
01373   "otherconstraintoptionlist", "otherconstraintoption",
01374   "otherconstraintoptionstart", "otherconstraintoptionsattlist",
01375   "otherconstraintoptionsatt", "otherconstraintoptionnumberofcon",
01376   "otherconstraintoptionname", "@83", "otherconstraintoptionvalue", "@84",
01377   "otherconstraintoptionsolver", "@85", "otherconstraintoptioncategory",
01378   "@86", "otherconstraintoptiontype", "@87",
01379   "otherconstraintoptiondescription", "@88", "restofotherconstraintoption",
01380   "otherconstraintoptionsconlist", "otherconstraintoptionscon",
01381   "otherconstraintoptionsconstart", "otherconoptionattlist",
01382   "otherconoptionatt", "otherconoptionidx", "otherconoptionvalue", "@89",
01383   "otherconoptionlbvalue", "@90", "otherconoptionubvalue", "@91",
01384   "otherconoptionend", "solveroptions", "solveroptionsstart",
01385   "numberofsolveroptionsatt", "solveroptionlist", "solveroption", "@92",
01386   "solveroptionattlist", "solveroptionatt", "solveroptionname", "@93",
01387   "solveroptionvalue", "@94", "solveroptionsolver", "@95",
01388   "solveroptioncategory", "@96", "solveroptiontype", "@97",
01389   "solveroptiondescription", "@98", "solveroptionend", 0
01390 };
01391 #endif
01392 
01393 # ifdef YYPRINT
01394 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
01395    token YYLEX-NUM.  */
01396 static const yytype_uint16 yytoknum[] =
01397 {
01398        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
01399      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
01400      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
01401      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
01402      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
01403      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
01404      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
01405      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
01406      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
01407      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
01408      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
01409      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
01410      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
01411      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
01412      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
01413      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
01414      415,   416,   417,   418,   419
01415 };
01416 # endif
01417 
01418 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
01419 static const yytype_uint16 yyr1[] =
01420 {
01421        0,   165,   166,   166,   167,   167,   168,   169,   169,   170,
01422      171,   171,   172,   172,   173,   173,   173,   173,   173,   173,
01423      173,   173,   173,   173,   173,   174,   175,   176,   176,   177,
01424      176,   178,   179,   180,   180,   181,   180,   182,   183,   184,
01425      184,   185,   184,   186,   187,   188,   189,   188,   190,   190,
01426      191,   191,   192,   193,   194,   194,   195,   194,   196,   197,
01427      198,   198,   199,   198,   200,   201,   202,   202,   203,   202,
01428      204,   205,   206,   206,   207,   206,   208,   209,   210,   210,
01429      211,   210,   212,   213,   214,   215,   214,   216,   216,   217,
01430      217,   218,   219,   220,   221,   222,   222,   224,   223,   225,
01431      225,   226,   226,   226,   228,   227,   230,   229,   232,   231,
01432      233,   233,   234,   234,   235,   236,   236,   237,   237,   238,
01433      238,   238,   238,   238,   239,   240,   241,   242,   241,   243,
01434      243,   243,   243,   244,   245,   246,   247,   246,   248,   248,
01435      248,   248,   249,   250,   251,   252,   251,   253,   253,   253,
01436      253,   254,   255,   256,   256,   257,   256,   258,   259,   260,
01437      261,   262,   262,   264,   263,   265,   265,   266,   266,   266,
01438      268,   267,   270,   269,   272,   271,   273,   273,   274,   274,
01439      275,   276,   276,   277,   277,   278,   278,   279,   280,   281,
01440      281,   282,   281,   283,   284,   285,   286,   287,   287,   289,
01441      288,   290,   290,   291,   291,   291,   293,   292,   295,   294,
01442      297,   296,   298,   298,   299,   299,   300,   301,   301,   302,
01443      302,   303,   303,   303,   303,   303,   303,   303,   303,   303,
01444      303,   303,   303,   303,   303,   303,   304,   305,   306,   307,
01445      306,   308,   308,   308,   308,   309,   310,   311,   311,   312,
01446      311,   313,   314,   315,   316,   316,   318,   317,   319,   320,
01447      321,   322,   322,   324,   323,   325,   326,   327,   328,   328,
01448      330,   329,   331,   332,   333,   334,   334,   336,   335,   337,
01449      338,   339,   340,   340,   342,   341,   343,   344,   345,   346,
01450      346,   347,   348,   349,   349,   350,   350,   350,   352,   351,
01451      354,   353,   356,   355,   357,   357,   358,   359,   360,   361,
01452      361,   362,   363,   364,   364,   365,   365,   365,   367,   366,
01453      369,   368,   371,   370,   372,   372,   373,   374,   375,   376,
01454      376,   377,   378,   379,   379,   380,   380,   380,   382,   381,
01455      384,   383,   386,   385,   387,   387,   388,   389,   390,   391,
01456      391,   392,   393,   394,   394,   395,   395,   395,   397,   396,
01457      399,   398,   401,   400,   402,   402,   403,   404,   405,   406,
01458      406,   408,   407,   409,   410,   411,   412,   412,   414,   413,
01459      415,   416,   417,   418,   418,   420,   419,   421,   422,   423,
01460      424,   425,   425,   427,   426,   428,   428,   429,   429,   429,
01461      431,   430,   433,   432,   435,   434,   436,   436,   437,   437,
01462      438,   439,   439,   440,   440,   440,   441,   442,   443,   444,
01463      444,   445,   446,   446,   447,   448,   448,   449,   449,   450,
01464      450,   451,   452,   452,   453,   454,   455,   455,   456,   456,
01465      457,   459,   458,   460,   460,   461,   461,   462,   463,   463,
01466      464,   465,   466,   466,   467,   467,   468,   470,   469,   471,
01467      471,   472,   472,   473,   474,   474,   475,   476,   477,   477,
01468      478,   478,   479,   481,   480,   482,   482,   483,   483,   484,
01469      485,   485,   486,   487,   488,   488,   489,   489,   490,   492,
01470      491,   493,   493,   494,   494,   495,   496,   496,   497,   498,
01471      499,   499,   500,   500,   500,   501,   502,   502,   503,   504,
01472      504,   505,   505,   506,   507,   508,   508,   509,   509,   510,
01473      512,   511,   513,   513,   514,   514,   515,   516,   517,   517,
01474      518,   518,   518,   518,   518,   518,   518,   519,   521,   520,
01475      523,   522,   525,   524,   527,   526,   529,   528,   531,   530,
01476      532,   533,   533,   534,   535,   536,   536,   537,   537,   537,
01477      537,   538,   540,   539,   542,   541,   544,   543,   545,   545,
01478      546,   546,   547,   548,   548,   549,   549,   550,   550,   551,
01479      552,   552,   553,   554,   555,   555,   556,   556,   557,   559,
01480      558,   560,   560,   561,   561,   562,   563,   563,   564,   565,
01481      566,   566,   567,   567,   567,   568,   570,   569,   572,   571,
01482      573,   573,   574,   574,   575,   576,   577,   577,   578,   578,
01483      578,   578,   578,   578,   578,   579,   581,   580,   583,   582,
01484      585,   584,   587,   586,   589,   588,   591,   590,   592,   593,
01485      593,   594,   595,   596,   596,   597,   597,   597,   597,   598,
01486      600,   599,   602,   601,   604,   603,   605,   605,   606,   606,
01487      607,   608,   608,   609,   609,   610,   610,   611,   612,   612,
01488      613,   614,   615,   615,   616,   616,   617,   619,   618,   620,
01489      620,   621,   621,   622,   623,   623,   624,   625,   626,   626,
01490      627,   627,   627,   628,   630,   629,   632,   631,   633,   633,
01491      634,   634,   635,   636,   637,   637,   638,   638,   638,   638,
01492      638,   638,   638,   639,   641,   640,   643,   642,   645,   644,
01493      647,   646,   649,   648,   651,   650,   652,   653,   653,   654,
01494      655,   656,   656,   657,   657,   657,   657,   658,   660,   659,
01495      662,   661,   664,   663,   665,   665,   666,   666,   667,   668,
01496      669,   669,   671,   670,   672,   672,   673,   673,   673,   673,
01497      673,   673,   675,   674,   677,   676,   679,   678,   681,   680,
01498      683,   682,   685,   684,   686,   686
01499 };
01500 
01501 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
01502 static const yytype_uint8 yyr2[] =
01503 {
01504        0,     2,     3,     2,     1,     3,     5,     0,     2,     1,
01505        3,     1,     0,     2,     1,     1,     1,     1,     1,     1,
01506        1,     1,     1,     1,     1,     2,     1,     1,     2,     0,
01507        4,     2,     1,     1,     2,     0,     4,     2,     1,     1,
01508        2,     0,     4,     3,     1,     0,     0,     4,     1,     3,
01509        0,     1,     2,     1,     1,     2,     0,     4,     2,     1,
01510        1,     2,     0,     4,     2,     1,     1,     2,     0,     4,
01511        2,     1,     1,     2,     0,     4,     2,     1,     1,     2,
01512        0,     4,     3,     1,     0,     0,     4,     1,     3,     0,
01513        1,     4,     1,     4,     2,     0,     2,     0,     4,     0,
01514        2,     1,     1,     1,     0,     4,     0,     4,     0,     4,
01515        1,     2,     0,     2,     1,     3,     1,     0,     2,     1,
01516        1,     1,     1,     1,     3,     1,     0,     0,     4,     1,
01517        2,     3,     3,     3,     1,     0,     0,     4,     1,     2,
01518        3,     3,     3,     1,     0,     0,     4,     1,     2,     3,
01519        3,     2,     1,     1,     2,     0,     4,     4,     1,     4,
01520        2,     0,     2,     0,     4,     0,     2,     1,     1,     1,
01521        0,     4,     0,     4,     0,     4,     1,     2,     0,     2,
01522        1,     3,     1,     0,     2,     1,     1,     2,     1,     1,
01523        2,     0,     4,     4,     1,     4,     2,     0,     2,     0,
01524        4,     0,     2,     1,     1,     1,     0,     4,     0,     4,
01525        0,     4,     1,     2,     0,     2,     1,     3,     1,     0,
01526        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01527        1,     1,     1,     1,     1,     1,     3,     1,     0,     0,
01528        4,     1,     2,     3,     3,     2,     1,     1,     2,     0,
01529        4,     5,     1,     4,     0,     2,     0,     5,     5,     1,
01530        4,     0,     2,     0,     5,     5,     1,     4,     0,     2,
01531        0,     5,     5,     1,     4,     0,     2,     0,     5,     5,
01532        1,     4,     0,     2,     0,     5,     5,     1,     4,     0,
01533        2,     3,     1,     0,     2,     1,     1,     1,     0,     4,
01534        0,     4,     0,     4,     2,     1,     5,     1,     4,     0,
01535        2,     3,     1,     0,     2,     1,     1,     1,     0,     4,
01536        0,     4,     0,     4,     2,     1,     5,     1,     4,     0,
01537        2,     3,     1,     0,     2,     1,     1,     1,     0,     4,
01538        0,     4,     0,     4,     2,     1,     5,     1,     4,     0,
01539        2,     3,     1,     0,     2,     1,     1,     1,     0,     4,
01540        0,     4,     0,     4,     2,     1,     5,     1,     4,     0,
01541        2,     0,     5,     5,     1,     4,     0,     2,     0,     5,
01542        5,     1,     4,     0,     2,     0,     5,     4,     1,     4,
01543        2,     0,     2,     0,     4,     0,     2,     1,     1,     1,
01544        0,     4,     0,     4,     0,     4,     1,     2,     0,     3,
01545        1,     0,     2,     1,     1,     1,     4,     4,     4,     3,
01546        1,     4,     0,     3,     1,     0,     4,     8,     1,     0,
01547        5,     4,     0,     2,     3,     1,     0,     2,     1,     1,
01548        4,     0,     4,     2,     1,     0,     5,     4,     0,     2,
01549        3,     1,     0,     2,     1,     1,     4,     0,     4,     2,
01550        1,     0,     5,     4,     0,     2,     3,     1,     0,     2,
01551        1,     1,     4,     0,     4,     2,     1,     0,     5,     4,
01552        0,     2,     3,     1,     0,     2,     1,     1,     4,     0,
01553        4,     2,     1,     0,     5,     4,     0,     2,     3,     1,
01554        0,     2,     1,     1,     1,     4,     4,     4,     4,     3,
01555        1,     0,     2,     3,     1,     0,     2,     1,     1,     4,
01556        0,     4,     2,     1,     0,     2,     3,     1,     0,     2,
01557        1,     1,     1,     1,     1,     1,     1,     4,     0,     4,
01558        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
01559        3,     0,     2,     3,     1,     0,     2,     1,     1,     1,
01560        1,     4,     0,     4,     0,     4,     0,     4,     2,     1,
01561        0,     3,     1,     0,     4,     5,     1,     0,     5,     4,
01562        0,     2,     3,     1,     0,     2,     1,     1,     4,     0,
01563        4,     2,     1,     0,     5,     4,     0,     2,     3,     1,
01564        0,     2,     1,     1,     1,     4,     0,     4,     0,     4,
01565        2,     1,     0,     2,     3,     1,     0,     2,     1,     1,
01566        1,     1,     1,     1,     1,     4,     0,     4,     0,     4,
01567        0,     4,     0,     4,     0,     4,     0,     4,     3,     0,
01568        2,     3,     1,     0,     2,     1,     1,     1,     1,     4,
01569        0,     4,     0,     4,     0,     4,     2,     1,     0,     3,
01570        1,     0,     4,     5,     1,     0,     5,     4,     0,     2,
01571        3,     1,     0,     2,     1,     1,     4,     0,     4,     2,
01572        1,     0,     5,     4,     0,     2,     3,     1,     0,     2,
01573        1,     1,     1,     4,     0,     4,     0,     4,     2,     1,
01574        0,     2,     3,     1,     0,     2,     1,     1,     1,     1,
01575        1,     1,     1,     4,     0,     4,     0,     4,     0,     4,
01576        0,     4,     0,     4,     0,     4,     3,     0,     2,     3,
01577        1,     0,     2,     1,     1,     1,     1,     4,     0,     4,
01578        0,     4,     0,     4,     2,     1,     0,     5,     1,     4,
01579        0,     2,     0,     4,     0,     2,     1,     1,     1,     1,
01580        1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
01581        0,     4,     0,     4,     2,     1
01582 };
01583 
01584 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
01585    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
01586    means the default is an error.  */
01587 static const yytype_uint16 yydefact[] =
01588 {
01589        0,     0,     4,     0,     7,     0,     1,     3,     9,     0,
01590      112,     0,     5,     2,   114,   178,     0,    12,    11,     8,
01591      180,   214,     0,   117,   116,   113,     0,   216,   408,     0,
01592      183,   182,   179,     0,    10,    26,    32,    38,    44,    53,
01593       59,    65,    71,    77,    83,    92,    13,    14,     0,    15,
01594        0,    16,     0,    17,    45,    18,     0,    19,     0,    20,
01595        0,    21,     0,    22,     0,    23,    84,    24,     0,   410,
01596        6,   411,   219,   218,   215,     0,   115,   158,   125,   134,
01597      143,   152,   118,   119,   126,   120,   135,   121,   144,   122,
01598        0,   123,     0,     0,    27,    25,     0,    33,    31,     0,
01599       39,    37,     0,     0,     0,    54,    52,     0,    60,    58,
01600        0,    66,    64,     0,    72,    70,     0,    78,    76,     0,
01601        0,     0,     0,     0,     0,   181,   194,   188,   184,   185,
01602        0,   186,     0,     0,     0,     0,     0,     0,     0,     0,
01603      153,   151,     0,     0,    29,    28,    35,    34,    41,    40,
01604       46,    50,    48,    43,    56,    55,    62,    61,    68,    67,
01605       74,    73,    80,    79,    85,    89,    87,    82,     0,    95,
01606      422,   420,     0,     0,     0,   412,   413,   414,   415,   409,
01607      217,   388,   237,   246,   252,   259,   266,   273,   280,   374,
01608      367,   287,   307,   327,   347,   381,   220,   221,   238,   222,
01609        0,   223,     0,   224,     0,   225,     0,   226,     0,   227,
01610        0,   228,     0,   229,     0,   230,     0,   231,     0,   232,
01611        0,   233,     0,   234,     0,   235,     0,     0,   189,   187,
01612        0,     0,   127,     0,   129,   124,   136,     0,   138,   133,
01613      145,     0,   147,   142,   155,   154,     0,   161,     0,     0,
01614        0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
01615       90,     0,     0,    91,     0,   424,     0,   570,   425,     0,
01616        0,     0,     0,     0,     0,   247,   245,     0,     0,     0,
01617        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01619        0,     0,     0,   191,   190,     0,   197,     0,     0,     0,
01620      130,     0,     0,     0,   139,     0,     0,     0,   148,     0,
01621        0,   157,     0,    30,    36,    42,    47,    49,    57,    63,
01622       69,    75,    81,    86,    88,    93,    94,    97,    96,   419,
01623      572,   658,   573,     0,     0,     0,     0,     0,   239,     0,
01624      241,   236,   249,   248,     0,   254,     0,   261,     0,   268,
01625        0,   275,     0,   282,     0,   289,     0,   309,     0,   329,
01626        0,   349,     0,   369,     0,   376,     0,   383,     0,   391,
01627        0,     0,   193,     0,   128,   132,   131,   137,   141,   140,
01628      146,   150,   149,   156,   159,   160,   163,   162,    99,   660,
01629      746,   661,     0,     0,     0,   429,   428,   423,   416,   418,
01630      417,     0,     0,     0,   242,     0,     0,     0,     0,     0,
01631        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01633        0,   387,     0,   192,   195,   196,   199,   198,   165,     0,
01634      748,   421,     0,     0,     0,     0,   577,   576,   571,     0,
01635        0,   445,   240,   244,   243,   250,   253,     0,   251,   255,
01636      260,   258,     0,   262,   267,   265,     0,   269,   274,     0,
01637      272,   276,   281,     0,   279,   283,   288,   292,   286,   290,
01638      293,   308,   312,   306,   310,   313,   328,   332,   326,   330,
01639      333,   348,   352,   346,   350,   353,   368,     0,   366,   370,
01640      375,     0,   373,   377,   382,   380,     0,   384,   389,   390,
01641      393,   392,   201,     0,     0,   110,     0,     0,     0,   100,
01642      101,   102,   103,    98,     0,     0,     0,   665,   664,   659,
01643        0,     0,   593,   426,     0,     0,     0,   461,     0,     0,
01644        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01645      395,     0,     0,   176,     0,     0,     0,   166,   167,   168,
01646      169,   164,   111,   104,   106,   108,     0,   750,     0,     0,
01647      681,   574,     0,     0,     0,   612,     0,   432,     0,     0,
01648        0,   477,   256,   263,   270,   277,   284,     0,   305,     0,
01649        0,     0,   294,   295,   296,   297,   291,     0,   325,     0,
01650        0,     0,   314,   315,   316,   317,   311,     0,   345,     0,
01651        0,     0,   334,   335,   336,   337,   331,     0,   365,     0,
01652        0,     0,   354,   355,   356,   357,   351,   371,   378,   385,
01653        0,     0,   212,     0,     0,     0,   202,   203,   204,   205,
01654      200,   177,   170,   172,   174,     0,     0,     0,     0,     0,
01655      662,     0,     0,     0,   700,     0,   580,     0,     0,     0,
01656        0,     0,     0,   448,     0,     0,     0,   493,     0,     0,
01657        0,     0,     0,   304,   298,   300,   302,   324,   318,   320,
01658      322,   344,   338,   340,   342,   364,   358,   360,   362,     0,
01659        0,     0,     0,   406,     0,     0,     0,   396,   397,   398,
01660      399,   394,   213,   206,   208,   210,     0,     0,     0,   105,
01661      107,   109,   749,   747,   752,   751,     0,   668,     0,     0,
01662        0,     0,     0,     0,   596,   615,   575,   613,   616,   431,
01663      430,   435,   433,   436,     0,     0,     0,   464,     0,     0,
01664        0,   524,   257,   264,   271,   278,   285,     0,     0,     0,
01665        0,     0,     0,     0,     0,     0,     0,     0,     0,   372,
01666      379,   386,   407,   400,   402,   404,     0,     0,     0,   171,
01667      173,   175,   754,     0,     0,     0,   684,   703,   663,   701,
01668      704,   579,   578,   583,   581,   584,     0,     0,     0,     0,
01669      447,   451,   446,   449,   452,     0,     0,     0,   480,     0,
01670        0,     0,   299,   301,   303,   319,   321,   323,   339,   341,
01671      343,   359,   361,   363,     0,     0,     0,   207,   209,   211,
01672        0,   667,   666,   671,   669,   672,     0,     0,     0,     0,
01673      595,   599,   594,   597,   600,   639,     0,     0,     0,     0,
01674        0,     0,     0,   617,   618,   619,   620,   621,   622,   623,
01675      624,   614,     0,   444,     0,     0,   437,   438,   439,   434,
01676        0,   463,   467,   462,   465,   468,     0,     0,     0,   496,
01677      527,   427,   525,   528,   401,   403,   405,     0,   775,     0,
01678        0,     0,     0,     0,     0,   755,   756,   757,   758,   759,
01679      760,   761,   753,     0,   683,   687,   682,   685,   688,   727,
01680        0,     0,     0,     0,     0,     0,     0,   705,   706,   707,
01681      708,   709,   710,   711,   712,   702,     0,   592,     0,     0,
01682      585,   586,   587,   582,     0,     0,   630,   632,   634,     0,
01683      626,   628,   636,   443,     0,   441,     0,   460,     0,     0,
01684      453,   454,   455,   450,     0,   479,   483,   478,   481,   484,
01685        0,     0,     0,   774,   766,   768,   770,   762,   764,   772,
01686        0,   680,     0,     0,   673,   674,   675,   670,     0,     0,
01687      718,   720,   722,     0,   714,   716,   724,   591,     0,   589,
01688        0,   611,     0,     0,     0,   601,   602,   603,   604,   598,
01689      638,   642,   640,   643,     0,     0,     0,     0,     0,     0,
01690        0,     0,     0,   459,     0,   457,     0,   476,     0,     0,
01691      469,   470,   471,   466,     0,   495,   494,   499,   497,   500,
01692      551,     0,     0,     0,     0,     0,     0,     0,   529,   530,
01693      531,   532,   533,   534,   535,   536,   526,     0,     0,     0,
01694        0,     0,     0,   679,     0,   677,     0,   699,     0,     0,
01695        0,   689,   690,   691,   692,   686,   726,   730,   728,   731,
01696        0,     0,     0,     0,     0,     0,     0,     0,     0,   610,
01697        0,   606,   608,     0,   631,   633,   635,   625,   627,   629,
01698      637,   440,   442,     0,     0,   475,     0,   473,     0,   492,
01699        0,     0,   485,   486,   487,   482,     0,     0,   542,   544,
01700      546,     0,   538,   540,   548,   767,   769,   771,   763,   765,
01701      773,     0,     0,   698,     0,   694,   696,     0,   719,   721,
01702      723,   713,   715,   717,   725,   588,   590,     0,     0,     0,
01703        0,   657,     0,     0,     0,     0,   644,   645,   646,   647,
01704      648,   641,   456,   458,     0,     0,   491,     0,   489,   511,
01705      510,     0,     0,     0,   501,   502,   504,   503,   498,   550,
01706      554,   552,   555,     0,     0,     0,     0,     0,     0,     0,
01707      676,   678,     0,     0,     0,     0,   745,     0,     0,     0,
01708        0,   732,   733,   734,   735,   736,   729,   605,   607,   609,
01709      656,     0,   650,   652,   654,   472,   474,     0,     0,     0,
01710        0,     0,     0,     0,   543,   545,   547,   537,   539,   541,
01711      549,   693,   695,   697,   744,     0,   738,   740,   742,     0,
01712        0,     0,     0,   488,   490,   514,   509,   512,   515,     0,
01713        0,     0,     0,     0,   569,     0,     0,     0,     0,   556,
01714      557,   558,   559,   560,   553,     0,     0,     0,     0,   649,
01715      651,   653,   655,     0,   507,   506,   508,   505,   568,     0,
01716      562,   564,   566,   737,   739,   741,   743,     0,   523,     0,
01717        0,   516,   517,   518,   513,     0,     0,     0,     0,   522,
01718        0,   520,   561,   563,   565,   567,     0,     0,   519,   521
01719 };
01720 
01721 /* YYDEFGOTO[NTERM-NUM].  */
01722 static const yytype_int16 yydefgoto[] =
01723 {
01724       -1,     3,     4,     9,    10,    11,    19,    26,    46,    47,
01725       48,    95,   248,    49,    50,    98,   249,    51,    52,   101,
01726      250,    53,    54,   103,   251,   153,   253,    55,    56,   106,
01727      254,    57,    58,   109,   255,    59,    60,   112,   256,    61,
01728       62,   115,   257,    63,    64,   118,   258,    65,    66,   120,
01729      259,   167,   261,    67,    68,   122,   263,   264,   338,   398,
01730      449,   529,   530,   655,   531,   656,   532,   657,   533,    15,
01731       16,    25,    33,    82,    83,    84,   134,   307,   235,    85,
01732       86,   136,   311,   239,    87,    88,   138,   315,   243,    89,
01733       90,   141,   319,    91,    92,   143,   321,   322,   397,   448,
01734      523,   567,   568,   716,   569,   717,   570,   718,   571,    21,
01735       22,    32,    75,   128,   129,   130,   229,   380,   131,   132,
01736      231,   382,   383,   447,   522,   561,   646,   647,   776,   648,
01737      777,   649,   778,   650,    28,    29,    74,   124,   196,   197,
01738      198,   273,   411,   351,   199,   200,   276,   415,   201,   202,
01739      278,   417,   469,   678,   203,   204,   280,   419,   473,   679,
01740      205,   206,   282,   421,   477,   680,   207,   208,   284,   423,
01741      481,   681,   209,   210,   286,   425,   485,   682,   211,   212,
01742      288,   427,   489,   490,   553,   602,   603,   757,   604,   758,
01743      605,   759,   606,   213,   214,   290,   429,   494,   495,   554,
01744      612,   613,   760,   614,   761,   615,   762,   616,   215,   216,
01745      292,   431,   499,   500,   555,   622,   623,   763,   624,   764,
01746      625,   765,   626,   217,   218,   294,   433,   504,   505,   556,
01747      632,   633,   766,   634,   767,   635,   768,   636,   219,   220,
01748      296,   435,   509,   699,   221,   222,   298,   437,   513,   700,
01749      223,   224,   300,   439,   517,   701,   225,   226,   302,   441,
01750      442,   521,   560,   640,   707,   708,   824,   709,   825,   710,
01751      826,   711,    70,    71,   123,   175,   176,   177,   178,   179,
01752      266,   267,   268,   344,   407,   461,   545,   671,   742,   743,
01753      799,   866,   867,   868,  1012,   869,   547,   589,   745,   803,
01754      804,   870,   950,   951,   952,  1094,   953,   591,   675,   806,
01755      874,   875,   954,  1020,  1021,  1022,  1155,  1023,   677,   749,
01756      877,   958,   959,  1024,  1102,  1103,  1104,  1208,  1105,   751,
01757      810,   961,  1028,  1029,  1106,  1164,  1165,  1166,  1167,  1168,
01758     1209,  1237,  1238,  1263,  1281,  1282,  1283,  1297,  1284,   811,
01759      882,   883,   962,  1038,  1039,  1040,  1177,  1041,  1178,  1042,
01760     1173,  1043,  1174,  1044,  1175,  1045,  1179,  1046,  1107,  1171,
01761     1172,  1213,  1249,  1250,  1251,  1286,  1252,  1287,  1253,  1288,
01762     1254,   341,   342,   403,   458,   542,   583,   732,   794,   795,
01763      839,   930,   931,   932,  1078,   933,   585,   668,   797,   843,
01764      844,   934,   995,   996,   997,  1138,   998,  1139,   999,   669,
01765      737,   738,   798,   853,   854,   855,  1008,   856,  1009,   857,
01766     1004,   858,  1005,   859,  1006,   860,  1010,   861,   935,  1002,
01767     1003,  1083,  1146,  1147,  1148,  1230,  1149,  1231,  1150,  1232,
01768     1151,   400,   401,   454,   539,   580,   662,   784,   834,   835,
01769      903,   974,   975,   976,  1122,   977,   664,   729,   837,   907,
01770      908,   978,  1061,  1062,  1063,  1183,  1064,  1184,  1065,   730,
01771      789,   790,   838,   917,   918,   919,  1074,   920,  1075,   921,
01772     1070,   922,  1071,   923,  1072,   924,  1076,   925,   979,  1068,
01773     1069,  1127,  1191,  1192,  1193,  1256,  1194,  1257,  1195,  1258,
01774     1196,   451,   452,   535,   659,   725,   782,   830,   895,   896,
01775     1050,   897,  1051,   898,  1047,   899,  1048,   900,  1049,   901,
01776     1052,   902
01777 };
01778 
01779 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
01780    STATE-NUM.  */
01781 #define YYPACT_NINF -103
01782 static const yytype_int16 yypact[] =
01783 {
01784      138,    27,  -103,    42,    18,    54,  -103,  -103,  -103,    62,
01785       44,   174,  -103,  -103,  -103,    46,   233,  -103,  -103,  -103,
01786     -103,    48,   260,  -103,  -103,  -103,   211,  -103,    40,   291,
01787     -103,  -103,  -103,   -31,  -103,  -103,  -103,  -103,  -103,  -103,
01788     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,   293,  -103,
01789      304,  -103,   306,  -103,    87,  -103,   308,  -103,   310,  -103,
01790      312,  -103,   314,  -103,   316,  -103,    92,  -103,    95,  -103,
01791     -103,  -103,  -103,  -103,  -103,   -19,  -103,  -103,  -103,  -103,
01792     -103,  -103,  -103,  -103,    70,  -103,    72,  -103,    74,  -103,
01793      318,  -103,   103,    20,  -103,  -103,    15,  -103,  -103,    14,
01794     -103,  -103,   131,   320,    13,  -103,  -103,    16,  -103,  -103,
01795       12,  -103,  -103,    11,  -103,  -103,     7,  -103,  -103,   152,
01796      322,   115,   168,   121,     3,  -103,  -103,  -103,  -103,  -103,
01797      324,  -103,   107,   158,   326,   195,   328,   213,   330,    -1,
01798     -103,  -103,   189,   196,  -103,  -103,  -103,  -103,  -103,  -103,
01799     -103,   223,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01800     -103,  -103,  -103,  -103,  -103,   244,  -103,  -103,   246,  -103,
01801      111,  -103,   247,   250,   253,  -103,  -103,  -103,  -103,  -103,
01802     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01803     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,   228,  -103,
01804      332,  -103,   249,  -103,   255,  -103,   257,  -103,   259,  -103,
01805      261,  -103,   245,  -103,   264,  -103,   268,  -103,   274,  -103,
01806      263,  -103,   267,  -103,   269,  -103,   273,     1,  -103,  -103,
01807      360,   361,  -103,     4,  -103,  -103,  -103,     8,  -103,  -103,
01808     -103,     2,  -103,  -103,  -103,  -103,   370,  -103,   317,   319,
01809      315,   372,  -103,   321,   323,   313,   325,   311,   327,   374,
01810     -103,   329,   376,  -103,   262,  -103,   331,   241,   353,   384,
01811      386,   388,   391,   336,    -4,  -103,  -103,   389,   390,   393,
01812      392,   395,   394,   398,   397,   400,   401,   402,   403,   404,
01813      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
01814      415,   416,   417,  -103,  -103,   420,  -103,   421,   342,   345,
01815     -103,   422,   346,   347,  -103,   424,   343,   348,  -103,   349,
01816      428,  -103,   266,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01817     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01818     -103,   243,   362,   429,   340,   431,   432,   434,  -103,    -3,
01819     -103,  -103,  -103,  -103,   437,  -103,   438,  -103,   439,  -103,
01820      440,  -103,   441,  -103,   442,  -103,   443,  -103,   444,  -103,
01821      445,  -103,   446,  -103,   447,  -103,   448,  -103,   449,  -103,
01822      363,   450,  -103,   270,  -103,  -103,  -103,  -103,  -103,  -103,
01823     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01824      295,   423,   451,   344,   455,   333,  -103,  -103,  -103,  -103,
01825     -103,   454,   367,   369,  -103,   371,   458,   -37,   459,    38,
01826      460,   252,   462,    28,   463,   -67,   464,   -63,   465,   -71,
01827      466,   -74,   467,   -77,   468,   -59,   469,   -33,   470,   232,
01828      471,  -103,   278,  -103,  -103,  -103,  -103,  -103,  -103,    24,
01829     -103,  -103,   452,   472,   352,   475,   337,  -103,  -103,   477,
01830      453,   351,  -103,  -103,  -103,  -103,  -103,   473,  -103,  -103,
01831     -103,  -103,   478,  -103,  -103,  -103,   479,  -103,  -103,   480,
01832     -103,  -103,  -103,   482,  -103,  -103,  -103,  -103,  -103,  -103,
01833     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01834     -103,  -103,  -103,  -103,  -103,  -103,  -103,   483,  -103,  -103,
01835     -103,   484,  -103,  -103,  -103,  -103,   485,  -103,  -103,  -103,
01836     -103,  -103,  -103,   172,   418,  -103,   492,   493,   494,  -103,
01837     -103,  -103,  -103,  -103,   491,   490,   481,   350,  -103,  -103,
01838      495,   474,   355,  -103,   496,   497,   476,   364,   503,   504,
01839      505,   506,   507,    29,   283,   286,   289,   510,   511,   512,
01840     -103,   193,   435,  -103,   514,   516,   517,  -103,  -103,  -103,
01841     -103,  -103,  -103,  -103,  -103,  -103,   518,  -103,   515,   486,
01842      366,  -103,   519,   520,   489,  -103,   523,  -103,   524,   521,
01843      498,   383,  -103,  -103,  -103,  -103,  -103,   425,  -103,   530,
01844      531,   533,  -103,  -103,  -103,  -103,  -103,   430,  -103,   535,
01845      536,   537,  -103,  -103,  -103,  -103,  -103,   436,  -103,   538,
01846      539,   541,  -103,  -103,  -103,  -103,  -103,   456,  -103,   542,
01847      543,   544,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01848      201,   487,  -103,   545,   546,   547,  -103,  -103,  -103,  -103,
01849     -103,  -103,  -103,  -103,  -103,   548,   549,   550,   551,   202,
01850     -103,   552,   553,   513,  -103,   555,  -103,   554,   556,   -70,
01851      557,   234,   561,  -103,   560,   559,   532,   433,   502,   488,
01852      499,   500,   501,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01853     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,   508,
01854      509,   426,   525,  -103,   569,   571,   572,  -103,  -103,  -103,
01855     -103,  -103,  -103,  -103,  -103,  -103,   570,   573,   574,  -103,
01856     -103,  -103,  -103,  -103,  -103,  -103,   577,  -103,   576,   567,
01857      -76,   578,   221,   579,  -103,  -103,  -103,  -103,  -103,  -103,
01858     -103,  -103,  -103,  -103,   580,    36,   581,  -103,   582,   583,
01859      558,  -103,  -103,  -103,  -103,  -103,  -103,   584,   587,   588,
01860      589,   590,   591,   592,   593,   594,   595,   596,   600,  -103,
01861     -103,  -103,  -103,  -103,  -103,  -103,   602,   603,   604,  -103,
01862     -103,  -103,  -103,   605,   216,   585,  -103,  -103,  -103,  -103,
01863     -103,  -103,  -103,  -103,  -103,  -103,   608,    89,   150,   148,
01864     -103,  -103,  -103,  -103,  -103,   609,    19,   612,  -103,   611,
01865      610,   -57,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01866     -103,  -103,  -103,  -103,   613,   614,   615,  -103,  -103,  -103,
01867      154,  -103,  -103,  -103,  -103,  -103,   616,   -11,   161,   204,
01868     -103,  -103,  -103,  -103,  -103,  -103,   575,   621,   622,   619,
01869      624,   625,   626,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01870     -103,  -103,   522,  -103,   623,   628,  -103,  -103,  -103,  -103,
01871      209,  -103,  -103,  -103,  -103,  -103,   627,    -6,   630,  -103,
01872     -103,  -103,  -103,  -103,  -103,  -103,  -103,   526,  -103,   629,
01873      633,   634,   635,   636,   637,  -103,  -103,  -103,  -103,  -103,
01874     -103,  -103,  -103,   212,  -103,  -103,  -103,  -103,  -103,  -103,
01875      638,   639,   640,   641,   642,   643,   644,  -103,  -103,  -103,
01876     -103,  -103,  -103,  -103,  -103,  -103,   527,  -103,   645,   646,
01877     -103,  -103,  -103,  -103,   100,   -60,  -103,  -103,  -103,   648,
01878     -103,  -103,  -103,  -103,   649,  -103,   528,  -103,   650,   647,
01879     -103,  -103,  -103,  -103,   215,  -103,  -103,  -103,  -103,  -103,
01880      651,   235,   183,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01881      529,  -103,   652,   653,  -103,  -103,  -103,  -103,    17,   -82,
01882     -103,  -103,  -103,   655,  -103,  -103,  -103,  -103,   657,  -103,
01883      534,  -103,   656,   661,   662,  -103,  -103,  -103,  -103,  -103,
01884     -103,  -103,  -103,  -103,   659,   660,   663,   664,   665,   666,
01885      667,   668,   670,  -103,   673,  -103,   562,  -103,   672,   677,
01886     -103,  -103,  -103,  -103,   220,  -103,  -103,  -103,  -103,  -103,
01887     -103,   678,   679,   681,   680,   682,   685,   687,  -103,  -103,
01888     -103,  -103,  -103,  -103,  -103,  -103,  -103,   684,   686,   689,
01889      690,   691,   692,  -103,   695,  -103,   563,  -103,   694,   699,
01890      700,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01891      697,   698,   701,   702,   703,   704,   705,   706,   707,  -103,
01892      710,  -103,  -103,    97,  -103,  -103,  -103,  -103,  -103,  -103,
01893     -103,  -103,  -103,   709,   711,  -103,   712,  -103,   586,  -103,
01894      714,   719,  -103,  -103,  -103,  -103,   222,   -62,  -103,  -103,
01895     -103,   718,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01896     -103,   717,   720,  -103,   721,  -103,  -103,   119,  -103,  -103,
01897     -103,  -103,  -103,  -103,  -103,  -103,  -103,   722,   723,   724,
01898      599,  -103,   726,   725,   731,   732,  -103,  -103,  -103,  -103,
01899     -103,  -103,  -103,  -103,   729,   730,  -103,   733,  -103,  -103,
01900     -103,   734,   735,   736,  -103,  -103,  -103,  -103,  -103,  -103,
01901     -103,  -103,  -103,   737,   738,   739,   740,   741,   742,   743,
01902     -103,  -103,   744,   745,   746,   568,  -103,   747,   752,   753,
01903      754,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01904     -103,   755,  -103,  -103,  -103,  -103,  -103,   751,   756,  -102,
01905      368,   757,   759,   126,  -103,  -103,  -103,  -103,  -103,  -103,
01906     -103,  -103,  -103,  -103,  -103,   760,  -103,  -103,  -103,   761,
01907      762,   763,   764,  -103,  -103,  -103,  -103,  -103,  -103,   765,
01908      766,   767,   768,   606,  -103,   769,   758,   774,   775,  -103,
01909     -103,  -103,  -103,  -103,  -103,   772,   773,   776,   777,  -103,
01910     -103,  -103,  -103,   225,  -103,  -103,  -103,  -103,  -103,   780,
01911     -103,  -103,  -103,  -103,  -103,  -103,  -103,   607,  -103,   779,
01912      778,  -103,  -103,  -103,  -103,   781,   782,   783,   784,  -103,
01913      787,  -103,  -103,  -103,  -103,  -103,   786,   788,  -103,  -103
01914 };
01915 
01916 /* YYPGOTO[NTERM-NUM].  */
01917 static const yytype_int8 yypgoto[] =
01918 {
01919     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01920     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01921     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01922     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01923     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01924     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01925     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01926     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01927     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01928     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01929     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01930     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01931     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01932     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01933     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01934     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01935     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01936     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01937     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01938     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01939     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01940     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01941     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01942     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01943     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01944     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01945     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01946     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01947     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01948     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01949     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01950     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01951     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01952     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01953     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01954     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01955     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01956     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01957     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01958     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01959     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01960     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01961     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01962     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01963     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01964     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01965     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01966     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01967     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01968     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01969     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01970     -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,  -103,
01971     -103,  -103
01972 };
01973 
01974 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
01975    positive, shift that token.  If negative, reduce the rule which
01976    number is the opposite.  If zero, do what YYDEFACT says.
01977    If YYTABLE_NINF, syntax error.  */
01978 #define YYTABLE_NINF -1
01979 static const yytype_uint16 yytable[] =
01980 {
01981      352,  1066,   412,   413,   244,   303,   787,   316,   317,   308,
01982      309,   162,   735,   312,   313,   160,   158,   154,   148,   146,
01983      156,  1169,    76,  1000,   144,   880,  1056,  1057,     7,   502,
01984     1235,   467,   497,   524,   525,   492,   125,   483,   597,   598,
01985        5,  1236,     6,   487,   484,   507,   503,   498,   493,    77,
01986      599,   600,   601,    78,   488,    79,   508,    80,  1058,    81,
01987      180,   126,   468,    12,   526,  1059,  1060,   527,     8,   528,
01988     1170,   511,   881,   127,  1067,   736,    13,   788,   147,   149,
01989      512,   145,   155,   181,   163,   159,   161,   157,  1001,   310,
01990      245,   318,   414,   353,   304,   314,    14,   182,    69,   183,
01991       20,   184,   102,   185,    27,   186,  1140,  1141,   119,   990,
01992      991,   187,   121,   188,   133,   189,   135,   190,   137,   191,
01993      142,   192,   168,   193,   230,   194,   956,   195,  1185,  1186,
01994      170,   171,   479,   957,   150,  1243,  1244,   480,  1142,   471,
01995     1143,   992,   472,  1144,  1145,   905,   993,   994,   906,     1,
01996        2,   872,   172,   173,   174,   164,   873,   862,   863,   845,
01997     1187,   232,  1188,   887,   888,  1189,  1190,  1245,   801,  1246,
01998      909,   802,  1247,  1248,   846,   847,   848,   169,   889,   890,
01999      891,   562,   563,    17,    18,   910,   911,   912,   849,   864,
02000      850,   865,  1030,   851,   892,   852,   246,   893,   236,   894,
02001      913,   914,   641,   642,   915,   247,   916,  1031,  1032,  1033,
02002      702,   703,   564,   926,   927,   565,   240,   566,   946,   947,
02003     1034,   970,   971,  1035,  1016,  1017,  1036,   252,  1037,  1098,
02004     1099,  1159,  1160,   643,  1277,  1278,   644,   841,   645,   265,
02005      842,   704,    23,    24,   705,   928,   706,   929,   260,  1161,
02006      948,   262,   949,   972,   269,   973,  1018,   270,  1019,  1162,
02007      271,  1100,    34,  1101,  1163,   287,  1279,   277,  1280,    30,
02008       31,    35,   272,    36,   279,    37,   281,    38,   283,    39,
02009      285,    40,   295,    41,   289,    42,   297,    43,   291,    44,
02010      301,    45,   607,   608,   293,   617,   618,   299,   627,   628,
02011       72,    73,    93,    94,   609,   610,   611,   619,   620,   621,
02012      629,   630,   631,    96,    97,    99,   100,   104,   105,   107,
02013      108,   110,   111,   113,   114,   116,   117,   139,   140,   151,
02014      152,   165,   166,   227,   228,   233,   234,   237,   238,   241,
02015      242,   274,   275,   336,   337,   349,   350,   395,   396,   405,
02016      406,   445,   446,   456,   457,   475,   476,   515,   516,   519,
02017      520,   537,   538,   723,   724,   740,   741,   305,   792,   793,
02018      306,   832,   833,  1239,  1240,   320,  1026,  1027,   323,   326,
02019      325,   333,   324,   335,   329,   340,   331,   343,   327,   345,
02020      339,   346,   328,   347,   348,   399,   354,   402,   330,   355,
02021      356,   357,   358,   359,   332,   360,   361,   362,   334,   364,
02022      363,   366,   365,   368,   367,   370,   369,   372,   371,   374,
02023      373,   376,   375,   378,   377,   381,   379,   385,   384,   387,
02024      386,   390,   391,   388,   389,   394,   404,   392,   408,   409,
02025      393,   410,   416,   418,   420,   422,   424,   426,   428,   430,
02026      432,   434,   436,   438,   440,   450,   443,   444,   455,   453,
02027      459,   462,   463,   460,   464,   466,   470,   474,   465,   478,
02028      482,   486,   491,   496,   501,   506,   510,   514,   518,   536,
02029      540,   534,   548,   541,   543,   546,   578,   549,   550,   551,
02030      544,   552,   557,   558,   559,   573,   574,   575,   576,   577,
02031      590,   572,   581,   586,   579,   584,   587,   592,   593,   594,
02032      595,   596,   582,   588,   637,   638,   639,   652,   651,   653,
02033      654,   676,   660,   658,   663,   661,   665,   667,   670,   666,
02034      673,   672,   683,   684,   685,   674,   686,   687,   688,   689,
02035      690,   692,   693,   691,   694,   696,   697,   698,   713,   714,
02036      715,     0,   728,   771,     0,   719,   720,   721,   722,   726,
02037      731,   733,   727,   695,   739,   734,   744,   746,   747,   748,
02038      712,   752,   773,   750,   774,   775,   786,   779,   936,     0,
02039      780,   781,   783,   785,   796,   791,   805,   800,   809,   807,
02040      836,   812,   808,   753,   813,   814,   815,   816,   817,   818,
02041      819,   820,   821,   822,   754,   755,   756,   823,   772,   827,
02042      828,   829,   831,   769,   770,   840,   871,   876,   878,   879,
02043      884,   885,   886,   904,   937,   938,   939,   940,   941,   942,
02044      944,   945,   964,     0,   955,   960,   965,   966,   967,   968,
02045      969,   980,   981,   982,     0,   984,   985,   986,   983,   989,
02046     1015,     0,   988,  1007,  1011,   943,  1055,  1014,  1025,  1054,
02047     1073,  1013,  1077,  1080,  1081,  1082,  1084,  1085,     0,     0,
02048     1086,  1087,  1088,  1089,  1090,  1091,   987,  1092,  1093,  1096,
02049     1097,  1108,  1109,  1079,  1110,  1112,  1053,  1111,  1113,   963,
02050     1114,  1115,     0,  1116,     0,  1095,  1117,  1118,  1119,  1120,
02051     1121,  1124,  1125,  1126,  1128,  1129,     0,     0,  1130,  1131,
02052     1132,  1133,  1134,  1135,  1136,  1137,  1152,  1154,  1153,  1156,
02053     1123,  1157,  1158,  1176,  1180,  1224,  1182,  1181,  1202,  1197,
02054     1198,  1199,  1200,  1201,  1203,  1204,  1205,  1206,  1207,  1268,
02055     1289,  1210,  1211,  1212,  1214,  1215,  1216,  1217,  1218,  1219,
02056     1220,  1221,  1222,  1223,  1225,  1226,  1227,  1228,  1233,     0,
02057     1229,  1270,  1241,  1234,  1242,  1255,     0,     0,  1259,  1260,
02058     1261,  1262,  1264,  1265,  1266,  1267,  1269,  1271,  1272,  1273,
02059     1274,  1291,     0,  1275,  1276,  1285,  1290,     0,  1292,  1293,
02060     1294,  1295,  1296,  1298,     0,  1299
02061 };
02062 
02063 static const yytype_int16 yycheck[] =
02064 {
02065        4,    83,     5,     6,     5,     4,    82,     5,     6,     5,
02066        6,     4,    82,     5,     6,     4,     4,     4,     4,     4,
02067        4,    83,    53,    83,     4,    82,     9,    10,    10,   106,
02068      132,    68,   106,     9,    10,   106,    55,   104,     9,    10,
02069       13,   143,     0,   106,   111,   104,   123,   121,   119,    80,
02070       21,    22,    23,    84,   117,    86,   115,    88,    41,    90,
02071       57,    80,    99,     9,    40,    48,    49,    43,    50,    45,
02072      132,   104,   129,    92,   156,   145,    14,   153,    63,    65,
02073      113,    61,    69,    80,    77,    73,    75,    71,   148,    85,
02074       91,    89,    95,    97,    93,    87,    52,    94,    58,    96,
02075       54,    98,    15,   100,    56,   102,     9,    10,    16,     9,
02076       10,   108,    17,   110,    44,   112,    44,   114,    44,   116,
02077       17,   118,     7,   120,    17,   122,   132,   124,     9,    10,
02078        9,    10,   104,   139,     3,     9,    10,   109,    41,   101,
02079       43,    41,   104,    46,    47,   156,    46,    47,   159,    11,
02080       12,   132,    31,    32,    33,     3,   137,     9,    10,     9,
02081       41,     3,    43,     9,    10,    46,    47,    41,   132,    43,
02082        9,   135,    46,    47,    24,    25,    26,     9,    24,    25,
02083       26,     9,    10,     9,    10,    24,    25,    26,    38,    41,
02084       40,    43,     9,    43,    40,    45,     7,    43,     3,    45,
02085       39,    40,     9,    10,    43,     9,    45,    24,    25,    26,
02086        9,    10,    40,     9,    10,    43,     3,    45,     9,    10,
02087       37,     9,    10,    40,     9,    10,    43,     4,    45,     9,
02088       10,     9,    10,    40,     9,    10,    43,   148,    45,   128,
02089      151,    40,     9,    10,    43,    41,    45,    43,     4,    27,
02090       41,     5,    43,    41,     7,    43,    41,     7,    43,    37,
02091        7,    41,    51,    43,    42,    20,    41,    18,    43,     9,
02092       10,    60,    44,    62,    19,    64,    19,    66,    19,    68,
02093       19,    70,    19,    72,    20,    74,    19,    76,    20,    78,
02094       17,    80,     9,    10,    20,     9,    10,    28,     9,    10,
02095        9,    10,     9,    10,    21,    22,    23,    21,    22,    23,
02096       21,    22,    23,     9,    10,     9,    10,     9,    10,     9,
02097       10,     9,    10,     9,    10,     9,    10,     9,    10,     9,
02098       10,     9,    10,     9,    10,     9,    10,     9,    10,     9,
02099       10,     9,    10,    81,    82,     9,    10,    81,    82,     9,
02100       10,    81,    82,     9,    10,   103,   104,   125,   126,    81,
02101       82,     9,    10,   161,   162,   131,   132,     7,   147,   148,
02102        9,   155,   156,     5,     6,     5,   141,   142,    61,     7,
02103       65,     7,    63,     7,    71,   144,    75,    34,    67,     5,
02104       59,     5,    69,     5,     3,   152,     7,    35,    73,     9,
02105        7,     9,     7,     9,    77,     7,     9,     7,    79,     7,
02106        9,     7,     9,     7,     9,     7,     9,     7,     9,     7,
02107        9,     7,     9,     7,     9,     5,     9,    85,     7,     7,
02108       85,     7,    89,    87,    87,     7,     7,    89,     7,     7,
02109       91,     7,     5,     5,     5,     5,     5,     5,     5,     5,
02110        5,     5,     5,     5,     5,   160,    93,     7,     7,    36,
02111        5,     7,    95,   130,    95,     7,     7,     7,    97,     7,
02112        7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
02113        5,    29,     9,   146,     7,   134,     5,     9,     9,     9,
02114       37,     9,     9,     9,     9,     3,     3,     3,     7,     9,
02115      136,    83,     7,     7,   154,   150,     9,     4,     4,     4,
02116        4,     4,    38,    37,     4,     4,     4,     3,    83,     3,
02117        3,   138,     7,     5,   158,    39,     7,    38,     5,     9,
02118        9,     7,   107,     3,     3,    37,     3,   107,     3,     3,
02119        3,     3,     3,   107,     3,     3,     3,     3,     3,     3,
02120        3,    -1,    39,   127,    -1,     7,     7,     7,     7,     7,
02121        5,     7,     9,   107,     7,     9,     5,     7,     9,    37,
02122       83,    69,     3,   140,     3,     3,     9,     7,     3,    -1,
02123        7,     7,     5,     7,     5,     7,     5,     7,    30,     7,
02124        5,     7,     9,   105,     7,     7,     7,     7,     7,     7,
02125        7,     7,     7,     7,   105,   105,   105,     7,    83,     7,
02126        7,     7,     7,   105,   105,     7,     7,     5,     7,     9,
02127        7,     7,     7,     7,     3,     3,     7,     3,     3,     3,
02128        7,     3,     3,    -1,     7,     5,     3,     3,     3,     3,
02129        3,     3,     3,     3,    -1,     3,     3,     3,     7,     3,
02130        3,    -1,     7,     5,     5,   133,     3,     7,     7,     7,
02131        5,   133,     5,     7,     3,     3,     7,     7,    -1,    -1,
02132        7,     7,     7,     7,     7,     7,   149,     7,     5,     7,
02133        3,     3,     3,   149,     3,     3,   157,     7,     3,   163,
02134        3,     7,    -1,     7,    -1,   133,     7,     7,     7,     7,
02135        5,     7,     3,     3,     7,     7,    -1,    -1,     7,     7,
02136        7,     7,     7,     7,     7,     5,     7,     5,     7,   133,
02137      157,     7,     3,     5,     7,   157,     5,     7,     3,     7,
02138        7,     7,   133,     7,     3,     3,     7,     7,     5,   133,
02139      133,     7,     7,     7,     7,     7,     7,     7,     7,     7,
02140        7,     7,     7,     7,     7,     3,     3,     3,     7,    -1,
02141        5,     3,     5,     7,     5,     5,    -1,    -1,     7,     7,
02142        7,     7,     7,     7,     7,     7,     7,     3,     3,     7,
02143        7,     3,    -1,     7,     7,     5,     7,    -1,     7,     7,
02144        7,     7,     5,     7,    -1,     7
02145 };
02146 
02147 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
02148    symbol of state STATE-NUM.  */
02149 static const yytype_uint16 yystos[] =
02150 {
02151        0,    11,    12,   166,   167,    13,     0,    10,    50,   168,
02152      169,   170,     9,    14,    52,   234,   235,     9,    10,   171,
02153       54,   274,   275,     9,    10,   236,   172,    56,   299,   300,
02154        9,    10,   276,   237,    51,    60,    62,    64,    66,    68,
02155       70,    72,    74,    76,    78,    80,   173,   174,   175,   178,
02156      179,   182,   183,   186,   187,   192,   193,   196,   197,   200,
02157      201,   204,   205,   208,   209,   212,   213,   218,   219,    58,
02158      437,   438,     9,    10,   301,   277,    53,    80,    84,    86,
02159       88,    90,   238,   239,   240,   244,   245,   249,   250,   254,
02160      255,   258,   259,     9,    10,   176,     9,    10,   180,     9,
02161       10,   184,    15,   188,     9,    10,   194,     9,    10,   198,
02162        9,    10,   202,     9,    10,   206,     9,    10,   210,    16,
02163      214,    17,   220,   439,   302,    55,    80,    92,   278,   279,
02164      280,   283,   284,    44,   241,    44,   246,    44,   251,     9,
02165       10,   256,    17,   260,     4,    61,     4,    63,     4,    65,
02166        3,     9,    10,   190,     4,    69,     4,    71,     4,    73,
02167        4,    75,     4,    77,     3,     9,    10,   216,     7,     9,
02168        9,    10,    31,    32,    33,   440,   441,   442,   443,   444,
02169       57,    80,    94,    96,    98,   100,   102,   108,   110,   112,
02170      114,   116,   118,   120,   122,   124,   303,   304,   305,   309,
02171      310,   313,   314,   319,   320,   325,   326,   331,   332,   337,
02172      338,   343,   344,   358,   359,   373,   374,   388,   389,   403,
02173      404,   409,   410,   415,   416,   421,   422,     9,    10,   281,
02174       17,   285,     3,     9,    10,   243,     3,     9,    10,   248,
02175        3,     9,    10,   253,     5,    91,     7,     9,   177,   181,
02176      185,   189,     4,   191,   195,   199,   203,   207,   211,   215,
02177        4,   217,     5,   221,   222,   128,   445,   446,   447,     7,
02178        7,     7,    44,   306,     9,    10,   311,    18,   315,    19,
02179      321,    19,   327,    19,   333,    19,   339,    20,   345,    20,
02180      360,    20,   375,    20,   390,    19,   405,    19,   411,    28,
02181      417,    17,   423,     4,    93,     7,     9,   242,     5,     6,
02182       85,   247,     5,     6,    87,   252,     5,     6,    89,   257,
02183        5,   261,   262,    61,    63,    65,     7,    67,    69,    71,
02184       73,    75,    77,     7,    79,     7,    81,    82,   223,    59,
02185      144,   546,   547,    34,   448,     5,     5,     5,     3,     9,
02186       10,   308,     4,    97,     7,     9,     7,     9,     7,     9,
02187        7,     9,     7,     9,     7,     9,     7,     9,     7,     9,
02188        7,     9,     7,     9,     7,     9,     7,     9,     7,     9,
02189      282,     5,   286,   287,     7,    85,    85,     7,    87,    87,
02190        7,    89,    89,    91,     7,    81,    82,   263,   224,   152,
02191      606,   607,    35,   548,     7,     9,    10,   449,     7,     7,
02192        7,   307,     5,     6,    95,   312,     5,   316,     5,   322,
02193        5,   328,     5,   334,     5,   340,     5,   346,     5,   361,
02194        5,   376,     5,   391,     5,   406,     5,   412,     5,   418,
02195        5,   424,   425,    93,     7,    81,    82,   288,   264,   225,
02196      160,   666,   667,    36,   608,     7,     9,    10,   549,     5,
02197      130,   450,     7,    95,    95,    97,     7,    68,    99,   317,
02198        7,   101,   104,   323,     7,   103,   104,   329,     7,   104,
02199      109,   335,     7,   104,   111,   341,     7,   106,   117,   347,
02200      348,     7,   106,   119,   362,   363,     7,   106,   121,   377,
02201      378,     7,   106,   123,   392,   393,     7,   104,   115,   407,
02202        7,   104,   113,   413,     7,   125,   126,   419,     7,    81,
02203       82,   426,   289,   265,     9,    10,    40,    43,    45,   226,
02204      227,   229,   231,   233,    29,   668,     7,     9,    10,   609,
02205        5,   146,   550,     7,    37,   451,   134,   461,     9,     9,
02206        9,     9,     9,   349,   364,   379,   394,     9,     9,     9,
02207      427,   290,     9,    10,    40,    43,    45,   266,   267,   269,
02208      271,   273,    83,     3,     3,     3,     7,     9,     5,   154,
02209      610,     7,    38,   551,   150,   561,     7,     9,    37,   462,
02210      136,   472,     4,     4,     4,     4,     4,     9,    10,    21,
02211       22,    23,   350,   351,   353,   355,   357,     9,    10,    21,
02212       22,    23,   365,   366,   368,   370,   372,     9,    10,    21,
02213       22,    23,   380,   381,   383,   385,   387,     9,    10,    21,
02214       22,    23,   395,   396,   398,   400,   402,     4,     4,     4,
02215      428,     9,    10,    40,    43,    45,   291,   292,   294,   296,
02216      298,    83,     3,     3,     3,   228,   230,   232,     5,   669,
02217        7,    39,   611,   158,   621,     7,     9,    38,   562,   574,
02218        5,   452,     7,     9,    37,   473,   138,   483,   318,   324,
02219      330,   336,   342,   107,     3,     3,     3,   107,     3,     3,
02220        3,   107,     3,     3,     3,   107,     3,     3,     3,   408,
02221      414,   420,     9,    10,    40,    43,    45,   429,   430,   432,
02222      434,   436,    83,     3,     3,     3,   268,   270,   272,     7,
02223        7,     7,     7,   161,   162,   670,     7,     9,    39,   622,
02224      634,     5,   552,     7,     9,    82,   145,   575,   576,     7,
02225      131,   132,   453,   454,     5,   463,     7,     9,    37,   484,
02226      140,   494,    69,   105,   105,   105,   105,   352,   354,   356,
02227      367,   369,   371,   382,   384,   386,   397,   399,   401,   105,
02228      105,   127,    83,     3,     3,     3,   293,   295,   297,     7,
02229        7,     7,   671,     5,   612,     7,     9,    82,   153,   635,
02230      636,     7,   147,   148,   553,   554,     5,   563,   577,   455,
02231        7,   132,   135,   464,   465,     5,   474,     7,     9,    30,
02232      495,   514,     7,     7,     7,     7,     7,     7,     7,     7,
02233        7,     7,     7,     7,   431,   433,   435,     7,     7,     7,
02234      672,     7,   155,   156,   613,   614,     5,   623,   637,   555,
02235        7,   148,   151,   564,   565,     9,    24,    25,    26,    38,
02236       40,    43,    45,   578,   579,   580,   582,   584,   586,   588,
02237      590,   592,     9,    10,    41,    43,   456,   457,   458,   460,
02238      466,     7,   132,   137,   475,   476,     5,   485,     7,     9,
02239       82,   129,   515,   516,     7,     7,     7,     9,    10,    24,
02240       25,    26,    40,    43,    45,   673,   674,   676,   678,   680,
02241      682,   684,   686,   615,     7,   156,   159,   624,   625,     9,
02242       24,    25,    26,    39,    40,    43,    45,   638,   639,   640,
02243      642,   644,   646,   648,   650,   652,     9,    10,    41,    43,
02244      556,   557,   558,   560,   566,   593,     3,     3,     3,     7,
02245        3,     3,     3,   133,     7,     3,     9,    10,    41,    43,
02246      467,   468,   469,   471,   477,     7,   132,   139,   486,   487,
02247        5,   496,   517,   163,     3,     3,     3,     3,     3,     3,
02248        9,    10,    41,    43,   616,   617,   618,   620,   626,   653,
02249        3,     3,     3,     7,     3,     3,     3,   149,     7,     3,
02250        9,    10,    41,    46,    47,   567,   568,   569,   571,   573,
02251       83,   148,   594,   595,   585,   587,   589,     5,   581,   583,
02252      591,     5,   459,   133,     7,     3,     9,    10,    41,    43,
02253      478,   479,   480,   482,   488,     7,   141,   142,   497,   498,
02254        9,    24,    25,    26,    37,    40,    43,    45,   518,   519,
02255      520,   522,   524,   526,   528,   530,   532,   679,   681,   683,
02256      675,   677,   685,   157,     7,     3,     9,    10,    41,    48,
02257       49,   627,   628,   629,   631,   633,    83,   156,   654,   655,
02258      645,   647,   649,     5,   641,   643,   651,     5,   559,   149,
02259        7,     3,     3,   596,     7,     7,     7,     7,     7,     7,
02260        7,     7,     7,     5,   470,   133,     7,     3,     9,    10,
02261       41,    43,   489,   490,   491,   493,   499,   533,     3,     3,
02262        3,     7,     3,     3,     3,     7,     7,     7,     7,     7,
02263        7,     5,   619,   157,     7,     3,     3,   656,     7,     7,
02264        7,     7,     7,     7,     7,     7,     7,     5,   570,   572,
02265        9,    10,    41,    43,    46,    47,   597,   598,   599,   601,
02266      603,   605,     7,     7,     5,   481,   133,     7,     3,     9,
02267       10,    27,    37,    42,   500,   501,   502,   503,   504,    83,
02268      132,   534,   535,   525,   527,   529,     5,   521,   523,   531,
02269        7,     7,     5,   630,   632,     9,    10,    41,    43,    46,
02270       47,   657,   658,   659,   661,   663,   665,     7,     7,     7,
02271      133,     7,     3,     3,     3,     7,     7,     5,   492,   505,
02272        7,     7,     7,   536,     7,     7,     7,     7,     7,     7,
02273        7,     7,     7,     7,   157,     7,     3,     3,     3,     5,
02274      600,   602,   604,     7,     7,   132,   143,   506,   507,     5,
02275        6,     5,     5,     9,    10,    41,    43,    46,    47,   537,
02276      538,   539,   541,   543,   545,     5,   660,   662,   664,     7,
02277        7,     7,     7,   508,     7,     7,     7,     7,   133,     7,
02278        3,     3,     3,     7,     7,     7,     7,     9,    10,    41,
02279       43,   509,   510,   511,   513,     5,   540,   542,   544,   133,
02280        7,     3,     7,     7,     7,     7,     5,   512,     7,     7
02281 };
02282 
02283 #define yyerrok         (yyerrstatus = 0)
02284 #define yyclearin       (yychar = YYEMPTY)
02285 #define YYEMPTY         (-2)
02286 #define YYEOF           0
02287 
02288 #define YYACCEPT        goto yyacceptlab
02289 #define YYABORT         goto yyabortlab
02290 #define YYERROR         goto yyerrorlab
02291 
02292 
02293 /* Like YYERROR except do call yyerror.  This remains here temporarily
02294    to ease the transition to the new meaning of YYERROR, for GCC.
02295    Once GCC version 2 has supplanted version 1, this can go.  */
02296 
02297 #define YYFAIL          goto yyerrlab
02298 
02299 #define YYRECOVERING()  (!!yyerrstatus)
02300 
02301 #define YYBACKUP(Token, Value)                                  \
02302 do                                                              \
02303   if (yychar == YYEMPTY && yylen == 1)                          \
02304     {                                                           \
02305       yychar = (Token);                                         \
02306       yylval = (Value);                                         \
02307       yytoken = YYTRANSLATE (yychar);                           \
02308       YYPOPSTACK (1);                                           \
02309       goto yybackup;                                            \
02310     }                                                           \
02311   else                                                          \
02312     {                                                           \
02313       yyerror (&yylloc, osoption, parserData, YY_("syntax error: cannot back up")); \
02314       YYERROR;                                                  \
02315     }                                                           \
02316 while (YYID (0))
02317 
02318 
02319 #define YYTERROR        1
02320 #define YYERRCODE       256
02321 
02322 
02323 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
02324    If N is 0, then set CURRENT to the empty location which ends
02325    the previous symbol: RHS[0] (always defined).  */
02326 
02327 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
02328 #ifndef YYLLOC_DEFAULT
02329 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
02330     do                                                                  \
02331       if (YYID (N))                                                    \
02332         {                                                               \
02333           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
02334           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
02335           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
02336           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
02337         }                                                               \
02338       else                                                              \
02339         {                                                               \
02340           (Current).first_line   = (Current).last_line   =              \
02341             YYRHSLOC (Rhs, 0).last_line;                                \
02342           (Current).first_column = (Current).last_column =              \
02343             YYRHSLOC (Rhs, 0).last_column;                              \
02344         }                                                               \
02345     while (YYID (0))
02346 #endif
02347 
02348 
02349 /* YY_LOCATION_PRINT -- Print the location on the stream.
02350    This macro was not mandated originally: define only if we know
02351    we won't break user code: when these are the locations we know.  */
02352 
02353 #ifndef YY_LOCATION_PRINT
02354 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
02355 #  define YY_LOCATION_PRINT(File, Loc)                  \
02356      fprintf (File, "%d.%d-%d.%d",                      \
02357               (Loc).first_line, (Loc).first_column,     \
02358               (Loc).last_line,  (Loc).last_column)
02359 # else
02360 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
02361 # endif
02362 #endif
02363 
02364 
02365 /* YYLEX -- calling `yylex' with the right arguments.  */
02366 
02367 #ifdef YYLEX_PARAM
02368 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
02369 #else
02370 # define YYLEX yylex (&yylval, &yylloc, scanner)
02371 #endif
02372 
02373 /* Enable debugging if requested.  */
02374 #if YYDEBUG
02375 
02376 # ifndef YYFPRINTF
02377 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
02378 #  define YYFPRINTF fprintf
02379 # endif
02380 
02381 # define YYDPRINTF(Args)                        \
02382 do {                                            \
02383   if (yydebug)                                  \
02384     YYFPRINTF Args;                             \
02385 } while (YYID (0))
02386 
02387 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
02388 do {                                                                      \
02389   if (yydebug)                                                            \
02390     {                                                                     \
02391       YYFPRINTF (stderr, "%s ", Title);                                   \
02392       yy_symbol_print (stderr,                                            \
02393                   Type, Value, Location, osoption, parserData); \
02394       YYFPRINTF (stderr, "\n");                                           \
02395     }                                                                     \
02396 } while (YYID (0))
02397 
02398 
02399 /*--------------------------------.
02400 | Print this symbol on YYOUTPUT.  |
02401 `--------------------------------*/
02402 
02403 /*ARGSUSED*/
02404 #if (defined __STDC__ || defined __C99__FUNC__ \
02405      || defined __cplusplus || defined _MSC_VER)
02406 static void
02407 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSOption *osoption, OSoLParserData *parserData)
02408 #else
02409 static void
02410 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osoption, parserData)
02411     FILE *yyoutput;
02412     int yytype;
02413     YYSTYPE const * const yyvaluep;
02414     YYLTYPE const * const yylocationp;
02415     OSOption *osoption;
02416     OSoLParserData *parserData;
02417 #endif
02418 {
02419   if (!yyvaluep)
02420     return;
02421   YYUSE (yylocationp);
02422   YYUSE (osoption);
02423   YYUSE (parserData);
02424 # ifdef YYPRINT
02425   if (yytype < YYNTOKENS)
02426     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
02427 # else
02428   YYUSE (yyoutput);
02429 # endif
02430   switch (yytype)
02431     {
02432       default:
02433         break;
02434     }
02435 }
02436 
02437 
02438 /*--------------------------------.
02439 | Print this symbol on YYOUTPUT.  |
02440 `--------------------------------*/
02441 
02442 #if (defined __STDC__ || defined __C99__FUNC__ \
02443      || defined __cplusplus || defined _MSC_VER)
02444 static void
02445 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSOption *osoption, OSoLParserData *parserData)
02446 #else
02447 static void
02448 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, osoption, parserData)
02449     FILE *yyoutput;
02450     int yytype;
02451     YYSTYPE const * const yyvaluep;
02452     YYLTYPE const * const yylocationp;
02453     OSOption *osoption;
02454     OSoLParserData *parserData;
02455 #endif
02456 {
02457   if (yytype < YYNTOKENS)
02458     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
02459   else
02460     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
02461 
02462   YY_LOCATION_PRINT (yyoutput, *yylocationp);
02463   YYFPRINTF (yyoutput, ": ");
02464   yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osoption, parserData);
02465   YYFPRINTF (yyoutput, ")");
02466 }
02467 
02468 /*------------------------------------------------------------------.
02469 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
02470 | TOP (included).                                                   |
02471 `------------------------------------------------------------------*/
02472 
02473 #if (defined __STDC__ || defined __C99__FUNC__ \
02474      || defined __cplusplus || defined _MSC_VER)
02475 static void
02476 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
02477 #else
02478 static void
02479 yy_stack_print (bottom, top)
02480     yytype_int16 *bottom;
02481     yytype_int16 *top;
02482 #endif
02483 {
02484   YYFPRINTF (stderr, "Stack now");
02485   for (; bottom <= top; ++bottom)
02486     YYFPRINTF (stderr, " %d", *bottom);
02487   YYFPRINTF (stderr, "\n");
02488 }
02489 
02490 # define YY_STACK_PRINT(Bottom, Top)                            \
02491 do {                                                            \
02492   if (yydebug)                                                  \
02493     yy_stack_print ((Bottom), (Top));                           \
02494 } while (YYID (0))
02495 
02496 
02497 /*------------------------------------------------.
02498 | Report that the YYRULE is going to be reduced.  |
02499 `------------------------------------------------*/
02500 
02501 #if (defined __STDC__ || defined __C99__FUNC__ \
02502      || defined __cplusplus || defined _MSC_VER)
02503 static void
02504 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, OSOption *osoption, OSoLParserData *parserData)
02505 #else
02506 static void
02507 yy_reduce_print (yyvsp, yylsp, yyrule, osoption, parserData)
02508     YYSTYPE *yyvsp;
02509     YYLTYPE *yylsp;
02510     int yyrule;
02511     OSOption *osoption;
02512     OSoLParserData *parserData;
02513 #endif
02514 {
02515   int yynrhs = yyr2[yyrule];
02516   int yyi;
02517   unsigned long int yylno = yyrline[yyrule];
02518   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
02519              yyrule - 1, yylno);
02520   /* The symbols being reduced.  */
02521   for (yyi = 0; yyi < yynrhs; yyi++)
02522     {
02523       fprintf (stderr, "   $%d = ", yyi + 1);
02524       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
02525                        &(yyvsp[(yyi + 1) - (yynrhs)])
02526                        , &(yylsp[(yyi + 1) - (yynrhs)])                , osoption, parserData);
02527       fprintf (stderr, "\n");
02528     }
02529 }
02530 
02531 # define YY_REDUCE_PRINT(Rule)          \
02532 do {                                    \
02533   if (yydebug)                          \
02534     yy_reduce_print (yyvsp, yylsp, Rule, osoption, parserData); \
02535 } while (YYID (0))
02536 
02537 /* Nonzero means print parse trace.  It is left uninitialized so that
02538    multiple parsers can coexist.  */
02539 int yydebug;
02540 #else /* !YYDEBUG */
02541 # define YYDPRINTF(Args)
02542 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
02543 # define YY_STACK_PRINT(Bottom, Top)
02544 # define YY_REDUCE_PRINT(Rule)
02545 #endif /* !YYDEBUG */
02546 
02547 
02548 /* YYINITDEPTH -- initial size of the parser's stacks.  */
02549 #ifndef YYINITDEPTH
02550 # define YYINITDEPTH 200
02551 #endif
02552 
02553 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
02554    if the built-in stack extension method is used).
02555 
02556    Do not make this value too large; the results are undefined if
02557    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
02558    evaluated with infinite-precision integer arithmetic.  */
02559 
02560 #ifndef YYMAXDEPTH
02561 # define YYMAXDEPTH 10000
02562 #endif
02563 
02564 
02565 
02566 #if YYERROR_VERBOSE
02567 
02568 # ifndef yystrlen
02569 #  if defined __GLIBC__ && defined _STRING_H
02570 #   define yystrlen strlen
02571 #  else
02572 /* Return the length of YYSTR.  */
02573 #if (defined __STDC__ || defined __C99__FUNC__ \
02574      || defined __cplusplus || defined _MSC_VER)
02575 static YYSIZE_T
02576 yystrlen (const char *yystr)
02577 #else
02578 static YYSIZE_T
02579 yystrlen (yystr)
02580     const char *yystr;
02581 #endif
02582 {
02583   YYSIZE_T yylen;
02584   for (yylen = 0; yystr[yylen]; yylen++)
02585     continue;
02586   return yylen;
02587 }
02588 #  endif
02589 # endif
02590 
02591 # ifndef yystpcpy
02592 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
02593 #   define yystpcpy stpcpy
02594 #  else
02595 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
02596    YYDEST.  */
02597 #if (defined __STDC__ || defined __C99__FUNC__ \
02598      || defined __cplusplus || defined _MSC_VER)
02599 static char *
02600 yystpcpy (char *yydest, const char *yysrc)
02601 #else
02602 static char *
02603 yystpcpy (yydest, yysrc)
02604     char *yydest;
02605     const char *yysrc;
02606 #endif
02607 {
02608   char *yyd = yydest;
02609   const char *yys = yysrc;
02610 
02611   while ((*yyd++ = *yys++) != '\0')
02612     continue;
02613 
02614   return yyd - 1;
02615 }
02616 #  endif
02617 # endif
02618 
02619 # ifndef yytnamerr
02620 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
02621    quotes and backslashes, so that it's suitable for yyerror.  The
02622    heuristic is that double-quoting is unnecessary unless the string
02623    contains an apostrophe, a comma, or backslash (other than
02624    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
02625    null, do not copy; instead, return the length of what the result
02626    would have been.  */
02627 static YYSIZE_T
02628 yytnamerr (char *yyres, const char *yystr)
02629 {
02630   if (*yystr == '"')
02631     {
02632       YYSIZE_T yyn = 0;
02633       char const *yyp = yystr;
02634 
02635       for (;;)
02636         switch (*++yyp)
02637           {
02638           case '\'':
02639           case ',':
02640             goto do_not_strip_quotes;
02641 
02642           case '\\':
02643             if (*++yyp != '\\')
02644               goto do_not_strip_quotes;
02645             /* Fall through.  */
02646           default:
02647             if (yyres)
02648               yyres[yyn] = *yyp;
02649             yyn++;
02650             break;
02651 
02652           case '"':
02653             if (yyres)
02654               yyres[yyn] = '\0';
02655             return yyn;
02656           }
02657     do_not_strip_quotes: ;
02658     }
02659 
02660   if (! yyres)
02661     return yystrlen (yystr);
02662 
02663   return yystpcpy (yyres, yystr) - yyres;
02664 }
02665 # endif
02666 
02667 /* Copy into YYRESULT an error message about the unexpected token
02668    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
02669    including the terminating null byte.  If YYRESULT is null, do not
02670    copy anything; just return the number of bytes that would be
02671    copied.  As a special case, return 0 if an ordinary "syntax error"
02672    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
02673    size calculation.  */
02674 static YYSIZE_T
02675 yysyntax_error (char *yyresult, int yystate, int yychar)
02676 {
02677   int yyn = yypact[yystate];
02678 
02679   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
02680     return 0;
02681   else
02682     {
02683       int yytype = YYTRANSLATE (yychar);
02684       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
02685       YYSIZE_T yysize = yysize0;
02686       YYSIZE_T yysize1;
02687       int yysize_overflow = 0;
02688       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
02689       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
02690       int yyx;
02691 
02692 # if 0
02693       /* This is so xgettext sees the translatable formats that are
02694          constructed on the fly.  */
02695       YY_("syntax error, unexpected %s");
02696       YY_("syntax error, unexpected %s, expecting %s");
02697       YY_("syntax error, unexpected %s, expecting %s or %s");
02698       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
02699       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
02700 # endif
02701       char *yyfmt;
02702       char const *yyf;
02703       static char const yyunexpected[] = "syntax error, unexpected %s";
02704       static char const yyexpecting[] = ", expecting %s";
02705       static char const yyor[] = " or %s";
02706       char yyformat[sizeof yyunexpected
02707                     + sizeof yyexpecting - 1
02708                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
02709                        * (sizeof yyor - 1))];
02710       char const *yyprefix = yyexpecting;
02711 
02712       /* Start YYX at -YYN if negative to avoid negative indexes in
02713          YYCHECK.  */
02714       int yyxbegin = yyn < 0 ? -yyn : 0;
02715 
02716       /* Stay within bounds of both yycheck and yytname.  */
02717       int yychecklim = YYLAST - yyn + 1;
02718       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
02719       int yycount = 1;
02720 
02721       yyarg[0] = yytname[yytype];
02722       yyfmt = yystpcpy (yyformat, yyunexpected);
02723 
02724       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
02725         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02726           {
02727             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
02728               {
02729                 yycount = 1;
02730                 yysize = yysize0;
02731                 yyformat[sizeof yyunexpected - 1] = '\0';
02732                 break;
02733               }
02734             yyarg[yycount++] = yytname[yyx];
02735             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
02736             yysize_overflow |= (yysize1 < yysize);
02737             yysize = yysize1;
02738             yyfmt = yystpcpy (yyfmt, yyprefix);
02739             yyprefix = yyor;
02740           }
02741 
02742       yyf = YY_(yyformat);
02743       yysize1 = yysize + yystrlen (yyf);
02744       yysize_overflow |= (yysize1 < yysize);
02745       yysize = yysize1;
02746 
02747       if (yysize_overflow)
02748         return YYSIZE_MAXIMUM;
02749 
02750       if (yyresult)
02751         {
02752           /* Avoid sprintf, as that infringes on the user's name space.
02753              Don't have undefined behavior even if the translation
02754              produced a string with the wrong number of "%s"s.  */
02755           char *yyp = yyresult;
02756           int yyi = 0;
02757           while ((*yyp = *yyf) != '\0')
02758             {
02759               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
02760                 {
02761                   yyp += yytnamerr (yyp, yyarg[yyi++]);
02762                   yyf += 2;
02763                 }
02764               else
02765                 {
02766                   yyp++;
02767                   yyf++;
02768                 }
02769             }
02770         }
02771       return yysize;
02772     }
02773 }
02774 #endif /* YYERROR_VERBOSE */
02775 
02776 
02777 /*-----------------------------------------------.
02778 | Release the memory associated to this symbol.  |
02779 `-----------------------------------------------*/
02780 
02781 /*ARGSUSED*/
02782 #if (defined __STDC__ || defined __C99__FUNC__ \
02783      || defined __cplusplus || defined _MSC_VER)
02784 static void
02785 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, OSOption *osoption, OSoLParserData *parserData)
02786 #else
02787 static void
02788 yydestruct (yymsg, yytype, yyvaluep, yylocationp, osoption, parserData)
02789     const char *yymsg;
02790     int yytype;
02791     YYSTYPE *yyvaluep;
02792     YYLTYPE *yylocationp;
02793     OSOption *osoption;
02794     OSoLParserData *parserData;
02795 #endif
02796 {
02797   YYUSE (yyvaluep);
02798   YYUSE (yylocationp);
02799   YYUSE (osoption);
02800   YYUSE (parserData);
02801 
02802   if (!yymsg)
02803     yymsg = "Deleting";
02804   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
02805 
02806   switch (yytype)
02807     {
02808 
02809       default:
02810         break;
02811     }
02812 }
02813 
02814 
02815 /* Prevent warnings from -Wmissing-prototypes.  */
02816 
02817 #ifdef YYPARSE_PARAM
02818 #if defined __STDC__ || defined __cplusplus
02819 int yyparse (void *YYPARSE_PARAM);
02820 #else
02821 int yyparse ();
02822 #endif
02823 #else /* ! YYPARSE_PARAM */
02824 #if defined __STDC__ || defined __cplusplus
02825 int yyparse (OSOption *osoption, OSoLParserData *parserData);
02826 #else
02827 int yyparse ();
02828 #endif
02829 #endif /* ! YYPARSE_PARAM */
02830 
02831 
02832 
02833 
02834 
02835 
02836 /*----------.
02837 | yyparse.  |
02838 `----------*/
02839 
02840 #ifdef YYPARSE_PARAM
02841 #if (defined __STDC__ || defined __C99__FUNC__ \
02842      || defined __cplusplus || defined _MSC_VER)
02843 int
02844 yyparse (void *YYPARSE_PARAM)
02845 #else
02846 int
02847 yyparse (YYPARSE_PARAM)
02848     void *YYPARSE_PARAM;
02849 #endif
02850 #else /* ! YYPARSE_PARAM */
02851 #if (defined __STDC__ || defined __C99__FUNC__ \
02852      || defined __cplusplus || defined _MSC_VER)
02853 int
02854 yyparse (OSOption *osoption, OSoLParserData *parserData)
02855 #else
02856 int
02857 yyparse (osoption, parserData)
02858     OSOption *osoption;
02859     OSoLParserData *parserData;
02860 #endif
02861 #endif
02862 {
02863   /* The look-ahead symbol.  */
02864 int yychar;
02865 
02866 /* The semantic value of the look-ahead symbol.  */
02867 YYSTYPE yylval;
02868 
02869 /* Number of syntax errors so far.  */
02870 int yynerrs;
02871 /* Location data for the look-ahead symbol.  */
02872 YYLTYPE yylloc;
02873 
02874   int yystate;
02875   int yyn;
02876   int yyresult;
02877   /* Number of tokens to shift before error messages enabled.  */
02878   int yyerrstatus;
02879   /* Look-ahead token as an internal (translated) token number.  */
02880   int yytoken = 0;
02881 #if YYERROR_VERBOSE
02882   /* Buffer for error messages, and its allocated size.  */
02883   char yymsgbuf[128];
02884   char *yymsg = yymsgbuf;
02885   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
02886 #endif
02887 
02888   /* Three stacks and their tools:
02889      `yyss': related to states,
02890      `yyvs': related to semantic values,
02891      `yyls': related to locations.
02892 
02893      Refer to the stacks thru separate pointers, to allow yyoverflow
02894      to reallocate them elsewhere.  */
02895 
02896   /* The state stack.  */
02897   yytype_int16 yyssa[YYINITDEPTH];
02898   yytype_int16 *yyss = yyssa;
02899   yytype_int16 *yyssp;
02900 
02901   /* The semantic value stack.  */
02902   YYSTYPE yyvsa[YYINITDEPTH];
02903   YYSTYPE *yyvs = yyvsa;
02904   YYSTYPE *yyvsp;
02905 
02906   /* The location stack.  */
02907   YYLTYPE yylsa[YYINITDEPTH];
02908   YYLTYPE *yyls = yylsa;
02909   YYLTYPE *yylsp;
02910   /* The locations where the error started and ended.  */
02911   YYLTYPE yyerror_range[2];
02912 
02913 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
02914 
02915   YYSIZE_T yystacksize = YYINITDEPTH;
02916 
02917   /* The variables used to return semantic value and location from the
02918      action routines.  */
02919   YYSTYPE yyval;
02920   YYLTYPE yyloc;
02921 
02922   /* The number of symbols on the RHS of the reduced rule.
02923      Keep to zero when no symbol should be popped.  */
02924   int yylen = 0;
02925 
02926   YYDPRINTF ((stderr, "Starting parse\n"));
02927 
02928   yystate = 0;
02929   yyerrstatus = 0;
02930   yynerrs = 0;
02931   yychar = YYEMPTY;             /* Cause a token to be read.  */
02932 
02933   /* Initialize stack pointers.
02934      Waste one element of value and location stack
02935      so that they stay on the same level as the state stack.
02936      The wasted elements are never initialized.  */
02937 
02938   yyssp = yyss;
02939   yyvsp = yyvs;
02940   yylsp = yyls;
02941 #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
02942   /* Initialize the default location before parsing starts.  */
02943   yylloc.first_line   = yylloc.last_line   = 1;
02944   yylloc.first_column = yylloc.last_column = 0;
02945 #endif
02946 
02947   goto yysetstate;
02948 
02949 /*------------------------------------------------------------.
02950 | yynewstate -- Push a new state, which is found in yystate.  |
02951 `------------------------------------------------------------*/
02952  yynewstate:
02953   /* In all cases, when you get here, the value and location stacks
02954      have just been pushed.  So pushing a state here evens the stacks.  */
02955   yyssp++;
02956 
02957  yysetstate:
02958   *yyssp = yystate;
02959 
02960   if (yyss + yystacksize - 1 <= yyssp)
02961     {
02962       /* Get the current used size of the three stacks, in elements.  */
02963       YYSIZE_T yysize = yyssp - yyss + 1;
02964 
02965 #ifdef yyoverflow
02966       {
02967         /* Give user a chance to reallocate the stack.  Use copies of
02968            these so that the &'s don't force the real ones into
02969            memory.  */
02970         YYSTYPE *yyvs1 = yyvs;
02971         yytype_int16 *yyss1 = yyss;
02972         YYLTYPE *yyls1 = yyls;
02973 
02974         /* Each stack pointer address is followed by the size of the
02975            data in use in that stack, in bytes.  This used to be a
02976            conditional around just the two extra args, but that might
02977            be undefined if yyoverflow is a macro.  */
02978         yyoverflow (YY_("memory exhausted"),
02979                     &yyss1, yysize * sizeof (*yyssp),
02980                     &yyvs1, yysize * sizeof (*yyvsp),
02981                     &yyls1, yysize * sizeof (*yylsp),
02982                     &yystacksize);
02983         yyls = yyls1;
02984         yyss = yyss1;
02985         yyvs = yyvs1;
02986       }
02987 #else /* no yyoverflow */
02988 # ifndef YYSTACK_RELOCATE
02989       goto yyexhaustedlab;
02990 # else
02991       /* Extend the stack our own way.  */
02992       if (YYMAXDEPTH <= yystacksize)
02993         goto yyexhaustedlab;
02994       yystacksize *= 2;
02995       if (YYMAXDEPTH < yystacksize)
02996         yystacksize = YYMAXDEPTH;
02997 
02998       {
02999         yytype_int16 *yyss1 = yyss;
03000         union yyalloc *yyptr =
03001           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
03002         if (! yyptr)
03003           goto yyexhaustedlab;
03004         YYSTACK_RELOCATE (yyss);
03005         YYSTACK_RELOCATE (yyvs);
03006         YYSTACK_RELOCATE (yyls);
03007 #  undef YYSTACK_RELOCATE
03008         if (yyss1 != yyssa)
03009           YYSTACK_FREE (yyss1);
03010       }
03011 # endif
03012 #endif /* no yyoverflow */
03013 
03014       yyssp = yyss + yysize - 1;
03015       yyvsp = yyvs + yysize - 1;
03016       yylsp = yyls + yysize - 1;
03017 
03018       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
03019                   (unsigned long int) yystacksize));
03020 
03021       if (yyss + yystacksize - 1 <= yyssp)
03022         YYABORT;
03023     }
03024 
03025   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
03026 
03027   goto yybackup;
03028 
03029 /*-----------.
03030 | yybackup.  |
03031 `-----------*/
03032 yybackup:
03033 
03034   /* Do appropriate processing given the current state.  Read a
03035      look-ahead token if we need one and don't already have one.  */
03036 
03037   /* First try to decide what to do without reference to look-ahead token.  */
03038   yyn = yypact[yystate];
03039   if (yyn == YYPACT_NINF)
03040     goto yydefault;
03041 
03042   /* Not known => get a look-ahead token if don't already have one.  */
03043 
03044   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
03045   if (yychar == YYEMPTY)
03046     {
03047       YYDPRINTF ((stderr, "Reading a token: "));
03048       yychar = YYLEX;
03049     }
03050 
03051   if (yychar <= YYEOF)
03052     {
03053       yychar = yytoken = YYEOF;
03054       YYDPRINTF ((stderr, "Now at end of input.\n"));
03055     }
03056   else
03057     {
03058       yytoken = YYTRANSLATE (yychar);
03059       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
03060     }
03061 
03062   /* If the proper action on seeing token YYTOKEN is to reduce or to
03063      detect an error, take that action.  */
03064   yyn += yytoken;
03065   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
03066     goto yydefault;
03067   yyn = yytable[yyn];
03068   if (yyn <= 0)
03069     {
03070       if (yyn == 0 || yyn == YYTABLE_NINF)
03071         goto yyerrlab;
03072       yyn = -yyn;
03073       goto yyreduce;
03074     }
03075 
03076   if (yyn == YYFINAL)
03077     YYACCEPT;
03078 
03079   /* Count tokens shifted since error; after three, turn off error
03080      status.  */
03081   if (yyerrstatus)
03082     yyerrstatus--;
03083 
03084   /* Shift the look-ahead token.  */
03085   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
03086 
03087   /* Discard the shifted token unless it is eof.  */
03088   if (yychar != YYEOF)
03089     yychar = YYEMPTY;
03090 
03091   yystate = yyn;
03092   *++yyvsp = yylval;
03093   *++yylsp = yylloc;
03094   goto yynewstate;
03095 
03096 
03097 /*-----------------------------------------------------------.
03098 | yydefault -- do the default action for the current state.  |
03099 `-----------------------------------------------------------*/
03100 yydefault:
03101   yyn = yydefact[yystate];
03102   if (yyn == 0)
03103     goto yyerrlab;
03104   goto yyreduce;
03105 
03106 
03107 /*-----------------------------.
03108 | yyreduce -- Do a reduction.  |
03109 `-----------------------------*/
03110 yyreduce:
03111   /* yyn is the number of a rule to reduce with.  */
03112   yylen = yyr2[yyn];
03113 
03114   /* If YYLEN is nonzero, implement the default value of the action:
03115      `$$ = $1'.
03116 
03117      Otherwise, the following line sets YYVAL to garbage.
03118      This behavior is undocumented and Bison
03119      users should not rely upon it.  Assigning to YYVAL
03120      unconditionally makes the parser a bit smaller, and it avoids a
03121      GCC warning that YYVAL may be used uninitialized.  */
03122   yyval = yyvsp[1-yylen];
03123 
03124   /* Default location.  */
03125   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
03126   YY_REDUCE_PRINT (yyn);
03127   switch (yyn)
03128     {
03129         case 9:
03130 
03131     {   if (parserData->osolgeneralPresent)
03132         {       osolerror( NULL, osoption, parserData, "only one <general> element allowed");
03133         }
03134         else
03135         {       parserData->osolgeneralPresent = true;
03136                 osoption->general = new GeneralOption();
03137         }
03138 }
03139     break;
03140 
03141   case 26:
03142 
03143     {   if (parserData->serviceURIPresent)
03144         {       osolerror( NULL, osoption, parserData, "only one <serviceURI> element allowed");
03145         }
03146         else
03147         {       parserData->serviceURIPresent = true;
03148         }
03149 }
03150     break;
03151 
03152   case 29:
03153 
03154     {osoption->general->serviceURI = (yyvsp[(2) - (2)].sval);}
03155     break;
03156 
03157   case 32:
03158 
03159     {   if (parserData->serviceNamePresent)
03160         {       osolerror( NULL, osoption, parserData, "only one <serviceName> element allowed");
03161         }
03162         else
03163         {       parserData->serviceNamePresent = true;
03164         }
03165 }
03166     break;
03167 
03168   case 35:
03169 
03170     {osoption->general->serviceName = (yyvsp[(2) - (2)].sval);}
03171     break;
03172 
03173   case 38:
03174 
03175     {   if (parserData->instanceNamePresent)
03176         {       osolerror( NULL, osoption, parserData, "only one <instanceName> element allowed");
03177         }
03178         else
03179         {       parserData->instanceNamePresent = true;
03180         }
03181 }
03182     break;
03183 
03184   case 41:
03185 
03186     {osoption->general->instanceName = (yyvsp[(2) - (2)].sval);}
03187     break;
03188 
03189   case 44:
03190 
03191     {   if (parserData->instanceLocationPresent)
03192         {       osolerror( NULL, osoption, parserData, "only one <instanceLocation> element allowed");
03193         }
03194         else
03195         {       parserData->instanceLocationPresent = true;
03196                 osoption->general->instanceLocation = new InstanceLocationOption();
03197                 osoption->general->instanceLocation->locationType = "local";
03198         }
03199 }
03200     break;
03201 
03202   case 46:
03203 
03204     {   
03205         if (verifyLocationType((yyvsp[(2) - (2)].sval)) == true)
03206                 osoption->general->instanceLocation->locationType = (yyvsp[(2) - (2)].sval);
03207         else
03208                 osolerror( NULL, osoption, parserData, "Not a valid locationType");
03209 }
03210     break;
03211 
03212   case 51:
03213 
03214     {osoption->general->instanceLocation->value = (yyvsp[(1) - (1)].sval);}
03215     break;
03216 
03217   case 53:
03218 
03219     {   if (parserData->jobIDPresent)
03220         {       osolerror( NULL, osoption, parserData, "only one <jobID> element allowed");
03221         }
03222         else
03223         {       parserData->jobIDPresent = true;
03224         }
03225 }
03226     break;
03227 
03228   case 56:
03229 
03230     {osoption->general->jobID = (yyvsp[(2) - (2)].sval);}
03231     break;
03232 
03233   case 59:
03234 
03235     {   if (parserData->solverToInvokePresent)
03236         {       osolerror( NULL, osoption, parserData, "only one <solverToInvoke> element allowed");
03237         }
03238         else
03239         {       parserData->solverToInvokePresent = true;
03240         }
03241 }
03242     break;
03243 
03244   case 62:
03245 
03246     {osoption->general->solverToInvoke = (yyvsp[(2) - (2)].sval);}
03247     break;
03248 
03249   case 65:
03250 
03251     {   if (parserData->licensePresent)
03252         {       osolerror( NULL, osoption, parserData, "only one <license> element allowed");
03253         }
03254         else
03255         {       parserData->licensePresent = true;      
03256         }
03257 }
03258     break;
03259 
03260   case 68:
03261 
03262     {osoption->general->license = (yyvsp[(2) - (2)].sval);}
03263     break;
03264 
03265   case 71:
03266 
03267     {   if (parserData->usernamePresent)
03268         {       osolerror( NULL, osoption, parserData, "only one <userName> element allowed");
03269         }
03270         else
03271         {       parserData->usernamePresent = true;
03272         }
03273 }
03274     break;
03275 
03276   case 74:
03277 
03278     {osoption->general->userName = (yyvsp[(2) - (2)].sval);}
03279     break;
03280 
03281   case 77:
03282 
03283     {   if (parserData->passwordPresent)
03284         {       osolerror( NULL, osoption, parserData, "only one <password> element allowed");
03285         }
03286         else
03287         {       parserData->passwordPresent = true;
03288         }
03289 }
03290     break;
03291 
03292   case 80:
03293 
03294     {osoption->general->password = (yyvsp[(2) - (2)].sval);}
03295     break;
03296 
03297   case 83:
03298 
03299     {   if (parserData->contactPresent)
03300         {       osolerror( NULL, osoption, parserData, "only one <contact> element allowed");
03301         }
03302         else
03303         {       parserData->contactPresent = true;
03304                 osoption->general->contact = new ContactOption();
03305                 osoption->general->contact->transportType = "osp";
03306         }
03307 }
03308     break;
03309 
03310   case 85:
03311 
03312     {
03313         if (verifyTransportType((yyvsp[(2) - (2)].sval)) == true)
03314                 osoption->general->contact->transportType = (yyvsp[(2) - (2)].sval);
03315         else
03316                 osolerror( NULL, osoption, parserData, "Not a valid transport type");
03317 }
03318     break;
03319 
03320   case 90:
03321 
03322     {osoption->general->contact->value = (yyvsp[(1) - (1)].sval);}
03323     break;
03324 
03325   case 92:
03326 
03327     {   if (parserData->otherGeneralOptionsPresent)
03328         {       osolerror( NULL, osoption, parserData, "only one <otherOptions> element allowed");
03329         }
03330         else
03331         {       parserData->otherGeneralOptionsPresent = true;
03332                 osoption->general->otherOptions = new OtherOptions();
03333         }
03334 }
03335     break;
03336 
03337   case 93:
03338 
03339     {   if ((yyvsp[(3) - (4)].ival) < 0)
03340                 osolerror( NULL, osoption, parserData, "Number of <other> elements cannot be negative");
03341         osoption->general->otherOptions->numberOfOtherOptions = (yyvsp[(3) - (4)].ival);
03342         osoption->general->otherOptions->other = new OtherOption*[(yyvsp[(3) - (4)].ival)];
03343         for (int i=0; i < (yyvsp[(3) - (4)].ival); i++) osoption->general->otherOptions->other[i] = new OtherOption();
03344 }
03345     break;
03346 
03347   case 94:
03348 
03349     {   if (parserData->numberOfOtherGeneralOptions != osoption->general->otherOptions->numberOfOtherOptions)
03350                 osolerror (NULL, osoption, parserData, "wrong number of other options in <general> element");
03351 }
03352     break;
03353 
03354   case 97:
03355 
03356     {   if (parserData->numberOfOtherGeneralOptions >= osoption->general->otherOptions->numberOfOtherOptions)
03357                 {       osolerror (NULL, osoption, parserData, "too many other options in <general> element");
03358                 };
03359         }
03360     break;
03361 
03362   case 98:
03363 
03364     {   if (!parserData->otherOptionNamePresent)
03365                 osolerror (NULL, osoption, parserData, "name attribute must be present");
03366         /* reset defaults for the next option */
03367         parserData->otherOptionNamePresent = false;
03368         parserData->otherOptionValuePresent = false;
03369         parserData->otherOptionDescriptionPresent = false;
03370         parserData->numberOfOtherGeneralOptions++;
03371 }
03372     break;
03373 
03374   case 104:
03375 
03376     {   if (parserData->otherOptionNamePresent)
03377         {       osolerror( NULL, osoption, parserData, "only one name attribute allowed");
03378         }
03379         else
03380         {       parserData->otherOptionNamePresent = true;
03381                 osoption->general->otherOptions->other[parserData->numberOfOtherGeneralOptions]->name = (yyvsp[(2) - (2)].sval);
03382         }
03383 }
03384     break;
03385 
03386   case 106:
03387 
03388     {   if (parserData->otherOptionValuePresent)
03389         {       osolerror( NULL, osoption, parserData, "only one value attribute allowed");
03390         }
03391         else
03392         {       parserData->otherOptionValuePresent = true;
03393                 osoption->general->otherOptions->other[parserData->numberOfOtherGeneralOptions]->value = (yyvsp[(2) - (2)].sval);
03394         }
03395 }
03396     break;
03397 
03398   case 108:
03399 
03400     {   if (parserData->otherOptionDescriptionPresent)
03401         {       osolerror( NULL, osoption, parserData, "only one description attribute allowed");
03402         }
03403         else
03404         {       parserData->otherOptionDescriptionPresent = true;
03405                 osoption->general->otherOptions->other[parserData->numberOfOtherGeneralOptions]->description = (yyvsp[(2) - (2)].sval);
03406         }
03407 }
03408     break;
03409 
03410   case 114:
03411 
03412     {   if (parserData->osolsystemPresent)
03413         {       osolerror( NULL, osoption, parserData, "only one <system> element allowed");
03414         }
03415         else
03416         {       parserData->osolsystemPresent = true;
03417                 osoption->system = new SystemOption();
03418         }
03419 }
03420     break;
03421 
03422   case 125:
03423 
03424     {   if (parserData->minDiskSpacePresent)
03425         {       osolerror( NULL, osoption, parserData, "only one <minDiskSpace> element allowed");
03426         }
03427         else
03428         {       parserData->minDiskSpacePresent = true;
03429                 osoption->system->minDiskSpace = new MinDiskSpace();
03430                 osoption->system->minDiskSpace->unit = "byte";
03431         }
03432 }
03433     break;
03434 
03435   case 127:
03436 
03437     {
03438         if ( verifyStorageUnit((yyvsp[(2) - (2)].sval)) == true)
03439                 osoption->system->minDiskSpace->unit = (yyvsp[(2) - (2)].sval);
03440         else
03441                 osolerror( NULL, osoption, parserData, "Not a valid unit");
03442 }
03443     break;
03444 
03445   case 131:
03446 
03447     {   if ((yyvsp[(2) - (3)].dval) < 0)
03448                 osolerror( NULL, osoption, parserData, "minDiskSpace cannot be negative");
03449         osoption->system->minDiskSpace->value = (yyvsp[(2) - (3)].dval);
03450 }
03451     break;
03452 
03453   case 132:
03454 
03455     {   if ((yyvsp[(2) - (3)].ival) < 0)
03456                 osolerror( NULL, osoption, parserData, "minDiskSpace cannot be negative");
03457         osoption->system->minDiskSpace->value = (yyvsp[(2) - (3)].ival);
03458 }
03459     break;
03460 
03461   case 134:
03462 
03463     {   if (parserData->minMemorySizePresent)
03464         {       osolerror( NULL, osoption, parserData, "only one <minMemorySize> element allowed");
03465         }
03466         else
03467         {       parserData->minMemorySizePresent = true;
03468                 osoption->system->minMemorySize = new MinMemorySize();
03469                 osoption->system->minMemorySize->unit = "byte";
03470         }
03471 }
03472     break;
03473 
03474   case 136:
03475 
03476     {
03477         if ( verifyStorageUnit((yyvsp[(2) - (2)].sval)) == true)
03478                 osoption->system->minMemorySize->unit = (yyvsp[(2) - (2)].sval);
03479         else
03480                 osolerror( NULL, osoption, parserData, "Not a valid unit");
03481 }
03482     break;
03483 
03484   case 140:
03485 
03486     {   if ((yyvsp[(2) - (3)].dval) < 0)
03487                 osolerror( NULL, osoption, parserData, "minMemorySize cannot be negative");
03488         osoption->system->minMemorySize->value = (yyvsp[(2) - (3)].dval);
03489 }
03490     break;
03491 
03492   case 141:
03493 
03494     {   if ((yyvsp[(2) - (3)].ival) < 0)
03495                 osolerror( NULL, osoption, parserData, "minMemorySize cannot be negative");
03496         osoption->system->minMemorySize->value = (yyvsp[(2) - (3)].ival);
03497 }
03498     break;
03499 
03500   case 143:
03501 
03502     {   if (parserData->minCPUSpeedPresent)
03503         {       osolerror( NULL, osoption, parserData, "only one <minCPUSpeed> element allowed");
03504         }
03505         else
03506         {       parserData->minCPUSpeedPresent = true;
03507                 osoption->system->minCPUSpeed = new MinCPUSpeed();
03508                 osoption->system->minCPUSpeed->unit = "hertz";
03509         }
03510 }
03511     break;
03512 
03513   case 145:
03514 
03515     {
03516         if ( verifyCPUSpeedUnit((yyvsp[(2) - (2)].sval)) == true)
03517                 osoption->system->minCPUSpeed->unit = (yyvsp[(2) - (2)].sval);
03518         else
03519                 osolerror( NULL, osoption, parserData, "Not a valid unit");
03520 }
03521     break;
03522 
03523   case 149:
03524 
03525     {   if ((yyvsp[(2) - (3)].dval) < 0)
03526                 osolerror( NULL, osoption, parserData, "minCPUSpeed cannot be negative");
03527         osoption->system->minCPUSpeed->value = (yyvsp[(2) - (3)].dval);
03528 }
03529     break;
03530 
03531   case 150:
03532 
03533     {   if ((yyvsp[(2) - (3)].ival) < 0)
03534                 osolerror( NULL, osoption, parserData, "minCPUSpeed cannot be negative");
03535         osoption->system->minCPUSpeed->value = (yyvsp[(2) - (3)].ival);
03536 }
03537     break;
03538 
03539   case 152:
03540 
03541     {   if (parserData->minCPUNumberPresent)
03542         {       osolerror( NULL, osoption, parserData, "only one <minCPUNumber> element allowed");
03543         }
03544         else
03545         {       parserData->minCPUNumberPresent = true;
03546         }
03547 }
03548     break;
03549 
03550   case 155:
03551 
03552     {   if ((yyvsp[(2) - (2)].ival) < 0)
03553                 osolerror( NULL, osoption, parserData, "minCPUNumber cannot be negative");
03554         osoption->system->minCPUNumber = (yyvsp[(2) - (2)].ival);
03555 }
03556     break;
03557 
03558   case 158:
03559 
03560     {   if (parserData->otherSystemOptionsPresent)
03561         {       osolerror( NULL, osoption, parserData, "only one <otherOptions> element allowed");
03562         }
03563         else
03564         {       parserData->otherSystemOptionsPresent = true;
03565                 osoption->system->otherOptions = new OtherOptions();
03566         }
03567 }
03568     break;
03569 
03570   case 159:
03571 
03572     {   if ((yyvsp[(3) - (4)].ival) < 0)
03573                 osolerror( NULL, osoption, parserData, "Number of <other> elements cannot be negative");
03574         osoption->system->otherOptions->numberOfOtherOptions = (yyvsp[(3) - (4)].ival);
03575         osoption->system->otherOptions->other = new OtherOption*[(yyvsp[(3) - (4)].ival)];
03576         for (int i=0; i < (yyvsp[(3) - (4)].ival); i++) osoption->system->otherOptions->other[i] = new OtherOption();
03577 }
03578     break;
03579 
03580   case 160:
03581 
03582     {   if (parserData->numberOfOtherSystemOptions != osoption->system->otherOptions->numberOfOtherOptions)
03583                 osolerror (NULL, osoption, parserData, "wrong number of other options in <system> element");
03584 }
03585     break;
03586 
03587   case 163:
03588 
03589     {   if (parserData->numberOfOtherSystemOptions >= osoption->system->otherOptions->numberOfOtherOptions)
03590                 {       osolerror (NULL, osoption, parserData, "too many other options in <system> element");
03591                 };
03592         }
03593     break;
03594 
03595   case 164:
03596 
03597     {   if (!parserData->otherOptionNamePresent)
03598                 osolerror (NULL, osoption, parserData, "name attribute must be present");
03599         /* reset defaults for the next option */
03600         parserData->otherOptionNamePresent = false;
03601         parserData->otherOptionValuePresent = false;
03602         parserData->otherOptionDescriptionPresent = false;
03603         parserData->numberOfOtherSystemOptions++;
03604 }
03605     break;
03606 
03607   case 170:
03608 
03609     {   if (parserData->otherOptionNamePresent)
03610         {       osolerror( NULL, osoption, parserData, "only one name attribute allowed");
03611         }
03612         else
03613         {       parserData->otherOptionNamePresent = true;
03614                 osoption->system->otherOptions->other[parserData->numberOfOtherSystemOptions]->name = (yyvsp[(2) - (2)].sval);
03615         }
03616 }
03617     break;
03618 
03619   case 172:
03620 
03621     {   if (parserData->otherOptionValuePresent)
03622         {       osolerror( NULL, osoption, parserData, "only one value attribute allowed");
03623         }
03624         else
03625         {       parserData->otherOptionValuePresent = true;
03626                 osoption->system->otherOptions->other[parserData->numberOfOtherSystemOptions]->value = (yyvsp[(2) - (2)].sval);
03627         }
03628 }
03629     break;
03630 
03631   case 174:
03632 
03633     {   if (parserData->otherOptionDescriptionPresent)
03634         {       osolerror( NULL, osoption, parserData, "only one description attribute allowed");
03635         }
03636         else
03637         {       parserData->otherOptionDescriptionPresent = true;
03638                 osoption->system->otherOptions->other[parserData->numberOfOtherSystemOptions]->description = (yyvsp[(2) - (2)].sval);
03639         }
03640 }
03641     break;
03642 
03643   case 180:
03644 
03645     {   if (parserData->osolservicePresent)
03646         {       osolerror( NULL, osoption, parserData, "only one <service> element allowed");
03647         }
03648         else
03649         {       parserData->osolservicePresent = true;
03650                 osoption->service = new ServiceOption();
03651         }
03652 }
03653     break;
03654 
03655   case 188:
03656 
03657     {   if (parserData->serviceTypePresent)
03658         {       osolerror( NULL, osoption, parserData, "only one <type> element allowed");
03659         }
03660         else
03661         {       parserData->serviceTypePresent = true;
03662                 osoption->service->type = "solver";
03663         }
03664 }
03665     break;
03666 
03667   case 191:
03668 
03669     {
03670         if (verifyServiceType((yyvsp[(2) - (2)].sval)) == true)
03671                 osoption->service->type = (yyvsp[(2) - (2)].sval);
03672         else
03673                 osolerror( NULL, osoption, parserData, "Not a valid service type");
03674 }
03675     break;
03676 
03677   case 194:
03678 
03679     {   if (parserData->otherServiceOptionsPresent)
03680         {       osolerror( NULL, osoption, parserData, "only one <otherOptions> element allowed");
03681         }
03682         else
03683         {       parserData->otherServiceOptionsPresent = true;
03684                 osoption->service->otherOptions = new OtherOptions();
03685         }
03686 }
03687     break;
03688 
03689   case 195:
03690 
03691     {   if ((yyvsp[(3) - (4)].ival) < 0)
03692                 osolerror( NULL, osoption, parserData, "Number of <other> elements cannot be negative");
03693         osoption->service->otherOptions->numberOfOtherOptions = (yyvsp[(3) - (4)].ival);
03694         osoption->service->otherOptions->other = new OtherOption*[(yyvsp[(3) - (4)].ival)];
03695         for (int i=0; i < (yyvsp[(3) - (4)].ival); i++) osoption->service->otherOptions->other[i] = new OtherOption();
03696 }
03697     break;
03698 
03699   case 196:
03700 
03701     {   if (parserData->numberOfOtherServiceOptions != osoption->service->otherOptions->numberOfOtherOptions)
03702                 osolerror (NULL, osoption, parserData, "wrong number of other options in <service> element");
03703 }
03704     break;
03705 
03706   case 199:
03707 
03708     {   if (parserData->numberOfOtherServiceOptions >= osoption->service->otherOptions->numberOfOtherOptions)
03709                 {       osolerror (NULL, osoption, parserData, "too many other options in <service> element");
03710                 };
03711         }
03712     break;
03713 
03714   case 200:
03715 
03716     {   if (!parserData->otherOptionNamePresent)
03717                 osolerror (NULL, osoption, parserData, "name attribute must be present");
03718         /* reset defaults for the next option */
03719         parserData->otherOptionNamePresent = false;
03720         parserData->otherOptionValuePresent = false;
03721         parserData->otherOptionDescriptionPresent = false;
03722         parserData->numberOfOtherServiceOptions++;
03723 }
03724     break;
03725 
03726   case 206:
03727 
03728     {   if (parserData->otherOptionNamePresent)
03729         {       osolerror( NULL, osoption, parserData, "only one name attribute allowed");
03730         }
03731         else
03732         {       parserData->otherOptionNamePresent = true;
03733                 osoption->service->otherOptions->other[parserData->numberOfOtherServiceOptions]->name = (yyvsp[(2) - (2)].sval);
03734         }
03735 }
03736     break;
03737 
03738   case 208:
03739 
03740     {   if (parserData->otherOptionValuePresent)
03741         {       osolerror( NULL, osoption, parserData, "only one value attribute allowed");
03742         }
03743         else
03744         {       parserData->otherOptionValuePresent = true;
03745                 osoption->service->otherOptions->other[parserData->numberOfOtherServiceOptions]->value = (yyvsp[(2) - (2)].sval);
03746         }
03747 }
03748     break;
03749 
03750   case 210:
03751 
03752     {   if (parserData->otherOptionDescriptionPresent)
03753         {       osolerror( NULL, osoption, parserData, "only one description attribute allowed");
03754         }
03755         else
03756         {       parserData->otherOptionDescriptionPresent = true;
03757                 osoption->service->otherOptions->other[parserData->numberOfOtherServiceOptions]->description = (yyvsp[(2) - (2)].sval);
03758         }
03759 }
03760     break;
03761 
03762   case 216:
03763 
03764     {   if (parserData->osoljobPresent)
03765         {       osolerror( NULL, osoption, parserData, "only one <job> element allowed");
03766         }
03767         else
03768         {       parserData->osoljobPresent = true;
03769                 osoption->job = new JobOption();
03770         }
03771 }
03772     break;
03773 
03774   case 237:
03775 
03776     {   if (parserData->maxTimePresent)
03777         {       osolerror( NULL, osoption, parserData, "only one <maxTime> element allowed");
03778         }
03779         else
03780         {       parserData->maxTimePresent = true;
03781                 osoption->job->maxTime = new MaxTime();
03782                 osoption->job->maxTime->unit = "second"; 
03783         }
03784 }
03785     break;
03786 
03787   case 239:
03788 
03789     {
03790         if ( verifyTimeUnit((yyvsp[(2) - (2)].sval)) == true)
03791                 osoption->job->maxTime->unit = (yyvsp[(2) - (2)].sval);
03792         else
03793                 osolerror( NULL, osoption, parserData, "Not a valid time unit");
03794 }
03795     break;
03796 
03797   case 243:
03798 
03799     {   if ((yyvsp[(2) - (3)].dval) < 0)
03800                 osolerror( NULL, osoption, parserData, "maxTime cannot be negative");
03801         osoption->job->maxTime->value = (yyvsp[(2) - (3)].dval);
03802 }
03803     break;
03804 
03805   case 244:
03806 
03807     {   if ((yyvsp[(2) - (3)].ival) < 0)
03808                 osolerror( NULL, osoption, parserData, "maxTime cannot be negative");
03809         osoption->job->maxTime->value = (yyvsp[(2) - (3)].ival);
03810 }
03811     break;
03812 
03813   case 246:
03814 
03815     {   if (parserData->requestedStartTimePresent)
03816         {       osolerror( NULL, osoption, parserData, "only one <requestedStartTime> element allowed");
03817         }
03818         else
03819         {       parserData->requestedStartTimePresent = true;
03820                 osoption->job->requestedStartTime = "1970-01-01T00:00:00-00:00";
03821         }
03822 }
03823     break;
03824 
03825   case 249:
03826 
03827     {osoption->job->requestedStartTime = (yyvsp[(2) - (2)].sval);}
03828     break;
03829 
03830   case 252:
03831 
03832     {   if (parserData->dependenciesPresent)
03833         {       osolerror( NULL, osoption, parserData, "only one <dependencies> element allowed");
03834         }
03835         else
03836         {       parserData->dependenciesPresent = true;
03837                 osoption->job->dependencies = new JobDependencies();
03838         }
03839 }
03840     break;
03841 
03842   case 253:
03843 
03844     {   if ((yyvsp[(3) - (4)].ival) < 1)
03845                 osolerror( NULL, osoption, parserData, "Number of job IDs must be at least 1");
03846         osoption->job->dependencies->numberOfJobIDs = (yyvsp[(3) - (4)].ival);
03847         osoption->job->dependencies->jobID = new std::string[(yyvsp[(3) - (4)].ival)];
03848 }
03849     break;
03850 
03851   case 256:
03852 
03853     {
03854         if (parserData->numberOfDependencies >= osoption->job->dependencies->numberOfJobIDs)
03855         {       osolerror (NULL, osoption, parserData, "too many job IDs in <dependencies> element");
03856         }
03857         else
03858         {       osoption->job->dependencies->jobID[parserData->numberOfDependencies] = (yyvsp[(3) - (3)].sval);
03859                 parserData->numberOfDependencies++;
03860         };
03861 }
03862     break;
03863 
03864   case 259:
03865 
03866     {   if (parserData->requiredDirectoriesPresent)
03867         {       osolerror( NULL, osoption, parserData, "only one <requiredDirectories> element allowed");
03868         }
03869         else
03870         {       parserData->requiredDirectoriesPresent = true;
03871                 osoption->job->requiredDirectories = new DirectoriesAndFiles();
03872         }
03873 }
03874     break;
03875 
03876   case 260:
03877 
03878     {   if ((yyvsp[(3) - (4)].ival) < 1)
03879                 osolerror( NULL, osoption, parserData, "Number of paths must be at least 1");
03880         osoption->job->requiredDirectories->numberOfPaths = (yyvsp[(3) - (4)].ival);
03881         osoption->job->requiredDirectories->path = new std::string[(yyvsp[(3) - (4)].ival)];
03882 }
03883     break;
03884 
03885   case 263:
03886 
03887     {
03888         if (parserData->numberOfRequiredDirectories >= osoption->job->requiredDirectories->numberOfPaths)
03889         {       osolerror (NULL, osoption, parserData, "too many job IDs in <requiredDirectories> element");
03890         }
03891         else
03892         {       osoption->job->requiredDirectories->path[parserData->numberOfRequiredDirectories] = (yyvsp[(3) - (3)].sval);
03893                 parserData->numberOfRequiredDirectories++;
03894         };
03895 }
03896     break;
03897 
03898   case 266:
03899 
03900     {   if (parserData->requiredFilesPresent)
03901         {       osolerror( NULL, osoption, parserData, "only one <requiredFiles> element allowed");
03902         }
03903         else
03904         {       parserData->requiredFilesPresent = true;
03905                 osoption->job->requiredFiles = new DirectoriesAndFiles();
03906         }
03907 }
03908     break;
03909 
03910   case 267:
03911 
03912     {   if ((yyvsp[(3) - (4)].ival) < 1)
03913                 osolerror( NULL, osoption, parserData, "Number of paths must be at least 1");
03914         osoption->job->requiredFiles->numberOfPaths = (yyvsp[(3) - (4)].ival);
03915         osoption->job->requiredFiles->path = new std::string[(yyvsp[(3) - (4)].ival)];
03916 }
03917     break;
03918 
03919   case 270:
03920 
03921     {
03922         if (parserData->numberOfRequiredFiles >= osoption->job->requiredFiles->numberOfPaths)
03923         {       osolerror (NULL, osoption, parserData, "too many job IDs in <requiredFiles> element");
03924         }
03925         else
03926         {       osoption->job->requiredFiles->path[parserData->numberOfRequiredFiles] = (yyvsp[(3) - (3)].sval);
03927                 parserData->numberOfRequiredFiles++;
03928         };
03929 }
03930     break;
03931 
03932   case 273:
03933 
03934     {   if (parserData->directoriesToMakePresent)
03935         {       osolerror( NULL, osoption, parserData, "only one <directoriesToMake> element allowed");
03936         }
03937         else
03938         {       parserData->directoriesToMakePresent = true;
03939                 osoption->job->directoriesToMake = new DirectoriesAndFiles();
03940         }
03941 }
03942     break;
03943 
03944   case 274:
03945 
03946     {   if ((yyvsp[(3) - (4)].ival) < 1)
03947                 osolerror( NULL, osoption, parserData, "Number of paths must be at least 1");
03948         osoption->job->directoriesToMake->numberOfPaths = (yyvsp[(3) - (4)].ival);
03949         osoption->job->directoriesToMake->path = new std::string[(yyvsp[(3) - (4)].ival)];
03950 }
03951     break;
03952 
03953   case 277:
03954 
03955     {   if (parserData->numberOfDirectoriesToMake >= osoption->job->directoriesToMake->numberOfPaths)
03956         {       osolerror (NULL, osoption, parserData, "too many job IDs in <directoriesToMake> element");
03957         }
03958         else
03959         {       osoption->job->directoriesToMake->path[parserData->numberOfDirectoriesToMake] = (yyvsp[(3) - (3)].sval);
03960                 parserData->numberOfDirectoriesToMake++;
03961         };
03962 }
03963     break;
03964 
03965   case 280:
03966 
03967     {   if (parserData->filesToMakePresent)
03968         {       osolerror( NULL, osoption, parserData, "only one <filesToMake> element allowed");
03969         }
03970         else
03971         {       parserData->filesToMakePresent = true;
03972                 osoption->job->filesToMake = new DirectoriesAndFiles();
03973         }
03974 }
03975     break;
03976 
03977   case 281:
03978 
03979     {   if ((yyvsp[(3) - (4)].ival) < 0)
03980                 osolerror( NULL, osoption, parserData, "Number of paths cannot be negative");
03981         osoption->job->filesToMake->numberOfPaths = (yyvsp[(3) - (4)].ival);
03982         osoption->job->filesToMake->path = new std::string[(yyvsp[(3) - (4)].ival)];
03983 }
03984     break;
03985 
03986   case 284:
03987 
03988     {   if (parserData->numberOfFilesToMake >= osoption->job->filesToMake->numberOfPaths)
03989         {       osolerror (NULL, osoption, parserData, "too many job IDs in <filesToMake> element");
03990         }
03991         else
03992         {       osoption->job->filesToMake->path[parserData->numberOfFilesToMake] = (yyvsp[(3) - (3)].sval);
03993                 parserData->numberOfFilesToMake++;
03994         };
03995 }
03996     break;
03997 
03998   case 287:
03999 
04000     {   if (parserData->inputDirectoriesToMovePresent)
04001         {       osolerror( NULL, osoption, parserData, "only one <inputDirectoriesToMove> element allowed");
04002         }
04003         else
04004         {       parserData->inputDirectoriesToMovePresent = true;
04005                 osoption->job->inputDirectoriesToMove = new PathPairs();
04006         }
04007 }
04008     break;
04009 
04010   case 288:
04011 
04012     {   if ((yyvsp[(3) - (4)].ival) < 0)
04013                 osolerror (NULL, osoption, parserData, "Require nonnegative number of directories to move");
04014         osoption->job->inputDirectoriesToMove->numberOfPathPairs = (yyvsp[(3) - (4)].ival);
04015         osoption->job->inputDirectoriesToMove->pathPair = new PathPair*[(yyvsp[(3) - (4)].ival)];
04016         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04017                 osoption->job->inputDirectoriesToMove->pathPair[i] = new PathPair();
04018 }
04019     break;
04020 
04021   case 291:
04022 
04023     {   if (!parserData->pathPairFromPresent)
04024                 osolerror (NULL, osoption, parserData, "\"from\" attribute must be present");
04025         if (!parserData->pathPairToPresent)
04026                 osolerror (NULL, osoption, parserData, "\"to\" attribute must be present");
04027         /* reset defaults for the next option */
04028         parserData->pathPairFromPresent= false;
04029         parserData->pathPairToPresent= false;
04030         parserData->pathPairMakeCopyPresent= false;
04031         parserData->numberOfInputDirectoriesToMove++;
04032 }
04033     break;
04034 
04035   case 292:
04036 
04037     {   if (parserData->numberOfInputDirectoriesToMove >= osoption->job->inputDirectoriesToMove->numberOfPathPairs)
04038         {       osolerror (NULL, osoption, parserData, "too many path pairs in <inputDirectoriesToMove> element");
04039         };
04040 }
04041     break;
04042 
04043   case 298:
04044 
04045     {   if (parserData->pathPairFromPresent)
04046         {       osolerror( NULL, osoption, parserData, "only one \"from\" attribute allowed");
04047         }
04048         else
04049         {       parserData->pathPairFromPresent = true;
04050                 osoption->job->inputDirectoriesToMove->pathPair[parserData->numberOfInputDirectoriesToMove]->from = (yyvsp[(2) - (2)].sval);
04051         }
04052 }
04053     break;
04054 
04055   case 300:
04056 
04057     {   if (parserData->pathPairToPresent)
04058         {       osolerror( NULL, osoption, parserData, "only one \"to\" attribute allowed");
04059         }
04060         else
04061         {       parserData->pathPairToPresent = true;
04062                 osoption->job->inputDirectoriesToMove->pathPair[parserData->numberOfInputDirectoriesToMove]->to = (yyvsp[(2) - (2)].sval);
04063         }
04064 }
04065     break;
04066 
04067   case 302:
04068 
04069     {   if (parserData->pathPairMakeCopyPresent)
04070         {       osolerror( NULL, osoption, parserData, "only one \"makeCopy\" attribute allowed");
04071         }
04072         else
04073         {       parserData->pathPairMakeCopyPresent = true;
04074                 if (strcmp((yyvsp[(2) - (2)].sval),"true") == 0)
04075                         osoption->job->inputDirectoriesToMove->pathPair[parserData->numberOfInputDirectoriesToMove]->makeCopy = true;
04076         }
04077 }
04078     break;
04079 
04080   case 307:
04081 
04082     {   if (parserData->inputFilesToMovePresent)
04083         {       osolerror( NULL, osoption, parserData, "only one <inputFilesToMove> element allowed");
04084         }
04085         else
04086         {       parserData->inputFilesToMovePresent = true;
04087                 osoption->job->inputFilesToMove = new PathPairs();
04088         }
04089 }
04090     break;
04091 
04092   case 308:
04093 
04094     {   if ((yyvsp[(3) - (4)].ival) < 0)
04095                 osolerror (NULL, osoption, parserData, "Require nonnegative number of files to move");
04096         osoption->job->inputFilesToMove->numberOfPathPairs = (yyvsp[(3) - (4)].ival);
04097         osoption->job->inputFilesToMove->pathPair = new PathPair*[(yyvsp[(3) - (4)].ival)];
04098         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++) osoption->job->inputFilesToMove->pathPair[i] = new PathPair();
04099 }
04100     break;
04101 
04102   case 311:
04103 
04104     {   if (!parserData->pathPairFromPresent)
04105                 osolerror (NULL, osoption, parserData, "\"from\" attribute must be present");
04106         if (!parserData->pathPairToPresent)
04107                 osolerror (NULL, osoption, parserData, "\"to\" attribute must be present");
04108         /* reset defaults for the next option */
04109         parserData->pathPairFromPresent= false;
04110         parserData->pathPairToPresent= false;
04111         parserData->pathPairMakeCopyPresent= false;
04112         parserData->numberOfInputFilesToMove++;
04113 }
04114     break;
04115 
04116   case 312:
04117 
04118     {   if (parserData->numberOfInputFilesToMove >= osoption->job->inputFilesToMove->numberOfPathPairs)
04119         {       osolerror (NULL, osoption, parserData, "too many path pairs in <inputFilesToMove> element");
04120         };
04121 }
04122     break;
04123 
04124   case 318:
04125 
04126     {   if (parserData->pathPairFromPresent)
04127         {       osolerror( NULL, osoption, parserData, "only one \"from\" attribute allowed");
04128         }
04129         else
04130         {       parserData->pathPairFromPresent = true;
04131                 osoption->job->inputFilesToMove->pathPair[parserData->numberOfInputFilesToMove]->from = (yyvsp[(2) - (2)].sval);
04132         }
04133 }
04134     break;
04135 
04136   case 320:
04137 
04138     {   if (parserData->pathPairToPresent)
04139         {       osolerror( NULL, osoption, parserData, "only one \"to\" attribute allowed");
04140         }
04141         else
04142         {       parserData->pathPairToPresent = true;
04143                 osoption->job->inputFilesToMove->pathPair[parserData->numberOfInputFilesToMove]->to = (yyvsp[(2) - (2)].sval);
04144         }
04145 }
04146     break;
04147 
04148   case 322:
04149 
04150     {   if (parserData->pathPairMakeCopyPresent)
04151         {       osolerror( NULL, osoption, parserData, "only one \"makeCopy\" attribute allowed");
04152         }
04153         else
04154         {       parserData->pathPairMakeCopyPresent = true;
04155                 if (strcmp((yyvsp[(2) - (2)].sval),"true") == 0)
04156                         osoption->job->inputFilesToMove->pathPair[parserData->numberOfInputFilesToMove]->makeCopy = true;
04157         }
04158 }
04159     break;
04160 
04161   case 327:
04162 
04163     {   if (parserData->outputDirectoriesToMovePresent)
04164         {       osolerror( NULL, osoption, parserData, "only one <outputDirectoriesToMove> element allowed");
04165         }
04166         else
04167         {       parserData->outputDirectoriesToMovePresent = true;
04168                 osoption->job->outputDirectoriesToMove = new PathPairs();
04169         }
04170 }
04171     break;
04172 
04173   case 328:
04174 
04175     {   if ((yyvsp[(3) - (4)].ival) < 0)
04176                 osolerror (NULL, osoption, parserData, "Require nonnegative number of directories to move");
04177         osoption->job->outputDirectoriesToMove->numberOfPathPairs = (yyvsp[(3) - (4)].ival);
04178         osoption->job->outputDirectoriesToMove->pathPair = new PathPair*[(yyvsp[(3) - (4)].ival)];
04179         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04180                 osoption->job->outputDirectoriesToMove->pathPair[i] = new PathPair();
04181 }
04182     break;
04183 
04184   case 331:
04185 
04186     {   if (!parserData->pathPairFromPresent)
04187                 osolerror (NULL, osoption, parserData, "\"from\" attribute must be present");
04188         if (!parserData->pathPairToPresent)
04189                 osolerror (NULL, osoption, parserData, "\"to\" attribute must be present");
04190         /* reset defaults for the next option */
04191         parserData->pathPairFromPresent= false;
04192         parserData->pathPairToPresent= false;
04193         parserData->pathPairMakeCopyPresent= false;
04194         parserData->numberOfOutputDirectoriesToMove++;
04195 }
04196     break;
04197 
04198   case 332:
04199 
04200     {   if (parserData->numberOfOutputDirectoriesToMove >= osoption->job->outputDirectoriesToMove->numberOfPathPairs)
04201         {       osolerror (NULL, osoption, parserData, "too many path pairs in <outputDirectoriesToMove> element");
04202         };
04203 }
04204     break;
04205 
04206   case 338:
04207 
04208     {   if (parserData->pathPairFromPresent)
04209         {       osolerror( NULL, osoption, parserData, "only one \"from\" attribute allowed");
04210         }
04211         else
04212         {       parserData->pathPairFromPresent = true;
04213                 osoption->job->outputDirectoriesToMove->pathPair[parserData->numberOfOutputDirectoriesToMove]->from = (yyvsp[(2) - (2)].sval);
04214         }
04215 }
04216     break;
04217 
04218   case 340:
04219 
04220     {   if (parserData->pathPairToPresent)
04221         {       osolerror( NULL, osoption, parserData, "only one \"to\" attribute allowed");
04222         }
04223         else
04224         {       parserData->pathPairToPresent = true;
04225                 osoption->job->outputDirectoriesToMove->pathPair[parserData->numberOfOutputDirectoriesToMove]->to = (yyvsp[(2) - (2)].sval);
04226         }
04227 }
04228     break;
04229 
04230   case 342:
04231 
04232     {   if (parserData->pathPairMakeCopyPresent)
04233         {       osolerror( NULL, osoption, parserData, "only one \"makeCopy\" attribute allowed");
04234         }
04235         else
04236         {       parserData->pathPairMakeCopyPresent = true;
04237                 if (strcmp((yyvsp[(2) - (2)].sval),"true") == 0)
04238                         osoption->job->outputDirectoriesToMove->pathPair[parserData->numberOfOutputDirectoriesToMove]->makeCopy = true;
04239         }
04240 }
04241     break;
04242 
04243   case 347:
04244 
04245     {   if (parserData->outputFilesToMovePresent)
04246         {       osolerror( NULL, osoption, parserData, "only one <outputFilesToMove> element allowed");
04247         }
04248         else
04249         {       parserData->outputFilesToMovePresent = true;
04250                 osoption->job->outputFilesToMove = new PathPairs();
04251         }
04252 }
04253     break;
04254 
04255   case 348:
04256 
04257     {   if ((yyvsp[(3) - (4)].ival) < 0)
04258                 osolerror (NULL, osoption, parserData, "Require nonnegative number of files to move");
04259         osoption->job->outputFilesToMove->numberOfPathPairs = (yyvsp[(3) - (4)].ival);
04260         osoption->job->outputFilesToMove->pathPair = new PathPair*[(yyvsp[(3) - (4)].ival)];
04261         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04262                 osoption->job->outputFilesToMove->pathPair[i] = new PathPair();}
04263     break;
04264 
04265   case 351:
04266 
04267     {   if (!parserData->pathPairFromPresent)
04268                 osolerror (NULL, osoption, parserData, "\"from\" attribute must be present");
04269         if (!parserData->pathPairToPresent)
04270                 osolerror (NULL, osoption, parserData, "\"to\" attribute must be present");
04271         /* reset defaults for the next option */
04272         parserData->pathPairFromPresent= false;
04273         parserData->pathPairToPresent= false;
04274         parserData->pathPairMakeCopyPresent= false;
04275         parserData->numberOfOutputFilesToMove++;
04276 }
04277     break;
04278 
04279   case 352:
04280 
04281     {   if (parserData->numberOfOutputFilesToMove >= osoption->job->outputFilesToMove->numberOfPathPairs)
04282         {       osolerror (NULL, osoption, parserData, "too many path pairs in <outputFilesToMove> element");
04283         };
04284 }
04285     break;
04286 
04287   case 358:
04288 
04289     {   if (parserData->pathPairFromPresent)
04290         {       osolerror( NULL, osoption, parserData, "only one \"from\" attribute allowed");
04291         }
04292         else
04293         {       parserData->pathPairFromPresent = true;
04294                 osoption->job->outputFilesToMove->pathPair[parserData->numberOfOutputFilesToMove]->from = (yyvsp[(2) - (2)].sval);
04295         }
04296 }
04297     break;
04298 
04299   case 360:
04300 
04301     {   if (parserData->pathPairToPresent)
04302         {       osolerror( NULL, osoption, parserData, "only one \"to\" attribute allowed");
04303         }
04304         else
04305         {       parserData->pathPairToPresent = true;
04306                 osoption->job->outputFilesToMove->pathPair[parserData->numberOfOutputFilesToMove]->to = (yyvsp[(2) - (2)].sval);
04307         }
04308 }
04309     break;
04310 
04311   case 362:
04312 
04313     {   if (parserData->pathPairMakeCopyPresent)
04314         {       osolerror( NULL, osoption, parserData, "only one \"makeCopy\" attribute allowed");
04315         }
04316         else
04317         {       parserData->pathPairMakeCopyPresent = true;
04318                 if (strcmp((yyvsp[(2) - (2)].sval),"true") == 0)
04319                         osoption->job->outputFilesToMove->pathPair[parserData->numberOfOutputFilesToMove]->makeCopy = true;
04320         }
04321 }
04322     break;
04323 
04324   case 367:
04325 
04326     {   if (parserData->filesToDeletePresent)
04327         {       osolerror( NULL, osoption, parserData, "only one <filesToDelete> element allowed");
04328         }
04329         else
04330         {       parserData->filesToDeletePresent = true;
04331                 osoption->job->filesToDelete = new DirectoriesAndFiles();
04332         }
04333 }
04334     break;
04335 
04336   case 368:
04337 
04338     {   if ((yyvsp[(3) - (4)].ival) < 1)
04339                 osolerror( NULL, osoption, parserData, "Number of paths must be at least 1");
04340         osoption->job->filesToDelete->numberOfPaths = (yyvsp[(3) - (4)].ival);
04341         osoption->job->filesToDelete->path = new std::string[(yyvsp[(3) - (4)].ival)];
04342 }
04343     break;
04344 
04345   case 371:
04346 
04347     {   if (parserData->numberOfFilesToDelete >= osoption->job->filesToDelete->numberOfPaths)
04348         {       osolerror (NULL, osoption, parserData, "too many job IDs in <filesToDelete> element");
04349         }
04350         else
04351         {       osoption->job->filesToDelete->path[parserData->numberOfFilesToDelete] = (yyvsp[(3) - (3)].sval);
04352                 parserData->numberOfFilesToDelete++;
04353         };
04354 }
04355     break;
04356 
04357   case 374:
04358 
04359     {   if (parserData->directoriesToDeletePresent)
04360         {       osolerror( NULL, osoption, parserData, "only one <directoriesToDelete> element allowed");
04361         }
04362         else
04363         {       parserData->directoriesToDeletePresent = true;
04364                 osoption->job->directoriesToDelete = new DirectoriesAndFiles();
04365         }
04366 }
04367     break;
04368 
04369   case 375:
04370 
04371     {   if ((yyvsp[(3) - (4)].ival) < 1)
04372                 osolerror( NULL, osoption, parserData, "Number of paths must be at least 1");
04373         osoption->job->directoriesToDelete->numberOfPaths = (yyvsp[(3) - (4)].ival);
04374         osoption->job->directoriesToDelete->path = new std::string[(yyvsp[(3) - (4)].ival)];
04375 }
04376     break;
04377 
04378   case 378:
04379 
04380     {   if (parserData->numberOfDirectoriesToDelete >= osoption->job->directoriesToDelete->numberOfPaths)
04381         {       osolerror (NULL, osoption, parserData, "too many job IDs in <directoriesToDelete> element");
04382         }
04383         else
04384         {       osoption->job->directoriesToDelete->path[parserData->numberOfDirectoriesToDelete] = (yyvsp[(3) - (3)].sval);
04385                 parserData->numberOfDirectoriesToDelete++;
04386         };
04387 }
04388     break;
04389 
04390   case 381:
04391 
04392     {   if (parserData->processesToKillPresent)
04393         {       osolerror( NULL, osoption, parserData, "only one <processesToKill> element allowed");
04394         }
04395         else
04396         {       parserData->processesToKillPresent = true;
04397                 osoption->job->processesToKill = new Processes();
04398         }
04399 }
04400     break;
04401 
04402   case 382:
04403 
04404     {   if ((yyvsp[(3) - (4)].ival) < 1)
04405                 osolerror( NULL, osoption, parserData, "Number of job IDs must be at least 1");
04406         osoption->job->processesToKill->numberOfProcesses = (yyvsp[(3) - (4)].ival);
04407         osoption->job->processesToKill->process = new std::string[(yyvsp[(3) - (4)].ival)];
04408 }
04409     break;
04410 
04411   case 385:
04412 
04413     {   if (parserData->numberOfProcessesToKill >= osoption->job->processesToKill->numberOfProcesses)
04414         {       osolerror (NULL, osoption, parserData, "too many job IDs in <processesToKill> element");
04415         }
04416         else
04417         {       osoption->job->processesToKill->process[parserData->numberOfProcessesToKill] = (yyvsp[(3) - (3)].sval);
04418                 parserData->numberOfProcessesToKill++;
04419         };
04420 }
04421     break;
04422 
04423   case 388:
04424 
04425     {   if (parserData->otherJobOptionsPresent)
04426         {       osolerror( NULL, osoption, parserData, "only one <otherOptions> element allowed");
04427         }
04428         else
04429         {       parserData->otherJobOptionsPresent = true;
04430                 osoption->job->otherOptions = new OtherOptions();
04431         }
04432 }
04433     break;
04434 
04435   case 389:
04436 
04437     {   if ((yyvsp[(3) - (4)].ival) < 0)
04438                 osolerror( NULL, osoption, parserData, "Number of <other> elements cannot be negative");
04439         osoption->job->otherOptions->numberOfOtherOptions = (yyvsp[(3) - (4)].ival);
04440         osoption->job->otherOptions->other = new OtherOption*[(yyvsp[(3) - (4)].ival)];
04441         for (int i=0; i < (yyvsp[(3) - (4)].ival); i++) osoption->job->otherOptions->other[i] = new OtherOption();
04442 }
04443     break;
04444 
04445   case 390:
04446 
04447     {   if (parserData->numberOfOtherJobOptions != osoption->job->otherOptions->numberOfOtherOptions)
04448                 osolerror (NULL, osoption, parserData, "wrong number of other options in <job> element");
04449 }
04450     break;
04451 
04452   case 393:
04453 
04454     {   if (parserData->numberOfOtherJobOptions >= osoption->job->otherOptions->numberOfOtherOptions)
04455                 {       osolerror (NULL, osoption, parserData, "too many other options in <job> element");
04456                 };
04457         }
04458     break;
04459 
04460   case 394:
04461 
04462     {   if (!parserData->otherOptionNamePresent)
04463                 osolerror (NULL, osoption, parserData, "name attribute must be present");
04464         /* reset defaults for the next option */
04465         parserData->otherOptionNamePresent = false;
04466         parserData->otherOptionValuePresent = false;
04467         parserData->otherOptionDescriptionPresent = false;
04468         parserData->numberOfOtherJobOptions++;
04469 }
04470     break;
04471 
04472   case 400:
04473 
04474     {   if (parserData->otherOptionNamePresent)
04475         {       osolerror( NULL, osoption, parserData, "only one name attribute allowed");
04476         }
04477         else
04478         {       parserData->otherOptionNamePresent = true;
04479                 osoption->job->otherOptions->other[parserData->numberOfOtherJobOptions]->name = (yyvsp[(2) - (2)].sval);
04480         }
04481 }
04482     break;
04483 
04484   case 402:
04485 
04486     {   if (parserData->otherOptionValuePresent)
04487         {       osolerror( NULL, osoption, parserData, "only one value attribute allowed");
04488         }
04489         else
04490         {       parserData->otherOptionValuePresent = true;
04491                 osoption->job->otherOptions->other[parserData->numberOfOtherJobOptions]->value = (yyvsp[(2) - (2)].sval);
04492         }
04493 }
04494     break;
04495 
04496   case 404:
04497 
04498     {   if (parserData->otherOptionDescriptionPresent)
04499         {       osolerror( NULL, osoption, parserData, "only one description attribute allowed");
04500         }
04501         else
04502         {       parserData->otherOptionDescriptionPresent = true;
04503                 osoption->job->otherOptions->other[parserData->numberOfOtherJobOptions]->description = (yyvsp[(2) - (2)].sval);
04504         }
04505 }
04506     break;
04507 
04508   case 410:
04509 
04510     {   if (parserData->osoloptimizationPresent)
04511         {       osolerror( NULL, osoption, parserData, "only one <optimization> element allowed");
04512         }
04513         else
04514         {       parserData->osoloptimizationPresent = true;
04515                 osoption->optimization = new OptimizationOption();
04516         }
04517 }
04518     break;
04519 
04520   case 416:
04521 
04522     {   if ((yyvsp[(3) - (4)].ival) < -1)
04523                 osolerror( NULL, osoption, parserData, "Illegal number of variables specified");  
04524         osoption->optimization->numberOfVariables = (yyvsp[(3) - (4)].ival);
04525 }
04526     break;
04527 
04528   case 417:
04529 
04530     {   if ((yyvsp[(3) - (4)].ival) < 0)
04531                 osolerror( NULL, osoption, parserData, "Illegal number of constraints specified");
04532         osoption->optimization->numberOfConstraints = (yyvsp[(3) - (4)].ival);
04533 }
04534     break;
04535 
04536   case 418:
04537 
04538     {   if ((yyvsp[(3) - (4)].ival) < 0)
04539                 osolerror( NULL, osoption, parserData, "Illegal number of objectives specified");
04540         osoption->optimization->numberOfObjectives = (yyvsp[(3) - (4)].ival);
04541 }
04542     break;
04543 
04544   case 424:
04545 
04546     {   osoption->optimization->variables = new VariableOption();
04547 }
04548     break;
04549 
04550   case 426:
04551 
04552     {   if ((yyvsp[(3) - (4)].ival) < 0)
04553                 osolerror (NULL, osoption, parserData, "number of <other> variable options cannot be negative");
04554         osoption->optimization->variables->numberOfOtherVariableOptions = (yyvsp[(3) - (4)].ival);
04555         osoption->optimization->variables->other = new OtherVariableOption*[(yyvsp[(3) - (4)].ival)];
04556         for (int i= 0; i < (yyvsp[(3) - (4)].ival); i++)
04557                 osoption->optimization->variables->other[i] = new OtherVariableOption();
04558 }
04559     break;
04560 
04561   case 431:
04562 
04563     {   if ((yyvsp[(3) - (4)].ival) < 0)
04564                 osolerror (NULL, osoption, parserData, "number of <var> elements must be nonnegative");
04565         osoption->optimization->variables->initialVariableValues = new InitVariableValues();
04566         osoption->optimization->variables->initialVariableValues->numberOfVar = (yyvsp[(3) - (4)].ival);
04567         osoption->optimization->variables->initialVariableValues->var = new InitVarValue*[(yyvsp[(3) - (4)].ival)];
04568         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04569                 osoption->optimization->variables->initialVariableValues->var[i] = new InitVarValue();
04570 }
04571     break;
04572 
04573   case 434:
04574 
04575     {   if (!parserData->idxAttributePresent)
04576                 osolerror (NULL, osoption, parserData, "variable index required");
04577         parserData->idxAttributePresent = false;
04578         parserData->valAttributePresent = false;
04579         parserData->numberOfVar++;
04580 }
04581     break;
04582 
04583   case 435:
04584 
04585     {   if (parserData->numberOfVar >= osoption->optimization->variables->initialVariableValues->numberOfVar)
04586                 osolerror(NULL, osoption, parserData, "too many initial variable values");
04587 }
04588     break;
04589 
04590   case 440:
04591 
04592     {   if (parserData->idxAttributePresent)
04593                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
04594         parserData->idxAttributePresent = true;
04595         if ((yyvsp[(3) - (4)].ival) < 0)
04596                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
04597         if (osoption->optimization->numberOfVariables >= 0)
04598         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
04599                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
04600         };
04601         osoption->optimization->variables->initialVariableValues->var[parserData->numberOfVar]->idx = (yyvsp[(3) - (4)].ival);
04602 }
04603     break;
04604 
04605   case 441:
04606 
04607     {   if (parserData->valAttributePresent)
04608                 osolerror (NULL, osoption, parserData, "only one variable value allowed");
04609         parserData->valAttributePresent = true;
04610         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
04611                 osoption->optimization->variables->initialVariableValues->var[parserData->numberOfVar]->value = OSDBL_MAX;
04612         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
04613                 osoption->optimization->variables->initialVariableValues->var[parserData->numberOfVar]->value = -OSDBL_MAX;
04614         else
04615                 osoption->optimization->variables->initialVariableValues->var[parserData->numberOfVar]->value = os_strtod((yyvsp[(2) - (2)].sval), NULL);
04616 }
04617     break;
04618 
04619   case 447:
04620 
04621     {   if ((yyvsp[(3) - (4)].ival) < 0)
04622                 osolerror (NULL, osoption, parserData, "number of <var> elements must be nonnegative");
04623         osoption->optimization->variables->initialVariableValuesString = new InitVariableValuesString();
04624         osoption->optimization->variables->initialVariableValuesString->numberOfVar = (yyvsp[(3) - (4)].ival);
04625         osoption->optimization->variables->initialVariableValuesString->var = new InitVarValueString*[(yyvsp[(3) - (4)].ival)];
04626         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04627                 osoption->optimization->variables->initialVariableValuesString->var[i] = new InitVarValueString ();
04628 }
04629     break;
04630 
04631   case 450:
04632 
04633     {   if (!parserData->idxAttributePresent)
04634                 osolerror (NULL, osoption, parserData, "variable index required");
04635         parserData->idxAttributePresent = false;
04636         parserData->valAttributePresent = false;
04637         parserData->numberOfVarStr++;
04638 }
04639     break;
04640 
04641   case 451:
04642 
04643     {   if (parserData->numberOfVarStr >= osoption->optimization->variables->initialVariableValuesString->numberOfVar)
04644                 osolerror(NULL, osoption, parserData, "too many initial variable strings");
04645 }
04646     break;
04647 
04648   case 456:
04649 
04650     {   if (parserData->idxAttributePresent)
04651                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
04652         parserData->idxAttributePresent = true;
04653         if ((yyvsp[(3) - (4)].ival) < 0)
04654                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
04655         if (osoption->optimization->numberOfVariables >= 0)
04656         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
04657                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
04658         };
04659         osoption->optimization->variables->initialVariableValuesString->var[parserData->numberOfVarStr]->idx = (yyvsp[(3) - (4)].ival);
04660 }
04661     break;
04662 
04663   case 457:
04664 
04665     {   if (parserData->valAttributePresent)
04666                 osolerror (NULL, osoption, parserData, "only one variable string value allowed");
04667         parserData->valAttributePresent = true;
04668         osoption->optimization->variables->initialVariableValuesString->var[parserData->numberOfVarStr]->value = (yyvsp[(2) - (2)].sval);
04669 }
04670     break;
04671 
04672   case 463:
04673 
04674     {   if ((yyvsp[(3) - (4)].ival) < 0)
04675                 osolerror (NULL, osoption, parserData, "number of <var> elements must be nonnegative");
04676         osoption->optimization->variables->initialBasisStatus = new InitialBasisStatus();
04677         osoption->optimization->variables->initialBasisStatus->numberOfVar = (yyvsp[(3) - (4)].ival);
04678         osoption->optimization->variables->initialBasisStatus->var = new InitBasStatus*[(yyvsp[(3) - (4)].ival)];
04679         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04680                 osoption->optimization->variables->initialBasisStatus->var[i] = new InitBasStatus();
04681 }
04682     break;
04683 
04684   case 466:
04685 
04686     {   if (!parserData->idxAttributePresent)
04687                 osolerror (NULL, osoption, parserData, "variable index required");
04688         parserData->idxAttributePresent = false;
04689         parserData->valAttributePresent = false;
04690         parserData->numberOfBasVar++;
04691 }
04692     break;
04693 
04694   case 467:
04695 
04696     {   if (parserData->numberOfBasVar >= osoption->optimization->variables->initialBasisStatus->numberOfVar)
04697                 osolerror(NULL, osoption, parserData, "too many initial basis variables");
04698 }
04699     break;
04700 
04701   case 472:
04702 
04703     {   if (parserData->idxAttributePresent)
04704                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
04705         parserData->idxAttributePresent = true;
04706         if ((yyvsp[(3) - (4)].ival) < 0)
04707                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
04708         if (osoption->optimization->numberOfVariables >= 0)
04709         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
04710                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
04711         };
04712         osoption->optimization->variables->initialBasisStatus->var[parserData->numberOfBasVar]->idx = (yyvsp[(3) - (4)].ival);
04713 }
04714     break;
04715 
04716   case 473:
04717 
04718     {   if (parserData->valAttributePresent)
04719                 osolerror (NULL, osoption, parserData, "only one variable value allowed");
04720         parserData->valAttributePresent = true;
04721         osoption->optimization->variables->initialBasisStatus->var[parserData->numberOfBasVar]->value = (yyvsp[(2) - (2)].sval);
04722 }
04723     break;
04724 
04725   case 479:
04726 
04727     {   if ((yyvsp[(3) - (4)].ival) < 0)
04728                 osolerror (NULL, osoption, parserData, "number of <var> elements must be nonnegative");
04729         osoption->optimization->variables->integerVariableBranchingWeights = new IntegerVariableBranchingWeights();
04730         osoption->optimization->variables->integerVariableBranchingWeights->numberOfVar = (yyvsp[(3) - (4)].ival);
04731         osoption->optimization->variables->integerVariableBranchingWeights->var = new BranchingWeight*[(yyvsp[(3) - (4)].ival)];
04732         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04733                 osoption->optimization->variables->integerVariableBranchingWeights->var[i] = new BranchingWeight();
04734 }
04735     break;
04736 
04737   case 482:
04738 
04739     {   if (!parserData->idxAttributePresent)
04740                 osolerror (NULL, osoption, parserData, "variable index required");
04741         parserData->idxAttributePresent = false;
04742         parserData->valAttributePresent = false;
04743         parserData->numberOfIntWt++;
04744 }
04745     break;
04746 
04747   case 483:
04748 
04749     {   if (parserData->numberOfIntWt >= osoption->optimization->variables->integerVariableBranchingWeights->numberOfVar)
04750                 osolerror(NULL, osoption, parserData, "too many integer branching weights");
04751 }
04752     break;
04753 
04754   case 488:
04755 
04756     {   if (parserData->idxAttributePresent)
04757                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
04758         parserData->idxAttributePresent = true;
04759         if ((yyvsp[(3) - (4)].ival) < 0)
04760                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
04761         if (osoption->optimization->numberOfVariables >= 0)
04762         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
04763                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
04764         };
04765         osoption->optimization->variables->integerVariableBranchingWeights->var[parserData->numberOfIntWt]->idx = (yyvsp[(3) - (4)].ival);
04766 }
04767     break;
04768 
04769   case 489:
04770 
04771     {   if (parserData->valAttributePresent)
04772                 osolerror (NULL, osoption, parserData, "only one branching weight allowed");
04773         parserData->valAttributePresent = true;
04774         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
04775                 osoption->optimization->variables->integerVariableBranchingWeights->var[parserData->numberOfIntWt]->value = OSDBL_MAX;
04776         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
04777                 osoption->optimization->variables->integerVariableBranchingWeights->var[parserData->numberOfIntWt]->value = -OSDBL_MAX;
04778         else
04779                 osoption->optimization->variables->integerVariableBranchingWeights->var[parserData->numberOfIntWt]->value = os_strtod((yyvsp[(2) - (2)].sval), NULL);
04780 }
04781     break;
04782 
04783   case 495:
04784 
04785     {   if ((yyvsp[(3) - (4)].ival) < 0)
04786                 osolerror (NULL, osoption, parserData, "number of <sos> elements must be nonnegative");
04787         osoption->optimization->variables->sosVariableBranchingWeights = new SOSVariableBranchingWeights();
04788         osoption->optimization->variables->sosVariableBranchingWeights->numberOfSOS = (yyvsp[(3) - (4)].ival);
04789         osoption->optimization->variables->sosVariableBranchingWeights->sos = new SOSWeights*[(yyvsp[(3) - (4)].ival)];
04790         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04791                 osoption->optimization->variables->sosVariableBranchingWeights->sos[i] = new SOSWeights();
04792 }
04793     break;
04794 
04795   case 498:
04796 
04797     {   if (!parserData->sosIdxAttributePresent)
04798                 osolerror (NULL, osoption, parserData, "SOS index required");
04799         if (!parserData->sosIdxAttributePresent)
04800                 osolerror (NULL, osoption, parserData, "numberOfVar required");
04801         parserData->sosIdxAttributePresent = false;
04802         parserData->grpWgtAttributePresent = false;
04803         parserData->nOfVarAttributePresent = false;
04804         parserData->numberOfSOS++;
04805 }
04806     break;
04807 
04808   case 499:
04809 
04810     {   if (parserData->numberOfSOS >= osoption->optimization->variables->sosVariableBranchingWeights->numberOfSOS)
04811                 osolerror(NULL, osoption, parserData, "too many SOS branching weights");
04812         parserData->numberOfSOSVar = 0;
04813 }
04814     break;
04815 
04816   case 505:
04817 
04818     {   if (parserData->sosIdxAttributePresent)
04819                 osolerror (NULL, osoption, parserData, "only one SOS index allowed");
04820         parserData->sosIdxAttributePresent = true;
04821         if ((yyvsp[(3) - (4)].ival) < 0)
04822                 osolerror (NULL, osoption, parserData, "SOS index must be nonnegative");
04823         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->sosIdx = (yyvsp[(3) - (4)].ival);
04824 }
04825     break;
04826 
04827   case 506:
04828 
04829     {   if (parserData->grpWgtAttributePresent)
04830                 osolerror (NULL, osoption, parserData, "only one group weight allowed");
04831         parserData->grpWgtAttributePresent = true;
04832         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->groupWeight = (yyvsp[(3) - (4)].dval);
04833 }
04834     break;
04835 
04836   case 507:
04837 
04838     {   if (parserData->grpWgtAttributePresent)
04839                 osolerror (NULL, osoption, parserData, "only one group weight allowed");
04840         parserData->grpWgtAttributePresent = true;
04841         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->groupWeight = (yyvsp[(3) - (4)].ival);
04842 }
04843     break;
04844 
04845   case 508:
04846 
04847     {   if ((yyvsp[(3) - (4)].ival) < 0)
04848                 osolerror (NULL, osoption, parserData, "number of <var> elements must be nonnegative");
04849 //      osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS] = new SOSWeights();
04850         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->numberOfVar = (yyvsp[(3) - (4)].ival);
04851         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var = new BranchingWeight*[(yyvsp[(3) - (4)].ival)];
04852         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04853                 osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var[i] = new BranchingWeight();
04854 }
04855     break;
04856 
04857   case 513:
04858 
04859     {   if (!parserData->idxAttributePresent)
04860                 osolerror (NULL, osoption, parserData, "variable index required");
04861         parserData->idxAttributePresent = false;
04862         parserData->valAttributePresent = false;
04863         parserData->numberOfSOSVar++;
04864 }
04865     break;
04866 
04867   case 514:
04868 
04869     {   if (parserData->numberOfSOSVar >= osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->numberOfVar)
04870                 osolerror(NULL, osoption, parserData, "too many variable branching weights");
04871 }
04872     break;
04873 
04874   case 519:
04875 
04876     {   if (parserData->idxAttributePresent)
04877                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
04878         parserData->idxAttributePresent = true;
04879         if ((yyvsp[(3) - (4)].ival) < 0)
04880                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
04881         if (osoption->optimization->numberOfVariables >= 0)
04882         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
04883                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
04884         };
04885         osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var[parserData->numberOfSOSVar]->idx = (yyvsp[(3) - (4)].ival);
04886 }
04887     break;
04888 
04889   case 520:
04890 
04891     {   if (parserData->valAttributePresent)
04892                 osolerror (NULL, osoption, parserData, "only one variable weight allowed");
04893         parserData->valAttributePresent = true;
04894         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
04895                 osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var[parserData->numberOfSOSVar]->value = OSDBL_MAX;
04896         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
04897                 osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var[parserData->numberOfSOSVar]->value = -OSDBL_MAX;
04898         else
04899                 osoption->optimization->variables->sosVariableBranchingWeights->sos[parserData->numberOfSOS]->var[parserData->numberOfSOSVar]->value = os_strtod((yyvsp[(2) - (2)].sval), NULL);
04900 }
04901     break;
04902 
04903   case 527:
04904 
04905     {   if (parserData->numberOfOtherVariableOptions >= osoption->optimization->variables->numberOfOtherVariableOptions)
04906                 osolerror(NULL, osoption, parserData, "too many <other> variable options");
04907 }
04908     break;
04909 
04910   case 537:
04911 
04912     {   if (parserData->otherOptionNumberPresent)
04913                 osolerror (NULL, osoption, parserData, "only one numberOfVar attribute allowed");
04914         parserData->otherOptionNumberPresent = true;
04915         parserData->numberOfVar = 0;
04916         if ((yyvsp[(3) - (4)].ival) < 0)
04917                 osolerror (NULL, osoption, parserData, "number of <other> variable options must be nonnegative");
04918         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->numberOfVar = (yyvsp[(3) - (4)].ival);
04919         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var = new OtherVarOption*[(yyvsp[(3) - (4)].ival)];
04920         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
04921                 osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var[i] = new OtherVarOption();      
04922 }
04923     break;
04924 
04925   case 538:
04926 
04927     {   if (parserData->otherOptionNamePresent)
04928                 osolerror (NULL, osoption, parserData, "only one name attribute allowed");
04929         parserData->otherOptionNamePresent = true;
04930         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->name = (yyvsp[(2) - (2)].sval);
04931 }
04932     break;
04933 
04934   case 540:
04935 
04936     {   if (parserData->otherOptionValuePresent)
04937                 osolerror (NULL, osoption, parserData, "only one value attribute allowed");
04938         parserData->otherOptionValuePresent = true;
04939         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->value = (yyvsp[(2) - (2)].sval);
04940 }
04941     break;
04942 
04943   case 542:
04944 
04945     {   if (parserData->otherOptionSolverPresent)
04946                 osolerror (NULL, osoption, parserData, "only one solver attribute allowed");
04947         parserData->otherOptionSolverPresent = true;
04948         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->solver = (yyvsp[(2) - (2)].sval);
04949 }
04950     break;
04951 
04952   case 544:
04953 
04954     {   if (parserData->otherOptionCategoryPresent)
04955                 osolerror (NULL, osoption, parserData, "only one category attribute allowed");
04956         parserData->otherOptionCategoryPresent = true;
04957         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->category = (yyvsp[(2) - (2)].sval);
04958 }
04959     break;
04960 
04961   case 546:
04962 
04963     {   if (parserData->otherOptionTypePresent)
04964                 osolerror (NULL, osoption, parserData, "only one type attribute allowed");
04965         parserData->otherOptionTypePresent = true;
04966         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->type = (yyvsp[(2) - (2)].sval);
04967 }
04968     break;
04969 
04970   case 548:
04971 
04972     {   if (parserData->otherOptionDescriptionPresent)
04973                 osolerror (NULL, osoption, parserData, "only one description attribute allowed");
04974         parserData->otherOptionDescriptionPresent = true;
04975         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->description = (yyvsp[(2) - (2)].sval);
04976 }
04977     break;
04978 
04979   case 550:
04980 
04981     {   if (parserData->numberOfVar < osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->numberOfVar)
04982                 osolerror(NULL, osoption, parserData, "not enough <var> entries in <other> variable element");
04983         if (!parserData->otherOptionNumberPresent)
04984                 osolerror (NULL, osoption, parserData, "number attribute required");
04985         if (!parserData->otherOptionNamePresent)
04986                 osolerror (NULL, osoption, parserData, "name attribute required");
04987         parserData->otherOptionNumberPresent = false;
04988         parserData->otherOptionNamePresent = false;
04989         parserData->otherOptionValuePresent = false;
04990         parserData->otherOptionSolverPresent = false;
04991         parserData->otherOptionCategoryPresent = false;
04992         parserData->otherOptionTypePresent = false;
04993         parserData->otherOptionDescriptionPresent = false;
04994         parserData->numberOfOtherVariableOptions++;
04995 }
04996     break;
04997 
04998   case 553:
04999 
05000     {   if (!parserData->idxAttributePresent)
05001                 osolerror(NULL, osoption, parserData, "required idx attribute was not found");
05002         parserData->idxAttributePresent = false;
05003         parserData->valAttributePresent = false;
05004         parserData->lbvalAttributePresent = false;
05005         parserData->ubvalAttributePresent = false;
05006         parserData->numberOfVar++;
05007 }
05008     break;
05009 
05010   case 554:
05011 
05012     {   if (parserData->numberOfVar >= osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->numberOfVar)
05013                 osolerror(NULL, osoption, parserData, "too many <var> entries in <other> variable element");
05014 }
05015     break;
05016 
05017   case 561:
05018 
05019     {   if (parserData->idxAttributePresent)
05020                 osolerror (NULL, osoption, parserData, "only one variable index allowed");
05021         parserData->idxAttributePresent = true;
05022         if ((yyvsp[(3) - (4)].ival) < 0)
05023                 osolerror (NULL, osoption, parserData, "variable index must be nonnegative");
05024         if (osoption->optimization->numberOfVariables >= 0)
05025         {       if ((yyvsp[(3) - (4)].ival) >= osoption->optimization->numberOfVariables)
05026                         osolerror (NULL, osoption, parserData, "variable index exceeds upper limit");
05027         };
05028         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var[parserData->numberOfVar]->idx = (yyvsp[(3) - (4)].ival);
05029 }
05030     break;
05031 
05032   case 562:
05033 
05034     {   if (parserData->valAttributePresent)
05035                 osolerror (NULL, osoption, parserData, "only one variable value allowed");
05036         parserData->valAttributePresent = true;
05037         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var[parserData->numberOfVar]->value = (yyvsp[(2) - (2)].sval);
05038 }
05039     break;
05040 
05041   case 564:
05042 
05043     {   if (parserData->lbvalAttributePresent)
05044                 osolerror (NULL, osoption, parserData, "only one lower bound value allowed");
05045         parserData->lbvalAttributePresent = true;
05046         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var[parserData->numberOfVar]->lbValue = (yyvsp[(2) - (2)].sval);
05047 }
05048     break;
05049 
05050   case 566:
05051 
05052     {   if (parserData->ubvalAttributePresent)
05053                 osolerror (NULL, osoption, parserData, "only one upper bound value allowed");
05054         parserData->ubvalAttributePresent = true;
05055         osoption->optimization->variables->other[parserData->numberOfOtherVariableOptions]->var[parserData->numberOfVar]->ubValue = (yyvsp[(2) - (2)].sval);
05056 }
05057     break;
05058 
05059   case 572:
05060 
05061     {   osoption->optimization->objectives = new ObjectiveOption();
05062 }
05063     break;
05064 
05065   case 574:
05066 
05067     {   if ((yyvsp[(3) - (4)].ival) < 0)
05068                 osolerror (NULL, osoption, parserData, "number of <other> objective options cannot be negative");
05069         osoption->optimization->objectives->numberOfOtherObjectiveOptions = (yyvsp[(3) - (4)].ival);
05070         osoption->optimization->objectives->other = new OtherObjectiveOption*[(yyvsp[(3) - (4)].ival)];
05071         for (int i= 0; i < (yyvsp[(3) - (4)].ival); i++)
05072                 osoption->optimization->objectives->other[i] = new OtherObjectiveOption();
05073 }
05074     break;
05075 
05076   case 579:
05077 
05078     {   if ((yyvsp[(3) - (4)].ival) < 0)
05079                 osolerror (NULL, osoption, parserData, "number of <obj> elements must be nonnegative");
05080         osoption->optimization->objectives->initialObjectiveValues = new InitObjectiveValues();
05081         osoption->optimization->objectives->initialObjectiveValues->numberOfObj = (yyvsp[(3) - (4)].ival);
05082         osoption->optimization->objectives->initialObjectiveValues->obj = new InitObjValue*[(yyvsp[(3) - (4)].ival)];
05083         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05084                 osoption->optimization->objectives->initialObjectiveValues->obj[i] = new InitObjValue();
05085 }
05086     break;
05087 
05088   case 582:
05089 
05090     {   if (!parserData->idxAttributePresent)
05091                 osolerror (NULL, osoption, parserData, "objective index required");
05092         parserData->idxAttributePresent = false;
05093         parserData->valAttributePresent = false;
05094         parserData->numberOfObjValues++;
05095 }
05096     break;
05097 
05098   case 583:
05099 
05100     {   if (parserData->numberOfObjValues >= osoption->optimization->objectives->initialObjectiveValues->numberOfObj)
05101                 osolerror(NULL, osoption, parserData, "too many initial objective values");
05102 }
05103     break;
05104 
05105   case 588:
05106 
05107     {   if (parserData->idxAttributePresent)
05108                 osolerror (NULL, osoption, parserData, "only one objective index allowed");
05109         parserData->idxAttributePresent = true;
05110         if ((yyvsp[(3) - (4)].ival) >= 0)
05111                 osolerror (NULL, osoption, parserData, "objective index must be negative");
05112         if (osoption->optimization->numberOfObjectives >= 0)
05113         {       if (-(yyvsp[(3) - (4)].ival) > osoption->optimization->numberOfObjectives)
05114                         osolerror (NULL, osoption, parserData, "objective index out of range");
05115         };
05116         osoption->optimization->objectives->initialObjectiveValues->obj[parserData->numberOfObjValues]->idx = (yyvsp[(3) - (4)].ival);
05117 }
05118     break;
05119 
05120   case 589:
05121 
05122     {   if (parserData->valAttributePresent)
05123                 osolerror (NULL, osoption, parserData, "only one objective value allowed");
05124         parserData->valAttributePresent = true;
05125         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05126                 osoption->optimization->objectives->initialObjectiveValues->obj[parserData->numberOfObjValues]->value = OSDBL_MAX;
05127         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05128                 osoption->optimization->objectives->initialObjectiveValues->obj[parserData->numberOfObjValues]->value = -OSDBL_MAX;
05129         else
05130                 osoption->optimization->objectives->initialObjectiveValues->obj[parserData->numberOfObjValues]->value = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05131 }
05132     break;
05133 
05134   case 595:
05135 
05136     {   if ((yyvsp[(3) - (4)].ival) < 0)
05137                 osolerror (NULL, osoption, parserData, "number of <obj> elements must be nonnegative");
05138         osoption->optimization->objectives->initialObjectiveBounds = new InitObjectiveBounds();
05139         osoption->optimization->objectives->initialObjectiveBounds->numberOfObj = (yyvsp[(3) - (4)].ival);
05140         osoption->optimization->objectives->initialObjectiveBounds->obj = new InitObjBound*[(yyvsp[(3) - (4)].ival)];
05141         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05142                 osoption->optimization->objectives->initialObjectiveBounds->obj[i] = new InitObjBound ();
05143 }
05144     break;
05145 
05146   case 598:
05147 
05148     {   if (!parserData->idxAttributePresent)
05149                 osolerror (NULL, osoption, parserData, "objective index required");
05150         parserData->idxAttributePresent = false;
05151         parserData->lbvalAttributePresent = false;
05152         parserData->ubvalAttributePresent = false;
05153         parserData->numberOfObjBounds++;
05154 }
05155     break;
05156 
05157   case 599:
05158 
05159     {   if (parserData->numberOfObjBounds >= osoption->optimization->objectives->initialObjectiveBounds->numberOfObj)
05160                 osolerror(NULL, osoption, parserData, "too many initial objective bounds");
05161 }
05162     break;
05163 
05164   case 605:
05165 
05166     {   if (parserData->idxAttributePresent)
05167                 osolerror (NULL, osoption, parserData, "only one objective index allowed");
05168         parserData->idxAttributePresent = true;
05169         if ((yyvsp[(3) - (4)].ival) >= 0)
05170                 osolerror (NULL, osoption, parserData, "objective index must be negative");
05171         if (osoption->optimization->numberOfObjectives >= 0)
05172         {       if (-(yyvsp[(3) - (4)].ival) > osoption->optimization->numberOfObjectives)
05173                         osolerror (NULL, osoption, parserData, "objective index out of range");
05174         };
05175         osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->idx = (yyvsp[(3) - (4)].ival);
05176 }
05177     break;
05178 
05179   case 606:
05180 
05181     {   if (parserData->lbvalAttributePresent)
05182                 osolerror (NULL, osoption, parserData, "only one objective lower bound allowed");
05183         parserData->lbvalAttributePresent = true;
05184         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05185                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->lbValue = OSDBL_MAX;
05186         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05187                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->lbValue = -OSDBL_MAX;
05188         else
05189                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->lbValue = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05190 }
05191     break;
05192 
05193   case 608:
05194 
05195     {   if (parserData->ubvalAttributePresent)
05196                 osolerror (NULL, osoption, parserData, "only one objective upper bound allowed");
05197         parserData->ubvalAttributePresent = true;
05198         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05199                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->ubValue = OSDBL_MAX;
05200         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05201                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->ubValue = -OSDBL_MAX;
05202         else
05203                 osoption->optimization->objectives->initialObjectiveBounds->obj[parserData->numberOfObjBounds]->ubValue = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05204 }
05205     break;
05206 
05207   case 615:
05208 
05209     {   if (parserData->numberOfOtherObjectiveOptions >= osoption->optimization->objectives->numberOfOtherObjectiveOptions)
05210                 osolerror(NULL, osoption, parserData, "too many <other> objective options");
05211 }
05212     break;
05213 
05214   case 625:
05215 
05216     {   if (parserData->otherOptionNumberPresent)
05217                 osolerror (NULL, osoption, parserData, "only one numberOfObj attribute allowed");
05218         parserData->otherOptionNumberPresent = true;
05219         parserData->numberOfObj = 0;
05220         if ((yyvsp[(3) - (4)].ival) < 0)
05221                 osolerror (NULL, osoption, parserData, "number of <other> objective options must be nonnegative");
05222         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->numberOfObj = (yyvsp[(3) - (4)].ival);
05223         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj = new OtherObjOption*[(yyvsp[(3) - (4)].ival)];
05224         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05225                 osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj[i] = new OtherObjOption();
05226 }
05227     break;
05228 
05229   case 626:
05230 
05231     {   if (parserData->otherOptionNamePresent)
05232                 osolerror (NULL, osoption, parserData, "only one name attribute allowed");
05233         parserData->otherOptionNamePresent = true;
05234         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->name = (yyvsp[(2) - (2)].sval);
05235 }
05236     break;
05237 
05238   case 628:
05239 
05240     {   if (parserData->otherOptionValuePresent)
05241                 osolerror (NULL, osoption, parserData, "only one value attribute allowed");
05242         parserData->otherOptionValuePresent = true;
05243         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->value = (yyvsp[(2) - (2)].sval);
05244 }
05245     break;
05246 
05247   case 630:
05248 
05249     {   if (parserData->otherOptionSolverPresent)
05250                 osolerror (NULL, osoption, parserData, "only one solver attribute allowed");
05251         parserData->otherOptionSolverPresent = true;
05252         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->solver = (yyvsp[(2) - (2)].sval);
05253 }
05254     break;
05255 
05256   case 632:
05257 
05258     {   if (parserData->otherOptionCategoryPresent)
05259                 osolerror (NULL, osoption, parserData, "only one category attribute allowed");
05260         parserData->otherOptionCategoryPresent = true;
05261         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->category = (yyvsp[(2) - (2)].sval);
05262 }
05263     break;
05264 
05265   case 634:
05266 
05267     {   if (parserData->otherOptionTypePresent)
05268                 osolerror (NULL, osoption, parserData, "only one type attribute allowed");
05269         parserData->otherOptionTypePresent = true;
05270         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->type = (yyvsp[(2) - (2)].sval);
05271 }
05272     break;
05273 
05274   case 636:
05275 
05276     {   if (parserData->otherOptionDescriptionPresent)
05277                 osolerror (NULL, osoption, parserData, "only one description attribute allowed");
05278         parserData->otherOptionDescriptionPresent = true;
05279         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->description = (yyvsp[(2) - (2)].sval);
05280 }
05281     break;
05282 
05283   case 638:
05284 
05285     {   if (parserData->numberOfObj < osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->numberOfObj)
05286                 osolerror(NULL, osoption, parserData, "not enough <obj> entries in <other> variable element");
05287         if (!parserData->otherOptionNumberPresent)
05288                 osolerror (NULL, osoption, parserData, "number attribute required");
05289         if (!parserData->otherOptionNamePresent)
05290                 osolerror (NULL, osoption, parserData, "name attribute required");
05291         parserData->otherOptionNumberPresent = false;
05292         parserData->otherOptionNamePresent = false;
05293         parserData->otherOptionValuePresent = false;
05294         parserData->otherOptionSolverPresent = false;
05295         parserData->otherOptionCategoryPresent = false;
05296         parserData->otherOptionTypePresent = false;
05297         parserData->otherOptionDescriptionPresent = false;
05298         parserData->numberOfOtherObjectiveOptions++;
05299 }
05300     break;
05301 
05302   case 641:
05303 
05304     {   if (!parserData->idxAttributePresent)
05305                 osolerror(NULL, osoption, parserData, "required idx attribute was not found");
05306         parserData->idxAttributePresent = false;
05307         parserData->valAttributePresent = false;
05308         parserData->lbvalAttributePresent = false;
05309         parserData->ubvalAttributePresent = false;
05310         parserData->numberOfObj++;
05311 }
05312     break;
05313 
05314   case 642:
05315 
05316     {   if (parserData->numberOfObj >= osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->numberOfObj)
05317                 osolerror(NULL, osoption, parserData, "too many <obj> entries in <other> objective element");
05318 }
05319     break;
05320 
05321   case 649:
05322 
05323     {   if (parserData->idxAttributePresent)
05324                 osolerror (NULL, osoption, parserData, "only one objective index allowed");
05325         parserData->idxAttributePresent = true;
05326         if ((yyvsp[(3) - (4)].ival) >= 0)
05327                 osolerror (NULL, osoption, parserData, "objective index must be negative");
05328         if (parserData->numberOfObjectivesPresent)
05329         {       if (-(yyvsp[(3) - (4)].ival) > parserData->numberOfObjectives)
05330                         osolerror (NULL, osoption, parserData, "objective index exceeds upper limit");
05331         };
05332         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj[parserData->numberOfObj]->idx = (yyvsp[(3) - (4)].ival);
05333 }
05334     break;
05335 
05336   case 650:
05337 
05338     {   if (parserData->valAttributePresent)
05339                 osolerror (NULL, osoption, parserData, "only one variable value allowed");
05340         parserData->valAttributePresent = true;
05341         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj[parserData->numberOfObj]->value = (yyvsp[(2) - (2)].sval);
05342 }
05343     break;
05344 
05345   case 652:
05346 
05347     {   if (parserData->lbvalAttributePresent)
05348                 osolerror (NULL, osoption, parserData, "only one lower bound value allowed");
05349         parserData->lbvalAttributePresent = true;
05350         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj[parserData->numberOfObj]->lbValue = (yyvsp[(2) - (2)].sval);
05351 }
05352     break;
05353 
05354   case 654:
05355 
05356     {   if (parserData->ubvalAttributePresent)
05357                 osolerror (NULL, osoption, parserData, "only one upper bound value allowed");
05358         parserData->ubvalAttributePresent = true;
05359         osoption->optimization->objectives->other[parserData->numberOfOtherObjectiveOptions]->obj[parserData->numberOfObj]->ubValue = (yyvsp[(2) - (2)].sval);
05360 }
05361     break;
05362 
05363   case 660:
05364 
05365     {   osoption->optimization->constraints = new ConstraintOption();
05366 }
05367     break;
05368 
05369   case 662:
05370 
05371     {   if ((yyvsp[(3) - (4)].ival) < 0)
05372                 osolerror (NULL, osoption, parserData, "number of <other> constraint options cannot be negative");
05373         osoption->optimization->constraints->numberOfOtherConstraintOptions = (yyvsp[(3) - (4)].ival);
05374         osoption->optimization->constraints->other = new OtherConstraintOption*[(yyvsp[(3) - (4)].ival)];
05375         for (int i= 0; i < (yyvsp[(3) - (4)].ival); i++)
05376                 osoption->optimization->constraints->other[i] = new OtherConstraintOption();
05377 }
05378     break;
05379 
05380   case 667:
05381 
05382     {   if ((yyvsp[(3) - (4)].ival) < 0)
05383                 osolerror (NULL, osoption, parserData, "number of <con> elements must be nonnegative");
05384         osoption->optimization->constraints->initialConstraintValues = new InitConstraintValues();
05385         osoption->optimization->constraints->initialConstraintValues->numberOfCon = (yyvsp[(3) - (4)].ival);
05386         osoption->optimization->constraints->initialConstraintValues->con = new InitConValue*[(yyvsp[(3) - (4)].ival)];
05387         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05388                 osoption->optimization->constraints->initialConstraintValues->con[i] = new InitConValue();
05389 }
05390     break;
05391 
05392   case 670:
05393 
05394     {   if (!parserData->idxAttributePresent)
05395                 osolerror (NULL, osoption, parserData, "variable index required");
05396         parserData->idxAttributePresent = false;
05397         parserData->valAttributePresent = false;
05398         parserData->numberOfCon++;
05399 }
05400     break;
05401 
05402   case 671:
05403 
05404     {   if (parserData->numberOfCon >= osoption->optimization->constraints->initialConstraintValues->numberOfCon)
05405                 osolerror(NULL, osoption, parserData, "too many initial constraint values");
05406 }
05407     break;
05408 
05409   case 676:
05410 
05411     {   if (parserData->idxAttributePresent)
05412                 osolerror (NULL, osoption, parserData, "only one constraint index allowed");
05413         parserData->idxAttributePresent = true;
05414         if ((yyvsp[(3) - (4)].ival) < 0)
05415                 osolerror (NULL, osoption, parserData, "constraint index must be nonnegative");
05416         if (osoption->optimization->numberOfConstraints >= 0)
05417         {       if ((yyvsp[(3) - (4)].ival) > osoption->optimization->numberOfConstraints)
05418                         osolerror (NULL, osoption, parserData, "constraint index out of range");
05419         };
05420         osoption->optimization->constraints->initialConstraintValues->con[parserData->numberOfCon]->idx = (yyvsp[(3) - (4)].ival);
05421 }
05422     break;
05423 
05424   case 677:
05425 
05426     {   if (parserData->valAttributePresent)
05427                 osolerror (NULL, osoption, parserData, "only one constraint value allowed");
05428         parserData->valAttributePresent = true;
05429         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05430                 osoption->optimization->constraints->initialConstraintValues->con[parserData->numberOfCon]->value = OSDBL_MAX;
05431         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05432                 osoption->optimization->constraints->initialConstraintValues->con[parserData->numberOfCon]->value = -OSDBL_MAX;
05433         else
05434                 osoption->optimization->constraints->initialConstraintValues->con[parserData->numberOfCon]->value = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05435 }
05436     break;
05437 
05438   case 683:
05439 
05440     {   if ((yyvsp[(3) - (4)].ival) < 0)
05441                 osolerror (NULL, osoption, parserData, "number of <con> elements must be nonnegative");
05442         osoption->optimization->constraints->initialDualValues = new InitDualVariableValues();
05443         osoption->optimization->constraints->initialDualValues->numberOfCon = (yyvsp[(3) - (4)].ival);
05444         osoption->optimization->constraints->initialDualValues->con = new InitDualVarValue*[(yyvsp[(3) - (4)].ival)];
05445         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05446                 osoption->optimization->constraints->initialDualValues->con[i] = new InitDualVarValue ();
05447 }
05448     break;
05449 
05450   case 686:
05451 
05452     {   if (!parserData->idxAttributePresent)
05453                 osolerror (NULL, osoption, parserData, "constraint index required");
05454         parserData->idxAttributePresent = false;
05455         parserData->lbvalAttributePresent = false;
05456         parserData->ubvalAttributePresent = false;
05457         parserData->numberOfDuals++;
05458 }
05459     break;
05460 
05461   case 687:
05462 
05463     {   if (parserData->numberOfDuals >= osoption->optimization->constraints->initialDualValues->numberOfCon)
05464                 osolerror(NULL, osoption, parserData, "too many initial dual variable bounds");
05465 }
05466     break;
05467 
05468   case 693:
05469 
05470     {   if (parserData->idxAttributePresent)
05471                 osolerror (NULL, osoption, parserData, "only one constraint index allowed");
05472         parserData->idxAttributePresent = true;
05473         if ((yyvsp[(3) - (4)].ival) < 0)
05474                 osolerror (NULL, osoption, parserData, "constraint index must be nonnegative");
05475         if (parserData->numberOfConstraintsPresent)
05476         {       if ((yyvsp[(3) - (4)].ival) > parserData->numberOfConstraints)
05477                         osolerror (NULL, osoption, parserData, "constraint index out of range");
05478         };
05479         osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->idx = (yyvsp[(3) - (4)].ival);
05480 }
05481     break;
05482 
05483   case 694:
05484 
05485     {   if (parserData->lbvalAttributePresent)
05486                 osolerror (NULL, osoption, parserData, "only one dual variable lower bound allowed");
05487         parserData->lbvalAttributePresent = true;
05488         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05489                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->lbDualValue = OSDBL_MAX;
05490         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05491                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->lbDualValue = -OSDBL_MAX;
05492         else
05493                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->lbDualValue = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05494 }
05495     break;
05496 
05497   case 696:
05498 
05499     {   if (parserData->ubvalAttributePresent)
05500                 osolerror (NULL, osoption, parserData, "only one dual variable upper bound allowed");
05501         parserData->ubvalAttributePresent = true;
05502         if (strcmp((yyvsp[(2) - (2)].sval),"INF") == 0)
05503                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->ubDualValue = OSDBL_MAX;
05504         else if (strcmp((yyvsp[(2) - (2)].sval),"-INF") == 0)
05505                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->ubDualValue = -OSDBL_MAX;
05506         else
05507                 osoption->optimization->constraints->initialDualValues->con[parserData->numberOfDuals]->ubDualValue = os_strtod((yyvsp[(2) - (2)].sval), NULL);
05508 }
05509     break;
05510 
05511   case 703:
05512 
05513     {   if (parserData->numberOfOtherConstraintOptions >= osoption->optimization->constraints->numberOfOtherConstraintOptions)
05514                 osolerror(NULL, osoption, parserData, "too many <other> constraint options");
05515 }
05516     break;
05517 
05518   case 713:
05519 
05520     {   if (parserData->otherOptionNumberPresent)
05521                 osolerror (NULL, osoption, parserData, "only one numberOfCon attribute allowed");
05522         parserData->otherOptionNumberPresent = true;
05523         parserData->numberOfCon = 0;
05524         if ((yyvsp[(3) - (4)].ival) < 0)
05525                 osolerror (NULL, osoption, parserData, "number of <other> constraint options must be nonnegative");
05526         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->numberOfCon = (yyvsp[(3) - (4)].ival);
05527         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con = new OtherConOption*[(yyvsp[(3) - (4)].ival)];
05528         for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05529                 osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con[i] = new OtherConOption();
05530 }
05531     break;
05532 
05533   case 714:
05534 
05535     {   if (parserData->otherOptionNamePresent)
05536                 osolerror (NULL, osoption, parserData, "only one name attribute allowed");
05537         parserData->otherOptionNamePresent = true;
05538         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->name = (yyvsp[(2) - (2)].sval);
05539 }
05540     break;
05541 
05542   case 716:
05543 
05544     {   if (parserData->otherOptionValuePresent)
05545                 osolerror (NULL, osoption, parserData, "only one value attribute allowed");
05546         parserData->otherOptionValuePresent = true;
05547         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->value = (yyvsp[(2) - (2)].sval);
05548 }
05549     break;
05550 
05551   case 718:
05552 
05553     {   if (parserData->otherOptionSolverPresent)
05554                 osolerror (NULL, osoption, parserData, "only one solver attribute allowed");
05555         parserData->otherOptionSolverPresent = true;
05556         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->solver = (yyvsp[(2) - (2)].sval);
05557 }
05558     break;
05559 
05560   case 720:
05561 
05562     {   if (parserData->otherOptionCategoryPresent)
05563                 osolerror (NULL, osoption, parserData, "only one category attribute allowed");
05564         parserData->otherOptionCategoryPresent = true;
05565         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->category = (yyvsp[(2) - (2)].sval);
05566 }
05567     break;
05568 
05569   case 722:
05570 
05571     {   if (parserData->otherOptionTypePresent)
05572                 osolerror (NULL, osoption, parserData, "only one type attribute allowed");
05573         parserData->otherOptionTypePresent = true;
05574         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->type = (yyvsp[(2) - (2)].sval);
05575 }
05576     break;
05577 
05578   case 724:
05579 
05580     {   if (parserData->otherOptionDescriptionPresent)
05581                 osolerror (NULL, osoption, parserData, "only one description attribute allowed");
05582         parserData->otherOptionDescriptionPresent = true;
05583         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->description = (yyvsp[(2) - (2)].sval);
05584 }
05585     break;
05586 
05587   case 726:
05588 
05589     {   if (parserData->numberOfCon < osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->numberOfCon)
05590                 osolerror(NULL, osoption, parserData, "not enough <con> entries in <other> constraint element");
05591         if (!parserData->otherOptionNumberPresent)
05592                 osolerror (NULL, osoption, parserData, "number attribute required");
05593         if (!parserData->otherOptionNamePresent)
05594                 osolerror (NULL, osoption, parserData, "name attribute required");
05595         parserData->otherOptionNumberPresent = false;
05596         parserData->otherOptionNamePresent = false;
05597         parserData->otherOptionValuePresent = false;
05598         parserData->otherOptionSolverPresent = false;
05599         parserData->otherOptionCategoryPresent = false;
05600         parserData->otherOptionTypePresent = false;
05601         parserData->otherOptionDescriptionPresent = false;
05602         parserData->numberOfOtherConstraintOptions++;
05603 }
05604     break;
05605 
05606   case 729:
05607 
05608     {   if (!parserData->idxAttributePresent)
05609                 osolerror(NULL, osoption, parserData, "required idx attribute was not found");
05610         parserData->idxAttributePresent = false;
05611         parserData->valAttributePresent = false;
05612         parserData->lbvalAttributePresent = false;
05613         parserData->ubvalAttributePresent = false;
05614         parserData->numberOfCon++;
05615 }
05616     break;
05617 
05618   case 730:
05619 
05620     {   if (parserData->numberOfCon >= osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->numberOfCon)
05621                 osolerror(NULL, osoption, parserData, "too many <con> entries in <other> constraint element");
05622 }
05623     break;
05624 
05625   case 737:
05626 
05627     {   if (parserData->idxAttributePresent)
05628                 osolerror (NULL, osoption, parserData, "only one constraint index allowed");
05629         parserData->idxAttributePresent = true;
05630         if ((yyvsp[(3) - (4)].ival) < 0)
05631                 osolerror (NULL, osoption, parserData, "constraint index must be nonnegative");
05632         if (parserData->numberOfConstraintsPresent)
05633         {       if ((yyvsp[(3) - (4)].ival) > parserData->numberOfConstraints)
05634                         osolerror (NULL, osoption, parserData, "constraint index exceeds upper limit");
05635         };
05636         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con[parserData->numberOfCon]->idx = (yyvsp[(3) - (4)].ival);
05637 }
05638     break;
05639 
05640   case 738:
05641 
05642     {   if (parserData->valAttributePresent)
05643                 osolerror (NULL, osoption, parserData, "only one constraint value allowed");
05644         parserData->valAttributePresent = true;
05645         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con[parserData->numberOfCon]->value = (yyvsp[(2) - (2)].sval);
05646 }
05647     break;
05648 
05649   case 740:
05650 
05651     {   if (parserData->lbvalAttributePresent)
05652                 osolerror (NULL, osoption, parserData, "only one lower bound value allowed");
05653         parserData->lbvalAttributePresent = true;
05654         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con[parserData->numberOfCon]->lbValue = (yyvsp[(2) - (2)].sval);
05655 }
05656     break;
05657 
05658   case 742:
05659 
05660     {   if (parserData->ubvalAttributePresent)
05661                 osolerror (NULL, osoption, parserData, "only one upper bound value allowed");
05662         parserData->ubvalAttributePresent = true;
05663         osoption->optimization->constraints->other[parserData->numberOfOtherConstraintOptions]->con[parserData->numberOfCon]->ubValue = (yyvsp[(2) - (2)].sval);
05664 }
05665     break;
05666 
05667   case 747:
05668 
05669     {   if (parserData->numberOfSolverOptions != osoption->optimization->solverOptions->numberOfSolverOptions)
05670                 osolerror (NULL, osoption, parserData, "wrong number of solver options in <optimization> element");
05671 }
05672     break;
05673 
05674   case 748:
05675 
05676     {   if (parserData->solverOptionsPresent)
05677         {       osolerror( NULL, osoption, parserData, "only one <solverOptions> element allowed");
05678         }
05679         else
05680         {       parserData->solverOptionsPresent = true;
05681                 osoption->optimization->solverOptions = new SolverOptions();
05682         }
05683 }
05684     break;
05685 
05686   case 749:
05687 
05688     {   if ((yyvsp[(3) - (4)].ival) < 0)
05689                 osolerror (NULL, osoption, parserData, "number of solver options cannot be negative");
05690         osoption->optimization->solverOptions->numberOfSolverOptions = (yyvsp[(3) - (4)].ival);
05691         osoption->optimization->solverOptions->solverOption = new SolverOption*[(yyvsp[(3) - (4)].ival)];
05692         for (int i=0; i < (yyvsp[(3) - (4)].ival); i++) osoption->optimization->solverOptions->solverOption[i] = new SolverOption();
05693 }
05694     break;
05695 
05696   case 752:
05697 
05698     {   if (parserData->numberOfSolverOptions >= osoption->optimization->solverOptions->numberOfSolverOptions)
05699         {       osolerror (NULL, osoption, parserData, "too many solver options in <optimization> element");
05700         };
05701 }
05702     break;
05703 
05704   case 753:
05705 
05706     {   if (!parserData->solverOptionNamePresent)
05707                 osolerror (NULL, osoption, parserData, "name attribute must be present");
05708         /* reset defaults for the next option */
05709         parserData->solverOptionNamePresent = false;
05710         parserData->solverOptionValuePresent = false;
05711         parserData->solverOptionSolverPresent = false;
05712         parserData->solverOptionCategoryPresent = false;
05713         parserData->solverOptionTypePresent = false;
05714         parserData->solverOptionDescriptionPresent = false;
05715         parserData->numberOfSolverOptions++;
05716 }
05717     break;
05718 
05719   case 762:
05720 
05721     {   if (parserData->solverOptionNamePresent)
05722         {       osolerror( NULL, osoption, parserData, "only one name attribute allowed");
05723         }
05724         else
05725         {       parserData->solverOptionNamePresent = true;
05726                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->name = (yyvsp[(2) - (2)].sval);
05727         }
05728 }
05729     break;
05730 
05731   case 764:
05732 
05733     {   if (parserData->solverOptionValuePresent)
05734         {       osolerror( NULL, osoption, parserData, "only one value attribute allowed");
05735         }
05736         else
05737         {       parserData->solverOptionValuePresent = true;
05738                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->value = (yyvsp[(2) - (2)].sval);
05739         }
05740 }
05741     break;
05742 
05743   case 766:
05744 
05745     {   if (parserData->solverOptionSolverPresent)
05746         {       osolerror( NULL, osoption, parserData, "only one solver attribute allowed");
05747         }
05748         else
05749         {       parserData->solverOptionSolverPresent = true;
05750                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->solver = (yyvsp[(2) - (2)].sval);
05751         }
05752 }
05753     break;
05754 
05755   case 768:
05756 
05757     {   if (parserData->solverOptionCategoryPresent)
05758         {       osolerror( NULL, osoption, parserData, "only one category attribute allowed");
05759         }
05760         else
05761         {       parserData->solverOptionCategoryPresent = true;
05762                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->category = (yyvsp[(2) - (2)].sval);
05763         }
05764 }
05765     break;
05766 
05767   case 770:
05768 
05769     {   if (parserData->solverOptionTypePresent)
05770         {       osolerror( NULL, osoption, parserData, "only one type attribute allowed");
05771         }
05772         else
05773         {       parserData->solverOptionTypePresent = true;
05774                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->type = (yyvsp[(2) - (2)].sval);
05775         }
05776 }
05777     break;
05778 
05779   case 772:
05780 
05781     {   if (parserData->solverOptionDescriptionPresent)
05782         {       osolerror( NULL, osoption, parserData, "only one description attribute allowed");
05783         }
05784         else
05785         {       parserData->solverOptionDescriptionPresent = true;
05786                 osoption->optimization->solverOptions->solverOption[parserData->numberOfSolverOptions]->description = (yyvsp[(2) - (2)].sval);
05787         }
05788 }
05789     break;
05790 
05791 
05792 /* Line 1267 of yacc.c.  */
05793 
05794       default: break;
05795     }
05796   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
05797 
05798   YYPOPSTACK (yylen);
05799   yylen = 0;
05800   YY_STACK_PRINT (yyss, yyssp);
05801 
05802   *++yyvsp = yyval;
05803   *++yylsp = yyloc;
05804 
05805   /* Now `shift' the result of the reduction.  Determine what state
05806      that goes to, based on the state we popped back to and the rule
05807      number reduced by.  */
05808 
05809   yyn = yyr1[yyn];
05810 
05811   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
05812   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
05813     yystate = yytable[yystate];
05814   else
05815     yystate = yydefgoto[yyn - YYNTOKENS];
05816 
05817   goto yynewstate;
05818 
05819 
05820 /*------------------------------------.
05821 | yyerrlab -- here on detecting error |
05822 `------------------------------------*/
05823 yyerrlab:
05824   /* If not already recovering from an error, report this error.  */
05825   if (!yyerrstatus)
05826     {
05827       ++yynerrs;
05828 #if ! YYERROR_VERBOSE
05829       yyerror (&yylloc, osoption, parserData, YY_("syntax error"));
05830 #else
05831       {
05832         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
05833         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
05834           {
05835             YYSIZE_T yyalloc = 2 * yysize;
05836             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
05837               yyalloc = YYSTACK_ALLOC_MAXIMUM;
05838             if (yymsg != yymsgbuf)
05839               YYSTACK_FREE (yymsg);
05840             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
05841             if (yymsg)
05842               yymsg_alloc = yyalloc;
05843             else
05844               {
05845                 yymsg = yymsgbuf;
05846                 yymsg_alloc = sizeof yymsgbuf;
05847               }
05848           }
05849 
05850         if (0 < yysize && yysize <= yymsg_alloc)
05851           {
05852             (void) yysyntax_error (yymsg, yystate, yychar);
05853             yyerror (&yylloc, osoption, parserData, yymsg);
05854           }
05855         else
05856           {
05857             yyerror (&yylloc, osoption, parserData, YY_("syntax error"));
05858             if (yysize != 0)
05859               goto yyexhaustedlab;
05860           }
05861       }
05862 #endif
05863     }
05864 
05865   yyerror_range[0] = yylloc;
05866 
05867   if (yyerrstatus == 3)
05868     {
05869       /* If just tried and failed to reuse look-ahead token after an
05870          error, discard it.  */
05871 
05872       if (yychar <= YYEOF)
05873         {
05874           /* Return failure if at end of input.  */
05875           if (yychar == YYEOF)
05876             YYABORT;
05877         }
05878       else
05879         {
05880           yydestruct ("Error: discarding",
05881                       yytoken, &yylval, &yylloc, osoption, parserData);
05882           yychar = YYEMPTY;
05883         }
05884     }
05885 
05886   /* Else will try to reuse look-ahead token after shifting the error
05887      token.  */
05888   goto yyerrlab1;
05889 
05890 
05891 /*---------------------------------------------------.
05892 | yyerrorlab -- error raised explicitly by YYERROR.  |
05893 `---------------------------------------------------*/
05894 yyerrorlab:
05895 
05896   /* Pacify compilers like GCC when the user code never invokes
05897      YYERROR and the label yyerrorlab therefore never appears in user
05898      code.  */
05899   if (/*CONSTCOND*/ 0)
05900      goto yyerrorlab;
05901 
05902   yyerror_range[0] = yylsp[1-yylen];
05903   /* Do not reclaim the symbols of the rule which action triggered
05904      this YYERROR.  */
05905   YYPOPSTACK (yylen);
05906   yylen = 0;
05907   YY_STACK_PRINT (yyss, yyssp);
05908   yystate = *yyssp;
05909   goto yyerrlab1;
05910 
05911 
05912 /*-------------------------------------------------------------.
05913 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
05914 `-------------------------------------------------------------*/
05915 yyerrlab1:
05916   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
05917 
05918   for (;;)
05919     {
05920       yyn = yypact[yystate];
05921       if (yyn != YYPACT_NINF)
05922         {
05923           yyn += YYTERROR;
05924           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
05925             {
05926               yyn = yytable[yyn];
05927               if (0 < yyn)
05928                 break;
05929             }
05930         }
05931 
05932       /* Pop the current state because it cannot handle the error token.  */
05933       if (yyssp == yyss)
05934         YYABORT;
05935 
05936       yyerror_range[0] = *yylsp;
05937       yydestruct ("Error: popping",
05938                   yystos[yystate], yyvsp, yylsp, osoption, parserData);
05939       YYPOPSTACK (1);
05940       yystate = *yyssp;
05941       YY_STACK_PRINT (yyss, yyssp);
05942     }
05943 
05944   if (yyn == YYFINAL)
05945     YYACCEPT;
05946 
05947   *++yyvsp = yylval;
05948 
05949   yyerror_range[1] = yylloc;
05950   /* Using YYLLOC is tempting, but would change the location of
05951      the look-ahead.  YYLOC is available though.  */
05952   YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
05953   *++yylsp = yyloc;
05954 
05955   /* Shift the error token.  */
05956   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
05957 
05958   yystate = yyn;
05959   goto yynewstate;
05960 
05961 
05962 /*-------------------------------------.
05963 | yyacceptlab -- YYACCEPT comes here.  |
05964 `-------------------------------------*/
05965 yyacceptlab:
05966   yyresult = 0;
05967   goto yyreturn;
05968 
05969 /*-----------------------------------.
05970 | yyabortlab -- YYABORT comes here.  |
05971 `-----------------------------------*/
05972 yyabortlab:
05973   yyresult = 1;
05974   goto yyreturn;
05975 
05976 #ifndef yyoverflow
05977 /*-------------------------------------------------.
05978 | yyexhaustedlab -- memory exhaustion comes here.  |
05979 `-------------------------------------------------*/
05980 yyexhaustedlab:
05981   yyerror (&yylloc, osoption, parserData, YY_("memory exhausted"));
05982   yyresult = 2;
05983   /* Fall through.  */
05984 #endif
05985 
05986 yyreturn:
05987   if (yychar != YYEOF && yychar != YYEMPTY)
05988      yydestruct ("Cleanup: discarding lookahead",
05989                  yytoken, &yylval, &yylloc, osoption, parserData);
05990   /* Do not reclaim the symbols of the rule which action triggered
05991      this YYABORT or YYACCEPT.  */
05992   YYPOPSTACK (yylen);
05993   YY_STACK_PRINT (yyss, yyssp);
05994   while (yyssp != yyss)
05995     {
05996       yydestruct ("Cleanup: popping",
05997                   yystos[*yyssp], yyvsp, yylsp, osoption, parserData);
05998       YYPOPSTACK (1);
05999     }
06000 #ifndef yyoverflow
06001   if (yyss != yyssa)
06002     YYSTACK_FREE (yyss);
06003 #endif
06004 #if YYERROR_VERBOSE
06005   if (yymsg != yymsgbuf)
06006     YYSTACK_FREE (yymsg);
06007 #endif
06008   /* Make sure YYID is used.  */
06009   return YYID (yyresult);
06010 }
06011 
06012 
06013 
06014 
06015 
06016 void osolerror(YYLTYPE* mytype, OSOption *osoption, OSoLParserData* parserData, const char* errormsg )
06017 {
06018         std::ostringstream outStr;
06019         std::string error = errormsg;
06020         error = "Input is either not valid or well formed: "  + error;
06021         outStr << error << std::endl;
06022         outStr << "See line number: " << osolget_lineno( scanner) << std::endl;
06023         outStr << "The offending text is: " << osolget_text ( scanner ) << std::endl;
06024         error = outStr.str();
06025         //printf("THIS DID NOT GET DESTROYED:   %s\n", parserData->errorText);
06026         //if( (parserData->errorText != NULL) &&  (strlen(parserData->errorText) > 0) ) free(  parserData->errorText);
06027         //osollex_destroy( scanner);
06028         throw ErrorClass( error);
06029 } //end osolerror
06030 
06031 void  yygetOSOption(const char *parsestring, OSOption *osoption, OSoLParserData *parserData) throw(ErrorClass){
06032         try{
06033                 osol_scan_string( parsestring, scanner);
06034                 osolset_lineno (1 , scanner );
06035                 //
06036                 // call the Bison parser
06037                 //
06038                 if(  osolparse( osoption,  parserData) != 0) {
06039                         //osollex_destroy(scanner);
06040                         throw ErrorClass(  "Error parsing the OSoL file");
06041                  }
06042         }
06043         catch(const ErrorClass& eclass){
06044                 throw ErrorClass(  eclass.errormsg);
06045         }
06046 } //end yygetOSOption
06047 
06048 

Generated on Sun Mar 20 03:06:32 2011 by  doxygen 1.4.7