Adding Interface Blocks to glsl parser Added code to parse interface blocks and the corresponding layout qualifiers to the glsl parser. Change-Id: Idfcbf08f3f877ea9641ae611e6bddd2be1ffb952 Reviewed-on: https://swiftshader-review.googlesource.com/3480 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/compiler/ParseHelper.cpp b/src/OpenGL/compiler/ParseHelper.cpp index 5c95f15..9f86042 100644 --- a/src/OpenGL/compiler/ParseHelper.cpp +++ b/src/OpenGL/compiler/ParseHelper.cpp
@@ -1762,6 +1762,42 @@ } } +void TParseContext::parseGlobalLayoutQualifier(const TPublicType &typeQualifier) +{ + if(shaderVersion < 300) + { + error(typeQualifier.line, "layout qualifiers supported in GLSL ES 3.00 only", "layout"); + recover(); + return; + } + + if(typeQualifier.qualifier != EvqUniform) + { + error(typeQualifier.line, "invalid qualifier:", getQualifierString(typeQualifier.qualifier), "global layout must be uniform"); + recover(); + return; + } + + const TLayoutQualifier layoutQualifier = typeQualifier.layoutQualifier; + ASSERT(!layoutQualifier.isEmpty()); + + if(layoutLocationErrorCheck(typeQualifier.line, typeQualifier.layoutQualifier)) + { + recover(); + return; + } + + if(layoutQualifier.matrixPacking != EmpUnspecified) + { + defaultMatrixPacking = layoutQualifier.matrixPacking; + } + + if(layoutQualifier.blockStorage != EbsUnspecified) + { + defaultBlockStorage = layoutQualifier.blockStorage; + } +} + // This function is used to test for the correctness of the parameters passed to various constructor functions // and also convert them to the right datatype if it is allowed and required. // @@ -1981,6 +2017,146 @@ } // +// Interface/uniform blocks +// +TIntermAggregate* TParseContext::addInterfaceBlock(const TPublicType& typeQualifier, const TSourceLoc& nameLine, const TString& blockName, TFieldList* fieldList, + const TString* instanceName, const TSourceLoc& instanceLine, TIntermTyped* arrayIndex, const TSourceLoc& arrayIndexLine) +{ + if(reservedErrorCheck(nameLine, blockName)) + recover(); + + if(typeQualifier.qualifier != EvqUniform) + { + error(typeQualifier.line, "invalid qualifier:", getQualifierString(typeQualifier.qualifier), "interface blocks must be uniform"); + recover(); + } + + TLayoutQualifier blockLayoutQualifier = typeQualifier.layoutQualifier; + if(layoutLocationErrorCheck(typeQualifier.line, blockLayoutQualifier)) + { + recover(); + } + + if(blockLayoutQualifier.matrixPacking == EmpUnspecified) + { + blockLayoutQualifier.matrixPacking = defaultMatrixPacking; + } + + if(blockLayoutQualifier.blockStorage == EbsUnspecified) + { + blockLayoutQualifier.blockStorage = defaultBlockStorage; + } + + TSymbol* blockNameSymbol = new TSymbol(&blockName); + if(!symbolTable.declare(*blockNameSymbol)) { + error(nameLine, "redefinition", blockName.c_str(), "interface block name"); + recover(); + } + + // check for sampler types and apply layout qualifiers + for(size_t memberIndex = 0; memberIndex < fieldList->size(); ++memberIndex) { + TField* field = (*fieldList)[memberIndex]; + TType* fieldType = field->type(); + if(IsSampler(fieldType->getBasicType())) { + error(field->line(), "unsupported type", fieldType->getBasicString(), "sampler types are not allowed in interface blocks"); + recover(); + } + + const TQualifier qualifier = fieldType->getQualifier(); + switch(qualifier) + { + case EvqGlobal: + case EvqUniform: + break; + default: + error(field->line(), "invalid qualifier on interface block member", getQualifierString(qualifier)); + recover(); + break; + } + + // check layout qualifiers + TLayoutQualifier fieldLayoutQualifier = fieldType->getLayoutQualifier(); + if(layoutLocationErrorCheck(field->line(), fieldLayoutQualifier)) + { + recover(); + } + + if(fieldLayoutQualifier.blockStorage != EbsUnspecified) + { + error(field->line(), "invalid layout qualifier:", getBlockStorageString(fieldLayoutQualifier.blockStorage), "cannot be used here"); + recover(); + } + + if(fieldLayoutQualifier.matrixPacking == EmpUnspecified) + { + fieldLayoutQualifier.matrixPacking = blockLayoutQualifier.matrixPacking; + } + else if(!fieldType->isMatrix()) + { + error(field->line(), "invalid layout qualifier:", getMatrixPackingString(fieldLayoutQualifier.matrixPacking), "can only be used on matrix types"); + recover(); + } + + fieldType->setLayoutQualifier(fieldLayoutQualifier); + } + + // add array index + int arraySize = 0; + if(arrayIndex != NULL) + { + if(arraySizeErrorCheck(arrayIndexLine, arrayIndex, arraySize)) + recover(); + } + + TInterfaceBlock* interfaceBlock = new TInterfaceBlock(&blockName, fieldList, instanceName, arraySize, blockLayoutQualifier); + TType interfaceBlockType(interfaceBlock, typeQualifier.qualifier, blockLayoutQualifier, arraySize); + + TString symbolName = ""; + int symbolId = 0; + + if(!instanceName) + { + // define symbols for the members of the interface block + for(size_t memberIndex = 0; memberIndex < fieldList->size(); ++memberIndex) + { + TField* field = (*fieldList)[memberIndex]; + TType* fieldType = field->type(); + + // set parent pointer of the field variable + fieldType->setInterfaceBlock(interfaceBlock); + + TVariable* fieldVariable = new TVariable(&field->name(), *fieldType); + fieldVariable->setQualifier(typeQualifier.qualifier); + + if(!symbolTable.declare(*fieldVariable)) { + error(field->line(), "redefinition", field->name().c_str(), "interface block member name"); + recover(); + } + } + } + else + { + // add a symbol for this interface block + TVariable* instanceTypeDef = new TVariable(instanceName, interfaceBlockType, false); + instanceTypeDef->setQualifier(typeQualifier.qualifier); + + if(!symbolTable.declare(*instanceTypeDef)) { + error(instanceLine, "redefinition", instanceName->c_str(), "interface block instance name"); + recover(); + } + + symbolId = instanceTypeDef->getUniqueId(); + symbolName = instanceTypeDef->getName(); + } + + TIntermAggregate *aggregate = intermediate.makeAggregate(intermediate.addSymbol(symbolId, symbolName, interfaceBlockType, typeQualifier.line), nameLine); + aggregate->setOp(EOpDeclaration); + + exitStructDeclaration(); + return aggregate; +} + +// // Parse an array index expression // TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, const TSourceLoc &location, TIntermTyped *indexExpression)
diff --git a/src/OpenGL/compiler/ParseHelper.h b/src/OpenGL/compiler/ParseHelper.h index cac1647..fa31481 100644 --- a/src/OpenGL/compiler/ParseHelper.h +++ b/src/OpenGL/compiler/ParseHelper.h
@@ -160,6 +160,7 @@ const TString &identifier, const TSourceLoc &indexLocation, TIntermTyped *indexExpression, const TSourceLoc &initLocation, TIntermTyped *initializer); + void parseGlobalLayoutQualifier(const TPublicType &typeQualifier); TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, TSourceLoc); TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType& type); TIntermTyped* addConstVectorNode(TVectorFields&, TIntermTyped*, TSourceLoc); @@ -172,6 +173,9 @@ TFieldList *addStructDeclaratorList(const TPublicType &typeSpecifier, TFieldList *fieldList); TPublicType addStructure(const TSourceLoc &structLine, const TSourceLoc &nameLine, const TString *structName, TFieldList *fieldList); + TIntermAggregate* addInterfaceBlock(const TPublicType& typeQualifier, const TSourceLoc& nameLine, const TString& blockName, TFieldList* fieldList, + const TString* instanceName, const TSourceLoc& instanceLine, TIntermTyped* arrayIndex, const TSourceLoc& arrayIndexLine); + TLayoutQualifier parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine); TLayoutQualifier parseLayoutQualifier(const TString &qualifierType, const TSourceLoc& qualifierTypeLine, const TString &intValueString, int intValue, const TSourceLoc& intValueLine); TLayoutQualifier joinLayoutQualifiers(TLayoutQualifier leftQualifier, TLayoutQualifier rightQualifier);
diff --git a/src/OpenGL/compiler/glslang.y b/src/OpenGL/compiler/glslang.y index 3cb9fa8..f483d2c 100644 --- a/src/OpenGL/compiler/glslang.y +++ b/src/OpenGL/compiler/glslang.y
@@ -183,6 +183,8 @@ %type <interm> function_call_header_with_parameters function_call_header_no_parameters function_call_generic function_prototype %type <interm> function_call_or_method +%type <lex> enter_struct + %start translation_unit %% @@ -888,6 +890,14 @@ } ; +enter_struct + : IDENTIFIER LEFT_BRACE { + if (context->enterStructDeclaration($1.line, *$1.string)) + context->recover(); + $$ = $1; + } + ; + declaration : function_prototype SEMICOLON { TFunction &function = *($1.function); @@ -929,6 +939,22 @@ } $$ = 0; } + | type_qualifier enter_struct struct_declaration_list RIGHT_BRACE SEMICOLON { + ES3_ONLY(getQualifierString($1.qualifier), $1.line); + $$ = context->addInterfaceBlock($1, $2.line, *$2.string, $3, NULL, $1.line, NULL, $1.line); + } + | type_qualifier enter_struct struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON { + ES3_ONLY(getQualifierString($1.qualifier), $1.line); + $$ = context->addInterfaceBlock($1, $2.line, *$2.string, $3, $5.string, $5.line, NULL, $1.line); + } + | type_qualifier enter_struct struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON { + ES3_ONLY(getQualifierString($1.qualifier), $1.line); + $$ = context->addInterfaceBlock($1, $2.line, *$2.string, $3, $5.string, $5.line, $7, $6.line); + } + | type_qualifier SEMICOLON { + context->parseGlobalLayoutQualifier($1); + $$ = 0; + } ; function_prototype
diff --git a/src/OpenGL/compiler/glslang_tab.cpp b/src/OpenGL/compiler/glslang_tab.cpp index 9e919de..9553e09 100644 --- a/src/OpenGL/compiler/glslang_tab.cpp +++ b/src/OpenGL/compiler/glslang_tab.cpp
@@ -554,18 +554,18 @@ #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 107 +#define YYFINAL 110 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2112 +#define YYLAST 2377 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 128 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 89 +#define YYNNTS 90 /* YYNRULES -- Number of rules. */ -#define YYNRULES 258 +#define YYNRULES 263 /* YYNRULES -- Number of states. */ -#define YYNSTATES 382 +#define YYNSTATES 396 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -631,36 +631,37 @@ 138, 142, 146, 148, 152, 156, 158, 162, 164, 168, 170, 174, 176, 180, 182, 186, 188, 192, 194, 200, 202, 206, 208, 210, 212, 214, 216, 218, 220, 222, - 224, 226, 228, 230, 234, 236, 239, 242, 247, 250, - 252, 254, 257, 261, 265, 268, 274, 278, 281, 285, - 288, 289, 291, 293, 295, 297, 299, 303, 310, 318, - 327, 333, 335, 338, 344, 351, 359, 364, 367, 369, - 372, 374, 376, 378, 380, 382, 385, 387, 390, 392, - 394, 397, 399, 401, 403, 406, 409, 411, 413, 416, - 418, 420, 422, 427, 429, 433, 435, 439, 443, 445, - 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, - 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, - 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, - 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, - 530, 532, 534, 536, 538, 539, 546, 547, 553, 555, - 558, 562, 567, 569, 573, 575, 580, 582, 584, 586, - 588, 590, 592, 594, 596, 598, 601, 602, 603, 609, - 611, 613, 614, 617, 618, 621, 624, 628, 630, 633, - 635, 638, 644, 648, 650, 652, 657, 658, 665, 666, - 675, 676, 684, 686, 688, 690, 691, 694, 698, 701, - 704, 707, 711, 714, 716, 719, 721, 723, 724 + 224, 226, 228, 230, 234, 236, 239, 242, 245, 250, + 256, 263, 273, 276, 279, 281, 283, 286, 290, 294, + 297, 303, 307, 310, 314, 317, 318, 320, 322, 324, + 326, 328, 332, 339, 347, 356, 362, 364, 367, 373, + 380, 388, 393, 396, 398, 401, 403, 405, 407, 409, + 411, 414, 416, 419, 421, 423, 426, 428, 430, 432, + 435, 438, 440, 442, 445, 447, 449, 451, 456, 458, + 462, 464, 468, 472, 474, 479, 481, 483, 485, 487, + 489, 491, 493, 495, 497, 499, 501, 503, 505, 507, + 509, 511, 513, 515, 517, 519, 521, 523, 525, 527, + 529, 531, 533, 535, 537, 539, 541, 543, 545, 547, + 549, 551, 553, 555, 557, 559, 561, 563, 565, 567, + 568, 575, 576, 582, 584, 587, 591, 596, 598, 602, + 604, 609, 611, 613, 615, 617, 619, 621, 623, 625, + 627, 630, 631, 632, 638, 640, 642, 643, 646, 647, + 650, 653, 657, 659, 662, 664, 667, 673, 677, 679, + 681, 686, 687, 694, 695, 704, 705, 713, 715, 717, + 719, 720, 723, 727, 730, 733, 736, 740, 743, 745, + 748, 750, 752, 753 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 213, 0, -1, 76, -1, 129, -1, 79, -1, 80, + 214, 0, -1, 76, -1, 129, -1, 79, -1, 80, -1, 78, -1, 81, -1, 104, 156, 105, -1, 130, -1, 131, 106, 132, 107, -1, 133, -1, 131, 110, 82, -1, 131, 85, -1, 131, 86, -1, 156, -1, 134, -1, 135, -1, 131, 110, 135, -1, 137, 105, -1, 136, 105, -1, 138, 55, -1, 138, -1, 138, - 154, -1, 137, 111, 154, -1, 139, 104, -1, 180, + 154, -1, 137, 111, 154, -1, 139, 104, -1, 181, -1, 76, -1, 82, -1, 131, -1, 85, 140, -1, 86, 140, -1, 141, 140, -1, 118, -1, 116, -1, 115, -1, 117, -1, 140, -1, 142, 119, 140, -1, @@ -677,87 +678,91 @@ 153, -1, 140, 155, 154, -1, 113, -1, 94, -1, 95, -1, 97, -1, 96, -1, 103, -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 154, -1, - 156, 111, 154, -1, 153, -1, 159, 114, -1, 167, - 114, -1, 7, 175, 179, 114, -1, 160, 105, -1, - 162, -1, 161, -1, 162, 164, -1, 161, 111, 164, - -1, 169, 76, 104, -1, 174, 76, -1, 174, 76, - 106, 157, 107, -1, 171, 165, 163, -1, 165, 163, - -1, 171, 165, 166, -1, 165, 166, -1, -1, 40, - -1, 41, -1, 42, -1, 174, -1, 168, -1, 167, - 111, 76, -1, 167, 111, 76, 106, 157, 107, -1, - 167, 111, 76, 106, 107, 113, 188, -1, 167, 111, - 76, 106, 157, 107, 113, 188, -1, 167, 111, 76, - 113, 188, -1, 169, -1, 169, 76, -1, 169, 76, - 106, 157, 107, -1, 169, 76, 106, 107, 113, 188, - -1, 169, 76, 106, 157, 107, 113, 188, -1, 169, - 76, 113, 188, -1, 3, 76, -1, 174, -1, 172, - 174, -1, 53, -1, 52, -1, 9, -1, 8, -1, - 44, -1, 3, 44, -1, 173, -1, 170, 173, -1, - 170, -1, 176, -1, 176, 173, -1, 9, -1, 40, - -1, 41, -1, 51, 40, -1, 51, 41, -1, 43, - -1, 179, -1, 175, 179, -1, 4, -1, 5, -1, - 6, -1, 75, 104, 177, 105, -1, 178, -1, 177, - 111, 178, -1, 76, -1, 76, 113, 79, -1, 76, - 113, 80, -1, 180, -1, 180, 106, 157, 107, -1, - 55, -1, 11, -1, 12, -1, 13, -1, 10, -1, - 31, -1, 32, -1, 33, -1, 25, -1, 26, -1, - 27, -1, 28, -1, 29, -1, 30, -1, 34, -1, - 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, - 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, - 50, -1, 57, -1, 58, -1, 59, -1, 70, -1, - 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, - 66, -1, 67, -1, 68, -1, 69, -1, 72, -1, - 73, -1, 74, -1, 181, -1, 77, -1, -1, 54, - 76, 108, 182, 184, 109, -1, -1, 54, 108, 183, - 184, 109, -1, 185, -1, 184, 185, -1, 174, 186, - 114, -1, 172, 174, 186, 114, -1, 187, -1, 186, - 111, 187, -1, 76, -1, 76, 106, 157, 107, -1, - 154, -1, 158, -1, 192, -1, 191, -1, 189, -1, - 201, -1, 202, -1, 205, -1, 212, -1, 108, 109, - -1, -1, -1, 108, 193, 200, 194, 109, -1, 199, - -1, 191, -1, -1, 197, 199, -1, -1, 198, 191, - -1, 108, 109, -1, 108, 200, 109, -1, 190, -1, - 200, 190, -1, 114, -1, 156, 114, -1, 19, 104, - 156, 105, 203, -1, 196, 17, 196, -1, 196, -1, - 156, -1, 169, 76, 113, 188, -1, -1, 56, 104, - 206, 204, 105, 195, -1, -1, 16, 207, 196, 56, - 104, 156, 105, 114, -1, -1, 18, 104, 208, 209, - 211, 105, 195, -1, 201, -1, 189, -1, 204, -1, - -1, 210, 114, -1, 210, 114, 156, -1, 15, 114, - -1, 14, 114, -1, 21, 114, -1, 21, 156, 114, - -1, 20, 114, -1, 214, -1, 213, 214, -1, 215, - -1, 158, -1, -1, 159, 216, 199, -1 + 156, 111, 154, -1, 153, -1, 76, 108, -1, 160, + 114, -1, 168, 114, -1, 7, 176, 180, 114, -1, + 173, 158, 185, 109, 114, -1, 173, 158, 185, 109, + 76, 114, -1, 173, 158, 185, 109, 76, 106, 157, + 107, 114, -1, 173, 114, -1, 161, 105, -1, 163, + -1, 162, -1, 163, 165, -1, 162, 111, 165, -1, + 170, 76, 104, -1, 175, 76, -1, 175, 76, 106, + 157, 107, -1, 172, 166, 164, -1, 166, 164, -1, + 172, 166, 167, -1, 166, 167, -1, -1, 40, -1, + 41, -1, 42, -1, 175, -1, 169, -1, 168, 111, + 76, -1, 168, 111, 76, 106, 157, 107, -1, 168, + 111, 76, 106, 107, 113, 189, -1, 168, 111, 76, + 106, 157, 107, 113, 189, -1, 168, 111, 76, 113, + 189, -1, 170, -1, 170, 76, -1, 170, 76, 106, + 157, 107, -1, 170, 76, 106, 107, 113, 189, -1, + 170, 76, 106, 157, 107, 113, 189, -1, 170, 76, + 113, 189, -1, 3, 76, -1, 175, -1, 173, 175, + -1, 53, -1, 52, -1, 9, -1, 8, -1, 44, + -1, 3, 44, -1, 174, -1, 171, 174, -1, 171, + -1, 177, -1, 177, 174, -1, 9, -1, 40, -1, + 41, -1, 51, 40, -1, 51, 41, -1, 43, -1, + 180, -1, 176, 180, -1, 4, -1, 5, -1, 6, + -1, 75, 104, 178, 105, -1, 179, -1, 178, 111, + 179, -1, 76, -1, 76, 113, 79, -1, 76, 113, + 80, -1, 181, -1, 181, 106, 157, 107, -1, 55, + -1, 11, -1, 12, -1, 13, -1, 10, -1, 31, + -1, 32, -1, 33, -1, 25, -1, 26, -1, 27, + -1, 28, -1, 29, -1, 30, -1, 34, -1, 35, + -1, 36, -1, 37, -1, 38, -1, 39, -1, 45, + -1, 46, -1, 47, -1, 48, -1, 49, -1, 50, + -1, 57, -1, 58, -1, 59, -1, 70, -1, 61, + -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, + -1, 67, -1, 68, -1, 69, -1, 72, -1, 73, + -1, 74, -1, 182, -1, 77, -1, -1, 54, 76, + 108, 183, 185, 109, -1, -1, 54, 108, 184, 185, + 109, -1, 186, -1, 185, 186, -1, 175, 187, 114, + -1, 173, 175, 187, 114, -1, 188, -1, 187, 111, + 188, -1, 76, -1, 76, 106, 157, 107, -1, 154, + -1, 159, -1, 193, -1, 192, -1, 190, -1, 202, + -1, 203, -1, 206, -1, 213, -1, 108, 109, -1, + -1, -1, 108, 194, 201, 195, 109, -1, 200, -1, + 192, -1, -1, 198, 200, -1, -1, 199, 192, -1, + 108, 109, -1, 108, 201, 109, -1, 191, -1, 201, + 191, -1, 114, -1, 156, 114, -1, 19, 104, 156, + 105, 204, -1, 197, 17, 197, -1, 197, -1, 156, + -1, 170, 76, 113, 189, -1, -1, 56, 104, 207, + 205, 105, 196, -1, -1, 16, 208, 197, 56, 104, + 156, 105, 114, -1, -1, 18, 104, 209, 210, 212, + 105, 196, -1, 202, -1, 190, -1, 205, -1, -1, + 211, 114, -1, 211, 114, 156, -1, 15, 114, -1, + 14, 114, -1, 21, 114, -1, 21, 156, 114, -1, + 20, 114, -1, 215, -1, 214, 215, -1, 216, -1, + 159, -1, -1, 160, 217, 200, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 190, 190, 225, 228, 233, 238, 243, 248, 254, - 257, 260, 263, 266, 269, 275, 283, 383, 386, 394, - 398, 405, 409, 416, 422, 431, 439, 516, 523, 533, - 536, 546, 556, 578, 579, 580, 581, 589, 590, 599, - 608, 621, 622, 630, 641, 642, 651, 663, 664, 674, - 684, 694, 707, 708, 718, 731, 732, 746, 747, 761, - 762, 776, 777, 790, 791, 804, 805, 818, 819, 836, - 837, 850, 851, 852, 853, 855, 856, 857, 859, 861, - 863, 865, 870, 873, 884, 892, 919, 925, 935, 973, - 976, 983, 991, 1012, 1033, 1044, 1073, 1078, 1088, 1093, - 1103, 1106, 1109, 1112, 1118, 1125, 1128, 1132, 1136, 1141, - 1146, 1153, 1157, 1161, 1165, 1170, 1175, 1179, 1255, 1265, - 1271, 1274, 1280, 1286, 1293, 1302, 1311, 1314, 1317, 1324, - 1328, 1335, 1339, 1344, 1349, 1359, 1369, 1378, 1388, 1395, - 1398, 1401, 1407, 1414, 1417, 1423, 1426, 1429, 1435, 1438, - 1453, 1457, 1461, 1465, 1469, 1473, 1478, 1483, 1488, 1493, - 1498, 1503, 1508, 1513, 1518, 1523, 1528, 1533, 1539, 1545, - 1551, 1557, 1563, 1569, 1575, 1581, 1587, 1592, 1597, 1606, - 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1646, 1651, 1656, - 1661, 1666, 1671, 1676, 1689, 1689, 1692, 1692, 1698, 1701, - 1717, 1720, 1729, 1733, 1739, 1746, 1761, 1765, 1769, 1770, - 1776, 1777, 1778, 1779, 1780, 1784, 1785, 1785, 1785, 1795, - 1796, 1800, 1800, 1801, 1801, 1806, 1809, 1819, 1822, 1828, - 1829, 1833, 1841, 1845, 1855, 1860, 1877, 1877, 1882, 1882, - 1889, 1889, 1897, 1900, 1906, 1909, 1915, 1919, 1926, 1933, - 1940, 1947, 1958, 1967, 1971, 1978, 1981, 1987, 1987 + 0, 192, 192, 227, 230, 235, 240, 245, 250, 256, + 259, 262, 265, 268, 271, 277, 285, 385, 388, 396, + 400, 407, 411, 418, 424, 433, 441, 518, 525, 535, + 538, 548, 558, 580, 581, 582, 583, 591, 592, 601, + 610, 623, 624, 632, 643, 644, 653, 665, 666, 676, + 686, 696, 709, 710, 720, 733, 734, 748, 749, 763, + 764, 778, 779, 792, 793, 806, 807, 820, 821, 838, + 839, 852, 853, 854, 855, 857, 858, 859, 861, 863, + 865, 867, 872, 875, 886, 894, 902, 929, 935, 942, + 946, 950, 954, 961, 999, 1002, 1009, 1017, 1038, 1059, + 1070, 1099, 1104, 1114, 1119, 1129, 1132, 1135, 1138, 1144, + 1151, 1154, 1158, 1162, 1167, 1172, 1179, 1183, 1187, 1191, + 1196, 1201, 1205, 1281, 1291, 1297, 1300, 1306, 1312, 1319, + 1328, 1337, 1340, 1343, 1350, 1354, 1361, 1365, 1370, 1375, + 1385, 1395, 1404, 1414, 1421, 1424, 1427, 1433, 1440, 1443, + 1449, 1452, 1455, 1461, 1464, 1479, 1483, 1487, 1491, 1495, + 1499, 1504, 1509, 1514, 1519, 1524, 1529, 1534, 1539, 1544, + 1549, 1554, 1559, 1565, 1571, 1577, 1583, 1589, 1595, 1601, + 1607, 1613, 1618, 1623, 1632, 1637, 1642, 1647, 1652, 1657, + 1662, 1667, 1672, 1677, 1682, 1687, 1692, 1697, 1702, 1715, + 1715, 1718, 1718, 1724, 1727, 1743, 1746, 1755, 1759, 1765, + 1772, 1787, 1791, 1795, 1796, 1802, 1803, 1804, 1805, 1806, + 1810, 1811, 1811, 1811, 1821, 1822, 1826, 1826, 1827, 1827, + 1832, 1835, 1845, 1848, 1854, 1855, 1859, 1867, 1871, 1881, + 1886, 1903, 1903, 1908, 1908, 1915, 1915, 1923, 1926, 1932, + 1935, 1941, 1945, 1952, 1959, 1966, 1973, 1984, 1993, 1997, + 2004, 2007, 2013, 2013 }; #endif @@ -801,14 +806,15 @@ "logical_and_expression", "logical_xor_expression", "logical_or_expression", "conditional_expression", "assignment_expression", "assignment_operator", "expression", - "constant_expression", "declaration", "function_prototype", - "function_declarator", "function_header_with_parameters", - "function_header", "parameter_declarator", "parameter_declaration", - "parameter_qualifier", "parameter_type_specifier", - "init_declarator_list", "single_declaration", "fully_specified_type", - "interpolation_qualifier", "parameter_type_qualifier", "type_qualifier", - "storage_qualifier", "type_specifier", "precision_qualifier", - "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", + "constant_expression", "enter_struct", "declaration", + "function_prototype", "function_declarator", + "function_header_with_parameters", "function_header", + "parameter_declarator", "parameter_declaration", "parameter_qualifier", + "parameter_type_specifier", "init_declarator_list", "single_declaration", + "fully_specified_type", "interpolation_qualifier", + "parameter_type_qualifier", "type_qualifier", "storage_qualifier", + "type_specifier", "precision_qualifier", "layout_qualifier", + "layout_qualifier_id_list", "layout_qualifier_id", "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier", "$@1", "$@2", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", @@ -855,24 +861,25 @@ 145, 145, 146, 146, 146, 147, 147, 148, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, 154, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 156, 156, 157, 158, 158, 158, 159, 160, - 160, 161, 161, 162, 163, 163, 164, 164, 164, 164, - 165, 165, 165, 165, 166, 167, 167, 167, 167, 167, - 167, 168, 168, 168, 168, 168, 168, 168, 169, 169, - 170, 170, 171, 172, 172, 172, 172, 172, 172, 172, - 172, 173, 173, 173, 173, 173, 173, 174, 174, 175, - 175, 175, 176, 177, 177, 178, 178, 178, 179, 179, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 182, 181, 183, 181, 184, 184, - 185, 185, 186, 186, 187, 187, 188, 189, 190, 190, - 191, 191, 191, 191, 191, 192, 193, 194, 192, 195, - 195, 197, 196, 198, 196, 199, 199, 200, 200, 201, - 201, 202, 203, 203, 204, 204, 206, 205, 207, 205, - 208, 205, 209, 209, 210, 210, 211, 211, 212, 212, - 212, 212, 212, 213, 213, 214, 214, 216, 215 + 155, 155, 156, 156, 157, 158, 159, 159, 159, 159, + 159, 159, 159, 160, 161, 161, 162, 162, 163, 164, + 164, 165, 165, 165, 165, 166, 166, 166, 166, 167, + 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, + 169, 169, 169, 170, 170, 171, 171, 172, 173, 173, + 173, 173, 173, 173, 173, 173, 174, 174, 174, 174, + 174, 174, 175, 175, 176, 176, 176, 177, 178, 178, + 179, 179, 179, 180, 180, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 183, + 182, 184, 182, 185, 185, 186, 186, 187, 187, 188, + 188, 189, 190, 191, 191, 192, 192, 192, 192, 192, + 193, 194, 195, 193, 196, 196, 198, 197, 199, 197, + 200, 200, 201, 201, 202, 202, 203, 204, 204, 205, + 205, 207, 206, 208, 206, 209, 206, 210, 210, 211, + 211, 212, 212, 213, 213, 213, 213, 213, 214, 214, + 215, 215, 217, 216 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -886,24 +893,25 @@ 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 2, 2, 4, 2, 1, - 1, 2, 3, 3, 2, 5, 3, 2, 3, 2, - 0, 1, 1, 1, 1, 1, 3, 6, 7, 8, - 5, 1, 2, 5, 6, 7, 4, 2, 1, 2, - 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, - 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, - 1, 1, 4, 1, 3, 1, 3, 3, 1, 4, + 1, 1, 1, 3, 1, 2, 2, 2, 4, 5, + 6, 9, 2, 2, 1, 1, 2, 3, 3, 2, + 5, 3, 2, 3, 2, 0, 1, 1, 1, 1, + 1, 3, 6, 7, 8, 5, 1, 2, 5, 6, + 7, 4, 2, 1, 2, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, + 2, 1, 1, 2, 1, 1, 1, 4, 1, 3, + 1, 3, 3, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 6, 0, 5, 1, 2, - 3, 4, 1, 3, 1, 4, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 0, 5, 1, - 1, 0, 2, 0, 2, 2, 3, 1, 2, 1, - 2, 5, 3, 1, 1, 4, 0, 6, 0, 8, - 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, - 2, 3, 2, 1, 2, 1, 1, 0, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 6, 0, 5, 1, 2, 3, 4, 1, 3, 1, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 0, 5, 1, 1, 0, 2, 0, 2, + 2, 3, 1, 2, 1, 2, 5, 3, 1, 1, + 4, 0, 6, 0, 8, 0, 7, 1, 1, 1, + 0, 2, 3, 2, 2, 2, 3, 2, 1, 2, + 1, 1, 0, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -911,405 +919,411 @@ means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 139, 140, 141, 0, 123, 131, 154, 151, - 152, 153, 158, 159, 160, 161, 162, 163, 155, 156, - 157, 164, 165, 166, 167, 168, 169, 132, 133, 136, - 124, 170, 171, 172, 173, 174, 175, 0, 121, 120, - 0, 150, 176, 177, 178, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 179, 189, 190, 191, 0, 193, - 256, 257, 0, 90, 100, 0, 105, 111, 128, 0, - 126, 118, 0, 129, 137, 148, 192, 0, 253, 255, - 125, 117, 0, 134, 135, 0, 196, 0, 85, 0, - 88, 100, 122, 101, 102, 103, 91, 0, 100, 0, - 86, 112, 127, 119, 138, 130, 0, 1, 254, 0, - 194, 0, 145, 0, 143, 0, 258, 92, 97, 99, - 104, 0, 106, 93, 0, 0, 2, 6, 4, 5, - 7, 28, 0, 0, 0, 35, 34, 36, 33, 3, - 9, 29, 11, 16, 17, 0, 0, 22, 0, 37, - 0, 41, 44, 47, 52, 55, 57, 59, 61, 63, - 65, 67, 84, 0, 26, 87, 0, 0, 0, 0, - 0, 198, 0, 142, 0, 0, 0, 238, 0, 0, - 0, 0, 0, 216, 225, 229, 37, 69, 82, 0, - 207, 0, 148, 210, 227, 209, 208, 0, 211, 212, - 213, 214, 94, 96, 98, 0, 0, 0, 0, 206, - 116, 30, 31, 0, 13, 14, 0, 0, 20, 19, - 0, 21, 23, 25, 32, 0, 0, 0, 0, 0, + 0, 0, 144, 145, 146, 0, 128, 136, 159, 156, + 157, 158, 163, 164, 165, 166, 167, 168, 160, 161, + 162, 169, 170, 171, 172, 173, 174, 137, 138, 141, + 129, 175, 176, 177, 178, 179, 180, 0, 126, 125, + 0, 155, 181, 182, 183, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 184, 194, 195, 196, 0, 198, + 261, 262, 0, 95, 105, 0, 110, 116, 133, 0, + 131, 123, 0, 134, 142, 153, 197, 0, 258, 260, + 130, 122, 0, 139, 140, 0, 201, 0, 86, 0, + 93, 105, 127, 106, 107, 108, 96, 0, 105, 0, + 87, 117, 132, 0, 92, 0, 124, 143, 135, 0, + 1, 259, 0, 199, 0, 150, 0, 148, 0, 263, + 97, 102, 104, 109, 0, 111, 98, 0, 0, 85, + 0, 0, 0, 0, 203, 2, 6, 4, 5, 7, + 28, 0, 0, 0, 35, 34, 36, 33, 3, 9, + 29, 11, 16, 17, 0, 0, 22, 0, 37, 0, + 41, 44, 47, 52, 55, 57, 59, 61, 63, 65, + 67, 84, 0, 26, 88, 0, 0, 0, 147, 0, + 0, 0, 243, 0, 0, 0, 0, 0, 221, 230, + 234, 37, 69, 82, 0, 212, 0, 153, 215, 232, + 214, 213, 0, 216, 217, 218, 219, 99, 101, 103, + 0, 0, 0, 0, 211, 121, 0, 209, 0, 207, + 0, 204, 30, 31, 0, 13, 14, 0, 0, 20, + 19, 0, 21, 23, 25, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 149, 0, 0, 204, 0, - 202, 197, 199, 146, 147, 144, 249, 248, 223, 240, - 0, 252, 250, 0, 236, 215, 0, 72, 73, 75, - 74, 77, 78, 79, 80, 81, 76, 71, 0, 0, - 230, 226, 228, 0, 0, 0, 110, 0, 113, 8, - 0, 15, 27, 12, 18, 24, 38, 39, 40, 43, - 42, 45, 46, 50, 51, 48, 49, 53, 54, 56, - 58, 60, 62, 64, 66, 0, 195, 0, 0, 0, - 200, 0, 0, 0, 0, 0, 251, 0, 217, 70, - 83, 0, 0, 107, 114, 0, 10, 0, 201, 0, - 203, 0, 222, 224, 243, 242, 245, 223, 234, 0, - 0, 0, 95, 108, 0, 115, 68, 205, 0, 244, - 0, 0, 233, 231, 0, 0, 218, 109, 0, 246, - 0, 223, 0, 220, 237, 219, 0, 247, 241, 232, - 235, 239 + 0, 0, 0, 0, 0, 0, 154, 0, 202, 151, + 152, 149, 254, 253, 228, 245, 0, 257, 255, 0, + 241, 220, 0, 72, 73, 75, 74, 77, 78, 79, + 80, 81, 76, 71, 0, 0, 235, 231, 233, 0, + 0, 0, 115, 0, 118, 0, 0, 0, 205, 0, + 89, 8, 0, 15, 27, 12, 18, 24, 38, 39, + 40, 43, 42, 45, 46, 50, 51, 48, 49, 53, + 54, 56, 58, 60, 62, 64, 66, 0, 200, 0, + 0, 0, 0, 0, 256, 0, 222, 70, 83, 0, + 0, 112, 119, 0, 206, 0, 208, 0, 90, 10, + 0, 0, 227, 229, 248, 247, 250, 228, 239, 0, + 0, 0, 0, 100, 113, 0, 120, 210, 0, 68, + 0, 249, 0, 0, 238, 236, 0, 0, 223, 114, + 0, 0, 251, 0, 228, 0, 225, 242, 224, 91, + 0, 252, 246, 237, 240, 244 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 139, 140, 141, 290, 142, 143, 144, 145, 146, - 147, 148, 186, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 187, 188, 278, 189, 163, - 190, 191, 62, 63, 64, 118, 96, 97, 119, 65, - 66, 67, 68, 98, 69, 70, 71, 72, 73, 113, - 114, 74, 164, 76, 166, 111, 170, 171, 249, 250, - 210, 193, 194, 195, 196, 266, 351, 374, 321, 322, - 323, 375, 197, 198, 199, 363, 350, 200, 327, 258, - 324, 346, 360, 361, 201, 77, 78, 79, 89 + -1, 148, 149, 150, 302, 151, 152, 153, 154, 155, + 156, 157, 191, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 192, 193, 284, 194, 172, + 105, 195, 196, 62, 63, 64, 121, 96, 97, 122, + 65, 66, 67, 68, 98, 69, 70, 71, 72, 73, + 116, 117, 74, 173, 76, 175, 114, 133, 134, 218, + 219, 215, 198, 199, 200, 201, 272, 362, 387, 329, + 330, 331, 388, 202, 203, 204, 375, 361, 205, 335, + 264, 332, 356, 372, 373, 206, 77, 78, 79, 89 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -320 +#define YYPACT_NINF -338 static const yytype_int16 yypact[] = { - 1750, -21, -320, -320, -320, 124, -320, -320, -320, -320, - -320, -320, -320, -320, -320, -320, -320, -320, -320, -320, - -320, -320, -320, -320, -320, -320, -320, -320, -320, -320, - -320, -320, -320, -320, -320, -320, -320, -5, -320, -320, - -47, -320, -320, -320, -320, -320, -320, -320, -320, -320, - -320, -320, -320, -320, -320, -320, -320, -320, -85, -320, - -320, -66, -53, -55, 3, -19, -320, 15, 19, 1899, - -320, -320, 2035, 19, -320, -3, -320, 1675, -320, -320, - -320, -320, 2035, -320, -320, -44, -320, 38, -320, 23, - -320, 25, -320, -320, -320, -320, -320, 1899, 120, 78, - -320, -33, -320, -320, -320, -320, 1313, -320, -320, 44, - -320, 1825, 51, -37, -320, 348, -320, -320, -320, -320, - 111, 1899, -76, -320, 226, 1313, 86, -320, -320, -320, - -320, -320, 1313, 1313, 1313, -320, -320, -320, -320, -320, - -320, -68, -320, -320, -320, 89, -30, 1408, 107, -320, - 1313, 52, -40, 92, -72, 88, 67, 87, 93, 125, - 127, -81, -320, 114, -320, -320, 1825, 178, 1899, 147, - 1505, -320, 101, -320, 38, 110, 113, -320, 121, 129, - 115, 1120, 131, 119, -320, -320, 106, -320, -320, -2, - -320, -66, 63, -320, -320, -320, -320, 464, -320, -320, - -320, -320, 134, -320, -320, 1215, 1313, 118, 135, -320, - -320, -320, -320, -15, -320, -320, 1313, 1967, -320, -320, - 1313, 139, -320, -320, -320, 1313, 1313, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 1313, -320, 1590, 147, 138, 11, - -320, -320, -320, -320, -320, -320, -320, -320, 137, -320, - 1313, -320, -320, 12, -320, -320, 580, -320, -320, -320, - -320, -320, -320, -320, -320, -320, -320, -320, 1313, 1313, - -320, -320, -320, 1313, 136, 140, -320, 1313, 154, -320, - 141, 157, -320, 165, -320, -320, -320, -320, -320, 52, - 52, -40, -40, 92, 92, 92, 92, -72, -72, 88, - 67, 87, 93, 125, 127, 72, -320, 13, 1313, 147, - -320, 214, 23, 812, 928, -12, -320, 1025, 580, -320, - -320, 170, 1313, 166, -320, 1313, -320, 1313, -320, 171, - -320, 182, -320, -320, -320, -320, 1025, 137, 157, 206, - 192, 200, -320, -320, 1313, -320, -320, -320, 1313, -320, - 187, 205, 296, -320, 201, 696, -320, -320, -11, 1313, - 696, 137, 1313, -320, -320, -320, 202, 157, -320, -320, - -320, -320 + 2015, -27, -338, -338, -338, 137, -338, -338, -338, -338, + -338, -338, -338, -338, -338, -338, -338, -338, -338, -338, + -338, -338, -338, -338, -338, -338, -338, -338, -338, -338, + -338, -338, -338, -338, -338, -338, -338, 59, -338, -338, + -57, -338, -338, -338, -338, -338, -338, -338, -338, -338, + -338, -338, -338, -338, -338, -338, -338, -338, -80, -338, + -338, -64, -32, -26, 17, -50, -338, 44, 27, 1132, + -338, -338, 2300, 27, -338, 61, -338, 1940, -338, -338, + -338, -338, 2300, -338, -338, 63, -338, 78, -338, 66, + -338, 62, -338, -338, -338, -338, -338, 2164, 107, 93, + -338, -79, -338, 72, -338, 2090, -338, -338, -338, 1493, + -338, -338, 68, -338, 2090, 70, -83, -338, 360, -338, + -338, -338, -338, 108, 2164, -51, -338, 1202, 1493, -338, + 141, 2164, 111, 1685, -338, 82, -338, -338, -338, -338, + -338, 1493, 1493, 1493, -338, -338, -338, -338, -338, -338, + 9, -338, -338, -338, 83, -21, 1588, 86, -338, 1493, + 31, -35, 51, -43, 48, 67, 69, 71, 100, 104, + -74, -338, 91, -338, -338, 2090, 1770, 65, -338, 78, + 89, 102, -338, 96, 113, 105, 1300, 116, 112, -338, + -338, 110, -338, -338, -2, -338, -64, 49, -338, -338, + -338, -338, 476, -338, -338, -338, -338, 118, -338, -338, + 1395, 1493, 101, 119, -338, -338, 111, 121, 12, -338, + -60, -338, -338, -338, -13, -338, -338, 1493, 2232, -338, + -338, 1493, 125, -338, -338, -338, 1493, 1493, 1493, 1493, + 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, + 1493, 1493, 1493, 1493, 1493, 1493, -338, 1855, -338, -338, + -338, -338, -338, -338, 122, -338, 1493, -338, -338, 14, + -338, -338, 592, -338, -338, -338, -338, -338, -338, -338, + -338, -338, -338, -338, 1493, 1493, -338, -338, -338, 1493, + 120, 124, -338, 1493, 126, 16, 1493, 111, -338, -71, + -338, -338, 128, 127, -338, 133, -338, -338, -338, -338, + -338, 31, 31, -35, -35, 51, 51, 51, 51, -43, + -43, 48, 67, 69, 71, 100, 104, 46, -338, 176, + 66, 824, 940, 5, -338, 1037, 592, -338, -338, 134, + 1493, 129, -338, 1493, -338, 138, -338, 1493, -338, -338, + 1493, 140, -338, -338, -338, -338, 1037, 122, 127, 170, + 2164, 144, 142, -338, -338, 1493, -338, -338, 145, -338, + 1493, -338, 139, 149, 239, -338, 146, 708, -338, -338, + 147, 6, 1493, 708, 122, 1493, -338, -338, -338, -338, + 148, 127, -338, -338, -338, -338 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -320, -320, -320, -320, -320, -320, -320, 98, -320, -320, - -320, -320, -92, -320, -43, -42, -115, -41, 79, 80, - 81, 77, 83, 91, -320, -104, -122, -320, -128, -120, - 9, 10, -320, -320, -320, 199, 231, 228, 208, -320, - -320, -319, -320, -320, -87, 37, -64, 326, -320, -320, - 158, -51, 0, -320, -320, -320, 169, -157, 90, 17, - -180, 14, -175, -316, -320, -320, -320, -31, -308, -320, - -320, -88, 74, 21, -320, -320, 1, -320, -320, -320, - -320, -320, -320, -320, -320, -320, 271, -320, -320 + -338, -338, -338, -338, -338, -338, -338, 30, -338, -338, + -338, -338, 37, -338, -77, -76, -205, -75, 15, 13, + 18, 19, 40, 41, -338, -97, -125, -338, -134, -119, + -338, 10, 11, -338, -338, -338, 143, 174, 168, 172, + -338, -338, -314, -338, -338, -101, 28, -68, 263, -338, + -338, 115, -49, 0, -338, -338, -338, -99, -128, 54, + 1, -204, -33, -196, -317, -338, -338, -338, -86, -337, + -338, -338, -87, 29, -30, -338, -338, -56, -338, -338, + -338, -338, -338, -338, -338, -338, -338, 226, -338, -338 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -222 +#define YYTABLE_NINF -227 static const yytype_int16 yytable[] = { - 75, 116, 162, 209, 208, 103, 213, 343, 349, 60, - 61, 243, 92, 252, 149, 232, 233, 214, 215, 87, - 162, 104, 282, 80, 168, 222, 286, 349, 7, 85, - 205, 109, 149, 120, 92, 83, 84, 206, 216, 362, - 211, 212, 217, 93, 94, 95, 244, 169, 88, 373, - 234, 235, 90, 263, 373, 81, 91, 120, 224, 27, - 28, 86, 29, 379, 110, 93, 94, 95, 173, 75, - 37, 123, 75, 124, 174, 219, 228, 75, 229, 168, - 125, 220, 75, 168, 209, 285, 60, 61, 291, 252, - 289, 101, 99, 347, 376, 100, 279, 75, 295, 279, - 279, 162, 169, 106, 247, 102, 169, 334, -89, 279, - 105, 75, 280, 149, 112, 192, 315, 303, 304, 305, - 306, 75, 319, 279, 319, 320, 326, 338, 2, 3, - 4, 115, 325, 296, 297, 298, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 353, 282, 122, 355, 329, 330, 165, 168, - 93, 94, 95, 331, 172, 209, 75, -26, 75, 106, - 75, 225, 226, 227, 367, 230, 231, 236, 237, 162, - 253, 254, 169, 279, 337, 299, 300, 202, 301, 302, - -27, 149, 380, 238, 218, 307, 308, 192, 339, 348, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 209, 223, 239, 209, 162, 356, 241, 240, 348, 277, - 242, 245, 80, 248, 256, 259, 149, 257, 265, 261, - 368, 287, 209, 260, 342, 264, 8, 9, 10, 11, - 283, 377, 288, -150, 318, -221, 75, 333, 336, 332, - 209, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 192, 335, 279, -28, - 341, 31, 32, 33, 34, 35, 36, 352, 357, 354, - 40, 41, 364, 42, 43, 44, 358, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 365, 55, 56, - 57, 369, 126, 59, 127, 128, 129, 130, 131, 366, - 370, 132, 133, 371, 372, 294, 381, 309, 312, 310, - 203, 311, 117, 192, 192, 313, 121, 192, 192, 204, - 134, 82, 255, 207, 314, 246, 340, 317, 344, 378, - 328, 135, 136, 137, 138, 345, 192, 359, 108, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 175, 176, 177, 192, 178, 179, 180, 181, - 192, 0, 0, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 182, 42, 43, 44, 0, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, - 55, 56, 57, 58, 126, 59, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 0, 0, 0, 0, 0, + 75, 106, 119, 214, 131, 221, 288, 292, 213, 224, + 60, 61, 171, 131, 353, 176, 299, 80, 254, 85, + 374, 359, 178, 107, 87, 126, 92, 127, 179, 123, + 171, 233, 131, 112, 128, 347, 7, 132, 315, 316, + 317, 318, 359, 348, 243, 244, 132, 393, 221, 81, + 88, 86, 269, 255, 300, 210, 123, 93, 94, 95, + 386, 99, 211, 216, 100, 132, 386, 27, 28, 75, + 29, 92, 75, 90, 131, 131, 257, 75, 37, 245, + 246, 239, 75, 240, 230, 91, 214, 60, 61, 342, + 231, 291, 301, 303, 225, 226, 102, 75, 285, 83, + 84, 108, 93, 94, 95, 75, 307, 132, 132, 285, + 357, 390, 286, 171, 75, 227, 285, 285, 197, 228, + 101, 327, -94, 297, 75, 285, 298, 297, 334, 221, + 344, 75, 333, 75, 241, 242, 364, 247, 248, 366, + 288, 2, 3, 4, 259, 260, 158, 93, 94, 95, + 236, 237, 238, -26, 115, 109, 131, 285, 350, 337, + 338, 379, 311, 312, 158, 313, 314, 109, 214, 125, + 339, 113, 319, 320, 118, 75, 75, 345, 222, 223, + 129, 394, 174, 177, 207, 80, -27, 217, 229, 132, + 234, 252, 171, 249, 250, 251, 235, 253, 256, 171, + 265, 358, 197, 262, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 293, 214, 263, 266, 214, 267, + 270, 271, 358, 283, 289, 369, 294, 296, 368, -155, + -226, 341, 351, 340, 360, 349, 381, -28, 285, 343, + 214, 363, 365, 352, 370, 367, 376, 158, 391, 377, + 171, 378, 380, 382, 383, 360, 384, 75, 306, 385, + 214, 389, 395, 322, 321, 120, 124, 208, 82, 323, + 295, 324, 197, 308, 309, 310, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 106, 325, 261, 326, 209, 392, 346, 354, + 371, 336, 355, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 0, 183, 184, 0, 0, - 0, 0, 185, 135, 136, 137, 138, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 175, 176, - 177, 0, 178, 179, 180, 181, 0, 0, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 182, 42, 43, 44, 0, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 0, 55, 56, 57, 58, - 126, 59, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, - 0, 0, 183, 281, 0, 0, 0, 0, 185, 135, - 136, 137, 138, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 175, 176, 177, 0, 178, 179, - 180, 181, 0, 0, 0, 12, 13, 14, 15, 16, + 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, + 0, 197, 197, 158, 0, 197, 197, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, + 75, 0, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 180, 181, 182, 197, 183, 184, + 185, 186, 0, 197, 158, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 182, 42, 43, 44, + 36, 37, 38, 39, 40, 41, 187, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 0, 55, 56, 57, 58, 126, 59, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 0, 0, 0, + 54, 0, 55, 56, 57, 58, 135, 59, 136, 137, + 138, 139, 140, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 0, 183, 0, - 0, 0, 0, 0, 185, 135, 136, 137, 138, 1, + 0, 0, 0, 0, 143, 0, 0, 0, 188, 189, + 0, 0, 0, 0, 190, 144, 145, 146, 147, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 175, 176, 177, 0, 178, 179, 180, 181, 0, 0, + 180, 181, 182, 0, 183, 184, 185, 186, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 182, 42, 43, 44, 0, 45, 46, 47, + 40, 41, 187, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 55, 56, - 57, 58, 126, 59, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 0, 0, 0, 0, 0, 0, 0, + 57, 58, 135, 59, 136, 137, 138, 139, 140, 0, + 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 185, 135, 136, 137, 138, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 175, 176, 177, 0, - 178, 179, 180, 181, 0, 0, 0, 12, 13, 14, + 143, 0, 0, 0, 188, 287, 0, 0, 0, 0, + 190, 144, 145, 146, 147, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 180, 181, 182, 0, + 183, 184, 185, 186, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 182, 42, + 34, 35, 36, 37, 38, 39, 40, 41, 187, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 0, 55, 56, 57, 58, 126, 59, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 0, + 52, 53, 54, 0, 55, 56, 57, 58, 135, 59, + 136, 137, 138, 139, 140, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 135, 136, 137, - 138, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, + 188, 0, 0, 0, 0, 0, 190, 144, 145, 146, + 147, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 180, 181, 182, 0, 183, 184, 185, 186, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, + 38, 39, 40, 41, 187, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, - 55, 56, 57, 58, 126, 59, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 2, - 3, 4, 134, 6, 7, 8, 9, 10, 11, 0, - 0, 0, 185, 135, 136, 137, 138, 0, 0, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 58, 126, 59, 127, 128, 129, 130, 131, 0, 0, - 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, - 135, 136, 137, 138, 0, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, - 36, 0, 0, 0, 40, 41, 0, 42, 43, 44, - 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 0, 55, 56, 57, 0, 126, 59, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 0, 0, 0, + 55, 56, 57, 58, 135, 59, 136, 137, 138, 139, + 140, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 8, 9, 10, 11, 0, - 0, 0, 0, 0, 262, 135, 136, 137, 138, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 0, 0, 0, 40, - 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 0, 126, 59, 127, 128, 129, 130, 131, 0, 0, - 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 0, 0, 284, 8, 9, 10, 11, 0, 0, 0, - 135, 136, 137, 138, 0, 0, 0, 0, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 0, 0, 0, 40, 41, 0, - 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 0, 55, 56, 57, 0, 126, - 59, 127, 128, 129, 130, 131, 0, 0, 132, 133, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 134, 8, 9, - 10, 11, 0, 0, 0, 0, 0, 0, 135, 136, - 137, 138, 0, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, - 0, 0, 0, 31, 32, 33, 34, 35, 36, 0, - 0, 0, 40, 221, 0, 42, 43, 44, 0, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, - 55, 56, 57, 0, 126, 59, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 2, - 3, 4, 134, 6, 7, 8, 9, 10, 11, 0, - 0, 0, 0, 135, 136, 137, 138, 0, 0, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 2, 3, 4, 0, 6, 7, - 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 251, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, - 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 0, 55, 56, 57, 58, 0, 59, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 58, 0, 59, 1, 2, 3, 4, 5, 6, 7, + 0, 0, 143, 0, 0, 0, 118, 0, 0, 0, + 0, 0, 190, 144, 145, 146, 147, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 180, 181, + 182, 0, 183, 184, 185, 186, 0, 0, 0, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 187, 42, 43, 44, 0, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 0, 55, 56, 57, 58, + 135, 59, 136, 137, 138, 139, 140, 0, 0, 141, + 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 144, + 145, 146, 147, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 0, 55, 56, 57, 58, 0, 59, 167, 2, + 54, 0, 55, 56, 57, 58, 135, 59, 136, 137, + 138, 139, 140, 0, 0, 141, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 130, 2, 3, 4, 143, 6, 7, 8, 9, 10, + 11, 0, 0, 0, 190, 144, 145, 146, 147, 0, + 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 0, 42, 43, 44, 0, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 0, 55, + 56, 57, 58, 135, 59, 136, 137, 138, 139, 140, + 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, + 0, 143, 8, 9, 10, 11, 0, 0, 0, 0, + 0, 0, 144, 145, 146, 147, 0, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, + 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 0, 55, 56, 57, 0, 103, 59, + 0, 0, 8, 9, 10, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 0, 0, 104, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, + 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 0, 55, 56, 57, 0, 135, 59, + 136, 137, 138, 139, 140, 0, 0, 141, 142, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 143, 0, 0, 212, + 8, 9, 10, 11, 0, 0, 0, 144, 145, 146, + 147, 0, 0, 0, 0, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 0, 0, 0, 40, 41, 0, 42, 43, 44, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 0, 55, 56, 57, 0, 135, 59, 136, 137, + 138, 139, 140, 0, 0, 141, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 8, 9, 10, 11, 0, + 0, 0, 0, 0, 268, 144, 145, 146, 147, 0, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, + 31, 32, 33, 34, 35, 36, 0, 0, 0, 40, + 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, + 0, 135, 59, 136, 137, 138, 139, 140, 0, 0, + 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, + 0, 0, 290, 8, 9, 10, 11, 0, 0, 0, + 144, 145, 146, 147, 0, 0, 0, 0, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 0, 0, 0, 0, 0, 31, 32, + 33, 34, 35, 36, 0, 0, 0, 40, 41, 0, + 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 0, 55, 56, 57, 0, 135, + 59, 136, 137, 138, 139, 140, 0, 0, 141, 142, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 143, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 0, 144, 145, + 146, 147, 0, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 0, + 0, 0, 40, 232, 0, 42, 43, 44, 0, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, + 55, 56, 57, 0, 135, 59, 136, 137, 138, 139, + 140, 0, 0, 141, 142, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 130, 2, + 3, 4, 143, 6, 7, 8, 9, 10, 11, 0, + 0, 0, 0, 144, 145, 146, 147, 0, 0, 0, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, + 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 130, 2, 3, 4, 0, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 220, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 0, 55, 56, 57, 58, 0, 59, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 130, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, + 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 0, 55, 56, 57, 58, 0, 59, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 58, 0, 59, 2, 3, 4, 0, 0, 0, 8, - 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 0, 0, 0, 40, 41, 0, 42, 43, 44, 0, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 0, 55, 56, 57, 0, 0, 59, 8, 9, 10, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, - 0, 0, 31, 32, 33, 34, 35, 36, 0, 0, - 0, 40, 41, 0, 42, 43, 44, 0, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 0, 55, - 56, 57, 0, 292, 59, 8, 9, 10, 11, 293, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 0, 0, 0, 40, - 41, 0, 42, 43, 44, 0, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 0, 55, 56, 57, - 0, 0, 59 + 58, 0, 59, 130, 2, 3, 4, 0, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 0, 55, 56, 57, 58, 0, 59, 2, 3, + 4, 0, 0, 0, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 0, 0, 0, 40, 41, + 0, 42, 43, 44, 0, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 0, 55, 56, 57, 0, + 0, 59, 8, 9, 10, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, + 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 0, 55, 56, 57, 0, 304, 59, + 8, 9, 10, 11, 305, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 0, 0, 0, 40, 41, 0, 42, 43, 44, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 0, 55, 56, 57, 0, 0, 59 }; static const yytype_int16 yycheck[] = { - 0, 89, 106, 125, 124, 69, 134, 323, 327, 0, - 0, 92, 9, 170, 106, 87, 88, 85, 86, 104, - 124, 72, 197, 44, 111, 147, 206, 346, 9, 76, - 106, 82, 124, 97, 9, 40, 41, 113, 106, 347, - 132, 133, 110, 40, 41, 42, 127, 111, 114, 365, - 122, 123, 105, 181, 370, 76, 111, 121, 150, 40, - 41, 108, 43, 371, 108, 40, 41, 42, 105, 69, - 51, 104, 72, 106, 111, 105, 116, 77, 118, 166, - 113, 111, 82, 170, 206, 205, 77, 77, 216, 246, - 105, 76, 111, 105, 105, 114, 111, 97, 220, 111, - 111, 205, 166, 106, 168, 68, 170, 287, 105, 111, - 73, 111, 114, 205, 76, 115, 244, 232, 233, 234, - 235, 121, 111, 111, 111, 114, 114, 114, 4, 5, - 6, 108, 260, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 332, 328, 76, 335, 278, 279, 114, 246, - 40, 41, 42, 283, 113, 287, 166, 104, 168, 106, - 170, 119, 120, 121, 354, 83, 84, 89, 90, 283, - 79, 80, 246, 111, 112, 228, 229, 76, 230, 231, - 104, 283, 372, 126, 105, 236, 237, 197, 318, 327, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 332, 104, 125, 335, 318, 337, 91, 124, 346, 113, - 93, 107, 44, 76, 114, 104, 318, 114, 109, 114, - 358, 113, 354, 104, 322, 104, 10, 11, 12, 13, - 106, 369, 107, 104, 106, 108, 246, 107, 107, 113, - 372, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 266, 113, 111, 104, - 56, 45, 46, 47, 48, 49, 50, 107, 107, 113, - 54, 55, 76, 57, 58, 59, 104, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 105, 72, 73, - 74, 114, 76, 77, 78, 79, 80, 81, 82, 109, - 105, 85, 86, 17, 113, 217, 114, 238, 241, 239, - 121, 240, 91, 323, 324, 242, 98, 327, 328, 121, - 104, 5, 174, 107, 243, 166, 319, 247, 324, 370, - 266, 115, 116, 117, 118, 324, 346, 346, 77, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 365, 18, 19, 20, 21, - 370, -1, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, -1, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, + 0, 69, 89, 128, 105, 133, 202, 211, 127, 143, + 0, 0, 109, 114, 331, 114, 76, 44, 92, 76, + 357, 335, 105, 72, 104, 104, 9, 106, 111, 97, + 127, 156, 133, 82, 113, 106, 9, 105, 243, 244, + 245, 246, 356, 114, 87, 88, 114, 384, 176, 76, + 114, 108, 186, 127, 114, 106, 124, 40, 41, 42, + 377, 111, 113, 131, 114, 133, 383, 40, 41, 69, + 43, 9, 72, 105, 175, 176, 175, 77, 51, 122, + 123, 116, 82, 118, 105, 111, 211, 77, 77, 293, + 111, 210, 105, 227, 85, 86, 68, 97, 111, 40, + 41, 73, 40, 41, 42, 105, 231, 175, 176, 111, + 105, 105, 114, 210, 114, 106, 111, 111, 118, 110, + 76, 255, 105, 111, 124, 111, 114, 111, 114, 257, + 114, 131, 266, 133, 83, 84, 340, 89, 90, 343, + 336, 4, 5, 6, 79, 80, 109, 40, 41, 42, + 119, 120, 121, 104, 76, 106, 257, 111, 112, 284, + 285, 365, 239, 240, 127, 241, 242, 106, 293, 76, + 289, 108, 247, 248, 108, 175, 176, 296, 141, 142, + 108, 385, 114, 113, 76, 44, 104, 76, 105, 257, + 104, 91, 289, 126, 125, 124, 159, 93, 107, 296, + 104, 335, 202, 114, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 113, 340, 114, 104, 343, 114, + 104, 109, 356, 113, 106, 350, 107, 106, 347, 104, + 108, 107, 56, 113, 335, 107, 370, 104, 111, 113, + 365, 107, 113, 330, 104, 107, 76, 210, 382, 105, + 347, 109, 107, 114, 105, 356, 17, 257, 228, 113, + 385, 114, 114, 250, 249, 91, 98, 124, 5, 251, + 216, 252, 272, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 360, 253, 179, 254, 124, 383, 297, 332, + 356, 272, 332, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 104, -1, -1, -1, 108, 109, -1, -1, - -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, -1, 18, 19, 20, 21, -1, -1, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, - 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, - -1, -1, 108, 109, -1, -1, -1, -1, 114, 115, - 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, - 20, 21, -1, -1, -1, 25, 26, 27, 28, 29, + -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, + -1, 331, 332, 296, -1, 335, 336, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 356, -1, -1, -1, + 360, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 377, 18, 19, + 20, 21, -1, 383, 347, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, @@ -1317,7 +1331,7 @@ 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 104, -1, -1, -1, 108, -1, + -1, -1, -1, -1, 104, -1, -1, -1, 108, 109, -1, -1, -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, -1, -1, @@ -1329,7 +1343,7 @@ 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 104, -1, -1, -1, 108, -1, -1, -1, -1, -1, + 104, -1, -1, -1, 108, 109, -1, -1, -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, -1, -1, -1, 25, 26, 27, @@ -1341,29 +1355,69 @@ 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, + 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, + 52, 53, 54, 55, 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 104, 8, 9, 10, 11, 12, 13, -1, - -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, - 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 104, -1, -1, -1, 108, -1, -1, -1, + -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, -1, 18, 19, 20, 21, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, + 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, + 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, - 115, 116, 117, 118, -1, 25, 26, 27, 28, 29, + -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 104, 8, 9, 10, 11, 12, + 13, -1, -1, -1, 114, 115, 116, 117, 118, -1, + -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, + -1, 104, 10, 11, 12, 13, -1, -1, -1, -1, + -1, -1, 115, 116, 117, 118, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, + 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, + 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, -1, 72, 73, 74, -1, 76, 77, + -1, -1, 10, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, -1, -1, 114, 45, 46, 47, + 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, + 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, -1, 72, 73, 74, -1, 76, 77, + 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 104, -1, -1, 107, + 10, 11, 12, 13, -1, -1, -1, 115, 116, 117, + 118, -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, 58, 59, @@ -1416,51 +1470,59 @@ 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, -1, 77, -1, -1, - -1, -1, -1, -1, -1, 0, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, -1, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, - 75, -1, 77, 3, 4, 5, 6, 7, 8, 9, + 75, -1, 77, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, + -1, -1, -1, -1, 109, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, -1, 77, 3, 4, - 5, 6, -1, 8, 9, 10, 11, 12, 13, -1, + 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, - 75, -1, 77, 4, 5, 6, -1, -1, -1, 10, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - -1, -1, -1, 54, 55, -1, 57, 58, 59, -1, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - -1, 72, 73, 74, -1, -1, 77, 10, 11, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, -1, -1, - -1, 54, 55, -1, 57, 58, 59, -1, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, - 73, 74, -1, 76, 77, 10, 11, 12, 13, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, - 45, 46, 47, 48, 49, 50, -1, -1, -1, 54, - 55, -1, 57, 58, 59, -1, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, - -1, -1, 77 + 75, -1, 77, 3, 4, 5, 6, -1, 8, 9, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, -1, 72, 73, 74, 75, -1, 77, 4, 5, + 6, -1, -1, -1, 10, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, -1, -1, -1, -1, -1, 45, + 46, 47, 48, 49, 50, -1, -1, -1, 54, 55, + -1, 57, 58, 59, -1, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, -1, 72, 73, 74, -1, + -1, 77, 10, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, + 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, + 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, -1, 72, 73, 74, -1, 76, 77, + 10, 11, 12, 13, 82, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, + 50, -1, -1, -1, 54, 55, -1, 57, 58, 59, + -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, -1, 72, 73, 74, -1, -1, 77 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1473,39 +1535,40 @@ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, - 158, 159, 160, 161, 162, 167, 168, 169, 170, 172, - 173, 174, 175, 176, 179, 180, 181, 213, 214, 215, - 44, 76, 175, 40, 41, 76, 108, 104, 114, 216, - 105, 111, 9, 40, 41, 42, 164, 165, 171, 111, - 114, 76, 173, 174, 179, 173, 106, 0, 214, 179, - 108, 183, 76, 177, 178, 108, 199, 164, 163, 166, - 174, 165, 76, 104, 106, 113, 76, 78, 79, 80, - 81, 82, 85, 86, 104, 115, 116, 117, 118, 129, - 130, 131, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 157, 180, 114, 182, 3, 172, 174, - 184, 185, 113, 105, 111, 14, 15, 16, 18, 19, - 20, 21, 56, 108, 109, 114, 140, 153, 154, 156, - 158, 159, 180, 189, 190, 191, 192, 200, 201, 202, - 205, 212, 76, 163, 166, 106, 113, 107, 157, 154, - 188, 140, 140, 156, 85, 86, 106, 110, 105, 105, - 111, 55, 154, 104, 140, 119, 120, 121, 116, 118, - 83, 84, 87, 88, 122, 123, 89, 90, 126, 125, - 124, 91, 93, 92, 127, 107, 184, 174, 76, 186, - 187, 109, 185, 79, 80, 178, 114, 114, 207, 104, - 104, 114, 114, 156, 104, 109, 193, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 113, 155, 111, - 114, 109, 190, 106, 107, 157, 188, 113, 107, 105, - 132, 156, 76, 82, 135, 154, 140, 140, 140, 142, - 142, 143, 143, 144, 144, 144, 144, 145, 145, 146, - 147, 148, 149, 150, 151, 156, 109, 186, 106, 111, - 114, 196, 197, 198, 208, 156, 114, 206, 200, 154, - 154, 157, 113, 107, 188, 113, 107, 112, 114, 157, - 187, 56, 199, 191, 189, 201, 209, 105, 156, 169, - 204, 194, 107, 188, 113, 188, 154, 107, 104, 204, - 210, 211, 196, 203, 76, 105, 109, 188, 156, 114, - 105, 17, 113, 191, 195, 199, 105, 156, 195, 196, - 188, 114 + 159, 160, 161, 162, 163, 168, 169, 170, 171, 173, + 174, 175, 176, 177, 180, 181, 182, 214, 215, 216, + 44, 76, 176, 40, 41, 76, 108, 104, 114, 217, + 105, 111, 9, 40, 41, 42, 165, 166, 172, 111, + 114, 76, 174, 76, 114, 158, 175, 180, 174, 106, + 0, 215, 180, 108, 184, 76, 178, 179, 108, 200, + 165, 164, 167, 175, 166, 76, 104, 106, 113, 108, + 3, 173, 175, 185, 186, 76, 78, 79, 80, 81, + 82, 85, 86, 104, 115, 116, 117, 118, 129, 130, + 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 157, 181, 114, 183, 185, 113, 105, 111, + 14, 15, 16, 18, 19, 20, 21, 56, 108, 109, + 114, 140, 153, 154, 156, 159, 160, 181, 190, 191, + 192, 193, 201, 202, 203, 206, 213, 76, 164, 167, + 106, 113, 107, 157, 154, 189, 175, 76, 187, 188, + 109, 186, 140, 140, 156, 85, 86, 106, 110, 105, + 105, 111, 55, 154, 104, 140, 119, 120, 121, 116, + 118, 83, 84, 87, 88, 122, 123, 89, 90, 126, + 125, 124, 91, 93, 92, 127, 107, 185, 109, 79, + 80, 179, 114, 114, 208, 104, 104, 114, 114, 156, + 104, 109, 194, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 113, 155, 111, 114, 109, 191, 106, + 107, 157, 189, 113, 107, 187, 106, 111, 114, 76, + 114, 105, 132, 156, 76, 82, 135, 154, 140, 140, + 140, 142, 142, 143, 143, 144, 144, 144, 144, 145, + 145, 146, 147, 148, 149, 150, 151, 156, 109, 197, + 198, 199, 209, 156, 114, 207, 201, 154, 154, 157, + 113, 107, 189, 113, 114, 157, 188, 106, 114, 107, + 112, 56, 200, 192, 190, 202, 210, 105, 156, 170, + 173, 205, 195, 107, 189, 113, 189, 107, 157, 154, + 104, 205, 211, 212, 197, 204, 76, 105, 109, 189, + 107, 156, 114, 105, 17, 113, 192, 196, 200, 114, + 105, 156, 196, 197, 189, 114 }; #define yyerrok (yyerrstatus = 0) @@ -3267,6 +3330,15 @@ case 85: { + if (context->enterStructDeclaration((yyvsp[(1) - (2)].lex).line, *(yyvsp[(1) - (2)].lex).string)) + context->recover(); + (yyval.lex) = (yyvsp[(1) - (2)].lex); + } + break; + + case 86: + + { TFunction &function = *((yyvsp[(1) - (2)].interm).function); TIntermAggregate *prototype = new TIntermAggregate; @@ -3295,7 +3367,7 @@ } break; - case 86: + case 87: { TIntermAggregate *aggNode = (yyvsp[(1) - (2)].interm).intermAggregate; @@ -3305,7 +3377,7 @@ } break; - case 87: + case 88: { if (!context->symbolTable.setDefaultPrecision( (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.precision) )) { @@ -3316,7 +3388,39 @@ } break; - case 88: + case 89: + + { + ES3_ONLY(getQualifierString((yyvsp[(1) - (5)].interm.type).qualifier), (yyvsp[(1) - (5)].interm.type).line); + (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[(1) - (5)].interm.type), (yyvsp[(2) - (5)].lex).line, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(3) - (5)].interm.fieldList), NULL, (yyvsp[(1) - (5)].interm.type).line, NULL, (yyvsp[(1) - (5)].interm.type).line); + } + break; + + case 90: + + { + ES3_ONLY(getQualifierString((yyvsp[(1) - (6)].interm.type).qualifier), (yyvsp[(1) - (6)].interm.type).line); + (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[(1) - (6)].interm.type), (yyvsp[(2) - (6)].lex).line, *(yyvsp[(2) - (6)].lex).string, (yyvsp[(3) - (6)].interm.fieldList), (yyvsp[(5) - (6)].lex).string, (yyvsp[(5) - (6)].lex).line, NULL, (yyvsp[(1) - (6)].interm.type).line); + } + break; + + case 91: + + { + ES3_ONLY(getQualifierString((yyvsp[(1) - (9)].interm.type).qualifier), (yyvsp[(1) - (9)].interm.type).line); + (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[(1) - (9)].interm.type), (yyvsp[(2) - (9)].lex).line, *(yyvsp[(2) - (9)].lex).string, (yyvsp[(3) - (9)].interm.fieldList), (yyvsp[(5) - (9)].lex).string, (yyvsp[(5) - (9)].lex).line, (yyvsp[(7) - (9)].interm.intermTypedNode), (yyvsp[(6) - (9)].lex).line); + } + break; + + case 92: + + { + context->parseGlobalLayoutQualifier((yyvsp[(1) - (2)].interm.type)); + (yyval.interm.intermNode) = 0; + } + break; + + case 93: { // @@ -3355,21 +3459,21 @@ } break; - case 89: + case 94: { (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } break; - case 90: + case 95: { (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } break; - case 91: + case 96: { // Add the parameter @@ -3381,7 +3485,7 @@ } break; - case 92: + case 97: { // @@ -3403,7 +3507,7 @@ } break; - case 93: + case 98: { if ((yyvsp[(1) - (3)].interm.type).qualifier != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier != EvqTemporary) { @@ -3424,7 +3528,7 @@ } break; - case 94: + case 99: { if ((yyvsp[(1) - (2)].interm.type).type == EbtVoid) { @@ -3439,7 +3543,7 @@ } break; - case 95: + case 100: { // Check that we can make an array out of this type @@ -3461,90 +3565,90 @@ } break; - case 96: - - { - (yyval.interm) = (yyvsp[(3) - (3)].interm); - if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.qualifier), (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) - context->recover(); - } - break; - - case 97: - - { - (yyval.interm) = (yyvsp[(2) - (2)].interm); - if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) - context->recover(); - if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) - context->recover(); - } - break; - - case 98: - - { - (yyval.interm) = (yyvsp[(3) - (3)].interm); - if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.qualifier), (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) - context->recover(); - } - break; - - case 99: - - { - (yyval.interm) = (yyvsp[(2) - (2)].interm); - if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) - context->recover(); - if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) - context->recover(); - } - break; - - case 100: - - { - (yyval.interm.qualifier) = EvqIn; - } - break; - case 101: { - (yyval.interm.qualifier) = EvqIn; + (yyval.interm) = (yyvsp[(3) - (3)].interm); + if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.qualifier), (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); } break; case 102: { - (yyval.interm.qualifier) = EvqOut; + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) + context->recover(); + if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); } break; case 103: { - (yyval.interm.qualifier) = EvqInOut; + (yyval.interm) = (yyvsp[(3) - (3)].interm); + if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.qualifier), (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); } break; case 104: { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type)) + context->recover(); + if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type)) + context->recover(); + } + break; + + case 105: + + { + (yyval.interm.qualifier) = EvqIn; + } + break; + + case 106: + + { + (yyval.interm.qualifier) = EvqIn; + } + break; + + case 107: + + { + (yyval.interm.qualifier) = EvqOut; + } + break; + + case 108: + + { + (yyval.interm.qualifier) = EvqInOut; + } + break; + + case 109: + + { TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; (yyval.interm).param = param; } break; - case 105: + case 110: { (yyval.interm) = (yyvsp[(1) - (1)].interm); } break; - case 106: + case 111: { (yyval.interm) = (yyvsp[(1) - (3)].interm); @@ -3552,7 +3656,7 @@ } break; - case 107: + case 112: { (yyval.interm) = (yyvsp[(1) - (6)].interm); @@ -3560,7 +3664,7 @@ } break; - case 108: + case 113: { ES3_ONLY("[]", (yyvsp[(3) - (7)].lex).line); @@ -3569,7 +3673,7 @@ } break; - case 109: + case 114: { ES3_ONLY("=", (yyvsp[(7) - (8)].lex).line); @@ -3578,7 +3682,7 @@ } break; - case 110: + case 115: { (yyval.interm) = (yyvsp[(1) - (5)].interm); @@ -3586,7 +3690,7 @@ } break; - case 111: + case 116: { (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); @@ -3594,7 +3698,7 @@ } break; - case 112: + case 117: { (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); @@ -3602,7 +3706,7 @@ } break; - case 113: + case 118: { (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); @@ -3610,7 +3714,7 @@ } break; - case 114: + case 119: { ES3_ONLY("[]", (yyvsp[(3) - (6)].lex).line); @@ -3619,7 +3723,7 @@ } break; - case 115: + case 120: { ES3_ONLY("=", (yyvsp[(6) - (7)].lex).line); @@ -3628,7 +3732,7 @@ } break; - case 116: + case 121: { (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); @@ -3636,7 +3740,7 @@ } break; - case 117: + case 122: { // $$.type is not used in invariant declarations. @@ -3644,7 +3748,7 @@ } break; - case 118: + case 123: { (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); @@ -3658,35 +3762,35 @@ } break; - case 119: + case 124: { (yyval.interm.type) = context->addFullySpecifiedType((yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).invariant, (yyvsp[(1) - (2)].interm.type).layoutQualifier, (yyvsp[(2) - (2)].interm.type)); } break; - case 120: + case 125: { (yyval.interm.type).qualifier = EvqSmooth; } break; - case 121: + case 126: { (yyval.interm.type).qualifier = EvqFlat; } break; - case 122: + case 127: { (yyval.interm.qualifier) = EvqConstReadOnly; } break; - case 123: + case 128: { VERTEX_ONLY("attribute", (yyvsp[(1) - (1)].lex).line); @@ -3697,7 +3801,7 @@ } break; - case 124: + case 129: { ES2_ONLY("varying", (yyvsp[(1) - (1)].lex).line); @@ -3710,7 +3814,7 @@ } break; - case 125: + case 130: { ES2_ONLY("varying", (yyvsp[(1) - (2)].lex).line); @@ -3723,21 +3827,21 @@ } break; - case 126: + case 131: { (yyval.interm.type).setBasic(EbtVoid, (yyvsp[(1) - (1)].interm.type).qualifier, (yyvsp[(1) - (1)].interm.type).line); } break; - case 127: + case 132: { (yyval.interm.type) = context->joinInterpolationQualifiers((yyvsp[(1) - (2)].interm.type).line, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).line, (yyvsp[(2) - (2)].interm.type).qualifier); } break; - case 128: + case 133: { context->error((yyvsp[(1) - (1)].interm.type).line, "interpolation qualifier requires a fragment 'in' or vertex 'out' storage qualifier", getQualifierString((yyvsp[(1) - (1)].interm.type).qualifier)); @@ -3748,7 +3852,7 @@ } break; - case 129: + case 134: { (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -3756,7 +3860,7 @@ } break; - case 130: + case 135: { (yyval.interm.type).setBasic(EbtVoid, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).line); @@ -3764,7 +3868,7 @@ } break; - case 131: + case 136: { (yyval.interm.type).qualifier = EvqConstExpr; @@ -3772,7 +3876,7 @@ } break; - case 132: + case 137: { ES3_ONLY("in", (yyvsp[(1) - (1)].lex).line); @@ -3781,7 +3885,7 @@ } break; - case 133: + case 138: { ES3_ONLY("out", (yyvsp[(1) - (1)].lex).line); @@ -3790,7 +3894,7 @@ } break; - case 134: + case 139: { ES3_ONLY("centroid in", (yyvsp[(1) - (2)].lex).line); @@ -3804,7 +3908,7 @@ } break; - case 135: + case 140: { ES3_ONLY("centroid out", (yyvsp[(1) - (2)].lex).line); @@ -3818,7 +3922,7 @@ } break; - case 136: + case 141: { if (context->globalErrorCheck((yyvsp[(1) - (1)].lex).line, context->symbolTable.atGlobalLevel(), "uniform")) @@ -3828,7 +3932,7 @@ } break; - case 137: + case 142: { (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); @@ -3842,7 +3946,7 @@ } break; - case 138: + case 143: { (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); @@ -3850,28 +3954,28 @@ } break; - case 139: + case 144: { (yyval.interm.precision) = EbpHigh; } break; - case 140: + case 145: { (yyval.interm.precision) = EbpMedium; } break; - case 141: + case 146: { (yyval.interm.precision) = EbpLow; } break; - case 142: + case 147: { ES3_ONLY("layout", (yyvsp[(1) - (4)].lex).line); @@ -3879,49 +3983,49 @@ } break; - case 143: + case 148: { (yyval.interm.layoutQualifier) = (yyvsp[(1) - (1)].interm.layoutQualifier); } break; - case 144: + case 149: { (yyval.interm.layoutQualifier) = context->joinLayoutQualifiers((yyvsp[(1) - (3)].interm.layoutQualifier), (yyvsp[(3) - (3)].interm.layoutQualifier)); } break; - case 145: + case 150: { (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[(1) - (1)].lex).string, (yyvsp[(1) - (1)].lex).line); } break; - case 146: + case 151: { (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[(1) - (3)].lex).string, (yyvsp[(1) - (3)].lex).line, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(3) - (3)].lex).i, (yyvsp[(3) - (3)].lex).line); } break; - case 147: + case 152: { (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[(1) - (3)].lex).string, (yyvsp[(1) - (3)].lex).line, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(3) - (3)].lex).i, (yyvsp[(3) - (3)].lex).line); } break; - case 148: + case 153: { (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } break; - case 149: + case 154: { (yyval.interm.type) = (yyvsp[(1) - (4)].interm.type); @@ -3937,52 +4041,11 @@ } break; - case 150: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtVoid, qual, (yyvsp[(1) - (1)].lex).line); - } - break; - - case 151: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); - } - break; - - case 152: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); - } - break; - - case 153: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); - } - break; - - case 154: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); - } - break; - case 155: { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(2); + (yyval.interm.type).setBasic(EbtVoid, qual, (yyvsp[(1) - (1)].lex).line); } break; @@ -3991,7 +4054,6 @@ { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(3); } break; @@ -3999,8 +4061,7 @@ { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(4); + (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); } break; @@ -4008,8 +4069,7 @@ { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(2); + (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); } break; @@ -4018,7 +4078,6 @@ { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(3); } break; @@ -4026,66 +4085,111 @@ { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(2); + } + break; + + case 161: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(3); + } + break; + + case 162: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(4); + } + break; + + case 163: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(2); + } + break; + + case 164: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(3); + } + break; + + case 165: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line); (yyval.interm.type).setAggregate(4); } break; - case 161: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(2); - } - break; - - case 162: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(3); - } - break; - - case 163: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(4); - } - break; - - case 164: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(2); - } - break; - - case 165: - - { - TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); - (yyval.interm.type).setAggregate(3); - } - break; - case 166: { TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(2); + } + break; + + case 167: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(3); + } + break; + + case 168: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtInt, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(4); + } + break; + + case 169: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(2); + } + break; + + case 170: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); + (yyval.interm.type).setAggregate(3); + } + break; + + case 171: + + { + TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; (yyval.interm.type).setBasic(EbtUInt, qual, (yyvsp[(1) - (1)].lex).line); (yyval.interm.type).setAggregate(4); } break; - case 167: + case 172: { FRAG_VERT_ONLY("mat2", (yyvsp[(1) - (1)].lex).line); @@ -4095,7 +4199,7 @@ } break; - case 168: + case 173: { FRAG_VERT_ONLY("mat3", (yyvsp[(1) - (1)].lex).line); @@ -4105,7 +4209,7 @@ } break; - case 169: + case 174: { FRAG_VERT_ONLY("mat4", (yyvsp[(1) - (1)].lex).line); @@ -4115,7 +4219,7 @@ } break; - case 170: + case 175: { FRAG_VERT_ONLY("mat2x3", (yyvsp[(1) - (1)].lex).line); @@ -4125,7 +4229,7 @@ } break; - case 171: + case 176: { FRAG_VERT_ONLY("mat3x2", (yyvsp[(1) - (1)].lex).line); @@ -4135,7 +4239,7 @@ } break; - case 172: + case 177: { FRAG_VERT_ONLY("mat2x4", (yyvsp[(1) - (1)].lex).line); @@ -4145,7 +4249,7 @@ } break; - case 173: + case 178: { FRAG_VERT_ONLY("mat4x2", (yyvsp[(1) - (1)].lex).line); @@ -4155,7 +4259,7 @@ } break; - case 174: + case 179: { FRAG_VERT_ONLY("mat3x4", (yyvsp[(1) - (1)].lex).line); @@ -4165,7 +4269,7 @@ } break; - case 175: + case 180: { FRAG_VERT_ONLY("mat4x3", (yyvsp[(1) - (1)].lex).line); @@ -4175,7 +4279,7 @@ } break; - case 176: + case 181: { FRAG_VERT_ONLY("sampler2D", (yyvsp[(1) - (1)].lex).line); @@ -4184,7 +4288,7 @@ } break; - case 177: + case 182: { FRAG_VERT_ONLY("samplerCube", (yyvsp[(1) - (1)].lex).line); @@ -4193,7 +4297,7 @@ } break; - case 178: + case 183: { if (!context->supportsExtension("GL_OES_EGL_image_external")) { @@ -4206,7 +4310,7 @@ } break; - case 179: + case 184: { FRAG_VERT_ONLY("sampler3D", (yyvsp[(1) - (1)].lex).line); @@ -4215,7 +4319,7 @@ } break; - case 180: + case 185: { FRAG_VERT_ONLY("sampler2DArray", (yyvsp[(1) - (1)].lex).line); @@ -4224,7 +4328,7 @@ } break; - case 181: + case 186: { FRAG_VERT_ONLY("isampler2D", (yyvsp[(1) - (1)].lex).line); @@ -4233,7 +4337,7 @@ } break; - case 182: + case 187: { FRAG_VERT_ONLY("isampler3D", (yyvsp[(1) - (1)].lex).line); @@ -4242,7 +4346,7 @@ } break; - case 183: + case 188: { FRAG_VERT_ONLY("isamplerCube", (yyvsp[(1) - (1)].lex).line); @@ -4251,7 +4355,7 @@ } break; - case 184: + case 189: { FRAG_VERT_ONLY("isampler2DArray", (yyvsp[(1) - (1)].lex).line); @@ -4260,7 +4364,7 @@ } break; - case 185: + case 190: { FRAG_VERT_ONLY("usampler2D", (yyvsp[(1) - (1)].lex).line); @@ -4269,7 +4373,7 @@ } break; - case 186: + case 191: { FRAG_VERT_ONLY("usampler3D", (yyvsp[(1) - (1)].lex).line); @@ -4278,7 +4382,7 @@ } break; - case 187: + case 192: { FRAG_VERT_ONLY("usamplerCube", (yyvsp[(1) - (1)].lex).line); @@ -4287,7 +4391,7 @@ } break; - case 188: + case 193: { FRAG_VERT_ONLY("usampler2DArray", (yyvsp[(1) - (1)].lex).line); @@ -4296,7 +4400,7 @@ } break; - case 189: + case 194: { FRAG_VERT_ONLY("sampler2DShadow", (yyvsp[(1) - (1)].lex).line); @@ -4305,7 +4409,7 @@ } break; - case 190: + case 195: { FRAG_VERT_ONLY("samplerCubeShadow", (yyvsp[(1) - (1)].lex).line); @@ -4314,7 +4418,7 @@ } break; - case 191: + case 196: { FRAG_VERT_ONLY("sampler2DArrayShadow", (yyvsp[(1) - (1)].lex).line); @@ -4323,7 +4427,7 @@ } break; - case 192: + case 197: { FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line); @@ -4332,7 +4436,7 @@ } break; - case 193: + case 198: { // @@ -4346,38 +4450,38 @@ } break; - case 194: + case 199: { if (context->enterStructDeclaration((yyvsp[(2) - (3)].lex).line, *(yyvsp[(2) - (3)].lex).string)) context->recover(); } break; - case 195: + case 200: { (yyval.interm.type) = context->addStructure((yyvsp[(1) - (6)].lex).line, (yyvsp[(2) - (6)].lex).line, (yyvsp[(2) - (6)].lex).string, (yyvsp[(5) - (6)].interm.fieldList)); } break; - case 196: + case 201: { if (context->enterStructDeclaration((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string)) context->recover(); } break; - case 197: + case 202: { (yyval.interm.type) = context->addStructure((yyvsp[(1) - (5)].lex).line, (yyvsp[(1) - (5)].lex).line, NewPoolTString(""), (yyvsp[(4) - (5)].interm.fieldList)); } break; - case 198: + case 203: { (yyval.interm.fieldList) = (yyvsp[(1) - (1)].interm.fieldList); } break; - case 199: + case 204: { (yyval.interm.fieldList) = (yyvsp[(1) - (2)].interm.fieldList); @@ -4394,14 +4498,14 @@ } break; - case 200: + case 205: { (yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[(1) - (3)].interm.type), (yyvsp[(2) - (3)].interm.fieldList)); } break; - case 201: + case 206: { // ES3 Only, but errors should be handled elsewhere @@ -4411,7 +4515,7 @@ } break; - case 202: + case 207: { (yyval.interm.fieldList) = NewPoolTFieldList(); @@ -4419,14 +4523,14 @@ } break; - case 203: + case 208: { (yyval.interm.fieldList)->push_back((yyvsp[(3) - (3)].interm.field)); } break; - case 204: + case 209: { if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string)) @@ -4437,7 +4541,7 @@ } break; - case 205: + case 210: { if (context->reservedErrorCheck((yyvsp[(1) - (4)].lex).line, *(yyvsp[(1) - (4)].lex).string)) @@ -4453,34 +4557,9 @@ } break; - case 206: - - { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } - break; - - case 207: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } - break; - - case 208: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); } - break; - - case 209: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } - break; - - case 210: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } - break; - case 211: - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 212: @@ -4490,7 +4569,7 @@ case 213: - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); } break; case 214: @@ -4500,21 +4579,46 @@ case 215: - { (yyval.interm.intermAggregate) = 0; } + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; case 216: - { context->symbolTable.push(); } + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; case 217: - { context->symbolTable.pop(); } + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; case 218: + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 219: + + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 220: + + { (yyval.interm.intermAggregate) = 0; } + break; + + case 221: + + { context->symbolTable.push(); } + break; + + case 222: + + { context->symbolTable.pop(); } + break; + + case 223: + { if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) { (yyvsp[(3) - (5)].interm.intermAggregate)->setOp(EOpSequence); @@ -4524,44 +4628,44 @@ } break; - case 219: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } - break; - - case 220: - - { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } - break; - - case 221: - - { context->symbolTable.push(); } - break; - - case 222: - - { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } - break; - - case 223: - - { context->symbolTable.push(); } - break; - case 224: - { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; case 225: + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 226: + + { context->symbolTable.push(); } + break; + + case 227: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } + break; + + case 228: + + { context->symbolTable.push(); } + break; + + case 229: + + { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } + break; + + case 230: + { (yyval.interm.intermNode) = 0; } break; - case 226: + case 231: { if ((yyvsp[(2) - (3)].interm.intermAggregate)) { @@ -4572,31 +4676,31 @@ } break; - case 227: + case 232: { (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0); } break; - case 228: + case 233: { (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0); } break; - case 229: + case 234: { (yyval.interm.intermNode) = 0; } break; - case 230: + case 235: { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); } break; - case 231: + case 236: { if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode))) @@ -4605,7 +4709,7 @@ } break; - case 232: + case 237: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); @@ -4613,7 +4717,7 @@ } break; - case 233: + case 238: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); @@ -4621,7 +4725,7 @@ } break; - case 234: + case 239: { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); @@ -4630,7 +4734,7 @@ } break; - case 235: + case 240: { TIntermNode* intermNode; @@ -4648,12 +4752,12 @@ } break; - case 236: + case 241: { context->symbolTable.push(); ++context->loopNestingLevel; } break; - case 237: + case 242: { context->symbolTable.pop(); @@ -4662,12 +4766,12 @@ } break; - case 238: + case 243: { ++context->loopNestingLevel; } break; - case 239: + case 244: { if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode))) @@ -4678,12 +4782,12 @@ } break; - case 240: + case 245: { context->symbolTable.push(); ++context->loopNestingLevel; } break; - case 241: + case 246: { context->symbolTable.pop(); @@ -4692,35 +4796,35 @@ } break; - case 242: + case 247: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 243: + case 248: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 244: + case 249: { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; - case 245: + case 250: { (yyval.interm.intermTypedNode) = 0; } break; - case 246: + case 251: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); @@ -4728,7 +4832,7 @@ } break; - case 247: + case 252: { (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); @@ -4736,7 +4840,7 @@ } break; - case 248: + case 253: { if (context->loopNestingLevel <= 0) { @@ -4747,7 +4851,7 @@ } break; - case 249: + case 254: { if (context->loopNestingLevel <= 0) { @@ -4758,7 +4862,7 @@ } break; - case 250: + case 255: { (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line); @@ -4769,7 +4873,7 @@ } break; - case 251: + case 256: { (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line); @@ -4784,7 +4888,7 @@ } break; - case 252: + case 257: { FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line); @@ -4792,7 +4896,7 @@ } break; - case 253: + case 258: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); @@ -4800,7 +4904,7 @@ } break; - case 254: + case 259: { (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0); @@ -4808,21 +4912,21 @@ } break; - case 255: + case 260: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 256: + case 261: { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 257: + case 262: { TFunction* function = (yyvsp[(1) - (1)].interm).function; @@ -4911,7 +5015,7 @@ } break; - case 258: + case 263: { //?? Check that all paths return a value if return type != void ?