00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #define YYBISON 1
00047
00048
00049 #define YYBISON_VERSION "2.4.1"
00050
00051
00052 #define YYSKELETON_NAME "yacc.c"
00053
00054
00055 #define YYPURE 1
00056
00057
00058 #define YYPUSH 0
00059
00060
00061 #define YYPULL 1
00062
00063
00064 #define YYLSP_NEEDED 1
00065
00066
00067 #define yyparse osilparse
00068 #define yylex osillex
00069 #define yyerror osilerror
00070 #define yylval osillval
00071 #define yychar osilchar
00072 #define yydebug osildebug
00073 #define yynerrs osilnerrs
00074 #define yylloc osillloc
00075
00076
00077
00078
00079
00080 #include <string>
00081 #include <iostream>
00082 #include <sstream>
00083 #include <algorithm>
00084
00085 #include "OSInstance.h"
00086 #include "OSGeneral.h"
00087 #include "OSnLNode.h"
00088 #include "OSErrorClass.h"
00089 #include "OSParameters.h"
00090 #include "OSiLParserData.h"
00091 #include "OSgLParserData.h"
00092 #include "OSnLParserData.h"
00093 #include "OSBase64.h"
00094 #include "OSMathUtil.h"
00095 #include "OSConfig.h"
00096
00097 #define OSINSTANCE_AVAILABLE
00098
00099
00100
00101
00102
00103 #ifdef DEBUG
00104 #define YYDEBUG 1
00105 #endif
00106
00107 #ifdef HAVE_CTIME
00108 # include <ctime>
00109 #else
00110 # ifdef HAVE_TIME_H
00111 # include <time.h>
00112 # else
00113 # error "don't have header file for time"
00114 # endif
00115 #endif
00116
00117 #ifdef HAVE_CSTRING
00118 # include <cstring>
00119 #else
00120 # ifdef HAVE_STRING_H
00121 # include <string.h>
00122 # else
00123 # error "don't have header file for string"
00124 # endif
00125 #endif
00126
00127 #ifdef HAVE_CSTDIO
00128 # include <cstdio>
00129 #else
00130 # ifdef HAVE_STDIO_H
00131 # include <stdio.h>
00132 # else
00133 # error "don't have header file for stdio"
00134 # endif
00135 #endif
00136
00137 using std::cout;
00138 using std::endl;
00139 using std::ostringstream;
00140
00141
00142 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00143 YY_BUFFER_STATE osil_scan_string (const char *yy_str , void* yyscanner );
00144 int osillex_init(void** ptr_yy_globals);
00145 int osillex_destroy (void* yyscanner );
00146 void osilset_extra (OSiLParserData* parserData , void* yyscanner );
00147 int osilget_lineno( void* yyscanner);
00148 char *osilget_text (void* yyscanner );
00149 void osilset_lineno (int line_number , void* yyscanner );
00150 void yygetOSInstance(const char *osil, OSInstance* osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData) throw(ErrorClass);
00151 void osil_empty_vectors( OSiLParserData* parserData);
00152 void osgl_empty_vectors( OSgLParserData* osglData);
00153 void osnl_empty_vectors( OSnLParserData* osnlData);
00154
00155
00156
00157 double atofmod1(int* osillineno, const char *ch1, const char *ch2 );
00158 int atoimod1(int* osillineno, const char *ch1, const char *ch2);
00159
00160
00161 void osilerror_wrapper( const char* ch, int* osillineno, const char* errormsg);
00162 bool isnewline(char c, int* osillineno);
00163 bool parseVariables(const char **pchar, OSInstance *osinstance, int* osillineno);
00164 bool parseObjectives(const char **pchar, OSInstance *osinstance, int* osillineno);
00165 bool parseObjCoef(const char **pchar, int objcount, OSInstance *osinstance, int* osillineno);
00166 bool parseConstraints(const char **pchar, OSInstance *osinstance, int* osillineno);
00167 bool parseLinearConstraintCoefficients(const char **pchar, OSInstance *osinstance, int* osillineno);
00168 bool parseStart(const char **pchar, OSInstance *osinstance, int* osillineno);
00169 bool parseRowIdx(const char **pchar, OSInstance *osinstance, int* osillineno);
00170 bool parseColIdx(const char **pchar, OSInstance *osinstance, int* osillineno);
00171 bool parseValue(const char **pchar, OSInstance *osinstance, int* osillineno);
00172 bool parseInstanceHeader(const char **pchar, OSInstance *osinstance, int* osillineno);
00173 bool parseInstanceData( const char **pchar, OSInstance *osinstance, int* osillineno);
00174 char *parseBase64( const char **p, int *dataSize, int* osillineno);
00175
00176 #define ISWHITESPACE( char_) ((char_) == ' ' || \
00177 (char_) == '\t' || (char_) == '\r')
00178
00179 #define ISDIGIT(_c) ((_c) >= '0' && (_c) <= '9')
00180
00181 #define GETATTRIBUTETEXT \
00182 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
00183 if( *ch != '=') { osilerror_wrapper( ch, osillineno, "found an attribute not defined"); return false;} \
00184 ch++; \
00185 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
00186 if(*ch == '\"'){ \
00187 ch++; \
00188 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
00189 *p = ch; \
00190 for( ; *ch != '\"'; ch++); \
00191 }\
00192 else{\
00193 if(*ch == '\'') { \
00194 ch++; \
00195 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
00196 *p = ch; \
00197 for( ; *ch != '\''; ch++); \
00198 } \
00199 else { osilerror_wrapper( ch, osillineno,"missing quote on attribute"); return false;} \
00200 }\
00201 numChar = ch - *p; \
00202 attText = new char[numChar + 1]; \
00203 for(ki = 0; ki < numChar; ki++) attText[ki] = *((*p)++); \
00204 attText[ki] = '\0'; \
00205 attTextEnd = &attText[ki];
00206
00207 #define GAIL printf("GAIL ANN HONDA\n")
00208
00209
00210
00211 #define ECHOCHECK \
00212 GAIL; \
00213 printf("%c", ch[-2]); \
00214 printf("%c", ch[-1]); \
00215 printf("%c", ch[0]); \
00216 printf("%c", ch[1]); \
00217 printf("%c", ch[2]); \
00218 printf("%c", ch[3]); \
00219 printf("%c", ch[4]); \
00220 printf("%c", ch[5]); \
00221 printf("%c \n", ch[6]); \
00222 GAIL;
00223
00224
00225
00226
00227 #ifndef YYDEBUG
00228 # define YYDEBUG 0
00229 #endif
00230
00231
00232 #ifdef YYERROR_VERBOSE
00233 # undef YYERROR_VERBOSE
00234 # define YYERROR_VERBOSE 1
00235 #else
00236 # define YYERROR_VERBOSE 1
00237 #endif
00238
00239
00240 #ifndef YYTOKEN_TABLE
00241 # define YYTOKEN_TABLE 0
00242 #endif
00243
00244
00245
00246 #ifndef YYTOKENTYPE
00247 # define YYTOKENTYPE
00248
00249
00250 enum yytokentype {
00251 ATTRIBUTETEXT = 258,
00252 ELEMENTTEXT = 259,
00253 ITEMTEXT = 260,
00254 INTEGER = 261,
00255 DOUBLE = 262,
00256 QUOTE = 263,
00257 TWOQUOTES = 264,
00258 ENDOFELEMENT = 265,
00259 GREATERTHAN = 266,
00260 EMPTYSEMIDEFINITENESSATT = 267,
00261 SEMIDEFINITENESSATT = 268,
00262 NUMBEROFQTERMSATT = 269,
00263 NUMBEROFCONESATT = 270,
00264 NUMBEROFSTAGESATT = 271,
00265 IDXONEATT = 272,
00266 IDXTWOATT = 273,
00267 HORIZONATT = 274,
00268 STARTATT = 275,
00269 STARTIDXATT = 276,
00270 MATRIXIDXATT = 277,
00271 LBMATRIXIDXATT = 278,
00272 LBCONEIDXATT = 279,
00273 UBMATRIXIDXATT = 280,
00274 UBCONEIDXATT = 281,
00275 TEMPLATEMATRIXIDXATT = 282,
00276 REFERENCEMATRIXIDXATT = 283,
00277 VARREFERENCEMATRIXIDXATT = 284,
00278 OBJREFERENCEMATRIXIDXATT = 285,
00279 CONREFERENCEMATRIXIDXATT = 286,
00280 ORDERCONEIDXATT = 287,
00281 CONSTANTMATRIXIDXATT = 288,
00282 NORMSCALEFACTORATT = 289,
00283 DISTORTIONMATRIXIDXATT = 290,
00284 AXISDIRECTIONATT = 291,
00285 FIRSTAXISDIRECTIONATT = 292,
00286 SECONDAXISDIRECTIONATT = 293,
00287 OSILEND = 294,
00288 INSTANCEDATAEND = 295,
00289 INSTANCEDATASTARTEND = 296,
00290 QUADRATICCOEFFICIENTSSTART = 297,
00291 QUADRATICCOEFFICIENTSEND = 298,
00292 QTERMSTART = 299,
00293 QTERMEND = 300,
00294 CONESSTART = 301,
00295 CONESEND = 302,
00296 NONNEGATIVECONESTART = 303,
00297 NONNEGATIVECONEEND = 304,
00298 NONPOSITIVECONESTART = 305,
00299 NONPOSITIVECONEEND = 306,
00300 ORTHANTCONESTART = 307,
00301 ORTHANTCONEEND = 308,
00302 POLYHEDRALCONESTART = 309,
00303 POLYHEDRALCONEEND = 310,
00304 QUADRATICCONESTART = 311,
00305 QUADRATICCONEEND = 312,
00306 ROTATEDQUADRATICCONESTART = 313,
00307 ROTATEDQUADRATICCONEEND = 314,
00308 SEMIDEFINITECONESTART = 315,
00309 SEMIDEFINITECONEEND = 316,
00310 PRODUCTCONESTART = 317,
00311 PRODUCTCONEEND = 318,
00312 INTERSECTIONCONESTART = 319,
00313 INTERSECTIONCONEEND = 320,
00314 DUALCONESTART = 321,
00315 DUALCONEEND = 322,
00316 POLARCONESTART = 323,
00317 POLARCONEEND = 324,
00318 DIRECTIONSTART = 325,
00319 DIRECTIONEND = 326,
00320 FACTORSSTART = 327,
00321 FACTORSEND = 328,
00322 COMPONENTSSTART = 329,
00323 COMPONENTSEND = 330,
00324 TIMEDOMAINSTART = 331,
00325 TIMEDOMAINEND = 332,
00326 STAGESSTART = 333,
00327 STAGESEND = 334,
00328 STAGESTART = 335,
00329 STAGEEND = 336,
00330 INTERVALSTART = 337,
00331 INTERVALEND = 338,
00332 HEADERSTART = 339,
00333 HEADEREND = 340,
00334 FILENAMESTART = 341,
00335 FILENAMEEND = 342,
00336 FILENAMEEMPTY = 343,
00337 FILENAMESTARTANDEND = 344,
00338 FILESOURCESTART = 345,
00339 FILESOURCEEND = 346,
00340 FILESOURCEEMPTY = 347,
00341 FILESOURCESTARTANDEND = 348,
00342 FILEDESCRIPTIONSTART = 349,
00343 FILEDESCRIPTIONEND = 350,
00344 FILEDESCRIPTIONEMPTY = 351,
00345 FILEDESCRIPTIONSTARTANDEND = 352,
00346 FILECREATORSTART = 353,
00347 FILECREATOREND = 354,
00348 FILECREATOREMPTY = 355,
00349 FILECREATORSTARTANDEND = 356,
00350 FILELICENCESTART = 357,
00351 FILELICENCEEND = 358,
00352 FILELICENCEEMPTY = 359,
00353 FILELICENCESTARTANDEND = 360,
00354 INDEXESSTART = 361,
00355 INDEXESEND = 362,
00356 VALUESSTART = 363,
00357 VALUESEND = 364,
00358 NONZEROSSTART = 365,
00359 NONZEROSEND = 366,
00360 ELSTART = 367,
00361 ELEND = 368,
00362 ENUMERATIONSTART = 369,
00363 ENUMERATIONEND = 370,
00364 ITEMEMPTY = 371,
00365 ITEMSTART = 372,
00366 ITEMEND = 373,
00367 ITEMSTARTANDEND = 374,
00368 BASE64START = 375,
00369 BASE64END = 376,
00370 NUMBEROFELATT = 377,
00371 NUMBEROFENUMERATIONSATT = 378,
00372 NUMBEROFITEMSATT = 379,
00373 EMPTYCATEGORYATT = 380,
00374 CATEGORYATT = 381,
00375 EMPTYDESCRIPTIONATT = 382,
00376 DESCRIPTIONATT = 383,
00377 EMPTYSOLVERATT = 384,
00378 SOLVERATT = 385,
00379 EMPTYNAMEATT = 386,
00380 NAMEATT = 387,
00381 EMPTYTYPEATT = 388,
00382 TYPEATT = 389,
00383 EMPTYENUMTYPEATT = 390,
00384 ENUMTYPEATT = 391,
00385 EMPTYSHAPEATT = 392,
00386 SHAPEATT = 393,
00387 EMPTYUNITATT = 394,
00388 UNITATT = 395,
00389 EMPTYVALUEATT = 396,
00390 VALUEATT = 397,
00391 EMPTYVALUETYPEATT = 398,
00392 VALUETYPEATT = 399,
00393 EMPTYCONTYPEATT = 400,
00394 CONTYPEATT = 401,
00395 EMPTYOBJTYPEATT = 402,
00396 OBJTYPEATT = 403,
00397 EMPTYVARTYPEATT = 404,
00398 VARTYPEATT = 405,
00399 EMPTYMATRIXCONTYPEATT = 406,
00400 MATRIXCONTYPEATT = 407,
00401 EMPTYMATRIXOBJTYPEATT = 408,
00402 MATRIXOBJTYPEATT = 409,
00403 EMPTYMATRIXVARTYPEATT = 410,
00404 MATRIXVARTYPEATT = 411,
00405 EMPTYMATRIXTYPEATT = 412,
00406 MATRIXTYPEATT = 413,
00407 EMPTYSYMMETRYATT = 414,
00408 SYMMETRYATT = 415,
00409 EMPTYROWMAJORATT = 416,
00410 ROWMAJORATT = 417,
00411 EMPTYBASETRANSPOSEATT = 418,
00412 BASETRANSPOSEATT = 419,
00413 NUMBEROFBLOCKSATT = 420,
00414 NUMBEROFCOLUMNSATT = 421,
00415 NUMBEROFROWSATT = 422,
00416 NUMBEROFMATRICESATT = 423,
00417 NUMBEROFVALUESATT = 424,
00418 NUMBEROFCONSTRAINTSATT = 425,
00419 NUMBEROFCONATT = 426,
00420 NUMBEROFCONIDXATT = 427,
00421 NUMBEROFOBJECTIVESATT = 428,
00422 NUMBEROFOBJATT = 429,
00423 NUMBEROFOBJIDXATT = 430,
00424 NUMBEROFVARIABLESATT = 431,
00425 NUMBEROFVARATT = 432,
00426 NUMBEROFVARIDXATT = 433,
00427 NUMBEROFMATRIXCONATT = 434,
00428 NUMBEROFMATRIXOBJATT = 435,
00429 NUMBEROFMATRIXVARATT = 436,
00430 BASEMATRIXIDXATT = 437,
00431 TARGETMATRIXFIRSTROWATT = 438,
00432 TARGETMATRIXFIRSTCOLATT = 439,
00433 BASEMATRIXSTARTROWATT = 440,
00434 BASEMATRIXSTARTCOLATT = 441,
00435 BASEMATRIXENDROWATT = 442,
00436 BASEMATRIXENDCOLATT = 443,
00437 SCALARMULTIPLIERATT = 444,
00438 BLOCKROWIDXATT = 445,
00439 BLOCKCOLIDXATT = 446,
00440 MATRIXVARIDXATT = 447,
00441 MATRIXOBJIDXATT = 448,
00442 MATRIXCONIDXATT = 449,
00443 IDXATT = 450,
00444 INCRATT = 451,
00445 MULTATT = 452,
00446 SIZEOFATT = 453,
00447 COEFATT = 454,
00448 CONSTANTATT = 455,
00449 MATRICESSTART = 456,
00450 MATRICESEND = 457,
00451 MATRIXSTART = 458,
00452 MATRIXEND = 459,
00453 BASEMATRIXEND = 460,
00454 BASEMATRIXSTART = 461,
00455 BLOCKSSTART = 462,
00456 BLOCKSEND = 463,
00457 BLOCKSTART = 464,
00458 BLOCKEND = 465,
00459 COLOFFSETSTART = 466,
00460 COLOFFSETEND = 467,
00461 ROWOFFSETSTART = 468,
00462 ROWOFFSETEND = 469,
00463 ELEMENTSSTART = 470,
00464 ELEMENTSEND = 471,
00465 CONSTANTELEMENTSSTART = 472,
00466 CONSTANTELEMENTSEND = 473,
00467 VARREFERENCEELEMENTSSTART = 474,
00468 VARREFERENCEELEMENTSEND = 475,
00469 LINEARELEMENTSSTART = 476,
00470 LINEARELEMENTSEND = 477,
00471 GENERALELEMENTSSTART = 478,
00472 GENERALELEMENTSEND = 479,
00473 CONREFERENCEELEMENTSSTART = 480,
00474 CONREFERENCEELEMENTSEND = 481,
00475 OBJREFERENCEELEMENTSSTART = 482,
00476 OBJREFERENCEELEMENTSEND = 483,
00477 STRINGVALUEDELEMENTSSTART = 484,
00478 STRINGVALUEDELEMENTSEND = 485,
00479 STARTVECTORSTART = 486,
00480 STARTVECTOREND = 487,
00481 INDEXSTART = 488,
00482 INDEXEND = 489,
00483 VALUESTART = 490,
00484 VALUEEND = 491,
00485 VARIDXSTART = 492,
00486 VARIDXEND = 493,
00487 TRANSFORMATIONSTART = 494,
00488 TRANSFORMATIONEND = 495,
00489 MATRIXPROGRAMMINGSTART = 496,
00490 MATRIXPROGRAMMINGEND = 497,
00491 MATRIXVARIABLESSTART = 498,
00492 MATRIXVARIABLESEND = 499,
00493 MATRIXVARSTART = 500,
00494 MATRIXVAREND = 501,
00495 MATRIXOBJECTIVESSTART = 502,
00496 MATRIXOBJECTIVESEND = 503,
00497 MATRIXOBJSTART = 504,
00498 MATRIXOBJEND = 505,
00499 MATRIXCONSTRAINTSSTART = 506,
00500 MATRIXCONSTRAINTSEND = 507,
00501 MATRIXCONSTART = 508,
00502 MATRIXCONEND = 509,
00503 CONSTART = 510,
00504 CONEND = 511,
00505 CONSTRAINTSSTART = 512,
00506 CONSTRAINTSEND = 513,
00507 OBJSTART = 514,
00508 OBJEND = 515,
00509 OBJECTIVESSTART = 516,
00510 OBJECTIVESEND = 517,
00511 VARSTART = 518,
00512 VAREND = 519,
00513 VARIABLESSTART = 520,
00514 VARIABLESEND = 521,
00515 GENERALSTART = 522,
00516 GENERALEND = 523,
00517 SYSTEMSTART = 524,
00518 SYSTEMEND = 525,
00519 SERVICESTART = 526,
00520 SERVICEEND = 527,
00521 JOBSTART = 528,
00522 JOBEND = 529,
00523 OPTIMIZATIONSTART = 530,
00524 OPTIMIZATIONEND = 531,
00525 ATEQUALITYSTART = 532,
00526 ATEQUALITYEND = 533,
00527 ATLOWERSTART = 534,
00528 ATLOWEREND = 535,
00529 ATUPPERSTART = 536,
00530 ATUPPEREND = 537,
00531 BASICSTART = 538,
00532 BASICEND = 539,
00533 ISFREESTART = 540,
00534 ISFREEEND = 541,
00535 SUPERBASICSTART = 542,
00536 SUPERBASICEND = 543,
00537 UNKNOWNSTART = 544,
00538 UNKNOWNEND = 545,
00539 SERVICEURISTART = 546,
00540 SERVICEURIEND = 547,
00541 SERVICENAMESTART = 548,
00542 SERVICENAMEEND = 549,
00543 INSTANCENAMESTART = 550,
00544 INSTANCENAMEEND = 551,
00545 JOBIDSTART = 552,
00546 JOBIDEND = 553,
00547 OTHERSTART = 554,
00548 OTHEREND = 555,
00549 DUMMY = 556,
00550 NONLINEAREXPRESSIONSSTART = 557,
00551 NONLINEAREXPRESSIONSEND = 558,
00552 NUMBEROFNONLINEAREXPRESSIONS = 559,
00553 NLSTART = 560,
00554 NLEND = 561,
00555 MATRIXEXPRESSIONSSTART = 562,
00556 MATRIXEXPRESSIONSEND = 563,
00557 NUMBEROFEXPR = 564,
00558 EXPRSTART = 565,
00559 EXPREND = 566,
00560 NUMBEROFMATRIXTERMSATT = 567,
00561 MATRIXTERMSTART = 568,
00562 MATRIXTERMEND = 569,
00563 POWERSTART = 570,
00564 POWEREND = 571,
00565 PLUSSTART = 572,
00566 PLUSEND = 573,
00567 MINUSSTART = 574,
00568 MINUSEND = 575,
00569 DIVIDESTART = 576,
00570 DIVIDEEND = 577,
00571 LNSTART = 578,
00572 LNEND = 579,
00573 SQRTSTART = 580,
00574 SQRTEND = 581,
00575 SUMSTART = 582,
00576 SUMEND = 583,
00577 PRODUCTSTART = 584,
00578 PRODUCTEND = 585,
00579 EXPSTART = 586,
00580 EXPEND = 587,
00581 NEGATESTART = 588,
00582 NEGATEEND = 589,
00583 IFSTART = 590,
00584 IFEND = 591,
00585 SQUARESTART = 592,
00586 SQUAREEND = 593,
00587 COSSTART = 594,
00588 COSEND = 595,
00589 SINSTART = 596,
00590 SINEND = 597,
00591 VARIABLESTART = 598,
00592 VARIABLEEND = 599,
00593 ABSSTART = 600,
00594 ABSEND = 601,
00595 ERFSTART = 602,
00596 ERFEND = 603,
00597 MAXSTART = 604,
00598 MAXEND = 605,
00599 ALLDIFFSTART = 606,
00600 ALLDIFFEND = 607,
00601 MINSTART = 608,
00602 MINEND = 609,
00603 ESTART = 610,
00604 EEND = 611,
00605 PISTART = 612,
00606 PIEND = 613,
00607 TIMESSTART = 614,
00608 TIMESEND = 615,
00609 NUMBERSTART = 616,
00610 NUMBEREND = 617,
00611 MATRIXDETERMINANTSTART = 618,
00612 MATRIXDETERMINANTEND = 619,
00613 MATRIXTRACESTART = 620,
00614 MATRIXTRACEEND = 621,
00615 MATRIXTOSCALARSTART = 622,
00616 MATRIXTOSCALAREND = 623,
00617 MATRIXDIAGONALSTART = 624,
00618 MATRIXDIAGONALEND = 625,
00619 MATRIXDOTTIMESSTART = 626,
00620 MATRIXDOTTIMESEND = 627,
00621 MATRIXLOWERTRIANGLESTART = 628,
00622 MATRIXLOWERTRIANGLEEND = 629,
00623 MATRIXUPPERTRIANGLESTART = 630,
00624 MATRIXUPPERTRIANGLEEND = 631,
00625 MATRIXMERGESTART = 632,
00626 MATRIXMERGEEND = 633,
00627 MATRIXMINUSSTART = 634,
00628 MATRIXMINUSEND = 635,
00629 MATRIXNEGATESTART = 636,
00630 MATRIXNEGATEEND = 637,
00631 MATRIXPLUSSTART = 638,
00632 MATRIXPLUSEND = 639,
00633 MATRIXTIMESSTART = 640,
00634 MATRIXTIMESEND = 641,
00635 MATRIXPRODUCTSTART = 642,
00636 MATRIXPRODUCTEND = 643,
00637 MATRIXSCALARTIMESSTART = 644,
00638 MATRIXSCALARTIMESEND = 645,
00639 MATRIXSUBMATRIXATSTART = 646,
00640 MATRIXSUBMATRIXATEND = 647,
00641 MATRIXTRANSPOSESTART = 648,
00642 MATRIXTRANSPOSEEND = 649,
00643 MATRIXREFERENCESTART = 650,
00644 MATRIXREFERENCEEND = 651,
00645 IDENTITYMATRIXSTART = 652,
00646 IDENTITYMATRIXEND = 653,
00647 MATRIXINVERSESTART = 654,
00648 MATRIXINVERSEEND = 655,
00649 EMPTYINCLUDEDIAGONALATT = 656,
00650 INCLUDEDIAGONALATT = 657,
00651 EMPTYIDATT = 658,
00652 IDATT = 659
00653 };
00654 #endif
00655
00656 #define ATTRIBUTETEXT 258
00657 #define ELEMENTTEXT 259
00658 #define ITEMTEXT 260
00659 #define INTEGER 261
00660 #define DOUBLE 262
00661 #define QUOTE 263
00662 #define TWOQUOTES 264
00663 #define ENDOFELEMENT 265
00664 #define GREATERTHAN 266
00665 #define EMPTYSEMIDEFINITENESSATT 267
00666 #define SEMIDEFINITENESSATT 268
00667 #define NUMBEROFQTERMSATT 269
00668 #define NUMBEROFCONESATT 270
00669 #define NUMBEROFSTAGESATT 271
00670 #define IDXONEATT 272
00671 #define IDXTWOATT 273
00672 #define HORIZONATT 274
00673 #define STARTATT 275
00674 #define STARTIDXATT 276
00675 #define MATRIXIDXATT 277
00676 #define LBMATRIXIDXATT 278
00677 #define LBCONEIDXATT 279
00678 #define UBMATRIXIDXATT 280
00679 #define UBCONEIDXATT 281
00680 #define TEMPLATEMATRIXIDXATT 282
00681 #define REFERENCEMATRIXIDXATT 283
00682 #define VARREFERENCEMATRIXIDXATT 284
00683 #define OBJREFERENCEMATRIXIDXATT 285
00684 #define CONREFERENCEMATRIXIDXATT 286
00685 #define ORDERCONEIDXATT 287
00686 #define CONSTANTMATRIXIDXATT 288
00687 #define NORMSCALEFACTORATT 289
00688 #define DISTORTIONMATRIXIDXATT 290
00689 #define AXISDIRECTIONATT 291
00690 #define FIRSTAXISDIRECTIONATT 292
00691 #define SECONDAXISDIRECTIONATT 293
00692 #define OSILEND 294
00693 #define INSTANCEDATAEND 295
00694 #define INSTANCEDATASTARTEND 296
00695 #define QUADRATICCOEFFICIENTSSTART 297
00696 #define QUADRATICCOEFFICIENTSEND 298
00697 #define QTERMSTART 299
00698 #define QTERMEND 300
00699 #define CONESSTART 301
00700 #define CONESEND 302
00701 #define NONNEGATIVECONESTART 303
00702 #define NONNEGATIVECONEEND 304
00703 #define NONPOSITIVECONESTART 305
00704 #define NONPOSITIVECONEEND 306
00705 #define ORTHANTCONESTART 307
00706 #define ORTHANTCONEEND 308
00707 #define POLYHEDRALCONESTART 309
00708 #define POLYHEDRALCONEEND 310
00709 #define QUADRATICCONESTART 311
00710 #define QUADRATICCONEEND 312
00711 #define ROTATEDQUADRATICCONESTART 313
00712 #define ROTATEDQUADRATICCONEEND 314
00713 #define SEMIDEFINITECONESTART 315
00714 #define SEMIDEFINITECONEEND 316
00715 #define PRODUCTCONESTART 317
00716 #define PRODUCTCONEEND 318
00717 #define INTERSECTIONCONESTART 319
00718 #define INTERSECTIONCONEEND 320
00719 #define DUALCONESTART 321
00720 #define DUALCONEEND 322
00721 #define POLARCONESTART 323
00722 #define POLARCONEEND 324
00723 #define DIRECTIONSTART 325
00724 #define DIRECTIONEND 326
00725 #define FACTORSSTART 327
00726 #define FACTORSEND 328
00727 #define COMPONENTSSTART 329
00728 #define COMPONENTSEND 330
00729 #define TIMEDOMAINSTART 331
00730 #define TIMEDOMAINEND 332
00731 #define STAGESSTART 333
00732 #define STAGESEND 334
00733 #define STAGESTART 335
00734 #define STAGEEND 336
00735 #define INTERVALSTART 337
00736 #define INTERVALEND 338
00737 #define HEADERSTART 339
00738 #define HEADEREND 340
00739 #define FILENAMESTART 341
00740 #define FILENAMEEND 342
00741 #define FILENAMEEMPTY 343
00742 #define FILENAMESTARTANDEND 344
00743 #define FILESOURCESTART 345
00744 #define FILESOURCEEND 346
00745 #define FILESOURCEEMPTY 347
00746 #define FILESOURCESTARTANDEND 348
00747 #define FILEDESCRIPTIONSTART 349
00748 #define FILEDESCRIPTIONEND 350
00749 #define FILEDESCRIPTIONEMPTY 351
00750 #define FILEDESCRIPTIONSTARTANDEND 352
00751 #define FILECREATORSTART 353
00752 #define FILECREATOREND 354
00753 #define FILECREATOREMPTY 355
00754 #define FILECREATORSTARTANDEND 356
00755 #define FILELICENCESTART 357
00756 #define FILELICENCEEND 358
00757 #define FILELICENCEEMPTY 359
00758 #define FILELICENCESTARTANDEND 360
00759 #define INDEXESSTART 361
00760 #define INDEXESEND 362
00761 #define VALUESSTART 363
00762 #define VALUESEND 364
00763 #define NONZEROSSTART 365
00764 #define NONZEROSEND 366
00765 #define ELSTART 367
00766 #define ELEND 368
00767 #define ENUMERATIONSTART 369
00768 #define ENUMERATIONEND 370
00769 #define ITEMEMPTY 371
00770 #define ITEMSTART 372
00771 #define ITEMEND 373
00772 #define ITEMSTARTANDEND 374
00773 #define BASE64START 375
00774 #define BASE64END 376
00775 #define NUMBEROFELATT 377
00776 #define NUMBEROFENUMERATIONSATT 378
00777 #define NUMBEROFITEMSATT 379
00778 #define EMPTYCATEGORYATT 380
00779 #define CATEGORYATT 381
00780 #define EMPTYDESCRIPTIONATT 382
00781 #define DESCRIPTIONATT 383
00782 #define EMPTYSOLVERATT 384
00783 #define SOLVERATT 385
00784 #define EMPTYNAMEATT 386
00785 #define NAMEATT 387
00786 #define EMPTYTYPEATT 388
00787 #define TYPEATT 389
00788 #define EMPTYENUMTYPEATT 390
00789 #define ENUMTYPEATT 391
00790 #define EMPTYSHAPEATT 392
00791 #define SHAPEATT 393
00792 #define EMPTYUNITATT 394
00793 #define UNITATT 395
00794 #define EMPTYVALUEATT 396
00795 #define VALUEATT 397
00796 #define EMPTYVALUETYPEATT 398
00797 #define VALUETYPEATT 399
00798 #define EMPTYCONTYPEATT 400
00799 #define CONTYPEATT 401
00800 #define EMPTYOBJTYPEATT 402
00801 #define OBJTYPEATT 403
00802 #define EMPTYVARTYPEATT 404
00803 #define VARTYPEATT 405
00804 #define EMPTYMATRIXCONTYPEATT 406
00805 #define MATRIXCONTYPEATT 407
00806 #define EMPTYMATRIXOBJTYPEATT 408
00807 #define MATRIXOBJTYPEATT 409
00808 #define EMPTYMATRIXVARTYPEATT 410
00809 #define MATRIXVARTYPEATT 411
00810 #define EMPTYMATRIXTYPEATT 412
00811 #define MATRIXTYPEATT 413
00812 #define EMPTYSYMMETRYATT 414
00813 #define SYMMETRYATT 415
00814 #define EMPTYROWMAJORATT 416
00815 #define ROWMAJORATT 417
00816 #define EMPTYBASETRANSPOSEATT 418
00817 #define BASETRANSPOSEATT 419
00818 #define NUMBEROFBLOCKSATT 420
00819 #define NUMBEROFCOLUMNSATT 421
00820 #define NUMBEROFROWSATT 422
00821 #define NUMBEROFMATRICESATT 423
00822 #define NUMBEROFVALUESATT 424
00823 #define NUMBEROFCONSTRAINTSATT 425
00824 #define NUMBEROFCONATT 426
00825 #define NUMBEROFCONIDXATT 427
00826 #define NUMBEROFOBJECTIVESATT 428
00827 #define NUMBEROFOBJATT 429
00828 #define NUMBEROFOBJIDXATT 430
00829 #define NUMBEROFVARIABLESATT 431
00830 #define NUMBEROFVARATT 432
00831 #define NUMBEROFVARIDXATT 433
00832 #define NUMBEROFMATRIXCONATT 434
00833 #define NUMBEROFMATRIXOBJATT 435
00834 #define NUMBEROFMATRIXVARATT 436
00835 #define BASEMATRIXIDXATT 437
00836 #define TARGETMATRIXFIRSTROWATT 438
00837 #define TARGETMATRIXFIRSTCOLATT 439
00838 #define BASEMATRIXSTARTROWATT 440
00839 #define BASEMATRIXSTARTCOLATT 441
00840 #define BASEMATRIXENDROWATT 442
00841 #define BASEMATRIXENDCOLATT 443
00842 #define SCALARMULTIPLIERATT 444
00843 #define BLOCKROWIDXATT 445
00844 #define BLOCKCOLIDXATT 446
00845 #define MATRIXVARIDXATT 447
00846 #define MATRIXOBJIDXATT 448
00847 #define MATRIXCONIDXATT 449
00848 #define IDXATT 450
00849 #define INCRATT 451
00850 #define MULTATT 452
00851 #define SIZEOFATT 453
00852 #define COEFATT 454
00853 #define CONSTANTATT 455
00854 #define MATRICESSTART 456
00855 #define MATRICESEND 457
00856 #define MATRIXSTART 458
00857 #define MATRIXEND 459
00858 #define BASEMATRIXEND 460
00859 #define BASEMATRIXSTART 461
00860 #define BLOCKSSTART 462
00861 #define BLOCKSEND 463
00862 #define BLOCKSTART 464
00863 #define BLOCKEND 465
00864 #define COLOFFSETSTART 466
00865 #define COLOFFSETEND 467
00866 #define ROWOFFSETSTART 468
00867 #define ROWOFFSETEND 469
00868 #define ELEMENTSSTART 470
00869 #define ELEMENTSEND 471
00870 #define CONSTANTELEMENTSSTART 472
00871 #define CONSTANTELEMENTSEND 473
00872 #define VARREFERENCEELEMENTSSTART 474
00873 #define VARREFERENCEELEMENTSEND 475
00874 #define LINEARELEMENTSSTART 476
00875 #define LINEARELEMENTSEND 477
00876 #define GENERALELEMENTSSTART 478
00877 #define GENERALELEMENTSEND 479
00878 #define CONREFERENCEELEMENTSSTART 480
00879 #define CONREFERENCEELEMENTSEND 481
00880 #define OBJREFERENCEELEMENTSSTART 482
00881 #define OBJREFERENCEELEMENTSEND 483
00882 #define STRINGVALUEDELEMENTSSTART 484
00883 #define STRINGVALUEDELEMENTSEND 485
00884 #define STARTVECTORSTART 486
00885 #define STARTVECTOREND 487
00886 #define INDEXSTART 488
00887 #define INDEXEND 489
00888 #define VALUESTART 490
00889 #define VALUEEND 491
00890 #define VARIDXSTART 492
00891 #define VARIDXEND 493
00892 #define TRANSFORMATIONSTART 494
00893 #define TRANSFORMATIONEND 495
00894 #define MATRIXPROGRAMMINGSTART 496
00895 #define MATRIXPROGRAMMINGEND 497
00896 #define MATRIXVARIABLESSTART 498
00897 #define MATRIXVARIABLESEND 499
00898 #define MATRIXVARSTART 500
00899 #define MATRIXVAREND 501
00900 #define MATRIXOBJECTIVESSTART 502
00901 #define MATRIXOBJECTIVESEND 503
00902 #define MATRIXOBJSTART 504
00903 #define MATRIXOBJEND 505
00904 #define MATRIXCONSTRAINTSSTART 506
00905 #define MATRIXCONSTRAINTSEND 507
00906 #define MATRIXCONSTART 508
00907 #define MATRIXCONEND 509
00908 #define CONSTART 510
00909 #define CONEND 511
00910 #define CONSTRAINTSSTART 512
00911 #define CONSTRAINTSEND 513
00912 #define OBJSTART 514
00913 #define OBJEND 515
00914 #define OBJECTIVESSTART 516
00915 #define OBJECTIVESEND 517
00916 #define VARSTART 518
00917 #define VAREND 519
00918 #define VARIABLESSTART 520
00919 #define VARIABLESEND 521
00920 #define GENERALSTART 522
00921 #define GENERALEND 523
00922 #define SYSTEMSTART 524
00923 #define SYSTEMEND 525
00924 #define SERVICESTART 526
00925 #define SERVICEEND 527
00926 #define JOBSTART 528
00927 #define JOBEND 529
00928 #define OPTIMIZATIONSTART 530
00929 #define OPTIMIZATIONEND 531
00930 #define ATEQUALITYSTART 532
00931 #define ATEQUALITYEND 533
00932 #define ATLOWERSTART 534
00933 #define ATLOWEREND 535
00934 #define ATUPPERSTART 536
00935 #define ATUPPEREND 537
00936 #define BASICSTART 538
00937 #define BASICEND 539
00938 #define ISFREESTART 540
00939 #define ISFREEEND 541
00940 #define SUPERBASICSTART 542
00941 #define SUPERBASICEND 543
00942 #define UNKNOWNSTART 544
00943 #define UNKNOWNEND 545
00944 #define SERVICEURISTART 546
00945 #define SERVICEURIEND 547
00946 #define SERVICENAMESTART 548
00947 #define SERVICENAMEEND 549
00948 #define INSTANCENAMESTART 550
00949 #define INSTANCENAMEEND 551
00950 #define JOBIDSTART 552
00951 #define JOBIDEND 553
00952 #define OTHERSTART 554
00953 #define OTHEREND 555
00954 #define DUMMY 556
00955 #define NONLINEAREXPRESSIONSSTART 557
00956 #define NONLINEAREXPRESSIONSEND 558
00957 #define NUMBEROFNONLINEAREXPRESSIONS 559
00958 #define NLSTART 560
00959 #define NLEND 561
00960 #define MATRIXEXPRESSIONSSTART 562
00961 #define MATRIXEXPRESSIONSEND 563
00962 #define NUMBEROFEXPR 564
00963 #define EXPRSTART 565
00964 #define EXPREND 566
00965 #define NUMBEROFMATRIXTERMSATT 567
00966 #define MATRIXTERMSTART 568
00967 #define MATRIXTERMEND 569
00968 #define POWERSTART 570
00969 #define POWEREND 571
00970 #define PLUSSTART 572
00971 #define PLUSEND 573
00972 #define MINUSSTART 574
00973 #define MINUSEND 575
00974 #define DIVIDESTART 576
00975 #define DIVIDEEND 577
00976 #define LNSTART 578
00977 #define LNEND 579
00978 #define SQRTSTART 580
00979 #define SQRTEND 581
00980 #define SUMSTART 582
00981 #define SUMEND 583
00982 #define PRODUCTSTART 584
00983 #define PRODUCTEND 585
00984 #define EXPSTART 586
00985 #define EXPEND 587
00986 #define NEGATESTART 588
00987 #define NEGATEEND 589
00988 #define IFSTART 590
00989 #define IFEND 591
00990 #define SQUARESTART 592
00991 #define SQUAREEND 593
00992 #define COSSTART 594
00993 #define COSEND 595
00994 #define SINSTART 596
00995 #define SINEND 597
00996 #define VARIABLESTART 598
00997 #define VARIABLEEND 599
00998 #define ABSSTART 600
00999 #define ABSEND 601
01000 #define ERFSTART 602
01001 #define ERFEND 603
01002 #define MAXSTART 604
01003 #define MAXEND 605
01004 #define ALLDIFFSTART 606
01005 #define ALLDIFFEND 607
01006 #define MINSTART 608
01007 #define MINEND 609
01008 #define ESTART 610
01009 #define EEND 611
01010 #define PISTART 612
01011 #define PIEND 613
01012 #define TIMESSTART 614
01013 #define TIMESEND 615
01014 #define NUMBERSTART 616
01015 #define NUMBEREND 617
01016 #define MATRIXDETERMINANTSTART 618
01017 #define MATRIXDETERMINANTEND 619
01018 #define MATRIXTRACESTART 620
01019 #define MATRIXTRACEEND 621
01020 #define MATRIXTOSCALARSTART 622
01021 #define MATRIXTOSCALAREND 623
01022 #define MATRIXDIAGONALSTART 624
01023 #define MATRIXDIAGONALEND 625
01024 #define MATRIXDOTTIMESSTART 626
01025 #define MATRIXDOTTIMESEND 627
01026 #define MATRIXLOWERTRIANGLESTART 628
01027 #define MATRIXLOWERTRIANGLEEND 629
01028 #define MATRIXUPPERTRIANGLESTART 630
01029 #define MATRIXUPPERTRIANGLEEND 631
01030 #define MATRIXMERGESTART 632
01031 #define MATRIXMERGEEND 633
01032 #define MATRIXMINUSSTART 634
01033 #define MATRIXMINUSEND 635
01034 #define MATRIXNEGATESTART 636
01035 #define MATRIXNEGATEEND 637
01036 #define MATRIXPLUSSTART 638
01037 #define MATRIXPLUSEND 639
01038 #define MATRIXTIMESSTART 640
01039 #define MATRIXTIMESEND 641
01040 #define MATRIXPRODUCTSTART 642
01041 #define MATRIXPRODUCTEND 643
01042 #define MATRIXSCALARTIMESSTART 644
01043 #define MATRIXSCALARTIMESEND 645
01044 #define MATRIXSUBMATRIXATSTART 646
01045 #define MATRIXSUBMATRIXATEND 647
01046 #define MATRIXTRANSPOSESTART 648
01047 #define MATRIXTRANSPOSEEND 649
01048 #define MATRIXREFERENCESTART 650
01049 #define MATRIXREFERENCEEND 651
01050 #define IDENTITYMATRIXSTART 652
01051 #define IDENTITYMATRIXEND 653
01052 #define MATRIXINVERSESTART 654
01053 #define MATRIXINVERSEEND 655
01054 #define EMPTYINCLUDEDIAGONALATT 656
01055 #define INCLUDEDIAGONALATT 657
01056 #define EMPTYIDATT 658
01057 #define IDATT 659
01058
01059
01060
01061
01062 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
01063 typedef union YYSTYPE
01064 {
01065
01066
01067 double dval;
01068 int ival;
01069 char* sval;
01070
01071
01072
01073
01074 } YYSTYPE;
01075 # define YYSTYPE_IS_TRIVIAL 1
01076 # define yystype YYSTYPE
01077 # define YYSTYPE_IS_DECLARED 1
01078 #endif
01079
01080 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
01081 typedef struct YYLTYPE
01082 {
01083 int first_line;
01084 int first_column;
01085 int last_line;
01086 int last_column;
01087 } YYLTYPE;
01088 # define yyltype YYLTYPE
01089 # define YYLTYPE_IS_DECLARED 1
01090 # define YYLTYPE_IS_TRIVIAL 1
01091 #endif
01092
01093
01094
01095
01096
01097 int osillex(YYSTYPE* lvalp, YYLTYPE* llocp, void* scanner );
01098 void osilerror(YYLTYPE* mytype, OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData* osglData, OSnLParserData *osnlData, std::string errormsg );
01099 std::string addErrorMsg(YYLTYPE* mytype, OSInstance *osinstance, OSiLParserData* parserData, OSgLParserData* osglData, OSnLParserData *osnlData, std::string errormsg ) ;
01100
01101 #define scanner parserData->scanner
01102
01103
01104
01105 #ifdef short
01106 # undef short
01107 #endif
01108
01109 #ifdef YYTYPE_UINT8
01110 typedef YYTYPE_UINT8 yytype_uint8;
01111 #else
01112 typedef unsigned char yytype_uint8;
01113 #endif
01114
01115 #ifdef YYTYPE_INT8
01116 typedef YYTYPE_INT8 yytype_int8;
01117 #elif (defined __STDC__ || defined __C99__FUNC__ \
01118 || defined __cplusplus || defined _MSC_VER)
01119 typedef signed char yytype_int8;
01120 #else
01121 typedef short int yytype_int8;
01122 #endif
01123
01124 #ifdef YYTYPE_UINT16
01125 typedef YYTYPE_UINT16 yytype_uint16;
01126 #else
01127 typedef unsigned short int yytype_uint16;
01128 #endif
01129
01130 #ifdef YYTYPE_INT16
01131 typedef YYTYPE_INT16 yytype_int16;
01132 #else
01133 typedef short int yytype_int16;
01134 #endif
01135
01136 #ifndef YYSIZE_T
01137 # ifdef __SIZE_TYPE__
01138 # define YYSIZE_T __SIZE_TYPE__
01139 # elif defined size_t
01140 # define YYSIZE_T size_t
01141 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
01142 || defined __cplusplus || defined _MSC_VER)
01143 # include <stddef.h>
01144 # define YYSIZE_T size_t
01145 # else
01146 # define YYSIZE_T unsigned int
01147 # endif
01148 #endif
01149
01150 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
01151
01152 #ifndef YY_
01153 # if YYENABLE_NLS
01154 # if ENABLE_NLS
01155 # include <libintl.h>
01156 # define YY_(msgid) dgettext ("bison-runtime", msgid)
01157 # endif
01158 # endif
01159 # ifndef YY_
01160 # define YY_(msgid) msgid
01161 # endif
01162 #endif
01163
01164
01165 #if ! defined lint || defined __GNUC__
01166 # define YYUSE(e) ((void) (e))
01167 #else
01168 # define YYUSE(e)
01169 #endif
01170
01171
01172 #ifndef lint
01173 # define YYID(n) (n)
01174 #else
01175 #if (defined __STDC__ || defined __C99__FUNC__ \
01176 || defined __cplusplus || defined _MSC_VER)
01177 static int
01178 YYID (int yyi)
01179 #else
01180 static int
01181 YYID (yyi)
01182 int yyi;
01183 #endif
01184 {
01185 return yyi;
01186 }
01187 #endif
01188
01189 #if ! defined yyoverflow || YYERROR_VERBOSE
01190
01191
01192
01193 # ifdef YYSTACK_USE_ALLOCA
01194 # if YYSTACK_USE_ALLOCA
01195 # ifdef __GNUC__
01196 # define YYSTACK_ALLOC __builtin_alloca
01197 # elif defined __BUILTIN_VA_ARG_INCR
01198 # include <alloca.h>
01199 # elif defined _AIX
01200 # define YYSTACK_ALLOC __alloca
01201 # elif defined _MSC_VER
01202 # include <malloc.h>
01203 # define alloca _alloca
01204 # else
01205 # define YYSTACK_ALLOC alloca
01206 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01207 || defined __cplusplus || defined _MSC_VER)
01208 # include <stdlib.h>
01209 # ifndef _STDLIB_H
01210 # define _STDLIB_H 1
01211 # endif
01212 # endif
01213 # endif
01214 # endif
01215 # endif
01216
01217 # ifdef YYSTACK_ALLOC
01218
01219 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
01220 # ifndef YYSTACK_ALLOC_MAXIMUM
01221
01222
01223
01224
01225 # define YYSTACK_ALLOC_MAXIMUM 4032
01226 # endif
01227 # else
01228 # define YYSTACK_ALLOC YYMALLOC
01229 # define YYSTACK_FREE YYFREE
01230 # ifndef YYSTACK_ALLOC_MAXIMUM
01231 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
01232 # endif
01233 # if (defined __cplusplus && ! defined _STDLIB_H \
01234 && ! ((defined YYMALLOC || defined malloc) \
01235 && (defined YYFREE || defined free)))
01236 # include <stdlib.h>
01237 # ifndef _STDLIB_H
01238 # define _STDLIB_H 1
01239 # endif
01240 # endif
01241 # ifndef YYMALLOC
01242 # define YYMALLOC malloc
01243 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01244 || defined __cplusplus || defined _MSC_VER)
01245 void *malloc (YYSIZE_T);
01246 # endif
01247 # endif
01248 # ifndef YYFREE
01249 # define YYFREE free
01250 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01251 || defined __cplusplus || defined _MSC_VER)
01252 void free (void *);
01253 # endif
01254 # endif
01255 # endif
01256 #endif
01257
01258
01259 #if (! defined yyoverflow \
01260 && (! defined __cplusplus \
01261 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
01262 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
01263
01264
01265 union yyalloc
01266 {
01267 yytype_int16 yyss_alloc;
01268 YYSTYPE yyvs_alloc;
01269 YYLTYPE yyls_alloc;
01270 };
01271
01272
01273 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
01274
01275
01276
01277 # define YYSTACK_BYTES(N) \
01278 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
01279 + 2 * YYSTACK_GAP_MAXIMUM)
01280
01281
01282
01283 # ifndef YYCOPY
01284 # if defined __GNUC__ && 1 < __GNUC__
01285 # define YYCOPY(To, From, Count) \
01286 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
01287 # else
01288 # define YYCOPY(To, From, Count) \
01289 do \
01290 { \
01291 YYSIZE_T yyi; \
01292 for (yyi = 0; yyi < (Count); yyi++) \
01293 (To)[yyi] = (From)[yyi]; \
01294 } \
01295 while (YYID (0))
01296 # endif
01297 # endif
01298
01299
01300
01301
01302
01303
01304 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
01305 do \
01306 { \
01307 YYSIZE_T yynewbytes; \
01308 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
01309 Stack = &yyptr->Stack_alloc; \
01310 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
01311 yyptr += yynewbytes / sizeof (*yyptr); \
01312 } \
01313 while (YYID (0))
01314
01315 #endif
01316
01317
01318 #define YYFINAL 5
01319
01320 #define YYLAST 1213
01321
01322
01323 #define YYNTOKENS 409
01324
01325 #define YYNNTS 640
01326
01327 #define YYNRULES 965
01328
01329 #define YYNSTATES 1498
01330
01331
01332 #define YYUNDEFTOK 2
01333 #define YYMAXUTOK 659
01334
01335 #define YYTRANSLATE(YYX) \
01336 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
01337
01338
01339 static const yytype_uint16 yytranslate[] =
01340 {
01341 0, 2, 2, 2, 2, 2, 2, 2, 2, 406,
01342 408, 2, 2, 407, 2, 2, 2, 2, 2, 2,
01343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01344 2, 2, 405, 2, 2, 2, 2, 2, 2, 2,
01345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01356 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01358 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01359 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01360 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01361 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01362 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01363 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01364 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01365 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01366 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
01367 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
01368 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
01369 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
01370 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
01371 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
01372 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
01373 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
01374 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
01375 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
01376 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
01377 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
01378 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
01379 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
01380 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
01381 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
01382 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
01383 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
01384 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
01385 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
01386 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
01387 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
01388 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
01389 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
01390 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
01391 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
01392 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
01393 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
01394 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
01395 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
01396 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
01397 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
01398 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
01399 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
01400 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
01401 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
01402 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
01403 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
01404 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
01405 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
01406 395, 396, 397, 398, 399, 400, 401, 402, 403, 404
01407 };
01408
01409 #if YYDEBUG
01410
01411
01412 static const yytype_uint16 yyprhs[] =
01413 {
01414 0, 0, 3, 12, 14, 16, 18, 20, 21, 22,
01415 27, 29, 35, 36, 39, 43, 45, 47, 50, 51,
01416 54, 56, 58, 60, 62, 67, 72, 77, 82, 83,
01417 87, 89, 91, 93, 95, 97, 101, 102, 105, 106,
01418 110, 112, 114, 116, 118, 120, 124, 125, 128, 130,
01419 132, 134, 136, 138, 140, 142, 144, 146, 150, 152,
01420 154, 155, 158, 160, 162, 164, 166, 169, 173, 175,
01421 177, 178, 181, 183, 185, 187, 189, 192, 196, 198,
01422 200, 201, 204, 206, 208, 210, 212, 216, 218, 219,
01423 222, 226, 228, 230, 231, 234, 236, 238, 240, 243,
01424 245, 249, 251, 253, 254, 257, 259, 261, 263, 265,
01425 270, 272, 275, 279, 281, 283, 284, 287, 289, 291,
01426 293, 295, 297, 299, 301, 304, 308, 310, 312, 313,
01427 316, 318, 320, 322, 324, 326, 328, 330, 332, 335,
01428 339, 341, 343, 344, 347, 349, 351, 353, 355, 357,
01429 360, 364, 366, 368, 369, 372, 374, 376, 378, 382,
01430 386, 388, 390, 392, 394, 396, 400, 402, 404, 406,
01431 410, 412, 414, 415, 418, 420, 422, 424, 428, 432,
01432 434, 436, 438, 440, 442, 446, 448, 450, 452, 453,
01433 456, 458, 460, 462, 464, 471, 472, 476, 478, 480,
01434 482, 484, 486, 490, 492, 493, 496, 500, 502, 504,
01435 505, 508, 510, 512, 514, 516, 518, 520, 522, 524,
01436 526, 528, 530, 532, 535, 536, 540, 542, 544, 546,
01437 548, 550, 554, 556, 557, 560, 564, 566, 568, 569,
01438 572, 574, 576, 578, 580, 582, 584, 586, 588, 590,
01439 593, 594, 598, 600, 602, 604, 606, 608, 612, 614,
01440 615, 618, 622, 624, 626, 627, 630, 632, 634, 636,
01441 638, 640, 642, 644, 646, 648, 650, 653, 654, 657,
01442 659, 661, 663, 665, 668, 672, 676, 681, 683, 689,
01443 691, 694, 695, 700, 701, 705, 707, 711, 715, 716,
01444 720, 721, 724, 726, 728, 733, 738, 740, 744, 746,
01445 749, 751, 754, 755, 760, 765, 767, 770, 771, 775,
01446 776, 779, 781, 783, 788, 793, 795, 799, 801, 804,
01447 806, 809, 810, 815, 820, 822, 825, 826, 830, 831,
01448 834, 836, 838, 843, 845, 849, 851, 854, 856, 859,
01449 860, 865, 870, 872, 875, 876, 881, 883, 886, 887,
01450 890, 892, 894, 899, 904, 909, 914, 919, 924, 929,
01451 934, 939, 944, 949, 954, 959, 963, 968, 973, 978,
01452 983, 988, 993, 998, 1003, 1008, 1013, 1018, 1022, 1026,
01453 1029, 1030, 1033, 1035, 1037, 1039, 1041, 1043, 1045, 1046,
01454 1049, 1053, 1055, 1057, 1058, 1061, 1063, 1065, 1069, 1073,
01455 1075, 1077, 1080, 1082, 1086, 1088, 1090, 1091, 1094, 1098,
01456 1100, 1101, 1103, 1107, 1111, 1113, 1115, 1118, 1120, 1124,
01457 1128, 1130, 1132, 1133, 1136, 1138, 1140, 1142, 1144, 1146,
01458 1148, 1150, 1152, 1154, 1156, 1158, 1162, 1165, 1166, 1170,
01459 1172, 1174, 1175, 1178, 1180, 1182, 1184, 1186, 1188, 1190,
01460 1192, 1194, 1196, 1199, 1201, 1202, 1205, 1207, 1209, 1211,
01461 1213, 1215, 1217, 1219, 1221, 1226, 1228, 1230, 1231, 1234,
01462 1236, 1238, 1242, 1243, 1246, 1249, 1251, 1253, 1255, 1257,
01463 1261, 1263, 1266, 1268, 1270, 1272, 1274, 1278, 1280, 1283,
01464 1285, 1287, 1289, 1291, 1295, 1297, 1302, 1304, 1306, 1307,
01465 1310, 1312, 1314, 1318, 1319, 1322, 1325, 1327, 1329, 1331,
01466 1333, 1337, 1339, 1344, 1346, 1348, 1349, 1352, 1354, 1356,
01467 1360, 1361, 1364, 1365, 1368, 1370, 1372, 1374, 1376, 1380,
01468 1382, 1383, 1386, 1390, 1392, 1394, 1395, 1398, 1400, 1402,
01469 1404, 1406, 1408, 1412, 1413, 1416, 1420, 1422, 1423, 1425,
01470 1429, 1434, 1436, 1438, 1439, 1442, 1444, 1446, 1450, 1451,
01471 1454, 1455, 1458, 1460, 1462, 1464, 1466, 1470, 1471, 1474,
01472 1477, 1479, 1481, 1483, 1485, 1489, 1494, 1496, 1498, 1499,
01473 1502, 1504, 1506, 1510, 1511, 1514, 1517, 1519, 1521, 1523,
01474 1525, 1529, 1531, 1536, 1538, 1540, 1541, 1544, 1546, 1548,
01475 1552, 1553, 1556, 1557, 1560, 1562, 1564, 1566, 1568, 1572,
01476 1573, 1576, 1580, 1582, 1583, 1586, 1588, 1590, 1592, 1596,
01477 1602, 1604, 1605, 1607, 1609, 1613, 1615, 1617, 1623, 1625,
01478 1629, 1631, 1633, 1635, 1637, 1639, 1643, 1645, 1649, 1651,
01479 1653, 1655, 1657, 1659, 1663, 1665, 1666, 1669, 1673, 1675,
01480 1677, 1678, 1681, 1683, 1685, 1687, 1689, 1691, 1693, 1695,
01481 1699, 1702, 1707, 1712, 1717, 1722, 1727, 1732, 1737, 1742,
01482 1747, 1752, 1757, 1762, 1767, 1772, 1777, 1782, 1787, 1792,
01483 1797, 1802, 1807, 1812, 1814, 1816, 1818, 1822, 1824, 1826,
01484 1828, 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, 1852,
01485 1854, 1856, 1858, 1862, 1864, 1866, 1868, 1872, 1874, 1876,
01486 1878, 1882, 1884, 1886, 1888, 1892, 1894, 1896, 1898, 1902,
01487 1903, 1908, 1910, 1916, 1917, 1920, 1926, 1928, 1930, 1931,
01488 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1950, 1952,
01489 1954, 1956, 1958, 1960, 1962, 1964, 1966, 1968, 1970, 1972,
01490 1974, 1976, 1978, 1980, 1982, 1984, 1986, 1988, 1990, 1992,
01491 1993, 1997, 1999, 2002, 2003, 2007, 2009, 2012, 2013, 2019,
01492 2020, 2026, 2027, 2033, 2034, 2039, 2040, 2046, 2047, 2053,
01493 2054, 2059, 2060, 2065, 2066, 2071, 2072, 2077, 2078, 2083,
01494 2084, 2089, 2093, 2095, 2097, 2098, 2103, 2104, 2111, 2112,
01495 2117, 2118, 2123, 2124, 2129, 2133, 2135, 2137, 2140, 2141,
01496 2144, 2146, 2148, 2150, 2151, 2156, 2157, 2162, 2164, 2167,
01497 2168, 2173, 2174, 2177, 2179, 2181, 2186, 2191, 2192, 2197,
01498 2198, 2201, 2202, 2207, 2208, 2211, 2212, 2217, 2218, 2221,
01499 2222, 2227, 2228, 2231, 2232, 2237, 2238, 2241, 2243, 2245,
01500 2247, 2249, 2251, 2253, 2255, 2257, 2259, 2261, 2263, 2265,
01501 2267, 2269, 2271, 2273, 2275, 2277, 2279, 2283, 2285, 2287,
01502 2290, 2295, 2299, 2301, 2303, 2306, 2311, 2315, 2317, 2319,
01503 2322, 2327, 2331, 2333, 2335, 2338, 2343, 2346, 2348, 2351,
01504 2354, 2356, 2360, 2363, 2365, 2368, 2371, 2373, 2376, 2381,
01505 2383, 2384, 2386, 2389, 2394, 2396, 2397, 2399, 2402, 2406,
01506 2409, 2411, 2413, 2416, 2419, 2421, 2425, 2428, 2430, 2433,
01507 2436, 2438, 2442, 2445, 2447, 2451, 2452, 2457, 2458, 2461,
01508 2464, 2466, 2470, 2473, 2475, 2482, 2485, 2487, 2490, 2491,
01509 2495, 2497, 2499, 2504, 2506, 2508, 2510, 2514, 2515, 2518,
01510 2524, 2526, 2528, 2529, 2532, 2534
01511 };
01512
01513
01514 static const yytype_int16 yyrhs[] =
01515 {
01516 410, 0, -1, 414, 889, 427, 434, 524, 571, 411,
01517 412, -1, 41, -1, 40, -1, 413, -1, 39, -1,
01518 -1, -1, 415, 416, 417, 43, -1, 42, -1, 14,
01519 8, 6, 8, 11, -1, -1, 417, 418, -1, 419,
01520 421, 420, -1, 44, -1, 10, -1, 11, 45, -1,
01521 -1, 421, 422, -1, 423, -1, 424, -1, 425, -1,
01522 426, -1, 17, 8, 6, 8, -1, 18, 8, 6,
01523 8, -1, 199, 8, 650, 8, -1, 195, 8, 6,
01524 8, -1, -1, 428, 429, 430, -1, 201, -1, 628,
01525 -1, 431, -1, 432, -1, 10, -1, 11, 433, 202,
01526 -1, -1, 433, 676, -1, -1, 435, 436, 437, -1,
01527 46, -1, 629, -1, 438, -1, 439, -1, 10, -1,
01528 11, 440, 47, -1, -1, 440, 441, -1, 442, -1,
01529 448, -1, 454, -1, 469, -1, 476, -1, 482, -1,
01530 488, -1, 494, -1, 509, -1, 443, 444, 447, -1,
01531 48, -1, 445, -1, -1, 445, 446, -1, 843, -1,
01532 841, -1, 865, -1, 10, -1, 11, 49, -1, 449,
01533 450, 453, -1, 50, -1, 451, -1, -1, 451, 452,
01534 -1, 843, -1, 841, -1, 865, -1, 10, -1, 11,
01535 51, -1, 455, 456, 459, -1, 52, -1, 457, -1,
01536 -1, 457, 458, -1, 843, -1, 841, -1, 865, -1,
01537 10, -1, 11, 460, 468, -1, 461, -1, -1, 461,
01538 462, -1, 463, 464, 467, -1, 70, -1, 465, -1,
01539 -1, 465, 466, -1, 877, -1, 858, -1, 10, -1,
01540 11, 71, -1, 53, -1, 470, 471, 475, -1, 54,
01541 -1, 472, -1, -1, 472, 473, -1, 843, -1, 841,
01542 -1, 474, -1, 865, -1, 28, 8, 6, 8, -1,
01543 10, -1, 11, 55, -1, 477, 478, 481, -1, 56,
01544 -1, 479, -1, -1, 479, 480, -1, 843, -1, 841,
01545 -1, 865, -1, 634, -1, 633, -1, 635, -1, 10,
01546 -1, 11, 57, -1, 483, 484, 487, -1, 58, -1,
01547 485, -1, -1, 485, 486, -1, 843, -1, 841, -1,
01548 865, -1, 634, -1, 633, -1, 636, -1, 637, -1,
01549 10, -1, 11, 59, -1, 489, 490, 493, -1, 60,
01550 -1, 491, -1, -1, 491, 492, -1, 843, -1, 841,
01551 -1, 865, -1, 638, -1, 10, -1, 11, 61, -1,
01552 495, 496, 499, -1, 62, -1, 497, -1, -1, 497,
01553 498, -1, 843, -1, 841, -1, 865, -1, 11, 500,
01554 508, -1, 501, 502, 503, -1, 72, -1, 842, -1,
01555 504, -1, 505, -1, 10, -1, 11, 506, 507, -1,
01556 654, -1, 73, -1, 63, -1, 510, 511, 514, -1,
01557 64, -1, 512, -1, -1, 512, 513, -1, 843, -1,
01558 841, -1, 865, -1, 11, 515, 523, -1, 516, 517,
01559 518, -1, 74, -1, 842, -1, 519, -1, 520, -1,
01560 10, -1, 11, 521, 522, -1, 654, -1, 75, -1,
01561 65, -1, -1, 525, 526, -1, 241, -1, 527, -1,
01562 528, -1, 10, -1, 11, 529, 543, 557, 1036, 242,
01563 -1, -1, 530, 531, 532, -1, 243, -1, 630, -1,
01564 533, -1, 534, -1, 10, -1, 11, 536, 535, -1,
01565 244, -1, -1, 536, 537, -1, 538, 539, 542, -1,
01566 245, -1, 540, -1, -1, 540, 541, -1, 843, -1,
01567 841, -1, 643, -1, 644, -1, 640, -1, 647, -1,
01568 641, -1, 648, -1, 865, -1, 886, -1, 858, -1,
01569 10, -1, 11, 246, -1, -1, 544, 545, 546, -1,
01570 247, -1, 631, -1, 547, -1, 548, -1, 10, -1,
01571 11, 550, 549, -1, 248, -1, -1, 550, 551, -1,
01572 552, 553, 556, -1, 249, -1, 554, -1, -1, 554,
01573 555, -1, 843, -1, 841, -1, 643, -1, 645, -1,
01574 649, -1, 642, -1, 865, -1, 858, -1, 10, -1,
01575 11, 250, -1, -1, 558, 559, 560, -1, 251, -1,
01576 632, -1, 561, -1, 562, -1, 10, -1, 11, 564,
01577 563, -1, 252, -1, -1, 564, 565, -1, 566, 567,
01578 570, -1, 253, -1, 568, -1, -1, 568, 569, -1,
01579 843, -1, 841, -1, 643, -1, 646, -1, 640, -1,
01580 647, -1, 641, -1, 648, -1, 865, -1, 10, -1,
01581 11, 254, -1, -1, 572, 573, -1, 76, -1, 574,
01582 -1, 575, -1, 10, -1, 11, 77, -1, 11, 576,
01583 77, -1, 11, 620, 77, -1, 577, 578, 579, 79,
01584 -1, 78, -1, 16, 8, 6, 8, 11, -1, 580,
01585 -1, 579, 580, -1, -1, 581, 80, 582, 583, -1,
01586 -1, 132, 3, 8, -1, 10, -1, 11, 584, 81,
01587 -1, 585, 597, 609, -1, -1, 265, 586, 590, -1,
01588 -1, 586, 587, -1, 588, -1, 589, -1, 176, 8,
01589 6, 8, -1, 21, 8, 6, 8, -1, 591, -1,
01590 11, 592, 266, -1, 10, -1, 11, 266, -1, 593,
01591 -1, 592, 593, -1, -1, 594, 263, 595, 596, -1,
01592 195, 8, 6, 8, -1, 10, -1, 11, 264, -1,
01593 -1, 257, 598, 602, -1, -1, 598, 599, -1, 600,
01594 -1, 601, -1, 170, 8, 6, 8, -1, 21, 8,
01595 6, 8, -1, 603, -1, 11, 604, 258, -1, 10,
01596 -1, 11, 258, -1, 605, -1, 604, 605, -1, -1,
01597 606, 255, 607, 608, -1, 195, 8, 6, 8, -1,
01598 10, -1, 11, 256, -1, -1, 261, 610, 613, -1,
01599 -1, 610, 611, -1, 612, -1, 625, -1, 173, 8,
01600 6, 8, -1, 614, -1, 11, 615, 262, -1, 10,
01601 -1, 11, 262, -1, 616, -1, 615, 616, -1, -1,
01602 617, 259, 618, 619, -1, 195, 8, 6, 8, -1,
01603 10, -1, 11, 260, -1, -1, 621, 82, 623, 622,
01604 -1, 10, -1, 11, 83, -1, -1, 623, 624, -1,
01605 626, -1, 627, -1, 21, 8, 6, 8, -1, 19,
01606 8, 650, 8, -1, 20, 8, 650, 8, -1, 168,
01607 8, 6, 8, -1, 15, 8, 6, 8, -1, 181,
01608 8, 6, 8, -1, 180, 8, 6, 8, -1, 179,
01609 8, 6, 8, -1, 34, 8, 650, 8, -1, 35,
01610 8, 6, 8, -1, 36, 8, 6, 8, -1, 37,
01611 8, 6, 8, -1, 38, 8, 6, 8, -1, 13,
01612 3, 8, -1, 22, 8, 6, 8, -1, 23, 8,
01613 6, 8, -1, 25, 8, 6, 8, -1, 33, 8,
01614 6, 8, -1, 27, 8, 6, 8, -1, 29, 8,
01615 6, 8, -1, 30, 8, 6, 8, -1, 31, 8,
01616 6, 8, -1, 24, 8, 6, 8, -1, 26, 8,
01617 6, 8, -1, 32, 8, 6, 8, -1, 652, 6,
01618 652, -1, 652, 7, 652, -1, 652, 8, -1, -1,
01619 652, 653, -1, 405, -1, 406, -1, 407, -1, 408,
01620 -1, 655, -1, 662, -1, -1, 655, 656, -1, 657,
01621 658, 661, -1, 112, -1, 659, -1, -1, 659, 660,
01622 -1, 858, -1, 857, -1, 11, 6, 113, -1, 120,
01623 846, 663, -1, 664, -1, 665, -1, 11, 121, -1,
01624 10, -1, 11, 4, 121, -1, 667, -1, 672, -1,
01625 -1, 667, 668, -1, 669, 670, 671, -1, 112, -1,
01626 -1, 858, -1, 11, 650, 113, -1, 120, 846, 673,
01627 -1, 674, -1, 675, -1, 11, 121, -1, 10, -1,
01628 11, 4, 121, -1, 677, 678, 681, -1, 203, -1,
01629 679, -1, -1, 679, 680, -1, 874, -1, 843, -1,
01630 841, -1, 865, -1, 877, -1, 245, -1, 249, -1,
01631 253, -1, 682, -1, 683, -1, 10, -1, 11, 684,
01632 204, -1, 685, 691, -1, -1, 686, 687, 690, -1,
01633 206, -1, 688, -1, -1, 688, 689, -1, 847, -1,
01634 860, -1, 861, -1, 848, -1, 849, -1, 850, -1,
01635 851, -1, 862, -1, 859, -1, 11, 205, -1, 10,
01636 -1, -1, 691, 692, -1, 693, -1, 718, -1, 731,
01637 -1, 758, -1, 776, -1, 789, -1, 807, -1, 811,
01638 -1, 694, 695, 11, 698, -1, 217, -1, 696, -1,
01639 -1, 696, 697, -1, 844, -1, 868, -1, 700, 699,
01640 218, -1, -1, 706, 712, -1, 701, 702, -1, 231,
01641 -1, 703, -1, 704, -1, 10, -1, 11, 705, 232,
01642 -1, 654, -1, 707, 708, -1, 233, -1, 709, -1,
01643 710, -1, 10, -1, 11, 711, 234, -1, 654, -1,
01644 713, 714, -1, 235, -1, 715, -1, 716, -1, 10,
01645 -1, 11, 717, 236, -1, 666, -1, 719, 720, 11,
01646 723, -1, 219, -1, 721, -1, -1, 721, 722, -1,
01647 844, -1, 868, -1, 700, 724, 220, -1, -1, 706,
01648 725, -1, 726, 727, -1, 235, -1, 728, -1, 729,
01649 -1, 10, -1, 11, 730, 236, -1, 654, -1, 732,
01650 733, 11, 736, -1, 221, -1, 734, -1, -1, 734,
01651 735, -1, 844, -1, 868, -1, 700, 737, 222, -1,
01652 -1, 706, 738, -1, -1, 739, 740, -1, 235, -1,
01653 741, -1, 742, -1, 10, -1, 11, 743, 236, -1,
01654 744, -1, -1, 744, 745, -1, 746, 747, 750, -1,
01655 112, -1, 748, -1, -1, 748, 749, -1, 845, -1,
01656 855, -1, 751, -1, 752, -1, 10, -1, 11, 753,
01657 113, -1, -1, 753, 754, -1, 755, 756, 757, -1,
01658 237, -1, -1, 854, -1, 11, 6, 238, -1, 759,
01659 760, 11, 763, -1, 223, -1, 761, -1, -1, 761,
01660 762, -1, 844, -1, 868, -1, 700, 764, 224, -1,
01661 -1, 706, 765, -1, -1, 766, 767, -1, 235, -1,
01662 768, -1, 769, -1, 10, -1, 11, 770, 236, -1,
01663 -1, 770, 771, -1, 772, 773, -1, 112, -1, 774,
01664 -1, 775, -1, 10, -1, 11, 898, 113, -1, 777,
01665 778, 11, 781, -1, 227, -1, 779, -1, -1, 779,
01666 780, -1, 844, -1, 868, -1, 700, 782, 228, -1,
01667 -1, 706, 783, -1, 784, 785, -1, 235, -1, 786,
01668 -1, 787, -1, 10, -1, 11, 788, 236, -1, 654,
01669 -1, 790, 791, 11, 794, -1, 225, -1, 792, -1,
01670 -1, 792, 793, -1, 844, -1, 868, -1, 700, 795,
01671 226, -1, -1, 706, 796, -1, -1, 797, 798, -1,
01672 235, -1, 799, -1, 800, -1, 10, -1, 11, 801,
01673 236, -1, -1, 801, 802, -1, 803, 804, 806, -1,
01674 112, -1, -1, 804, 805, -1, 883, -1, 858, -1,
01675 857, -1, 11, 6, 113, -1, 808, 809, 11, 972,
01676 810, -1, 239, -1, -1, 871, -1, 240, -1, 812,
01677 813, 814, -1, 207, -1, 840, -1, 11, 816, 823,
01678 830, 815, -1, 208, -1, 817, 818, 819, -1, 211,
01679 -1, 842, -1, 820, -1, 821, -1, 10, -1, 11,
01680 822, 212, -1, 654, -1, 824, 825, 826, -1, 213,
01681 -1, 842, -1, 827, -1, 828, -1, 10, -1, 11,
01682 829, 214, -1, 654, -1, -1, 830, 831, -1, 832,
01683 833, 836, -1, 209, -1, 834, -1, -1, 834, 835,
01684 -1, 852, -1, 853, -1, 874, -1, 877, -1, 837,
01685 -1, 838, -1, 10, -1, 11, 839, 210, -1, 685,
01686 691, -1, 165, 8, 6, 8, -1, 166, 8, 6,
01687 8, -1, 122, 8, 6, 8, -1, 167, 8, 6,
01688 8, -1, 169, 8, 6, 8, -1, 178, 8, 6,
01689 8, -1, 198, 8, 6, 8, -1, 182, 8, 6,
01690 8, -1, 185, 8, 6, 8, -1, 186, 8, 6,
01691 8, -1, 187, 8, 6, 8, -1, 188, 8, 6,
01692 8, -1, 190, 651, 6, 651, -1, 191, 651, 6,
01693 651, -1, 199, 8, 650, 8, -1, 200, 8, 650,
01694 8, -1, 195, 8, 6, 8, -1, 196, 8, 6,
01695 8, -1, 197, 8, 6, 8, -1, 189, 8, 650,
01696 8, -1, 183, 8, 6, 8, -1, 184, 8, 6,
01697 8, -1, 863, -1, 864, -1, 163, -1, 164, 3,
01698 651, -1, 866, -1, 867, -1, 131, -1, 132, 3,
01699 8, -1, 869, -1, 870, -1, 161, -1, 162, 3,
01700 8, -1, 872, -1, 873, -1, 137, -1, 138, 3,
01701 8, -1, 875, -1, 876, -1, 159, -1, 160, 3,
01702 8, -1, 878, -1, 879, -1, 133, -1, 134, 3,
01703 8, -1, 881, -1, 882, -1, 141, -1, 142, 3,
01704 8, -1, 884, -1, 885, -1, 143, -1, 144, 3,
01705 8, -1, 887, -1, 888, -1, 149, -1, 150, 3,
01706 8, -1, -1, 890, 891, 892, 303, -1, 302, -1,
01707 304, 8, 6, 8, 11, -1, -1, 892, 893, -1,
01708 894, 895, 11, 898, 306, -1, 305, -1, 896, -1,
01709 -1, 896, 897, -1, 856, -1, 871, -1, 942, -1,
01710 949, -1, 905, -1, 907, -1, 957, -1, 909, -1,
01711 911, -1, 913, -1, 915, -1, 969, -1, 917, -1,
01712 919, -1, 921, -1, 925, -1, 923, -1, 927, -1,
01713 934, -1, 929, -1, 932, -1, 963, -1, 966, -1,
01714 899, -1, 902, -1, 960, -1, 936, -1, 938, -1,
01715 940, -1, -1, 355, 900, 901, -1, 10, -1, 11,
01716 356, -1, -1, 357, 903, 904, -1, 10, -1, 11,
01717 358, -1, -1, 359, 906, 898, 898, 360, -1, -1,
01718 317, 908, 898, 898, 318, -1, -1, 319, 910, 898,
01719 898, 320, -1, -1, 333, 912, 898, 334, -1, -1,
01720 321, 914, 898, 898, 322, -1, -1, 315, 916, 898,
01721 898, 316, -1, -1, 323, 918, 898, 324, -1, -1,
01722 325, 920, 898, 326, -1, -1, 337, 922, 898, 338,
01723 -1, -1, 339, 924, 898, 340, -1, -1, 341, 926,
01724 898, 342, -1, -1, 331, 928, 898, 332, -1, 930,
01725 898, 931, -1, 345, -1, 346, -1, -1, 347, 933,
01726 898, 348, -1, -1, 335, 935, 898, 898, 898, 336,
01727 -1, -1, 363, 937, 972, 364, -1, -1, 365, 939,
01728 972, 366, -1, -1, 367, 941, 972, 368, -1, 943,
01729 945, 944, -1, 361, -1, 10, -1, 11, 362, -1,
01730 -1, 945, 946, -1, 877, -1, 880, -1, 947, -1,
01731 -1, 404, 3, 948, 8, -1, -1, 343, 950, 953,
01732 951, -1, 10, -1, 11, 344, -1, -1, 11, 898,
01733 952, 344, -1, -1, 953, 954, -1, 955, -1, 956,
01734 -1, 199, 8, 650, 8, -1, 195, 8, 6, 8,
01735 -1, -1, 327, 958, 959, 328, -1, -1, 959, 898,
01736 -1, -1, 351, 961, 962, 352, -1, -1, 962, 898,
01737 -1, -1, 349, 964, 965, 350, -1, -1, 965, 898,
01738 -1, -1, 353, 967, 968, 354, -1, -1, 968, 898,
01739 -1, -1, 329, 970, 971, 330, -1, -1, 971, 898,
01740 -1, 973, -1, 976, -1, 980, -1, 984, -1, 988,
01741 -1, 991, -1, 997, -1, 1000, -1, 1004, -1, 1009,
01742 -1, 1012, -1, 1015, -1, 1018, -1, 1021, -1, 1024,
01743 -1, 1027, -1, 1030, -1, 1033, -1, 994, -1, 974,
01744 639, 975, -1, 395, -1, 10, -1, 11, 396, -1,
01745 195, 8, 6, 8, -1, 977, 979, 978, -1, 245,
01746 -1, 10, -1, 11, 246, -1, 195, 8, 6, 8,
01747 -1, 981, 983, 982, -1, 249, -1, 10, -1, 11,
01748 250, -1, 195, 8, 6, 8, -1, 985, 987, 986,
01749 -1, 253, -1, 10, -1, 11, 254, -1, 195, 8,
01750 6, 8, -1, 989, 990, -1, 369, -1, 972, 370,
01751 -1, 992, 993, -1, 371, -1, 972, 972, 372, -1,
01752 995, 996, -1, 397, -1, 898, 398, -1, 998, 999,
01753 -1, 399, -1, 972, 400, -1, 1001, 1002, 11, 1003,
01754 -1, 373, -1, -1, 1008, -1, 972, 374, -1, 1005,
01755 1006, 11, 1007, -1, 375, -1, -1, 1008, -1, 972,
01756 376, -1, 402, 3, 8, -1, 1010, 1011, -1, 377,
01757 -1, 10, -1, 11, 378, -1, 1013, 1014, -1, 379,
01758 -1, 972, 972, 380, -1, 1016, 1017, -1, 381, -1,
01759 972, 382, -1, 1019, 1020, -1, 383, -1, 972, 972,
01760 384, -1, 1022, 1023, -1, 385, -1, 972, 972, 386,
01761 -1, -1, 387, 1025, 1026, 388, -1, -1, 1026, 972,
01762 -1, 1028, 1029, -1, 389, -1, 898, 972, 390, -1,
01763 1031, 1032, -1, 391, -1, 898, 898, 898, 898, 972,
01764 392, -1, 1034, 1035, -1, 393, -1, 972, 394, -1,
01765 -1, 1037, 1038, 1040, -1, 307, -1, 1039, -1, 309,
01766 8, 6, 8, -1, 1041, -1, 1042, -1, 10, -1,
01767 11, 1043, 308, -1, -1, 1043, 1044, -1, 1045, 1046,
01768 11, 972, 311, -1, 310, -1, 1047, -1, -1, 1047,
01769 1048, -1, 856, -1, 871, -1
01770 };
01771
01772
01773 static const yytype_uint16 yyrline[] =
01774 {
01775 0, 426, 426, 429, 430, 432, 441, 442, 445, 446,
01776 450, 455, 465, 465, 467, 480, 486, 487, 490, 491,
01777 494, 497, 500, 503, 509, 516, 523, 531, 536, 536,
01778 544, 550, 562, 562, 564, 566, 573, 573, 576, 576,
01779 582, 588, 600, 600, 602, 604, 608, 608, 616, 617,
01780 618, 619, 620, 621, 623, 630, 631, 636, 638, 647,
01781 649, 649, 652, 657, 662, 667, 667, 669, 672, 681,
01782 683, 683, 686, 691, 696, 701, 701, 704, 706, 715,
01783 725, 725, 728, 733, 738, 744, 744, 750, 752, 752,
01784 754, 756, 763, 801, 802, 804, 804, 806, 806, 808,
01785 810, 812, 821, 823, 823, 826, 831, 836, 841, 846,
01786 857, 857, 861, 863, 875, 877, 877, 880, 885, 890,
01787 894, 899, 904, 911, 911, 913, 915, 928, 930, 930,
01788 933, 938, 943, 948, 953, 958, 963, 970, 970, 974,
01789 976, 986, 988, 988, 991, 996, 1001, 1005, 1012, 1012,
01790 1026, 1028, 1037, 1039, 1039, 1042, 1047, 1052, 1057, 1059,
01791 1061, 1067, 1073, 1073, 1075, 1077, 1079, 1081, 1095, 1098,
01792 1100, 1109, 1111, 1111, 1114, 1119, 1124, 1129, 1131, 1133,
01793 1139, 1145, 1145, 1147, 1149, 1151, 1153, 1167, 1176, 1176,
01794 1178, 1183, 1183, 1185, 1188, 1190, 1190, 1197, 1202, 1212,
01795 1212, 1214, 1216, 1218, 1220, 1220, 1222, 1227, 1243, 1291,
01796 1291, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302,
01797 1303, 1304, 1307, 1308, 1310, 1310, 1316, 1321, 1331, 1331,
01798 1333, 1335, 1337, 1339, 1339, 1341, 1346, 1359, 1392, 1392,
01799 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1405, 1406,
01800 1409, 1409, 1415, 1420, 1430, 1430, 1432, 1434, 1436, 1438,
01801 1438, 1440, 1445, 1460, 1499, 1499, 1502, 1503, 1504, 1505,
01802 1506, 1507, 1508, 1509, 1510, 1513, 1514, 1557, 1557, 1559,
01803 1561, 1561, 1563, 1564, 1567, 1568, 1571, 1622, 1624, 1638,
01804 1639, 1641, 1641, 1665, 1666, 1669, 1670, 1672, 1674, 1675,
01805 1679, 1680, 1682, 1683, 1685, 1704, 1715, 1722, 1727, 1728,
01806 1730, 1731, 1733, 1733, 1736, 1748, 1749, 1751, 1752, 1756,
01807 1757, 1759, 1760, 1762, 1781, 1792, 1799, 1804, 1805, 1807,
01808 1808, 1810, 1810, 1813, 1825, 1826, 1828, 1838, 1842, 1843,
01809 1845, 1846, 1848, 1867, 1874, 1879, 1880, 1882, 1883, 1885,
01810 1885, 1888, 1900, 1901, 1906, 1906, 1914, 1915, 1917, 1918,
01811 1920, 1924, 1930, 1941, 1946, 1961, 1972, 1983, 1991, 1999,
01812 2018, 2029, 2040, 2052, 2063, 2074, 2086, 2097, 2109, 2121,
01813 2133, 2145, 2157, 2169, 2181, 2193, 2205, 2232, 2233, 2240,
01814 2242, 2242, 2244, 2245, 2246, 2247, 2411, 2419, 2421, 2421,
01815 2423, 2425, 2434, 2436, 2436, 2438, 2438, 2440, 2456, 2459,
01816 2459, 2461, 2461, 2464, 2495, 2503, 2505, 2505, 2507, 2509,
01817 2517, 2517, 2519, 2535, 2537, 2537, 2539, 2539, 2541, 2818,
01818 2869, 2892, 2910, 2910, 2913, 2914, 2915, 2916, 2917, 2921,
01819 2979, 3037, 3096, 3096, 3098, 3100, 3140, 3142, 3142, 3147,
01820 3165, 3192, 3192, 3195, 3196, 3197, 3198, 3199, 3200, 3201,
01821 3202, 3203, 3206, 3206, 3208, 3208, 3213, 3213, 3213, 3213,
01822 3214, 3214, 3214, 3214, 3216, 3218, 3227, 3233, 3233, 3236,
01823 3242, 3248, 3250, 3250, 3256, 3266, 3276, 3276, 3278, 3280,
01824 3282, 3285, 3296, 3303, 3303, 3305, 3307, 3309, 3315, 3325,
01825 3332, 3332, 3334, 3336, 3338, 3341, 3343, 3352, 3358, 3358,
01826 3361, 3367, 3373, 3375, 3375, 3377, 3387, 3394, 3394, 3396,
01827 3398, 3400, 3402, 3404, 3413, 3419, 3419, 3422, 3428, 3434,
01828 3436, 3436, 3439, 3444, 3455, 3470, 3470, 3472, 3474, 3476,
01829 3478, 3478, 3480, 3487, 3494, 3507, 3507, 3510, 3511, 3513,
01830 3513, 3515, 3517, 3519, 3519, 3522, 3524, 3532, 3532, 3537,
01831 3544, 3546, 3555, 3561, 3561, 3564, 3570, 3576, 3578, 3578,
01832 3580, 3581, 3583, 3598, 3598, 3600, 3602, 3604, 3604, 3606,
01833 3608, 3623, 3623, 3625, 3627, 3637, 3639, 3648, 3654, 3654,
01834 3657, 3663, 3669, 3671, 3671, 3673, 3683, 3690, 3690, 3692,
01835 3694, 3696, 3699, 3701, 3710, 3716, 3716, 3719, 3725, 3731,
01836 3733, 3733, 3736, 3741, 3752, 3767, 3767, 3769, 3771, 3773,
01837 3773, 3775, 3783, 3795, 3795, 3798, 3799, 3800, 3818, 3851,
01838 3854, 3872, 3872, 3883, 3890, 3900, 3908, 3914, 3916, 3930,
01839 3942, 3948, 3954, 3954, 3956, 3958, 3960, 3962, 3972, 3978,
01840 3984, 3984, 3986, 3988, 3990, 3992, 3992, 3997, 4002, 4014,
01841 4016, 4016, 4019, 4020, 4021, 4029, 4036, 4036, 4038, 4040,
01842 4046, 4060, 4071, 4115, 4238, 4249, 4271, 4295, 4306, 4320,
01843 4335, 4350, 4362, 4374, 4392, 4410, 4423, 4436, 4446, 4483,
01844 4494, 4504, 4516, 4530, 4530, 4532, 4542, 4704, 4704, 4706,
01845 4713, 4740, 4740, 4742, 4751, 4765, 4765, 4767, 4774, 4801,
01846 4801, 4803, 4810, 4819, 4819, 4821, 4828, 4855, 4855, 4859,
01847 4867, 4876, 4876, 4878, 4885, 4894, 4894, 4896, 4903, 4942,
01848 4943, 4949, 4955, 4976, 4977, 4979, 4987, 5006, 5013, 5013,
01849 5016, 5022, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039,
01850 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049,
01851 5050, 5051, 5052, 5053, 5054, 5055, 5057, 5058, 5059, 5063,
01852 5063, 5066, 5067, 5069, 5069, 5072, 5073, 5077, 5077, 5082,
01853 5082, 5087, 5087, 5092, 5092, 5097, 5097, 5102, 5102, 5107,
01854 5107, 5112, 5112, 5117, 5117, 5122, 5122, 5127, 5127, 5132,
01855 5132, 5137, 5139, 5145, 5152, 5152, 5158, 5158, 5170, 5170,
01856 5175, 5175, 5180, 5180, 5190, 5197, 5203, 5204, 5206, 5207,
01857 5210, 5214, 5218, 5222, 5221, 5240, 5239, 5246, 5247, 5249,
01858 5248, 5255, 5256, 5259, 5265, 5273, 5280, 5298, 5298, 5309,
01859 5309, 5312, 5312, 5326, 5327, 5330, 5330, 5343, 5344, 5347,
01860 5347, 5360, 5361, 5364, 5364, 5374, 5375, 5381, 5382, 5383,
01861 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5391, 5392, 5393,
01862 5394, 5395, 5396, 5397, 5398, 5399, 5402, 5407, 5414, 5415,
01863 5417, 5425, 5430, 5437, 5438, 5440, 5447, 5452, 5459, 5460,
01864 5462, 5469, 5474, 5481, 5482, 5484, 5491, 5493, 5499, 5501,
01865 5503, 5509, 5511, 5513, 5519, 5521, 5523, 5529, 5531, 5533,
01866 5539, 5539, 5544, 5546, 5548, 5554, 5554, 5559, 5561, 5570,
01867 5572, 5577, 5577, 5579, 5581, 5587, 5590, 5592, 5598, 5601,
01868 5603, 5609, 5612, 5614, 5620, 5624, 5623, 5635, 5635, 5642,
01869 5644, 5650, 5652, 5654, 5660, 5663, 5665, 5671, 5681, 5681,
01870 5687, 5695, 5697, 5717, 5717, 5719, 5721, 5723, 5723, 5725,
01871 5735, 5754, 5760, 5760, 5763, 5771
01872 };
01873 #endif
01874
01875 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
01876
01877
01878 static const char *const yytname[] =
01879 {
01880 "$end", "error", "$undefined", "ATTRIBUTETEXT", "ELEMENTTEXT",
01881 "ITEMTEXT", "INTEGER", "DOUBLE", "QUOTE", "TWOQUOTES", "ENDOFELEMENT",
01882 "GREATERTHAN", "EMPTYSEMIDEFINITENESSATT", "SEMIDEFINITENESSATT",
01883 "NUMBEROFQTERMSATT", "NUMBEROFCONESATT", "NUMBEROFSTAGESATT",
01884 "IDXONEATT", "IDXTWOATT", "HORIZONATT", "STARTATT", "STARTIDXATT",
01885 "MATRIXIDXATT", "LBMATRIXIDXATT", "LBCONEIDXATT", "UBMATRIXIDXATT",
01886 "UBCONEIDXATT", "TEMPLATEMATRIXIDXATT", "REFERENCEMATRIXIDXATT",
01887 "VARREFERENCEMATRIXIDXATT", "OBJREFERENCEMATRIXIDXATT",
01888 "CONREFERENCEMATRIXIDXATT", "ORDERCONEIDXATT", "CONSTANTMATRIXIDXATT",
01889 "NORMSCALEFACTORATT", "DISTORTIONMATRIXIDXATT", "AXISDIRECTIONATT",
01890 "FIRSTAXISDIRECTIONATT", "SECONDAXISDIRECTIONATT", "OSILEND",
01891 "INSTANCEDATAEND", "INSTANCEDATASTARTEND", "QUADRATICCOEFFICIENTSSTART",
01892 "QUADRATICCOEFFICIENTSEND", "QTERMSTART", "QTERMEND", "CONESSTART",
01893 "CONESEND", "NONNEGATIVECONESTART", "NONNEGATIVECONEEND",
01894 "NONPOSITIVECONESTART", "NONPOSITIVECONEEND", "ORTHANTCONESTART",
01895 "ORTHANTCONEEND", "POLYHEDRALCONESTART", "POLYHEDRALCONEEND",
01896 "QUADRATICCONESTART", "QUADRATICCONEEND", "ROTATEDQUADRATICCONESTART",
01897 "ROTATEDQUADRATICCONEEND", "SEMIDEFINITECONESTART",
01898 "SEMIDEFINITECONEEND", "PRODUCTCONESTART", "PRODUCTCONEEND",
01899 "INTERSECTIONCONESTART", "INTERSECTIONCONEEND", "DUALCONESTART",
01900 "DUALCONEEND", "POLARCONESTART", "POLARCONEEND", "DIRECTIONSTART",
01901 "DIRECTIONEND", "FACTORSSTART", "FACTORSEND", "COMPONENTSSTART",
01902 "COMPONENTSEND", "TIMEDOMAINSTART", "TIMEDOMAINEND", "STAGESSTART",
01903 "STAGESEND", "STAGESTART", "STAGEEND", "INTERVALSTART", "INTERVALEND",
01904 "HEADERSTART", "HEADEREND", "FILENAMESTART", "FILENAMEEND",
01905 "FILENAMEEMPTY", "FILENAMESTARTANDEND", "FILESOURCESTART",
01906 "FILESOURCEEND", "FILESOURCEEMPTY", "FILESOURCESTARTANDEND",
01907 "FILEDESCRIPTIONSTART", "FILEDESCRIPTIONEND", "FILEDESCRIPTIONEMPTY",
01908 "FILEDESCRIPTIONSTARTANDEND", "FILECREATORSTART", "FILECREATOREND",
01909 "FILECREATOREMPTY", "FILECREATORSTARTANDEND", "FILELICENCESTART",
01910 "FILELICENCEEND", "FILELICENCEEMPTY", "FILELICENCESTARTANDEND",
01911 "INDEXESSTART", "INDEXESEND", "VALUESSTART", "VALUESEND",
01912 "NONZEROSSTART", "NONZEROSEND", "ELSTART", "ELEND", "ENUMERATIONSTART",
01913 "ENUMERATIONEND", "ITEMEMPTY", "ITEMSTART", "ITEMEND", "ITEMSTARTANDEND",
01914 "BASE64START", "BASE64END", "NUMBEROFELATT", "NUMBEROFENUMERATIONSATT",
01915 "NUMBEROFITEMSATT", "EMPTYCATEGORYATT", "CATEGORYATT",
01916 "EMPTYDESCRIPTIONATT", "DESCRIPTIONATT", "EMPTYSOLVERATT", "SOLVERATT",
01917 "EMPTYNAMEATT", "NAMEATT", "EMPTYTYPEATT", "TYPEATT", "EMPTYENUMTYPEATT",
01918 "ENUMTYPEATT", "EMPTYSHAPEATT", "SHAPEATT", "EMPTYUNITATT", "UNITATT",
01919 "EMPTYVALUEATT", "VALUEATT", "EMPTYVALUETYPEATT", "VALUETYPEATT",
01920 "EMPTYCONTYPEATT", "CONTYPEATT", "EMPTYOBJTYPEATT", "OBJTYPEATT",
01921 "EMPTYVARTYPEATT", "VARTYPEATT", "EMPTYMATRIXCONTYPEATT",
01922 "MATRIXCONTYPEATT", "EMPTYMATRIXOBJTYPEATT", "MATRIXOBJTYPEATT",
01923 "EMPTYMATRIXVARTYPEATT", "MATRIXVARTYPEATT", "EMPTYMATRIXTYPEATT",
01924 "MATRIXTYPEATT", "EMPTYSYMMETRYATT", "SYMMETRYATT", "EMPTYROWMAJORATT",
01925 "ROWMAJORATT", "EMPTYBASETRANSPOSEATT", "BASETRANSPOSEATT",
01926 "NUMBEROFBLOCKSATT", "NUMBEROFCOLUMNSATT", "NUMBEROFROWSATT",
01927 "NUMBEROFMATRICESATT", "NUMBEROFVALUESATT", "NUMBEROFCONSTRAINTSATT",
01928 "NUMBEROFCONATT", "NUMBEROFCONIDXATT", "NUMBEROFOBJECTIVESATT",
01929 "NUMBEROFOBJATT", "NUMBEROFOBJIDXATT", "NUMBEROFVARIABLESATT",
01930 "NUMBEROFVARATT", "NUMBEROFVARIDXATT", "NUMBEROFMATRIXCONATT",
01931 "NUMBEROFMATRIXOBJATT", "NUMBEROFMATRIXVARATT", "BASEMATRIXIDXATT",
01932 "TARGETMATRIXFIRSTROWATT", "TARGETMATRIXFIRSTCOLATT",
01933 "BASEMATRIXSTARTROWATT", "BASEMATRIXSTARTCOLATT", "BASEMATRIXENDROWATT",
01934 "BASEMATRIXENDCOLATT", "SCALARMULTIPLIERATT", "BLOCKROWIDXATT",
01935 "BLOCKCOLIDXATT", "MATRIXVARIDXATT", "MATRIXOBJIDXATT",
01936 "MATRIXCONIDXATT", "IDXATT", "INCRATT", "MULTATT", "SIZEOFATT",
01937 "COEFATT", "CONSTANTATT", "MATRICESSTART", "MATRICESEND", "MATRIXSTART",
01938 "MATRIXEND", "BASEMATRIXEND", "BASEMATRIXSTART", "BLOCKSSTART",
01939 "BLOCKSEND", "BLOCKSTART", "BLOCKEND", "COLOFFSETSTART", "COLOFFSETEND",
01940 "ROWOFFSETSTART", "ROWOFFSETEND", "ELEMENTSSTART", "ELEMENTSEND",
01941 "CONSTANTELEMENTSSTART", "CONSTANTELEMENTSEND",
01942 "VARREFERENCEELEMENTSSTART", "VARREFERENCEELEMENTSEND",
01943 "LINEARELEMENTSSTART", "LINEARELEMENTSEND", "GENERALELEMENTSSTART",
01944 "GENERALELEMENTSEND", "CONREFERENCEELEMENTSSTART",
01945 "CONREFERENCEELEMENTSEND", "OBJREFERENCEELEMENTSSTART",
01946 "OBJREFERENCEELEMENTSEND", "STRINGVALUEDELEMENTSSTART",
01947 "STRINGVALUEDELEMENTSEND", "STARTVECTORSTART", "STARTVECTOREND",
01948 "INDEXSTART", "INDEXEND", "VALUESTART", "VALUEEND", "VARIDXSTART",
01949 "VARIDXEND", "TRANSFORMATIONSTART", "TRANSFORMATIONEND",
01950 "MATRIXPROGRAMMINGSTART", "MATRIXPROGRAMMINGEND", "MATRIXVARIABLESSTART",
01951 "MATRIXVARIABLESEND", "MATRIXVARSTART", "MATRIXVAREND",
01952 "MATRIXOBJECTIVESSTART", "MATRIXOBJECTIVESEND", "MATRIXOBJSTART",
01953 "MATRIXOBJEND", "MATRIXCONSTRAINTSSTART", "MATRIXCONSTRAINTSEND",
01954 "MATRIXCONSTART", "MATRIXCONEND", "CONSTART", "CONEND",
01955 "CONSTRAINTSSTART", "CONSTRAINTSEND", "OBJSTART", "OBJEND",
01956 "OBJECTIVESSTART", "OBJECTIVESEND", "VARSTART", "VAREND",
01957 "VARIABLESSTART", "VARIABLESEND", "GENERALSTART", "GENERALEND",
01958 "SYSTEMSTART", "SYSTEMEND", "SERVICESTART", "SERVICEEND", "JOBSTART",
01959 "JOBEND", "OPTIMIZATIONSTART", "OPTIMIZATIONEND", "ATEQUALITYSTART",
01960 "ATEQUALITYEND", "ATLOWERSTART", "ATLOWEREND", "ATUPPERSTART",
01961 "ATUPPEREND", "BASICSTART", "BASICEND", "ISFREESTART", "ISFREEEND",
01962 "SUPERBASICSTART", "SUPERBASICEND", "UNKNOWNSTART", "UNKNOWNEND",
01963 "SERVICEURISTART", "SERVICEURIEND", "SERVICENAMESTART", "SERVICENAMEEND",
01964 "INSTANCENAMESTART", "INSTANCENAMEEND", "JOBIDSTART", "JOBIDEND",
01965 "OTHERSTART", "OTHEREND", "DUMMY", "NONLINEAREXPRESSIONSSTART",
01966 "NONLINEAREXPRESSIONSEND", "NUMBEROFNONLINEAREXPRESSIONS", "NLSTART",
01967 "NLEND", "MATRIXEXPRESSIONSSTART", "MATRIXEXPRESSIONSEND",
01968 "NUMBEROFEXPR", "EXPRSTART", "EXPREND", "NUMBEROFMATRIXTERMSATT",
01969 "MATRIXTERMSTART", "MATRIXTERMEND", "POWERSTART", "POWEREND",
01970 "PLUSSTART", "PLUSEND", "MINUSSTART", "MINUSEND", "DIVIDESTART",
01971 "DIVIDEEND", "LNSTART", "LNEND", "SQRTSTART", "SQRTEND", "SUMSTART",
01972 "SUMEND", "PRODUCTSTART", "PRODUCTEND", "EXPSTART", "EXPEND",
01973 "NEGATESTART", "NEGATEEND", "IFSTART", "IFEND", "SQUARESTART",
01974 "SQUAREEND", "COSSTART", "COSEND", "SINSTART", "SINEND", "VARIABLESTART",
01975 "VARIABLEEND", "ABSSTART", "ABSEND", "ERFSTART", "ERFEND", "MAXSTART",
01976 "MAXEND", "ALLDIFFSTART", "ALLDIFFEND", "MINSTART", "MINEND", "ESTART",
01977 "EEND", "PISTART", "PIEND", "TIMESSTART", "TIMESEND", "NUMBERSTART",
01978 "NUMBEREND", "MATRIXDETERMINANTSTART", "MATRIXDETERMINANTEND",
01979 "MATRIXTRACESTART", "MATRIXTRACEEND", "MATRIXTOSCALARSTART",
01980 "MATRIXTOSCALAREND", "MATRIXDIAGONALSTART", "MATRIXDIAGONALEND",
01981 "MATRIXDOTTIMESSTART", "MATRIXDOTTIMESEND", "MATRIXLOWERTRIANGLESTART",
01982 "MATRIXLOWERTRIANGLEEND", "MATRIXUPPERTRIANGLESTART",
01983 "MATRIXUPPERTRIANGLEEND", "MATRIXMERGESTART", "MATRIXMERGEEND",
01984 "MATRIXMINUSSTART", "MATRIXMINUSEND", "MATRIXNEGATESTART",
01985 "MATRIXNEGATEEND", "MATRIXPLUSSTART", "MATRIXPLUSEND",
01986 "MATRIXTIMESSTART", "MATRIXTIMESEND", "MATRIXPRODUCTSTART",
01987 "MATRIXPRODUCTEND", "MATRIXSCALARTIMESSTART", "MATRIXSCALARTIMESEND",
01988 "MATRIXSUBMATRIXATSTART", "MATRIXSUBMATRIXATEND", "MATRIXTRANSPOSESTART",
01989 "MATRIXTRANSPOSEEND", "MATRIXREFERENCESTART", "MATRIXREFERENCEEND",
01990 "IDENTITYMATRIXSTART", "IDENTITYMATRIXEND", "MATRIXINVERSESTART",
01991 "MATRIXINVERSEEND", "EMPTYINCLUDEDIAGONALATT", "INCLUDEDIAGONALATT",
01992 "EMPTYIDATT", "IDATT", "' '", "'\\t'", "'\\r'", "'\\n'", "$accept",
01993 "osildoc", "theInstanceEnd", "osilEnd", "osilEnding",
01994 "quadraticCoefficients", "quadraticCoefficientsStart",
01995 "osilQuadnumberATT", "qTermlist", "qterm", "qtermStart", "qtermend",
01996 "anotherqTermATT", "qtermatt", "osilQtermidxOneATT",
01997 "osilQtermidxTwoATT", "osilQtermcoefATT", "osilQtermidxATT", "matrices",
01998 "matricesStart", "matricesAttributes", "matricesContent",
01999 "matricesEmpty", "matricesLaden", "matrixList", "cones", "conesStart",
02000 "conesAttributes", "conesContent", "conesEmpty", "conesLaden",
02001 "coneList", "cone", "nonnegativeCone", "nonnegativeConeStart",
02002 "nonnegativeConeAttributes", "nonnegativeConeAttList",
02003 "nonnegativeConeAtt", "nonnegativeConeEnd", "nonpositiveCone",
02004 "nonpositiveConeStart", "nonpositiveConeAttributes",
02005 "nonpositiveConeAttList", "nonpositiveConeAtt", "nonpositiveConeEnd",
02006 "generalOrthantCone", "generalOrthantConeStart",
02007 "generalOrthantConeAttributes", "generalOrthantConeAttList",
02008 "generalOrthantConeAtt", "generalOrthantConeContent",
02009 "generalOrthantConeDirectionList", "generalOrthantConeDirections",
02010 "generalOrthantConeDirection", "generalOrthantConeDirectionStart",
02011 "generalOrthantConeDirectionAttributes",
02012 "generalOrthantConeDirectionAttributeList",
02013 "generalOrthantConeDirectionAtt", "generalOrthantConeDirectionEnd",
02014 "generalOrthantConeEnd", "polyhedralCone", "polyhedralConeStart",
02015 "polyhedralConeAttributes", "polyhedralConeAttList", "polyhedralConeAtt",
02016 "referenceMatrixATT", "polyhedralConeEnd", "quadraticCone",
02017 "quadraticConeStart", "quadraticConeAttributes", "quadraticConeAttList",
02018 "quadraticConeAtt", "quadraticConeEnd", "rotatedQuadraticCone",
02019 "rotatedQuadraticConeStart", "rotatedQuadraticConeAttributes",
02020 "rotatedQuadraticConeAttList", "rotatedQuadraticConeAtt",
02021 "rotatedQuadraticConeEnd", "semidefiniteCone", "semidefiniteConeStart",
02022 "semidefiniteConeAttributes", "semidefiniteConeAttList",
02023 "semidefiniteConeAtt", "semidefiniteConeEnd", "productCone",
02024 "productConeStart", "productConeAttributes", "productConeAttList",
02025 "productConeAtt", "productConeContent", "productConeFactors",
02026 "productConeFactorsStart", "productConeFactorsAttributes",
02027 "productConeFactorsContent", "productConeFactorsEmpty",
02028 "productConeFactorsLaden", "productConeFactorList",
02029 "productConeFactorsEnd", "productConeEnd", "intersectionCone",
02030 "intersectionConeStart", "intersectionConeAttributes",
02031 "intersectionConeAttList", "intersectionConeAtt",
02032 "intersectionConeContent", "intersectionConeComponents",
02033 "intersectionConeComponentsStart",
02034 "intersectionConeComponentsAttributes",
02035 "intersectionConeComponentsContent", "intersectionConeComponentsEmpty",
02036 "intersectionConeComponentsLaden", "intersectionConeComponentList",
02037 "intersectionConeComponentsEnd", "intersectionConeEnd",
02038 "matrixProgramming", "matrixProgrammingStart",
02039 "matrixProgrammingContent", "matrixProgrammingEmpty",
02040 "matrixProgrammingLaden", "matrixVariables", "matrixVariablesStart",
02041 "matrixVariablesAttributes", "matrixVariablesContent",
02042 "matrixVariablesEmpty", "matrixVariablesLaden", "matrixVariablesEnd",
02043 "matrixVarList", "matrixVar", "matrixVarStart", "matrixVarAttributes",
02044 "matrixVarAttList", "matrixVarAtt", "matrixVarEnd", "matrixObjectives",
02045 "matrixObjectivesStart", "matrixObjectivesAttributes",
02046 "matrixObjectivesContent", "matrixObjectivesEmpty",
02047 "matrixObjectivesLaden", "matrixObjectivesEnd", "matrixObjList",
02048 "matrixObj", "matrixObjStart", "matrixObjAttributes", "matrixObjAttList",
02049 "matrixObjAtt", "matrixObjEnd", "matrixConstraints",
02050 "matrixConstraintsStart", "matrixConstraintsAttributes",
02051 "matrixConstraintsContent", "matrixConstraintsEmpty",
02052 "matrixConstraintsLaden", "matrixConstraintsEnd", "matrixConList",
02053 "matrixCon", "matrixConStart", "matrixConAttributes", "matrixConAttList",
02054 "matrixConAtt", "matrixConEnd", "timeDomain", "timeDomainStart",
02055 "timeDomainContent", "timeDomainEmpty", "timeDomainLaden", "stages",
02056 "stagesstart", "osilNumberofstagesATT", "stagelist", "stage", "$@1",
02057 "osilStagenameATT", "stageend", "stagecontent", "stagevariables",
02058 "anotherstagevarATT", "stagevaratt", "osilNumberofstagevariablesATT",
02059 "osilStagevarstartidxATT", "restofstagevariables", "emptyvarlist",
02060 "stagevarlist", "stagevar", "$@2", "osilStagevaridxATT", "stagevarend",
02061 "stageconstraints", "anotherstageconATT", "stageconatt",
02062 "osilNumberofstageconstraintsATT", "osilStageconstartidxATT",
02063 "restofstageconstraints", "emptyconlist", "stageconlist", "stagecon",
02064 "$@3", "osilStageconidxATT", "stageconend", "stageobjectives",
02065 "anotherstageobjATT", "stageobjatt", "osilNumberofstageobjectivesATT",
02066 "restofstageobjectives", "emptyobjlist", "stageobjlist", "stageobj",
02067 "$@4", "osilStageobjidxATT", "stageobjend", "interval", "$@5",
02068 "intervalend", "anotherIntervalATT", "intervalatt",
02069 "osilStageobjstartidxATT", "osilIntervalhorizonATT",
02070 "osilIntervalstartATT", "numberOfMatricesATT", "numberOfConesATT",
02071 "numberOfMatrixVarATT", "numberOfMatrixObjATT", "numberOfMatrixConATT",
02072 "normScaleFactorATT", "distortionMatrixIdxATT", "axisDirectionATT",
02073 "firstAxisDirectionATT", "secondAxisDirectionATT", "semidefinitenessATT",
02074 "matrixIdxATT", "lbMatrixIdxATT", "ubMatrixIdxATT",
02075 "constantMatrixIdxATT", "templateMatrixIdxATT",
02076 "varReferenceMatrixIdxATT", "objReferenceMatrixIdxATT",
02077 "conReferenceMatrixIdxATT", "lbConeIdxATT", "ubConeIdxATT",
02078 "orderConeIdxATT", "aNumber", "quote", "xmlWhiteSpace",
02079 "xmlWhiteSpaceChar", "osglIntArrayData", "osglIntVectorElArray",
02080 "osglIntVectorEl", "osglIntVectorElStart", "osglIntVectorElAttributes",
02081 "osglIntVectorElAttList", "osglIntVectorElAtt", "osglIntVectorElContent",
02082 "osglIntVectorBase64", "osglIntVectorBase64Content",
02083 "osglIntVectorBase64Empty", "osglIntVectorBase64Laden",
02084 "osglDblArrayData", "osglDblVectorElArray", "osglDblVectorEl",
02085 "osglDblVectorElStart", "osglDblVectorElAttributes",
02086 "osglDblVectorElContent", "osglDblVectorBase64",
02087 "osglDblVectorBase64Content", "osglDblVectorBase64Empty",
02088 "osglDblVectorBase64Laden", "osglMatrix", "matrixStart",
02089 "matrixAttributes", "matrixAttributeList", "matrixAttribute",
02090 "matrixContent", "matrixEmpty", "matrixLaden", "matrixBody",
02091 "baseMatrix", "baseMatrixStart", "baseMatrixAttributes",
02092 "baseMatrixAttList", "baseMatrixAtt", "baseMatrixEnd",
02093 "matrixConstructorList", "matrixConstructor", "constantElements",
02094 "constantElementsStart", "constantElementsAttributes",
02095 "constantElementsAttList", "constantElementsAtt",
02096 "constantElementsContent", "constantElementsNonzeros",
02097 "matrixElementsStartVector", "matrixElementsStartVectorStart",
02098 "matrixElementsStartVectorContent", "matrixElementsStartVectorEmpty",
02099 "matrixElementsStartVectorLaden", "matrixElementsStartVectorBody",
02100 "matrixElementsIndexVector", "matrixElementsIndexStart",
02101 "matrixElementsIndexContent", "matrixElementsIndexEmpty",
02102 "matrixElementsIndexLaden", "matrixElementsIndexBody",
02103 "constantElementsValues", "constantElementsValueStart",
02104 "constantElementsValueContent", "constantElementsValueEmpty",
02105 "constantElementsValueLaden", "constantElementsValueBody",
02106 "varReferenceElements", "varReferenceElementsStart",
02107 "varReferenceElementsAttributes", "varReferenceElementsAttList",
02108 "varReferenceElementsAtt", "varReferenceElementsContent",
02109 "varReferenceElementsNonzeros", "varReferenceElementsValues",
02110 "varReferenceElementsValuesStart", "varReferenceElementsValuesContent",
02111 "varReferenceElementsValuesEmpty", "varReferenceElementsValuesLaden",
02112 "varReferenceElementsValuesBody", "linearElements",
02113 "linearElementsStart", "linearElementsAttributes",
02114 "linearElementsAttList", "linearElementsAtt", "linearElementsContent",
02115 "linearElementsNonzeros", "linearElementsValues",
02116 "linearElementsValuesStart", "linearElementsValuesContent",
02117 "linearElementsValuesEmpty", "linearElementsValuesLaden",
02118 "linearElementsValuesBody", "linearElementsValuesElList",
02119 "linearElementsValuesEl", "linearElementsValuesElStart",
02120 "linearElementsValuesElAttributes", "linearElementsValuesElAttList",
02121 "linearElementsValuesElAtt", "linearElementsValuesElContent",
02122 "linearElementsValuesElEmpty", "linearElementsValuesElLaden",
02123 "linearElementsValuesVarIdxList", "linearElementsValuesVarIdx",
02124 "linearElementsValuesVarIdxStart", "LinearElementsValuesVarIdxCoefATT",
02125 "linearElementsValuesVarIdxContent", "generalElements",
02126 "generalElementsStart", "generalElementsAttributes",
02127 "generalElementsAttList", "generalElementsAtt", "generalElementsContent",
02128 "generalElementsNonzeros", "generalElementsValues",
02129 "generalElementsValuesStart", "generalElementsValuesContent",
02130 "generalElementsValuesEmpty", "generalElementsValuesLaden",
02131 "generalElementsElList", "generalElementsEl", "generalElementsElStart",
02132 "generalElementsElContent", "generalElementsElEmpty",
02133 "generalElementsElLaden", "objReferenceElements",
02134 "objReferenceElementsStart", "objReferenceElementsAttributes",
02135 "objReferenceElementsAttList", "objReferenceElementsAtt",
02136 "objReferenceElementsContent", "objReferenceElementsNonzeros",
02137 "objReferenceElementsValues", "objReferenceElementsValuesStart",
02138 "objReferenceElementsValuesContent", "objReferenceElementsValuesEmpty",
02139 "objReferenceElementsValuesLaden", "objReferenceElementsValuesBody",
02140 "conReferenceElements", "conReferenceElementsStart",
02141 "conReferenceElementsAttributes", "conReferenceElementsAttList",
02142 "conReferenceElementsAtt", "conReferenceElementsContent",
02143 "conReferenceElementsNonzeros", "conReferenceElementsValues",
02144 "conReferenceElementsValuesStart", "conReferenceElementsValuesContent",
02145 "conReferenceElementsValuesEmpty", "conReferenceElementsValuesLaden",
02146 "conReferenceElementsElList", "conReferenceElementsEl",
02147 "conReferenceElementsElStart", "conReferenceElementsElAttributeList",
02148 "conReferenceElementsElAttribute", "conReferenceElementsElContent",
02149 "matrixTransformation", "matrixTransformationStart",
02150 "matrixTransformationShapeATT", "matrixTransformationEnd",
02151 "matrixBlocks", "matrixBlocksStart", "matrixBlocksAttributes",
02152 "matrixBlocksContent", "matrixBlocksEnd", "colOffsets", "colOffsetStart",
02153 "colOffsetNumberOfElAttribute", "colOffsetContent", "colOffsetEmpty",
02154 "colOffsetLaden", "colOffsetBody", "rowOffsets", "rowOffsetStart",
02155 "rowOffsetNumberOfElAttribute", "rowOffsetContent", "rowOffsetEmpty",
02156 "rowOffsetLaden", "rowOffsetBody", "blockList", "matrixBlock",
02157 "matrixBlockStart", "matrixBlockAttributes", "matrixBlockAttList",
02158 "matrixBlockAtt", "matrixBlockContent", "blockEmpty", "blockLaden",
02159 "blockBody", "osglNumberOfBlocksATT", "osglNumberOfColumnsATT",
02160 "osglNumberOfElATT", "osglNumberOfRowsATT", "osglNumberOfValuesATT",
02161 "osglNumberOfVarIdxATT", "osglBase64SizeATT", "osglBaseMatrixIdxATT",
02162 "osglBaseMatrixStartRowATT", "osglBaseMatrixStartColATT",
02163 "osglBaseMatrixEndRowATT", "osglBaseMatrixEndColATT",
02164 "osglBlockRowIdxATT", "osglBlockColIdxATT", "osglCoefATT",
02165 "osglConstantATT", "osglIdxATT", "osglIncrATT", "osglMultATT",
02166 "osglScalarMultiplierATT", "osglTargetMatrixFirstRowATT",
02167 "osglTargetMatrixFirstColATT", "osglBaseTransposeATT",
02168 "baseTransposeAttEmpty", "baseTransposeAttContent", "osglNameATT",
02169 "nameAttEmpty", "nameAttContent", "osglRowMajorATT", "rowMajorAttEmpty",
02170 "rowMajorAttContent", "osglShapeATT", "shapeAttEmpty", "shape",
02171 "osglSymmetryATT", "symmetryAttEmpty", "symmetryAttContent",
02172 "osglTypeATT", "typeAttEmpty", "typeAttContent", "osglValueATT",
02173 "valueAttEmpty", "valueAttContent", "osglValueTypeATT",
02174 "valueTypeAttEmpty", "valueTypeAttContent", "osglVarTypeATT",
02175 "varTypeAttEmpty", "varTypeAttContent", "nonlinearExpressions",
02176 "nonlinearExpressionsStart", "nlnumberatt", "nlnodes",
02177 "scalarExpressionTree", "nlstart", "nlAttributes", "nlAttributeList",
02178 "nlAttribute", "nlnode", "E", "$@6", "eend", "PI", "$@7", "piend",
02179 "times", "$@8", "plus", "$@9", "minus", "$@10", "negate", "$@11",
02180 "divide", "$@12", "power", "$@13", "ln", "$@14", "sqrt", "$@15",
02181 "square", "$@16", "cos", "$@17", "sin", "$@18", "exp", "$@19", "abs",
02182 "absStart", "absEnd", "erf", "$@20", "if", "$@21", "matrixDeterminant",
02183 "$@22", "matrixTrace", "$@23", "matrixToScalar", "$@24", "number",
02184 "numberStart", "numberEnd", "numberAttributeList", "numberAttribute",
02185 "numberidATT", "$@25", "variable", "$@26", "variableend", "$@27",
02186 "anotherVariableATT", "variableATT", "variablecoefATT", "variableidxATT",
02187 "sum", "$@28", "anothersumnlnode", "allDiff", "$@29",
02188 "anotherallDiffnlnode", "max", "$@30", "anothermaxnlnode", "min", "$@31",
02189 "anotherminnlnode", "product", "$@32", "anotherproductnlnode",
02190 "OSnLMNode", "matrixReference", "matrixReferenceStart",
02191 "matrixReferenceEnd", "matrixVarReference", "matrixVarReferenceStart",
02192 "matrixVarReferenceEnd", "matrixVarIdxATT", "matrixObjReference",
02193 "matrixObjReferenceStart", "matrixObjReferenceEnd", "matrixObjIdxATT",
02194 "matrixConReference", "matrixConReferenceStart", "matrixConReferenceEnd",
02195 "matrixConIdxATT", "matrixDiagonal", "matrixDiagonalStart",
02196 "matrixDiagonalContent", "matrixDotTimes", "matrixDotTimesStart",
02197 "matrixDotTimesContent", "identityMatrix", "identityMatrixStart",
02198 "identityMatrixContent", "matrixInverse", "matrixInverseStart",
02199 "matrixInverseContent", "matrixLowerTriangle",
02200 "matrixLowerTriangleStart", "matrixLowerTriangleAttribute",
02201 "matrixLowerTriangleContent", "matrixUpperTriangle",
02202 "matrixUpperTriangleStart", "matrixUpperTriangleAttribute",
02203 "matrixUpperTriangleContent", "includeDiagonalATT", "matrixMerge",
02204 "matrixMergeStart", "matrixMergeEnd", "matrixMinus", "matrixMinusStart",
02205 "matrixMinusContent", "matrixNegate", "matrixNegateStart",
02206 "matrixNegateContent", "matrixPlus", "matrixPlusStart",
02207 "matrixPlusContent", "matrixTimes", "matrixTimesStart",
02208 "matrixTimesContent", "matrixProduct", "$@33",
02209 "anothermatrixproductnode", "matrixScalarTimes",
02210 "matrixScalarTimesStart", "matrixScalarTimesContent",
02211 "matrixSubMatrixAt", "matrixSubMatrixAtStart",
02212 "matrixSubMatrixAtContent", "matrixTranspose", "matrixTransposeStart",
02213 "matrixTransposeContent", "matrixExpressions", "matrixExpressionsStart",
02214 "matrixExpressionsAtt", "numberOfExprATT", "matrixExpressionsContent",
02215 "matrixExpressionsEmpty", "matrixExpressionsLaden", "matrixExprList",
02216 "matrixExpr", "matrixExprStart", "matrixExprAttributes",
02217 "matrixExprAttributeList", "exprAttribute", 0
02218 };
02219 #endif
02220
02221 # ifdef YYPRINT
02222
02223
02224 static const yytype_uint16 yytoknum[] =
02225 {
02226 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
02227 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
02228 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
02229 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
02230 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
02231 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
02232 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
02233 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
02234 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
02235 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
02236 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
02237 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
02238 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
02239 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
02240 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
02241 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
02242 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
02243 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
02244 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
02245 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
02246 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
02247 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
02248 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
02249 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
02250 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
02251 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
02252 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
02253 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
02254 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
02255 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
02256 555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
02257 565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
02258 575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
02259 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
02260 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
02261 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
02262 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
02263 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
02264 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
02265 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
02266 655, 656, 657, 658, 659, 32, 9, 13, 10
02267 };
02268 # endif
02269
02270
02271 static const yytype_uint16 yyr1[] =
02272 {
02273 0, 409, 410, 411, 411, 412, 413, 413, 414, 414,
02274 415, 416, 417, 417, 418, 419, 420, 420, 421, 421,
02275 422, 422, 422, 422, 423, 424, 425, 426, 427, 427,
02276 428, 429, 430, 430, 431, 432, 433, 433, 434, 434,
02277 435, 436, 437, 437, 438, 439, 440, 440, 441, 441,
02278 441, 441, 441, 441, 441, 441, 441, 442, 443, 444,
02279 445, 445, 446, 446, 446, 447, 447, 448, 449, 450,
02280 451, 451, 452, 452, 452, 453, 453, 454, 455, 456,
02281 457, 457, 458, 458, 458, 459, 459, 460, 461, 461,
02282 462, 463, 464, 465, 465, 466, 466, 467, 467, 468,
02283 469, 470, 471, 472, 472, 473, 473, 473, 473, 474,
02284 475, 475, 476, 477, 478, 479, 479, 480, 480, 480,
02285 480, 480, 480, 481, 481, 482, 483, 484, 485, 485,
02286 486, 486, 486, 486, 486, 486, 486, 487, 487, 488,
02287 489, 490, 491, 491, 492, 492, 492, 492, 493, 493,
02288 494, 495, 496, 497, 497, 498, 498, 498, 499, 500,
02289 501, 502, 503, 503, 504, 505, 506, 507, 508, 509,
02290 510, 511, 512, 512, 513, 513, 513, 514, 515, 516,
02291 517, 518, 518, 519, 520, 521, 522, 523, 524, 524,
02292 525, 526, 526, 527, 528, 529, 529, 530, 531, 532,
02293 532, 533, 534, 535, 536, 536, 537, 538, 539, 540,
02294 540, 541, 541, 541, 541, 541, 541, 541, 541, 541,
02295 541, 541, 542, 542, 543, 543, 544, 545, 546, 546,
02296 547, 548, 549, 550, 550, 551, 552, 553, 554, 554,
02297 555, 555, 555, 555, 555, 555, 555, 555, 556, 556,
02298 557, 557, 558, 559, 560, 560, 561, 562, 563, 564,
02299 564, 565, 566, 567, 568, 568, 569, 569, 569, 569,
02300 569, 569, 569, 569, 569, 570, 570, 571, 571, 572,
02301 573, 573, 574, 574, 575, 575, 576, 577, 578, 579,
02302 579, 581, 580, 582, 582, 583, 583, 584, 585, 585,
02303 586, 586, 587, 587, 588, 589, 590, 590, 591, 591,
02304 592, 592, 594, 593, 595, 596, 596, 597, 597, 598,
02305 598, 599, 599, 600, 601, 602, 602, 603, 603, 604,
02306 604, 606, 605, 607, 608, 608, 609, 609, 610, 610,
02307 611, 611, 612, 613, 613, 614, 614, 615, 615, 617,
02308 616, 618, 619, 619, 621, 620, 622, 622, 623, 623,
02309 624, 624, 625, 626, 627, 628, 629, 630, 631, 632,
02310 633, 634, 635, 636, 637, 638, 639, 640, 641, 642,
02311 643, 644, 645, 646, 647, 648, 649, 650, 650, 651,
02312 652, 652, 653, 653, 653, 653, 654, 654, 655, 655,
02313 656, 657, 658, 659, 659, 660, 660, 661, 662, 663,
02314 663, 664, 664, 665, 666, 666, 667, 667, 668, 669,
02315 670, 670, 671, 672, 673, 673, 674, 674, 675, 676,
02316 677, 678, 679, 679, 680, 680, 680, 680, 680, 538,
02317 552, 566, 681, 681, 682, 683, 684, 685, 685, 686,
02318 687, 688, 688, 689, 689, 689, 689, 689, 689, 689,
02319 689, 689, 690, 690, 691, 691, 692, 692, 692, 692,
02320 692, 692, 692, 692, 693, 694, 695, 696, 696, 697,
02321 697, 698, 699, 699, 700, 701, 702, 702, 703, 704,
02322 705, 706, 707, 708, 708, 709, 710, 711, 712, 713,
02323 714, 714, 715, 716, 717, 718, 719, 720, 721, 721,
02324 722, 722, 723, 724, 724, 725, 726, 727, 727, 728,
02325 729, 730, 731, 732, 733, 734, 734, 735, 735, 736,
02326 737, 737, 738, 738, 739, 740, 740, 741, 742, 743,
02327 744, 744, 745, 746, 747, 748, 748, 749, 749, 750,
02328 750, 751, 752, 753, 753, 754, 755, 756, 756, 757,
02329 758, 759, 760, 761, 761, 762, 762, 763, 764, 764,
02330 765, 765, 766, 767, 767, 768, 769, 770, 770, 771,
02331 772, 773, 773, 774, 775, 776, 777, 778, 779, 779,
02332 780, 780, 781, 782, 782, 783, 784, 785, 785, 786,
02333 787, 788, 789, 790, 791, 792, 792, 793, 793, 794,
02334 795, 795, 796, 796, 797, 798, 798, 799, 800, 801,
02335 801, 802, 803, 804, 804, 805, 805, 805, 806, 807,
02336 808, 809, 809, 810, 811, 812, 813, 814, 815, 816,
02337 817, 818, 819, 819, 820, 821, 822, 823, 824, 825,
02338 826, 826, 827, 828, 829, 830, 830, 831, 832, 833,
02339 834, 834, 835, 835, 835, 835, 836, 836, 837, 838,
02340 839, 840, 841, 842, 843, 844, 845, 846, 847, 848,
02341 849, 850, 851, 852, 853, 854, 855, 856, 857, 858,
02342 859, 860, 861, 862, 862, 863, 864, 865, 865, 866,
02343 867, 868, 868, 869, 870, 871, 871, 872, 873, 874,
02344 874, 875, 876, 877, 877, 878, 879, 880, 880, 881,
02345 882, 883, 883, 884, 885, 886, 886, 887, 888, 889,
02346 889, 890, 891, 892, 892, 893, 894, 895, 896, 896,
02347 897, 897, 898, 898, 898, 898, 898, 898, 898, 898,
02348 898, 898, 898, 898, 898, 898, 898, 898, 898, 898,
02349 898, 898, 898, 898, 898, 898, 898, 898, 898, 900,
02350 899, 901, 901, 903, 902, 904, 904, 906, 905, 908,
02351 907, 910, 909, 912, 911, 914, 913, 916, 915, 918,
02352 917, 920, 919, 922, 921, 924, 923, 926, 925, 928,
02353 927, 929, 930, 931, 933, 932, 935, 934, 937, 936,
02354 939, 938, 941, 940, 942, 943, 944, 944, 945, 945,
02355 946, 946, 946, 948, 947, 950, 949, 951, 951, 952,
02356 951, 953, 953, 954, 954, 955, 956, 958, 957, 959,
02357 959, 961, 960, 962, 962, 964, 963, 965, 965, 967,
02358 966, 968, 968, 970, 969, 971, 971, 972, 972, 972,
02359 972, 972, 972, 972, 972, 972, 972, 972, 972, 972,
02360 972, 972, 972, 972, 972, 972, 973, 974, 975, 975,
02361 639, 976, 977, 978, 978, 979, 980, 981, 982, 982,
02362 983, 984, 985, 986, 986, 987, 988, 989, 990, 991,
02363 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001,
02364 1002, 1002, 1003, 1004, 1005, 1006, 1006, 1007, 1008, 1009,
02365 1010, 1011, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
02366 1019, 1020, 1021, 1022, 1023, 1025, 1024, 1026, 1026, 1027,
02367 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1036,
02368 1037, 1038, 1039, 1040, 1040, 1041, 1042, 1043, 1043, 1044,
02369 1045, 1046, 1047, 1047, 1048, 1048
02370 };
02371
02372
02373 static const yytype_uint8 yyr2[] =
02374 {
02375 0, 2, 8, 1, 1, 1, 1, 0, 0, 4,
02376 1, 5, 0, 2, 3, 1, 1, 2, 0, 2,
02377 1, 1, 1, 1, 4, 4, 4, 4, 0, 3,
02378 1, 1, 1, 1, 1, 3, 0, 2, 0, 3,
02379 1, 1, 1, 1, 1, 3, 0, 2, 1, 1,
02380 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
02381 0, 2, 1, 1, 1, 1, 2, 3, 1, 1,
02382 0, 2, 1, 1, 1, 1, 2, 3, 1, 1,
02383 0, 2, 1, 1, 1, 1, 3, 1, 0, 2,
02384 3, 1, 1, 0, 2, 1, 1, 1, 2, 1,
02385 3, 1, 1, 0, 2, 1, 1, 1, 1, 4,
02386 1, 2, 3, 1, 1, 0, 2, 1, 1, 1,
02387 1, 1, 1, 1, 2, 3, 1, 1, 0, 2,
02388 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
02389 1, 1, 0, 2, 1, 1, 1, 1, 1, 2,
02390 3, 1, 1, 0, 2, 1, 1, 1, 3, 3,
02391 1, 1, 1, 1, 1, 3, 1, 1, 1, 3,
02392 1, 1, 0, 2, 1, 1, 1, 3, 3, 1,
02393 1, 1, 1, 1, 3, 1, 1, 1, 0, 2,
02394 1, 1, 1, 1, 6, 0, 3, 1, 1, 1,
02395 1, 1, 3, 1, 0, 2, 3, 1, 1, 0,
02396 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
02397 1, 1, 1, 2, 0, 3, 1, 1, 1, 1,
02398 1, 3, 1, 0, 2, 3, 1, 1, 0, 2,
02399 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
02400 0, 3, 1, 1, 1, 1, 1, 3, 1, 0,
02401 2, 3, 1, 1, 0, 2, 1, 1, 1, 1,
02402 1, 1, 1, 1, 1, 1, 2, 0, 2, 1,
02403 1, 1, 1, 2, 3, 3, 4, 1, 5, 1,
02404 2, 0, 4, 0, 3, 1, 3, 3, 0, 3,
02405 0, 2, 1, 1, 4, 4, 1, 3, 1, 2,
02406 1, 2, 0, 4, 4, 1, 2, 0, 3, 0,
02407 2, 1, 1, 4, 4, 1, 3, 1, 2, 1,
02408 2, 0, 4, 4, 1, 2, 0, 3, 0, 2,
02409 1, 1, 4, 1, 3, 1, 2, 1, 2, 0,
02410 4, 4, 1, 2, 0, 4, 1, 2, 0, 2,
02411 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
02412 4, 4, 4, 4, 4, 3, 4, 4, 4, 4,
02413 4, 4, 4, 4, 4, 4, 4, 3, 3, 2,
02414 0, 2, 1, 1, 1, 1, 1, 1, 0, 2,
02415 3, 1, 1, 0, 2, 1, 1, 3, 3, 1,
02416 1, 2, 1, 3, 1, 1, 0, 2, 3, 1,
02417 0, 1, 3, 3, 1, 1, 2, 1, 3, 3,
02418 1, 1, 0, 2, 1, 1, 1, 1, 1, 1,
02419 1, 1, 1, 1, 1, 3, 2, 0, 3, 1,
02420 1, 0, 2, 1, 1, 1, 1, 1, 1, 1,
02421 1, 1, 2, 1, 0, 2, 1, 1, 1, 1,
02422 1, 1, 1, 1, 4, 1, 1, 0, 2, 1,
02423 1, 3, 0, 2, 2, 1, 1, 1, 1, 3,
02424 1, 2, 1, 1, 1, 1, 3, 1, 2, 1,
02425 1, 1, 1, 3, 1, 4, 1, 1, 0, 2,
02426 1, 1, 3, 0, 2, 2, 1, 1, 1, 1,
02427 3, 1, 4, 1, 1, 0, 2, 1, 1, 3,
02428 0, 2, 0, 2, 1, 1, 1, 1, 3, 1,
02429 0, 2, 3, 1, 1, 0, 2, 1, 1, 1,
02430 1, 1, 3, 0, 2, 3, 1, 0, 1, 3,
02431 4, 1, 1, 0, 2, 1, 1, 3, 0, 2,
02432 0, 2, 1, 1, 1, 1, 3, 0, 2, 2,
02433 1, 1, 1, 1, 3, 4, 1, 1, 0, 2,
02434 1, 1, 3, 0, 2, 2, 1, 1, 1, 1,
02435 3, 1, 4, 1, 1, 0, 2, 1, 1, 3,
02436 0, 2, 0, 2, 1, 1, 1, 1, 3, 0,
02437 2, 3, 1, 0, 2, 1, 1, 1, 3, 5,
02438 1, 0, 1, 1, 3, 1, 1, 5, 1, 3,
02439 1, 1, 1, 1, 1, 3, 1, 3, 1, 1,
02440 1, 1, 1, 3, 1, 0, 2, 3, 1, 1,
02441 0, 2, 1, 1, 1, 1, 1, 1, 1, 3,
02442 2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
02443 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
02444 4, 4, 4, 1, 1, 1, 3, 1, 1, 1,
02445 3, 1, 1, 1, 3, 1, 1, 1, 3, 1,
02446 1, 1, 3, 1, 1, 1, 3, 1, 1, 1,
02447 3, 1, 1, 1, 3, 1, 1, 1, 3, 0,
02448 4, 1, 5, 0, 2, 5, 1, 1, 0, 2,
02449 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
02450 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
02451 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
02452 3, 1, 2, 0, 3, 1, 2, 0, 5, 0,
02453 5, 0, 5, 0, 4, 0, 5, 0, 5, 0,
02454 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
02455 4, 3, 1, 1, 0, 4, 0, 6, 0, 4,
02456 0, 4, 0, 4, 3, 1, 1, 2, 0, 2,
02457 1, 1, 1, 0, 4, 0, 4, 1, 2, 0,
02458 4, 0, 2, 1, 1, 4, 4, 0, 4, 0,
02459 2, 0, 4, 0, 2, 0, 4, 0, 2, 0,
02460 4, 0, 2, 0, 4, 0, 2, 1, 1, 1,
02461 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
02462 1, 1, 1, 1, 1, 1, 3, 1, 1, 2,
02463 4, 3, 1, 1, 2, 4, 3, 1, 1, 2,
02464 4, 3, 1, 1, 2, 4, 2, 1, 2, 2,
02465 1, 3, 2, 1, 2, 2, 1, 2, 4, 1,
02466 0, 1, 2, 4, 1, 0, 1, 2, 3, 2,
02467 1, 1, 2, 2, 1, 3, 2, 1, 2, 2,
02468 1, 3, 2, 1, 3, 0, 4, 0, 2, 2,
02469 1, 3, 2, 1, 6, 2, 1, 2, 0, 3,
02470 1, 1, 4, 1, 1, 1, 3, 0, 2, 5,
02471 1, 1, 0, 2, 1, 1
02472 };
02473
02474
02475
02476
02477 static const yytype_uint16 yydefact[] =
02478 {
02479 8, 10, 0, 729, 0, 1, 731, 28, 0, 0,
02480 12, 30, 38, 0, 0, 733, 0, 0, 40, 188,
02481 0, 0, 0, 31, 0, 0, 0, 9, 15, 13,
02482 18, 190, 277, 0, 0, 0, 41, 0, 34, 36,
02483 29, 32, 33, 0, 730, 736, 734, 738, 0, 0,
02484 279, 0, 0, 193, 195, 189, 191, 192, 0, 44,
02485 46, 39, 42, 43, 0, 0, 0, 0, 737, 11,
02486 16, 0, 0, 0, 0, 0, 14, 19, 20, 21,
02487 22, 23, 4, 3, 7, 282, 354, 278, 280, 281,
02488 197, 224, 0, 0, 0, 365, 35, 430, 37, 432,
02489 732, 0, 707, 0, 0, 740, 741, 705, 706, 739,
02490 17, 0, 0, 0, 390, 6, 2, 5, 283, 287,
02491 0, 0, 0, 0, 226, 250, 0, 0, 0, 198,
02492 366, 45, 58, 68, 78, 101, 113, 126, 140, 151,
02493 170, 47, 48, 60, 49, 70, 50, 80, 51, 103,
02494 52, 115, 53, 128, 54, 142, 55, 153, 56, 172,
02495 0, 431, 787, 779, 781, 785, 789, 791, 837, 853,
02496 799, 783, 806, 793, 795, 797, 825, 802, 804, 845,
02497 841, 849, 769, 773, 777, 815, 808, 810, 812, 0,
02498 763, 764, 744, 745, 747, 748, 749, 750, 752, 753,
02499 754, 756, 755, 757, 759, 0, 760, 758, 766, 767,
02500 768, 742, 818, 743, 746, 765, 761, 762, 751, 0,
02501 0, 0, 0, 0, 0, 0, 284, 0, 291, 285,
02502 358, 252, 948, 0, 0, 0, 227, 0, 201, 204,
02503 196, 199, 200, 0, 59, 0, 69, 0, 79, 0,
02504 102, 0, 114, 0, 127, 0, 141, 0, 152, 0,
02505 171, 444, 447, 429, 442, 443, 699, 0, 715, 0,
02506 711, 0, 0, 0, 433, 436, 435, 437, 697, 698,
02507 434, 709, 710, 438, 713, 714, 0, 0, 0, 0,
02508 0, 0, 839, 855, 0, 0, 0, 0, 0, 0,
02509 831, 0, 847, 843, 851, 0, 0, 0, 0, 0,
02510 0, 735, 0, 0, 708, 0, 24, 25, 27, 26,
02511 390, 390, 392, 393, 394, 395, 391, 0, 291, 289,
02512 0, 0, 950, 0, 0, 0, 0, 253, 0, 230,
02513 233, 225, 228, 229, 0, 0, 65, 0, 57, 61,
02514 63, 62, 64, 75, 0, 67, 71, 73, 72, 74,
02515 85, 88, 77, 81, 83, 82, 84, 110, 0, 100,
02516 0, 104, 107, 106, 105, 108, 123, 0, 112, 0,
02517 0, 0, 116, 121, 120, 122, 118, 117, 119, 137,
02518 0, 125, 0, 0, 129, 134, 133, 135, 136, 131,
02519 130, 132, 148, 0, 139, 0, 143, 147, 145, 144,
02520 146, 0, 150, 154, 156, 155, 157, 0, 169, 173,
02521 175, 174, 176, 449, 0, 464, 451, 0, 0, 0,
02522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
02523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
02524 0, 771, 0, 770, 775, 0, 774, 0, 882, 887,
02525 892, 897, 900, 909, 914, 920, 924, 927, 930, 933,
02526 935, 940, 943, 946, 877, 903, 906, 0, 857, 0,
02527 858, 0, 859, 0, 860, 0, 861, 0, 862, 0,
02528 875, 0, 863, 0, 864, 910, 865, 915, 866, 0,
02529 867, 0, 868, 0, 869, 0, 870, 0, 871, 872,
02530 0, 873, 0, 874, 0, 0, 0, 803, 801, 816,
02531 0, 719, 0, 0, 820, 821, 717, 718, 814, 819,
02532 822, 687, 387, 388, 0, 286, 290, 293, 356, 0,
02533 0, 0, 355, 359, 360, 361, 194, 0, 0, 951,
02534 0, 256, 259, 251, 254, 255, 0, 0, 367, 203,
02535 207, 202, 205, 209, 66, 76, 0, 87, 111, 0,
02536 124, 390, 0, 0, 138, 0, 0, 149, 0, 160,
02537 0, 0, 179, 0, 0, 445, 446, 0, 450, 700,
02538 716, 712, 0, 0, 0, 0, 0, 0, 790, 792,
02539 838, 840, 854, 856, 800, 784, 0, 794, 796, 798,
02540 827, 0, 0, 0, 826, 832, 833, 834, 805, 846,
02541 848, 842, 844, 850, 852, 772, 776, 0, 937, 809,
02542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
02543 896, 0, 899, 0, 902, 0, 905, 0, 0, 911,
02544 0, 916, 921, 0, 919, 0, 923, 0, 926, 0,
02545 929, 0, 932, 0, 939, 0, 942, 0, 945, 811,
02546 813, 817, 0, 823, 0, 0, 0, 357, 390, 390,
02547 0, 955, 957, 949, 953, 954, 0, 0, 368, 232,
02548 236, 231, 234, 238, 0, 208, 99, 86, 91, 89,
02549 93, 0, 0, 0, 0, 0, 0, 375, 168, 158,
02550 0, 0, 161, 187, 177, 0, 180, 635, 475, 506,
02551 523, 561, 603, 586, 630, 465, 466, 477, 467, 508,
02552 468, 525, 469, 563, 470, 588, 471, 605, 472, 631,
02553 473, 0, 463, 0, 448, 695, 0, 0, 0, 0,
02554 0, 0, 0, 0, 0, 452, 453, 456, 457, 458,
02555 459, 461, 454, 455, 460, 693, 694, 672, 674, 788,
02556 780, 782, 786, 0, 828, 829, 0, 390, 778, 0,
02557 0, 0, 878, 0, 876, 0, 883, 0, 881, 0,
02558 888, 0, 886, 0, 893, 0, 891, 898, 0, 904,
02559 907, 0, 0, 0, 922, 0, 928, 0, 0, 0,
02560 0, 947, 720, 0, 288, 0, 295, 298, 292, 0,
02561 0, 0, 0, 369, 258, 262, 257, 260, 264, 0,
02562 237, 222, 0, 206, 0, 0, 0, 0, 0, 0,
02563 727, 0, 0, 210, 215, 217, 213, 214, 216, 218,
02564 212, 211, 221, 219, 220, 725, 726, 0, 92, 109,
02565 370, 371, 372, 373, 374, 0, 164, 398, 159, 162,
02566 163, 183, 398, 178, 181, 182, 0, 476, 0, 507,
02567 0, 524, 0, 562, 0, 587, 0, 604, 0, 632,
02568 0, 0, 636, 462, 390, 0, 0, 0, 0, 0,
02569 0, 0, 390, 807, 0, 0, 0, 936, 938, 0,
02570 0, 879, 0, 884, 0, 889, 0, 894, 901, 918,
02571 0, 908, 0, 913, 925, 931, 934, 941, 0, 824,
02572 294, 300, 0, 317, 363, 364, 952, 956, 960, 958,
02573 962, 0, 263, 248, 0, 235, 0, 0, 0, 239,
02574 245, 242, 243, 244, 241, 240, 247, 246, 223, 0,
02575 0, 0, 0, 0, 0, 0, 0, 97, 0, 90,
02576 94, 96, 95, 0, 0, 0, 166, 396, 397, 0,
02577 185, 0, 703, 0, 0, 478, 479, 480, 701, 702,
02578 0, 509, 510, 511, 0, 526, 527, 528, 0, 564,
02579 565, 566, 0, 589, 590, 591, 0, 606, 607, 608,
02580 0, 0, 0, 634, 696, 0, 0, 0, 0, 0,
02581 0, 0, 0, 0, 830, 836, 835, 376, 880, 885,
02582 890, 895, 912, 917, 0, 0, 296, 319, 336, 0,
02583 961, 275, 0, 261, 0, 265, 270, 272, 268, 269,
02584 271, 273, 267, 266, 274, 249, 0, 0, 0, 0,
02585 0, 0, 0, 0, 0, 728, 0, 98, 673, 0,
02586 0, 167, 165, 401, 399, 403, 186, 184, 485, 474,
02587 482, 0, 0, 0, 513, 505, 530, 522, 568, 560,
02588 593, 585, 610, 602, 0, 0, 640, 0, 0, 389,
02589 678, 691, 692, 679, 680, 681, 682, 690, 0, 308,
02590 312, 0, 0, 301, 302, 303, 299, 306, 0, 338,
02591 297, 0, 964, 965, 963, 276, 0, 0, 0, 0,
02592 377, 384, 378, 385, 380, 381, 689, 0, 412, 0,
02593 408, 409, 410, 0, 402, 492, 0, 0, 0, 488,
02594 398, 484, 486, 487, 704, 0, 0, 0, 532, 0,
02595 570, 0, 0, 0, 612, 0, 633, 629, 671, 648,
02596 655, 0, 0, 641, 944, 309, 312, 310, 0, 0,
02597 0, 327, 331, 0, 0, 320, 321, 322, 318, 325,
02598 0, 0, 0, 382, 386, 379, 0, 0, 411, 0,
02599 400, 0, 404, 406, 405, 481, 499, 483, 0, 495,
02600 398, 491, 493, 494, 490, 0, 675, 516, 514, 0,
02601 512, 534, 531, 0, 529, 572, 569, 0, 567, 596,
02602 594, 0, 592, 614, 611, 0, 609, 0, 0, 649,
02603 644, 398, 639, 642, 643, 307, 311, 0, 0, 0,
02604 328, 331, 329, 0, 0, 0, 345, 349, 0, 0,
02605 339, 340, 337, 343, 341, 959, 383, 677, 413, 0,
02606 0, 502, 416, 498, 500, 501, 497, 0, 489, 519,
02607 398, 515, 517, 518, 537, 540, 533, 535, 536, 575,
02608 577, 571, 573, 574, 599, 398, 595, 597, 598, 617,
02609 619, 613, 615, 616, 638, 658, 637, 656, 660, 652,
02610 398, 647, 650, 651, 646, 0, 0, 0, 305, 304,
02611 326, 330, 0, 0, 0, 346, 349, 347, 0, 0,
02612 0, 407, 0, 0, 504, 414, 415, 0, 496, 521,
02613 0, 0, 539, 0, 601, 0, 0, 0, 659, 654,
02614 0, 645, 0, 315, 0, 313, 0, 0, 324, 323,
02615 344, 348, 0, 0, 0, 688, 0, 419, 417, 420,
02616 503, 520, 538, 543, 541, 545, 580, 576, 578, 0,
02617 600, 622, 618, 620, 623, 668, 447, 657, 666, 667,
02618 390, 390, 661, 662, 663, 664, 665, 653, 0, 316,
02619 0, 334, 0, 332, 0, 0, 362, 342, 427, 0,
02620 423, 424, 425, 0, 421, 0, 544, 583, 0, 579,
02621 581, 582, 0, 464, 0, 0, 0, 314, 0, 335,
02622 0, 352, 0, 350, 0, 426, 390, 418, 551, 553,
02623 542, 549, 550, 0, 0, 546, 547, 548, 0, 0,
02624 723, 0, 624, 621, 627, 626, 625, 721, 722, 670,
02625 669, 390, 390, 333, 0, 353, 428, 0, 0, 0,
02626 390, 584, 0, 0, 683, 684, 351, 422, 552, 556,
02627 554, 557, 0, 0, 628, 724, 0, 0, 558, 676,
02628 686, 390, 0, 555, 0, 0, 685, 559
02629 };
02630
02631
02632 static const yytype_int16 yydefgoto[] =
02633 {
02634 -1, 2, 84, 116, 117, 3, 4, 10, 17, 29,
02635 30, 76, 49, 77, 78, 79, 80, 81, 12, 13,
02636 22, 40, 41, 42, 65, 19, 20, 35, 61, 62,
02637 63, 94, 141, 142, 143, 243, 244, 349, 348, 144,
02638 145, 245, 246, 356, 355, 146, 147, 247, 248, 363,
02639 362, 566, 567, 699, 700, 857, 858, 970, 969, 697,
02640 148, 149, 249, 250, 371, 372, 369, 150, 151, 251,
02641 252, 382, 378, 152, 153, 253, 254, 394, 391, 154,
02642 155, 255, 256, 406, 404, 156, 157, 257, 258, 413,
02643 412, 580, 581, 711, 868, 869, 870, 975, 1072, 709,
02644 158, 159, 259, 260, 419, 418, 583, 584, 715, 873,
02645 874, 875, 979, 1077, 714, 32, 33, 55, 56, 57,
02646 91, 92, 128, 240, 241, 242, 561, 345, 562, 563,
02647 694, 695, 843, 833, 125, 126, 235, 341, 342, 343,
02648 691, 557, 692, 693, 829, 830, 949, 945, 232, 233,
02649 336, 553, 554, 555, 826, 687, 827, 828, 941, 942,
02650 1045, 1043, 51, 52, 87, 88, 89, 120, 121, 228,
02651 328, 329, 330, 676, 818, 932, 933, 1035, 1113, 1114,
02652 1115, 1116, 1117, 1176, 1177, 1178, 1317, 1355, 1038, 1118,
02653 1185, 1186, 1187, 1188, 1189, 1251, 1252, 1253, 1357, 1403,
02654 1120, 1190, 1260, 1261, 1262, 1263, 1326, 1327, 1328, 1405,
02655 1433, 122, 123, 542, 331, 543, 1264, 544, 545, 23,
02656 36, 129, 236, 337, 383, 384, 385, 397, 398, 407,
02657 632, 844, 845, 950, 846, 847, 952, 1049, 848, 849,
02658 953, 224, 1014, 225, 326, 976, 977, 1074, 1075, 1143,
02659 1144, 1202, 1200, 978, 1140, 1141, 1142, 1334, 1335, 1368,
02660 1369, 1413, 1437, 1336, 1410, 1411, 1412, 98, 99, 160,
02661 161, 274, 263, 264, 265, 424, 425, 426, 587, 588,
02662 755, 744, 586, 725, 726, 727, 876, 877, 985, 1079,
02663 1146, 1080, 1081, 1151, 1152, 1153, 1215, 1147, 1148, 1211,
02664 1212, 1213, 1277, 1207, 1208, 1273, 1274, 1275, 1337, 728,
02665 729, 878, 879, 991, 1085, 1157, 1218, 1219, 1281, 1282,
02666 1283, 1340, 730, 731, 880, 881, 995, 1087, 1159, 1222,
02667 1223, 1286, 1287, 1288, 1341, 1342, 1374, 1375, 1415, 1416,
02668 1445, 1440, 1441, 1442, 1468, 1480, 1481, 1487, 1493, 732,
02669 733, 882, 883, 999, 1089, 1161, 1226, 1227, 1291, 1292,
02670 1293, 1343, 1378, 1379, 1419, 1420, 1421, 734, 735, 884,
02671 885, 1003, 1091, 1163, 1230, 1231, 1296, 1297, 1298, 1345,
02672 736, 737, 886, 887, 1007, 1093, 1165, 1234, 1235, 1301,
02673 1302, 1303, 1346, 1383, 1384, 1422, 1452, 1453, 738, 739,
02674 888, 1167, 740, 741, 891, 1013, 1306, 1097, 1098, 1172,
02675 1242, 1243, 1244, 1315, 1170, 1171, 1238, 1311, 1312, 1313,
02676 1350, 1237, 1307, 1308, 1347, 1348, 1392, 1387, 1388, 1389,
02677 1424, 892, 275, 712, 276, 986, 1446, 1070, 756, 757,
02678 758, 759, 760, 1393, 1394, 1488, 1447, 105, 1203, 852,
02679 761, 762, 763, 764, 765, 766, 277, 278, 279, 987,
02680 988, 989, 106, 107, 108, 280, 281, 282, 283, 284,
02681 285, 525, 526, 527, 1456, 1457, 1458, 854, 855, 856,
02682 7, 8, 15, 25, 46, 47, 67, 68, 109, 189,
02683 190, 305, 453, 191, 306, 456, 192, 307, 193, 287,
02684 194, 288, 195, 295, 196, 289, 197, 286, 198, 290,
02685 199, 291, 200, 297, 201, 298, 202, 299, 203, 294,
02686 204, 205, 518, 206, 301, 207, 296, 208, 308, 209,
02687 309, 210, 310, 211, 212, 528, 313, 529, 530, 813,
02688 213, 300, 614, 904, 446, 615, 616, 617, 214, 292,
02689 438, 215, 303, 449, 216, 302, 448, 217, 304, 450,
02690 218, 293, 439, 477, 478, 479, 784, 480, 481, 788,
02691 634, 482, 483, 792, 636, 484, 485, 796, 638, 486,
02692 487, 640, 488, 489, 642, 490, 491, 644, 492, 493,
02693 646, 494, 495, 648, 921, 496, 497, 650, 923, 649,
02694 498, 499, 654, 500, 501, 656, 502, 503, 658, 504,
02695 505, 660, 506, 507, 662, 508, 628, 779, 509, 510,
02696 664, 511, 512, 666, 513, 514, 668, 333, 334, 548,
02697 549, 683, 684, 685, 822, 939, 940, 1039, 1040, 1124
02698 };
02699
02700
02701
02702 #define YYPACT_NINF -1315
02703 static const yytype_int16 yypact[] =
02704 {
02705 14, -1315, 97, -189, 104, -1315, -1315, -78, -166, 119,
02706 -1315, -1315, 96, -24, 138, -1315, 143, 60, -1315, -89,
02707 142, 155, 126, -1315, 161, -177, 162, -1315, -1315, -1315,
02708 -1315, -1315, 99, 195, 172, 202, -1315, 177, -1315, -1315,
02709 -1315, -1315, -1315, 199, -1315, -1315, -1315, -1315, 167, 41,
02710 -1315, 182, 221, -1315, -58, -1315, -1315, -1315, 197, -1315,
02711 -1315, -1315, -1315, -1315, 212, 48, 224, 230, -50, -1315,
02712 -1315, 213, 258, 262, 268, 270, -1315, -1315, -1315, -1315,
02713 -1315, -1315, -1315, -1315, 223, -1315, 220, -1315, -1315, -1315,
02714 -1315, 33, 101, 282, 301, -1315, -1315, -1315, -1315, -1315,
02715 -1315, 590, -1315, 330, 338, -1315, -1315, -1315, -1315, -1315,
02716 -1315, 344, 348, 373, -1315, -1315, -1315, -1315, -1315, -1315,
02717 290, 353, 300, 305, -1315, 132, 209, 414, 293, -1315,
02718 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02719 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02720 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02721 316, -26, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02722 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02723 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 94,
02724 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02725 -1315, -1315, -1315, -1315, -1315, 590, -1315, -1315, -1315, -1315,
02726 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 419,
02727 452, 453, 467, 490, 495, 37, -1315, 497, -1315, -1315,
02728 -1315, -1315, 139, 328, 501, 319, -1315, 507, -1315, -1315,
02729 -1315, -1315, -1315, 321, -16, 329, -16, 331, -16, 334,
02730 50, 361, 259, 363, 254, 365, 22, 500, -16, 504,
02731 -16, -1315, 311, -1315, -1315, -1315, -1315, 535, -1315, 537,
02732 -1315, 539, 536, 538, -1315, -1315, -1315, -1315, -1315, -1315,
02733 -1315, -1315, -1315, -1315, -1315, -1315, 590, 590, 590, 590,
02734 590, 590, -1315, -1315, 590, 590, 590, 590, 590, 590,
02735 -1315, 590, -1315, -1315, -1315, 371, 382, 590, 135, 135,
02736 135, -1315, 204, 35, -1315, 544, -1315, -1315, -1315, -1315,
02737 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 548, 477, -1315,
02738 492, 90, -1315, 320, 249, 552, 384, -1315, 558, -1315,
02739 -1315, -1315, -1315, -1315, 562, 152, -1315, 517, -1315, -1315,
02740 -1315, -1315, -1315, -1315, 523, -1315, -1315, -1315, -1315, -1315,
02741 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 524, -1315,
02742 570, -1315, -1315, -1315, -1315, -1315, -1315, 525, -1315, 572,
02743 573, 575, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02744 526, -1315, 576, 578, -1315, -1315, -1315, -1315, -1315, -1315,
02745 -1315, -1315, -1315, 527, -1315, 584, -1315, -1315, -1315, -1315,
02746 -1315, 518, -1315, -1315, -1315, -1315, -1315, 515, -1315, -1315,
02747 -1315, -1315, -1315, -1315, 387, -1315, -1315, 585, 587, 588,
02748 592, 593, 590, 590, 590, 590, 277, 274, 299, 206,
02749 271, 272, 590, 264, 269, 265, 43, 256, 318, 411,
02750 450, -1315, 252, -1315, -1315, 253, -1315, 590, -1315, -1315,
02751 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02752 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 246, -1315, 19,
02753 -1315, 418, -1315, 420, -1315, 422, -1315, 135, -1315, 135,
02754 -1315, 590, -1315, 135, -1315, 217, -1315, 217, -1315, 388,
02755 -1315, 135, -1315, 135, -1315, 135, -1315, 135, -1315, -1315,
02756 590, -1315, 590, -1315, 135, 257, 261, -1315, -1315, -1315,
02757 263, -1315, 628, 667, -1315, -1315, -1315, -1315, -1315, -1315,
02758 -1315, -1315, -159, -159, 664, -1315, -1315, 542, -1315, 595,
02759 668, 672, -1315, -1315, -1315, -1315, -1315, 674, 392, -1315,
02760 678, -1315, -1315, -1315, -1315, -1315, 679, 156, -1315, -1315,
02761 -1315, -1315, -1315, -1315, -1315, -1315, 633, 618, -1315, 683,
02762 -1315, -1315, 684, 685, -1315, 686, 687, -1315, 688, -1315,
02763 631, 577, -1315, 630, 577, -1315, 89, 397, 136, -1315,
02764 -1315, -1315, 689, 690, 385, 386, 380, 381, -1315, -1315,
02765 -1315, -1315, -1315, -1315, -1315, -1315, 590, -1315, -1315, -1315,
02766 -1315, 505, 694, 697, -1315, -1315, -1315, -1315, -1315, -1315,
02767 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 350, -1315, -1315,
02768 700, 703, 399, 704, 401, 705, 403, 706, 405, 345,
02769 -1315, 135, -1315, 322, -1315, 317, -1315, 713, 707, -1315,
02770 708, -1315, -1315, 343, -1315, 135, -1315, 340, -1315, 135,
02771 -1315, 135, -1315, 135, -1315, 590, -1315, 333, -1315, -1315,
02772 -1315, -1315, 717, -1315, 718, 730, 408, -1315, -1315, -1315,
02773 729, -1315, -1315, -1315, -1315, -1315, 731, 171, -1315, -1315,
02774 -1315, -1315, -1315, -1315, 423, 42, -1315, -1315, -1315, -1315,
02775 -1315, 733, 735, 737, 739, 741, 743, -1315, -1315, -1315,
02776 745, 425, -1315, -1315, -1315, 427, -1315, -1315, -1315, -1315,
02777 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02778 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 303,
02779 -1315, 594, -1315, 532, -1315, -1315, 752, 749, 753, 772,
02780 774, 776, 778, 780, 782, -1315, -1315, -1315, -1315, -1315,
02781 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02782 -1315, -1315, -1315, 456, -1315, -1315, 788, -1315, -1315, -114,
02783 790, 792, -1315, 404, -1315, 796, -1315, 560, -1315, 802,
02784 -1315, 564, -1315, 804, -1315, 565, -1315, -1315, 449, -1315,
02785 -1315, 808, 135, 135, -1315, 432, -1315, 439, 441, 435,
02786 590, -1315, -1315, 821, -1315, 823, -1315, 568, -1315, 827,
02787 829, 831, -178, -1315, -1315, -1315, -1315, -1315, -1315, 438,
02788 87, -1315, 597, -1315, 833, 837, 839, 843, 845, 847,
02789 -1315, 854, 851, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02790 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 440, -54, -1315,
02791 -1315, -1315, -1315, -1315, -1315, 855, -1315, 747, -1315, -1315,
02792 -1315, -1315, 747, -1315, -1315, -1315, 852, -40, 860, -40,
02793 862, -40, 863, -40, 864, -40, 865, -40, 866, -1315,
02794 857, 867, -1315, -1315, -1315, 873, 874, 875, 876, 877,
02795 878, 879, -1315, -1315, 543, 880, 881, -1315, -1315, 882,
02796 883, -1315, 884, -1315, 885, -1315, 886, -1315, -1315, -1315,
02797 512, -1315, 519, -1315, -1315, -1315, -1315, -1315, 590, -1315,
02798 -1315, -1315, 815, 640, -1315, -1315, -1315, -1315, -1315, -1315,
02799 -1315, 442, 170, -1315, 648, -1315, 891, 892, 893, -1315,
02800 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 896,
02801 898, 900, 902, 904, 906, 908, 912, -1315, 849, -1315,
02802 -1315, -1315, -1315, 914, 716, 853, -1315, 816, -1315, 859,
02803 -1315, 699, -1315, 929, 928, -1315, -1315, -1315, -1315, -1315,
02804 699, -1315, -1315, -1315, 699, -1315, -1315, -1315, 699, -1315,
02805 -1315, -1315, 699, -1315, -1315, -1315, 699, -1315, -1315, -1315,
02806 135, 932, 748, -1315, -1315, 23, 934, 936, 938, 940,
02807 942, 944, 946, 948, -1315, -1315, -1315, -1315, -1315, -1315,
02808 -1315, -1315, -1315, -1315, 135, 39, -1315, -1315, 701, 947,
02809 -50, -1315, 709, -1315, 952, -1315, -1315, -1315, -1315, -1315,
02810 -1315, -1315, -1315, -1315, -1315, -1315, 955, 958, 959, 960,
02811 961, 962, 963, 964, 965, -1315, 966, -1315, -1315, 967,
02812 444, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02813 734, 446, 968, 971, 734, -1315, 734, -1315, 734, -1315,
02814 734, -1315, 734, -1315, 726, 970, -1315, 727, 577, -1315,
02815 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 589, -1315,
02816 714, 974, 975, -1315, -1315, -1315, -1315, -1315, 51, -1315,
02817 -1315, 135, -1315, -1315, -1315, -1315, 973, 976, 977, 978,
02818 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 981, -1315, 44,
02819 -1315, -1315, -1315, 979, 267, -1315, 770, 754, 455, -1315,
02820 747, -1315, -1315, -1315, -1315, 983, 757, 773, 759, 775,
02821 760, 777, 761, 771, 763, 779, -1315, -1315, -1315, -1315,
02822 -1315, 577, 457, -1315, -1315, -1315, 736, -1315, 740, 994,
02823 998, -1315, 750, 999, 1001, -1315, -1315, -1315, -1315, -1315,
02824 53, 695, 1002, -1315, -1315, -1315, 1003, 894, -1315, 1006,
02825 -1315, 1005, -1315, -1315, -1315, -1315, -1315, -1315, 459, -1315,
02826 747, -1315, -1315, -1315, -1315, 784, -1315, -1315, -1315, 461,
02827 -1315, -1315, -1315, 463, -1315, -1315, -1315, 468, -1315, -1315,
02828 -1315, 470, -1315, -1315, -1315, 472, -1315, 276, 476, -1315,
02829 -1315, 747, -1315, -1315, -1315, -1315, -1315, 819, 1009, 1010,
02830 -1315, 762, -1315, 764, 1015, 1016, -1315, 765, 1017, 1018,
02831 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 910,
02832 1022, -1315, 909, -1315, -1315, -1315, -1315, 797, -1315, -1315,
02833 747, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02834 -1315, -1315, -1315, -1315, -1315, 747, -1315, -1315, -1315, -1315,
02835 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02836 747, -1315, -1315, -1315, -1315, 812, 1024, 478, -1315, -1315,
02837 -1315, -1315, 835, 1025, 1026, -1315, 781, -1315, 783, 1029,
02838 1030, -1315, 1031, 716, -1315, 925, -1315, 805, -1315, -1315,
02839 809, 810, 935, -75, -1315, 813, -57, 480, -35, -1315,
02840 826, -1315, 1038, -1315, 786, -1315, 1040, 482, -1315, -1315,
02841 -1315, -1315, 856, 1044, 1045, -1315, 484, -1315, -1315, 858,
02842 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 486,
02843 -1315, -1315, -1315, -1315, -1315, -1315, 311, -1315, -1315, -1315,
02844 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 1046, -1315,
02845 1050, -1315, 801, -1315, 1051, 491, -1315, -1315, -1315, 66,
02846 -1315, -1315, -1315, 1047, -1315, 566, -105, -1315, 590, -1315,
02847 -1315, -1315, 28, -1315, 850, 1055, 1056, -1315, 1057, -1315,
02848 1058, -1315, 803, -1315, 945, -1315, -1315, -1315, -1315, -1315,
02849 -1315, -1315, -1315, 1059, 1060, -1315, -1315, -1315, 956, 1064,
02850 -1315, 1070, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 89,
02851 -1315, -1315, -1315, -1315, 1066, -1315, -1315, 969, -38, 1069,
02852 -1315, -1315, 972, 1068, -1315, -1315, -1315, -1315, -1315, -1315,
02853 -1315, 887, 1071, 1072, -1315, -1315, 1073, 1067, -1315, -1315,
02854 -1315, -1315, 1077, -1315, 1076, 861, -1315, -1315
02855 };
02856
02857
02858 static const yytype_int16 yypgoto[] =
02859 {
02860 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02861 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02862 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02863 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02864 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02865 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02866 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02867 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02868 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02869 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02870 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02871 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02872 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02873 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02874 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02875 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02876 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02877 -1315, 766, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02878 -1315, -1315, -1315, -1315, -99, -1315, -1315, -1315, -1315, -1315,
02879 -1315, -1315, -1315, -1315, -1315, -1315, -164, -1315, -1315, -1315,
02880 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -238, -1315, -1315,
02881 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02882 -1315, -1315, -1315, -1315, 836, 838, -1315, -1315, -1315, -1315,
02883 -1315, 147, 149, -1315, -783, -1315, -1315, -1315, 151, 153,
02884 -1315, -567, -1314, -319, -1315, -863, -1315, -1315, -1315, -1315,
02885 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02886 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02887 -1315, -1315, -1315, -1315, -1315, -1315, -290, -1315, -1315, -1315,
02888 -1315, -1315, -326, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02889 -1315, -734, -1315, -1315, -1315, -1315, -1315, -926, -1315, -1315,
02890 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02891 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02892 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02893 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02894 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02895 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02896 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02897 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02898 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02899 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02900 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02901 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02902 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02903 -1315, -1315, -236, -579, -233, -570, -1315, -235, -1315, -1315,
02904 -1315, -1315, -1315, -1315, -1315, -1315, -1315, 61, -322, -801,
02905 -1315, -1315, -1315, -1315, -1315, -1315, -218, -1315, -1315, -517,
02906 -1315, -1315, -706, -1315, -1315, -246, -1315, -1315, -310, -1315,
02907 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02908 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -205,
02909 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02910 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02911 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02912 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02913 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02914 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02915 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02916 -1315, -1315, -1315, -303, -1315, -1315, -1315, -1315, -1315, -1315,
02917 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02918 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02919 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 606,
02920 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02921 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02922 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
02923 -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315
02924 };
02925
02926
02927
02928
02929
02930 #define YYTABLE_NINF -1
02931 static const yytype_uint16 yytable[] =
02932 {
02933 312, 532, 533, 524, 702, 716, 515, 516, 350, 980,
02934 357, 351, 364, 358, 373, 365, 386, 374, 399, 387,
02935 408, 400, 414, 409, 420, 415, 352, 421, 359, 956,
02936 366, 1099, 375, 889, 388, 405, 401, 1376, 410, 1449,
02937 416, 630, 422, 320, 321, 519, 520, 951, 1197, 1109,
02938 1110, 70, 71, 610, 611, 1381, 1, 971, 72, 73,
02939 1111, 1181, 1182, 1256, 1257, 834, 835, 836, 837, 838,
02940 1434, 839, 1183, 1443, 1258, 1478, 1425, 1426, 370, 268,
02941 269, 432, 433, 434, 435, 436, 437, 102, 103, 440,
02942 441, 442, 443, 444, 445, 1444, 447, 5, 268, 269,
02943 538, 539, 457, 27, 28, 266, 267, 268, 269, 540,
02944 541, 819, 820, 6, 838, 266, 267, 946, 9, 947,
02945 948, 982, 983, 11, 270, 271, 44, 16, 45, 984,
02946 937, 458, 938, 270, 271, 459, 38, 39, 14, 460,
02947 272, 273, 18, 842, 21, 104, 24, 1474, 1475, 26,
02948 272, 273, 31, 266, 267, 1390, 1391, 34, 1156, 1048,
02949 1158, 1377, 1160, 37, 1162, 1198, 1164, 43, 268, 269,
02950 48, 1450, 1451, 266, 267, 50, 521, 522, 69, 1382,
02951 58, 266, 267, 64, 639, 90, 641, 1435, 272, 273,
02952 645, 840, 841, 834, 835, 836, 837, 838, 655, 1479,
02953 657, 1044, 659, 93, 661, 53, 54, 66, 272, 273,
02954 906, 667, 59, 60, 631, 1112, 272, 273, 266, 267,
02955 95, 1184, 82, 83, 1201, 842, 1259, 594, 595, 596,
02956 597, 85, 86, 601, 603, 100, 74, 606, 612, 842,
02957 75, 101, 613, 620, 622, 624, 322, 323, 324, 325,
02958 96, 97, 627, 272, 273, 461, 1084, 462, 110, 463,
02959 1086, 464, 115, 465, 1088, 466, 111, 467, 1090, 468,
02960 112, 469, 1092, 470, 907, 471, 113, 472, 114, 473,
02961 124, 474, 127, 475, 842, 476, 643, 1214, 379, 380,
02962 130, 392, 393, 379, 380, 381, 717, 118, 119, 745,
02963 746, 266, 267, 238, 239, 663, 718, 665, 719, 992,
02964 720, 996, 721, 1000, 722, 1004, 723, 1008, 747, 748,
02965 749, 750, 751, 752, 753, 754, 261, 262, 724, 339,
02966 340, 346, 347, 219, 1123, 1023, 272, 273, 798, 353,
02967 354, 360, 361, 1204, 367, 368, 220, 1276, 131, 132,
02968 221, 133, 805, 134, 222, 135, 807, 136, 808, 137,
02969 809, 138, 993, 139, 997, 140, 1001, 226, 1005, 227,
02970 1009, 376, 377, 389, 390, 402, 403, 229, 1314, 223,
02971 458, 451, 452, 231, 459, 266, 267, 230, 460, 234,
02972 266, 267, 454, 455, 551, 552, 559, 560, 652, 653,
02973 311, 773, 681, 682, 689, 690, 775, 742, 743, 782,
02974 783, 786, 787, 790, 791, 794, 795, 1339, 816, 817,
02975 272, 273, 237, 824, 825, 272, 273, 314, 322, 323,
02976 324, 325, 1344, 831, 832, 866, 867, 871, 872, 523,
02977 102, 103, 322, 323, 324, 325, 332, 1349, 943, 944,
02978 967, 968, 1041, 1042, 1138, 1139, 1149, 1150, 315, 850,
02979 810, 316, 851, 1201, 842, 1209, 1210, 1240, 1241, 1271,
02980 1272, 1279, 1280, 1284, 1285, 317, 908, 853, 1289, 1290,
02981 1294, 1295, 1299, 1300, 1304, 1305, 1309, 1310, 1353, 1354,
02982 1385, 1386, 1401, 1402, 1408, 1409, 1417, 1418, 318, 920,
02983 922, 1431, 1432, 319, 461, 327, 462, 335, 463, 338,
02984 464, 411, 465, 344, 466, 417, 467, 423, 468, 1173,
02985 469, 162, 470, 163, 471, 164, 472, 165, 473, 166,
02986 474, 167, 475, 168, 476, 169, 602, 170, 427, 171,
02987 428, 172, 429, 173, 430, 174, 431, 175, 972, 176,
02988 517, 177, 531, 178, 534, 179, 535, 180, 547, 181,
02989 550, 182, 546, 183, 556, 184, 564, 185, 1414, 186,
02990 558, 187, 537, 188, 565, 1015, 1438, 1439, 569, 568,
02991 571, 572, 570, 573, 575, 574, 576, 578, 577, 582,
02992 579, 585, 1239, 589, 954, 590, 591, 955, 592, 593,
02993 599, 598, 607, 604, 618, 928, 605, 609, 625, 608,
02994 629, 626, 957, 633, 162, 635, 163, 637, 164, 647,
02995 165, 1455, 166, 669, 167, 671, 168, 600, 169, 670,
02996 170, 672, 171, 162, 172, 163, 173, 164, 174, 165,
02997 175, 166, 176, 167, 177, 168, 178, 169, 179, 170,
02998 180, 171, 181, 172, 182, 173, 183, 174, 184, 175,
02999 185, 176, 186, 177, 187, 178, 188, 179, 619, 180,
03000 673, 181, 674, 182, 675, 183, 678, 184, 677, 185,
03001 679, 186, 680, 187, 686, 188, 696, 688, 698, 701,
03002 703, 704, 705, 706, 708, 713, 707, 767, 768, 710,
03003 771, 769, 776, 772, 770, 777, 1052, 1094, 780, 1053,
03004 778, 781, 785, 789, 793, 797, 801, 800, 802, 803,
03005 799, 804, 806, 1034, 1054, 812, 162, 811, 163, 814,
03006 164, 1108, 165, 815, 166, 821, 167, 893, 168, 823,
03007 169, 859, 170, 860, 171, 861, 172, 862, 173, 863,
03008 174, 864, 175, 865, 176, 894, 177, 895, 178, 890,
03009 179, 896, 180, 621, 181, 162, 182, 163, 183, 164,
03010 184, 165, 185, 166, 186, 167, 187, 168, 188, 169,
03011 897, 170, 898, 171, 899, 172, 900, 173, 901, 174,
03012 902, 175, 903, 176, 905, 177, 909, 178, 910, 179,
03013 911, 180, 912, 181, 623, 182, 913, 183, 914, 184,
03014 916, 185, 924, 186, 915, 187, 919, 188, 1191, 917,
03015 162, 918, 163, 925, 164, 927, 165, 926, 166, 929,
03016 167, 930, 168, 931, 169, 934, 170, 935, 171, 936,
03017 172, 959, 173, 958, 174, 960, 175, 961, 176, 774,
03018 177, 962, 178, 963, 179, 964, 180, 965, 181, 966,
03019 182, 973, 183, 981, 184, 1011, 185, 974, 186, 1467,
03020 187, 990, 188, 994, 998, 1002, 1006, 1010, 1012, 1016,
03021 1017, 1018, 1019, 1020, 1021, 1022, 1032, 1024, 1025, 1026,
03022 1027, 1028, 1029, 1030, 1031, 1033, 1036, 1037, 1055, 1056,
03023 1057, 1058, 1059, 1483, 1060, 162, 1061, 163, 1062, 164,
03024 1063, 165, 1064, 166, 1069, 167, 1065, 168, 1066, 169,
03025 1067, 170, 1068, 171, 1494, 172, 1071, 173, 1073, 174,
03026 1078, 175, 1082, 176, 1076, 177, 1083, 178, 1095, 179,
03027 1169, 180, 1100, 181, 1101, 182, 1102, 183, 1103, 184,
03028 1104, 185, 1105, 186, 1106, 187, 1107, 188, 1121, 1096,
03029 1126, 1127, 1119, 1125, 1128, 1129, 1166, 1145, 1130, 1131,
03030 1132, 1133, 1134, 1135, 1136, 1137, 1154, 1155, 1168, 1192,
03031 1175, 1174, 1179, 1180, 1193, 1194, 1195, 1196, 1205, 1206,
03032 1199, 1216, 1217, 1220, 1221, 1225, 1229, 1224, 1233, 1232,
03033 1248, 1228, 1245, 1247, 1249, 1236, 1265, 1254, 1250, 1255,
03034 1266, 1267, 1269, 1270, 1316, 1268, 1278, 1318, 1319, 1322,
03035 1320, 1323, 1324, 1331, 1351, 1329, 1330, 1325, 1332, 1333,
03036 1356, 1338, 1352, 1358, 1359, 1363, 1364, 1367, 1396, 1365,
03037 1397, 1370, 1362, 1360, 1398, 1371, 1372, 1373, 1400, 1380,
03038 1399, 1404, 1406, 1407, 1427, 842, 1428, 1429, 1436, 1430,
03039 1460, 1461, 1462, 1465, 1464, 1463, 1466, 1469, 1470, 1471,
03040 1472, 1015, 1015, 1473, 1476, 1482, 1485, 1246, 1492, 1489,
03041 1490, 1491, 1477, 1495, 1496, 1484, 1486, 1321, 1361, 1046,
03042 395, 1047, 396, 1050, 536, 1051, 1423, 1459, 1366, 1497,
03043 1454, 1122, 1395, 651, 0, 0, 0, 0, 0, 0,
03044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03047 0, 0, 1015, 1015, 0, 0, 0, 0, 0, 0,
03048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
03054 0, 0, 0, 1448
03055 };
03056
03057 static const yytype_int16 yycheck[] =
03058 {
03059 205, 320, 321, 313, 571, 584, 309, 310, 244, 872,
03060 246, 244, 248, 246, 250, 248, 252, 250, 254, 252,
03061 256, 254, 258, 256, 260, 258, 244, 260, 246, 830,
03062 248, 8, 250, 739, 252, 13, 254, 112, 256, 11,
03063 258, 22, 260, 6, 7, 10, 11, 830, 4, 10,
03064 11, 10, 11, 10, 11, 112, 42, 858, 17, 18,
03065 21, 10, 11, 10, 11, 23, 24, 25, 26, 27,
03066 4, 29, 21, 178, 21, 113, 1390, 1391, 28, 133,
03067 134, 286, 287, 288, 289, 290, 291, 137, 138, 294,
03068 295, 296, 297, 298, 299, 200, 301, 0, 133, 134,
03069 10, 11, 307, 43, 44, 131, 132, 133, 134, 19,
03070 20, 678, 679, 302, 27, 131, 132, 30, 14, 32,
03071 33, 161, 162, 201, 159, 160, 303, 8, 305, 169,
03072 308, 245, 310, 159, 160, 249, 10, 11, 304, 253,
03073 166, 167, 46, 197, 168, 195, 8, 1461, 1462, 6,
03074 166, 167, 241, 131, 132, 190, 191, 15, 1084, 942,
03075 1086, 236, 1088, 8, 1090, 121, 1092, 6, 133, 134,
03076 8, 143, 144, 131, 132, 76, 141, 142, 11, 236,
03077 8, 131, 132, 6, 487, 243, 489, 121, 166, 167,
03078 493, 149, 150, 23, 24, 25, 26, 27, 501, 237,
03079 503, 31, 505, 6, 507, 10, 11, 8, 166, 167,
03080 777, 514, 10, 11, 195, 176, 166, 167, 131, 132,
03081 8, 170, 40, 41, 196, 197, 173, 432, 433, 434,
03082 435, 10, 11, 438, 439, 11, 195, 442, 195, 197,
03083 199, 11, 199, 448, 449, 450, 405, 406, 407, 408,
03084 202, 203, 457, 166, 167, 369, 990, 371, 45, 373,
03085 994, 375, 39, 377, 998, 379, 8, 381, 1002, 383,
03086 8, 385, 1006, 387, 388, 389, 8, 391, 8, 393,
03087 247, 395, 181, 397, 197, 399, 491, 1150, 34, 35,
03088 8, 37, 38, 34, 35, 36, 207, 77, 78, 163,
03089 164, 131, 132, 10, 11, 510, 217, 512, 219, 879,
03090 221, 881, 223, 883, 225, 885, 227, 887, 182, 183,
03091 184, 185, 186, 187, 188, 189, 10, 11, 239, 10,
03092 11, 10, 11, 3, 1040, 902, 166, 167, 641, 10,
03093 11, 10, 11, 1144, 10, 11, 8, 1210, 47, 48,
03094 6, 50, 655, 52, 6, 54, 659, 56, 661, 58,
03095 663, 60, 879, 62, 881, 64, 883, 77, 885, 16,
03096 887, 10, 11, 10, 11, 10, 11, 77, 1241, 6,
03097 245, 10, 11, 251, 249, 131, 132, 82, 253, 180,
03098 131, 132, 10, 11, 10, 11, 244, 245, 10, 11,
03099 306, 606, 10, 11, 248, 249, 611, 10, 11, 10,
03100 11, 10, 11, 10, 11, 10, 11, 1280, 10, 11,
03101 166, 167, 8, 252, 253, 166, 167, 8, 405, 406,
03102 407, 408, 1295, 10, 11, 10, 11, 10, 11, 404,
03103 137, 138, 405, 406, 407, 408, 307, 1310, 10, 11,
03104 10, 11, 10, 11, 10, 11, 10, 11, 6, 695,
03105 665, 8, 695, 196, 197, 10, 11, 10, 11, 10,
03106 11, 10, 11, 10, 11, 8, 779, 695, 10, 11,
03107 10, 11, 10, 11, 208, 209, 10, 11, 10, 11,
03108 10, 11, 10, 11, 10, 11, 10, 11, 8, 802,
03109 803, 10, 11, 8, 369, 8, 371, 179, 373, 8,
03110 375, 11, 377, 6, 379, 11, 381, 206, 383, 1098,
03111 385, 315, 387, 317, 389, 319, 391, 321, 393, 323,
03112 395, 325, 397, 327, 399, 329, 330, 331, 3, 333,
03113 3, 335, 3, 337, 8, 339, 8, 341, 858, 343,
03114 346, 345, 8, 347, 6, 349, 79, 351, 309, 353,
03115 8, 355, 242, 357, 6, 359, 49, 361, 1369, 363,
03116 8, 365, 80, 367, 51, 894, 10, 11, 8, 55,
03117 8, 8, 57, 8, 8, 59, 8, 3, 61, 74,
03118 72, 204, 1171, 8, 830, 8, 8, 830, 6, 6,
03119 326, 324, 338, 332, 348, 810, 334, 342, 356, 340,
03120 364, 358, 830, 195, 315, 195, 317, 195, 319, 402,
03121 321, 1422, 323, 366, 325, 362, 327, 328, 329, 368,
03122 331, 3, 333, 315, 335, 317, 337, 319, 339, 321,
03123 341, 323, 343, 325, 345, 327, 347, 329, 349, 331,
03124 351, 333, 353, 335, 355, 337, 357, 339, 359, 341,
03125 361, 343, 363, 345, 365, 347, 367, 349, 350, 351,
03126 3, 353, 8, 355, 132, 357, 8, 359, 83, 361,
03127 8, 363, 8, 365, 6, 367, 53, 8, 70, 6,
03128 6, 6, 6, 6, 63, 65, 8, 8, 8, 122,
03129 320, 316, 8, 322, 318, 8, 942, 1010, 8, 942,
03130 360, 8, 8, 8, 8, 370, 3, 400, 11, 11,
03131 398, 378, 382, 928, 942, 8, 315, 394, 317, 11,
03132 319, 1034, 321, 3, 323, 6, 325, 205, 327, 8,
03133 329, 8, 331, 8, 333, 8, 335, 8, 337, 8,
03134 339, 8, 341, 8, 343, 3, 345, 8, 347, 165,
03135 349, 8, 351, 352, 353, 315, 355, 317, 357, 319,
03136 359, 321, 361, 323, 363, 325, 365, 327, 367, 329,
03137 8, 331, 8, 333, 8, 335, 8, 337, 8, 339,
03138 8, 341, 336, 343, 6, 345, 6, 347, 6, 349,
03139 396, 351, 6, 353, 354, 355, 246, 357, 6, 359,
03140 6, 361, 380, 363, 250, 365, 8, 367, 1121, 254,
03141 315, 372, 317, 384, 319, 390, 321, 386, 323, 8,
03142 325, 8, 327, 265, 329, 8, 331, 8, 333, 8,
03143 335, 8, 337, 246, 339, 8, 341, 8, 343, 344,
03144 345, 8, 347, 8, 349, 8, 351, 3, 353, 8,
03145 355, 6, 357, 11, 359, 8, 361, 120, 363, 1436,
03146 365, 11, 367, 11, 11, 11, 11, 11, 11, 6,
03147 6, 6, 6, 6, 6, 6, 374, 344, 8, 8,
03148 8, 8, 8, 8, 8, 376, 81, 257, 250, 8,
03149 8, 8, 6, 1470, 6, 315, 6, 317, 6, 319,
03150 6, 321, 6, 323, 198, 325, 8, 327, 6, 329,
03151 71, 331, 8, 333, 1491, 335, 73, 337, 112, 339,
03152 231, 341, 3, 343, 75, 345, 8, 347, 6, 349,
03153 213, 351, 8, 353, 8, 355, 8, 357, 8, 359,
03154 8, 361, 8, 363, 8, 365, 8, 367, 11, 211,
03155 8, 6, 261, 254, 6, 6, 240, 233, 8, 8,
03156 8, 8, 8, 8, 8, 8, 8, 6, 8, 6,
03157 266, 392, 8, 8, 8, 8, 8, 6, 218, 235,
03158 11, 8, 235, 220, 235, 235, 235, 222, 235, 228,
03159 6, 224, 266, 263, 6, 226, 311, 8, 258, 8,
03160 8, 8, 6, 8, 195, 121, 232, 8, 8, 255,
03161 258, 6, 6, 113, 212, 8, 8, 262, 6, 120,
03162 195, 234, 8, 8, 8, 6, 6, 112, 1348, 8,
03163 214, 236, 259, 262, 6, 236, 236, 112, 8, 236,
03164 264, 195, 8, 8, 8, 197, 6, 256, 11, 8,
03165 210, 6, 6, 260, 6, 8, 121, 8, 8, 113,
03166 6, 1390, 1391, 3, 8, 6, 8, 1176, 11, 8,
03167 8, 8, 113, 6, 8, 113, 199, 1251, 1326, 942,
03168 254, 942, 254, 942, 328, 942, 1386, 1423, 1333, 238,
03169 1422, 1040, 1348, 497, -1, -1, -1, -1, -1, -1,
03170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03173 -1, -1, 1461, 1462, -1, -1, -1, -1, -1, -1,
03174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03178 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
03180 -1, -1, -1, 1418
03181 };
03182
03183
03184
03185 static const yytype_uint16 yystos[] =
03186 {
03187 0, 42, 410, 414, 415, 0, 302, 889, 890, 14,
03188 416, 201, 427, 428, 304, 891, 8, 417, 46, 434,
03189 435, 168, 429, 628, 8, 892, 6, 43, 44, 418,
03190 419, 241, 524, 525, 15, 436, 629, 8, 10, 11,
03191 430, 431, 432, 6, 303, 305, 893, 894, 8, 421,
03192 76, 571, 572, 10, 11, 526, 527, 528, 8, 10,
03193 11, 437, 438, 439, 6, 433, 8, 895, 896, 11,
03194 10, 11, 17, 18, 195, 199, 420, 422, 423, 424,
03195 425, 426, 40, 41, 411, 10, 11, 573, 574, 575,
03196 243, 529, 530, 6, 440, 8, 202, 203, 676, 677,
03197 11, 11, 137, 138, 195, 856, 871, 872, 873, 897,
03198 45, 8, 8, 8, 8, 39, 412, 413, 77, 78,
03199 576, 577, 620, 621, 247, 543, 544, 181, 531, 630,
03200 8, 47, 48, 50, 52, 54, 56, 58, 60, 62,
03201 64, 441, 442, 443, 448, 449, 454, 455, 469, 470,
03202 476, 477, 482, 483, 488, 489, 494, 495, 509, 510,
03203 678, 679, 315, 317, 319, 321, 323, 325, 327, 329,
03204 331, 333, 335, 337, 339, 341, 343, 345, 347, 349,
03205 351, 353, 355, 357, 359, 361, 363, 365, 367, 898,
03206 899, 902, 905, 907, 909, 911, 913, 915, 917, 919,
03207 921, 923, 925, 927, 929, 930, 932, 934, 936, 938,
03208 940, 942, 943, 949, 957, 960, 963, 966, 969, 3,
03209 8, 6, 6, 6, 650, 652, 77, 16, 578, 77,
03210 82, 251, 557, 558, 180, 545, 631, 8, 10, 11,
03211 532, 533, 534, 444, 445, 450, 451, 456, 457, 471,
03212 472, 478, 479, 484, 485, 490, 491, 496, 497, 511,
03213 512, 10, 11, 681, 682, 683, 131, 132, 133, 134,
03214 159, 160, 166, 167, 680, 841, 843, 865, 866, 867,
03215 874, 875, 876, 877, 878, 879, 916, 908, 910, 914,
03216 918, 920, 958, 970, 928, 912, 935, 922, 924, 926,
03217 950, 933, 964, 961, 967, 900, 903, 906, 937, 939,
03218 941, 306, 898, 945, 8, 6, 8, 8, 8, 8,
03219 6, 7, 405, 406, 407, 408, 653, 8, 579, 580,
03220 581, 623, 307, 1036, 1037, 179, 559, 632, 8, 10,
03221 11, 546, 547, 548, 6, 536, 10, 11, 447, 446,
03222 841, 843, 865, 10, 11, 453, 452, 841, 843, 865,
03223 10, 11, 459, 458, 841, 843, 865, 10, 11, 475,
03224 28, 473, 474, 841, 843, 865, 10, 11, 481, 34,
03225 35, 36, 480, 633, 634, 635, 841, 843, 865, 10,
03226 11, 487, 37, 38, 486, 633, 634, 636, 637, 841,
03227 843, 865, 10, 11, 493, 13, 492, 638, 841, 843,
03228 865, 11, 499, 498, 841, 843, 865, 11, 514, 513,
03229 841, 843, 865, 206, 684, 685, 686, 3, 3, 3,
03230 8, 8, 898, 898, 898, 898, 898, 898, 959, 971,
03231 898, 898, 898, 898, 898, 898, 953, 898, 965, 962,
03232 968, 10, 11, 901, 10, 11, 904, 898, 245, 249,
03233 253, 369, 371, 373, 375, 377, 379, 381, 383, 385,
03234 387, 389, 391, 393, 395, 397, 399, 972, 973, 974,
03235 976, 977, 980, 981, 984, 985, 988, 989, 991, 992,
03236 994, 995, 997, 998, 1000, 1001, 1004, 1005, 1009, 1010,
03237 1012, 1013, 1015, 1016, 1018, 1019, 1021, 1022, 1024, 1027,
03238 1028, 1030, 1031, 1033, 1034, 972, 972, 346, 931, 10,
03239 11, 141, 142, 404, 877, 880, 881, 882, 944, 946,
03240 947, 8, 652, 652, 6, 79, 580, 80, 10, 11,
03241 19, 20, 622, 624, 626, 627, 242, 309, 1038, 1039,
03242 8, 10, 11, 560, 561, 562, 6, 550, 8, 244,
03243 245, 535, 537, 538, 49, 51, 460, 461, 55, 8,
03244 57, 8, 8, 8, 59, 8, 8, 61, 3, 72,
03245 500, 501, 74, 515, 516, 204, 691, 687, 688, 8,
03246 8, 8, 6, 6, 898, 898, 898, 898, 324, 326,
03247 328, 898, 330, 898, 332, 334, 898, 338, 340, 342,
03248 10, 11, 195, 199, 951, 954, 955, 956, 348, 350,
03249 898, 352, 898, 354, 898, 356, 358, 898, 1025, 364,
03250 22, 195, 639, 195, 979, 195, 983, 195, 987, 972,
03251 990, 972, 993, 898, 996, 972, 999, 402, 1002, 1008,
03252 1006, 1008, 10, 11, 1011, 972, 1014, 972, 1017, 972,
03253 1020, 972, 1023, 898, 1029, 898, 1032, 972, 1035, 366,
03254 368, 362, 3, 3, 8, 132, 582, 83, 8, 8,
03255 8, 10, 11, 1040, 1041, 1042, 6, 564, 8, 248,
03256 249, 549, 551, 552, 539, 540, 53, 468, 70, 462,
03257 463, 6, 650, 6, 6, 6, 6, 8, 63, 508,
03258 122, 502, 842, 65, 523, 517, 842, 207, 217, 219,
03259 221, 223, 225, 227, 239, 692, 693, 694, 718, 719,
03260 731, 732, 758, 759, 776, 777, 789, 790, 807, 808,
03261 811, 812, 10, 11, 690, 163, 164, 182, 183, 184,
03262 185, 186, 187, 188, 189, 689, 847, 848, 849, 850,
03263 851, 859, 860, 861, 862, 863, 864, 8, 8, 316,
03264 318, 320, 322, 898, 344, 898, 8, 8, 360, 1026,
03265 8, 8, 10, 11, 975, 8, 10, 11, 978, 8,
03266 10, 11, 982, 8, 10, 11, 986, 370, 972, 398,
03267 400, 3, 11, 11, 378, 972, 382, 972, 972, 972,
03268 898, 394, 8, 948, 11, 3, 10, 11, 583, 650,
03269 650, 6, 1043, 8, 252, 253, 563, 565, 566, 553,
03270 554, 10, 11, 542, 23, 24, 25, 26, 27, 29,
03271 149, 150, 197, 541, 640, 641, 643, 644, 647, 648,
03272 841, 843, 858, 865, 886, 887, 888, 464, 465, 8,
03273 8, 8, 8, 8, 8, 8, 10, 11, 503, 504,
03274 505, 10, 11, 518, 519, 520, 695, 696, 720, 721,
03275 733, 734, 760, 761, 778, 779, 791, 792, 809, 871,
03276 165, 813, 840, 205, 3, 8, 8, 8, 8, 8,
03277 8, 8, 8, 336, 952, 6, 650, 388, 972, 6,
03278 6, 396, 6, 246, 6, 250, 6, 254, 372, 8,
03279 972, 1003, 972, 1007, 380, 384, 386, 390, 898, 8,
03280 8, 265, 584, 585, 8, 8, 8, 308, 310, 1044,
03281 1045, 567, 568, 10, 11, 556, 30, 32, 33, 555,
03282 642, 643, 645, 649, 841, 843, 858, 865, 246, 8,
03283 8, 8, 8, 8, 8, 3, 8, 10, 11, 467,
03284 466, 858, 877, 6, 120, 506, 654, 655, 662, 521,
03285 654, 11, 161, 162, 169, 697, 844, 868, 869, 870,
03286 11, 722, 844, 868, 11, 735, 844, 868, 11, 762,
03287 844, 868, 11, 780, 844, 868, 11, 793, 844, 868,
03288 11, 8, 11, 814, 651, 652, 6, 6, 6, 6,
03289 6, 6, 6, 650, 344, 8, 8, 8, 8, 8,
03290 8, 8, 374, 376, 898, 586, 81, 257, 597, 1046,
03291 1047, 10, 11, 570, 31, 569, 640, 641, 643, 646,
03292 647, 648, 841, 843, 865, 250, 8, 8, 8, 6,
03293 6, 6, 6, 6, 6, 8, 6, 71, 8, 198,
03294 846, 73, 507, 112, 656, 657, 75, 522, 231, 698,
03295 700, 701, 3, 8, 700, 723, 700, 736, 700, 763,
03296 700, 781, 700, 794, 972, 6, 211, 816, 817, 8,
03297 8, 8, 8, 8, 8, 8, 8, 8, 972, 10,
03298 11, 21, 176, 587, 588, 589, 590, 591, 598, 261,
03299 609, 11, 856, 871, 1048, 254, 8, 6, 6, 6,
03300 8, 8, 8, 8, 8, 8, 8, 8, 10, 11,
03301 663, 664, 665, 658, 659, 233, 699, 706, 707, 10,
03302 11, 702, 703, 704, 8, 6, 706, 724, 706, 737,
03303 706, 764, 706, 782, 706, 795, 240, 810, 8, 213,
03304 823, 824, 818, 842, 392, 266, 592, 593, 594, 8,
03305 8, 10, 11, 21, 170, 599, 600, 601, 602, 603,
03306 610, 972, 6, 8, 8, 8, 6, 4, 121, 11,
03307 661, 196, 660, 857, 858, 218, 235, 712, 713, 10,
03308 11, 708, 709, 710, 654, 705, 8, 235, 725, 726,
03309 220, 235, 738, 739, 222, 235, 765, 766, 224, 235,
03310 783, 784, 228, 235, 796, 797, 226, 830, 825, 842,
03311 10, 11, 819, 820, 821, 266, 593, 263, 6, 6,
03312 258, 604, 605, 606, 8, 8, 10, 11, 21, 173,
03313 611, 612, 613, 614, 625, 311, 8, 8, 121, 6,
03314 8, 10, 11, 714, 715, 716, 654, 711, 232, 10,
03315 11, 727, 728, 729, 10, 11, 740, 741, 742, 10,
03316 11, 767, 768, 769, 10, 11, 785, 786, 787, 10,
03317 11, 798, 799, 800, 208, 209, 815, 831, 832, 10,
03318 11, 826, 827, 828, 654, 822, 195, 595, 8, 8,
03319 258, 605, 255, 6, 6, 262, 615, 616, 617, 8,
03320 8, 113, 6, 120, 666, 667, 672, 717, 234, 654,
03321 730, 743, 744, 770, 654, 788, 801, 833, 834, 654,
03322 829, 212, 8, 10, 11, 596, 195, 607, 8, 8,
03323 262, 616, 259, 6, 6, 8, 846, 112, 668, 669,
03324 236, 236, 236, 112, 745, 746, 112, 236, 771, 772,
03325 236, 112, 236, 802, 803, 10, 11, 836, 837, 838,
03326 190, 191, 835, 852, 853, 874, 877, 214, 6, 264,
03327 8, 10, 11, 608, 195, 618, 8, 8, 10, 11,
03328 673, 674, 675, 670, 858, 747, 748, 10, 11, 773,
03329 774, 775, 804, 685, 839, 651, 651, 8, 6, 256,
03330 8, 10, 11, 619, 4, 121, 11, 671, 10, 11,
03331 750, 751, 752, 178, 200, 749, 845, 855, 898, 11,
03332 143, 144, 805, 806, 857, 858, 883, 884, 885, 691,
03333 210, 6, 6, 8, 6, 260, 121, 650, 753, 8,
03334 8, 113, 6, 3, 651, 651, 8, 113, 113, 237,
03335 754, 755, 6, 650, 113, 8, 199, 756, 854, 8,
03336 8, 8, 11, 757, 650, 6, 8, 238
03337 };
03338
03339 #define yyerrok (yyerrstatus = 0)
03340 #define yyclearin (yychar = YYEMPTY)
03341 #define YYEMPTY (-2)
03342 #define YYEOF 0
03343
03344 #define YYACCEPT goto yyacceptlab
03345 #define YYABORT goto yyabortlab
03346 #define YYERROR goto yyerrorlab
03347
03348
03349
03350
03351
03352
03353 #define YYFAIL goto yyerrlab
03354
03355 #define YYRECOVERING() (!!yyerrstatus)
03356
03357 #define YYBACKUP(Token, Value) \
03358 do \
03359 if (yychar == YYEMPTY && yylen == 1) \
03360 { \
03361 yychar = (Token); \
03362 yylval = (Value); \
03363 yytoken = YYTRANSLATE (yychar); \
03364 YYPOPSTACK (1); \
03365 goto yybackup; \
03366 } \
03367 else \
03368 { \
03369 yyerror (&yylloc, osinstance, parserData, osglData, osnlData, YY_("syntax error: cannot back up")); \
03370 YYERROR; \
03371 } \
03372 while (YYID (0))
03373
03374
03375 #define YYTERROR 1
03376 #define YYERRCODE 256
03377
03378
03379
03380
03381
03382
03383 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
03384 #ifndef YYLLOC_DEFAULT
03385 # define YYLLOC_DEFAULT(Current, Rhs, N) \
03386 do \
03387 if (YYID (N)) \
03388 { \
03389 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
03390 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
03391 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
03392 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
03393 } \
03394 else \
03395 { \
03396 (Current).first_line = (Current).last_line = \
03397 YYRHSLOC (Rhs, 0).last_line; \
03398 (Current).first_column = (Current).last_column = \
03399 YYRHSLOC (Rhs, 0).last_column; \
03400 } \
03401 while (YYID (0))
03402 #endif
03403
03404
03405
03406
03407
03408
03409 #ifndef YY_LOCATION_PRINT
03410 # if YYLTYPE_IS_TRIVIAL
03411 # define YY_LOCATION_PRINT(File, Loc) \
03412 fprintf (File, "%d.%d-%d.%d", \
03413 (Loc).first_line, (Loc).first_column, \
03414 (Loc).last_line, (Loc).last_column)
03415 # else
03416 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
03417 # endif
03418 #endif
03419
03420
03421
03422
03423 #ifdef YYLEX_PARAM
03424 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
03425 #else
03426 # define YYLEX yylex (&yylval, &yylloc, scanner)
03427 #endif
03428
03429
03430 #if YYDEBUG
03431
03432 # ifndef YYFPRINTF
03433 # include <stdio.h>
03434 # define YYFPRINTF fprintf
03435 # endif
03436
03437 # define YYDPRINTF(Args) \
03438 do { \
03439 if (yydebug) \
03440 YYFPRINTF Args; \
03441 } while (YYID (0))
03442
03443 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
03444 do { \
03445 if (yydebug) \
03446 { \
03447 YYFPRINTF (stderr, "%s ", Title); \
03448 yy_symbol_print (stderr, \
03449 Type, Value, Location, osinstance, parserData, osglData, osnlData); \
03450 YYFPRINTF (stderr, "\n"); \
03451 } \
03452 } while (YYID (0))
03453
03454
03455
03456
03457
03458
03459
03460 #if (defined __STDC__ || defined __C99__FUNC__ \
03461 || defined __cplusplus || defined _MSC_VER)
03462 static void
03463 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
03464 #else
03465 static void
03466 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osinstance, parserData, osglData, osnlData)
03467 FILE *yyoutput;
03468 int yytype;
03469 YYSTYPE const * const yyvaluep;
03470 YYLTYPE const * const yylocationp;
03471 OSInstance *osinstance;
03472 OSiLParserData *parserData;
03473 OSgLParserData *osglData;
03474 OSnLParserData *osnlData;
03475 #endif
03476 {
03477 if (!yyvaluep)
03478 return;
03479 YYUSE (yylocationp);
03480 YYUSE (osinstance);
03481 YYUSE (parserData);
03482 YYUSE (osglData);
03483 YYUSE (osnlData);
03484 # ifdef YYPRINT
03485 if (yytype < YYNTOKENS)
03486 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
03487 # else
03488 YYUSE (yyoutput);
03489 # endif
03490 switch (yytype)
03491 {
03492 default:
03493 break;
03494 }
03495 }
03496
03497
03498
03499
03500
03501
03502 #if (defined __STDC__ || defined __C99__FUNC__ \
03503 || defined __cplusplus || defined _MSC_VER)
03504 static void
03505 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
03506 #else
03507 static void
03508 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, osinstance, parserData, osglData, osnlData)
03509 FILE *yyoutput;
03510 int yytype;
03511 YYSTYPE const * const yyvaluep;
03512 YYLTYPE const * const yylocationp;
03513 OSInstance *osinstance;
03514 OSiLParserData *parserData;
03515 OSgLParserData *osglData;
03516 OSnLParserData *osnlData;
03517 #endif
03518 {
03519 if (yytype < YYNTOKENS)
03520 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
03521 else
03522 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
03523
03524 YY_LOCATION_PRINT (yyoutput, *yylocationp);
03525 YYFPRINTF (yyoutput, ": ");
03526 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, osinstance, parserData, osglData, osnlData);
03527 YYFPRINTF (yyoutput, ")");
03528 }
03529
03530
03531
03532
03533
03534
03535 #if (defined __STDC__ || defined __C99__FUNC__ \
03536 || defined __cplusplus || defined _MSC_VER)
03537 static void
03538 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
03539 #else
03540 static void
03541 yy_stack_print (yybottom, yytop)
03542 yytype_int16 *yybottom;
03543 yytype_int16 *yytop;
03544 #endif
03545 {
03546 YYFPRINTF (stderr, "Stack now");
03547 for (; yybottom <= yytop; yybottom++)
03548 {
03549 int yybot = *yybottom;
03550 YYFPRINTF (stderr, " %d", yybot);
03551 }
03552 YYFPRINTF (stderr, "\n");
03553 }
03554
03555 # define YY_STACK_PRINT(Bottom, Top) \
03556 do { \
03557 if (yydebug) \
03558 yy_stack_print ((Bottom), (Top)); \
03559 } while (YYID (0))
03560
03561
03562
03563
03564
03565
03566 #if (defined __STDC__ || defined __C99__FUNC__ \
03567 || defined __cplusplus || defined _MSC_VER)
03568 static void
03569 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
03570 #else
03571 static void
03572 yy_reduce_print (yyvsp, yylsp, yyrule, osinstance, parserData, osglData, osnlData)
03573 YYSTYPE *yyvsp;
03574 YYLTYPE *yylsp;
03575 int yyrule;
03576 OSInstance *osinstance;
03577 OSiLParserData *parserData;
03578 OSgLParserData *osglData;
03579 OSnLParserData *osnlData;
03580 #endif
03581 {
03582 int yynrhs = yyr2[yyrule];
03583 int yyi;
03584 unsigned long int yylno = yyrline[yyrule];
03585 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
03586 yyrule - 1, yylno);
03587
03588 for (yyi = 0; yyi < yynrhs; yyi++)
03589 {
03590 YYFPRINTF (stderr, " $%d = ", yyi + 1);
03591 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
03592 &(yyvsp[(yyi + 1) - (yynrhs)])
03593 , &(yylsp[(yyi + 1) - (yynrhs)]) , osinstance, parserData, osglData, osnlData);
03594 YYFPRINTF (stderr, "\n");
03595 }
03596 }
03597
03598 # define YY_REDUCE_PRINT(Rule) \
03599 do { \
03600 if (yydebug) \
03601 yy_reduce_print (yyvsp, yylsp, Rule, osinstance, parserData, osglData, osnlData); \
03602 } while (YYID (0))
03603
03604
03605
03606 int yydebug;
03607 #else
03608 # define YYDPRINTF(Args)
03609 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
03610 # define YY_STACK_PRINT(Bottom, Top)
03611 # define YY_REDUCE_PRINT(Rule)
03612 #endif
03613
03614
03615
03616 #ifndef YYINITDEPTH
03617 # define YYINITDEPTH 200
03618 #endif
03619
03620
03621
03622
03623
03624
03625
03626
03627 #ifndef YYMAXDEPTH
03628 # define YYMAXDEPTH 10000
03629 #endif
03630
03631
03632
03633 #if YYERROR_VERBOSE
03634
03635 # ifndef yystrlen
03636 # if defined __GLIBC__ && defined _STRING_H
03637 # define yystrlen strlen
03638 # else
03639
03640 #if (defined __STDC__ || defined __C99__FUNC__ \
03641 || defined __cplusplus || defined _MSC_VER)
03642 static YYSIZE_T
03643 yystrlen (const char *yystr)
03644 #else
03645 static YYSIZE_T
03646 yystrlen (yystr)
03647 const char *yystr;
03648 #endif
03649 {
03650 YYSIZE_T yylen;
03651 for (yylen = 0; yystr[yylen]; yylen++)
03652 continue;
03653 return yylen;
03654 }
03655 # endif
03656 # endif
03657
03658 # ifndef yystpcpy
03659 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
03660 # define yystpcpy stpcpy
03661 # else
03662
03663
03664 #if (defined __STDC__ || defined __C99__FUNC__ \
03665 || defined __cplusplus || defined _MSC_VER)
03666 static char *
03667 yystpcpy (char *yydest, const char *yysrc)
03668 #else
03669 static char *
03670 yystpcpy (yydest, yysrc)
03671 char *yydest;
03672 const char *yysrc;
03673 #endif
03674 {
03675 char *yyd = yydest;
03676 const char *yys = yysrc;
03677
03678 while ((*yyd++ = *yys++) != '\0')
03679 continue;
03680
03681 return yyd - 1;
03682 }
03683 # endif
03684 # endif
03685
03686 # ifndef yytnamerr
03687
03688
03689
03690
03691
03692
03693
03694 static YYSIZE_T
03695 yytnamerr (char *yyres, const char *yystr)
03696 {
03697 if (*yystr == '"')
03698 {
03699 YYSIZE_T yyn = 0;
03700 char const *yyp = yystr;
03701
03702 for (;;)
03703 switch (*++yyp)
03704 {
03705 case '\'':
03706 case ',':
03707 goto do_not_strip_quotes;
03708
03709 case '\\':
03710 if (*++yyp != '\\')
03711 goto do_not_strip_quotes;
03712
03713 default:
03714 if (yyres)
03715 yyres[yyn] = *yyp;
03716 yyn++;
03717 break;
03718
03719 case '"':
03720 if (yyres)
03721 yyres[yyn] = '\0';
03722 return yyn;
03723 }
03724 do_not_strip_quotes: ;
03725 }
03726
03727 if (! yyres)
03728 return yystrlen (yystr);
03729
03730 return yystpcpy (yyres, yystr) - yyres;
03731 }
03732 # endif
03733
03734
03735
03736
03737
03738
03739
03740
03741 static YYSIZE_T
03742 yysyntax_error (char *yyresult, int yystate, int yychar)
03743 {
03744 int yyn = yypact[yystate];
03745
03746 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
03747 return 0;
03748 else
03749 {
03750 int yytype = YYTRANSLATE (yychar);
03751 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
03752 YYSIZE_T yysize = yysize0;
03753 YYSIZE_T yysize1;
03754 int yysize_overflow = 0;
03755 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
03756 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
03757 int yyx;
03758
03759 # if 0
03760
03761
03762 YY_("syntax error, unexpected %s");
03763 YY_("syntax error, unexpected %s, expecting %s");
03764 YY_("syntax error, unexpected %s, expecting %s or %s");
03765 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
03766 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
03767 # endif
03768 char *yyfmt;
03769 char const *yyf;
03770 static char const yyunexpected[] = "syntax error, unexpected %s";
03771 static char const yyexpecting[] = ", expecting %s";
03772 static char const yyor[] = " or %s";
03773 char yyformat[sizeof yyunexpected
03774 + sizeof yyexpecting - 1
03775 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
03776 * (sizeof yyor - 1))];
03777 char const *yyprefix = yyexpecting;
03778
03779
03780
03781 int yyxbegin = yyn < 0 ? -yyn : 0;
03782
03783
03784 int yychecklim = YYLAST - yyn + 1;
03785 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
03786 int yycount = 1;
03787
03788 yyarg[0] = yytname[yytype];
03789 yyfmt = yystpcpy (yyformat, yyunexpected);
03790
03791 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
03792 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
03793 {
03794 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
03795 {
03796 yycount = 1;
03797 yysize = yysize0;
03798 yyformat[sizeof yyunexpected - 1] = '\0';
03799 break;
03800 }
03801 yyarg[yycount++] = yytname[yyx];
03802 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
03803 yysize_overflow |= (yysize1 < yysize);
03804 yysize = yysize1;
03805 yyfmt = yystpcpy (yyfmt, yyprefix);
03806 yyprefix = yyor;
03807 }
03808
03809 yyf = YY_(yyformat);
03810 yysize1 = yysize + yystrlen (yyf);
03811 yysize_overflow |= (yysize1 < yysize);
03812 yysize = yysize1;
03813
03814 if (yysize_overflow)
03815 return YYSIZE_MAXIMUM;
03816
03817 if (yyresult)
03818 {
03819
03820
03821
03822 char *yyp = yyresult;
03823 int yyi = 0;
03824 while ((*yyp = *yyf) != '\0')
03825 {
03826 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
03827 {
03828 yyp += yytnamerr (yyp, yyarg[yyi++]);
03829 yyf += 2;
03830 }
03831 else
03832 {
03833 yyp++;
03834 yyf++;
03835 }
03836 }
03837 }
03838 return yysize;
03839 }
03840 }
03841 #endif
03842
03843
03844
03845
03846
03847
03848
03849 #if (defined __STDC__ || defined __C99__FUNC__ \
03850 || defined __cplusplus || defined _MSC_VER)
03851 static void
03852 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
03853 #else
03854 static void
03855 yydestruct (yymsg, yytype, yyvaluep, yylocationp, osinstance, parserData, osglData, osnlData)
03856 const char *yymsg;
03857 int yytype;
03858 YYSTYPE *yyvaluep;
03859 YYLTYPE *yylocationp;
03860 OSInstance *osinstance;
03861 OSiLParserData *parserData;
03862 OSgLParserData *osglData;
03863 OSnLParserData *osnlData;
03864 #endif
03865 {
03866 YYUSE (yyvaluep);
03867 YYUSE (yylocationp);
03868 YYUSE (osinstance);
03869 YYUSE (parserData);
03870 YYUSE (osglData);
03871 YYUSE (osnlData);
03872
03873 if (!yymsg)
03874 yymsg = "Deleting";
03875 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
03876
03877 switch (yytype)
03878 {
03879
03880 default:
03881 break;
03882 }
03883 }
03884
03885
03886 #ifdef YYPARSE_PARAM
03887 #if defined __STDC__ || defined __cplusplus
03888 int yyparse (void *YYPARSE_PARAM);
03889 #else
03890 int yyparse ();
03891 #endif
03892 #else
03893 #if defined __STDC__ || defined __cplusplus
03894 int yyparse (OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData);
03895 #else
03896 int yyparse ();
03897 #endif
03898 #endif
03899
03900
03901
03902
03903
03904
03905
03906
03907
03908 #ifdef YYPARSE_PARAM
03909 #if (defined __STDC__ || defined __C99__FUNC__ \
03910 || defined __cplusplus || defined _MSC_VER)
03911 int
03912 yyparse (void *YYPARSE_PARAM)
03913 #else
03914 int
03915 yyparse (YYPARSE_PARAM)
03916 void *YYPARSE_PARAM;
03917 #endif
03918 #else
03919 #if (defined __STDC__ || defined __C99__FUNC__ \
03920 || defined __cplusplus || defined _MSC_VER)
03921 int
03922 yyparse (OSInstance *osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData)
03923 #else
03924 int
03925 yyparse (osinstance, parserData, osglData, osnlData)
03926 OSInstance *osinstance;
03927 OSiLParserData *parserData;
03928 OSgLParserData *osglData;
03929 OSnLParserData *osnlData;
03930 #endif
03931 #endif
03932 {
03933
03934 int yychar;
03935
03936
03937 YYSTYPE yylval;
03938
03939
03940 YYLTYPE yylloc;
03941
03942
03943 int yynerrs;
03944
03945 int yystate;
03946
03947 int yyerrstatus;
03948
03949
03950
03951
03952
03953
03954
03955
03956
03957
03958 yytype_int16 yyssa[YYINITDEPTH];
03959 yytype_int16 *yyss;
03960 yytype_int16 *yyssp;
03961
03962
03963 YYSTYPE yyvsa[YYINITDEPTH];
03964 YYSTYPE *yyvs;
03965 YYSTYPE *yyvsp;
03966
03967
03968 YYLTYPE yylsa[YYINITDEPTH];
03969 YYLTYPE *yyls;
03970 YYLTYPE *yylsp;
03971
03972
03973 YYLTYPE yyerror_range[2];
03974
03975 YYSIZE_T yystacksize;
03976
03977 int yyn;
03978 int yyresult;
03979
03980 int yytoken;
03981
03982
03983 YYSTYPE yyval;
03984 YYLTYPE yyloc;
03985
03986 #if YYERROR_VERBOSE
03987
03988 char yymsgbuf[128];
03989 char *yymsg = yymsgbuf;
03990 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
03991 #endif
03992
03993 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
03994
03995
03996
03997 int yylen = 0;
03998
03999 yytoken = 0;
04000 yyss = yyssa;
04001 yyvs = yyvsa;
04002 yyls = yylsa;
04003 yystacksize = YYINITDEPTH;
04004
04005 YYDPRINTF ((stderr, "Starting parse\n"));
04006
04007 yystate = 0;
04008 yyerrstatus = 0;
04009 yynerrs = 0;
04010 yychar = YYEMPTY;
04011
04012
04013
04014
04015
04016 yyssp = yyss;
04017 yyvsp = yyvs;
04018 yylsp = yyls;
04019
04020 #if YYLTYPE_IS_TRIVIAL
04021
04022 yylloc.first_line = yylloc.last_line = 1;
04023 yylloc.first_column = yylloc.last_column = 1;
04024 #endif
04025
04026 goto yysetstate;
04027
04028
04029
04030
04031 yynewstate:
04032
04033
04034 yyssp++;
04035
04036 yysetstate:
04037 *yyssp = yystate;
04038
04039 if (yyss + yystacksize - 1 <= yyssp)
04040 {
04041
04042 YYSIZE_T yysize = yyssp - yyss + 1;
04043
04044 #ifdef yyoverflow
04045 {
04046
04047
04048
04049 YYSTYPE *yyvs1 = yyvs;
04050 yytype_int16 *yyss1 = yyss;
04051 YYLTYPE *yyls1 = yyls;
04052
04053
04054
04055
04056
04057 yyoverflow (YY_("memory exhausted"),
04058 &yyss1, yysize * sizeof (*yyssp),
04059 &yyvs1, yysize * sizeof (*yyvsp),
04060 &yyls1, yysize * sizeof (*yylsp),
04061 &yystacksize);
04062
04063 yyls = yyls1;
04064 yyss = yyss1;
04065 yyvs = yyvs1;
04066 }
04067 #else
04068 # ifndef YYSTACK_RELOCATE
04069 goto yyexhaustedlab;
04070 # else
04071
04072 if (YYMAXDEPTH <= yystacksize)
04073 goto yyexhaustedlab;
04074 yystacksize *= 2;
04075 if (YYMAXDEPTH < yystacksize)
04076 yystacksize = YYMAXDEPTH;
04077
04078 {
04079 yytype_int16 *yyss1 = yyss;
04080 union yyalloc *yyptr =
04081 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
04082 if (! yyptr)
04083 goto yyexhaustedlab;
04084 YYSTACK_RELOCATE (yyss_alloc, yyss);
04085 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
04086 YYSTACK_RELOCATE (yyls_alloc, yyls);
04087 # undef YYSTACK_RELOCATE
04088 if (yyss1 != yyssa)
04089 YYSTACK_FREE (yyss1);
04090 }
04091 # endif
04092 #endif
04093
04094 yyssp = yyss + yysize - 1;
04095 yyvsp = yyvs + yysize - 1;
04096 yylsp = yyls + yysize - 1;
04097
04098 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
04099 (unsigned long int) yystacksize));
04100
04101 if (yyss + yystacksize - 1 <= yyssp)
04102 YYABORT;
04103 }
04104
04105 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
04106
04107 if (yystate == YYFINAL)
04108 YYACCEPT;
04109
04110 goto yybackup;
04111
04112
04113
04114
04115 yybackup:
04116
04117
04118
04119
04120
04121 yyn = yypact[yystate];
04122 if (yyn == YYPACT_NINF)
04123 goto yydefault;
04124
04125
04126
04127
04128 if (yychar == YYEMPTY)
04129 {
04130 YYDPRINTF ((stderr, "Reading a token: "));
04131 yychar = YYLEX;
04132 }
04133
04134 if (yychar <= YYEOF)
04135 {
04136 yychar = yytoken = YYEOF;
04137 YYDPRINTF ((stderr, "Now at end of input.\n"));
04138 }
04139 else
04140 {
04141 yytoken = YYTRANSLATE (yychar);
04142 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
04143 }
04144
04145
04146
04147 yyn += yytoken;
04148 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
04149 goto yydefault;
04150 yyn = yytable[yyn];
04151 if (yyn <= 0)
04152 {
04153 if (yyn == 0 || yyn == YYTABLE_NINF)
04154 goto yyerrlab;
04155 yyn = -yyn;
04156 goto yyreduce;
04157 }
04158
04159
04160
04161 if (yyerrstatus)
04162 yyerrstatus--;
04163
04164
04165 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
04166
04167
04168 yychar = YYEMPTY;
04169
04170 yystate = yyn;
04171 *++yyvsp = yylval;
04172 *++yylsp = yylloc;
04173 goto yynewstate;
04174
04175
04176
04177
04178
04179 yydefault:
04180 yyn = yydefact[yystate];
04181 if (yyn == 0)
04182 goto yyerrlab;
04183 goto yyreduce;
04184
04185
04186
04187
04188
04189 yyreduce:
04190
04191 yylen = yyr2[yyn];
04192
04193
04194
04195
04196
04197
04198
04199
04200
04201 yyval = yyvsp[1-yylen];
04202
04203
04204 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
04205 YY_REDUCE_PRINT (yyn);
04206 switch (yyn)
04207 {
04208 case 5:
04209
04210 {
04211 if (parserData->parser_errors != "")
04212 {
04213 parserData->parser_errors += ("\n\nOSiL input is either invalid or not well-formed.\n");
04214 osilerror( NULL, osinstance, parserData, osglData, osnlData, parserData->parser_errors);
04215 }
04216 }
04217 break;
04218
04219 case 7:
04220
04221 { parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "unexpected end of file, expecting </osil>");}
04222 break;
04223
04224 case 9:
04225
04226 {if(osinstance->instanceData->quadraticCoefficients->numberOfQuadraticTerms > parserData->qtermcount )
04227 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of qterms less than numberOfQuadraticTerms");}
04228 break;
04229
04230 case 10:
04231
04232 {
04233 osinstance->instanceData->quadraticCoefficients = new QuadraticCoefficients();
04234 }
04235 break;
04236
04237 case 11:
04238
04239 {
04240 if ( *(yyvsp[(2) - (5)].sval) != *(yyvsp[(4) - (5)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
04241 osinstance->instanceData->quadraticCoefficients->numberOfQuadraticTerms = (yyvsp[(3) - (5)].ival);
04242 if(osinstance->instanceData->quadraticCoefficients->numberOfQuadraticTerms > 0 )
04243 osinstance->instanceData->quadraticCoefficients->qTerm = new QuadraticTerm*[ (yyvsp[(3) - (5)].ival) ];
04244 for(int i = 0; i < (yyvsp[(3) - (5)].ival); i++) osinstance->instanceData->quadraticCoefficients->qTerm[i] = new QuadraticTerm();
04245 parserData->qtermcount = 0;
04246 }
04247 break;
04248
04249 case 14:
04250
04251 {
04252 parserData->qtermcount++;
04253 if(!parserData->qtermidxattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "the qTerm attribute idx is required");
04254 if(!parserData->qtermidxOneattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "the qTerm attribute idxOne is required");
04255 if(!parserData->qtermidxTwoattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "the qTerm attribute idxTwo is required");
04256 parserData->qtermidattON = false;
04257 parserData->qtermidxattON = false;
04258 parserData->qtermidxOneattON = false;
04259 parserData->qtermidxTwoattON = false;
04260 parserData->qtermcoefattON = false;
04261 }
04262 break;
04263
04264 case 15:
04265
04266 {
04267 if(osinstance->instanceData->quadraticCoefficients->numberOfQuadraticTerms <= parserData->qtermcount )
04268 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many QuadraticTerms");
04269 }
04270 break;
04271
04272 case 20:
04273
04274 { if(parserData->qtermidxOneattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many qTerm idxOne attributes");
04275 parserData->qtermidxOneattON = true; }
04276 break;
04277
04278 case 21:
04279
04280 { if(parserData->qtermidxTwoattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many qTerm idxTwo attributes");
04281 parserData->qtermidxTwoattON = true; }
04282 break;
04283
04284 case 22:
04285
04286 { if(parserData->qtermcoefattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many qTerm coef attributes");
04287 parserData->qtermcoefattON = true; }
04288 break;
04289
04290 case 23:
04291
04292 { if(parserData->qtermidxattON) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many qTerm idx attributes");
04293 parserData->qtermidxattON = true; }
04294 break;
04295
04296 case 24:
04297
04298 { if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
04299 osinstance->instanceData->quadraticCoefficients->qTerm[parserData->qtermcount]->idxOne = (yyvsp[(3) - (4)].ival);
04300 if( (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->variables->numberOfVariables){
04301 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "variable index exceeds number of variables");
04302 }
04303 }
04304 break;
04305
04306 case 25:
04307
04308 { if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
04309 osinstance->instanceData->quadraticCoefficients->qTerm[parserData->qtermcount]->idxTwo = (yyvsp[(3) - (4)].ival);
04310 if( (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->variables->numberOfVariables){
04311 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "variable index exceeds number of variables");
04312 }
04313 }
04314 break;
04315
04316 case 26:
04317
04318 {if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
04319 osinstance->instanceData->quadraticCoefficients->qTerm[parserData->qtermcount]->coef = parserData->tempVal;}
04320 break;
04321
04322 case 27:
04323
04324 { if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
04325 osinstance->instanceData->quadraticCoefficients->qTerm[parserData->qtermcount]->idx = (yyvsp[(3) - (4)].ival);}
04326 break;
04327
04328 case 29:
04329
04330 {
04331 if (osglData->matrixCounter < osglData->numberOfMatrices) parserData->parser_errors +=
04332 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "fewer matrices than specified");
04333 osinstance->instanceData->matrices->numberOfMatrices = osglData->numberOfMatrices;
04334 osinstance->instanceData->matrices->matrix = osglData->matrix;
04335 }
04336 break;
04337
04338 case 30:
04339
04340 {
04341 osinstance->instanceData->matrices = new Matrices();
04342 osglData->numberOfMatricesPresent = false;
04343 }
04344 break;
04345
04346 case 31:
04347
04348 {
04349 if (osglData->numberOfMatrices < 0) parserData->parser_errors +=
04350 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfMatrices cannot be negative");
04351 else
04352 {
04353 osglData->matrix = new OSMatrix*[osglData->numberOfMatrices];
04354 for (int i=0; i < osglData->numberOfMatrices; i++)
04355 osglData->matrix[i] = NULL;
04356 }
04357 }
04358 break;
04359
04360 case 39:
04361
04362 {
04363 if (parserData->coneCounter < parserData->numberOfCones) parserData->parser_errors +=
04364 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "fewer cones than specified");
04365 }
04366 break;
04367
04368 case 40:
04369
04370 {
04371 osinstance->instanceData->cones = new Cones();
04372 parserData->coneCounter = 0;
04373 }
04374 break;
04375
04376 case 41:
04377
04378 {
04379 if (parserData->numberOfCones < 0) parserData->parser_errors +=
04380 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfCones cannot be negative");
04381 else
04382 {
04383 osinstance->instanceData->cones->cone = new Cone*[parserData->numberOfCones];
04384 for (int i=0; i < parserData->numberOfCones; i++)
04385 osinstance->instanceData->cones->cone[i] = NULL;
04386 }
04387 }
04388 break;
04389
04390 case 45:
04391
04392 {
04393 }
04394 break;
04395
04396 case 47:
04397
04398 {
04399 parserData->coneCounter++;
04400 if (parserData->coneCounter > parserData->numberOfCones) parserData->parser_errors +=
04401 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "encountered more cones than specified");
04402 osinstance->instanceData->cones->numberOfCones = parserData->coneCounter;
04403 }
04404 break;
04405
04406 case 58:
04407
04408 {
04409 osglData->numberOfRowsPresent = false;
04410 osglData->numberOfColumnsPresent = false;
04411 osglData->namePresent = false;
04412 osinstance->instanceData->cones->cone[parserData->coneCounter] = new NonnegativeCone();
04413 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_nonnegative;
04414 }
04415 break;
04416
04417 case 62:
04418
04419 {
04420 ((NonnegativeCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04421 = osglData->numberOfRows;
04422 }
04423 break;
04424
04425 case 63:
04426
04427 {
04428 ((NonnegativeCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04429 = osglData->numberOfColumns;
04430 }
04431 break;
04432
04433 case 64:
04434
04435 {
04436 ((NonnegativeCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04437 }
04438 break;
04439
04440 case 68:
04441
04442 {
04443 osglData->numberOfRowsPresent = false;
04444 osglData->numberOfColumnsPresent = false;
04445 osglData->namePresent = false;
04446 osinstance->instanceData->cones->cone[parserData->coneCounter] = new NonpositiveCone();
04447 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_nonpositive;
04448 }
04449 break;
04450
04451 case 72:
04452
04453 {
04454 ((NonpositiveCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04455 = osglData->numberOfRows;
04456 }
04457 break;
04458
04459 case 73:
04460
04461 {
04462 ((NonpositiveCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04463 = osglData->numberOfColumns;
04464 }
04465 break;
04466
04467 case 74:
04468
04469 {
04470 ((NonpositiveCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04471 }
04472 break;
04473
04474 case 78:
04475
04476 {
04477 osglData->numberOfRowsPresent = false;
04478 osglData->numberOfColumnsPresent = false;
04479 osglData->namePresent = false;
04480 osinstance->instanceData->cones->cone[parserData->coneCounter] = new OrthantCone();
04481 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_orthant;
04482 }
04483 break;
04484
04485 case 79:
04486
04487 {
04488 osglData->numberOfEl = (osglData->numberOfRows)*(osglData->numberOfColumns);
04489 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->ub
04490 = new double[osglData->numberOfEl];
04491 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->lb
04492 = new double[osglData->numberOfEl];
04493 osglData->osglCounter = 0;
04494 }
04495 break;
04496
04497 case 82:
04498
04499 {
04500 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04501 = osglData->numberOfRows;
04502 }
04503 break;
04504
04505 case 83:
04506
04507 {
04508 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04509 = osglData->numberOfColumns;
04510 }
04511 break;
04512
04513 case 84:
04514
04515 {
04516 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04517 }
04518 break;
04519
04520 case 86:
04521
04522 {
04523 if (osglData->osglCounter != osglData->numberOfEl)
04524 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of directions does not match");
04525 }
04526 break;
04527
04528 case 91:
04529
04530 {
04531 osglData->typePresent = false;
04532 osglData->multPresent = false;
04533 osglData->mult = 1;
04534 }
04535 break;
04536
04537 case 92:
04538
04539 {
04540 double ubt;
04541 double lbt;
04542 if (osglData->type == "nonnegative")
04543 {
04544 ubt = OSDBL_MAX;
04545 lbt = 0.0;
04546 }
04547 else if (osglData->type == "nonpositive")
04548 {
04549 ubt = 0.0;
04550 lbt = -OSDBL_MAX;
04551 }
04552 else if (osglData->type == "free")
04553 {
04554 ubt = OSDBL_MAX;
04555 lbt = -OSDBL_MAX;
04556 }
04557 else if (osglData->type == "zero")
04558 {
04559 ubt = 0.0;
04560 lbt = 0.0;
04561 }
04562 else
04563 {
04564 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "unrecognized direction type");
04565 }
04566 if (osglData->osglCounter + osglData->mult > osglData->numberOfEl)
04567 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "Too many directions given");
04568 for (int i=0; i < osglData->mult; i++)
04569 {
04570 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->ub[osglData->osglCounter+i] = ubt;
04571 ((OrthantCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->lb[osglData->osglCounter+i] = lbt;
04572 }
04573 osglData->osglCounter += osglData->mult;
04574 }
04575 break;
04576
04577 case 101:
04578
04579 {
04580 osglData->numberOfRowsPresent = false;
04581 osglData->numberOfColumnsPresent = false;
04582 osglData->namePresent = false;
04583 osinstance->instanceData->cones->cone[parserData->coneCounter] = new PolyhedralCone();
04584 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_polyhedral;
04585 }
04586 break;
04587
04588 case 105:
04589
04590 {
04591 ((PolyhedralCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04592 = osglData->numberOfRows;
04593 }
04594 break;
04595
04596 case 106:
04597
04598 {
04599 ((PolyhedralCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04600 = osglData->numberOfColumns;
04601 }
04602 break;
04603
04604 case 107:
04605
04606 {
04607 ((PolyhedralCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->referenceMatrixIdx
04608 = parserData->referenceMatrixIdx;
04609 }
04610 break;
04611
04612 case 108:
04613
04614 {
04615 ((PolyhedralCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04616 }
04617 break;
04618
04619 case 109:
04620
04621 {
04622 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
04623 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
04624 if (parserData->referenceMatrixIdxPresent)
04625 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "polyhedral cone referenceMatrixIdx attribute previously set");
04626 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "polyhedral cone reference matrix index cannot be negative");
04627 parserData->referenceMatrixIdxPresent = true;
04628 parserData->referenceMatrixIdx = (yyvsp[(3) - (4)].ival);
04629 }
04630 break;
04631
04632 case 113:
04633
04634 {
04635 osglData->numberOfRowsPresent = false;
04636 osglData->numberOfColumnsPresent = false;
04637 osglData->namePresent = false;
04638 parserData->normScaleFactorPresent = false;
04639 parserData->distortionMatrixPresent = false;
04640 parserData->axisDirectionPresent = false;
04641 osinstance->instanceData->cones->cone[parserData->coneCounter] = new QuadraticCone();
04642 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_quadratic;
04643 }
04644 break;
04645
04646 case 117:
04647
04648 {
04649 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04650 = osglData->numberOfRows;
04651 }
04652 break;
04653
04654 case 118:
04655
04656 {
04657 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04658 = osglData->numberOfColumns;
04659 }
04660 break;
04661
04662 case 119:
04663
04664 {
04665 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04666 }
04667 break;
04668
04669 case 120:
04670
04671 {
04672 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->distortionMatrixIdx
04673 = parserData->distortionMatrix;
04674 }
04675 break;
04676
04677 case 121:
04678
04679 {
04680 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->normScaleFactor
04681 = parserData->normScaleFactor;
04682 }
04683 break;
04684
04685 case 122:
04686
04687 {
04688 ((QuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->axisDirection
04689 = parserData->axisDirection;
04690 }
04691 break;
04692
04693 case 126:
04694
04695 {
04696 osglData->numberOfRowsPresent = false;
04697 osglData->numberOfColumnsPresent = false;
04698 osglData->namePresent = false;
04699 parserData->normScaleFactorPresent = false;
04700 parserData->distortionMatrixPresent = false;
04701 parserData->firstAxisDirectionPresent = false;
04702 parserData->secondAxisDirectionPresent = false;
04703 osinstance->instanceData->cones->cone[parserData->coneCounter] = new RotatedQuadraticCone();
04704 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_rotatedQuadratic;
04705 }
04706 break;
04707
04708 case 130:
04709
04710 {
04711 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04712 = osglData->numberOfRows;
04713 }
04714 break;
04715
04716 case 131:
04717
04718 {
04719 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04720 = osglData->numberOfColumns;
04721 }
04722 break;
04723
04724 case 132:
04725
04726 {
04727 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name
04728 = osglData->name;
04729 }
04730 break;
04731
04732 case 133:
04733
04734 {
04735 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->distortionMatrixIdx
04736 = parserData->distortionMatrix;
04737 }
04738 break;
04739
04740 case 134:
04741
04742 {
04743 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->normScaleFactor
04744 = parserData->normScaleFactor;
04745 }
04746 break;
04747
04748 case 135:
04749
04750 {
04751 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->firstAxisDirection
04752 = parserData->firstAxisDirection;
04753 }
04754 break;
04755
04756 case 136:
04757
04758 {
04759 ((RotatedQuadraticCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->secondAxisDirection
04760 = parserData->secondAxisDirection;
04761 }
04762 break;
04763
04764 case 140:
04765
04766 {
04767 osglData->numberOfRowsPresent = false;
04768 osglData->numberOfColumnsPresent = false;
04769 osglData->namePresent = false;
04770 parserData->semidefinitenessPresent = false;
04771 osinstance->instanceData->cones->cone[parserData->coneCounter] = new SemidefiniteCone();
04772 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_semidefinite;
04773 }
04774 break;
04775
04776 case 144:
04777
04778 {
04779 ((SemidefiniteCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04780 = osglData->numberOfRows;
04781 }
04782 break;
04783
04784 case 145:
04785
04786 {
04787 ((SemidefiniteCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04788 = osglData->numberOfColumns;
04789 }
04790 break;
04791
04792 case 146:
04793
04794 {
04795 ((SemidefiniteCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04796 }
04797 break;
04798
04799 case 147:
04800
04801 {
04802 ((SemidefiniteCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->semidefiniteness
04803 = parserData->semidefiniteness;
04804 }
04805 break;
04806
04807 case 151:
04808
04809 {
04810 osglData->numberOfRowsPresent = false;
04811 osglData->numberOfColumnsPresent = false;
04812 osglData->namePresent = false;
04813 osinstance->instanceData->cones->cone[parserData->coneCounter] = new ProductCone();
04814 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_product;
04815 }
04816 break;
04817
04818 case 155:
04819
04820 {
04821 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04822 = osglData->numberOfRows;
04823 }
04824 break;
04825
04826 case 156:
04827
04828 {
04829 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04830 = osglData->numberOfColumns;
04831 }
04832 break;
04833
04834 case 157:
04835
04836 {
04837 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04838 }
04839 break;
04840
04841 case 160:
04842
04843 {
04844 osglData->numberOfEl = 0;
04845 osglData->numberOfElPresent = false;
04846 }
04847 break;
04848
04849 case 161:
04850
04851 {
04852 osglData->osglCounter = 0;
04853 osglData->osglIntArray = new int[osglData->numberOfEl];
04854 }
04855 break;
04856
04857 case 167:
04858
04859 {
04860 if (osglData->osglCounter != osglData->numberOfEl)
04861 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of factors does not match numberOfEl");
04862 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->factors = new IntVector();
04863 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->factors->numberOfEl
04864 = osglData->numberOfEl;
04865 ((ProductCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->factors ->el
04866 = osglData->osglIntArray;
04867 osglData->osglIntArray = NULL;
04868 parserData->suppressFurtherErrorMessages = false;
04869 parserData->ignoreDataAfterErrors = false;
04870 }
04871 break;
04872
04873 case 170:
04874
04875 {
04876 osglData->numberOfRowsPresent = false;
04877 osglData->numberOfColumnsPresent = false;
04878 osglData->namePresent = false;
04879 osinstance->instanceData->cones->cone[parserData->coneCounter] = new IntersectionCone();
04880 osinstance->instanceData->cones->cone[parserData->coneCounter]->coneType = ENUM_CONE_TYPE_intersection;
04881 }
04882 break;
04883
04884 case 174:
04885
04886 {
04887 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfRows
04888 = osglData->numberOfRows;
04889 }
04890 break;
04891
04892 case 175:
04893
04894 {
04895 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->numberOfColumns
04896 = osglData->numberOfColumns;
04897 }
04898 break;
04899
04900 case 176:
04901
04902 {
04903 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->name = osglData->name;
04904 }
04905 break;
04906
04907 case 179:
04908
04909 {
04910 osglData->numberOfEl = 0;
04911 osglData->numberOfElPresent = false;
04912 }
04913 break;
04914
04915 case 180:
04916
04917 {
04918 osglData->osglCounter = 0;
04919 osglData->osglIntArray = new int[osglData->numberOfEl];
04920 }
04921 break;
04922
04923 case 186:
04924
04925 {
04926 if (osglData->osglCounter != osglData->numberOfEl)
04927 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of components does not match numberOfEl");
04928 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->components = new IntVector();
04929 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->components->numberOfEl
04930 = osglData->numberOfEl;
04931 ((IntersectionCone*)osinstance->instanceData->cones->cone[parserData->coneCounter])->components ->el
04932 = osglData->osglIntArray;
04933 osglData->osglIntArray = NULL;
04934 parserData->suppressFurtherErrorMessages = false;
04935 parserData->ignoreDataAfterErrors = false;
04936 }
04937 break;
04938
04939 case 190:
04940
04941 {
04942 osinstance->instanceData->matrixProgramming = new MatrixProgramming();
04943 }
04944 break;
04945
04946 case 196:
04947
04948 {
04949 if (parserData->kounter < parserData->numberOfMatrixVar)
04950 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixVar less than number attribute");
04951 }
04952 break;
04953
04954 case 197:
04955
04956 {
04957 osinstance->instanceData->matrixProgramming->matrixVariables = new MatrixVariables();
04958 }
04959 break;
04960
04961 case 198:
04962
04963 {
04964 osinstance->instanceData->matrixProgramming->matrixVariables->numberOfMatrixVar = parserData->numberOfMatrixVar;
04965 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar
04966 = new MatrixVar*[parserData->numberOfMatrixVar];
04967 for (int i=0; i < parserData->numberOfMatrixVar; i++)
04968 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[i] = new MatrixVar();
04969 parserData->kounter = 0;
04970 }
04971 break;
04972
04973 case 206:
04974
04975 {
04976 parserData->kounter += osglData->mult;
04977 }
04978 break;
04979
04980 case 207:
04981
04982 {
04983 osglData->numberOfRowsPresent = false;
04984 osglData->numberOfColumnsPresent = false;
04985 osglData->namePresent = false;
04986 osglData->multPresent = false;
04987 osglData->mult = 1;
04988 osglData->varTypePresent = false;
04989 parserData->templateMatrixIdxPresent = false;
04990 parserData->varReferenceMatrixIdxPresent = false;
04991 parserData->lbMatrixIdxPresent = false;
04992 parserData->lbConeIdxPresent = false;
04993 parserData->ubMatrixIdxPresent = false;
04994 parserData->ubConeIdxPresent = false;
04995 }
04996 break;
04997
04998 case 208:
04999
05000 {
05001 if (osglData->numberOfRowsPresent == false)
05002 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfRows\" missing");
05003 if (osglData->numberOfColumnsPresent == false)
05004 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfColumns\" missing");
05005 if (parserData->kounter + osglData->mult > parserData->numberOfMatrixVar)
05006 parserData->parser_errors +=
05007 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixVar greater than number attribute");
05008 for (int i=0; i<osglData->mult; i++)
05009 {
05010 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->numberOfRows
05011 = osglData->numberOfRows;
05012 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->numberOfColumns
05013 = osglData->numberOfColumns;
05014 if (osglData->namePresent)
05015 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->name
05016 = osglData->name;
05017 if (parserData->templateMatrixIdxPresent)
05018 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->templateMatrixIdx
05019 = parserData->templateMatrixIdx;
05020 if (parserData->varReferenceMatrixIdxPresent)
05021 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->varReferenceMatrixIdx
05022 = parserData->varReferenceMatrixIdx;
05023 if (parserData->lbMatrixIdxPresent)
05024 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->lbMatrixIdx
05025 = parserData->lbMatrixIdx;
05026 if (parserData->lbConeIdxPresent)
05027 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->lbConeIdx
05028 = parserData->lbConeIdx;
05029 if (parserData->ubMatrixIdxPresent)
05030 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->ubMatrixIdx
05031 = parserData->ubMatrixIdx;
05032 if (parserData->ubConeIdxPresent)
05033 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->ubConeIdx
05034 = parserData->ubConeIdx;
05035 if (osglData->varTypePresent)
05036 {
05037 if (returnVarType(osglData->varType[0]) > 0)
05038 osinstance->instanceData->matrixProgramming->matrixVariables->matrixVar[parserData->kounter+i]->varType
05039 = osglData->varType[0];
05040 else
05041 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
05042 "varType must be one of C, B, I, S, D, J");
05043 }
05044 }
05045 }
05046 break;
05047
05048 case 225:
05049
05050 {
05051 if (parserData->kounter < parserData->numberOfMatrixObj)
05052 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixObj less than number attribute");
05053 }
05054 break;
05055
05056 case 226:
05057
05058 {
05059 osinstance->instanceData->matrixProgramming->matrixObjectives = new MatrixObjectives();
05060 }
05061 break;
05062
05063 case 227:
05064
05065 {
05066 osinstance->instanceData->matrixProgramming->matrixObjectives->numberOfMatrixObj = parserData->numberOfMatrixObj;
05067 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj
05068 = new MatrixObj*[parserData->numberOfMatrixObj];
05069 for (int i=0; i < parserData->numberOfMatrixObj; i++)
05070 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[i] = new MatrixObj();
05071 parserData->kounter = 0;
05072 }
05073 break;
05074
05075 case 235:
05076
05077 {
05078 parserData->kounter += osglData->mult;
05079 }
05080 break;
05081
05082 case 236:
05083
05084 {
05085 osglData->numberOfRowsPresent = false;
05086 osglData->numberOfColumnsPresent = false;
05087 osglData->namePresent = false;
05088 osglData->multPresent = false;
05089 osglData->mult = 1;
05090 parserData->templateMatrixIdxPresent = false;
05091 parserData->objReferenceMatrixIdxPresent = false;
05092 parserData->orderConeIdxPresent = false;
05093 parserData->constantMatrixIdxPresent = false;
05094 }
05095 break;
05096
05097 case 237:
05098
05099 {
05100 if (osglData->numberOfRowsPresent == false)
05101 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfRows\" missing");
05102 if (osglData->numberOfColumnsPresent == false)
05103 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfColumns\" missing");
05104 if (parserData->kounter + osglData->mult > parserData->numberOfMatrixObj)
05105 parserData->parser_errors +=
05106 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixObj greater than number attribute");
05107 for (int i=0; i<osglData->mult; i++)
05108 {
05109 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->numberOfRows
05110 = osglData->numberOfRows;
05111 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->numberOfColumns
05112 = osglData->numberOfColumns;
05113 if (osglData->namePresent)
05114 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->name
05115 = osglData->name;
05116 if (parserData->templateMatrixIdxPresent)
05117 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->templateMatrixIdx
05118 = parserData->templateMatrixIdx;
05119 if (parserData->objReferenceMatrixIdxPresent)
05120 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->objReferenceMatrixIdx
05121 = parserData->objReferenceMatrixIdx;
05122 if (parserData->orderConeIdxPresent)
05123 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->orderConeIdx
05124 = parserData->orderConeIdx;
05125 if (parserData->constantMatrixIdxPresent)
05126 osinstance->instanceData->matrixProgramming->matrixObjectives->matrixObj[parserData->kounter+i]->constantMatrixIdx
05127 = parserData->constantMatrixIdx;
05128 }
05129 }
05130 break;
05131
05132 case 251:
05133
05134 {
05135 if (parserData->kounter < parserData->numberOfMatrixCon)
05136 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixCon less than number attribute");
05137 }
05138 break;
05139
05140 case 252:
05141
05142 {
05143 osinstance->instanceData->matrixProgramming->matrixConstraints = new MatrixConstraints();
05144 }
05145 break;
05146
05147 case 253:
05148
05149 {
05150 osinstance->instanceData->matrixProgramming->matrixConstraints->numberOfMatrixCon = parserData->numberOfMatrixCon;
05151 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon
05152 = new MatrixCon*[parserData->numberOfMatrixCon];
05153 for (int i=0; i < parserData->numberOfMatrixCon; i++)
05154 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[i] = new MatrixCon();
05155 parserData->kounter = 0;
05156 }
05157 break;
05158
05159 case 261:
05160
05161 {
05162 parserData->kounter += osglData->mult;
05163 }
05164 break;
05165
05166 case 262:
05167
05168 {
05169 osglData->numberOfRowsPresent = false;
05170 osglData->numberOfColumnsPresent = false;
05171 osglData->namePresent = false;
05172 osglData->multPresent = false;
05173 osglData->mult = 1;
05174 parserData->templateMatrixIdxPresent = false;
05175 parserData->conReferenceMatrixIdxPresent = false;
05176 parserData->lbMatrixIdxPresent = false;
05177 parserData->lbConeIdxPresent = false;
05178 parserData->ubMatrixIdxPresent = false;
05179 parserData->ubConeIdxPresent = false;
05180 }
05181 break;
05182
05183 case 263:
05184
05185 {
05186 if (osglData->numberOfRowsPresent == false)
05187 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfRows\" missing");
05188 if (osglData->numberOfColumnsPresent == false)
05189 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute \"numberOfColumns\" missing");
05190 if (parserData->kounter + osglData->mult > parserData->numberOfMatrixCon)
05191 parserData->parser_errors +=
05192 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrixCon greater than number attribute");
05193 for (int i=0; i<osglData->mult; i++)
05194 {
05195 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->numberOfRows
05196 = osglData->numberOfRows;
05197 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->numberOfColumns
05198 = osglData->numberOfColumns;
05199 if (osglData->namePresent)
05200 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->name
05201 = osglData->name;
05202 if (parserData->templateMatrixIdxPresent)
05203 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->templateMatrixIdx
05204 = parserData->templateMatrixIdx;
05205 if (parserData->conReferenceMatrixIdxPresent)
05206 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->conReferenceMatrixIdx
05207 = parserData->conReferenceMatrixIdx;
05208 if (parserData->lbMatrixIdxPresent)
05209 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->lbMatrixIdx
05210 = parserData->lbMatrixIdx;
05211 if (parserData->lbConeIdxPresent)
05212 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->lbConeIdx
05213 = parserData->lbConeIdx;
05214 if (parserData->ubMatrixIdxPresent)
05215 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->ubMatrixIdx
05216 = parserData->ubMatrixIdx;
05217 if (parserData->ubConeIdxPresent)
05218 osinstance->instanceData->matrixProgramming->matrixConstraints->matrixCon[parserData->kounter+i]->ubConeIdx
05219 = parserData->ubConeIdx;
05220 }
05221 }
05222 break;
05223
05224 case 279:
05225
05226 {osinstance->instanceData->timeDomain = new TimeDomain();}
05227 break;
05228
05229 case 286:
05230
05231 {
05232 if( osinstance->instanceData->timeDomain->stages->numberOfStages > parserData->stagecount )
05233 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of stages less than numberOfStages");
05234
05235
05236
05237
05238 parserData->m_miVarStageInfo = new int [ osinstance->instanceData->variables->numberOfVariables ];
05239 parserData->m_miObjStageInfo = new int [ osinstance->instanceData->objectives->numberOfObjectives ];
05240 parserData->m_miConStageInfo = new int [ osinstance->instanceData->constraints->numberOfConstraints ];
05241 parserData->nvarcovered = 0;
05242 for (int i = 0; i < osinstance->instanceData->variables->numberOfVariables; i++)
05243 parserData->m_miVarStageInfo[i] = -1;
05244 for (int i = 0; i < osinstance->instanceData->objectives->numberOfObjectives; i++)
05245 parserData->m_miObjStageInfo[i] = -1;
05246 for (int i = 0; i < osinstance->instanceData->constraints->numberOfConstraints; i++)
05247 parserData->m_miConStageInfo[i] = -1;
05248 for (int k = 0; k < osinstance->instanceData->timeDomain->stages->numberOfStages; k++)
05249 {for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[k]->variables->numberOfVariables; i++)
05250 {
05251 if (parserData->m_miVarStageInfo[ osinstance->instanceData->timeDomain->stages->stage[k]->variables->var[i]->idx ] != -1)
05252 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "variable belongs to two stages");
05253 parserData->m_miVarStageInfo[ osinstance->instanceData->timeDomain->stages->stage[k]->variables->var[i]->idx ] = k;
05254 };
05255 parserData->nvarcovered += osinstance->instanceData->timeDomain->stages->stage[k]->variables->numberOfVariables;
05256 };
05257 if (parserData->nvarcovered != osinstance->instanceData->variables->numberOfVariables)
05258 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "some variables not assigned to any stage");
05259 parserData->nconcovered = 0;
05260 for (int k = 0; k < osinstance->instanceData->timeDomain->stages->numberOfStages; k++)
05261 {for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[k]->constraints->numberOfConstraints; i++)
05262 {if (parserData->m_miConStageInfo[ osinstance->instanceData->timeDomain->stages->stage[k]->constraints->con[i]->idx ] != -1)
05263 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "constraint belongs to two stages");
05264 parserData->m_miConStageInfo[ osinstance->instanceData->timeDomain->stages->stage[k]->constraints->con[i]->idx ] = k;
05265 };
05266 parserData->nconcovered += osinstance->instanceData->timeDomain->stages->stage[k]->constraints->numberOfConstraints;
05267 };
05268 if (parserData->nconcovered != osinstance->instanceData->constraints->numberOfConstraints)
05269 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "some constraints not assigned to any stage");
05270 for (int k = 0; k < osinstance->instanceData->timeDomain->stages->numberOfStages; k++)
05271 { for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[k]->objectives->numberOfObjectives; i++)
05272 { if (parserData->m_miObjStageInfo[ -osinstance->instanceData->timeDomain->stages->stage[k]->objectives->obj[i]->idx-1 ] == -1)
05273 parserData->m_miObjStageInfo[ -osinstance->instanceData->timeDomain->stages->stage[k]->objectives->obj[i]->idx-1 ] = k;
05274 };
05275 };
05276 for (int i = 0; i < osinstance->instanceData->objectives->numberOfObjectives; i++)
05277 if (parserData->m_miObjStageInfo[i] == -1)
05278 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "some objectives not assigned to any stage");
05279 }
05280 break;
05281
05282 case 287:
05283
05284 {osinstance->instanceData->timeDomain->stages = new TimeDomainStages();}
05285 break;
05286
05287 case 288:
05288
05289 {
05290 if ( *(yyvsp[(2) - (5)].sval) != *(yyvsp[(4) - (5)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05291 if ((yyvsp[(3) - (5)].ival) < 1) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of stages must be positive");
05292 osinstance->instanceData->timeDomain->stages->numberOfStages = (yyvsp[(3) - (5)].ival);
05293 if (osinstance->instanceData->timeDomain->stages->numberOfStages > 0 )
05294 osinstance->instanceData->timeDomain->stages->stage = new TimeDomainStage*[ (yyvsp[(3) - (5)].ival) ];
05295 for(int i = 0; i < (yyvsp[(3) - (5)].ival); i++)
05296 { osinstance->instanceData->timeDomain->stages->stage[i] = new TimeDomainStage();
05297 osinstance->instanceData->timeDomain->stages->stage[i]->variables = new TimeDomainStageVariables();
05298 osinstance->instanceData->timeDomain->stages->stage[i]->constraints = new TimeDomainStageConstraints();
05299 osinstance->instanceData->timeDomain->stages->stage[i]->objectives = new TimeDomainStageObjectives();
05300 }
05301 }
05302 break;
05303
05304 case 291:
05305
05306 {
05307 if( osinstance->instanceData->timeDomain->stages->numberOfStages <= parserData->stagecount)
05308 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many stages");
05309 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables = 0;
05310 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints = 0;
05311 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives = 0;
05312 }
05313 break;
05314
05315 case 292:
05316
05317 {
05318 parserData->stagenameON = false;
05319 parserData->stageVariablesON = false;
05320 parserData->stageObjectivesON = false;
05321 parserData->stageConstraintsON = false;
05322 parserData->stageVariablesOrdered = false;
05323 parserData->stageObjectivesOrdered = false;
05324 parserData->stageConstraintsOrdered = false;
05325 parserData->stageVariableStartIdx = 0;
05326 parserData->stageObjectiveStartIdx = 0;
05327 parserData->stageConstraintStartIdx = 0;
05328 parserData->stagevarcount = 0;
05329 parserData->stageconcount = 0;
05330 parserData->stageobjcount = 0;
05331 parserData->stagecount++;
05332 }
05333 break;
05334
05335 case 294:
05336
05337 {
05338 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->name = (yyvsp[(2) - (3)].sval); free((yyvsp[(2) - (3)].sval));}
05339 break;
05340
05341 case 299:
05342
05343 {
05344 parserData->stageVariablesON = true;
05345 }
05346 break;
05347
05348 case 304:
05349
05350 {
05351 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05352 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05353 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of variables cannot be negative");
05354 if ((yyvsp[(3) - (4)].ival) > osinstance->instanceData->variables->numberOfVariables)
05355 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many variables in this stage");
05356 if ((yyvsp[(3) - (4)].ival) > 0) {
05357 if (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables > 0)
05358 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute numberOfVariables");
05359 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables = (yyvsp[(3) - (4)].ival);
05360 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->var = new TimeDomainStageVar*[ (yyvsp[(3) - (4)].ival) ];
05361 for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05362 { osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->var[i] = new TimeDomainStageVar;
05363 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->var[i]->idx = 0;
05364 }
05365 };
05366 }
05367 break;
05368
05369 case 305:
05370
05371 {
05372 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05373 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05374 if (parserData->stageVariablesOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute");
05375 if ((yyvsp[(3) - (4)].ival) < 0 && (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->variables->numberOfVariables)
05376 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "variable index out of range");
05377 parserData->stageVariablesOrdered = true;
05378 parserData->stageVariableStartIdx = (yyvsp[(3) - (4)].ival);
05379 }
05380 break;
05381
05382 case 306:
05383
05384 {
05385 if ((parserData->stageVariablesOrdered != true) &&
05386 (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables > 0) )
05387 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "varlist missing");
05388 for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables; i++)
05389 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->var[i]->idx = parserData->stageVariableStartIdx + i;
05390 }
05391 break;
05392
05393 case 307:
05394
05395 {
05396 if (parserData->stagevarcount < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables)
05397 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too few variables supplied");
05398 }
05399 break;
05400
05401 case 312:
05402
05403 {if (parserData->stageVariablesOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "no varlist expected");}
05404 break;
05405
05406 case 314:
05407
05408 {
05409 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05410 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05411 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->variables->numberOfVariables)
05412 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "variable index out of range");
05413 if (parserData->stagevarcount >= osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->numberOfVariables)
05414 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many variables in this stage");
05415 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->variables->var[parserData->stagevarcount]->idx = (yyvsp[(3) - (4)].ival);
05416 parserData->stagevarcount++;
05417 }
05418 break;
05419
05420 case 318:
05421
05422 {
05423 parserData->stageConstraintsON = true;
05424 }
05425 break;
05426
05427 case 323:
05428
05429 {
05430 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05431 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05432 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of constraints cannot be negative");
05433 if ((yyvsp[(3) - (4)].ival) > osinstance->instanceData->constraints->numberOfConstraints)
05434 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many constraints in this stage");
05435 if ((yyvsp[(3) - (4)].ival) > 0) {
05436 if (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints > 0)
05437 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute numberOfConstraints");
05438 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints = (yyvsp[(3) - (4)].ival);
05439 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->con = new TimeDomainStageCon*[ (yyvsp[(3) - (4)].ival) ];
05440 for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05441 { osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->con[i] = new TimeDomainStageCon;
05442 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->con[i]->idx = 0;
05443 }
05444 };
05445 }
05446 break;
05447
05448 case 324:
05449
05450 {
05451 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05452 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05453 if (parserData->stageConstraintsOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute");
05454 if ((yyvsp[(3) - (4)].ival) < 0 && (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->constraints->numberOfConstraints)
05455 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "constraint index out of range");
05456 parserData->stageConstraintsOrdered = true;
05457 parserData->stageConstraintStartIdx = (yyvsp[(3) - (4)].ival);
05458 }
05459 break;
05460
05461 case 325:
05462
05463 {
05464 if ((parserData->stageConstraintsOrdered != true) &&
05465 (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints > 0) )
05466 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "conlist missing");
05467 for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints; i++)
05468 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->con[i]->idx = parserData->stageConstraintStartIdx + i;
05469 }
05470 break;
05471
05472 case 326:
05473
05474 {
05475 if (parserData->stageconcount < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints)
05476 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too few constraints supplied");
05477 }
05478 break;
05479
05480 case 331:
05481
05482 {if (parserData->stageConstraintsOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "no conlist expected");}
05483 break;
05484
05485 case 333:
05486
05487 {
05488 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05489 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05490 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->constraints->numberOfConstraints)
05491 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "constraint index out of range");
05492 if (parserData->stageconcount >= osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->numberOfConstraints)
05493 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many constraints in this stage");
05494 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->constraints->con[parserData->stageconcount]->idx = (yyvsp[(3) - (4)].ival);
05495 parserData->stageconcount++;
05496 }
05497 break;
05498
05499 case 336:
05500
05501 {
05502 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives =
05503 osinstance->instanceData->objectives->numberOfObjectives;
05504 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj =
05505 new TimeDomainStageObj*[ osinstance->instanceData->objectives->numberOfObjectives ];
05506 for (int i = 0; i < osinstance->instanceData->objectives->numberOfObjectives; i++)
05507 { osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[i] = new TimeDomainStageObj;
05508 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[i]->idx = -(i+1);
05509 }
05510 }
05511 break;
05512
05513 case 337:
05514
05515 {
05516 parserData->stageObjectivesON = true;
05517 }
05518 break;
05519
05520 case 342:
05521
05522 {
05523 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05524 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05525 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of objectives cannot be negative");
05526 if ((yyvsp[(3) - (4)].ival) > osinstance->instanceData->objectives->numberOfObjectives)
05527 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many objectives in this stage");
05528 if ((yyvsp[(3) - (4)].ival) > 0) {
05529 if (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives > 0)
05530 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute numberOfObjectives");
05531 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives = (yyvsp[(3) - (4)].ival);
05532 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj = new TimeDomainStageObj*[ (yyvsp[(3) - (4)].ival) ];
05533 for (int i = 0; i < (yyvsp[(3) - (4)].ival); i++)
05534 { osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[i] = new TimeDomainStageObj;
05535 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[i]->idx = 0;
05536 }
05537 };
05538 }
05539 break;
05540
05541 case 343:
05542
05543 {
05544 if ((parserData->stageObjectivesOrdered != true) &&
05545 (osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives > 0) )
05546 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "objlist missing");
05547 for (int i = 0; i < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives; i++)
05548 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[i]->idx = parserData->stageObjectiveStartIdx - i;
05549 }
05550 break;
05551
05552 case 344:
05553
05554 {
05555 if (parserData->stageobjcount < osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives)
05556 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too few objectives supplied");
05557 }
05558 break;
05559
05560 case 349:
05561
05562 {if (parserData->stageObjectivesOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "no objlist expected");}
05563 break;
05564
05565 case 351:
05566
05567 {
05568 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05569 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05570 if ((yyvsp[(3) - (4)].ival) >= 0 || (yyvsp[(3) - (4)].ival) >= -osinstance->instanceData->objectives->numberOfObjectives - 1)
05571 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "objective index out of range");
05572 if (parserData->stageobjcount >= osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->numberOfObjectives)
05573 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many objectives in this stage");
05574 osinstance->instanceData->timeDomain->stages->stage[parserData->stagecount]->objectives->obj[parserData->stageobjcount]->idx = (yyvsp[(3) - (4)].ival);
05575 parserData->stageobjcount++;
05576 }
05577 break;
05578
05579 case 354:
05580
05581 {osinstance->instanceData->timeDomain->interval = new TimeDomainInterval();
05582 }
05583 break;
05584
05585 case 355:
05586
05587 {
05588 parserData->intervalhorizonON = false;
05589 parserData->intervalstartON = false;
05590 printf("Interval not yet supported.\n\n");
05591 }
05592 break;
05593
05594 case 360:
05595
05596 { if(parserData->intervalhorizonON)
05597 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many interval horizon attributes");
05598 parserData->intervalhorizonON = true; }
05599 break;
05600
05601 case 361:
05602
05603 { if(parserData->intervalstartON)
05604 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many interval start attributes");
05605 parserData->intervalstartON = true; }
05606 break;
05607
05608 case 362:
05609
05610 {
05611 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05612 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05613 if (parserData->stageObjectivesOrdered == true) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "duplicate attribute");
05614 if ((yyvsp[(3) - (4)].ival) >= 0 && (yyvsp[(3) - (4)].ival) <= -osinstance->instanceData->objectives->numberOfObjectives - 1)
05615 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "objective index out of range");
05616 parserData->stageObjectivesOrdered = true;
05617 parserData->stageObjectiveStartIdx = (yyvsp[(3) - (4)].ival);
05618 }
05619 break;
05620
05621 case 363:
05622
05623 {
05624 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05625 parserData->intervalhorizon = parserData->tempVal;}
05626 break;
05627
05628 case 364:
05629
05630 {
05631 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05632 parserData->intervalstart = parserData->tempVal;}
05633 break;
05634
05635 case 365:
05636
05637 {
05638 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05639 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05640 if (osglData->numberOfMatricesPresent)
05641 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfMatrices attribute previously set");
05642 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <matrix> elements cannot be negative");
05643 osglData->numberOfMatricesPresent = true;
05644 osglData->numberOfMatrices = (yyvsp[(3) - (4)].ival);
05645 }
05646 break;
05647
05648 case 366:
05649
05650 {
05651 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05652 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05653 if (parserData->numberOfConesPresent)
05654 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfCones attribute previously set");
05655 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <cone> elements cannot be negative");
05656 parserData->numberOfConesPresent = true;
05657 parserData->numberOfCones = (yyvsp[(3) - (4)].ival);
05658 }
05659 break;
05660
05661 case 367:
05662
05663 {
05664 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05665 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05666 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of matrix variables cannot be negative");
05667 parserData->numberOfMatrixVar = (yyvsp[(3) - (4)].ival);
05668 }
05669 break;
05670
05671 case 368:
05672
05673 {
05674 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05675 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05676 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of matrix objectives cannot be negative");
05677 parserData->numberOfMatrixObj = (yyvsp[(3) - (4)].ival);
05678 }
05679 break;
05680
05681 case 369:
05682
05683 {
05684 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05685 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05686 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of matrix constraints cannot be negative");
05687 parserData->numberOfMatrixCon = (yyvsp[(3) - (4)].ival);
05688 }
05689 break;
05690
05691 case 370:
05692
05693 {
05694 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05695 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05696 if (parserData->normScaleFactorPresent)
05697 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "normScaleFactor attribute previously set");
05698 if (parserData->tempVal <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "scale factor must be positive");
05699 parserData->normScaleFactorPresent = true;
05700 parserData->normScaleFactor = parserData->tempVal;
05701 }
05702 break;
05703
05704 case 371:
05705
05706 {
05707 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05708 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05709 if (parserData->distortionMatrixPresent)
05710 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "distortionMatrixIdx attribute previously set");
05711 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "distortion matrix index cannot be negative");
05712 parserData->distortionMatrixPresent = true;
05713 parserData->distortionMatrix = (yyvsp[(3) - (4)].ival);
05714 }
05715 break;
05716
05717 case 372:
05718
05719 {
05720 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05721 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05722 if (parserData->axisDirectionPresent)
05723 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "axisDirection attribute previously set");
05724 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "axis direction index cannot be negative");
05725 parserData->axisDirectionPresent = true;
05726 parserData->axisDirection = (yyvsp[(3) - (4)].ival);
05727 }
05728 break;
05729
05730 case 373:
05731
05732 {
05733 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05734 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05735 if (parserData->firstAxisDirectionPresent)
05736 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "firstAxisDirection attribute previously set");
05737 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "axis direction index cannot be negative");
05738 parserData->firstAxisDirectionPresent = true;
05739 parserData->firstAxisDirection = (yyvsp[(3) - (4)].ival);
05740 }
05741 break;
05742
05743 case 374:
05744
05745 {
05746 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05747 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05748 if (parserData->secondAxisDirectionPresent)
05749 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "secondAxisDirection attribute previously set");
05750 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "axis direction index cannot be negative");
05751 parserData->secondAxisDirectionPresent = true;
05752 parserData->secondAxisDirection = (yyvsp[(3) - (4)].ival);
05753 }
05754 break;
05755
05756 case 375:
05757
05758 {
05759 if (parserData->semidefinitenessPresent)
05760 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "name attribute previously set");
05761 parserData->semidefinitenessPresent = true;
05762 if ((yyvsp[(2) - (3)].sval) != "positive" && (yyvsp[(2) - (3)].sval) != "negative")
05763 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "semidefiniteness must be either \"positive\" or \"negative\"");
05764 else
05765 parserData->semidefiniteness = (yyvsp[(2) - (3)].sval);
05766 free((yyvsp[(2) - (3)].sval));
05767 }
05768 break;
05769
05770 case 376:
05771
05772 {
05773 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05774 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05775 if (parserData->matrixIdxPresent)
05776 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "matrixIdx attribute previously set");
05777 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "matrix index cannot be negative");
05778 parserData->matrixIdxPresent = true;
05779 parserData->matrixIdx = (yyvsp[(3) - (4)].ival);
05780 }
05781 break;
05782
05783 case 377:
05784
05785 {
05786 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05787 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05788 if (parserData->lbMatrixIdxPresent)
05789 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one lbMatrix attribute allowed");
05790 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05791 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for lbMatrix attribute");
05792 parserData->lbMatrixIdxPresent = true;
05793 parserData->lbMatrixIdx = (yyvsp[(3) - (4)].ival);
05794 }
05795 break;
05796
05797 case 378:
05798
05799 {
05800 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05801 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05802 if (parserData->ubMatrixIdxPresent)
05803 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one ubMatrix attribute allowed");
05804 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05805 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for ubMatrix attribute");
05806 parserData->ubMatrixIdxPresent = true;
05807 parserData->ubMatrixIdx = (yyvsp[(3) - (4)].ival);
05808 }
05809 break;
05810
05811 case 379:
05812
05813 {
05814 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05815 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05816 if (parserData->constantMatrixIdxPresent)
05817 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one constant matrix attribute allowed");
05818 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05819 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for constant matrix attribute");
05820 parserData->constantMatrixIdxPresent = true;
05821 parserData->constantMatrixIdx = (yyvsp[(3) - (4)].ival);
05822 }
05823 break;
05824
05825 case 380:
05826
05827 {
05828 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
05829 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
05830 if (parserData->templateMatrixIdxPresent)
05831 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "templateMatrixIdx attribute previously set");
05832 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05833 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "template matrix index cannot be negative");
05834 parserData->templateMatrixIdxPresent = true;
05835 parserData->templateMatrixIdx = (yyvsp[(3) - (4)].ival);
05836 }
05837 break;
05838
05839 case 381:
05840
05841 {
05842 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05843 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05844 if (parserData->varReferenceMatrixIdxPresent)
05845 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one varReference matrix attribute allowed");
05846 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05847 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for varReference matrix attribute");
05848 parserData->varReferenceMatrixIdxPresent = true;
05849 parserData->varReferenceMatrixIdx = (yyvsp[(3) - (4)].ival);
05850 }
05851 break;
05852
05853 case 382:
05854
05855 {
05856 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05857 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05858 if (parserData->objReferenceMatrixIdxPresent)
05859 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one objReference matrix attribute allowed");
05860 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05861 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for objReference matrix attribute");
05862 parserData->objReferenceMatrixIdxPresent = true;
05863 parserData->objReferenceMatrixIdx = (yyvsp[(3) - (4)].ival);
05864 }
05865 break;
05866
05867 case 383:
05868
05869 {
05870 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05871 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05872 if (parserData->conReferenceMatrixIdxPresent)
05873 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one conReference matrix attribute allowed");
05874 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->matrices->numberOfMatrices)
05875 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for conReference matrix attribute");
05876 parserData->conReferenceMatrixIdxPresent = true;
05877 parserData->conReferenceMatrixIdx = (yyvsp[(3) - (4)].ival);
05878 }
05879 break;
05880
05881 case 384:
05882
05883 {
05884 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05885 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05886 if (parserData->lbConeIdxPresent)
05887 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one lbCone attribute allowed");
05888 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->cones->numberOfCones)
05889 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for lbCone attribute");
05890 parserData->lbConeIdxPresent = true;
05891 parserData->lbConeIdx = (yyvsp[(3) - (4)].ival);
05892 }
05893 break;
05894
05895 case 385:
05896
05897 {
05898 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05899 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05900 if (parserData->ubConeIdxPresent)
05901 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one ubCone attribute allowed");
05902 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->cones->numberOfCones)
05903 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for ubCone attribute");
05904 parserData->ubConeIdxPresent = true;
05905 parserData->ubConeIdx = (yyvsp[(3) - (4)].ival);
05906 }
05907 break;
05908
05909 case 386:
05910
05911 {
05912 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
05913 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
05914 if (parserData->orderConeIdxPresent)
05915 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one orderCone attribute allowed");
05916 if ((yyvsp[(3) - (4)].ival) < 0 || (yyvsp[(3) - (4)].ival) >= osinstance->instanceData->cones->numberOfCones)
05917 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "illegal value for orderCone attribute");
05918 parserData->orderConeIdxPresent = true;
05919 parserData->orderConeIdx = (yyvsp[(3) - (4)].ival);
05920 }
05921 break;
05922
05923 case 387:
05924
05925 {parserData->tempVal = (yyvsp[(2) - (3)].ival);}
05926 break;
05927
05928 case 388:
05929
05930 {parserData->tempVal = (yyvsp[(2) - (3)].dval);}
05931 break;
05932
05933 case 396:
05934
05935 {
05936 if (osglData->osglCounter < osglData->numberOfEl)
05937 {
05938 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "fewer data elements than specified");
05939 parserData->ignoreDataAfterErrors = true;
05940 }
05941 }
05942 break;
05943
05944 case 401:
05945
05946 {
05947 osglData->multPresent = false;
05948 osglData->incrPresent = false;
05949 osglData->mult = 1;
05950 osglData->incr = 0;
05951 }
05952 break;
05953
05954 case 407:
05955
05956 {
05957 if (osglData->osglCounter + osglData->mult > osglData->numberOfEl)
05958 {
05959 if (!parserData->suppressFurtherErrorMessages)
05960 {
05961 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more data elements than specified");
05962 parserData->suppressFurtherErrorMessages = true;
05963 parserData->ignoreDataAfterErrors = true;
05964 }
05965 }
05966 else
05967 for (int i=0; i<osglData->mult; i++)
05968 osglData->osglIntArray[osglData->osglCounter++] = (yyvsp[(2) - (3)].ival) + i*osglData->incr;
05969 }
05970 break;
05971
05972 case 413:
05973
05974 {
05975 char* b64string = (yyvsp[(2) - (3)].sval);
05976 if( b64string == NULL)
05977 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 data expected");
05978 if (osglData->base64Size != sizeof(int))
05979 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 encoded with a size of int different than on this machine");
05980
05981 std::string base64decodeddata = Base64::decodeb64( b64string );
05982 int base64decodeddatalength = base64decodeddata.length();
05983 int *intvec = NULL;
05984 if ( osglData->numberOfEl != (base64decodeddatalength/osglData->base64Size) )
05985 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 data length does not match numberOfEl");
05986 else
05987 {
05988 intvec = (int*)&base64decodeddata[0];
05989 for(int i = 0; i < (base64decodeddatalength/osglData->base64Size); i++)
05990 {
05991 osglData->osglIntArray[i] = *(intvec++);
05992 }
05993 }
05994
05995 free((yyvsp[(2) - (3)].sval));
05996 }
05997 break;
05998
05999 case 414:
06000
06001 {
06002 if (osglData->osglCounter < osglData->numberOfEl)
06003 {
06004 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "fewer data elements than specified");
06005 parserData->ignoreDataAfterErrors = true;
06006 }
06007 }
06008 break;
06009
06010 case 419:
06011
06012 {
06013 osglData->multPresent = false;
06014 osglData->incrPresent = false;
06015 osglData->mult = 1;
06016 }
06017 break;
06018
06019 case 422:
06020
06021 {
06022 if (osglData->osglCounter + osglData->mult > osglData->numberOfEl)
06023 {
06024 if (!parserData->suppressFurtherErrorMessages)
06025 {
06026 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more data elements than specified");
06027 parserData->suppressFurtherErrorMessages = true;
06028 parserData->ignoreDataAfterErrors = true;
06029 }
06030 }
06031 else
06032 for (int i=0; i<osglData->mult; i++)
06033 osglData->osglDblArray[osglData->osglCounter++] = parserData->tempVal;
06034 }
06035 break;
06036
06037 case 428:
06038
06039 {
06040 char* b64string = (yyvsp[(2) - (3)].sval);
06041 if( b64string == NULL)
06042 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 data expected");
06043 if (osglData->base64Size != sizeof(int))
06044 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 encoded with a size of int different than on this machine");
06045
06046 std::string base64decodeddata = Base64::decodeb64( b64string );
06047 int base64decodeddatalength = base64decodeddata.length();
06048 double *dblvec = NULL;
06049 if ( osglData->numberOfEl != (base64decodeddatalength/osglData->base64Size) )
06050 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base 64 data length does not match numberOfEl");
06051 else
06052 {
06053 dblvec = (double*)&base64decodeddata[0];
06054 for(int i = 0; i < (base64decodeddatalength/osglData->base64Size); i++)
06055 {
06056 osglData->osglDblArray[i] = *(dblvec++);
06057 }
06058 }
06059
06060 free((yyvsp[(2) - (3)].sval));
06061 }
06062 break;
06063
06064 case 429:
06065
06066 {
06067
06068 osglData->matrix[osglData->matrixCounter] =
06069 ((OSMatrix*)osglData->mtxConstructorVec[0])->createConstructorTreeFromPrefix(osglData->mtxConstructorVec);
06070 osglData->matrix[osglData->matrixCounter]->idx = osglData->matrixCounter;
06071 osglData->matrixCounter++;
06072 }
06073 break;
06074
06075 case 430:
06076
06077 {
06078 if (osglData->matrixCounter >= osglData->numberOfMatrices)
06079 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more matrices than specified");
06080 osglData->symmetryPresent = false;
06081 osglData->typePresent = false;
06082 osglData->numberOfRowsPresent = false;
06083 osglData->numberOfColumnsPresent = false;
06084 osglData->namePresent = false;
06085 osglData->mtxConstructorVec.clear();
06086 osglData->mtxBlocksVec.clear();
06087 osglData->mtxBlkVec.clear();
06088 osglData->nBlocksVec.clear();
06089
06094 osglData->tempC = new OSMatrix();
06095 osglData->mtxConstructorVec.push_back((OSMatrix*)osglData->tempC);
06096 osglData->mtxBlkVec.push_back((OSMatrix*)osglData->tempC);
06097 }
06098 break;
06099
06100 case 431:
06101
06102 {
06103 if (osglData->numberOfRowsPresent == false)
06104 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute numberOfRows is missing");
06105 else
06106 ((OSMatrix*)osglData->tempC)->numberOfRows = osglData->numberOfRows;
06107 if (osglData->numberOfColumnsPresent == false)
06108 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute numberOfColumns is missing");
06109 else
06110 ((OSMatrix*)osglData->tempC)->numberOfColumns = osglData->numberOfColumns;
06111 if (osglData->symmetryPresent == true)
06112 ((OSMatrix*)osglData->tempC)->symmetry = (ENUM_MATRIX_SYMMETRY)returnMatrixSymmetry(osglData->symmetry);
06113 if (osglData->namePresent == true)
06114 ((OSMatrix*)osglData->tempC)->name = osglData->name;
06115 if (osglData->typePresent == true)
06116 ((OSMatrix*)osglData->tempC)->matrixType = (ENUM_MATRIX_TYPE)returnMatrixType(osglData->type);
06117 }
06118 break;
06119
06120 case 439:
06121
06122 {
06123 if (osglData->matrixCounter >= osglData->numberOfMatrixVar)
06124 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more matrices than specified");
06125 osglData->symmetryPresent = false;
06126 osglData->typePresent = false;
06127 osglData->numberOfRowsPresent = false;
06128 osglData->numberOfColumnsPresent = false;
06129 osglData->namePresent = false;
06130 osglData->matrixVarIdxPresent = false;
06131
06132 osglData->mtxConstructorVec.clear();
06133 osglData->mtxBlocksVec.clear();
06134 osglData->mtxBlkVec.clear();
06135 osglData->nBlocksVec.clear();
06136
06141 osglData->tempC = new OSMatrixWithMatrixVarIdx();
06142 osglData->mtxConstructorVec.push_back((OSMatrixWithMatrixVarIdx*)osglData->tempC);
06143 osglData->mtxBlkVec.push_back((OSMatrixWithMatrixVarIdx*)osglData->tempC);
06144 }
06145 break;
06146
06147 case 440:
06148
06149 {
06150 if (osglData->matrixCounter >= osglData->numberOfMatrixObj)
06151 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more matrices than specified");
06152 osglData->symmetryPresent = false;
06153 osglData->typePresent = false;
06154 osglData->numberOfRowsPresent = false;
06155 osglData->numberOfColumnsPresent = false;
06156 osglData->namePresent = false;
06157 osglData->matrixObjIdxPresent = false;
06158
06159 osglData->mtxConstructorVec.clear();
06160 osglData->mtxBlocksVec.clear();
06161 osglData->mtxBlkVec.clear();
06162 osglData->nBlocksVec.clear();
06163
06168 osglData->tempC = new OSMatrixWithMatrixObjIdx();
06169 osglData->mtxConstructorVec.push_back((OSMatrixWithMatrixObjIdx*)osglData->tempC);
06170 osglData->mtxBlkVec.push_back((OSMatrixWithMatrixObjIdx*)osglData->tempC);
06171 }
06172 break;
06173
06174 case 441:
06175
06176 {
06177 if (osglData->matrixCounter >= osglData->numberOfMatrixCon)
06178 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more matrices than specified");
06179 osglData->symmetryPresent = false;
06180 osglData->typePresent = false;
06181 osglData->numberOfRowsPresent = false;
06182 osglData->numberOfColumnsPresent = false;
06183 osglData->namePresent = false;
06184 osglData->matrixConIdxPresent = false;
06185
06186 osglData->mtxConstructorVec.clear();
06187 osglData->mtxBlocksVec.clear();
06188 osglData->mtxBlkVec.clear();
06189 osglData->nBlocksVec.clear();
06190
06195 osglData->tempC = new OSMatrixWithMatrixConIdx();
06196 osglData->mtxConstructorVec.push_back((OSMatrixWithMatrixConIdx*)osglData->tempC);
06197 osglData->mtxBlkVec.push_back((OSMatrixWithMatrixConIdx*)osglData->tempC);
06198 }
06199 break;
06200
06201 case 445:
06202
06203 {
06204 osglData->mtxBlkVec.back()->m_mChildren =
06205 new MatrixNode*[osglData->mtxBlkVec.back()->inumberOfChildren];
06206 osglData->mtxBlkVec.pop_back();
06207 }
06208 break;
06209
06210 case 448:
06211
06212 {
06213 osglData->mtxBlkVec.back()->inumberOfChildren++;
06214 }
06215 break;
06216
06217 case 449:
06218
06219 {
06220 osglData->tempC = new BaseMatrix();
06221 osglData->mtxConstructorVec.push_back((BaseMatrix*)osglData->tempC);
06222
06223 osglData->baseMatrixIdxPresent = false;
06224 osglData->targetMatrixFirstRowPresent = false;
06225 osglData->targetMatrixFirstColPresent = false;
06226 osglData->baseMatrixStartRowPresent = false;
06227 osglData->baseMatrixStartColPresent = false;
06228 osglData->baseMatrixEndRowPresent = false;
06229 osglData->baseMatrixEndColPresent = false;
06230 osglData->baseTransposePresent = false;
06231 osglData->scalarMultiplierPresent = false;
06232 osglData->baseMatrixEndRow = -1;
06233 osglData->baseMatrixEndCol = -1;
06234 }
06235 break;
06236
06237 case 450:
06238
06239 {
06240 if (osglData->baseMatrixIdxPresent == false)
06241 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute baseMatrixIdx is missing");
06242 else
06243 {
06244 ((BaseMatrix*)osglData->tempC)->baseMatrixIdx = osglData->baseMatrixIdx;
06245 ((BaseMatrix*)osglData->tempC)->baseMatrix = (OSMatrix*)osglData->matrix[osglData->baseMatrixIdx];
06246 }
06247 if (osglData->targetMatrixFirstRowPresent == true)
06248 ((BaseMatrix*)osglData->tempC)->targetMatrixFirstRow = osglData->targetMatrixFirstRow;
06249 if (osglData->targetMatrixFirstColPresent == true)
06250 ((BaseMatrix*)osglData->tempC)->targetMatrixFirstCol = osglData->targetMatrixFirstCol;
06251 if (osglData->baseMatrixStartRowPresent == true)
06252 ((BaseMatrix*)osglData->tempC)->baseMatrixStartRow = osglData->baseMatrixStartRow;
06253 if (osglData->baseMatrixStartColPresent == true)
06254 ((BaseMatrix*)osglData->tempC)->baseMatrixStartCol = osglData->baseMatrixStartCol;
06255 if (osglData->baseMatrixEndRowPresent == true)
06256 ((BaseMatrix*)osglData->tempC)->baseMatrixEndRow = osglData->baseMatrixEndRow;
06257 if (osglData->baseMatrixEndColPresent == true)
06258 ((BaseMatrix*)osglData->tempC)->baseMatrixEndCol = osglData->baseMatrixEndCol;
06259 if (osglData->baseTransposePresent == true)
06260 ((BaseMatrix*)osglData->tempC)->baseTranspose = osglData->baseTranspose;
06261 if (osglData->scalarMultiplierPresent == true)
06262 ((BaseMatrix*)osglData->tempC)->scalarMultiplier = osglData->scalarMultiplier;
06263 }
06264 break;
06265
06266 case 465:
06267
06268 {
06269 osglData->mtxBlkVec.back()->inumberOfChildren++;
06270 }
06271 break;
06272
06273 case 475:
06274
06275 {
06276 osglData->tempC = new ConstantMatrixElements();
06277 osglData->mtxConstructorVec.push_back(osglData->tempC);
06278 osglData->numberOfValuesPresent = false;
06279 osglData->rowMajorPresent = false;
06280 osglData->rowMajor = false;
06281 }
06282 break;
06283
06284 case 476:
06285
06286 {
06287 if (osglData->numberOfValuesPresent == false)
06288 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<constantElements>: numberOfValues attribute missing");
06289 }
06290 break;
06291
06292 case 479:
06293
06294 {
06295 ((ConstantMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06296 if (osglData->numberOfValues > 0)
06297 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_constant;
06298 }
06299 break;
06300
06301 case 480:
06302
06303 {
06304 ((ConstantMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06305 }
06306 break;
06307
06308 case 484:
06309
06310 {
06311 ((MatrixElements*)osglData->tempC)->start = new IntVector();
06312 ((MatrixElements*)osglData->tempC)->start->numberOfEl = osglData->numberOfEl;
06313 ((MatrixElements*)osglData->tempC)->start->el = osglData->osglIntArray;
06314 osglData->osglIntArray = NULL;
06315 parserData->suppressFurtherErrorMessages = false;
06316 parserData->ignoreDataAfterErrors = false;
06317 }
06318 break;
06319
06320 case 485:
06321
06322 {
06323 if (osglData->rowMajor == false)
06324 osglData->numberOfEl = ((MatrixType*)osglData->mtxBlkVec.back())->numberOfColumns + 1;
06325 else
06326 osglData->numberOfEl = ((MatrixType*)osglData->mtxBlkVec.back())->numberOfRows + 1;
06327 osglData->osglIntArray = new int[osglData->numberOfEl];
06328 osglData->osglCounter = 0;
06329 }
06330 break;
06331
06332 case 491:
06333
06334 {
06335 ((MatrixElements*)osglData->tempC)->index = new IntVector();
06336 ((MatrixElements*)osglData->tempC)->index->numberOfEl
06337 = ((MatrixElements*)osglData->tempC)->numberOfValues;
06338 ((MatrixElements*)osglData->tempC)->index->el = osglData->osglIntArray;
06339 osglData->osglIntArray = NULL;
06340 parserData->suppressFurtherErrorMessages = false;
06341 parserData->ignoreDataAfterErrors = false;
06342 }
06343 break;
06344
06345 case 492:
06346
06347 {
06348 osglData->numberOfEl = ((MatrixElements*)osglData->tempC)->numberOfValues;
06349 osglData->osglIntArray = new int[osglData->numberOfEl];
06350 osglData->osglCounter = 0;
06351 }
06352 break;
06353
06354 case 498:
06355
06356 {
06357 ((ConstantMatrixElements*)osglData->tempC)->value = new ConstantMatrixValues();
06358 ((ConstantMatrixElements*)osglData->tempC)->value->numberOfEl = osglData->numberOfEl;
06359 ((ConstantMatrixElements*)osglData->tempC)->value->el = osglData->osglDblArray;
06360 osglData->osglDblArray = NULL;
06361 parserData->suppressFurtherErrorMessages = false;
06362 parserData->ignoreDataAfterErrors = false;
06363 }
06364 break;
06365
06366 case 499:
06367
06368 {
06369 osglData->numberOfEl = ((ConstantMatrixElements*)osglData->tempC)->numberOfValues;
06370 osglData->osglDblArray = new double[osglData->numberOfEl];
06371 osglData->osglCounter = 0;
06372 }
06373 break;
06374
06375 case 506:
06376
06377 {
06378 osglData->tempC = new VarReferenceMatrixElements();
06379 osglData->mtxConstructorVec.push_back(osglData->tempC);
06380 osglData->numberOfValuesPresent = false;
06381 osglData->rowMajorPresent = false;
06382 osglData->rowMajor = false;
06383 }
06384 break;
06385
06386 case 507:
06387
06388 {
06389 if (osglData->numberOfValuesPresent == false)
06390 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<varReferenceElements>: numberOfValues attribute missing");
06391 }
06392 break;
06393
06394 case 510:
06395
06396 {
06397 ((VarReferenceMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06398 if (osglData->numberOfValues > 0)
06399 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_varReference;
06400 }
06401 break;
06402
06403 case 511:
06404
06405 {
06406 ((VarReferenceMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06407 }
06408 break;
06409
06410 case 515:
06411
06412 {
06413 ((VarReferenceMatrixElements*)osglData->tempC)->value = new VarReferenceMatrixValues();
06414 ((VarReferenceMatrixElements*)osglData->tempC)->value->numberOfEl = osglData->numberOfEl;
06415 ((VarReferenceMatrixElements*)osglData->tempC)->value->el = osglData->osglIntArray;
06416 osglData->osglIntArray = NULL;
06417 parserData->suppressFurtherErrorMessages = false;
06418 parserData->ignoreDataAfterErrors = false;
06419 }
06420 break;
06421
06422 case 516:
06423
06424 {
06425 osglData->numberOfEl = ((VarReferenceMatrixElements*)osglData->tempC)->numberOfValues;
06426 osglData->osglIntArray = new int[osglData->numberOfEl];
06427 osglData->osglCounter = 0;
06428 }
06429 break;
06430
06431 case 523:
06432
06433 {
06434 osglData->tempC = new LinearMatrixElements();
06435 osglData->mtxConstructorVec.push_back(osglData->tempC);
06436 osglData->numberOfValuesPresent = false;
06437 osglData->rowMajorPresent = false;
06438 osglData->rowMajor = false;
06439 }
06440 break;
06441
06442 case 524:
06443
06444 {
06445 if (osglData->numberOfValuesPresent == false)
06446 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<linearElements>: numberOfValues attribute missing");
06447 }
06448 break;
06449
06450 case 527:
06451
06452 {
06453 ((LinearMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06454 if (osglData->numberOfValues > 0)
06455 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_linear;
06456 }
06457 break;
06458
06459 case 528:
06460
06461 {
06462 ((LinearMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06463 }
06464 break;
06465
06466 case 532:
06467
06468 {
06469 if (osglData->numberOfValues > 0)
06470 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "expected <value> element");
06471 }
06472 break;
06473
06474 case 533:
06475
06476 {
06477 if (osglData->numberOfValues > osglData->nonzeroCounter)
06478 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too few <el> elements");
06479 else if (osglData->numberOfValues < osglData->nonzeroCounter)
06480 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many <el> elements");
06481 ((LinearMatrixElements*)osglData->tempC)->value->numberOfEl = osglData->numberOfEl;
06482 parserData->suppressFurtherErrorMessages = false;
06483 parserData->ignoreDataAfterErrors = false;
06484 }
06485 break;
06486
06487 case 534:
06488
06489 {
06490 osglData->numberOfValues = ((LinearMatrixElements*)osglData->tempC)->numberOfValues;
06491 osglData->nonzeroCounter = 0;
06492 ((LinearMatrixElements*)osglData->tempC)->value = new LinearMatrixValues();
06493 ((LinearMatrixElements*)osglData->tempC)->value->numberOfEl
06494 = ((LinearMatrixElements*)osglData->tempC)->numberOfValues;
06495 ((LinearMatrixElements*)osglData->tempC)->value->el
06496 = new LinearMatrixElement*[((LinearMatrixElements*)osglData->tempC)->numberOfValues];
06497 for (int i=0; i < ((LinearMatrixElements*)osglData->tempC)->numberOfValues; i++)
06498 ((LinearMatrixElements*)osglData->tempC)->value->el[i] = new LinearMatrixElement();
06499 osglData->osglCounter = 0;
06500 osglData->numberOfVarIdxPresent = false;
06501 }
06502 break;
06503
06504 case 542:
06505
06506 {
06507 osglData->nonzeroCounter++;
06508 if (osglData->nonzeroCounter > osglData->numberOfValues)
06509 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "linear matrix elements: too many nonzeros");
06510 }
06511 break;
06512
06513 case 543:
06514
06515 {
06516 osglData->numberOfVarIdxPresent = false;
06517 osglData->constantPresent = false;
06518 osglData->constant = 0.0;
06519 }
06520 break;
06521
06522 case 544:
06523
06524 {
06525 if (!osglData->numberOfVarIdxPresent)
06526 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfVarIdx attribute missing");
06527 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->numberOfVarIdx
06528 = osglData->numberOfVarIdx;
06529 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->varIdx
06530 = new LinearMatrixElementTerm*[osglData->numberOfVarIdx];
06531 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->constant
06532 = osglData->constant;
06533 osglData->osglCounter = 0;
06534 }
06535 break;
06536
06537 case 556:
06538
06539 {
06540 osglData->coefPresent = false;
06541 osglData->coef = 1.0;
06542 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->varIdx[osglData->osglCounter]
06543 = new LinearMatrixElementTerm();
06544 }
06545 break;
06546
06547 case 558:
06548
06549 {
06550 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->varIdx[osglData->osglCounter]->coef = osglData->coef;
06551 }
06552 break;
06553
06554 case 559:
06555
06556 {
06557 ((LinearMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->varIdx[osglData->osglCounter]->idx = (yyvsp[(2) - (3)].ival);
06558 osglData->osglCounter++;
06559 }
06560 break;
06561
06562 case 561:
06563
06564 {
06565 osglData->tempC = new GeneralMatrixElements();
06566 osglData->mtxConstructorVec.push_back(osglData->tempC);
06567 osglData->numberOfValuesPresent = false;
06568 osglData->rowMajorPresent = false;
06569 osglData->rowMajor = false;
06570 }
06571 break;
06572
06573 case 562:
06574
06575 {
06576 if (osglData->numberOfValuesPresent == false)
06577 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<generalElements>: numberOfValues attribute missing");
06578 }
06579 break;
06580
06581 case 565:
06582
06583 {
06584 ((GeneralMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06585 if (osglData->numberOfValues > 0)
06586 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_general;
06587 }
06588 break;
06589
06590 case 566:
06591
06592 {
06593 ((GeneralMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06594 }
06595 break;
06596
06597 case 572:
06598
06599 {
06600 osglData->nonzeroCounter = 0;
06601 osglData->numberOfValues = ((GeneralMatrixElements*)osglData->tempC)->numberOfValues;
06602
06603 ((GeneralMatrixElements*)osglData->tempC)->value = new GeneralMatrixValues();
06604 ((GeneralMatrixElements*)osglData->tempC)->value->numberOfEl
06605 = osglData->numberOfValues;
06606 ((GeneralMatrixElements*)osglData->tempC)->value->el
06607 = new ScalarExpressionTree*[osglData->numberOfValues];
06608
06609 for (int i=0; i<osglData->numberOfValues; i++)
06610 ((GeneralMatrixElements*)osglData->tempC)->value->el[i] = new ScalarExpressionTree();
06611 }
06612 break;
06613
06614 case 580:
06615
06616 {
06617 if (osglData->nonzeroCounter >= osglData->numberOfValues)
06618 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <el> terms greater than expected");
06619
06620 osnlData->nlNodeVec.clear();
06621 osnlData->sumVec.clear();
06622 osnlData->allDiffVec.clear();
06623 osnlData->maxVec.clear();
06624 osnlData->minVec.clear();
06625 osnlData->productVec.clear();
06626 osnlData->matrixSumVec.clear();
06627 osnlData->matrixProductVec.clear();
06628 }
06629 break;
06630
06631 case 584:
06632
06633 {
06634
06635
06636 ((GeneralMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter]->m_treeRoot =
06637 ((OSnLNode*)osnlData->nlNodeVec[ 0])->createExpressionTreeFromPrefix( osnlData->nlNodeVec);
06638 osglData->nonzeroCounter++;
06639 }
06640 break;
06641
06642 case 586:
06643
06644 {
06645 osglData->tempC = new ObjReferenceMatrixElements();
06646 osglData->mtxConstructorVec.push_back(osglData->tempC);
06647 osglData->numberOfValuesPresent = false;
06648 osglData->rowMajorPresent = false;
06649 osglData->rowMajor = false;
06650 }
06651 break;
06652
06653 case 587:
06654
06655 {
06656 if (osglData->numberOfValuesPresent == false)
06657 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<objReferenceElements>: numberOfValues attribute missing");
06658 }
06659 break;
06660
06661 case 590:
06662
06663 {
06664 ((ObjReferenceMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06665 if (osglData->numberOfValues > 0)
06666 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_objReference;
06667 }
06668 break;
06669
06670 case 591:
06671
06672 {
06673 ((ObjReferenceMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06674 }
06675 break;
06676
06677 case 595:
06678
06679 {
06680 ((ObjReferenceMatrixElements*)osglData->tempC)->value = new ObjReferenceMatrixValues();
06681 ((ObjReferenceMatrixElements*)osglData->tempC)->value->numberOfEl = osglData->numberOfEl;
06682 ((ObjReferenceMatrixElements*)osglData->tempC)->value->el = osglData->osglIntArray;
06683 osglData->osglIntArray = NULL;
06684 parserData->suppressFurtherErrorMessages = false;
06685 parserData->ignoreDataAfterErrors = false;
06686 }
06687 break;
06688
06689 case 596:
06690
06691 {
06692 osglData->numberOfEl = ((ObjReferenceMatrixElements*)osglData->tempC)->numberOfValues;
06693 osglData->osglIntArray = new int[osglData->numberOfEl];
06694 osglData->osglCounter = 0;
06695 }
06696 break;
06697
06698 case 603:
06699
06700 {
06701 osglData->tempC = new ConReferenceMatrixElements();
06702 osglData->mtxConstructorVec.push_back(osglData->tempC);
06703 osglData->numberOfValuesPresent = false;
06704 osglData->rowMajorPresent = false;
06705 osglData->rowMajor = false;
06706 }
06707 break;
06708
06709 case 604:
06710
06711 {
06712 if (osglData->numberOfValuesPresent == false)
06713 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "<conReferenceElements>: numberOfValues attribute missing");
06714 }
06715 break;
06716
06717 case 607:
06718
06719 {
06720 ((ConReferenceMatrixElements*)osglData->tempC)->numberOfValues = osglData->numberOfValues;
06721 if (osglData->numberOfValues > 0)
06722 ((MatrixType*)osglData->mtxBlkVec.back())->matrixType = ENUM_MATRIX_TYPE_conReference;
06723 }
06724 break;
06725
06726 case 608:
06727
06728 {
06729 ((ConReferenceMatrixElements*)osglData->tempC)->rowMajor = osglData->rowMajor;
06730 }
06731 break;
06732
06733 case 612:
06734
06735 {
06736 if (osglData->numberOfValues > 0)
06737 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "expected <value> element");
06738 }
06739 break;
06740
06741 case 613:
06742
06743 {
06744 if (osglData->numberOfValues > osglData->nonzeroCounter)
06745 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too few <el> elements");
06746 else if (osglData->numberOfValues < osglData->nonzeroCounter)
06747 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many <el> elements");
06748 ((ConReferenceMatrixElements*)osglData->tempC)->value->numberOfEl = osglData->numberOfEl;
06749 parserData->suppressFurtherErrorMessages = false;
06750 parserData->ignoreDataAfterErrors = false;
06751 }
06752 break;
06753
06754 case 614:
06755
06756 {
06757 osglData->numberOfValues = ((ConReferenceMatrixElements*)osglData->tempC)->numberOfValues;
06758 osglData->nonzeroCounter = 0;
06759
06760 ((ConReferenceMatrixElements*)osglData->tempC)->value = new ConReferenceMatrixValues();
06761 ((ConReferenceMatrixElements*)osglData->tempC)->value->numberOfEl
06762 = osglData->numberOfValues;
06763 ((ConReferenceMatrixElements*)osglData->tempC)->value->el
06764 = new ConReferenceMatrixElement*[osglData->numberOfValues];
06765
06766 for (int i=0; i<osglData->numberOfValues; i++)
06767 ((ConReferenceMatrixElements*)osglData->tempC)->value->el[i] = new ConReferenceMatrixElement();
06768 }
06769 break;
06770
06771 case 621:
06772
06773 {
06774
06775
06776
06777 }
06778 break;
06779
06780 case 622:
06781
06782 {
06783 if (osglData->nonzeroCounter >= osglData->numberOfValues)
06784 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <el> terms greater than expected");
06785 osglData->valueTypePresent = false;
06786 osglData->multPresent = false;
06787 osglData->incrPresent = false;
06788 osglData->mult = 1;
06789 osglData->incr = 0;
06790 osglData->valueType = "";
06791 }
06792 break;
06793
06794 case 628:
06795
06796 {
06797 if (osglData->nonzeroCounter + osglData->mult > osglData->numberOfEl)
06798 {
06799 if (!parserData->suppressFurtherErrorMessages)
06800 {
06801 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more data elements than specified");
06802 parserData->suppressFurtherErrorMessages = true;
06803 parserData->ignoreDataAfterErrors = true;
06804 }
06805 }
06806 else
06807 {
06808 if (osglData->valueType == "")
06809 osglData->valueType = "value";
06810 if (returnConReferenceValueType(osglData->valueType) <= 0)
06811 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
06812 "valueType must be one of \"value\", \"status\", \"surplus\", \"shortage\"");
06813 else
06814 {
06815 for (int i=0; i<osglData->mult; i++)
06816 {
06817 ((ConReferenceMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter + i]->conReference
06818 = (yyvsp[(2) - (3)].ival) + i*osglData->incr;
06819 ((ConReferenceMatrixElements*)osglData->tempC)->value->el[osglData->nonzeroCounter + i]->valueType
06820 = (ENUM_CONREFERENCE_VALUETYPE)returnConReferenceValueType(osglData->valueType);
06821 }
06822 }
06823 osglData->nonzeroCounter += osglData->mult;
06824 }
06825 }
06826 break;
06827
06828 case 630:
06829
06830 {
06831 osglData->tempC = new MatrixTransformation();
06832 osglData->mtxConstructorVec.push_back((MatrixTransformation*)osglData->tempC);
06833
06834
06835 osnlData->nlNodeVec.clear();
06836 osnlData->sumVec.clear();
06837 osnlData->allDiffVec.clear();
06838 osnlData->maxVec.clear();
06839 osnlData->minVec.clear();
06840 osnlData->productVec.clear();
06841 osnlData->matrixSumVec.clear();
06842 osnlData->matrixProductVec.clear();
06843
06844 osglData->shapePresent = false;
06845 }
06846 break;
06847
06848 case 632:
06849
06850 {
06851 if (returnNlExprShape(osglData->shape) > 0)
06852 ((MatrixTransformation*)osglData->tempC)->shape
06853 = (ENUM_NL_EXPR_SHAPE)returnNlExprShape(osglData->shape);
06854 else
06855 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
06856 "unknown shape specified in matrix transformation");
06857 }
06858 break;
06859
06860 case 633:
06861
06862 {
06863
06864 ((MatrixTransformation*)osglData->tempC)->transformation =
06865 ((OSnLMNode*)osnlData->nlNodeVec[ 0])->createExpressionTreeFromPrefix( osnlData->nlNodeVec);
06866 }
06867 break;
06868
06869 case 634:
06870
06871 {
06872
06873 osglData->rowOffsets.back() = NULL;
06874 osglData->colOffsets.back() = NULL;
06875 osglData->osglIntArray = NULL;
06876 osglData->rowOffsets.pop_back();
06877 osglData->colOffsets.pop_back();
06878 }
06879 break;
06880
06881 case 635:
06882
06883 {
06884 osglData->tempC = new MatrixBlocks();
06885 osglData->mtxConstructorVec.push_back((MatrixBlocks*)osglData->tempC);
06886 osglData->mtxBlocksVec.push_back((MatrixBlocks*)osglData->tempC);
06887 osglData->numberOfBlocksPresent = false;
06888 }
06889 break;
06890
06891 case 636:
06892
06893 {
06894 osglData->nBlocksVec.push_back(osglData->numberOfBlocks);
06895 ((MatrixBlocks*)osglData->tempC)->inumberOfChildren = 0;
06896 }
06897 break;
06898
06899 case 638:
06900
06901 {
06902 if ( ((MatrixBlocks*)osglData->mtxBlocksVec.back())->inumberOfChildren !=
06903 osglData->nBlocksVec.back())
06904 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
06905 "Number of blocks does not agree with attribute value numberOfBlocks");
06906
06907 ((MatrixBlocks*)osglData->mtxBlocksVec.back())->m_mChildren
06908 = new MatrixNode*[((MatrixBlocks*)osglData->mtxBlocksVec.back())->inumberOfChildren];
06909 osglData->mtxBlocksVec.pop_back();
06910 osglData->nBlocksVec.pop_back();
06911 }
06912 break;
06913
06914 case 639:
06915
06916 {
06917 if (osglData->osglCounter != osglData->numberOfEl)
06918 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of colOffsets does not match numberOfEl");
06919 ((MatrixBlocks*)osglData->tempC)->colOffset = new IntVector();
06920 ((MatrixBlocks*)osglData->tempC)->colOffset->numberOfEl = osglData->numberOfEl;
06921 ((MatrixBlocks*)osglData->tempC)->colOffset->el = osglData->osglIntArray;
06922 osglData->colOffsets.push_back(osglData->osglIntArray);
06923 parserData->suppressFurtherErrorMessages = false;
06924 parserData->ignoreDataAfterErrors = false;
06925 }
06926 break;
06927
06928 case 640:
06929
06930 {
06931 osglData->numberOfEl = 0;
06932 osglData->numberOfElPresent = false;
06933 }
06934 break;
06935
06936 case 641:
06937
06938 {
06939 osglData->osglCounter = 0;
06940 osglData->osglIntArray = new int[osglData->numberOfEl];
06941 }
06942 break;
06943
06944 case 647:
06945
06946 {
06947 ((MatrixBlocks*)osglData->tempC)->rowOffset = new IntVector();
06948 ((MatrixBlocks*)osglData->tempC)->rowOffset->numberOfEl = osglData->numberOfEl;
06949 ((MatrixBlocks*)osglData->tempC)->rowOffset->el = osglData->osglIntArray;
06950 osglData->rowOffsets.push_back(osglData->osglIntArray);
06951 parserData->suppressFurtherErrorMessages = false;
06952 parserData->ignoreDataAfterErrors = false;
06953 }
06954 break;
06955
06956 case 648:
06957
06958 {
06959 osglData->numberOfEl = 0;
06960 osglData->numberOfElPresent = false;
06961 }
06962 break;
06963
06964 case 649:
06965
06966 {
06967 osglData->osglCounter = 0;
06968 osglData->osglIntArray = new int[osglData->numberOfEl];
06969 }
06970 break;
06971
06972 case 656:
06973
06974 {
06975 ((MatrixBlocks*)osglData->mtxBlocksVec.back())->inumberOfChildren++;
06976 }
06977 break;
06978
06979 case 657:
06980
06981 {
06982 osglData->mtxBlkVec.pop_back();
06983 }
06984 break;
06985
06986 case 658:
06987
06988 {
06989 osglData->tempC = new MatrixBlock();
06990 osglData->mtxConstructorVec.push_back((MatrixBlock*)osglData->tempC);
06991 osglData->mtxBlkVec.push_back(osglData->tempC);
06992
06993 osglData->symmetryPresent = false;
06994 osglData->typePresent = false;
06995 osglData->blockRowIdxPresent = false;
06996 osglData->blockColIdxPresent = false;
06997 }
06998 break;
06999
07000 case 664:
07001
07002 {
07003 if (verifyMatrixSymmetry(osglData->symmetry) == false)
07004 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "symmetry type not recognized");
07005 parserData->errorText = NULL;
07006 ((MatrixBlock*)osglData->tempC)->symmetry
07007 = (ENUM_MATRIX_SYMMETRY)returnMatrixSymmetry(osglData->symmetry);
07008 }
07009 break;
07010
07011 case 665:
07012
07013 {
07014 ((MatrixBlock*)osglData->tempC)->type
07015 = (ENUM_MATRIX_TYPE)returnMatrixType(osglData->type);
07016 }
07017 break;
07018
07019 case 669:
07020
07021 {
07022 osglData->mtxBlkVec.back()->m_mChildren =
07023 new MatrixNode*[osglData->mtxBlkVec.back()->inumberOfChildren];
07024 }
07025 break;
07026
07027 case 671:
07028
07029 {
07030 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07031 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07032 if (osglData->numberOfBlocksPresent)
07033 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfBlocks attribute previously set");
07034 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <blocks> cannot be negative");
07035 osglData->numberOfBlocksPresent = true;
07036 osglData->numberOfBlocks = (yyvsp[(3) - (4)].ival);
07037 }
07038 break;
07039
07040 case 672:
07041
07042 {
07043 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07044 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07045 if (osglData->numberOfColumnsPresent)
07046 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfColumns attribute previously set");
07047 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <blocks> cannot be negative");
07048 osglData->numberOfColumnsPresent = true;
07049 osglData->numberOfColumns = (yyvsp[(3) - (4)].ival);
07050 }
07051 break;
07052
07053 case 673:
07054
07055 {
07056 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07057 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07058 if (osglData->numberOfElPresent)
07059 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfEl attribute previously set");
07060 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <el> cannot be negative");
07061 osglData->numberOfElPresent = true;
07062 osglData->numberOfEl = (yyvsp[(3) - (4)].ival);
07063 }
07064 break;
07065
07066 case 674:
07067
07068 {
07069 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07070 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07071 if (osglData->numberOfRowsPresent)
07072 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfRows attribute previously set");
07073 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <rows> cannot be negative");
07074 osglData->numberOfRowsPresent = true;
07075 osglData->numberOfRows = (yyvsp[(3) - (4)].ival);
07076 }
07077 break;
07078
07079 case 675:
07080
07081 {
07082 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07083 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07084 if (osglData->numberOfValuesPresent)
07085 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfValues attribute previously set");
07086 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <values> cannot be negative");
07087 osglData->numberOfValuesPresent = true;
07088 osglData->numberOfValues = (yyvsp[(3) - (4)].ival);
07089 }
07090 break;
07091
07092 case 676:
07093
07094 {
07095 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07096 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07097 if (osglData->numberOfVarIdxPresent)
07098 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "numberOfVarIdx attribute previously set");
07099 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of <varIdx> cannot be negative");
07100 osglData->numberOfVarIdxPresent = true;
07101 osglData->numberOfVarIdx = (yyvsp[(3) - (4)].ival);
07102 }
07103 break;
07104
07105 case 677:
07106
07107 {
07108 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07109 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07110 if (osglData->base64SizePresent)
07111 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base64Size attribute previously set");
07112 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "base64Size cannot be negative");
07113 osglData->base64SizePresent = true;
07114 osglData->base64Size = (yyvsp[(3) - (4)].ival);
07115 }
07116 break;
07117
07118 case 678:
07119
07120 {
07121 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07122 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07123 if (osglData->baseMatrixIdxPresent == true)
07124 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one baseMatrixIdx attribute in <baseMatrix> element");
07125 if ((yyvsp[(3) - (4)].ival) < 0)
07126 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "baseMatrix idx cannot be negative");
07127 if ((yyvsp[(3) - (4)].ival) > osglData->matrixCounter)
07128 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "baseMatrix idx exceeds number of matrices so far");
07129 osglData->baseMatrixIdxPresent = true;
07130 osglData->baseMatrixIdx = (yyvsp[(3) - (4)].ival);
07131 }
07132 break;
07133
07134 case 679:
07135
07136 {
07137 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07138 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07139 "start and end quotes are not the same");
07140 if (osglData->baseMatrixStartRowPresent == true)
07141 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07142 "more than one baseMatrixStartRow attribute in <baseMatrix> element");
07143 if ((yyvsp[(3) - (4)].ival) < 0)
07144 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07145 "baseMatrix first row cannot be negative");
07146 osglData->baseMatrixStartRowPresent = true;
07147 osglData->baseMatrixStartRow = (yyvsp[(3) - (4)].ival);
07148 }
07149 break;
07150
07151 case 680:
07152
07153 {
07154 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07155 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07156 "start and end quotes are not the same");
07157 if (osglData->baseMatrixStartColPresent == true)
07158 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07159 "more than one baseMatrixStartCol attribute in <baseMatrix> element");
07160 if ((yyvsp[(3) - (4)].ival) < 0)
07161 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07162 "baseMatrix first column cannot be negative");
07163 osglData->baseMatrixStartColPresent = true;
07164 osglData->baseMatrixStartCol = (yyvsp[(3) - (4)].ival);
07165 }
07166 break;
07167
07168 case 681:
07169
07170 {
07171 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07172 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07173 if (osglData->baseMatrixEndRowPresent == true)
07174 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one baseMatrixEndRow attribute in <baseMatrix> element");
07175 if ((yyvsp[(3) - (4)].ival) < 0)
07176 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "baseMatrix end row cannot be negative");
07177 osglData->baseMatrixEndRowPresent = true;
07178 osglData->baseMatrixEndRow = (yyvsp[(3) - (4)].ival);
07179 }
07180 break;
07181
07182 case 682:
07183
07184 {
07185 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07186 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07187 if (osglData->baseMatrixEndColPresent == true)
07188 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one baseMatrixEndCol attribute in <baseMatrix> element");
07189 if ((yyvsp[(3) - (4)].ival) < 0)
07190 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "baseMatrix end col cannot be negative");
07191 osglData->baseMatrixEndColPresent = true;
07192 osglData->baseMatrixEndCol = (yyvsp[(3) - (4)].ival);
07193 }
07194 break;
07195
07196 case 683:
07197
07198 {
07199 if (osglData->blockRowIdxPresent)
07200 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "blockRowIdx attribute previously set");
07201 else
07202 {
07203 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "blockRowIdx cannot be negative");
07204 osglData->blockRowIdxPresent = true;
07205 osglData->blockRowIdx = (yyvsp[(3) - (4)].ival);
07206 ((MatrixBlock*)osglData->tempC)->blockRowIdx = (yyvsp[(3) - (4)].ival);
07207 }
07208
07209
07210 ((MatrixBlock*)osglData->tempC)->numberOfRows
07211 = osglData->rowOffsets.back()[osglData->blockRowIdx+1]
07212 - osglData->rowOffsets.back()[osglData->blockRowIdx];
07213 }
07214 break;
07215
07216 case 684:
07217
07218 {
07219 if (osglData->blockColIdxPresent)
07220 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "blockColIdx attribute previously set");
07221 else
07222 {
07223 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "blockColIdx cannot be negative");
07224 osglData->blockColIdxPresent = true;
07225 osglData->blockColIdx = (yyvsp[(3) - (4)].ival);
07226 ((MatrixBlock*)osglData->tempC)->blockColIdx = (yyvsp[(3) - (4)].ival);
07227 }
07228
07229
07230 ((MatrixBlock*)osglData->tempC)->numberOfColumns
07231 = osglData->colOffsets.back()[osglData->blockColIdx+1]
07232 - osglData->colOffsets.back()[osglData->blockColIdx];
07233 }
07234 break;
07235
07236 case 685:
07237
07238 {
07239 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07240 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07241 if (osglData->coefPresent == true)
07242 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "linear matrix elements: duplicate coef");
07243 else
07244 {
07245 osglData->coef = parserData->tempVal;
07246 osglData->coefPresent = true;
07247 }
07248 }
07249 break;
07250
07251 case 686:
07252
07253 {
07254 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07255 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07256 if (osglData->constantPresent == true)
07257 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "linear matrix elements: duplicate constant");
07258 else
07259 {
07260 osglData->constant = parserData->tempVal;
07261 osglData->constantPresent = true;
07262 }
07263 }
07264 break;
07265
07266 case 687:
07267
07268 {
07269 if (osglData->idxPresent == true)
07270 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one idx attribute");
07271 osglData->idxPresent = true;
07272 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07273 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07274 osglData->idx = (yyvsp[(3) - (4)].ival);
07275 }
07276 break;
07277
07278 case 688:
07279
07280 {
07281 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07282 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07283 if (osglData->incrPresent)
07284 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one incr attribute allowed");
07285 osglData->incrPresent = true;
07286 osglData->incr = (yyvsp[(3) - (4)].ival);
07287 }
07288 break;
07289
07290 case 689:
07291
07292 {
07293 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07294 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07295 if (osglData->multPresent)
07296 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "only one mult attribute allowed");
07297 if ((yyvsp[(3) - (4)].ival) <= 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mult must be positive");
07298 osglData->multPresent = true;
07299 osglData->mult = (yyvsp[(3) - (4)].ival);
07300 }
07301 break;
07302
07303 case 690:
07304
07305 {
07306 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07307 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07308 if (osglData->scalarMultiplierPresent == true)
07309 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one scalar multiplier attribute in <baseMatrix> element");
07310 osglData->scalarMultiplierPresent = true;
07311 osglData->scalarMultiplier = parserData->tempVal;
07312 }
07313 break;
07314
07315 case 691:
07316
07317 {
07318 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07319 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07320 if (osglData->targetMatrixFirstRowPresent == true)
07321 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one targetMatrixFirstRow attribute in <baseMatrix> element");
07322 if ((yyvsp[(3) - (4)].ival) < 0)
07323 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "targetMatrix first row cannot be negative");
07324 osglData->targetMatrixFirstRowPresent = true;
07325 osglData->targetMatrixFirstRow = (yyvsp[(3) - (4)].ival);
07326 }
07327 break;
07328
07329 case 692:
07330
07331 {
07332 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
07333 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07334 if (osglData->targetMatrixFirstColPresent == true)
07335 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one targetMatrixFirstCol attribute in <baseMatrix> element");
07336 if ((yyvsp[(3) - (4)].ival) < 0)
07337 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "targetMatrix first col cannot be negative");
07338 osglData->targetMatrixFirstColPresent = true;
07339 osglData->targetMatrixFirstCol = (yyvsp[(3) - (4)].ival);
07340 }
07341 break;
07342
07343 case 695:
07344
07345 {
07346 if (osglData->baseTransposePresent == true)
07347 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07348 "more than one baseTranspose attribute in <baseMatrix> element");
07349 else
07350 osglData->baseTranspose = true;
07351 osglData->baseTransposePresent = true;
07352 }
07353 break;
07354
07355 case 696:
07356
07357 {
07358 if (osglData->baseTransposePresent == true)
07359 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07360 "more than one baseTranspose attribute in <baseMatrix> element");
07361 else
07362 {
07363 if (strcmp((yyvsp[(2) - (3)].sval),"false") == 0) osglData->baseTranspose = false;
07364 else if (strcmp((yyvsp[(2) - (3)].sval),"true" ) == 0) osglData->baseTranspose = true;
07365 else parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07366 "baseTranspose attribute in <baseMatrix> element must be \"true\" or \"false\"");
07367 }
07368 osglData->baseTransposePresent = true;
07369 free((yyvsp[(2) - (3)].sval));
07370 }
07371 break;
07372
07373 case 699:
07374
07375 {
07376 if (osglData->namePresent == true)
07377 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one name attribute");
07378 osglData->namePresent = true;
07379 }
07380 break;
07381
07382 case 700:
07383
07384 {
07385 if (osglData->namePresent == true)
07386 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one name attribute");
07387 osglData->namePresent = true;
07388 osglData->name = (yyvsp[(2) - (3)].sval);
07389 free((yyvsp[(2) - (3)].sval));
07390 }
07391 break;
07392
07393 case 703:
07394
07395 {
07396 if (osglData->rowMajorPresent)
07397 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "rowMajor attribute encountered more than once");
07398 else
07399 osglData->rowMajor = true;
07400 osglData->rowMajorPresent = true;
07401 }
07402 break;
07403
07404 case 704:
07405
07406 {
07407 if (osglData->rowMajorPresent)
07408 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "rowMajor attribute encountered more than once");
07409 else
07410 {
07411 if (strcmp((yyvsp[(2) - (3)].sval),"false") == 0) osglData->rowMajor = false;
07412 else if (strcmp((yyvsp[(2) - (3)].sval),"true" ) == 0) osglData->rowMajor = true;
07413 else parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "rowMajor attribute must be \"true\" or \"false\"");
07414 }
07415 osglData->rowMajorPresent = true;
07416 free((yyvsp[(2) - (3)].sval));
07417 }
07418 break;
07419
07420 case 707:
07421
07422 {
07423 if (osglData->shapePresent == true)
07424 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one shape attribute");
07425 osglData->shapePresent = true;
07426 }
07427 break;
07428
07429 case 708:
07430
07431 {
07432 if (osglData->shapePresent == true)
07433 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one shape attribute");
07434 osglData->shapePresent = true;
07435 osglData->shape = (yyvsp[(2) - (3)].sval);
07436 free((yyvsp[(2) - (3)].sval));
07437 }
07438 break;
07439
07440 case 711:
07441
07442 {
07443 if (osglData->symmetryPresent == true)
07444 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one symmetry attribute in <matrix> element");
07445 osglData->symmetryPresent = true;
07446 }
07447 break;
07448
07449 case 712:
07450
07451 {
07452 if (osglData->symmetryPresent == true)
07453 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one symmetry attribute in <matrix> element");
07454 osglData->symmetryPresent = true;
07455 osglData->symmetry = (yyvsp[(2) - (3)].sval);
07456 free((yyvsp[(2) - (3)].sval));
07457 }
07458 break;
07459
07460 case 715:
07461
07462 {
07463 if (osglData->typePresent == true)
07464 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one type attribute");
07465 osglData->typePresent = true;
07466 }
07467 break;
07468
07469 case 716:
07470
07471 {
07472 if (osglData->typePresent == true)
07473 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one type attribute");
07474 osglData->typePresent = true;
07475 osglData->type = (yyvsp[(2) - (3)].sval);
07476 free((yyvsp[(2) - (3)].sval));
07477 }
07478 break;
07479
07480 case 719:
07481
07482 {
07483 if (osglData->valuePresent == true)
07484 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one value attribute");
07485 osglData->valuePresent = true;
07486 osglData->value = "";
07487 }
07488 break;
07489
07490 case 720:
07491
07492 {
07493 if (osglData->valuePresent == true)
07494 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one value attribute");
07495 osglData->valuePresent = true;
07496 osglData->value = (yyvsp[(2) - (3)].sval);
07497 free((yyvsp[(2) - (3)].sval));
07498 }
07499 break;
07500
07501 case 723:
07502
07503 {
07504 if (osglData->valueTypePresent == true)
07505 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one valueType attribute");
07506 osglData->valueTypePresent = true;
07507 }
07508 break;
07509
07510 case 724:
07511
07512 {
07513 if (osglData->valueTypePresent == true)
07514 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one valueType attribute");
07515 osglData->valueTypePresent = true;
07516 osglData->valueType = (yyvsp[(2) - (3)].sval);
07517 free((yyvsp[(2) - (3)].sval));
07518 }
07519 break;
07520
07521 case 727:
07522
07523 {
07524 if (osglData->varTypePresent == true)
07525 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one varType attribute");
07526 osglData->varTypePresent = true;
07527 }
07528 break;
07529
07530 case 728:
07531
07532 {
07533 if (osglData->varTypePresent == true)
07534 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "more than one varType attribute");
07535 osglData->varTypePresent = true;
07536 osglData->varType = (yyvsp[(2) - (3)].sval);
07537 free((yyvsp[(2) - (3)].sval));
07538 }
07539 break;
07540
07541 case 730:
07542
07543 {
07544 if (osnlData->tmpnlcount < osnlData->nlnodenumber)
07545 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of nl terms less than number attribute");
07546 }
07547 break;
07548
07549 case 731:
07550
07551 {
07552 osinstance->instanceData->nonlinearExpressions = new NonlinearExpressions();
07553 osnlData->tmpnlcount = 0;
07554 }
07555 break;
07556
07557 case 732:
07558
07559 {
07560 if ( *(yyvsp[(2) - (5)].sval) != *(yyvsp[(4) - (5)].sval) )
07561 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07562 if ((yyvsp[(3) - (5)].ival) < 0) parserData->parser_errors +=
07563 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "number of expressions cannot be negative");
07564 osnlData->nlnodenumber = (yyvsp[(3) - (5)].ival);
07565 osinstance->instanceData->nonlinearExpressions->numberOfNonlinearExpressions = (yyvsp[(3) - (5)].ival);
07566 if (osinstance->instanceData->nonlinearExpressions->numberOfNonlinearExpressions > 0 )
07567 osinstance->instanceData->nonlinearExpressions->nl = new Nl*[ (yyvsp[(3) - (5)].ival) ];
07568 for (int i = 0; i < osinstance->instanceData->nonlinearExpressions->numberOfNonlinearExpressions; i++)
07569 {
07570 osinstance->instanceData->nonlinearExpressions->nl[i] = new Nl();
07571 }
07572 }
07573 break;
07574
07575 case 735:
07576
07577 {
07578
07579 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->m_treeRoot =
07580 ((OSnLNode*)osnlData->nlNodeVec[ 0])->createExpressionTreeFromPrefix( osnlData->nlNodeVec);
07581 osnlData->tmpnlcount++;
07582 }
07583 break;
07584
07585 case 736:
07586
07587 {
07588 if (osnlData->tmpnlcount >= osnlData->nlnodenumber)
07589 parserData->parser_errors +=
07590 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of nl terms greater than number attribute");
07591 osglData->idxPresent = false;
07592 osglData->shapePresent = false;
07593
07594
07595 osnlData->nlNodeVec.clear();
07596 osnlData->sumVec.clear();
07597 osnlData->allDiffVec.clear();
07598 osnlData->maxVec.clear();
07599 osnlData->minVec.clear();
07600 osnlData->productVec.clear();
07601 osnlData->matrixSumVec.clear();
07602 osnlData->matrixProductVec.clear();
07603 }
07604 break;
07605
07606 case 737:
07607
07608 {
07609 if (osglData->idxPresent == false)
07610 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute idx is missing");
07611 }
07612 break;
07613
07614 case 740:
07615
07616 {
07617 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->idx = osglData->idx;
07618 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree
07619 = new ScalarExpressionTree();
07620 }
07621 break;
07622
07623 case 741:
07624
07625 {
07626 if (returnNlExprShape(osglData->shape) > 0)
07627 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->shape
07628 = (ENUM_NL_EXPR_SHAPE)returnNlExprShape(osglData->shape);
07629 else
07630 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
07631 "unknown shape specified in matrix transformation");
07632 }
07633 break;
07634
07635 case 769:
07636
07637 { osnlData->nlNodePoint = new OSnLNodeE();
07638 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);}
07639 break;
07640
07641 case 773:
07642
07643 { osnlData->nlNodePoint = new OSnLNodePI();
07644 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);}
07645 break;
07646
07647 case 777:
07648
07649 {
07650 osnlData->nlNodePoint = new OSnLNodeTimes();
07651 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07652 }
07653 break;
07654
07655 case 779:
07656
07657 {
07658 osnlData->nlNodePoint = new OSnLNodePlus();
07659 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07660 }
07661 break;
07662
07663 case 781:
07664
07665 {
07666 osnlData->nlNodePoint = new OSnLNodeMinus();
07667 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07668 }
07669 break;
07670
07671 case 783:
07672
07673 {
07674 osnlData->nlNodePoint = new OSnLNodeNegate();
07675 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07676 }
07677 break;
07678
07679 case 785:
07680
07681 {
07682 osnlData->nlNodePoint = new OSnLNodeDivide();
07683 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07684 }
07685 break;
07686
07687 case 787:
07688
07689 {
07690 osnlData->nlNodePoint = new OSnLNodePower();
07691 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07692 }
07693 break;
07694
07695 case 789:
07696
07697 {
07698 osnlData->nlNodePoint = new OSnLNodeLn();
07699 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07700 }
07701 break;
07702
07703 case 791:
07704
07705 {
07706 osnlData->nlNodePoint = new OSnLNodeSqrt();
07707 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07708 }
07709 break;
07710
07711 case 793:
07712
07713 {
07714 osnlData->nlNodePoint = new OSnLNodeSquare();
07715 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07716 }
07717 break;
07718
07719 case 795:
07720
07721 {
07722 osnlData->nlNodePoint = new OSnLNodeCos();
07723 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07724 }
07725 break;
07726
07727 case 797:
07728
07729 {
07730 osnlData->nlNodePoint = new OSnLNodeSin();
07731 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07732 }
07733 break;
07734
07735 case 799:
07736
07737 {
07738 osnlData->nlNodePoint = new OSnLNodeExp();
07739 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07740 }
07741 break;
07742
07743 case 802:
07744
07745 {
07746 osnlData->nlNodePoint = new OSnLNodeAbs();
07747 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07748 }
07749 break;
07750
07751 case 803:
07752
07753 {
07754 #ifdef OSINSTANCE_AVAILABLE
07755 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->bADMustReTape = true;
07756 #endif
07757 }
07758 break;
07759
07760 case 804:
07761
07762 {
07763 osnlData->nlNodePoint = new OSnLNodeErf();
07764 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07765 }
07766 break;
07767
07768 case 805:
07769
07770 {
07771 }
07772 break;
07773
07774 case 806:
07775
07776 {
07777 osnlData->nlNodePoint = new OSnLNodeIf();
07778 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07779 }
07780 break;
07781
07782 case 807:
07783
07784 {
07785 #ifdef OSINSTANCE_AVAILABLE
07786 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->bADMustReTape = true;
07787 #endif
07788 }
07789 break;
07790
07791 case 808:
07792
07793 {
07794 osnlData->nlNodePoint = new OSnLNodeMatrixDeterminant();
07795 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07796 }
07797 break;
07798
07799 case 810:
07800
07801 {
07802 osnlData->nlNodePoint = new OSnLNodeMatrixTrace();
07803 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07804 }
07805 break;
07806
07807 case 812:
07808
07809 {
07810 osnlData->nlNodePoint = new OSnLNodeMatrixToScalar();
07811 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07812 }
07813 break;
07814
07815 case 814:
07816
07817 {
07818 osglData->valuePresent = false;
07819 osglData->typePresent = false;
07820 osnlData->numberidattON = false;
07821 }
07822 break;
07823
07824 case 815:
07825
07826 {
07827 osnlData->nlNodeNumberPoint = new OSnLNodeNumber();
07828 osnlData->nlNodeVec.push_back( osnlData->nlNodeNumberPoint);
07829 }
07830 break;
07831
07832 case 820:
07833
07834 {
07835 osnlData->nlNodeNumberPoint->type = osglData->type;
07836 }
07837 break;
07838
07839 case 821:
07840
07841 {
07842 osnlData->nlNodeNumberPoint->value = atof(osglData->value.c_str());
07843 }
07844 break;
07845
07846 case 823:
07847
07848 {
07849 if (osnlData->numberidattON) parserData->parser_errors +=
07850 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,"too many number id attributes");
07851 osnlData->numberidattON = true;
07852 osnlData->nlNodeNumberPoint->id = (yyvsp[(2) - (2)].sval);
07853 free((yyvsp[(2) - (2)].sval));
07854 }
07855 break;
07856
07857 case 825:
07858
07859 {
07860 osnlData->nlNodeVariablePoint = new OSnLNodeVariable();
07861 osnlData->nlNodeVec.push_back( osnlData->nlNodeVariablePoint);
07862 }
07863 break;
07864
07865 case 826:
07866
07867 {osnlData->variablecoefattON = false; osnlData->variableidxattON = false;}
07868 break;
07869
07870 case 829:
07871
07872 {
07873 osnlData->nlNodeVariablePoint->inumberOfChildren = 1;
07874 osnlData->nlNodeVariablePoint->m_mChildren = new OSnLNode*[ 1];
07875 }
07876 break;
07877
07878 case 833:
07879
07880 {
07881 if (osnlData->variablecoefattON) parserData->parser_errors +=
07882 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many variable coef attributes");
07883 osnlData->variablecoefattON = true;
07884 }
07885 break;
07886
07887 case 834:
07888
07889 {
07890 if (osnlData->variableidxattON) parserData->parser_errors +=
07891 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "too many variable idx attributes");
07892 osnlData->variableidxattON = true;
07893 }
07894 break;
07895
07896 case 835:
07897
07898 {
07899 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors +=
07900 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07901 osnlData->nlNodeVariablePoint->coef = parserData->tempVal;
07902 }
07903 break;
07904
07905 case 836:
07906
07907 {
07908 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) ) parserData->parser_errors +=
07909 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
07910 osnlData->nlNodeVariablePoint->idx = (yyvsp[(3) - (4)].ival);
07911 }
07912 break;
07913
07914 case 837:
07915
07916 {
07917 osnlData->nlNodePoint = new OSnLNodeSum();
07918 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07919 osnlData->sumVec.push_back( osnlData->nlNodePoint);
07920 }
07921 break;
07922
07923 case 838:
07924
07925 {
07926 ((OSnLNode*)osnlData->sumVec.back())->m_mChildren
07927 = new OSnLNode*[ ((OSnLNode*)osnlData->sumVec.back())->inumberOfChildren];
07928 osnlData->sumVec.pop_back();
07929 }
07930 break;
07931
07932 case 840:
07933
07934 { ((OSnLNode*)osnlData->sumVec.back())->inumberOfChildren++; }
07935 break;
07936
07937 case 841:
07938
07939 {
07940 osnlData->nlNodePoint = new OSnLNodeAllDiff ();
07941 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07942 osnlData->allDiffVec.push_back( osnlData->nlNodePoint);
07943 }
07944 break;
07945
07946 case 842:
07947
07948 {
07949 ((OSnLNode*)osnlData->allDiffVec.back())->m_mChildren
07950 = new OSnLNode*[ ((OSnLNode*)osnlData->allDiffVec.back())->inumberOfChildren];
07951 osnlData->allDiffVec.pop_back();
07952 #ifdef OSINSTANCE_AVAILABLE
07953 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->bADMustReTape = true;
07954 #endif
07955 }
07956 break;
07957
07958 case 844:
07959
07960 { ((OSnLNode*)osnlData->allDiffVec.back())->inumberOfChildren++; }
07961 break;
07962
07963 case 845:
07964
07965 {
07966 osnlData->nlNodePoint = new OSnLNodeMax();
07967 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07968 osnlData->maxVec.push_back( osnlData->nlNodePoint);
07969 }
07970 break;
07971
07972 case 846:
07973
07974 {
07975 osnlData->maxVec.back()->m_mChildren = new OSnLNode*[ osnlData->maxVec.back()->inumberOfChildren];
07976 osnlData->maxVec.pop_back();
07977 #ifdef OSINSTANCE_AVAILABLE
07978 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->bADMustReTape = true;
07979 #endif
07980 }
07981 break;
07982
07983 case 848:
07984
07985 { osnlData->maxVec.back()->inumberOfChildren++; }
07986 break;
07987
07988 case 849:
07989
07990 {
07991 osnlData->nlNodePoint = new OSnLNodeMin();
07992 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
07993 osnlData->minVec.push_back( osnlData->nlNodePoint);
07994 }
07995 break;
07996
07997 case 850:
07998
07999 {
08000 osnlData->minVec.back()->m_mChildren = new OSnLNode*[ osnlData->minVec.back()->inumberOfChildren];
08001 osnlData->minVec.pop_back();
08002 #ifdef OSINSTANCE_AVAILABLE
08003 osinstance->instanceData->nonlinearExpressions->nl[ osnlData->tmpnlcount]->osExpressionTree->bADMustReTape = true;
08004 #endif
08005 }
08006 break;
08007
08008 case 852:
08009
08010 { osnlData->minVec.back()->inumberOfChildren++; }
08011 break;
08012
08013 case 853:
08014
08015 {
08016 osnlData->nlNodePoint = new OSnLNodeProduct();
08017 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08018 osnlData->productVec.push_back( osnlData->nlNodePoint);
08019 }
08020 break;
08021
08022 case 854:
08023
08024 {
08025 osnlData->productVec.back()->m_mChildren = new OSnLNode*[ osnlData->productVec.back()->inumberOfChildren];
08026 osnlData->productVec.pop_back();
08027 }
08028 break;
08029
08030 case 856:
08031
08032 { osnlData->productVec.back()->inumberOfChildren++; }
08033 break;
08034
08035 case 876:
08036
08037 {
08038 osnlData->matrixidxattON = false;
08039 }
08040 break;
08041
08042 case 877:
08043
08044 {
08045 osnlData->nlMNodeMatrixRef = new OSnLMNodeMatrixReference();
08046 osnlData->nlNodeVec.push_back(osnlData->nlMNodeMatrixRef);
08047 }
08048 break;
08049
08050 case 880:
08051
08052 {
08053 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
08054 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
08055 osnlData->nlMNodeMatrixRef->idx = (yyvsp[(3) - (4)].ival);
08056 }
08057 break;
08058
08059 case 881:
08060
08061 {
08062 osnlData->matrixidxattON = false;
08063 }
08064 break;
08065
08066 case 882:
08067
08068 {
08069 osnlData->nlMNodeMatrixVar = new OSnLMNodeMatrixVar();
08070 osnlData->nlNodeVec.push_back(osnlData->nlMNodeMatrixVar);
08071 }
08072 break;
08073
08074 case 885:
08075
08076 {
08077 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
08078 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
08079 osnlData->nlMNodeMatrixVar->idx = (yyvsp[(3) - (4)].ival);
08080 }
08081 break;
08082
08083 case 886:
08084
08085 {
08086 osnlData->matrixidxattON = false;
08087 }
08088 break;
08089
08090 case 887:
08091
08092 {
08093 osnlData->nlMNodeMatrixObj = new OSnLMNodeMatrixObj();
08094 osnlData->nlNodeVec.push_back(osnlData->nlMNodeMatrixObj);
08095 }
08096 break;
08097
08098 case 890:
08099
08100 {
08101 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
08102 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
08103 osnlData->nlMNodeMatrixObj->idx = (yyvsp[(3) - (4)].ival);
08104 }
08105 break;
08106
08107 case 891:
08108
08109 {
08110 osnlData->matrixidxattON = false;
08111 }
08112 break;
08113
08114 case 892:
08115
08116 {
08117 osnlData->nlMNodeMatrixCon = new OSnLMNodeMatrixCon();
08118 osnlData->nlNodeVec.push_back(osnlData->nlMNodeMatrixCon);
08119 }
08120 break;
08121
08122 case 895:
08123
08124 {
08125 if ( *(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval) )
08126 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "start and end quotes are not the same");
08127 osnlData->nlMNodeMatrixCon->idx = (yyvsp[(3) - (4)].ival);
08128 }
08129 break;
08130
08131 case 897:
08132
08133 {
08134 osnlData->nlNodePoint = new OSnLMNodeMatrixDiagonal();
08135 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08136 }
08137 break;
08138
08139 case 900:
08140
08141 {
08142 osnlData->nlNodePoint = new OSnLMNodeMatrixDotTimes();
08143 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08144 }
08145 break;
08146
08147 case 903:
08148
08149 {
08150 osnlData->nlNodePoint = new OSnLMNodeIdentityMatrix();
08151 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08152 }
08153 break;
08154
08155 case 906:
08156
08157 {
08158 osnlData->nlNodePoint = new OSnLMNodeMatrixInverse();
08159 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08160 }
08161 break;
08162
08163 case 909:
08164
08165 {
08166 osnlData->nlNodePoint = new OSnLMNodeMatrixLowerTriangle();
08167 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08168 }
08169 break;
08170
08171 case 911:
08172
08173 {
08174 ((OSnLMNodeMatrixLowerTriangle*)osnlData->nlNodeVec.back())->includeDiagonal = osnlData->includeDiagonalAttribute;
08175 }
08176 break;
08177
08178 case 914:
08179
08180 {
08181 osnlData->nlNodePoint = new OSnLMNodeMatrixUpperTriangle();
08182 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08183 }
08184 break;
08185
08186 case 916:
08187
08188 {
08189 ((OSnLMNodeMatrixUpperTriangle*)osnlData->nlNodeVec.back())->includeDiagonal = osnlData->includeDiagonalAttribute;
08190 }
08191 break;
08192
08193 case 918:
08194
08195 {
08196 if (strcmp((yyvsp[(2) - (3)].sval),"false") == 0) osnlData->includeDiagonalAttribute = false;
08197 else if (strcmp((yyvsp[(2) - (3)].sval),"true" ) == 0) osnlData->includeDiagonalAttribute = true;
08198 else parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "osnlData->includeDiagonal attribute must be \"true\" or \"false\"");
08199 free((yyvsp[(2) - (3)].sval));
08200 }
08201 break;
08202
08203 case 920:
08204
08205 {
08206 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "matrix merge not yet implemented");
08207 }
08208 break;
08209
08210 case 924:
08211
08212 {
08213 osnlData->nlNodePoint = new OSnLMNodeMatrixMinus();
08214 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08215 }
08216 break;
08217
08218 case 927:
08219
08220 {
08221 osnlData->nlNodePoint = new OSnLMNodeMatrixNegate();
08222 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08223 }
08224 break;
08225
08226 case 930:
08227
08228 {
08229 osnlData->nlNodePoint = new OSnLMNodeMatrixPlus();
08230 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08231 }
08232 break;
08233
08234 case 933:
08235
08236 {
08237 osnlData->nlNodePoint = new OSnLMNodeMatrixTimes();
08238 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08239 }
08240 break;
08241
08242 case 935:
08243
08244 {
08245 osnlData->nlNodePoint = new OSnLMNodeMatrixProduct();
08246 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08247 osnlData->matrixProductVec.push_back( osnlData->nlNodePoint);
08248 }
08249 break;
08250
08251 case 936:
08252
08253 {
08254 osnlData->matrixProductVec.back()->m_mMatrixChildren = new OSnLMNode*[ osnlData->matrixProductVec.back()->inumberOfMatrixChildren];
08255 osnlData->matrixProductVec.pop_back();
08256 }
08257 break;
08258
08259 case 938:
08260
08261 {
08262 osnlData->matrixProductVec.back()->inumberOfMatrixChildren++;
08263 }
08264 break;
08265
08266 case 940:
08267
08268 {
08269 osnlData->nlNodePoint = new OSnLMNodeMatrixScalarTimes();
08270 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08271 }
08272 break;
08273
08274 case 943:
08275
08276 {
08277 osnlData->nlNodePoint = new OSnLMNodeMatrixSubmatrixAt();
08278 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08279 }
08280 break;
08281
08282 case 946:
08283
08284 {
08285 osnlData->nlNodePoint = new OSnLMNodeMatrixTranspose();
08286 osnlData->nlNodeVec.push_back( osnlData->nlNodePoint);
08287 }
08288 break;
08289
08290 case 949:
08291
08292 {
08293 if (osnlData->tmpnlcount < osnlData->nlnodenumber)
08294 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrix expressions less than number attribute");
08295 }
08296 break;
08297
08298 case 950:
08299
08300 {
08301 #ifdef OSINSTANCE_AVAILABLE
08302 osinstance->instanceData->matrixProgramming->matrixExpressions = new MatrixExpressions();
08303 osnlData->tmpnlcount = 0;
08304 #endif
08305 }
08306 break;
08307
08308 case 952:
08309
08310 {
08311 #ifdef OSINSTANCE_AVAILABLE
08312 if (*(yyvsp[(2) - (4)].sval) != *(yyvsp[(4) - (4)].sval))
08313 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mismatched quotes");
08314 if ((yyvsp[(3) - (4)].ival) < 0) parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
08315 "number of expressions cannot be negative");
08316 osnlData->nlnodenumber = (yyvsp[(3) - (4)].ival);
08317 osinstance->instanceData->matrixProgramming->matrixExpressions->numberOfExpr = (yyvsp[(3) - (4)].ival);
08318 if (osinstance->instanceData->matrixProgramming->matrixExpressions->numberOfExpr > 0 )
08319 osinstance->instanceData->matrixProgramming->matrixExpressions->expr
08320 = new MatrixExpression*[ (yyvsp[(3) - (4)].ival) ];
08321 for (int i = 0;
08322 i < osinstance->instanceData->matrixProgramming->matrixExpressions->numberOfExpr;
08323 i++)
08324 osinstance->instanceData->matrixProgramming->matrixExpressions->expr[i]
08325 = new MatrixExpression();
08326 #endif
08327 }
08328 break;
08329
08330 case 959:
08331
08332 {
08333
08334 #ifdef OSINSTANCE_AVAILABLE
08335 osinstance->instanceData->matrixProgramming->matrixExpressions->expr[ osnlData->tmpnlcount]->matrixExpressionTree->m_treeRoot =
08336 ((OSnLMNode*)osnlData->nlNodeVec[ 0])->createExpressionTreeFromPrefix( osnlData->nlNodeVec);
08337 #endif
08338 osnlData->tmpnlcount++;
08339 }
08340 break;
08341
08342 case 960:
08343
08344 {
08345 if (osnlData->tmpnlcount >= osnlData->nlnodenumber)
08346 parserData->parser_errors +=
08347 addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "actual number of matrix expressions greater than number attribute");
08348 osglData->idxPresent = false;
08349 osglData->shapePresent = false;
08350
08351
08352 osnlData->nlNodeVec.clear();
08353 osnlData->sumVec.clear();
08354 osnlData->allDiffVec.clear();
08355 osnlData->maxVec.clear();
08356 osnlData->minVec.clear();
08357 osnlData->productVec.clear();
08358 osnlData->matrixSumVec.clear();
08359 osnlData->matrixProductVec.clear();
08360 }
08361 break;
08362
08363 case 961:
08364
08365 {
08366 if (osglData->idxPresent == false)
08367 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData, "mandatory attribute idx is missing");
08368 }
08369 break;
08370
08371 case 964:
08372
08373 {
08374 #ifdef OSINSTANCE_AVAILABLE
08375 osinstance->instanceData->matrixProgramming->matrixExpressions->expr[ osnlData->tmpnlcount]->idx = osglData->idx;
08376 osinstance->instanceData->matrixProgramming->matrixExpressions->expr[ osnlData->tmpnlcount]->matrixExpressionTree
08377 = new MatrixExpressionTree();
08378 #endif
08379 }
08380 break;
08381
08382 case 965:
08383
08384 {
08385 #ifdef OSINSTANCE_AVAILABLE
08386 if (returnNlExprShape(osglData->shape) > 0)
08387 osinstance->instanceData->matrixProgramming->matrixExpressions
08388 ->expr[ osnlData->tmpnlcount]->shape
08389 = (ENUM_NL_EXPR_SHAPE)returnNlExprShape(osglData->shape);
08390 else
08391 parserData->parser_errors += addErrorMsg( NULL, osinstance, parserData, osglData, osnlData,
08392 "unknown shape specified in matrix transformation");
08393 #endif
08394 }
08395 break;
08396
08397
08398
08399 default: break;
08400 }
08401 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
08402
08403 YYPOPSTACK (yylen);
08404 yylen = 0;
08405 YY_STACK_PRINT (yyss, yyssp);
08406
08407 *++yyvsp = yyval;
08408 *++yylsp = yyloc;
08409
08410
08411
08412
08413
08414 yyn = yyr1[yyn];
08415
08416 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
08417 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
08418 yystate = yytable[yystate];
08419 else
08420 yystate = yydefgoto[yyn - YYNTOKENS];
08421
08422 goto yynewstate;
08423
08424
08425
08426
08427
08428 yyerrlab:
08429
08430 if (!yyerrstatus)
08431 {
08432 ++yynerrs;
08433 #if ! YYERROR_VERBOSE
08434 yyerror (&yylloc, osinstance, parserData, osglData, osnlData, YY_("syntax error"));
08435 #else
08436 {
08437 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
08438 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
08439 {
08440 YYSIZE_T yyalloc = 2 * yysize;
08441 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
08442 yyalloc = YYSTACK_ALLOC_MAXIMUM;
08443 if (yymsg != yymsgbuf)
08444 YYSTACK_FREE (yymsg);
08445 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
08446 if (yymsg)
08447 yymsg_alloc = yyalloc;
08448 else
08449 {
08450 yymsg = yymsgbuf;
08451 yymsg_alloc = sizeof yymsgbuf;
08452 }
08453 }
08454
08455 if (0 < yysize && yysize <= yymsg_alloc)
08456 {
08457 (void) yysyntax_error (yymsg, yystate, yychar);
08458 yyerror (&yylloc, osinstance, parserData, osglData, osnlData, yymsg);
08459 }
08460 else
08461 {
08462 yyerror (&yylloc, osinstance, parserData, osglData, osnlData, YY_("syntax error"));
08463 if (yysize != 0)
08464 goto yyexhaustedlab;
08465 }
08466 }
08467 #endif
08468 }
08469
08470 yyerror_range[0] = yylloc;
08471
08472 if (yyerrstatus == 3)
08473 {
08474
08475
08476
08477 if (yychar <= YYEOF)
08478 {
08479
08480 if (yychar == YYEOF)
08481 YYABORT;
08482 }
08483 else
08484 {
08485 yydestruct ("Error: discarding",
08486 yytoken, &yylval, &yylloc, osinstance, parserData, osglData, osnlData);
08487 yychar = YYEMPTY;
08488 }
08489 }
08490
08491
08492
08493 goto yyerrlab1;
08494
08495
08496
08497
08498
08499 yyerrorlab:
08500
08501
08502
08503
08504 if ( 0)
08505 goto yyerrorlab;
08506
08507 yyerror_range[0] = yylsp[1-yylen];
08508
08509
08510 YYPOPSTACK (yylen);
08511 yylen = 0;
08512 YY_STACK_PRINT (yyss, yyssp);
08513 yystate = *yyssp;
08514 goto yyerrlab1;
08515
08516
08517
08518
08519
08520 yyerrlab1:
08521 yyerrstatus = 3;
08522
08523 for (;;)
08524 {
08525 yyn = yypact[yystate];
08526 if (yyn != YYPACT_NINF)
08527 {
08528 yyn += YYTERROR;
08529 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
08530 {
08531 yyn = yytable[yyn];
08532 if (0 < yyn)
08533 break;
08534 }
08535 }
08536
08537
08538 if (yyssp == yyss)
08539 YYABORT;
08540
08541 yyerror_range[0] = *yylsp;
08542 yydestruct ("Error: popping",
08543 yystos[yystate], yyvsp, yylsp, osinstance, parserData, osglData, osnlData);
08544 YYPOPSTACK (1);
08545 yystate = *yyssp;
08546 YY_STACK_PRINT (yyss, yyssp);
08547 }
08548
08549 *++yyvsp = yylval;
08550
08551 yyerror_range[1] = yylloc;
08552
08553
08554 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
08555 *++yylsp = yyloc;
08556
08557
08558 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
08559
08560 yystate = yyn;
08561 goto yynewstate;
08562
08563
08564
08565
08566
08567 yyacceptlab:
08568 yyresult = 0;
08569 goto yyreturn;
08570
08571
08572
08573
08574 yyabortlab:
08575 yyresult = 1;
08576 goto yyreturn;
08577
08578 #if !defined(yyoverflow) || YYERROR_VERBOSE
08579
08580
08581
08582 yyexhaustedlab:
08583 yyerror (&yylloc, osinstance, parserData, osglData, osnlData, YY_("memory exhausted"));
08584 yyresult = 2;
08585
08586 #endif
08587
08588 yyreturn:
08589 if (yychar != YYEMPTY)
08590 yydestruct ("Cleanup: discarding lookahead",
08591 yytoken, &yylval, &yylloc, osinstance, parserData, osglData, osnlData);
08592
08593
08594 YYPOPSTACK (yylen);
08595 YY_STACK_PRINT (yyss, yyssp);
08596 while (yyssp != yyss)
08597 {
08598 yydestruct ("Cleanup: popping",
08599 yystos[*yyssp], yyvsp, yylsp, osinstance, parserData, osglData, osnlData);
08600 YYPOPSTACK (1);
08601 }
08602 #ifndef yyoverflow
08603 if (yyss != yyssa)
08604 YYSTACK_FREE (yyss);
08605 #endif
08606 #if YYERROR_VERBOSE
08607 if (yymsg != yymsgbuf)
08608 YYSTACK_FREE (yymsg);
08609 #endif
08610
08611 return YYID (yyresult);
08612 }
08613
08614
08615
08616
08617
08618
08619
08620
08621 void osilerror(YYLTYPE* mytype, OSInstance *osinstance, OSiLParserData* parserData, OSgLParserData* osglData, OSnLParserData* osnlData, std::string errormsg )
08622 {
08623 osil_empty_vectors( parserData);
08624 osgl_empty_vectors( osglData);
08625 osnl_empty_vectors( osnlData);
08626 throw ErrorClass( errormsg);
08627 }
08628
08629
08630 std::string addErrorMsg(YYLTYPE* mytype, OSInstance *osinstance, OSiLParserData* parserData, OSgLParserData* osglData, OSnLParserData* osnlData, std::string errormsg )
08631 {
08632 std::ostringstream outStr;
08633 outStr << "At line number " << osilget_lineno( scanner) << ": ";
08634 outStr << osilget_text ( scanner ) << std::endl;
08635 outStr << errormsg << std::endl;
08636
08637 return outStr.str();
08638 }
08639
08640
08641 void yygetOSInstance( const char *osil, OSInstance* osinstance, OSiLParserData *parserData, OSgLParserData *osglData, OSnLParserData *osnlData) throw (ErrorClass) {
08642 try {
08643 parseInstanceHeader( &osil, osinstance, &parserData->osillineno);
08644 parseInstanceData( &osil, osinstance, &parserData->osillineno);
08650 osil_scan_string( osil, scanner );
08651 osilset_lineno (parserData->osillineno , scanner );
08652
08653
08654
08655 if( osilparse( osinstance, parserData, osglData, osnlData) != 0) {
08656 throw ErrorClass( "Error parsing the OSiL");
08657 }
08658 }
08659 catch(const ErrorClass& eclass){
08660 throw ErrorClass( eclass.errormsg);
08661 }
08662 }
08663
08664 bool isnewline(char c, int* osillineno){
08665 if(c != '\n') return false;
08666 (*osillineno)++;
08667 return true;
08668 }
08669
08670 bool parseInstanceHeader( const char **p, OSInstance *osinstance, int* osillineno){
08671
08672 *osillineno = 1;
08673 const char *pchar = *p;
08674
08675
08676
08677 const char *startOSiL = "<osil";
08678 const char *pOSiLStart = strstr(pchar, startOSiL);
08679 if(pOSiLStart == NULL){
08680 osilerror_wrapper( pchar,osillineno,"<osil> element missing");
08681 return false;
08682 }else{
08683
08684 const char *pOSiLEnd = strstr(pOSiLStart, ">");
08685 if(pOSiLEnd == NULL) { osilerror_wrapper( pchar,osillineno,"end of <osil> element missing"); return false;
08686 } else {
08687 pchar = pOSiLEnd;
08688 pchar++;
08689 }
08690 }
08691
08692
08693
08694 const char *startInstanceHeader = "<instanceHeader";
08695 const char *endInstanceHeader = "instanceHeader";
08696 const char *startName = "ame";
08697 const char *startSource = "ource";
08698 const char *startDescription = "escription";
08699 const char *startFileCreator = "ileCreator";
08700 const char *startLicence = "icence";
08701 const char *endName = "</name";
08702 const char *endSource = "</source";
08703 const char *endDescription = "</description";
08704 const char *endFileCreator = "</fileCreator";
08705 const char *endLicence = "</licence";
08706 const char *pinstanceHeadStart = strstr(pchar, startInstanceHeader);
08707 char *pelementText = NULL;
08708 const char *ptemp = NULL;
08709 int elementSize;
08710
08711 bool namePresent = false;
08712 bool sourcePresent = false;
08713 bool descriptionPresent = false;
08714 bool fileCreatorPresent = false;
08715 bool licencePresent = false;
08716
08717 if(pinstanceHeadStart == NULL ) {
08718 const char *startInstanceData = "<instanceData";
08719 *p = strstr(pchar, startInstanceData);
08720 return true;
08721 }
08722
08723
08724 int kount = pinstanceHeadStart - pchar;
08725 while( kount-- > 0) if(*(pchar++) == '\n') (*osillineno)++;
08726
08727
08728
08729
08730 pchar+=15;
08731
08732 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08733
08734
08735 if( *pchar == '/'){
08736 pchar++;
08737
08738 if(*pchar != '>') { osilerror_wrapper( pchar,osillineno,"improperly formed <instanceHeader> element"); return false;}
08739
08740 pchar++;
08741 *p = pchar;
08742 return true;
08743 }
08744 else{
08745
08746 if(*pchar != '>') { osilerror_wrapper( pchar,osillineno,"improperly formed <instanceHeader> element"); return false;}
08747 }
08748 pchar++;
08749
08750
08751
08752
08753
08754
08755
08756
08757
08758 for (;;)
08759 {
08760
08761 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08762
08763 *p = pchar;
08764
08765 if (*pchar != '<') {osilerror_wrapper( pchar,osillineno,"improperly formed <name> element"); return false;}
08766 pchar++;
08767 switch (*pchar)
08768 {
08769 case 'n':
08770 if (namePresent)
08771 {
08772 osilerror_wrapper( pchar,osillineno,"duplicate <name> element");
08773 return false;
08774 }
08775 else
08776 namePresent = true;
08777 pchar++;
08778 while(*startName++ == *pchar) pchar++;
08779 if( (pchar - *p) != 5)
08780 {
08781 osilerror_wrapper( pchar,osillineno,"tag not recognized");
08782 return false;
08783 }
08784 else
08785 {
08786
08787
08788 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08789 if( *pchar == '/')
08790 {
08791 pchar++;
08792
08793 if(*pchar != '>')
08794 {
08795 osilerror_wrapper( pchar,osillineno,"improperly formed <name> element");
08796 return false;
08797 }
08798 pchar++;
08799 }
08800 else
08801 {
08802
08803 if(*pchar != '>')
08804 {
08805 osilerror_wrapper( pchar,osillineno,"improperly formed <name> element");
08806 return false;
08807 }
08808 pchar++;
08809
08810
08811 ptemp = strstr( pchar, endName);
08812 if( ptemp == NULL)
08813 {
08814 osilerror_wrapper( pchar,osillineno,"improperly formed </name> element");
08815 return false;
08816 }
08817 elementSize = ptemp - pchar;
08818 pelementText = new char[ elementSize + 1];
08819 strncpy(pelementText, pchar, elementSize);
08820 pelementText[ elementSize] = '\0';
08821 osinstance->instanceHeader->name = pelementText;
08822
08823 delete [] pelementText;
08824
08825 while(elementSize-- > 0)
08826 {
08827 if(*pchar++ == '\n') (*osillineno)++;
08828 }
08829
08830
08831 pchar += 6;
08832
08833 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08834
08835 if(*pchar++ != '>')
08836 {
08837 osilerror_wrapper( pchar,osillineno,"improperly formed </name> element");
08838 return false;
08839 }
08840 }
08841 }
08842 break;
08843
08844 case 's':
08845 if (sourcePresent)
08846 {
08847 osilerror_wrapper( pchar,osillineno,"duplicate <source> element");
08848 return false;
08849 }
08850 else
08851 sourcePresent = true;
08852 pchar++;
08853 while(*startSource++ == *pchar) pchar++;
08854 if( (pchar - *p) != 7)
08855 {
08856 osilerror_wrapper( pchar,osillineno,"tag not recognized");
08857 return false;
08858 }
08859 else
08860 {
08861
08862
08863 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08864 if( *pchar == '/')
08865 {
08866 pchar++;
08867
08868 if(*pchar != '>')
08869 {
08870 osilerror_wrapper( pchar,osillineno,"improperly formed <source> element");
08871 return false;
08872 }
08873 pchar++;
08874 }
08875 else
08876 {
08877
08878 if(*pchar != '>')
08879 {
08880 osilerror_wrapper( pchar,osillineno,"improperly formed <source> element");
08881 return false;
08882 }
08883 pchar++;
08884
08885
08886 ptemp = strstr( pchar, endSource);
08887 if( ptemp == NULL)
08888 {
08889 osilerror_wrapper( pchar,osillineno,"improperly formed </source> element");
08890 return false;
08891 }
08892 elementSize = ptemp - pchar;
08893 pelementText = new char[ elementSize + 1];
08894 strncpy(pelementText, pchar, elementSize);
08895 pelementText[ elementSize] = '\0';
08896 osinstance->instanceHeader->source = pelementText;
08897
08898 delete [] pelementText;
08899
08900 while(elementSize-- > 0)
08901 {
08902 if(*pchar++ == '\n') (*osillineno)++;
08903 }
08904
08905
08906 pchar += 8;
08907
08908 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08909
08910 if(*pchar++ != '>')
08911 {
08912 osilerror_wrapper( pchar,osillineno,"improperly formed </source> element");
08913 return false;
08914 }
08915 }
08916 }
08917 break;
08918
08919 case 'd':
08920 if (descriptionPresent)
08921 {
08922 osilerror_wrapper( pchar,osillineno,"duplicate <description> element");
08923 return false;
08924 }
08925 else
08926 descriptionPresent = true;
08927 pchar++;
08928 while(*startDescription++ == *pchar) pchar++;
08929 if( (pchar - *p) != 12)
08930 {
08931 osilerror_wrapper( pchar,osillineno,"tag not recognized");
08932 return false;
08933 }
08934 else
08935 {
08936
08937
08938 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08939 if( *pchar == '/')
08940 {
08941 pchar++;
08942
08943 if(*pchar != '>')
08944 {
08945 osilerror_wrapper( pchar,osillineno,"improperly formed <description> element");
08946 return false;
08947 }
08948 pchar++;
08949 }
08950 else
08951 {
08952
08953 if(*pchar != '>')
08954 {
08955 osilerror_wrapper( pchar,osillineno,"improperly formed <description> element");
08956 return false;
08957 }
08958 pchar++;
08959
08960
08961 ptemp = strstr( pchar, endDescription);
08962 if( ptemp == NULL)
08963 {
08964 osilerror_wrapper( pchar,osillineno,"improperly formed </description> element");
08965 return false;
08966 }
08967 elementSize = ptemp - pchar;
08968 pelementText = new char[ elementSize + 1];
08969 strncpy(pelementText, pchar, elementSize);
08970 pelementText[ elementSize] = '\0';
08971 osinstance->instanceHeader->description = pelementText;
08972
08973 delete [] pelementText;
08974
08975 while(elementSize-- > 0)
08976 {
08977 if(*pchar++ == '\n') (*osillineno)++;
08978 }
08979
08980
08981 pchar += 13;
08982
08983 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
08984
08985 if(*pchar++ != '>')
08986 {
08987 osilerror_wrapper( pchar,osillineno,"improperly formed </description> element");
08988 return false;
08989 }
08990 }
08991 }
08992 break;
08993
08994 case 'f':
08995 if (fileCreatorPresent)
08996 {
08997 osilerror_wrapper( pchar,osillineno,"duplicate <fileCreator> element");
08998 return false;
08999 }
09000 else
09001 fileCreatorPresent = true;
09002 pchar++;
09003 while(*startFileCreator++ == *pchar) pchar++;
09004 if( (pchar - *p) != 12)
09005 {
09006 osilerror_wrapper( pchar,osillineno,"tag not recognized");
09007 return false;
09008 }
09009 else
09010 {
09011
09012
09013 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09014 if( *pchar == '/')
09015 {
09016 pchar++;
09017
09018 if(*pchar != '>')
09019 {
09020 osilerror_wrapper( pchar,osillineno,"improperly formed <fileCreator> element");
09021 return false;
09022 }
09023 pchar++;
09024 }
09025 else
09026 {
09027
09028 if(*pchar != '>')
09029 {
09030 osilerror_wrapper( pchar,osillineno,"improperly formed <fileCreator> element");
09031 return false;
09032 }
09033 pchar++;
09034
09035
09036 ptemp = strstr( pchar, endFileCreator);
09037 if( ptemp == NULL)
09038 {
09039 osilerror_wrapper( pchar,osillineno,"improperly formed </fileCreator> element");
09040 return false;
09041 }
09042 elementSize = ptemp - pchar;
09043 pelementText = new char[ elementSize + 1];
09044 strncpy(pelementText, pchar, elementSize);
09045 pelementText[ elementSize] = '\0';
09046 osinstance->instanceHeader->fileCreator = pelementText;
09047
09048 delete [] pelementText;
09049
09050 while(elementSize-- > 0)
09051 {
09052 if(*pchar++ == '\n') (*osillineno)++;
09053 }
09054
09055
09056 pchar += 13;
09057
09058 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09059
09060 if(*pchar++ != '>')
09061 {
09062 osilerror_wrapper( pchar,osillineno,"improperly formed </fileCreator> element");
09063 return false;
09064 }
09065 }
09066 }
09067 break;
09068
09069 case 'l':
09070 if (licencePresent)
09071 {
09072 osilerror_wrapper( pchar,osillineno,"duplicate <licence> element");
09073 return false;
09074 }
09075 else
09076 licencePresent = true;
09077 pchar++;
09078 while(*startLicence++ == *pchar) pchar++;
09079 if( (pchar - *p) != 8)
09080 {
09081 osilerror_wrapper( pchar,osillineno,"tag not recognized");
09082 return false;
09083 }
09084 else
09085 {
09086
09087
09088 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09089 if( *pchar == '/')
09090 {
09091 pchar++;
09092
09093 if(*pchar != '>')
09094 {
09095 osilerror_wrapper( pchar,osillineno,"improperly formed <licence> element");
09096 return false;
09097 }
09098 pchar++;
09099 }
09100 else
09101 {
09102
09103 if(*pchar != '>')
09104 {
09105 osilerror_wrapper( pchar,osillineno,"improperly formed <licence> element");
09106 return false;
09107 }
09108 pchar++;
09109
09110
09111 ptemp = strstr( pchar, endLicence);
09112 if( ptemp == NULL)
09113 {
09114 osilerror_wrapper( pchar,osillineno,"improperly formed </licence> element");
09115 return false;
09116 }
09117 elementSize = ptemp - pchar;
09118 pelementText = new char[ elementSize + 1];
09119 strncpy(pelementText, pchar, elementSize);
09120 pelementText[ elementSize] = '\0';
09121 osinstance->instanceHeader->licence = pelementText;
09122
09123 delete [] pelementText;
09124
09125 while(elementSize-- > 0)
09126 {
09127 if(*pchar++ == '\n') (*osillineno)++;
09128 }
09129
09130
09131 pchar += 9;
09132
09133 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09134
09135 if(*pchar++ != '>')
09136 {
09137 osilerror_wrapper( pchar,osillineno,"improperly formed </licence> element");
09138 return false;
09139 }
09140 }
09141 }
09142 break;
09143
09144 case '/':
09145 pchar++;
09146 while(*endInstanceHeader++ == *pchar) pchar++;
09147 if( (pchar - *p) != 16)
09148 {
09149 osilerror_wrapper( pchar,osillineno,"improperly formed </instanceHeader> element");
09150 return false;
09151 }
09152
09153
09154 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09155
09156 if(*pchar != '>')
09157 {
09158 osilerror_wrapper( pchar,osillineno,"improperly formed </instanceHeader> element");
09159 return false;
09160 }
09161 pchar++;
09162 *p = pchar;
09163 return true;
09164
09165 default:
09166 {osilerror_wrapper( pchar,osillineno,"tag not recognized"); return false;}
09167 }
09168 }
09169 return false;
09170 }
09171
09172
09173 bool parseInstanceData( const char **p, OSInstance *osinstance, int* osillineno){
09174
09175 const char *pchar = *p;
09176 const char *startInstanceData = "<instanceData";
09177
09178
09179 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09180
09181 if(*pchar != '<'){ osilerror_wrapper( pchar,osillineno,"improperly formed <instanceData element"); return false;}
09182
09183 *p = pchar;
09184 while(*startInstanceData++ == *pchar) pchar++;
09185 if( (pchar - *p) != 13) { osilerror_wrapper( pchar,osillineno,"improperly formed <instanceData> element"); return false;}
09186
09187 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09188
09189 if(*pchar == '>'){
09190 pchar++;
09191
09192
09193 for( ; ISWHITESPACE( *pchar) || isnewline( *pchar, osillineno); pchar++ ) ;
09194
09195 *p = pchar;
09196 if( parseVariables ( p, osinstance, osillineno) != true) throw ErrorClass("error in parseVariables");
09197 if( parseObjectives ( p, osinstance, osillineno) != true) throw ErrorClass("error in parseObjectives");
09198 if( parseConstraints( p, osinstance, osillineno) != true) throw ErrorClass("error in parseConstraints");
09199 if( parseLinearConstraintCoefficients( p, osinstance, osillineno) != true) throw ErrorClass("error in parseLinearConstraintCoefficients");
09200 }else{
09201
09202 return true;
09203 }
09204
09205 return true;
09206 }
09207
09208
09209 bool parseVariables( const char **p, OSInstance *osinstance, int* osillineno){
09210 clock_t start, finish;
09211 #ifdef CHECK_PARSE_TIME
09212 double duration;
09213 #endif
09214 int ki, numChar;
09215 char *attTextEnd;
09216 const char *ch = *p;
09217 start = clock();
09218 const char *c_numberOfVariables = "numberOfVariables";
09219 const char *startVariables = "<variables";
09220 const char *endVariables = "</variables";
09221 const char *startVar = "<var";
09222 const char *endVar = "</var";
09223
09224 char *attText = NULL;
09225 const char *name = "name";
09226
09227 const char *type = "type";
09228 const char *mult = "mult";
09229
09230 int i;
09231 int varcount = 0;
09232 int vt;
09233 int numberOfVariables = 0;
09234
09235 bool varlbattON = false;
09236 bool varubattON = false ;
09237 bool vartypeattON = false;
09238 bool varnameattON = false ;
09239
09240
09241 bool varmultattON = false;
09242 bool foundVar = false;
09243 int varmult;
09244
09245
09246
09247 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09248 *p = ch;
09249 while(*startVariables++ == *ch) ch++;
09250
09251 if( (ch - *p) != 10) { return true;}
09252
09253 osinstance->instanceData->variables = new Variables();
09254
09255
09256
09257 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09258 *p = ch;
09259 while(*c_numberOfVariables++ == *ch) ch++;
09260 if( (ch - *p) != 17) { osilerror_wrapper( ch,osillineno,"incorrect numberOfVariables attribute in <variables tag>"); return false;}
09261
09262 GETATTRIBUTETEXT;
09263 ch++;
09264 numberOfVariables = atoimod1( osillineno, attText, attTextEnd);
09265 delete [] attText;
09266 if(numberOfVariables < 0) {
09267 osilerror_wrapper( ch,osillineno,"there must be a nonnegative number of variables"); return false;
09268 }
09269 osinstance->instanceData->variables->numberOfVariables = numberOfVariables;
09270 if(numberOfVariables > 0){
09271 osinstance->instanceData->variables->var = new Variable*[ numberOfVariables];
09272 for(i = 0; i < numberOfVariables; i++){
09273 osinstance->instanceData->variables->var[ i] = new Variable();
09274 }
09275 }
09276
09277 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09278
09279 if(numberOfVariables > 0){
09280
09281 if(*ch != '>' ) { osilerror_wrapper( ch,osillineno,"variables element does not have a proper closing >"); return false;}
09282 ch++;
09283
09284 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09285
09286 *p = ch;
09287 while(*startVar++ == *ch) ch++;
09288 if( (ch - *p) == 4) foundVar = true;
09289 else { osilerror_wrapper( ch,osillineno,"there must be at least one <var> element"); return false;}
09290 startVar -= 5;
09291 while(foundVar){
09292 varlbattON = false;
09293 varubattON = false;
09294 vartypeattON = false;
09295 varnameattON = false;
09296 varmultattON = false;
09297 varmult = 1;
09298 foundVar = false;
09299 vt = 0;
09300
09301
09302 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09303 while(*ch != '/' && *ch != '>'){
09304 switch (*ch) {
09305 case 'n':
09306 *p = ch;
09307 while(*name++ == *ch) ch++;
09308 if( (ch - *p) != 4 ) { osilerror_wrapper( ch,osillineno,"error in variables name attribute"); return false;}
09309 name -= 5;
09310 if(varnameattON == true) { osilerror_wrapper( ch,osillineno,"too many variable name attributes"); return false;}
09311 varnameattON = true;
09312 GETATTRIBUTETEXT;
09313 osinstance->instanceData->variables->var[varcount]->name=attText;
09314 delete [] attText;
09315 break;
09316 case 't':
09317 *p = ch;
09318 while(*type++ == *ch) ch++;
09319 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in variables type attribute"); return false;}
09320 type -= 5;
09321 if(vartypeattON == true) { osilerror_wrapper( ch,osillineno,"too many variable type attributes"); return false;}
09322 vartypeattON = true;
09323 GETATTRIBUTETEXT;
09324 vt = returnVarType(attText[0]);
09325 if( vt == 0 ) { osilerror_wrapper( ch,osillineno,"variable type not recognized"); return false;}
09326 osinstance->instanceData->variables->var[varcount]->type = attText[0];
09327 delete [] attText;
09328 break;
09329 case 'l':
09330 ch++;
09331 if(*ch++ != 'b') { osilerror_wrapper( ch,osillineno,"error in variables lower bound attribute"); return false;}
09332 if(varlbattON == true) { osilerror_wrapper( ch,osillineno,"too many variable lb attributes"); return false;}
09333 varlbattON = true;
09334 GETATTRIBUTETEXT;
09335 osinstance->instanceData->variables->var[varcount]->lb = atofmod1( osillineno,attText, attTextEnd);
09336 delete [] attText;
09337 break;
09338 case 'u':
09339 ch++;
09340 if(*ch++ != 'b') { osilerror_wrapper( ch,osillineno,"error in variables upper bound attribute"); return false;}
09341 if(varubattON == true) { osilerror_wrapper( ch,osillineno,"too many variable ub attributes"); return false;}
09342 varubattON = true;
09343 GETATTRIBUTETEXT;
09344 osinstance->instanceData->variables->var[varcount]->ub = atofmod1( osillineno,attText, attTextEnd);
09345 delete [] attText;
09346 break;
09347 case 'm':
09348 *p = ch;
09349 while(*mult++ == *ch) ch++;
09350 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in variables mult attribute"); return false;}
09351 mult -= 5;
09352 if(varmultattON == true) { osilerror_wrapper( ch,osillineno,"too many variable mult attributes"); return false;}
09353 varmultattON = true;
09354 GETATTRIBUTETEXT;
09355 varmult = atoimod1( osillineno,attText, attTextEnd);
09356 delete [] attText;
09357 break;
09358 case ' ':
09359 break;
09360 case '\n':
09361 (*osillineno)++;
09362 break;
09363 case '\t':
09364 break;
09365 case '\r':
09366 break;
09367 default:
09368 osilerror_wrapper( ch,osillineno,"invalid attribute character");
09369 return false;
09370 break;
09371 }
09372
09373 if (vt == ENUM_VARTYPE_binary)
09374 {
09375 if (varubattON == false)
09376 osinstance->instanceData->variables->var[varcount]->ub = 1.0;
09377 }
09378 ch++;
09379 }
09380
09381
09382
09383 if( *ch != '/' && *ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <var> element"); return false;}
09384 if(*ch == '/'){
09385 ch++;
09386 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <var> element"); return false;}
09387
09388 ch++;
09389 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09390
09391 *p = ch;
09392 while(*startVar++ == *ch) ch++;
09393 if( (ch - *p) == 4) {
09394 foundVar = true;
09395 startVar -= 5;
09396 }
09397 else {
09398 foundVar = false;
09399 ch = *p;
09400 }
09401 }
09402 else{
09403
09404
09405 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improper ending to a <var> element"); return false;}
09406
09407
09408 ch++;
09409 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09410
09411 *p = ch;
09412 while(*endVar++ == *ch) ch++;
09413 endVar -= 6;
09414 if( (ch - *p) != 5) { osilerror_wrapper( ch,osillineno,"</var> element missing"); return false;}
09415
09416 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09417
09418 if(*ch++ != '>') { osilerror_wrapper( ch,osillineno,"</var> element missing >"); return false;}
09419
09420
09421 ch++;
09422 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09423
09424 *p = ch;
09425 while(*startVar++ == *ch) ch++;
09426 if( (ch - *p) == 4) {
09427 foundVar = true;
09428 startVar -= 5;
09429 }
09430 else {
09431 foundVar = false;
09432 ch = *p;
09433 }
09434 }
09435 if( ((varcount+varmult) == numberOfVariables) && (foundVar == true) ) { osilerror_wrapper( ch,osillineno,"attribute numberOfVariables is less than actual number found"); return false;}
09436 for (int k=1; k < varmult; k++)
09437 {
09438 osinstance->instanceData->variables->var[varcount+k]->name
09439 = osinstance->instanceData->variables->var[varcount]->name;
09440 osinstance->instanceData->variables->var[varcount+k]->type
09441 = osinstance->instanceData->variables->var[varcount]->type;
09442 osinstance->instanceData->variables->var[varcount+k]->lb
09443 = osinstance->instanceData->variables->var[varcount]->lb;
09444 osinstance->instanceData->variables->var[varcount+k]->ub
09445 = osinstance->instanceData->variables->var[varcount]->ub;
09446 }
09447 varcount += varmult;
09448 }
09449 if(varcount < numberOfVariables) { osilerror_wrapper( ch,osillineno,"attribute numberOfVariables is greater than actual number found"); return false;}
09450
09451 *p = ch;
09452 while(*endVariables++ == *ch) ch++;
09453 if( (ch - *p) != 11) { osilerror_wrapper( ch,osillineno,"cannot find </variables> tag"); return false;}
09454 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09455
09456 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </variables> tag"); return false;}
09457 ch++;
09458 }else {
09459
09460 if(numberOfVariables < 0) { osilerror_wrapper( ch,osillineno,"cannot have a negative number of variables"); return false;}
09461
09462
09463
09464 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09465 if( *ch == '/'){
09466
09467 ch++;
09468 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed variables tag"); return false;}
09469 ch++;
09470 }
09471 else{
09472
09473 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed variables tag"); return false;}
09474 ch++;
09475
09476 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09477 *p = ch;
09478 while( *endVariables++ == *ch) ch++;
09479 if( (ch - *p) != 11) { osilerror_wrapper( ch,osillineno, "cannot find </variables> tag"); return false; }
09480 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09481
09482 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </variables> tag"); return false;}
09483 ch++;
09484 }
09485 }
09486 finish = clock();
09487 #ifdef CHECK_PARSE_TIME
09488 duration = (double) (finish - start) / CLOCKS_PER_SEC;
09489 printf("TIME TO PARSE VARIABLES = %f\n", duration);
09490 #endif
09491 *p = ch;
09492 return true;
09493 }
09494
09495
09496 bool parseObjectives( const char **p, OSInstance *osinstance, int* osillineno){
09497 clock_t start, finish;
09498 #ifdef CHECK_PARSE_TIME
09499 double duration;
09500 #endif
09501 int ki, numChar;
09502 char *attTextEnd;
09503 const char *ch = *p;
09504 start = clock();
09505 const char *c_numberOfObjectives = "numberOfObjectives";
09506 const char *startObjectives = "<objectives";
09507 const char *endObjectives = "</objectives";
09508 const char *startObj = "<obj";
09509 const char *endObj = "</obj";
09510
09511 char *attText = NULL;
09512 const char *constant = "constant";
09513 const char *maxOrMin = "maxOrMin";
09514 const char *numberOfObjCoef = "numberOfObjCoef";
09515 const char *weight = "weight";
09516 const char *name = "name";
09517 const char *mult = "mult";
09518
09519 int i;
09520
09521 bool objmaxOrMinattON = false;
09522 bool objnameattON = false;
09523 bool objconstantattON = false;
09524 bool objweightattON = false;
09525 bool objmultattON = false;
09526 bool objnumberOfObjCoefattON = false;
09527 int objcount = 0;
09528 int numberOfObjectives;
09529 bool foundObj;
09530 int objmult;
09531
09532
09533 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09534
09535 *p = ch;
09536 while( *startObjectives++ == *ch) ch++;
09537 if( (ch - *p) != 11) {
09538
09539 return true;
09540 }
09541
09542 osinstance->instanceData->objectives = new Objectives();
09543
09544
09545
09546
09547 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09548
09549
09550 if(*ch == '>'){
09551 numberOfObjectives = 1;
09552
09553 }
09554 else{
09555 *p = ch;
09556 while( *c_numberOfObjectives++ == *ch) ch++;
09557 if( (ch - *p) != 18) { osilerror_wrapper( ch,osillineno,"incorrect numberOfObjectives attribute in <objectives> tag"); return false;}
09558 GETATTRIBUTETEXT;
09559 numberOfObjectives = atoimod1( osillineno, attText, attTextEnd);
09560 delete [] attText;
09561 ch++;
09562 }
09563 if(numberOfObjectives > 0){
09564
09565 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09566
09567
09568
09569
09570
09571
09572
09573
09574
09575
09576 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"the objectives element does not have a proper closing"); return false;}
09577 osinstance->instanceData->objectives->numberOfObjectives = numberOfObjectives;
09578 osinstance->instanceData->objectives->obj = new Objective*[ numberOfObjectives];
09579 for(i = 0; i < numberOfObjectives; i++){
09580 osinstance->instanceData->objectives->obj[ i] = new Objective();
09581 }
09582
09583 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09584
09585 *p = ch;
09586 while( *startObj++ == *ch) ch++;
09587 if( (ch - *p) == 4) foundObj = true;
09588 else { osilerror_wrapper( ch,osillineno,"there must be at least one <obj> element"); return false;}
09589 startObj -= 5;
09590 start = clock();
09591 while(foundObj){
09592 objmaxOrMinattON = false;
09593 objnameattON = false;
09594 objconstantattON = false;
09595 objweightattON = false;
09596 objmultattON = false;
09597 objnumberOfObjCoefattON = false;
09598 objmult = 1;
09599
09600
09601 ch++;
09602 while(*ch != '/' && *ch != '>'){
09603 switch (*ch) {
09604 case 'n':
09605 if( *(ch+1) == 'u'){
09606 *p = ch;
09607 while( *numberOfObjCoef++ == *ch) ch++;
09608 numberOfObjCoef -= 16;
09609 if( ( (ch - *p) != 15) ) { osilerror_wrapper( ch,osillineno,"error in objective numberOfObjCoef attribute"); return false;}
09610 else{
09611 if(objnumberOfObjCoefattON == true) { osilerror_wrapper( ch,osillineno,"too many obj numberOfObjCoef attributes"); return false;}
09612 objnumberOfObjCoefattON = true;
09613 GETATTRIBUTETEXT;
09614 osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef=atoimod1( osillineno,attText, attTextEnd);
09615 if(osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef > 0 && osinstance->instanceData->variables->numberOfVariables == 0){ osilerror_wrapper( ch,osillineno,"we have zero variables, but have objective function coefficients"); return false;}
09616 osinstance->instanceData->objectives->obj[objcount]->coef = new ObjCoef*[osinstance->instanceData->objectives->obj[ objcount]->numberOfObjCoef];
09617 for(int i = 0; i < osinstance->instanceData->objectives->obj[ objcount]->numberOfObjCoef; i++)osinstance->instanceData->objectives->obj[objcount]->coef[i] = new ObjCoef();
09618 delete [] attText;
09619 }
09620 }
09621 else{
09622 *p = ch;
09623 while( *name++ == *ch) ch++;
09624 name -= 5;
09625 if( ( (ch - *p) != 4) ) { osilerror_wrapper( ch,osillineno,"error in objective name attribute"); return false;}
09626 else{
09627 if(objnameattON == true) { osilerror_wrapper( ch,osillineno,"too many obj name attributes"); return false;}
09628 objnameattON = true;
09629 GETATTRIBUTETEXT;
09630 osinstance->instanceData->objectives->obj[objcount]->name=attText;
09631 delete [] attText;
09632 }
09633 }
09634 break;
09635 case 'c':
09636 *p = ch;
09637 while( *constant++ == *ch) ch++;
09638 constant -= 9;
09639 if( ( (ch - *p) != 8) ) { osilerror_wrapper( ch,osillineno,"error in objective constant attribute"); return false;}
09640 else{
09641 if(objconstantattON == true) { osilerror_wrapper( ch,osillineno,"too many obj constant attributes"); return false;}
09642 objconstantattON = true;
09643 GETATTRIBUTETEXT;
09644 osinstance->instanceData->objectives->obj[objcount]->constant=atofmod1( osillineno,attText, attTextEnd);
09645 delete [] attText;
09646 }
09647 break;
09648 case 'w':
09649 *p = ch;
09650 while( *weight++ == *ch) ch++;
09651 weight -= 7;
09652 if( ( (ch - *p) != 6) ) { osilerror_wrapper( ch,osillineno,"error in objective weight attribute"); return false;}
09653 else{
09654 if(objweightattON == true) { osilerror_wrapper( ch,osillineno,"too many obj weight attributes"); return false;}
09655 objweightattON = true;
09656 GETATTRIBUTETEXT;
09657 osinstance->instanceData->objectives->obj[objcount]->weight=atofmod1( osillineno,attText, attTextEnd);
09658 delete [] attText;
09659 }
09660 break;
09661 case 'm':
09662 if(*(ch+1) == 'a'){
09663 *p = ch;
09664 while( *maxOrMin++ == *ch) ch++;
09665 maxOrMin -= 9;
09666 if( ( ( ch - *p) != 8) ) { osilerror_wrapper( ch,osillineno,"error in objective maxOrMin attribute"); return false;}
09667 else{
09668 if(objmaxOrMinattON == true) { osilerror_wrapper( ch,osillineno,"too many obj maxOrMin attributes"); return false;}
09669 objmaxOrMinattON = true;
09670 GETATTRIBUTETEXT;
09671 if( (strcmp("max", attText) != 0 ) && (strcmp("min", attText) != 0 ) ){osilerror_wrapper( ch,osillineno,"maxOrMin attribute in objective must be a max or min"); return false;}
09672 osinstance->instanceData->objectives->obj[objcount]->maxOrMin = attText;
09673 delete [] attText;
09674 }
09675 }
09676 else{
09677 *p = ch;
09678 while( *mult++ == *ch) ch++;
09679 mult -= 5;
09680 if( ( (ch - *p) != 4) ) { osilerror_wrapper( ch,osillineno,"error in objective mult attribute"); return false;}
09681 else{
09682 if(objmultattON == true) { osilerror_wrapper( ch,osillineno,"too many obj mult attributes"); return false;}
09683 objmultattON = true;
09684 GETATTRIBUTETEXT;
09685 objmult = atoimod1( osillineno,attText, attTextEnd);
09686 delete [] attText;
09687 }
09688 }
09689 break;
09690
09691 case ' ':
09692 break;
09693 case '\n':
09694 (*osillineno)++;
09695 break;
09696 case '\t':
09697 break;
09698 case '\r':
09699 break;
09700 default:
09701
09702 osilerror_wrapper( ch,osillineno,"invalid attribute character");
09703 return false;
09704 break;
09705 }
09706 ch++;
09707 }
09708
09709
09710
09711 if( *ch != '/' && *ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <obj> element"); return false;}
09712 if(*ch == '/'){
09713 ch++;
09714 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <obj> element"); return false;}
09715
09716 ch++;
09717 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09718
09719 for(i = 0; startObj[i] == *ch; i++, ch++);
09720 if(i == 4) foundObj = true;
09721 else foundObj = false;
09722 }
09723 else{
09724
09725
09726 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improper ending to a <obj> element"); return false;}
09727
09728
09729 ch++;
09730
09731 parseObjCoef(&ch, objcount, osinstance, osillineno);
09732 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09733
09734 for(i = 0; endObj[i] == *ch; i++, ch++);
09735 if(i != 5) { osilerror_wrapper( ch,osillineno,"</obj> element missing"); return false;}
09736
09737 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09738
09739 if(*ch++ != '>'){ osilerror_wrapper( ch,osillineno,"</obj> element missing"); return false;}
09740
09741
09742 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09743
09744 for(i = 0; startObj[i] == *ch; i++, ch++);
09745 if(i == 4) foundObj = true;
09746 else foundObj = false;
09747 }
09748 if( ((objcount+objmult) == numberOfObjectives) && (foundObj == true)) { osilerror_wrapper( ch,osillineno,"attribute numberOfObjectives is less than actual number found"); return false;}
09749 for (int k=1; k < objmult; k++)
09750 {
09751 osinstance->instanceData->objectives->obj[objcount+k]->name
09752 = osinstance->instanceData->objectives->obj[objcount]->name;
09753 osinstance->instanceData->objectives->obj[objcount+k]->maxOrMin
09754 = osinstance->instanceData->objectives->obj[objcount]->maxOrMin;
09755 osinstance->instanceData->objectives->obj[objcount+k]->constant
09756 = osinstance->instanceData->objectives->obj[objcount]->constant;
09757 osinstance->instanceData->objectives->obj[objcount+k]->weight
09758 = osinstance->instanceData->objectives->obj[objcount]->weight;
09759 osinstance->instanceData->objectives->obj[objcount+k]->numberOfObjCoef
09760 = osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef;
09761 if (osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef > 0)
09762 {
09763 osinstance->instanceData->objectives->obj[objcount+k]->coef = new ObjCoef*[osinstance->instanceData->objectives->obj[ objcount]->numberOfObjCoef];
09764 for(int i = 0; i < osinstance->instanceData->objectives->obj[ objcount]->numberOfObjCoef; i++)
09765 {
09766 osinstance->instanceData->objectives->obj[objcount+k]->coef[i] = new ObjCoef();
09767 osinstance->instanceData->objectives->obj[objcount+k]->coef[i]->idx =
09768 osinstance->instanceData->objectives->obj[objcount]->coef[i]->idx;
09769 osinstance->instanceData->objectives->obj[objcount+k]->coef[i]->value =
09770 osinstance->instanceData->objectives->obj[objcount]->coef[i]->value;
09771 }
09772 }
09773 }
09774 objcount += objmult;
09775 }
09776 if(objcount < numberOfObjectives) { osilerror_wrapper( ch,osillineno,"attribute numberOfObjectives is greater than actual number found"); return false;}
09777 ch -= i;
09778
09779 for(i = 0; endObjectives[i] == *ch; i++, ch++);
09780 if(i != 12) { osilerror_wrapper( ch,osillineno, "cannot find </objectives> tag"); return false; }
09781 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09782
09783 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </objectives> tag"); return false;}
09784 ch++;
09785 }
09786 else{
09787
09788 if(numberOfObjectives < 0) { osilerror_wrapper( ch,osillineno,"cannot have a negative number of objectives"); return false;}
09789
09790
09791
09792 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09793 if( *ch == '/'){
09794
09795 ch++;
09796 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed objectives tag"); return false;}
09797 ch++;
09798 }
09799 else{
09800
09801 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed objectives tag"); return false;}
09802 ch++;
09803
09804 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09805 for(i = 0; endObjectives[i] == *ch; i++, ch++);
09806 if(i != 12) { osilerror_wrapper( ch,osillineno, "cannot find </objectives> tag"); return false; }
09807 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09808
09809 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </objectives> tag"); return false;}
09810 ch++;
09811 }
09812 }
09813 finish = clock();
09814 #ifdef CHECK_PARSE_TIME
09815 duration = (double) (finish - start) / CLOCKS_PER_SEC;
09816 printf("TIME TO PARSE OBJECTIVES = %f\n", duration);
09817 #endif
09818 *p = ch;
09819 return true;
09820 }
09821
09822 bool parseConstraints( const char **p, OSInstance *osinstance, int* osillineno){
09823 clock_t start, finish;
09824 #ifdef CHECK_PARSE_TIME
09825 double duration;
09826 #endif
09827 int ki, numChar;
09828 char *attTextEnd;
09829 const char *ch = *p;
09830 start = clock();
09831 const char *c_numberOfConstraints = "numberOfConstraints";
09832 const char *startConstraints = "<constraints";
09833 const char *endConstraints = "</constraints";
09834 const char *startCon = "<con";
09835 const char *endCon = "</con";
09836
09837 char *attText = NULL;
09838 const char *name = "name";
09839 const char *constant = "constant";
09840 const char *mult = "mult";
09841
09842 int i;
09843 int concount = 0;
09844 int numberOfConstraints = 0;
09845
09846 bool conlbattON = false ;
09847 bool conubattON = false;
09848 bool connameattON = false;
09849 bool conconstantattON = false;
09850 bool conmultattON = false;
09851 bool foundCon = false;
09852 int conmult;
09853
09854
09855
09856 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09857
09858 *p = ch;
09859 for(i = 0; startConstraints[i] == *ch; i++, ch++);
09860 while( *startConstraints++ == *ch) ch++;
09861 if( (ch - *p) != 12) {
09862
09863 return true;
09864 }
09865
09866 osinstance->instanceData->constraints = new Constraints();
09867
09868
09869
09870 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09871 *p = ch;
09872 while( *c_numberOfConstraints++ == *ch) ch++;
09873 if( (ch - *p) != 19) { osilerror_wrapper( ch,osillineno,"incorrect numberOfConstraints attribute in <constraints> tag"); return false;}
09874
09875 GETATTRIBUTETEXT;
09876 ch++;
09877 numberOfConstraints = atoimod1( osillineno, attText, attTextEnd);
09878 delete [] attText;
09879
09880
09881 if(numberOfConstraints > 0){
09882 osinstance->instanceData->constraints->numberOfConstraints = numberOfConstraints;
09883 osinstance->instanceData->constraints->con = new Constraint*[ numberOfConstraints];
09884 for(i = 0; i < numberOfConstraints; i++){
09885 osinstance->instanceData->constraints->con[ i] = new Constraint();
09886 }
09887
09888 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09889
09890 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"the constraints element does not have a proper closing"); return false;}
09891
09892 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
09893
09894 *p = ch;
09895 while( *startCon++ == *ch) ch++;
09896 if( (ch - *p) == 4) foundCon = true;
09897 else { osilerror_wrapper( ch,osillineno,"there must be at least one <con> element"); return false;}
09898 startCon -= 5;
09899 while(foundCon){
09900 conlbattON = false ;
09901 conubattON = false;
09902 connameattON = false;
09903 conconstantattON = false;
09904 conmultattON = false;
09905 conmult = 1;
09906
09907
09908
09909 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09910 while(*ch != '/' && *ch != '>'){
09911 switch (*ch) {
09912 case 'n':
09913 *p = ch;
09914 while( *name++ == *ch) ch++;
09915 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in constraints name attribute"); return false;}
09916 if(connameattON == true) { osilerror_wrapper( ch,osillineno,"too many con name attributes"); return false;}
09917 name -= 5;
09918 connameattON = true;
09919 GETATTRIBUTETEXT;
09920 osinstance->instanceData->constraints->con[concount]->name=attText;
09921 delete [] attText;
09922 break;
09923 case 'c':
09924 *p = ch;
09925 while( *constant++ == *ch) ch++;
09926 if( ((ch - *p) != 8) ) { osilerror_wrapper( ch,osillineno,"error in constraint constant attribute"); return false;}
09927 if(conconstantattON == true) { osilerror_wrapper( ch,osillineno,"too many con constant attributes"); return false;}
09928 constant -= 9;
09929 conconstantattON = true;
09930 GETATTRIBUTETEXT;
09931 osinstance->instanceData->constraints->con[concount]->constant=atofmod1( osillineno,attText, attTextEnd);
09932 delete [] attText;
09933 break;
09934 case 'l':
09935 ch++;
09936 if(*ch++ != 'b') { osilerror_wrapper( ch,osillineno,"error in constraint lb attribute"); return false;}
09937 if(conlbattON == true) { osilerror_wrapper( ch,osillineno,"too many con lb attributes"); return false;}
09938 conlbattON = true;
09939 GETATTRIBUTETEXT;
09940 osinstance->instanceData->constraints->con[concount]->lb = atofmod1( osillineno,attText, attTextEnd);
09941 delete [] attText;
09942 break;
09943 case 'u':
09944 ch++;
09945 if(*ch++ != 'b') { osilerror_wrapper( ch,osillineno,"error in constraint ub attribute"); return false;}
09946 if(conubattON == true) { osilerror_wrapper( ch,osillineno,"too many con ub attributes"); return false;}
09947 conubattON = true;
09948 GETATTRIBUTETEXT;
09949 osinstance->instanceData->constraints->con[concount]->ub = atofmod1( osillineno,attText, attTextEnd);
09950 delete [] attText;
09951 break;
09952 case 'm':
09953 *p = ch;
09954 while( *mult++ == *ch) ch++;
09955 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in constraints mult attribute"); return false;}
09956 if(conmultattON == true) { osilerror_wrapper( ch,osillineno,"too many con mult attributes"); return false;}
09957 mult -= 5;
09958 conmultattON = true;
09959 GETATTRIBUTETEXT;
09960 conmult = atoimod1( osillineno,attText, attTextEnd);
09961 delete [] attText;
09962 break;
09963 case ' ':
09964 break;
09965 case '\n':
09966 (*osillineno)++;
09967 break;
09968 case '\t':
09969 break;
09970 case '\r':
09971 break;
09972 default:
09973 osilerror_wrapper( ch,osillineno,"invalid attribute character");
09974 return false;
09975 break;
09976 }
09977 ch++;
09978 }
09979
09980
09981
09982 if( *ch != '/' && *ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <con> element"); return false;}
09983 if(*ch == '/'){
09984 ch++;
09985 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"incorrect end of <con> element"); return false;}
09986
09987 ch++;
09988 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
09989
09990 *p = ch;
09991 while( *startCon++ == *ch) ch++;
09992 if( (ch - *p) == 4){
09993 foundCon = true;
09994 startCon -= 5;
09995 }
09996 else{
09997 foundCon = false;
09998 ch = *p;
09999 }
10000 }
10001 else{
10002
10003
10004 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improper ending to a <con> element"); return false;}
10005
10006
10007 ch++;
10008 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10009
10010 *p = ch;
10011 while( *endCon++ == *ch) ch++;
10012 if( (ch - *p) != 5) { osilerror_wrapper( ch,osillineno,"</con> element missing"); return false;}
10013 endCon -= 6;
10014
10015 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10016
10017 if(*ch++ != '>') { osilerror_wrapper( ch,osillineno,"</con> element missing >"); return false;}
10018
10019
10020 ch++;
10021 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10022
10023 *p = ch;
10024 while( *startCon++ == *ch) ch++;
10025 if( (ch - *p) == 4){
10026 foundCon = true;
10027 startCon -= 5;
10028 }
10029 else{
10030 foundCon = false;
10031 ch = *p;
10032 }
10033 }
10034 if( ((concount+conmult) == numberOfConstraints) && (foundCon == true) ) { osilerror_wrapper( ch,osillineno,"attribute numberOfConstraints is less than actual number found"); return false;}
10035 for (int k=1; k < conmult; k++)
10036 {
10037 osinstance->instanceData->constraints->con[concount+k]->name
10038 = osinstance->instanceData->constraints->con[concount]->name ;
10039 osinstance->instanceData->constraints->con[concount+k]->constant
10040 = osinstance->instanceData->constraints->con[concount]->constant ;
10041 osinstance->instanceData->constraints->con[concount+k]->lb
10042 = osinstance->instanceData->constraints->con[concount]->lb ;
10043 osinstance->instanceData->constraints->con[concount+k]->ub
10044 = osinstance->instanceData->constraints->con[concount]->ub ;
10045 }
10046 concount += conmult;
10047 }
10048 if(concount < numberOfConstraints) { osilerror_wrapper( ch,osillineno,"attribute numberOfConstraints is greater than actual number found"); return false;}
10049
10050 *p = ch;
10051 while( *endConstraints++ == *ch) ch++;
10052 if( (ch - *p) != 13) { osilerror_wrapper( ch,osillineno, "cannot find </constraints> tag"); return false;}
10053 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10054
10055 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </constraints> tag"); return false;}
10056 ch++;
10057 }
10058 else{
10059
10060 if(numberOfConstraints < 0) { osilerror_wrapper( ch,osillineno,"cannot have a negative number of constraints"); return false;}
10061
10062
10063
10064 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10065 if( *ch == '/'){
10066
10067 ch++;
10068 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed constraints tag"); return false;}
10069 ch++;
10070 }
10071 else{
10072
10073 if( *ch != '>') { osilerror_wrapper( ch,osillineno,"improperly closed constraints tag"); return false;}
10074 ch++;
10075
10076 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10077 *p = ch;
10078 while( *endConstraints++ == *ch) ch++;
10079 if( (ch - *p) != 13) { osilerror_wrapper( ch,osillineno, "cannot find </constraints> tag"); return false; }
10080 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10081
10082 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </constraints> tag"); return false;}
10083 ch++;
10084 }
10085 }
10086 finish = clock();
10087 #ifdef CHECK_PARSE_TIME
10088 duration = (double) (finish - start) / CLOCKS_PER_SEC;
10089 printf("TIME TO PARSE CONSTRAINTS = %f\n", duration);
10090 #endif
10091 *p = ch;
10092 return true;
10093 }
10094
10095 bool parseLinearConstraintCoefficients( const char **p, OSInstance *osinstance, int* osillineno){;
10096 int ki, numChar;
10097 char *attTextEnd;
10098 const char *ch = *p;
10099 const char *c_numberOfValues = "numberOfValues";
10100 const char *startlinearConstraintCoefficients = "<linearConstraintCoefficients";
10101 const char *endlinearConstraintCoefficients = "</linearConstraintCoefficients";
10102
10103 char *attText = NULL;
10104
10105 int numberOfValues;
10106
10107
10108 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10109
10110 *p = ch;
10111 while( *startlinearConstraintCoefficients++ == *ch) ch++;
10112 if( (ch - *p) != 29) {
10113
10114 ch = *p;
10115 return true;
10116 }
10117
10118 osinstance->instanceData->linearConstraintCoefficients = new LinearConstraintCoefficients();
10119
10120
10121
10122 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10123 *p = ch;
10124 while( *c_numberOfValues++ == *ch) ch++;
10125 if( (ch - *p) != 14) { osilerror_wrapper( ch,osillineno,"incorrect numberOfValues attribute in <linearConstraintCoefficients> tag"); return false;}
10126
10127 GETATTRIBUTETEXT;
10128 ch++;
10129 numberOfValues = atoimod1( osillineno, attText, attTextEnd);
10130 if(numberOfValues > 0 && osinstance->instanceData->variables->numberOfVariables == 0){ osilerror_wrapper( ch,osillineno,"we have zero variables, but A matrix coefficients"); return false;}
10131 delete [] attText;
10132 if(numberOfValues <= 0) { osilerror_wrapper( ch,osillineno,"the number of nonlinear nonzeros must be positive"); return false;}
10133 osinstance->instanceData->linearConstraintCoefficients->numberOfValues = numberOfValues;
10134
10135 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10136
10137 if(*ch == '/'){
10138 ch++;
10139 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"the linearConstraintCoefficients element does not have a proper closing"); return false;}
10140 else{
10141 if(numberOfValues > 0) { osilerror_wrapper( ch,osillineno,"numberOfValues positive, but there are no values"); return false;}
10142 return false;
10143 }
10144 }
10145
10146 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"the <linearConstraintCoefficients> element does not have a proper closing"); return false;}
10147
10148 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10149 if( parseStart( &ch, osinstance, osillineno) != true) {osilerror_wrapper( ch,osillineno,"error processing <start> element"); return false;}
10150
10151
10152
10153 if( parseColIdx( &ch, osinstance, osillineno) == true)
10154 {
10155 if( parseRowIdx( &ch, osinstance, osillineno) == true)
10156 {
10157 osilerror_wrapper( ch,osillineno,"cannot store by both row and column");
10158 return false;
10159 }
10160 }
10161 else
10162 {
10163 if( parseRowIdx( &ch, osinstance, osillineno) != true)
10164 {
10165 osilerror_wrapper( ch,osillineno,"must have either RowIdx or ColIdx");
10166 return false;
10167 }
10168 else
10169 {
10170 if ( parseColIdx( &ch, osinstance, osillineno) == true )
10171 {
10172 osilerror_wrapper( ch,osillineno,"cannot store by both row and column");
10173 return false;
10174 }
10175 }
10176 }
10177
10178 if( parseValue( &ch, osinstance, osillineno) != true) {osilerror_wrapper( ch,osillineno, "could not parse <value> element"); return false;}
10179 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10180
10181 *p = ch;
10182 while( *endlinearConstraintCoefficients++ == *ch) ch++;
10183 if( (ch - *p) != 30) { osilerror_wrapper( ch,osillineno, "cannot find </linearConstraintCoefficients> tag"); return false;}
10184 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10185
10186 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </linearConstraintCoefficients> tag"); return false;}
10187 ch++;
10188 *p = ch;
10189 return true;
10190 }
10191
10192 bool parseStart(const char **p, OSInstance *osinstance, int* osillineno){
10193 clock_t start, finish;
10194 #ifdef CHECK_PARSE_TIME
10195 double duration;
10196 #endif
10197 int ki, numChar;
10198 char *attTextEnd;
10199 const char *ch = *p;
10200 start = clock();
10201 const char* startStart = "<start";
10202 const char* endStart = "</start";
10203 const char* startEl = "<el";
10204 const char* endEl = "</el";
10205
10206 char *attText = NULL;
10207 const char *incr = "incr";
10208 const char *mult = "mult";
10209 int kount = 0;
10210 int i;
10211
10212 bool elmultattON = false ;
10213 bool elincrattON = false;
10214 bool foundEl = false;
10215 int elmult;
10216 int elincr;
10217 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10218
10219 *p = ch;
10220 while( *startStart++ == *ch) ch++;
10221 if( (ch - *p) != 6) {
10222
10223 ch = *p;
10224 return false;
10225 }
10226
10227 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10228
10229 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <start> element"); return false;}
10230 ch++;
10231
10232 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10233
10234 *p = ch;
10235 while( *startEl++ == *ch) ch++;
10236 startEl -= 4;
10237 if( (ch - *p) != 3) {
10238
10239 ch = *p;
10240
10241 int dataSize = 0;
10242 char* b64string = parseBase64(&ch, &dataSize, osillineno );
10243 if( b64string == NULL) { osilerror_wrapper( ch,osillineno,"<start> must have children or base64 data"); return false;}
10244 std::string base64decodeddata = Base64::decodeb64( b64string );
10245 int base64decodeddatalength = base64decodeddata.length();
10246 int *intvec = NULL;
10247 osinstance->instanceData->linearConstraintCoefficients->start->el = new int[(base64decodeddatalength/dataSize) ];
10248 intvec = (int*)&base64decodeddata[0];
10249 for (i = 0; i < (base64decodeddatalength/dataSize); i++){
10250 osinstance->instanceData->linearConstraintCoefficients->start->el[ i] = *(intvec++);
10251 }
10252 delete [] b64string;
10253 }
10254 else{
10255 foundEl = true;
10256 osinstance->instanceData->linearConstraintCoefficients->start->el =
10257 new int[ std::max( osinstance->instanceData->constraints->numberOfConstraints,
10258 osinstance->instanceData->variables->numberOfVariables) + 1];
10259 while(foundEl){
10260
10261 elmultattON = false ;
10262 elincrattON = false;
10263 elmult = 1;
10264 elincr = 0;
10265
10266
10267
10268 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10269 while(*ch != '/' && *ch != '>'){
10270 switch (*ch) {
10271 case 'i':
10272 *p = ch;
10273 while( *incr++ == *ch) ch++;
10274 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in starts incr attribute"); return false;}
10275 if(elincrattON == true) { osilerror_wrapper( ch,osillineno,"too many el incr attributes"); return false;}
10276 incr -= 5;
10277 elincrattON = true;
10278 GETATTRIBUTETEXT;
10279 elincr = atoimod1( osillineno,attText, attTextEnd);
10280 delete [] attText;
10281 break;
10282 case 'm':
10283 *p = ch;
10284 while( *mult++ == *ch) ch++;
10285 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in starts mult attribute"); return false;}
10286 if(elmultattON == true) { osilerror_wrapper( ch,osillineno,"too many el mult attributes"); return false;}
10287 mult -= 5;
10288 elmultattON = true;
10289 GETATTRIBUTETEXT;
10290 elmult = atoimod1( osillineno,attText, attTextEnd);
10291 delete [] attText;
10292 break;
10293 case ' ':
10294 break;
10295 case '\n':
10296 (*osillineno)++;
10297 break;
10298 case '\t':
10299 break;
10300 case '\r':
10301 break;
10302 default:
10303 osilerror_wrapper( ch,osillineno,"invalid attribute character");
10304 return false;
10305 break;
10306 }
10307 ch++;
10308 }
10309
10310
10311 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10312 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <el> tag"); return false;}
10313
10314 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10315
10316 *p = ch;
10317
10318
10319 while( *ch != '<' && *ch != EOF){
10320 ch++;
10321 }
10322
10323 if(*ch != '<') { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10324
10325
10326 if(kount +elmult > std::max(osinstance->instanceData->constraints->numberOfConstraints,
10327 osinstance->instanceData->variables->numberOfVariables) + 1 )
10328 {
10329 osilerror_wrapper( ch, osillineno,"number of start elements exceeds the maximum number of rows or columns plus 1");
10330 }
10331 osinstance->instanceData->linearConstraintCoefficients->start->el[kount] = atoimod1( osillineno, *p, ch);
10332 for (int k=1; k < elmult; k++)
10333 {
10334 osinstance->instanceData->linearConstraintCoefficients->start->el[ kount+k]
10335 = osinstance->instanceData->linearConstraintCoefficients->start->el[ kount] + k*elincr;
10336 }
10337 kount += elmult;
10338
10339 *p = ch;
10340 while( *endEl++ == *ch) ch++;
10341 endEl -= 5;
10342 if( (ch - *p) != 4 ) { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10343
10344 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10345 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </el> tag"); return false;}
10346
10347 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10348
10349 *p = ch;
10350 while( *startEl++ == *ch) ch++;
10351 if( (ch - *p) == 3){
10352 foundEl = true;
10353 startEl -= 4;
10354 }
10355 else{
10356 foundEl = false;
10357 ch = *p;
10358 }
10359 }
10360
10361 if(osinstance->instanceData->linearConstraintCoefficients->start->el[ kount - 1 ] !=
10362 osinstance->instanceData->linearConstraintCoefficients->numberOfValues )
10363 osilerror_wrapper( ch, osillineno,"the value of the last start element is not equal to numberOfValues");
10364 }
10365
10366 *p = ch;
10367 while( *endStart++ == *ch) ch++;
10368 if( (ch - *p) != 7) { osilerror_wrapper( ch,osillineno, "cannot find </start> tag"); return false;}
10369 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10370
10371 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </start> tag"); return false;}
10372 ch++;
10373
10374 finish = clock();
10375 #ifdef CHECK_PARSE_TIME
10376 duration = (double) (finish - start) / CLOCKS_PER_SEC;
10377 printf("TIME TO PARSE STARTS = %f\n", duration);
10378 #endif
10379 *p = ch;
10380 osinstance->instanceData->linearConstraintCoefficients->iNumberOfStartElements = kount;
10381
10382 return true;
10383 }
10384
10385 bool parseRowIdx( const char **p, OSInstance *osinstance, int* osillineno){
10386 clock_t start, finish;
10387 #ifdef CHECK_PARSE_TIME
10388 double duration;
10389 #endif
10390 int ki, numChar;
10391 char *attTextEnd;
10392 const char *ch = *p;
10393 start = clock();
10394 const char* startRowIdx = "<rowIdx";
10395 const char* endRowIdx = "</rowIdx";
10396 const char* startEl = "<el";
10397 const char* endEl = "</el";
10398
10399 char *attText = NULL;
10400 const char *incr = "incr";
10401 const char *mult = "mult";
10402 int kount = 0;
10403 int i;
10404
10405 bool elmultattON = false ;
10406 bool elincrattON = false;
10407 bool foundEl = false;
10408 int elmult;
10409 int elincr;
10410 int numberOfEl;
10411
10412 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10413
10414 *p = ch;
10415 while( *startRowIdx++ == *ch) ch++;
10416 if( (ch - *p) != 7) {
10417
10418 ch = *p;
10419 return false;
10420 }
10421
10422 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10423
10424 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <rowIdx> element"); return false;}
10425 ch++;
10426
10427 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10428
10429 *p = ch;
10430 while( *startEl++ == *ch) ch++;
10431 startEl -= 4;
10432 if( (ch - *p) != 3) {
10433
10434 ch = *p;
10435
10436 int dataSize = 0;
10437 char* b64string = parseBase64(&ch, &dataSize, osillineno );
10438 if( b64string == NULL) { osilerror_wrapper( ch,osillineno,"<rowIdx> must have children or base64 data"); return false;}
10439 std::string base64decodeddata = Base64::decodeb64( b64string );
10440 int base64decodeddatalength = base64decodeddata.length();
10441 int *intvec = NULL;
10442 numberOfEl = (base64decodeddatalength/dataSize);
10443 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el = new int[numberOfEl ];
10444 osinstance->instanceData->linearConstraintCoefficients->colIdx->el = NULL;
10445 osinstance->instanceData->linearConstraintCoefficients->rowIdx->numberOfEl = numberOfEl;
10446 osinstance->instanceData->linearConstraintCoefficients->colIdx->numberOfEl = 0;
10447 osinstance->instanceData->linearConstraintCoefficients->start->numberOfEl = osinstance->instanceData->variables->numberOfVariables + 1;
10448 intvec = (int*)&base64decodeddata[0];
10449 for(i = 0; i < numberOfEl; i++){
10450 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el[ i] = *(intvec++);
10451 kount++;
10452 }
10453 delete [] b64string;
10454 }
10455 else{
10456 foundEl = true;
10457
10458
10459 if( osinstance->instanceData->linearConstraintCoefficients->iNumberOfStartElements != osinstance->instanceData->variables->numberOfVariables + 1)
10460 osilerror_wrapper( ch, osillineno,"we are storing in column major format, but number of start elements not equal number of variables + 1");
10461 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el = new int[ osinstance->instanceData->linearConstraintCoefficients->numberOfValues];
10462 osinstance->instanceData->linearConstraintCoefficients->colIdx->el = NULL;
10463 osinstance->instanceData->linearConstraintCoefficients->rowIdx->numberOfEl = osinstance->instanceData->linearConstraintCoefficients->numberOfValues;
10464 osinstance->instanceData->linearConstraintCoefficients->colIdx->numberOfEl = 0;
10465 osinstance->instanceData->linearConstraintCoefficients->start->numberOfEl = osinstance->instanceData->variables->numberOfVariables + 1;
10466 while(foundEl){
10467
10468 elmultattON = false ;
10469 elincrattON = false;
10470 elmult = 1;
10471 elincr = 0;
10472
10473
10474
10475 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10476 while(*ch != '/' && *ch != '>'){
10477 switch (*ch) {
10478 case 'i':
10479 *p = ch;
10480 while( *incr++ == *ch) ch++;
10481 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in rowIdx incr attribute"); return false;}
10482 if(elincrattON == true) { osilerror_wrapper( ch,osillineno,"too many el incr attributes"); return false;}
10483 incr -= 5;
10484 elincrattON = true;
10485 GETATTRIBUTETEXT;
10486 elincr = atoimod1( osillineno,attText, attTextEnd);
10487 delete [] attText;
10488 break;
10489 case 'm':
10490 *p = ch;
10491 while( *mult++ == *ch) ch++;
10492 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in rowIdx mult attribute"); return false;}
10493 if(elmultattON == true) { osilerror_wrapper( ch,osillineno,"too many el mult attributes"); return false;}
10494 mult -= 5;
10495 elmultattON = true;
10496 GETATTRIBUTETEXT;
10497 elmult = atoimod1( osillineno,attText, attTextEnd);
10498 delete [] attText;
10499 break;
10500 case ' ':
10501 break;
10502 case '\n':
10503 (*osillineno)++;
10504 break;
10505 case '\t':
10506 break;
10507 case '\r':
10508 break;
10509 default:
10510 osilerror_wrapper( ch,osillineno,"invalid attribute character");
10511 return false;
10512 break;
10513 }
10514 ch++;
10515 }
10516
10517
10518 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10519 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <el> tag"); return false;}
10520
10521 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10522
10523 *p = ch;
10524
10525
10526 while( *ch != '<' && *ch != EOF){
10527 ch++;
10528 }
10529
10530 if(*ch != '<') { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10531
10532
10533 if(kount + elmult > osinstance->instanceData->linearConstraintCoefficients->numberOfValues)
10534 {
10535 osilerror_wrapper( ch, osillineno,"number of rowIdx elements exceeds the number declared");
10536 }
10537 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el[ kount] = atoimod1( osillineno, *p, ch);
10538 for (int k=1; k < elmult; k++)
10539 {
10540 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el[ kount+k]
10541 = osinstance->instanceData->linearConstraintCoefficients->rowIdx->el[ kount] + k*elincr;
10542 }
10543 kount += elmult;
10544
10545 *p = ch;
10546 while( *endEl++ == *ch) ch++;
10547 endEl -= 5;
10548 if( (ch - *p) != 4 ) { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10549
10550 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10551 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </el> tag"); return false;}
10552
10553 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10554
10555 *p = ch;
10556 while( *startEl++ == *ch) ch++;
10557 if( (ch - *p) == 3){
10558 foundEl = true;
10559 startEl -= 4;
10560 }
10561 else{
10562 foundEl = false;
10563 ch = *p;
10564 }
10565 }
10566 }
10567
10568 *p = ch;
10569 while( *endRowIdx++ == *ch) ch++;
10570 if( (ch - *p) != 8) { osilerror_wrapper( ch,osillineno, "cannot find </rowIdx> tag"); return false;}
10571 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10572
10573 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </rowIdx> tag");}
10574 ch++;
10575 if(kount > osinstance->instanceData->linearConstraintCoefficients->numberOfValues) { osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients attribute less than number of row indices found"); return false;}
10576 if(kount < osinstance->instanceData->linearConstraintCoefficients->numberOfValues) { osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients attribute greater than number of row indices found"); return false;}
10577 finish = clock();
10578 #ifdef CHECK_PARSE_TIME
10579 duration = (double) (finish - start) / CLOCKS_PER_SEC;
10580 printf("TIME TO PARSE ROW INDEXES = %f\n", duration);
10581 #endif
10582 *p = ch;
10583 return true;
10584 }
10585
10586
10587 bool parseColIdx( const char **p, OSInstance *osinstance, int* osillineno){
10588 clock_t start, finish;
10589 #ifdef CHECK_PARSE_TIME
10590 double duration;
10591 #endif
10592 int ki, numChar;
10593 char *attTextEnd;
10594 const char *ch = *p;
10595 start = clock();
10596 const char* startColIdx = "<colIdx";
10597 const char* endColIdx = "</colIdx";
10598 const char* startEl = "<el";
10599 const char* endEl = "</el";
10600
10601 char *attText = NULL;
10602 const char *incr = "incr";
10603 const char *mult = "mult";
10604 int kount = 0;
10605 int i;
10606
10607 bool elmultattON = false ;
10608 bool elincrattON = false;
10609 bool foundEl = false;
10610 int elmult;
10611 int elincr;
10612 int numberOfEl;
10613
10614 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10615
10616 *p = ch;
10617 while( *startColIdx++ == *ch) ch++;
10618 if( (ch - *p) != 7) {
10619
10620 ch = *p;
10621 return false;
10622 }
10623
10624 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10625
10626 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <colIdx> element"); return false;}
10627 ch++;
10628
10629 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10630
10631 *p = ch;
10632 while( *startEl++ == *ch) ch++;
10633 startEl -= 4;
10634 if( (ch - *p) != 3) {
10635
10636 ch = *p;
10637
10638 int dataSize = 0;
10639 char* b64string = parseBase64(&ch, &dataSize, osillineno );
10640 if( b64string == NULL) { osilerror_wrapper( ch,osillineno,"<colIdx> must have children or base64 data"); return false;}
10641 std::string base64decodeddata = Base64::decodeb64( b64string );
10642 int base64decodeddatalength = base64decodeddata.length();
10643 int *intvec = NULL;
10644 numberOfEl = (base64decodeddatalength/dataSize);
10645 osinstance->instanceData->linearConstraintCoefficients->colIdx->el = new int[numberOfEl ];
10646 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el = NULL;
10647 osinstance->instanceData->linearConstraintCoefficients->colIdx->numberOfEl = numberOfEl;
10648 osinstance->instanceData->linearConstraintCoefficients->rowIdx->numberOfEl = 0;
10649 osinstance->instanceData->linearConstraintCoefficients->start->numberOfEl = osinstance->instanceData->constraints->numberOfConstraints + 1;
10650 intvec = (int*)&base64decodeddata[0];
10651 for(i = 0; i < numberOfEl; i++){
10652 osinstance->instanceData->linearConstraintCoefficients->colIdx->el[ i] = *(intvec++);
10653 kount++;
10654 }
10655 delete [] b64string;
10656 }
10657 else{
10658 foundEl = true;
10659
10660
10661 if(osinstance->instanceData->linearConstraintCoefficients->iNumberOfStartElements != osinstance->instanceData->constraints->numberOfConstraints + 1)
10662 osilerror_wrapper( ch, osillineno,"we are storing in row major format, but number of start elements not equal number of rows + 1");
10663 osinstance->instanceData->linearConstraintCoefficients->colIdx->el = new int[ osinstance->instanceData->linearConstraintCoefficients->numberOfValues];
10664 osinstance->instanceData->linearConstraintCoefficients->rowIdx->el = NULL;
10665 osinstance->instanceData->linearConstraintCoefficients->colIdx->numberOfEl = osinstance->instanceData->linearConstraintCoefficients->numberOfValues;
10666 osinstance->instanceData->linearConstraintCoefficients->rowIdx->numberOfEl = 0;
10667 osinstance->instanceData->linearConstraintCoefficients->start->numberOfEl = osinstance->instanceData->constraints->numberOfConstraints + 1;
10668 while(foundEl){
10669
10670 elmultattON = false ;
10671 elincrattON = false;
10672 elmult = 1;
10673 elincr = 0;
10674
10675
10676
10677 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10678 while(*ch != '/' && *ch != '>'){
10679 switch (*ch) {
10680 case 'i':
10681 *p = ch;
10682 while( *incr++ == *ch) ch++;
10683 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in colIdx incr attribute"); return false;}
10684 if(elincrattON == true) { osilerror_wrapper( ch,osillineno,"too many el incr attributes"); return false;}
10685 incr -= 5;
10686 elincrattON = true;
10687 GETATTRIBUTETEXT;
10688 elincr = atoimod1( osillineno,attText, attTextEnd);
10689 delete [] attText;
10690 break;
10691 case 'm':
10692 *p = ch;
10693 while( *mult++ == *ch) ch++;
10694 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in colIdx mult attribute"); return false;}
10695 if(elmultattON == true) { osilerror_wrapper( ch,osillineno,"too many el mult attributes"); return false;}
10696 mult -= 5;
10697 elmultattON = true;
10698 GETATTRIBUTETEXT;
10699 elmult = atoimod1( osillineno,attText, attTextEnd);
10700 delete [] attText;
10701 break;
10702 case ' ':
10703 break;
10704 case '\n':
10705 (*osillineno)++;
10706 break;
10707 case '\t':
10708 break;
10709 case '\r':
10710 break;
10711 default:
10712 osilerror_wrapper( ch,osillineno,"invalid attribute character");
10713 return false;
10714 break;
10715 }
10716 ch++;
10717 }
10718
10719
10720 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10721 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <el> tag"); return false;}
10722
10723 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
10724
10725 *p = ch;
10726
10727
10728 while( *ch != '<' && *ch != EOF){
10729 ch++;
10730 }
10731
10732 if(*ch != '<') { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10733
10734 if(kount + elmult > osinstance->instanceData->linearConstraintCoefficients->numberOfValues)
10735 {
10736 osilerror_wrapper( ch, osillineno,"number of colIdx elements exceeds the number declared");
10737 }
10738 osinstance->instanceData->linearConstraintCoefficients->colIdx->el[ kount] = atoimod1( osillineno, *p, ch);
10739 for (int k=1; k < elmult; k++)
10740 {
10741 osinstance->instanceData->linearConstraintCoefficients->colIdx->el[ kount+k]
10742 = osinstance->instanceData->linearConstraintCoefficients->colIdx->el[ kount] + k*elincr;
10743 }
10744 kount += elmult;
10745
10746 *p = ch;
10747 while( *endEl++ == *ch) ch++;
10748 endEl -= 5;
10749 if( (ch - *p) != 4 ) { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10750
10751 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10752 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </el> tag"); return false;}
10753
10754 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10755
10756 *p = ch;
10757 while( *startEl++ == *ch) ch++;
10758 if( (ch - *p) == 3){
10759 foundEl = true;
10760 startEl -= 4;
10761 }
10762 else{
10763 foundEl = false;
10764 ch = *p;
10765 }
10766 }
10767 }
10768
10769 *p = ch;
10770 while( *endColIdx++ == *ch) ch++;
10771 if( (ch - *p) != 8) { osilerror_wrapper( ch,osillineno, "cannot find </colIdx> tag"); return false;}
10772 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10773
10774 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </colIdx> tag"); return false;}
10775 ch++;
10776 if(kount > osinstance->instanceData->linearConstraintCoefficients->numberOfValues) { osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients attribute less than number of column indices found"); return false;}
10777 if(kount < osinstance->instanceData->linearConstraintCoefficients->numberOfValues) { osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients attribute greater than number of column indices found"); return false;}
10778 finish = clock();
10779 #ifdef CHECK_PARSE_TIME
10780 duration = (double) (finish - start) / CLOCKS_PER_SEC;
10781 printf("TIME TO PARSE COLUMN INDEXES = %f\n", duration);
10782 #endif
10783 *p = ch;
10784 return true;
10785 }
10786
10787
10788 bool parseValue( const char **p, OSInstance *osinstance, int* osillineno){
10789 clock_t start, finish;
10790 #ifdef CHECK_PARSE_TIME
10791 double duration;
10792 #endif
10793 int ki, numChar;
10794 char *attTextEnd;
10795 const char *ch = *p;
10796 start = clock();
10797 const char* startValue = "<value";
10798 const char* endValue = "</value";
10799 const char* startEl = "<el";
10800 const char* endEl = "</el";
10801
10802 char *attText = NULL;
10803 const char *incr = "incr";
10804 const char *mult = "mult";
10805 int kount = 0;
10806 int i;
10807
10808 bool elmultattON = false ;
10809 bool elincrattON = false;
10810 bool foundEl = false;
10811 int elmult;
10812 double elincr;
10813 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ ) ;
10814
10815 *p = ch;
10816 while( *startValue++ == *ch) ch++;
10817 if( (ch - *p) != 6) {
10818
10819 ch = *p;
10820 return false;
10821 }
10822
10823 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ ) ;
10824
10825 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <value> element"); return false;}
10826 ch++;
10827
10828 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ ) ;
10829
10830 *p = ch;
10831 while( *startEl++ == *ch) ch++;
10832 startEl -= 4;
10833 if( (ch - *p) != 3) {
10834
10835 ch = *p;
10836
10837 int dataSize = 0;
10838 char* b64string = parseBase64(&ch, &dataSize, osillineno );
10839 if( b64string == NULL) { osilerror_wrapper( ch,osillineno,"<start> must have children or base64 data"); return false;};
10840 std::string base64decodeddata = Base64::decodeb64( b64string );
10841 int base64decodeddatalength = base64decodeddata.length();
10842 osinstance->instanceData->linearConstraintCoefficients->value->el = new double[(base64decodeddatalength/dataSize) ];
10843 int kountChar = 0;
10844 int kj;
10845
10846
10847 if( sizeof( double) != dataSize ) {
10848 osilerror_wrapper( ch, osillineno,
10849 "base 64 encoded with a size of double different than on this machine");
10850 return false;
10851 }
10852 union doubleBuffer{
10853 char memAlign[sizeof(double)];
10854 double dble;
10855 };
10856 doubleBuffer dbuf;
10857 for(i = 0; i < (base64decodeddatalength/dataSize); i++){
10858 for(kj = 0; kj < dataSize; kj++){
10859 dbuf.memAlign[ kj] = base64decodeddata[kountChar];
10860 kountChar++;
10861 }
10862 osinstance->instanceData->linearConstraintCoefficients->value->el[ i] = dbuf.dble;
10863
10864 kount++;
10865 }
10866 delete [] b64string;
10867 }
10868 else{
10869 foundEl = true;
10870 osinstance->instanceData->linearConstraintCoefficients->value->el =
10871 new double[ osinstance->instanceData->linearConstraintCoefficients->numberOfValues];
10872 while( foundEl){
10873
10874 elmultattON = false ;
10875 elincrattON = false;
10876 elmult = 1;
10877 elincr = 0;
10878
10879
10880
10881 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ );
10882 while(*ch != '/' && *ch != '>'){
10883 switch (*ch) {
10884 case 'i':
10885 *p = ch;
10886 while( *incr++ == *ch) ch++;
10887 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in values incr attribute"); return false;}
10888 if(elincrattON == true) { osilerror_wrapper( ch,osillineno,"too many el incr attributes"); return false;}
10889 incr -= 5;
10890 elincrattON = true;
10891 GETATTRIBUTETEXT;
10892 elincr = atofmod1( osillineno,attText, attTextEnd);
10893 delete [] attText;
10894 break;
10895 case 'm':
10896 *p = ch;
10897 while( *mult++ == *ch) ch++;
10898 if( (ch - *p) != 4) { osilerror_wrapper( ch,osillineno,"error in values mult attribute"); return false;}
10899 if(elmultattON == true) { osilerror_wrapper( ch,osillineno,"too many el mult attributes"); return false;}
10900 mult -= 5;
10901 elmultattON = true;
10902 GETATTRIBUTETEXT;
10903 elmult = atoimod1( osillineno,attText, attTextEnd);
10904 delete [] attText;
10905 break;
10906 case ' ':
10907 break;
10908 case '\n':
10909 (*osillineno)++;
10910 break;
10911 case '\t':
10912 break;
10913 case '\r':
10914 break;
10915 default:
10916 osilerror_wrapper( ch,osillineno,"invalid attribute character");
10917 return false;
10918 break;
10919 }
10920 ch++;
10921 }
10922
10923
10924 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ );
10925 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed <el> tag"); return false;}
10926
10927 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ ) ;
10928 *p = ch;
10929
10930
10931 while( *ch != '<' && *ch != EOF){
10932 ch++;
10933 }
10934
10935 if(*ch != '<') { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10936
10937 if(kount + elmult > osinstance->instanceData->linearConstraintCoefficients->numberOfValues)
10938 {
10939 osilerror_wrapper( ch, osillineno,"number of nonzero elements exceeds the number declared");
10940 }
10941 osinstance->instanceData->linearConstraintCoefficients->value->el[ kount] = atofmod1( osillineno, *p, ch);
10942 for (int k=1; k < elmult; k++)
10943 {
10944 osinstance->instanceData->linearConstraintCoefficients->value->el[ kount+k]
10945 = osinstance->instanceData->linearConstraintCoefficients->value->el[ kount] + k*elincr;
10946 }
10947 kount += elmult;
10948
10949 *p = ch;
10950 while( *endEl++ == *ch) ch++;
10951 endEl -= 5;
10952 if( (ch - *p) != 4 ) { osilerror_wrapper( ch,osillineno,"cannot find an </el>"); return false;}
10953
10954 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ );
10955 if( *ch++ != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </el> tag"); return false;}
10956
10957 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ );
10958
10959 *p = ch;
10960 while( *startEl++ == *ch) ch++;
10961 if( (ch - *p) == 3){
10962 foundEl = true;
10963 startEl -= 4;
10964 }
10965 else{
10966 foundEl = false;
10967 ch = *p;
10968 }
10969 }
10970 }
10971 osinstance->instanceData->linearConstraintCoefficients->value->numberOfEl = osinstance->instanceData->linearConstraintCoefficients->numberOfValues;
10972
10973
10974 *p = ch;
10975 while( *endValue++ == *ch) ch++;
10976 if( (ch - *p) != 7) { osilerror_wrapper( ch,osillineno, "cannot find </value> tag"); return false;}
10977 for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno) ; ch++ );
10978
10979 if(*ch != '>') { osilerror_wrapper( ch,osillineno,"improperly formed </value> tag"); return false;}
10980 ch++;
10981 if(kount < osinstance->instanceData->linearConstraintCoefficients->numberOfValues){ osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients greater than number of values found"); return false;}
10982 if(kount > osinstance->instanceData->linearConstraintCoefficients->numberOfValues){ osilerror_wrapper( ch,osillineno,"numberOfLinearCoefficients less than the number of values found"); return false;}
10983 finish = clock();
10984 #ifdef CHECK_PARSE_TIME
10985 duration = (double) (finish - start) / CLOCKS_PER_SEC;
10986 printf("TIME TO PARSE VALUES = %f\n", duration);
10987 #endif
10988 *p = ch;
10989 return true;
10990 }
10991
10992 bool parseObjCoef( const char **p, int objcount, OSInstance *osinstance, int* osillineno){
10993 int ki, numChar;
10994 char *attTextEnd;
10995 const char *ch = *p;
10996 const char* startCoef = "<coef";
10997 const char* endCoef = "</coef";
10998 const char* c_idx = "idx";
10999 char *attText = NULL;
11000 int k;
11001 int numberOfObjCoef = 0;
11002 if( osinstance->instanceData->objectives->numberOfObjectives <= 0) { osilerror_wrapper( ch,osillineno,"we can't have objective function coefficients without an objective function"); return false;}
11003 numberOfObjCoef = osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef;
11004 if(numberOfObjCoef > 0) {
11005 for(k = 0; k < numberOfObjCoef; k++){
11006 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11007
11008 *p = ch;
11009 while( *startCoef++ == *ch) ch++;
11010 if( (ch - *p) != 5) { osilerror_wrapper( ch,osillineno,"improper <coef> element"); return false;}
11011 startCoef -= 6;
11012
11013
11014 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11015 *p = ch;
11016 while( *c_idx++ == *ch) ch++;
11017 if( (ch - *p) != 3) { osilerror_wrapper( ch,osillineno,"incorrect idx attribute in objective function <idx> tag"); return false;}
11018 c_idx -= 4;
11019
11020 GETATTRIBUTETEXT;
11021 osinstance->instanceData->objectives->obj[objcount]->coef[ k]->idx = atoimod1( osillineno, attText, attTextEnd);
11022 delete [] attText;
11023 ch++;
11024
11025 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11026
11027 if(*ch++ != '>') { osilerror_wrapper( ch,osillineno,"incorrect <coef> element") ; return false;}
11028
11029 *p = ch;
11030
11031 for(; *ch != '<' && *ch != EOF; ch++);
11032
11033
11034
11035 if(*ch != '<') { osilerror_wrapper( ch,osillineno,"improper </coef> tag"); return false;}
11036 osinstance->instanceData->objectives->obj[objcount]->coef[ k]->value = atofmod1( osillineno, *p, ch);
11037 *p = ch;
11038 while( *endCoef++ == *ch) ch++;
11039 if( (ch - *p) != 6) { osilerror_wrapper( ch,osillineno,"improper </coef> element"); return false;}
11040 endCoef -= 7;
11041
11042 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11043
11044 if(*ch++ != '>') { osilerror_wrapper( ch,osillineno,"incorrect </coef> element") ; return false;}
11045 }
11046 }
11047 *p = ch;
11048 return true;
11049 }
11050
11051 char *parseBase64(const char **p, int *dataSize, int* osillineno ){
11052 int ki, numChar;
11053 char *attTextEnd;
11054 const char *ch = *p;
11055 const char *sizeOf = "sizeOf";
11056
11057 const char *startBase64BinaryData = "<base64BinaryData";
11058 const char *endBase64BinaryData = "</base64BinaryData";
11059 char *attText = NULL;
11060 char *b64string = NULL;
11061 int i;
11062
11063 for(i = 0; startBase64BinaryData[i] == *ch; i++, ch++);
11064 if(i != 17) {
11065 ch -= i;
11066 *p = ch;
11067 return b64string;
11068 }
11069
11070
11071 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11072 for(i = 0; sizeOf[i] == *ch; i++, ch++);
11073 if(i != 6) { osilerror_wrapper( ch,osillineno,"incorrect sizeOf attribute in <base64BinaryData> element"); return false;}
11074
11075 GETATTRIBUTETEXT;
11076 ch++;
11077 *dataSize = atoimod1( osillineno, attText, attTextEnd);
11078 delete [] attText;
11079
11080
11081 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11082
11083 if(*ch != '>' ) { osilerror_wrapper( ch,osillineno,"<base64BinaryData> element does not have a proper closing >"); return false;}
11084 ch++;
11085
11086 const char *b64textstart = ch;
11087
11088 for(; *ch != '<' && *ch != EOF; ch++);
11089 const char *b64textend = ch;
11090
11091 for(i = 0; endBase64BinaryData[i] == *ch; i++, ch++);
11092 if(i != 18) { osilerror_wrapper( ch,osillineno," problem with <base64BinaryData> element"); return false;}
11093 int b64len = b64textend - b64textstart;
11094 b64string = new char[ b64len + 1];
11095 for(ki = 0; ki < b64len; ki++) b64string[ki] = b64textstart[ ki];
11096 b64string[ki] = '\0';
11097
11098 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11099
11100 if(*ch != '>' ) { osilerror_wrapper( ch,osillineno,"</base64BinaryData> element does not have a proper closing >"); return false;}
11101 ch++;
11102 for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
11103 *p = ch;
11104 return b64string;
11105 }
11106
11107
11108 double atofmod1(int* osillineno, const char *number, const char *numberend){
11109 double val;
11110 char *pEnd;
11111 val = os_strtod_wrap(number, &pEnd);
11112
11113
11114 for( ; ISWHITESPACE( *pEnd) || isnewline( *pEnd, osillineno); pEnd++ ) ;
11115
11116 if(pEnd != numberend) osilerror_wrapper( pEnd, osillineno, "error in parsing an XSD:double");
11117 return val;
11118 }
11119
11120
11121
11122 int atoimod1(int* osillineno, const char *number, const char *numberend){
11123
11124 int ival;
11125 int i, sign;
11126 int endWhiteSpace;
11127 for(i = 0; ISWHITESPACE( number[ i]) || isnewline( number[ i], osillineno) ; i++);
11128 endWhiteSpace = i;
11129 sign = (number[ i] == '-') ? -1 : 1;
11130 if (number[ i] == '+' || number[ i] == '-') i++;
11131 for(ival = 0; ISDIGIT( number[ i]); i++){
11132 ival = 10*ival + (number[ i] - '0') ;
11133 }
11134 if(i == endWhiteSpace) { osilerror_wrapper( number,osillineno, "error in parsing an XSD:int" ); }
11135
11136 for( ; ISWHITESPACE( number[ i]) || isnewline( number[ i], osillineno) ; i++);
11137 if(number[i] == *numberend){
11138 return sign*ival;
11139 }
11140 else { osilerror_wrapper( number,osillineno, "error in parsing an XSD:int"); return OSINT_MAX; }
11141 }
11142
11143 void osilerror_wrapper( const char* ch, int* osillineno, const char* errormsg){
11144 const int numErrorChar = 20;
11145 char errorArray[100] = "";
11146 strncpy(errorArray, ch, numErrorChar);
11147 std::ostringstream outStr;
11148 std::string error = errormsg;
11149 error = "PARSER ERROR: Input is either not valid or well formed: " + error;
11150 outStr << error << endl;
11151 outStr << "Here are " ;
11152 outStr << numErrorChar ;
11153 outStr << " characters currently being pointed to in the input string: ";
11154 outStr << errorArray;
11155 outStr << endl;
11156 outStr << "See line number: " << *osillineno << endl;
11157 error = outStr.str();
11158
11159 throw ErrorClass( error);
11160 }
11161
11162 void osil_empty_vectors( OSiLParserData* parserData){
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201 }
11202
11203