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

Generated on Mon May 3 03:05:28 2010 by  doxygen 1.4.7