1 /* A Bison parser, made by GNU Bison 3.0.4. */ 2 3 /* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. 6 7 This program is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 /* As a special exception, you may create a larger work that contains 21 part or all of the Bison parser skeleton and distribute that work 22 under terms of your choice, so long as that work isn't itself a 23 parser generator using the skeleton or a modified version thereof 24 as a parser skeleton. Alternatively, if you modify or redistribute 25 the parser skeleton itself, you may (at your option) remove this 26 special exception, which will cause the skeleton and the resulting 27 Bison output files to be licensed under the GNU General Public 28 License without this special exception. 29 30 This special exception was added by the Free Software Foundation in 31 version 2.2 of Bison. */ 32 33 /* C LALR(1) parser skeleton written by Richard Stallman, by 34 simplifying the original so-called "semantic" parser. */ 35 36 /* All symbols defined below should begin with yy or YY, to avoid 37 infringing on user name space. This should be done even for local 38 variables, as they might otherwise be expanded by user macros. 39 There are some unavoidable exceptions within include files to 40 define necessary library symbols; they are noted "INFRINGES ON 41 USER NAME SPACE" below. */ 42 43 /* Identify Bison output. */ 44 #define YYBISON 1 45 46 /* Bison version. */ 47 #define YYBISON_VERSION "3.0.4" 48 49 /* Skeleton name. */ 50 #define YYSKELETON_NAME "yacc.c" 51 52 /* Pure parsers. */ 53 #define YYPURE 1 54 55 /* Push parsers. */ 56 #define YYPUSH 0 57 58 /* Pull parsers. */ 59 #define YYPULL 1 60 61 62 63 64 /* Copy the first part of user declarations. */ 65 66 67 // Copyright 2016 The SwiftShader Authors. All Rights Reserved. 68 // 69 // Licensed under the Apache License, Version 2.0 (the "License"); 70 // you may not use this file except in compliance with the License. 71 // You may obtain a copy of the License at 72 // 73 // http://www.apache.org/licenses/LICENSE-2.0 74 // 75 // Unless required by applicable law or agreed to in writing, software 76 // distributed under the License is distributed on an "AS IS" BASIS, 77 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 78 // See the License for the specific language governing permissions and 79 // limitations under the License. 80 81 // This file is auto-generated by generate_parser.sh. DO NOT EDIT! 82 83 // Ignore errors in auto-generated code. 84 #if defined(__GNUC__) 85 #pragma GCC diagnostic ignored "-Wunused-function" 86 #pragma GCC diagnostic ignored "-Wunused-variable" 87 #pragma GCC diagnostic ignored "-Wswitch-enum" 88 #elif defined(_MSC_VER) 89 #pragma warning(disable: 4065) 90 #pragma warning(disable: 4189) 91 #pragma warning(disable: 4505) 92 #pragma warning(disable: 4701) 93 #endif 94 95 #include "SymbolTable.h" 96 #include "ParseHelper.h" 97 98 #define YYENABLE_NLS 0 99 100 101 102 # ifndef YY_NULLPTR 103 # if defined __cplusplus && 201103L <= __cplusplus 104 # define YY_NULLPTR nullptr 105 # else 106 # define YY_NULLPTR 0 107 # endif 108 # endif 109 110 /* Enabling verbose error messages. */ 111 #ifdef YYERROR_VERBOSE 112 # undef YYERROR_VERBOSE 113 # define YYERROR_VERBOSE 1 114 #else 115 # define YYERROR_VERBOSE 0 116 #endif 117 118 /* In a future release of Bison, this section will be replaced 119 by #include "glslang_tab.h". */ 120 #ifndef YY_YY_GLSLANG_TAB_H_INCLUDED 121 # define YY_YY_GLSLANG_TAB_H_INCLUDED 122 /* Debug traces. */ 123 #ifndef YYDEBUG 124 # define YYDEBUG 0 125 #endif 126 #if YYDEBUG 127 extern int yydebug; 128 #endif 129 /* "%code requires" blocks. */ 130 131 132 #define YYLTYPE TSourceLoc 133 #define YYLTYPE_IS_DECLARED 1 134 135 136 137 /* Token type. */ 138 #ifndef YYTOKENTYPE 139 # define YYTOKENTYPE 140 enum yytokentype 141 { 142 INVARIANT = 258, 143 HIGH_PRECISION = 259, 144 MEDIUM_PRECISION = 260, 145 LOW_PRECISION = 261, 146 PRECISION = 262, 147 ATTRIBUTE = 263, 148 CONST_QUAL = 264, 149 BOOL_TYPE = 265, 150 FLOAT_TYPE = 266, 151 INT_TYPE = 267, 152 UINT_TYPE = 268, 153 BREAK = 269, 154 CONTINUE = 270, 155 DO = 271, 156 ELSE = 272, 157 FOR = 273, 158 IF = 274, 159 DISCARD = 275, 160 RETURN = 276, 161 SWITCH = 277, 162 CASE = 278, 163 DEFAULT = 279, 164 BVEC2 = 280, 165 BVEC3 = 281, 166 BVEC4 = 282, 167 IVEC2 = 283, 168 IVEC3 = 284, 169 IVEC4 = 285, 170 VEC2 = 286, 171 VEC3 = 287, 172 VEC4 = 288, 173 UVEC2 = 289, 174 UVEC3 = 290, 175 UVEC4 = 291, 176 MATRIX2 = 292, 177 MATRIX3 = 293, 178 MATRIX4 = 294, 179 IN_QUAL = 295, 180 OUT_QUAL = 296, 181 INOUT_QUAL = 297, 182 UNIFORM = 298, 183 VARYING = 299, 184 MATRIX2x3 = 300, 185 MATRIX3x2 = 301, 186 MATRIX2x4 = 302, 187 MATRIX4x2 = 303, 188 MATRIX3x4 = 304, 189 MATRIX4x3 = 305, 190 CENTROID = 306, 191 FLAT = 307, 192 SMOOTH = 308, 193 STRUCT = 309, 194 VOID_TYPE = 310, 195 WHILE = 311, 196 SAMPLER2D = 312, 197 SAMPLERCUBE = 313, 198 SAMPLER_EXTERNAL_OES = 314, 199 SAMPLER2DRECT = 315, 200 SAMPLER2DARRAY = 316, 201 ISAMPLER2D = 317, 202 ISAMPLER3D = 318, 203 ISAMPLERCUBE = 319, 204 ISAMPLER2DARRAY = 320, 205 USAMPLER2D = 321, 206 USAMPLER3D = 322, 207 USAMPLERCUBE = 323, 208 USAMPLER2DARRAY = 324, 209 SAMPLER3D = 325, 210 SAMPLER3DRECT = 326, 211 SAMPLER2DSHADOW = 327, 212 SAMPLERCUBESHADOW = 328, 213 SAMPLER2DARRAYSHADOW = 329, 214 LAYOUT = 330, 215 IDENTIFIER = 331, 216 TYPE_NAME = 332, 217 FLOATCONSTANT = 333, 218 INTCONSTANT = 334, 219 UINTCONSTANT = 335, 220 BOOLCONSTANT = 336, 221 FIELD_SELECTION = 337, 222 LEFT_OP = 338, 223 RIGHT_OP = 339, 224 INC_OP = 340, 225 DEC_OP = 341, 226 LE_OP = 342, 227 GE_OP = 343, 228 EQ_OP = 344, 229 NE_OP = 345, 230 AND_OP = 346, 231 OR_OP = 347, 232 XOR_OP = 348, 233 MUL_ASSIGN = 349, 234 DIV_ASSIGN = 350, 235 ADD_ASSIGN = 351, 236 MOD_ASSIGN = 352, 237 LEFT_ASSIGN = 353, 238 RIGHT_ASSIGN = 354, 239 AND_ASSIGN = 355, 240 XOR_ASSIGN = 356, 241 OR_ASSIGN = 357, 242 SUB_ASSIGN = 358, 243 LEFT_PAREN = 359, 244 RIGHT_PAREN = 360, 245 LEFT_BRACKET = 361, 246 RIGHT_BRACKET = 362, 247 LEFT_BRACE = 363, 248 RIGHT_BRACE = 364, 249 DOT = 365, 250 COMMA = 366, 251 COLON = 367, 252 EQUAL = 368, 253 SEMICOLON = 369, 254 BANG = 370, 255 DASH = 371, 256 TILDE = 372, 257 PLUS = 373, 258 STAR = 374, 259 SLASH = 375, 260 PERCENT = 376, 261 LEFT_ANGLE = 377, 262 RIGHT_ANGLE = 378, 263 VERTICAL_BAR = 379, 264 CARET = 380, 265 AMPERSAND = 381, 266 QUESTION = 382 267 }; 268 #endif 269 270 /* Value type. */ 271 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 272 273 union YYSTYPE 274 { 275 276 277 struct { 278 union { 279 TString *string; 280 float f; 281 int i; 282 unsigned int u; 283 bool b; 284 }; 285 TSymbol* symbol; 286 } lex; 287 struct { 288 TOperator op; 289 union { 290 TIntermNode* intermNode; 291 TIntermNodePair nodePair; 292 TIntermTyped* intermTypedNode; 293 TIntermAggregate* intermAggregate; 294 TIntermSwitch* intermSwitch; 295 TIntermCase* intermCase; 296 }; 297 union { 298 TPublicType type; 299 TPrecision precision; 300 TLayoutQualifier layoutQualifier; 301 TQualifier qualifier; 302 TFunction* function; 303 TParameter param; 304 TField* field; 305 TFieldList* fieldList; 306 }; 307 } interm; 308 309 310 }; 311 312 typedef union YYSTYPE YYSTYPE; 313 # define YYSTYPE_IS_TRIVIAL 1 314 # define YYSTYPE_IS_DECLARED 1 315 #endif 316 317 /* Location type. */ 318 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 319 typedef struct YYLTYPE YYLTYPE; 320 struct YYLTYPE 321 { 322 int first_line; 323 int first_column; 324 int last_line; 325 int last_column; 326 }; 327 # define YYLTYPE_IS_DECLARED 1 328 # define YYLTYPE_IS_TRIVIAL 1 329 #endif 330 331 332 333 int yyparse (TParseContext* context, void* yyscanner); 334 335 #endif /* !YY_YY_GLSLANG_TAB_H_INCLUDED */ 336 337 /* Copy the second part of user declarations. */ 338 339 340 extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner); 341 extern void yyerror(YYLTYPE* lloc, TParseContext* context, void* scanner, const char* reason); 342 343 #define YYLLOC_DEFAULT(Current, Rhs, N) \ 344 do { \ 345 if (N) { \ 346 (Current).first_file = YYRHSLOC(Rhs, 1).first_file; \ 347 (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \ 348 (Current).last_file = YYRHSLOC(Rhs, N).last_file; \ 349 (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ 350 } \ 351 else { \ 352 (Current).first_file = YYRHSLOC(Rhs, 0).last_file; \ 353 (Current).first_line = YYRHSLOC(Rhs, 0).last_line; \ 354 (Current).last_file = YYRHSLOC(Rhs, 0).last_file; \ 355 (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \ 356 } \ 357 } while (0) 358 359 #define FRAG_VERT_ONLY(S, L) { \ 360 if (context->getShaderType() != GL_FRAGMENT_SHADER && \ 361 context->getShaderType() != GL_VERTEX_SHADER) { \ 362 context->error(L, " supported in vertex/fragment shaders only ", S); \ 363 context->recover(); \ 364 } \ 365 } 366 367 #define VERTEX_ONLY(S, L) { \ 368 if (context->getShaderType() != GL_VERTEX_SHADER) { \ 369 context->error(L, " supported in vertex shaders only ", S); \ 370 context->recover(); \ 371 } \ 372 } 373 374 #define FRAG_ONLY(S, L) { \ 375 if (context->getShaderType() != GL_FRAGMENT_SHADER) { \ 376 context->error(L, " supported in fragment shaders only ", S); \ 377 context->recover(); \ 378 } \ 379 } 380 381 #define ES2_ONLY(S, L) { \ 382 if (context->getShaderVersion() != 100) { \ 383 context->error(L, " supported in GLSL ES 1.00 only ", S); \ 384 context->recover(); \ 385 } \ 386 } 387 388 #define ES3_ONLY(TOKEN, LINE, REASON) { \ 389 if (context->getShaderVersion() != 300) { \ 390 context->error(LINE, REASON " supported in GLSL ES 3.00 only ", TOKEN); \ 391 context->recover(); \ 392 } \ 393 } 394 395 396 397 #ifdef short 398 # undef short 399 #endif 400 401 #ifdef YYTYPE_UINT8 402 typedef YYTYPE_UINT8 yytype_uint8; 403 #else 404 typedef unsigned char yytype_uint8; 405 #endif 406 407 #ifdef YYTYPE_INT8 408 typedef YYTYPE_INT8 yytype_int8; 409 #else 410 typedef signed char yytype_int8; 411 #endif 412 413 #ifdef YYTYPE_UINT16 414 typedef YYTYPE_UINT16 yytype_uint16; 415 #else 416 typedef unsigned short int yytype_uint16; 417 #endif 418 419 #ifdef YYTYPE_INT16 420 typedef YYTYPE_INT16 yytype_int16; 421 #else 422 typedef short int yytype_int16; 423 #endif 424 425 #ifndef YYSIZE_T 426 # ifdef __SIZE_TYPE__ 427 # define YYSIZE_T __SIZE_TYPE__ 428 # elif defined size_t 429 # define YYSIZE_T size_t 430 # elif ! defined YYSIZE_T 431 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 432 # define YYSIZE_T size_t 433 # else 434 # define YYSIZE_T unsigned int 435 # endif 436 #endif 437 438 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 439 440 #ifndef YY_ 441 # if defined YYENABLE_NLS && YYENABLE_NLS 442 # if ENABLE_NLS 443 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 444 # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 445 # endif 446 # endif 447 # ifndef YY_ 448 # define YY_(Msgid) Msgid 449 # endif 450 #endif 451 452 #ifndef YY_ATTRIBUTE 453 # if (defined __GNUC__ \ 454 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ 455 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C 456 # define YY_ATTRIBUTE(Spec) __attribute__(Spec) 457 # else 458 # define YY_ATTRIBUTE(Spec) /* empty */ 459 # endif 460 #endif 461 462 #ifndef YY_ATTRIBUTE_PURE 463 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) 464 #endif 465 466 #ifndef YY_ATTRIBUTE_UNUSED 467 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) 468 #endif 469 470 #if !defined _Noreturn \ 471 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) 472 # if defined _MSC_VER && 1200 <= _MSC_VER 473 # define _Noreturn __declspec (noreturn) 474 # else 475 # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) 476 # endif 477 #endif 478 479 /* Suppress unused-variable warnings by "using" E. */ 480 #if ! defined lint || defined __GNUC__ 481 # define YYUSE(E) ((void) (E)) 482 #else 483 # define YYUSE(E) /* empty */ 484 #endif 485 486 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 487 /* Suppress an incorrect diagnostic about yylval being uninitialized. */ 488 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 489 _Pragma ("GCC diagnostic push") \ 490 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 491 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 492 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 493 _Pragma ("GCC diagnostic pop") 494 #else 495 # define YY_INITIAL_VALUE(Value) Value 496 #endif 497 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 498 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 499 # define YY_IGNORE_MAYBE_UNINITIALIZED_END 500 #endif 501 #ifndef YY_INITIAL_VALUE 502 # define YY_INITIAL_VALUE(Value) /* Nothing. */ 503 #endif 504 505 506 #if ! defined yyoverflow || YYERROR_VERBOSE 507 508 /* The parser invokes alloca or malloc; define the necessary symbols. */ 509 510 # ifdef YYSTACK_USE_ALLOCA 511 # if YYSTACK_USE_ALLOCA 512 # ifdef __GNUC__ 513 # define YYSTACK_ALLOC __builtin_alloca 514 # elif defined __BUILTIN_VA_ARG_INCR 515 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 516 # elif defined _AIX 517 # define YYSTACK_ALLOC __alloca 518 # elif defined _MSC_VER 519 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 520 # define alloca _alloca 521 # else 522 # define YYSTACK_ALLOC alloca 523 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 524 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 525 /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 526 # ifndef EXIT_SUCCESS 527 # define EXIT_SUCCESS 0 528 # endif 529 # endif 530 # endif 531 # endif 532 # endif 533 534 # ifdef YYSTACK_ALLOC 535 /* Pacify GCC's 'empty if-body' warning. */ 536 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 537 # ifndef YYSTACK_ALLOC_MAXIMUM 538 /* The OS might guarantee only one guard page at the bottom of the stack, 539 and a page size can be as small as 4096 bytes. So we cannot safely 540 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 541 to allow for a few compiler-allocated temporary stack slots. */ 542 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 543 # endif 544 # else 545 # define YYSTACK_ALLOC YYMALLOC 546 # define YYSTACK_FREE YYFREE 547 # ifndef YYSTACK_ALLOC_MAXIMUM 548 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 549 # endif 550 # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 551 && ! ((defined YYMALLOC || defined malloc) \ 552 && (defined YYFREE || defined free))) 553 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 554 # ifndef EXIT_SUCCESS 555 # define EXIT_SUCCESS 0 556 # endif 557 # endif 558 # ifndef YYMALLOC 559 # define YYMALLOC malloc 560 # if ! defined malloc && ! defined EXIT_SUCCESS 561 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 562 # endif 563 # endif 564 # ifndef YYFREE 565 # define YYFREE free 566 # if ! defined free && ! defined EXIT_SUCCESS 567 void free (void *); /* INFRINGES ON USER NAME SPACE */ 568 # endif 569 # endif 570 # endif 571 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 572 573 574 #if (! defined yyoverflow \ 575 && (! defined __cplusplus \ 576 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 577 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 578 579 /* A type that is properly aligned for any stack member. */ 580 union yyalloc 581 { 582 yytype_int16 yyss_alloc; 583 YYSTYPE yyvs_alloc; 584 YYLTYPE yyls_alloc; 585 }; 586 587 /* The size of the maximum gap between one aligned stack and the next. */ 588 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 589 590 /* The size of an array large to enough to hold all stacks, each with 591 N elements. */ 592 # define YYSTACK_BYTES(N) \ 593 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 594 + 2 * YYSTACK_GAP_MAXIMUM) 595 596 # define YYCOPY_NEEDED 1 597 598 /* Relocate STACK from its old location to the new one. The 599 local variables YYSIZE and YYSTACKSIZE give the old and new number of 600 elements in the stack, and YYPTR gives the new location of the 601 stack. Advance YYPTR to a properly aligned location for the next 602 stack. */ 603 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 604 do \ 605 { \ 606 YYSIZE_T yynewbytes; \ 607 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 608 Stack = &yyptr->Stack_alloc; \ 609 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 610 yyptr += yynewbytes / sizeof (*yyptr); \ 611 } \ 612 while (0) 613 614 #endif 615 616 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 617 /* Copy COUNT objects from SRC to DST. The source and destination do 618 not overlap. */ 619 # ifndef YYCOPY 620 # if defined __GNUC__ && 1 < __GNUC__ 621 # define YYCOPY(Dst, Src, Count) \ 622 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 623 # else 624 # define YYCOPY(Dst, Src, Count) \ 625 do \ 626 { \ 627 YYSIZE_T yyi; \ 628 for (yyi = 0; yyi < (Count); yyi++) \ 629 (Dst)[yyi] = (Src)[yyi]; \ 630 } \ 631 while (0) 632 # endif 633 # endif 634 #endif /* !YYCOPY_NEEDED */ 635 636 /* YYFINAL -- State number of the termination state. */ 637 #define YYFINAL 112 638 /* YYLAST -- Last index in YYTABLE. */ 639 #define YYLAST 2525 640 641 /* YYNTOKENS -- Number of terminals. */ 642 #define YYNTOKENS 128 643 /* YYNNTS -- Number of nonterminals. */ 644 #define YYNNTS 93 645 /* YYNRULES -- Number of rules. */ 646 #define YYNRULES 272 647 /* YYNSTATES -- Number of states. */ 648 #define YYNSTATES 413 649 650 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 651 by yylex, with out-of-bounds checking. */ 652 #define YYUNDEFTOK 2 653 #define YYMAXUTOK 382 654 655 #define YYTRANSLATE(YYX) \ 656 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 657 658 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 659 as returned by yylex, without out-of-bounds checking. */ 660 static const yytype_uint8 yytranslate[] = 661 { 662 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 665 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 679 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 680 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 681 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 683 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 687 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 688 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 689 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 690 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 691 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 692 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 693 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 694 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 695 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 696 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 697 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 698 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 699 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 700 125, 126, 127 701 }; 702 703 #if YYDEBUG 704 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 705 static const yytype_uint16 yyrline[] = 706 { 707 0, 229, 229, 248, 251, 256, 261, 266, 271, 277, 708 280, 283, 286, 289, 292, 298, 306, 317, 321, 329, 709 332, 338, 342, 349, 355, 364, 372, 378, 385, 395, 710 398, 401, 404, 414, 415, 416, 417, 425, 426, 430, 711 434, 442, 443, 446, 452, 453, 457, 464, 465, 468, 712 471, 474, 480, 481, 484, 490, 491, 498, 499, 506, 713 507, 514, 515, 521, 522, 528, 529, 535, 536, 542, 714 543, 551, 552, 553, 554, 556, 557, 558, 561, 564, 715 567, 570, 576, 579, 590, 598, 606, 609, 615, 622, 716 626, 630, 634, 641, 647, 650, 657, 665, 686, 712, 717 722, 750, 755, 765, 770, 780, 783, 786, 789, 795, 718 802, 805, 809, 813, 818, 823, 830, 834, 838, 842, 719 847, 852, 856, 863, 873, 879, 882, 888, 894, 901, 720 910, 919, 927, 930, 937, 941, 945, 950, 958, 961, 721 965, 969, 978, 987, 995, 1005, 1017, 1020, 1023, 1029, 722 1036, 1039, 1045, 1048, 1051, 1057, 1060, 1065, 1080, 1084, 723 1088, 1092, 1096, 1100, 1105, 1110, 1115, 1120, 1125, 1130, 724 1135, 1140, 1145, 1150, 1155, 1160, 1166, 1172, 1178, 1184, 725 1190, 1196, 1202, 1208, 1214, 1219, 1224, 1233, 1238, 1243, 726 1248, 1253, 1258, 1263, 1268, 1273, 1278, 1283, 1288, 1293, 727 1298, 1303, 1316, 1316, 1319, 1319, 1325, 1328, 1344, 1347, 728 1356, 1360, 1366, 1373, 1388, 1392, 1396, 1397, 1403, 1404, 729 1405, 1406, 1407, 1408, 1409, 1413, 1414, 1414, 1414, 1424, 730 1425, 1429, 1429, 1430, 1430, 1435, 1438, 1448, 1451, 1457, 731 1458, 1462, 1470, 1474, 1481, 1481, 1488, 1491, 1498, 1503, 732 1518, 1518, 1523, 1523, 1530, 1530, 1538, 1541, 1547, 1550, 733 1556, 1560, 1567, 1570, 1573, 1576, 1579, 1588, 1592, 1599, 734 1602, 1608, 1608 735 }; 736 #endif 737 738 #if YYDEBUG || YYERROR_VERBOSE || 0 739 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 740 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 741 static const char *const yytname[] = 742 { 743 "$end", "error", "$undefined", "INVARIANT", "HIGH_PRECISION", 744 "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "ATTRIBUTE", 745 "CONST_QUAL", "BOOL_TYPE", "FLOAT_TYPE", "INT_TYPE", "UINT_TYPE", 746 "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", 747 "SWITCH", "CASE", "DEFAULT", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", 748 "IVEC4", "VEC2", "VEC3", "VEC4", "UVEC2", "UVEC3", "UVEC4", "MATRIX2", 749 "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM", 750 "VARYING", "MATRIX2x3", "MATRIX3x2", "MATRIX2x4", "MATRIX4x2", 751 "MATRIX3x4", "MATRIX4x3", "CENTROID", "FLAT", "SMOOTH", "STRUCT", 752 "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE", "SAMPLER_EXTERNAL_OES", 753 "SAMPLER2DRECT", "SAMPLER2DARRAY", "ISAMPLER2D", "ISAMPLER3D", 754 "ISAMPLERCUBE", "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D", 755 "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER3D", "SAMPLER3DRECT", 756 "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAYSHADOW", "LAYOUT", 757 "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "INTCONSTANT", 758 "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP", 759 "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", 760 "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", 761 "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", 762 "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", 763 "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", 764 "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", 765 "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", 766 "AMPERSAND", "QUESTION", "$accept", "variable_identifier", 767 "primary_expression", "postfix_expression", "integer_expression", 768 "function_call", "function_call_or_method", "function_call_generic", 769 "function_call_header_no_parameters", 770 "function_call_header_with_parameters", "function_call_header", 771 "function_identifier", "unary_expression", "unary_operator", 772 "multiplicative_expression", "additive_expression", "shift_expression", 773 "relational_expression", "equality_expression", "and_expression", 774 "exclusive_or_expression", "inclusive_or_expression", 775 "logical_and_expression", "logical_xor_expression", 776 "logical_or_expression", "conditional_expression", 777 "assignment_expression", "assignment_operator", "expression", 778 "constant_expression", "enter_struct", "declaration", 779 "function_prototype", "function_declarator", 780 "function_header_with_parameters", "function_header", 781 "parameter_declarator", "parameter_declaration", "parameter_qualifier", 782 "parameter_type_specifier", "init_declarator_list", "single_declaration", 783 "fully_specified_type", "interpolation_qualifier", 784 "parameter_type_qualifier", "type_qualifier", "storage_qualifier", 785 "type_specifier", "precision_qualifier", "layout_qualifier", 786 "layout_qualifier_id_list", "layout_qualifier_id", 787 "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier", 788 "$@1", "$@2", "struct_declaration_list", "struct_declaration", 789 "struct_declarator_list", "struct_declarator", "initializer", 790 "declaration_statement", "statement", "simple_statement", 791 "compound_statement", "$@3", "$@4", "statement_no_new_scope", 792 "statement_with_scope", "$@5", "$@6", "compound_statement_no_new_scope", 793 "statement_list", "expression_statement", "selection_statement", 794 "selection_rest_statement", "switch_statement", "$@7", "case_label", 795 "condition", "iteration_statement", "$@8", "$@9", "$@10", 796 "for_init_statement", "conditionopt", "for_rest_statement", 797 "jump_statement", "translation_unit", "external_declaration", 798 "function_definition", "$@11", YY_NULLPTR 799 }; 800 #endif 801 802 # ifdef YYPRINT 803 /* YYTOKNUM[NUM] -- (External) token number corresponding to the 804 (internal) symbol number NUM (which must be that of a token). */ 805 static const yytype_uint16 yytoknum[] = 806 { 807 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 808 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 809 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 810 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 811 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 812 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 813 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 814 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 815 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 816 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 817 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 818 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 819 375, 376, 377, 378, 379, 380, 381, 382 820 }; 821 # endif 822 823 #define YYPACT_NINF -334 824 825 #define yypact_value_is_default(Yystate) \ 826 (!!((Yystate) == (-334))) 827 828 #define YYTABLE_NINF -232 829 830 #define yytable_value_is_error(Yytable_value) \ 831 0 832 833 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 834 STATE-NUM. */ 835 static const yytype_int16 yypact[] = 836 { 837 2163, 10, -334, -334, -334, 169, -334, -334, -334, -334, 838 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, 839 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, 840 -334, -334, -334, -334, -334, -334, -334, 69, -334, -334, 841 -48, -334, -334, -334, -334, -334, -334, -334, -334, -334, 842 -334, -334, -334, -334, -334, -334, -334, -334, -82, -334, 843 -334, -78, -73, -71, 1, -59, -334, -32, 113, 1182, 844 -334, -334, 2448, 113, -334, -23, -334, 2088, -334, -334, 845 -334, -334, 113, -334, 2448, -334, -334, 11, -334, 9, 846 -334, 20, -334, 121, -334, -334, -334, -334, -334, 2312, 847 150, 22, -334, -79, -334, 37, -334, 2238, -334, -334, 848 -334, 1252, -334, -334, -334, 62, -334, 2238, 44, -41, 849 -334, 410, -334, -334, -334, -334, 105, 2312, -76, -334, 850 1350, 1641, -334, 107, 2312, 117, 1833, -334, 91, -334, 851 -334, -334, -334, -334, 1641, 1641, 1641, -334, -334, -334, 852 -334, -334, -334, -334, 19, -334, -334, -334, 103, -24, 853 1736, 120, -334, 1641, 80, -42, -36, 15, 43, 99, 854 108, 104, 141, 142, -69, -334, 127, -334, -334, 2238, 855 1918, 87, -334, 9, 122, 124, -334, 135, 136, 129, 856 1448, 140, 1641, 133, 143, 137, -334, -334, 118, -334, 857 -334, 12, -334, -78, 145, -334, -334, -334, -334, 526, 858 -334, -334, -334, -334, -334, -334, 144, -334, -334, 1543, 859 1641, 138, 148, -334, -334, 117, 146, 28, -334, -58, 860 -334, -334, -334, -15, -334, -334, 1641, 2380, -334, -334, 861 1641, 154, -334, -334, -334, 1641, 1641, 1641, 1641, 1641, 862 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 863 1641, 1641, 1641, 1641, 1641, -334, 2003, -334, -334, -334, 864 -334, -334, -334, 152, -334, 1641, -334, -334, 41, 1641, 865 149, -334, -334, -334, 642, -334, -334, -334, -334, -334, 866 -334, -334, -334, -334, -334, -334, 1641, 1641, -334, -334, 867 -334, 1641, 151, 155, -334, 1641, 157, 57, 1641, 117, 868 -334, -85, -334, -334, 156, 160, -334, 161, -334, -334, 869 -334, -334, -334, 80, 80, -42, -42, -36, -36, -36, 870 -36, 15, 15, 43, 99, 108, 104, 141, 142, 72, 871 -334, 211, 20, 874, 990, -10, -334, 3, -334, 1087, 872 642, -334, -334, 165, 1641, 163, -334, 1641, -334, 166, 873 -334, 1641, -334, -334, 1641, 164, -334, -334, -334, -334, 874 1087, 152, -334, 160, 198, 2312, 172, 170, -334, -334, 875 1641, -334, -334, 171, -334, 1641, -334, 167, 175, 265, 876 -334, 178, 174, 758, -334, -334, 176, 13, 1641, 758, 877 152, -334, 1641, -334, -334, -334, -334, 177, 160, -334, 878 -334, -334, -334 879 }; 880 881 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 882 Performed when YYTABLE does not specify something else to do. Zero 883 means the default is an error. */ 884 static const yytype_uint16 yydefact[] = 885 { 886 0, 0, 146, 147, 148, 0, 128, 138, 162, 159, 887 160, 161, 166, 167, 168, 169, 170, 171, 163, 164, 888 165, 172, 173, 174, 175, 176, 177, 139, 140, 143, 889 129, 178, 179, 180, 181, 182, 183, 0, 126, 125, 890 0, 158, 184, 185, 186, 188, 189, 190, 191, 192, 891 193, 194, 195, 196, 187, 197, 198, 199, 0, 201, 892 270, 271, 0, 95, 105, 0, 110, 116, 133, 0, 893 131, 123, 0, 134, 144, 155, 200, 0, 267, 269, 894 130, 122, 0, 136, 0, 141, 142, 0, 204, 0, 895 86, 0, 93, 105, 127, 106, 107, 108, 96, 0, 896 105, 0, 87, 117, 132, 0, 92, 0, 124, 145, 897 135, 0, 1, 268, 137, 0, 202, 0, 152, 0, 898 150, 0, 272, 97, 102, 104, 109, 0, 111, 98, 899 0, 0, 85, 0, 0, 0, 0, 206, 2, 6, 900 4, 5, 7, 28, 0, 0, 0, 156, 35, 34, 901 36, 33, 3, 9, 29, 11, 16, 17, 0, 0, 902 22, 0, 37, 0, 41, 44, 47, 52, 55, 57, 903 59, 61, 63, 65, 67, 84, 0, 26, 88, 0, 904 0, 0, 149, 0, 0, 0, 252, 0, 0, 0, 905 0, 0, 0, 0, 0, 226, 235, 239, 37, 69, 906 82, 0, 215, 0, 144, 218, 237, 217, 216, 0, 907 219, 220, 221, 222, 223, 224, 99, 101, 103, 0, 908 0, 0, 0, 214, 121, 0, 212, 0, 210, 0, 909 207, 30, 31, 0, 13, 14, 0, 0, 20, 19, 910 0, 158, 23, 25, 32, 0, 0, 0, 0, 0, 911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912 0, 0, 0, 0, 0, 157, 0, 205, 153, 154, 913 151, 263, 262, 233, 254, 0, 266, 264, 0, 0, 914 0, 247, 250, 225, 0, 72, 73, 75, 74, 77, 915 78, 79, 80, 81, 76, 71, 0, 0, 240, 236, 916 238, 0, 0, 0, 115, 0, 118, 0, 0, 0, 917 208, 0, 89, 8, 0, 15, 27, 12, 18, 24, 918 38, 39, 40, 43, 42, 45, 46, 50, 51, 48, 919 49, 53, 54, 56, 58, 60, 62, 64, 66, 0, 920 203, 0, 0, 0, 0, 0, 265, 0, 246, 0, 921 227, 70, 83, 0, 0, 112, 119, 0, 209, 0, 922 211, 0, 90, 10, 0, 0, 232, 234, 257, 256, 923 259, 233, 244, 248, 0, 0, 0, 0, 100, 113, 924 0, 120, 213, 0, 68, 0, 258, 0, 0, 243, 925 241, 0, 0, 0, 228, 114, 0, 0, 260, 0, 926 233, 245, 0, 230, 251, 229, 91, 0, 261, 255, 927 242, 249, 253 928 }; 929 930 /* YYPGOTO[NTERM-NUM]. */ 931 static const yytype_int16 yypgoto[] = 932 { 933 -334, -334, -334, -334, -334, -334, -334, 46, -334, -334, 934 -334, -334, 66, -334, -46, -44, -67, -34, 30, 33, 935 29, 32, 34, 31, -334, -104, -127, -334, -144, -119, 936 -334, 14, 17, -334, -334, -334, 168, 204, 199, 173, 937 -334, -334, -325, 8, -334, -101, 7, -68, 293, -334, 938 -334, 119, 0, -334, -334, -334, -334, -97, -123, 76, 939 -6, -208, -40, -206, -328, -83, -334, -334, -94, -333, 940 -334, -334, -86, 25, -38, -334, -334, -334, -334, -334, 941 -60, -334, -334, -334, -334, -334, -334, -334, -334, -334, 942 253, -334, -334 943 }; 944 945 /* YYDEFGOTO[NTERM-NUM]. */ 946 static const yytype_int16 yydefgoto[] = 947 { 948 -1, 152, 153, 154, 314, 155, 156, 157, 158, 159, 949 160, 161, 198, 163, 164, 165, 166, 167, 168, 169, 950 170, 171, 172, 173, 174, 199, 200, 296, 201, 176, 951 107, 202, 203, 62, 63, 64, 124, 98, 99, 125, 952 65, 66, 67, 68, 100, 69, 70, 71, 72, 73, 953 119, 120, 177, 75, 76, 179, 117, 136, 137, 227, 954 228, 224, 205, 206, 207, 208, 284, 377, 404, 341, 955 342, 343, 405, 209, 210, 211, 390, 212, 391, 213, 956 376, 214, 349, 273, 344, 370, 387, 388, 215, 77, 957 78, 79, 91 958 }; 959 960 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 961 positive, shift that token. If negative, reduce the rule whose 962 number is the opposite. If YYTABLE_NINF, syntax error. */ 963 static const yytype_int16 yytable[] = 964 { 965 74, 108, 233, 300, 223, 122, 134, 175, 83, 82, 966 94, 222, 304, 230, 60, 367, 134, 61, 311, 7, 967 180, 361, 89, 263, 374, 129, 175, 130, 87, 362, 968 219, 126, 92, 242, 131, 134, 90, 220, 389, 135, 969 93, 95, 96, 97, 103, 374, 278, 250, 251, 135, 970 27, 28, 101, 29, 80, 102, 312, 230, 264, 126, 971 88, 37, 38, 39, 182, 403, 225, 410, 135, 74, 972 183, 403, 109, 280, 248, 104, 249, 74, 134, 134, 973 110, 239, 266, 111, 115, 118, 81, 240, 175, 114, 974 313, 60, 315, 223, 61, 371, 297, 356, 128, 74, 975 303, 297, 252, 253, 234, 235, -94, 74, 372, 85, 976 86, 135, 135, 319, 297, 175, 7, 74, 407, 116, 977 339, 204, 7, 297, 297, 236, 298, 74, 121, 237, 978 94, 345, 256, 257, 74, 347, 74, 254, 255, 309, 979 83, 82, 310, 230, 300, 132, 379, 27, 28, 381, 980 29, 80, 297, 27, 28, 346, 29, 181, 37, 38, 981 39, 95, 96, 97, 37, 134, 268, 269, 309, 351, 982 352, 358, 395, 2, 3, 4, 178, 162, 223, 74, 983 74, 216, 353, 297, 364, 327, 328, 329, 330, 359, 984 95, 96, 97, 226, 411, -27, 162, 175, 135, 245, 985 246, 247, 323, 324, 175, 373, 325, 326, 238, 204, 986 231, 232, 285, 286, 287, 288, 289, 290, 291, 292, 987 293, 294, 331, 332, 243, 258, 373, 223, 260, 244, 988 223, 295, 261, 259, 265, 262, 271, 384, 272, 274, 989 275, 397, 383, 276, 279, 281, 283, 282, 375, -26, 990 301, 305, 308, 223, 408, 306, 366, 175, 162, -21, 991 -231, 348, 355, 363, 354, -28, 74, 365, 385, 375, 992 357, 297, 378, 382, 392, 223, 380, 393, 396, 394, 993 399, 398, 400, 318, 204, 162, 195, 402, 333, 335, 994 406, 412, 334, 336, 338, 217, 337, 123, 84, 127, 995 218, 307, 270, 360, 368, 409, 369, 108, 401, 350, 996 386, 320, 321, 322, 162, 162, 162, 162, 162, 162, 997 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 998 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 999 0, 0, 0, 204, 204, 0, 0, 0, 0, 204, 1000 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1001 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 1002 204, 0, 0, 0, 162, 74, 0, 0, 0, 0, 1003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004 0, 0, 0, 204, 0, 0, 0, 0, 0, 204, 1005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1006 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 1007 8, 9, 10, 11, 184, 185, 186, 162, 187, 188, 1008 189, 190, 191, 192, 193, 12, 13, 14, 15, 16, 1009 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1010 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 1011 36, 37, 38, 39, 40, 41, 194, 42, 43, 44, 1012 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1013 54, 0, 55, 56, 57, 58, 138, 59, 139, 140, 1014 141, 142, 143, 0, 0, 144, 145, 0, 0, 0, 1015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1016 0, 0, 0, 0, 146, 0, 0, 0, 195, 196, 1017 0, 0, 0, 0, 197, 148, 149, 150, 151, 1, 1018 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1019 184, 185, 186, 0, 187, 188, 189, 190, 191, 192, 1020 193, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1021 21, 22, 23, 24, 25, 26, 27, 28, 0, 29, 1022 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1023 40, 41, 194, 42, 43, 44, 0, 45, 46, 47, 1024 48, 49, 50, 51, 52, 53, 54, 0, 55, 56, 1025 57, 58, 138, 59, 139, 140, 141, 142, 143, 0, 1026 0, 144, 145, 0, 0, 0, 0, 0, 0, 0, 1027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1028 146, 0, 0, 0, 195, 299, 0, 0, 0, 0, 1029 197, 148, 149, 150, 151, 1, 2, 3, 4, 5, 1030 6, 7, 8, 9, 10, 11, 184, 185, 186, 0, 1031 187, 188, 189, 190, 191, 192, 193, 12, 13, 14, 1032 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1033 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 1034 34, 35, 36, 37, 38, 39, 40, 41, 194, 42, 1035 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 1036 52, 53, 54, 0, 55, 56, 57, 58, 138, 59, 1037 139, 140, 141, 142, 143, 0, 0, 144, 145, 0, 1038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 1040 195, 0, 0, 0, 0, 0, 197, 148, 149, 150, 1041 151, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1042 10, 11, 184, 185, 186, 0, 187, 188, 189, 190, 1043 191, 192, 193, 12, 13, 14, 15, 16, 17, 18, 1044 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1045 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1046 38, 39, 40, 41, 194, 42, 43, 44, 0, 45, 1047 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1048 55, 56, 57, 58, 138, 59, 139, 140, 141, 142, 1049 143, 0, 0, 144, 145, 0, 0, 0, 0, 0, 1050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1051 0, 0, 146, 0, 0, 0, 121, 0, 0, 0, 1052 0, 0, 197, 148, 149, 150, 151, 1, 2, 3, 1053 4, 5, 6, 7, 8, 9, 10, 11, 184, 185, 1054 186, 0, 187, 188, 189, 190, 191, 192, 193, 12, 1055 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1056 23, 24, 25, 26, 27, 28, 0, 29, 30, 31, 1057 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1058 194, 42, 43, 44, 0, 45, 46, 47, 48, 49, 1059 50, 51, 52, 53, 54, 0, 55, 56, 57, 58, 1060 138, 59, 139, 140, 141, 142, 143, 0, 0, 144, 1061 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1062 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 1063 0, 0, 0, 0, 0, 0, 0, 0, 197, 148, 1064 149, 150, 151, 1, 2, 3, 4, 5, 6, 7, 1065 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 1066 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 1067 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1068 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, 1069 36, 37, 38, 39, 40, 41, 0, 42, 43, 44, 1070 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1071 54, 0, 55, 56, 57, 58, 138, 59, 139, 140, 1072 141, 142, 143, 0, 0, 144, 145, 0, 0, 0, 1073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1074 133, 2, 3, 4, 146, 6, 7, 8, 9, 10, 1075 11, 0, 0, 0, 197, 148, 149, 150, 151, 0, 1076 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 1077 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 1078 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1079 39, 40, 41, 0, 42, 43, 44, 0, 45, 46, 1080 47, 48, 49, 50, 51, 52, 53, 54, 0, 55, 1081 56, 57, 58, 138, 59, 139, 140, 141, 142, 143, 1082 0, 0, 144, 145, 0, 0, 0, 0, 0, 0, 1083 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 1084 0, 146, 8, 9, 10, 11, 0, 0, 0, 0, 1085 0, 0, 148, 149, 150, 151, 0, 12, 13, 14, 1086 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1087 25, 26, 0, 0, 0, 0, 0, 31, 32, 33, 1088 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, 1089 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 1090 52, 53, 54, 0, 55, 56, 57, 0, 105, 59, 1091 0, 0, 8, 9, 10, 11, 0, 0, 0, 0, 1092 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 1093 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1094 25, 26, 0, 0, 0, 0, 106, 31, 32, 33, 1095 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, 1096 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 1097 52, 53, 54, 0, 55, 56, 57, 0, 138, 59, 1098 139, 140, 141, 142, 143, 0, 0, 144, 145, 0, 1099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100 0, 0, 0, 0, 0, 0, 146, 0, 0, 147, 1101 8, 9, 10, 11, 0, 0, 0, 148, 149, 150, 1102 151, 0, 0, 0, 0, 12, 13, 14, 15, 16, 1103 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1104 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, 1105 36, 0, 0, 0, 40, 41, 0, 42, 43, 44, 1106 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1107 54, 0, 55, 56, 57, 0, 138, 59, 139, 140, 1108 141, 142, 143, 0, 0, 144, 145, 0, 0, 0, 1109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1110 0, 0, 0, 0, 146, 0, 0, 221, 8, 9, 1111 10, 11, 0, 0, 0, 148, 149, 150, 151, 0, 1112 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 1113 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 1114 0, 0, 0, 31, 32, 33, 34, 35, 36, 0, 1115 0, 0, 40, 41, 0, 42, 43, 44, 0, 45, 1116 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1117 55, 56, 57, 0, 138, 59, 139, 140, 141, 142, 1118 143, 0, 0, 144, 145, 0, 0, 0, 0, 0, 1119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1120 0, 0, 146, 8, 9, 10, 11, 0, 0, 0, 1121 0, 0, 277, 148, 149, 150, 151, 0, 12, 13, 1122 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1123 24, 25, 26, 0, 0, 0, 0, 0, 31, 32, 1124 33, 34, 35, 36, 0, 0, 0, 40, 41, 0, 1125 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 1126 51, 52, 53, 54, 0, 55, 56, 57, 0, 138, 1127 59, 139, 140, 141, 142, 143, 0, 0, 144, 145, 1128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1129 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 1130 302, 8, 9, 10, 11, 0, 0, 0, 148, 149, 1131 150, 151, 0, 0, 0, 0, 12, 13, 14, 15, 1132 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 1133 26, 0, 0, 0, 0, 0, 31, 32, 33, 34, 1134 35, 36, 0, 0, 0, 40, 41, 0, 42, 43, 1135 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 1136 53, 54, 0, 55, 56, 57, 0, 138, 59, 139, 1137 140, 141, 142, 143, 0, 0, 144, 145, 0, 0, 1138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1139 0, 0, 0, 0, 0, 146, 8, 9, 10, 11, 1140 0, 0, 0, 0, 0, 0, 148, 149, 150, 151, 1141 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1142 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 1143 0, 31, 32, 33, 34, 35, 36, 0, 0, 0, 1144 40, 241, 0, 42, 43, 44, 0, 45, 46, 47, 1145 48, 49, 50, 51, 52, 53, 54, 0, 55, 56, 1146 57, 0, 138, 59, 139, 140, 141, 142, 143, 0, 1147 0, 144, 145, 0, 0, 0, 0, 0, 0, 0, 1148 0, 0, 0, 0, 0, 0, 133, 2, 3, 4, 1149 146, 6, 7, 8, 9, 10, 11, 0, 0, 0, 1150 0, 148, 149, 150, 151, 0, 0, 0, 12, 13, 1151 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1152 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 1153 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 1154 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 1155 51, 52, 53, 54, 0, 55, 56, 57, 58, 0, 1156 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157 0, 133, 2, 3, 4, 0, 6, 7, 8, 9, 1158 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1159 0, 0, 229, 12, 13, 14, 15, 16, 17, 18, 1160 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1161 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1162 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, 1163 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1164 55, 56, 57, 58, 0, 59, 0, 0, 0, 0, 1165 0, 0, 0, 0, 0, 0, 133, 2, 3, 4, 1166 0, 6, 7, 8, 9, 10, 11, 0, 0, 0, 1167 0, 0, 0, 0, 0, 0, 0, 267, 12, 13, 1168 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1169 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 1170 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 1171 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 1172 51, 52, 53, 54, 0, 55, 56, 57, 58, 0, 1173 59, 0, 0, 0, 0, 0, 0, 0, 112, 0, 1174 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1175 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1176 0, 0, 340, 12, 13, 14, 15, 16, 17, 18, 1177 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1178 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1179 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, 1180 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1181 55, 56, 57, 58, 0, 59, 1, 2, 3, 4, 1182 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 1183 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1184 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1185 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 1186 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 1187 42, 43, 44, 0, 45, 46, 47, 48, 49, 50, 1188 51, 52, 53, 54, 0, 55, 56, 57, 58, 0, 1189 59, 133, 2, 3, 4, 0, 6, 7, 8, 9, 1190 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1191 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 1192 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1193 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1194 38, 39, 40, 41, 0, 42, 43, 44, 0, 45, 1195 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1196 55, 56, 57, 58, 0, 59, 2, 3, 4, 0, 1197 0, 0, 8, 9, 10, 11, 0, 0, 0, 0, 1198 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 1199 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1200 25, 26, 0, 0, 0, 0, 0, 31, 32, 33, 1201 34, 35, 36, 0, 0, 0, 40, 41, 0, 42, 1202 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 1203 52, 53, 54, 0, 55, 56, 57, 0, 0, 59, 1204 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 1205 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 1206 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1207 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, 1208 36, 0, 0, 0, 40, 41, 0, 42, 43, 44, 1209 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1210 54, 0, 55, 56, 57, 0, 316, 59, 8, 9, 1211 10, 11, 317, 0, 0, 0, 0, 0, 0, 0, 1212 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 1213 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 1214 0, 0, 0, 31, 32, 33, 34, 35, 36, 0, 1215 0, 0, 40, 41, 0, 42, 43, 44, 0, 45, 1216 46, 47, 48, 49, 50, 51, 52, 53, 54, 0, 1217 55, 56, 57, 0, 0, 59 1218 }; 1219 1220 static const yytype_int16 yycheck[] = 1221 { 1222 0, 69, 146, 209, 131, 91, 107, 111, 1, 1, 1223 9, 130, 220, 136, 0, 343, 117, 0, 76, 9, 1224 117, 106, 104, 92, 349, 104, 130, 106, 76, 114, 1225 106, 99, 105, 160, 113, 136, 114, 113, 371, 107, 1226 111, 40, 41, 42, 76, 370, 190, 83, 84, 117, 1227 40, 41, 111, 43, 44, 114, 114, 180, 127, 127, 1228 108, 51, 52, 53, 105, 393, 134, 400, 136, 69, 1229 111, 399, 72, 192, 116, 68, 118, 77, 179, 180, 1230 73, 105, 179, 106, 84, 76, 76, 111, 192, 82, 1231 105, 77, 236, 220, 77, 105, 111, 305, 76, 99, 1232 219, 111, 87, 88, 85, 86, 105, 107, 105, 40, 1233 41, 179, 180, 240, 111, 219, 9, 117, 105, 108, 1234 264, 121, 9, 111, 111, 106, 114, 127, 108, 110, 1235 9, 275, 89, 90, 134, 279, 136, 122, 123, 111, 1236 133, 133, 114, 266, 350, 108, 354, 40, 41, 357, 1237 43, 44, 111, 40, 41, 114, 43, 113, 51, 52, 1238 53, 40, 41, 42, 51, 266, 79, 80, 111, 296, 1239 297, 114, 380, 4, 5, 6, 114, 111, 305, 179, 1240 180, 76, 301, 111, 112, 252, 253, 254, 255, 308, 1241 40, 41, 42, 76, 402, 104, 130, 301, 266, 119, 1242 120, 121, 248, 249, 308, 349, 250, 251, 105, 209, 1243 144, 145, 94, 95, 96, 97, 98, 99, 100, 101, 1244 102, 103, 256, 257, 104, 126, 370, 354, 124, 163, 1245 357, 113, 91, 125, 107, 93, 114, 364, 114, 104, 1246 104, 385, 361, 114, 104, 112, 109, 104, 349, 104, 1247 106, 113, 106, 380, 398, 107, 342, 361, 192, 105, 1248 108, 112, 107, 107, 113, 104, 266, 56, 104, 370, 1249 113, 111, 107, 107, 76, 402, 113, 105, 107, 109, 1250 105, 114, 17, 237, 284, 219, 108, 113, 258, 260, 1251 114, 114, 259, 261, 263, 127, 262, 93, 5, 100, 1252 127, 225, 183, 309, 344, 399, 344, 375, 391, 284, 1253 370, 245, 246, 247, 248, 249, 250, 251, 252, 253, 1254 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 1255 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1256 -1, -1, -1, 343, 344, -1, -1, -1, -1, 349, 1257 350, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1258 -1, -1, -1, -1, -1, -1, -1, 301, -1, -1, 1259 370, -1, -1, -1, 308, 375, -1, -1, -1, -1, 1260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1261 -1, -1, -1, 393, -1, -1, -1, -1, -1, 399, 1262 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1263 -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 1264 10, 11, 12, 13, 14, 15, 16, 361, 18, 19, 1265 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 1266 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1267 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 1268 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 1269 -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1270 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, 1271 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, 1272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1273 -1, -1, -1, -1, 104, -1, -1, -1, 108, 109, 1274 -1, -1, -1, -1, 114, 115, 116, 117, 118, 3, 1275 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1276 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, 1277 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1278 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 1279 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1280 54, 55, 56, 57, 58, 59, -1, 61, 62, 63, 1281 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 1282 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, 1283 -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 1284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1285 104, -1, -1, -1, 108, 109, -1, -1, -1, -1, 1286 114, 115, 116, 117, 118, 3, 4, 5, 6, 7, 1287 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 1288 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 1289 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1290 38, 39, 40, 41, -1, 43, 44, 45, 46, 47, 1291 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 1292 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 1293 68, 69, 70, -1, 72, 73, 74, 75, 76, 77, 1294 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, 1295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1296 -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, 1297 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 1298 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1299 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 1300 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1301 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1302 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1303 52, 53, 54, 55, 56, 57, 58, 59, -1, 61, 1304 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1305 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 1306 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, 1307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1308 -1, -1, 104, -1, -1, -1, 108, -1, -1, -1, 1309 -1, -1, 114, 115, 116, 117, 118, 3, 4, 5, 1310 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1311 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 1312 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 1313 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 1314 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 1315 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, 1316 66, 67, 68, 69, 70, -1, 72, 73, 74, 75, 1317 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 1318 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1319 -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 1320 -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, 1321 116, 117, 118, 3, 4, 5, 6, 7, 8, 9, 1322 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, 1323 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, 1324 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1325 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 1326 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 1327 -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1328 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, 1329 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, 1330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1331 3, 4, 5, 6, 104, 8, 9, 10, 11, 12, 1332 13, -1, -1, -1, 114, 115, 116, 117, 118, -1, 1333 -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, 1334 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 1335 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 1336 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, 1337 63, 64, 65, 66, 67, 68, 69, 70, -1, 72, 1338 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 1339 -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, 1340 -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, 1341 -1, 104, 10, 11, 12, 13, -1, -1, -1, -1, 1342 -1, -1, 115, 116, 117, 118, -1, 25, 26, 27, 1343 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1344 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, 1345 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, 1346 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 1347 68, 69, 70, -1, 72, 73, 74, -1, 76, 77, 1348 -1, -1, 10, 11, 12, 13, -1, -1, -1, -1, 1349 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, 1350 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1351 38, 39, -1, -1, -1, -1, 114, 45, 46, 47, 1352 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, 1353 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 1354 68, 69, 70, -1, 72, 73, 74, -1, 76, 77, 1355 78, 79, 80, 81, 82, -1, -1, 85, 86, -1, 1356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1357 -1, -1, -1, -1, -1, -1, 104, -1, -1, 107, 1358 10, 11, 12, 13, -1, -1, -1, 115, 116, 117, 1359 118, -1, -1, -1, -1, 25, 26, 27, 28, 29, 1360 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1361 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 1362 50, -1, -1, -1, 54, 55, -1, 57, 58, 59, 1363 -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1364 70, -1, 72, 73, 74, -1, 76, 77, 78, 79, 1365 80, 81, 82, -1, -1, 85, 86, -1, -1, -1, 1366 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1367 -1, -1, -1, -1, 104, -1, -1, 107, 10, 11, 1368 12, 13, -1, -1, -1, 115, 116, 117, 118, -1, 1369 -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 1370 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, 1371 -1, -1, -1, 45, 46, 47, 48, 49, 50, -1, 1372 -1, -1, 54, 55, -1, 57, 58, 59, -1, 61, 1373 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1374 72, 73, 74, -1, 76, 77, 78, 79, 80, 81, 1375 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, 1376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1377 -1, -1, 104, 10, 11, 12, 13, -1, -1, -1, 1378 -1, -1, 114, 115, 116, 117, 118, -1, 25, 26, 1379 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1380 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, 1381 47, 48, 49, 50, -1, -1, -1, 54, 55, -1, 1382 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 1383 67, 68, 69, 70, -1, 72, 73, 74, -1, 76, 1384 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 1385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1386 -1, -1, -1, -1, -1, -1, -1, 104, -1, -1, 1387 107, 10, 11, 12, 13, -1, -1, -1, 115, 116, 1388 117, 118, -1, -1, -1, -1, 25, 26, 27, 28, 1389 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1390 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, 1391 49, 50, -1, -1, -1, 54, 55, -1, 57, 58, 1392 59, -1, 61, 62, 63, 64, 65, 66, 67, 68, 1393 69, 70, -1, 72, 73, 74, -1, 76, 77, 78, 1394 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, 1395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1396 -1, -1, -1, -1, -1, 104, 10, 11, 12, 13, 1397 -1, -1, -1, -1, -1, -1, 115, 116, 117, 118, 1398 -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1399 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, 1400 -1, 45, 46, 47, 48, 49, 50, -1, -1, -1, 1401 54, 55, -1, 57, 58, 59, -1, 61, 62, 63, 1402 64, 65, 66, 67, 68, 69, 70, -1, 72, 73, 1403 74, -1, 76, 77, 78, 79, 80, 81, 82, -1, 1404 -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 1405 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 1406 104, 8, 9, 10, 11, 12, 13, -1, -1, -1, 1407 -1, 115, 116, 117, 118, -1, -1, -1, 25, 26, 1408 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1409 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 1410 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 1411 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 1412 67, 68, 69, 70, -1, 72, 73, 74, 75, -1, 1413 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1414 -1, 3, 4, 5, 6, -1, 8, 9, 10, 11, 1415 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 1416 -1, -1, 109, 25, 26, 27, 28, 29, 30, 31, 1417 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1418 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1419 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 1420 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1421 72, 73, 74, 75, -1, 77, -1, -1, -1, -1, 1422 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 1423 -1, 8, 9, 10, 11, 12, 13, -1, -1, -1, 1424 -1, -1, -1, -1, -1, -1, -1, 109, 25, 26, 1425 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1426 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 1427 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 1428 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 1429 67, 68, 69, 70, -1, 72, 73, 74, 75, -1, 1430 77, -1, -1, -1, -1, -1, -1, -1, 0, -1, 1431 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1432 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 1433 -1, -1, 109, 25, 26, 27, 28, 29, 30, 31, 1434 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1435 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1436 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 1437 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1438 72, 73, 74, 75, -1, 77, 3, 4, 5, 6, 1439 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, 1440 -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, 1441 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1442 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, 1443 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 1444 57, 58, 59, -1, 61, 62, 63, 64, 65, 66, 1445 67, 68, 69, 70, -1, 72, 73, 74, 75, -1, 1446 77, 3, 4, 5, 6, -1, 8, 9, 10, 11, 1447 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 1448 -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 1449 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1450 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 1451 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, 1452 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1453 72, 73, 74, 75, -1, 77, 4, 5, 6, -1, 1454 -1, -1, 10, 11, 12, 13, -1, -1, -1, -1, 1455 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, 1456 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1457 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, 1458 48, 49, 50, -1, -1, -1, 54, 55, -1, 57, 1459 58, 59, -1, 61, 62, 63, 64, 65, 66, 67, 1460 68, 69, 70, -1, 72, 73, 74, -1, -1, 77, 1461 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, 1462 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29, 1463 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1464 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 1465 50, -1, -1, -1, 54, 55, -1, 57, 58, 59, 1466 -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, 1467 70, -1, 72, 73, 74, -1, 76, 77, 10, 11, 1468 12, 13, 82, -1, -1, -1, -1, -1, -1, -1, 1469 -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 1470 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, 1471 -1, -1, -1, 45, 46, 47, 48, 49, 50, -1, 1472 -1, -1, 54, 55, -1, 57, 58, 59, -1, 61, 1473 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, 1474 72, 73, 74, -1, -1, 77 1475 }; 1476 1477 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1478 symbol of state STATE-NUM. */ 1479 static const yytype_uint8 yystos[] = 1480 { 1481 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1482 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 1483 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 1484 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1485 54, 55, 57, 58, 59, 61, 62, 63, 64, 65, 1486 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 1487 159, 160, 161, 162, 163, 168, 169, 170, 171, 173, 1488 174, 175, 176, 177, 180, 181, 182, 217, 218, 219, 1489 44, 76, 171, 174, 176, 40, 41, 76, 108, 104, 1490 114, 220, 105, 111, 9, 40, 41, 42, 165, 166, 1491 172, 111, 114, 76, 174, 76, 114, 158, 175, 180, 1492 174, 106, 0, 218, 174, 180, 108, 184, 76, 178, 1493 179, 108, 200, 165, 164, 167, 175, 166, 76, 104, 1494 106, 113, 108, 3, 173, 175, 185, 186, 76, 78, 1495 79, 80, 81, 82, 85, 86, 104, 107, 115, 116, 1496 117, 118, 129, 130, 131, 133, 134, 135, 136, 137, 1497 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 1498 148, 149, 150, 151, 152, 153, 157, 180, 114, 183, 1499 185, 113, 105, 111, 14, 15, 16, 18, 19, 20, 1500 21, 22, 23, 24, 56, 108, 109, 114, 140, 153, 1501 154, 156, 159, 160, 180, 190, 191, 192, 193, 201, 1502 202, 203, 205, 207, 209, 216, 76, 164, 167, 106, 1503 113, 107, 157, 154, 189, 175, 76, 187, 188, 109, 1504 186, 140, 140, 156, 85, 86, 106, 110, 105, 105, 1505 111, 55, 154, 104, 140, 119, 120, 121, 116, 118, 1506 83, 84, 87, 88, 122, 123, 89, 90, 126, 125, 1507 124, 91, 93, 92, 127, 107, 185, 109, 79, 80, 1508 179, 114, 114, 211, 104, 104, 114, 114, 156, 104, 1509 157, 112, 104, 109, 194, 94, 95, 96, 97, 98, 1510 99, 100, 101, 102, 103, 113, 155, 111, 114, 109, 1511 191, 106, 107, 157, 189, 113, 107, 187, 106, 111, 1512 114, 76, 114, 105, 132, 156, 76, 82, 135, 154, 1513 140, 140, 140, 142, 142, 143, 143, 144, 144, 144, 1514 144, 145, 145, 146, 147, 148, 149, 150, 151, 156, 1515 109, 197, 198, 199, 212, 156, 114, 156, 112, 210, 1516 201, 154, 154, 157, 113, 107, 189, 113, 114, 157, 1517 188, 106, 114, 107, 112, 56, 200, 192, 190, 202, 1518 213, 105, 105, 156, 170, 173, 208, 195, 107, 189, 1519 113, 189, 107, 157, 154, 104, 208, 214, 215, 197, 1520 204, 206, 76, 105, 109, 189, 107, 156, 114, 105, 1521 17, 193, 113, 192, 196, 200, 114, 105, 156, 196, 1522 197, 189, 114 1523 }; 1524 1525 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1526 static const yytype_uint8 yyr1[] = 1527 { 1528 0, 128, 129, 130, 130, 130, 130, 130, 130, 131, 1529 131, 131, 131, 131, 131, 132, 133, 134, 134, 135, 1530 135, 136, 136, 137, 137, 138, 139, 139, 139, 140, 1531 140, 140, 140, 141, 141, 141, 141, 142, 142, 142, 1532 142, 143, 143, 143, 144, 144, 144, 145, 145, 145, 1533 145, 145, 146, 146, 146, 147, 147, 148, 148, 149, 1534 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, 1535 154, 155, 155, 155, 155, 155, 155, 155, 155, 155, 1536 155, 155, 156, 156, 157, 158, 159, 159, 159, 159, 1537 159, 159, 159, 160, 161, 161, 162, 162, 163, 164, 1538 164, 165, 165, 165, 165, 166, 166, 166, 166, 167, 1539 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, 1540 169, 169, 169, 170, 170, 171, 171, 172, 173, 173, 1541 173, 173, 173, 173, 173, 173, 173, 173, 174, 174, 1542 174, 174, 174, 174, 175, 175, 176, 176, 176, 177, 1543 178, 178, 179, 179, 179, 180, 180, 180, 181, 181, 1544 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 1545 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 1546 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 1547 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 1548 181, 181, 183, 182, 184, 182, 185, 185, 186, 186, 1549 187, 187, 188, 188, 189, 190, 191, 191, 192, 192, 1550 192, 192, 192, 192, 192, 193, 194, 195, 193, 196, 1551 196, 198, 197, 199, 197, 200, 200, 201, 201, 202, 1552 202, 203, 204, 204, 206, 205, 207, 207, 208, 208, 1553 210, 209, 211, 209, 212, 209, 213, 213, 214, 214, 1554 215, 215, 216, 216, 216, 216, 216, 217, 217, 218, 1555 218, 220, 219 1556 }; 1557 1558 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ 1559 static const yytype_uint8 yyr2[] = 1560 { 1561 0, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1562 4, 1, 3, 2, 2, 1, 1, 1, 3, 2, 1563 2, 2, 1, 2, 3, 2, 1, 1, 1, 1, 1564 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 1565 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1566 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 1567 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1568 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1569 1, 1, 1, 3, 1, 2, 2, 2, 4, 5, 1570 6, 9, 2, 2, 1, 1, 2, 3, 3, 2, 1571 5, 3, 2, 3, 2, 0, 1, 1, 1, 1, 1572 1, 3, 6, 7, 8, 5, 1, 2, 5, 6, 1573 7, 4, 2, 1, 2, 1, 1, 1, 1, 1, 1574 2, 1, 2, 1, 1, 2, 2, 3, 1, 1, 1575 1, 2, 2, 1, 1, 2, 1, 1, 1, 4, 1576 1, 3, 1, 3, 3, 1, 3, 4, 1, 1, 1577 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1578 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1579 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1580 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1581 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, 1582 1, 3, 1, 4, 1, 1, 1, 1, 1, 1, 1583 1, 1, 1, 1, 1, 2, 0, 0, 5, 1, 1584 1, 0, 2, 0, 2, 2, 3, 1, 2, 1, 1585 2, 5, 3, 1, 0, 6, 3, 2, 1, 4, 1586 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, 1587 2, 3, 2, 2, 2, 3, 2, 1, 2, 1, 1588 1, 0, 3 1589 }; 1590 1591 1592 #define yyerrok (yyerrstatus = 0) 1593 #define yyclearin (yychar = YYEMPTY) 1594 #define YYEMPTY (-2) 1595 #define YYEOF 0 1596 1597 #define YYACCEPT goto yyacceptlab 1598 #define YYABORT goto yyabortlab 1599 #define YYERROR goto yyerrorlab 1600 1601 1602 #define YYRECOVERING() (!!yyerrstatus) 1603 1604 #define YYBACKUP(Token, Value) \ 1605 do \ 1606 if (yychar == YYEMPTY) \ 1607 { \ 1608 yychar = (Token); \ 1609 yylval = (Value); \ 1610 YYPOPSTACK (yylen); \ 1611 yystate = *yyssp; \ 1612 goto yybackup; \ 1613 } \ 1614 else \ 1615 { \ 1616 yyerror (&yylloc, context, yyscanner, YY_("syntax error: cannot back up")); \ 1617 YYERROR; \ 1618 } \ 1619 while (0) 1620 1621 /* Error token number */ 1622 #define YYTERROR 1 1623 #define YYERRCODE 256 1624 1625 1626 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1627 If N is 0, then set CURRENT to the empty location which ends 1628 the previous symbol: RHS[0] (always defined). */ 1629 1630 #ifndef YYLLOC_DEFAULT 1631 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1632 do \ 1633 if (N) \ 1634 { \ 1635 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1636 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1637 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1638 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1639 } \ 1640 else \ 1641 { \ 1642 (Current).first_line = (Current).last_line = \ 1643 YYRHSLOC (Rhs, 0).last_line; \ 1644 (Current).first_column = (Current).last_column = \ 1645 YYRHSLOC (Rhs, 0).last_column; \ 1646 } \ 1647 while (0) 1648 #endif 1649 1650 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1651 1652 1653 /* Enable debugging if requested. */ 1654 #if YYDEBUG 1655 1656 # ifndef YYFPRINTF 1657 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1658 # define YYFPRINTF fprintf 1659 # endif 1660 1661 # define YYDPRINTF(Args) \ 1662 do { \ 1663 if (yydebug) \ 1664 YYFPRINTF Args; \ 1665 } while (0) 1666 1667 1668 /* YY_LOCATION_PRINT -- Print the location on the stream. 1669 This macro was not mandated originally: define only if we know 1670 we won't break user code: when these are the locations we know. */ 1671 1672 #ifndef YY_LOCATION_PRINT 1673 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1674 1675 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ 1676 1677 YY_ATTRIBUTE_UNUSED 1678 static unsigned 1679 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) 1680 { 1681 unsigned res = 0; 1682 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; 1683 if (0 <= yylocp->first_line) 1684 { 1685 res += YYFPRINTF (yyo, "%d", yylocp->first_line); 1686 if (0 <= yylocp->first_column) 1687 res += YYFPRINTF (yyo, ".%d", yylocp->first_column); 1688 } 1689 if (0 <= yylocp->last_line) 1690 { 1691 if (yylocp->first_line < yylocp->last_line) 1692 { 1693 res += YYFPRINTF (yyo, "-%d", yylocp->last_line); 1694 if (0 <= end_col) 1695 res += YYFPRINTF (yyo, ".%d", end_col); 1696 } 1697 else if (0 <= end_col && yylocp->first_column < end_col) 1698 res += YYFPRINTF (yyo, "-%d", end_col); 1699 } 1700 return res; 1701 } 1702 1703 # define YY_LOCATION_PRINT(File, Loc) \ 1704 yy_location_print_ (File, &(Loc)) 1705 1706 # else 1707 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1708 # endif 1709 #endif 1710 1711 1712 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1713 do { \ 1714 if (yydebug) \ 1715 { \ 1716 YYFPRINTF (stderr, "%s ", Title); \ 1717 yy_symbol_print (stderr, \ 1718 Type, Value, Location, context, yyscanner); \ 1719 YYFPRINTF (stderr, "\n"); \ 1720 } \ 1721 } while (0) 1722 1723 1724 /*----------------------------------------. 1725 | Print this symbol's value on YYOUTPUT. | 1726 `----------------------------------------*/ 1727 1728 static void 1729 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, TParseContext* context, void* yyscanner) 1730 { 1731 FILE *yyo = yyoutput; 1732 YYUSE (yyo); 1733 YYUSE (yylocationp); 1734 YYUSE (context); 1735 YYUSE (yyscanner); 1736 if (!yyvaluep) 1737 return; 1738 # ifdef YYPRINT 1739 if (yytype < YYNTOKENS) 1740 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1741 # endif 1742 YYUSE (yytype); 1743 } 1744 1745 1746 /*--------------------------------. 1747 | Print this symbol on YYOUTPUT. | 1748 `--------------------------------*/ 1749 1750 static void 1751 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, TParseContext* context, void* yyscanner) 1752 { 1753 YYFPRINTF (yyoutput, "%s %s (", 1754 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); 1755 1756 YY_LOCATION_PRINT (yyoutput, *yylocationp); 1757 YYFPRINTF (yyoutput, ": "); 1758 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, context, yyscanner); 1759 YYFPRINTF (yyoutput, ")"); 1760 } 1761 1762 /*------------------------------------------------------------------. 1763 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1764 | TOP (included). | 1765 `------------------------------------------------------------------*/ 1766 1767 static void 1768 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1769 { 1770 YYFPRINTF (stderr, "Stack now"); 1771 for (; yybottom <= yytop; yybottom++) 1772 { 1773 int yybot = *yybottom; 1774 YYFPRINTF (stderr, " %d", yybot); 1775 } 1776 YYFPRINTF (stderr, "\n"); 1777 } 1778 1779 # define YY_STACK_PRINT(Bottom, Top) \ 1780 do { \ 1781 if (yydebug) \ 1782 yy_stack_print ((Bottom), (Top)); \ 1783 } while (0) 1784 1785 1786 /*------------------------------------------------. 1787 | Report that the YYRULE is going to be reduced. | 1788 `------------------------------------------------*/ 1789 1790 static void 1791 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, TParseContext* context, void* yyscanner) 1792 { 1793 unsigned long int yylno = yyrline[yyrule]; 1794 int yynrhs = yyr2[yyrule]; 1795 int yyi; 1796 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1797 yyrule - 1, yylno); 1798 /* The symbols being reduced. */ 1799 for (yyi = 0; yyi < yynrhs; yyi++) 1800 { 1801 YYFPRINTF (stderr, " $%d = ", yyi + 1); 1802 yy_symbol_print (stderr, 1803 yystos[yyssp[yyi + 1 - yynrhs]], 1804 &(yyvsp[(yyi + 1) - (yynrhs)]) 1805 , &(yylsp[(yyi + 1) - (yynrhs)]) , context, yyscanner); 1806 YYFPRINTF (stderr, "\n"); 1807 } 1808 } 1809 1810 # define YY_REDUCE_PRINT(Rule) \ 1811 do { \ 1812 if (yydebug) \ 1813 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, context, yyscanner); \ 1814 } while (0) 1815 1816 /* Nonzero means print parse trace. It is left uninitialized so that 1817 multiple parsers can coexist. */ 1818 int yydebug; 1819 #else /* !YYDEBUG */ 1820 # define YYDPRINTF(Args) 1821 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1822 # define YY_STACK_PRINT(Bottom, Top) 1823 # define YY_REDUCE_PRINT(Rule) 1824 #endif /* !YYDEBUG */ 1825 1826 1827 /* YYINITDEPTH -- initial size of the parser's stacks. */ 1828 #ifndef YYINITDEPTH 1829 # define YYINITDEPTH 200 1830 #endif 1831 1832 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1833 if the built-in stack extension method is used). 1834 1835 Do not make this value too large; the results are undefined if 1836 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1837 evaluated with infinite-precision integer arithmetic. */ 1838 1839 #ifndef YYMAXDEPTH 1840 # define YYMAXDEPTH 10000 1841 #endif 1842 1843 1844 #if YYERROR_VERBOSE 1845 1846 # ifndef yystrlen 1847 # if defined __GLIBC__ && defined _STRING_H 1848 # define yystrlen strlen 1849 # else 1850 /* Return the length of YYSTR. */ 1851 static YYSIZE_T 1852 yystrlen (const char *yystr) 1853 { 1854 YYSIZE_T yylen; 1855 for (yylen = 0; yystr[yylen]; yylen++) 1856 continue; 1857 return yylen; 1858 } 1859 # endif 1860 # endif 1861 1862 # ifndef yystpcpy 1863 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1864 # define yystpcpy stpcpy 1865 # else 1866 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1867 YYDEST. */ 1868 static char * 1869 yystpcpy (char *yydest, const char *yysrc) 1870 { 1871 char *yyd = yydest; 1872 const char *yys = yysrc; 1873 1874 while ((*yyd++ = *yys++) != '\0') 1875 continue; 1876 1877 return yyd - 1; 1878 } 1879 # endif 1880 # endif 1881 1882 # ifndef yytnamerr 1883 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1884 quotes and backslashes, so that it's suitable for yyerror. The 1885 heuristic is that double-quoting is unnecessary unless the string 1886 contains an apostrophe, a comma, or backslash (other than 1887 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1888 null, do not copy; instead, return the length of what the result 1889 would have been. */ 1890 static YYSIZE_T 1891 yytnamerr (char *yyres, const char *yystr) 1892 { 1893 if (*yystr == '"') 1894 { 1895 YYSIZE_T yyn = 0; 1896 char const *yyp = yystr; 1897 1898 for (;;) 1899 switch (*++yyp) 1900 { 1901 case '\'': 1902 case ',': 1903 goto do_not_strip_quotes; 1904 1905 case '\\': 1906 if (*++yyp != '\\') 1907 goto do_not_strip_quotes; 1908 /* Fall through. */ 1909 default: 1910 if (yyres) 1911 yyres[yyn] = *yyp; 1912 yyn++; 1913 break; 1914 1915 case '"': 1916 if (yyres) 1917 yyres[yyn] = '\0'; 1918 return yyn; 1919 } 1920 do_not_strip_quotes: ; 1921 } 1922 1923 if (! yyres) 1924 return yystrlen (yystr); 1925 1926 return yystpcpy (yyres, yystr) - yyres; 1927 } 1928 # endif 1929 1930 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1931 about the unexpected token YYTOKEN for the state stack whose top is 1932 YYSSP. 1933 1934 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1935 not large enough to hold the message. In that case, also set 1936 *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1937 required number of bytes is too large to store. */ 1938 static int 1939 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1940 yytype_int16 *yyssp, int yytoken) 1941 { 1942 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); 1943 YYSIZE_T yysize = yysize0; 1944 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1945 /* Internationalized format string. */ 1946 const char *yyformat = YY_NULLPTR; 1947 /* Arguments of yyformat. */ 1948 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1949 /* Number of reported tokens (one for the "unexpected", one per 1950 "expected"). */ 1951 int yycount = 0; 1952 1953 /* There are many possibilities here to consider: 1954 - If this state is a consistent state with a default action, then 1955 the only way this function was invoked is if the default action 1956 is an error action. In that case, don't check for expected 1957 tokens because there are none. 1958 - The only way there can be no lookahead present (in yychar) is if 1959 this state is a consistent state with a default action. Thus, 1960 detecting the absence of a lookahead is sufficient to determine 1961 that there is no unexpected or expected token to report. In that 1962 case, just report a simple "syntax error". 1963 - Don't assume there isn't a lookahead just because this state is a 1964 consistent state with a default action. There might have been a 1965 previous inconsistent state, consistent state with a non-default 1966 action, or user semantic action that manipulated yychar. 1967 - Of course, the expected token list depends on states to have 1968 correct lookahead information, and it depends on the parser not 1969 to perform extra reductions after fetching a lookahead from the 1970 scanner and before detecting a syntax error. Thus, state merging 1971 (from LALR or IELR) and default reductions corrupt the expected 1972 token list. However, the list is correct for canonical LR with 1973 one exception: it will still contain any token that will not be 1974 accepted due to an error action in a later state. 1975 */ 1976 if (yytoken != YYEMPTY) 1977 { 1978 int yyn = yypact[*yyssp]; 1979 yyarg[yycount++] = yytname[yytoken]; 1980 if (!yypact_value_is_default (yyn)) 1981 { 1982 /* Start YYX at -YYN if negative to avoid negative indexes in 1983 YYCHECK. In other words, skip the first -YYN actions for 1984 this state because they are default actions. */ 1985 int yyxbegin = yyn < 0 ? -yyn : 0; 1986 /* Stay within bounds of both yycheck and yytname. */ 1987 int yychecklim = YYLAST - yyn + 1; 1988 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1989 int yyx; 1990 1991 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1992 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1993 && !yytable_value_is_error (yytable[yyx + yyn])) 1994 { 1995 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1996 { 1997 yycount = 1; 1998 yysize = yysize0; 1999 break; 2000 } 2001 yyarg[yycount++] = yytname[yyx]; 2002 { 2003 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); 2004 if (! (yysize <= yysize1 2005 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 2006 return 2; 2007 yysize = yysize1; 2008 } 2009 } 2010 } 2011 } 2012 2013 switch (yycount) 2014 { 2015 # define YYCASE_(N, S) \ 2016 case N: \ 2017 yyformat = S; \ 2018 break 2019 YYCASE_(0, YY_("syntax error")); 2020 YYCASE_(1, YY_("syntax error, unexpected %s")); 2021 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 2022 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 2023 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 2024 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 2025 # undef YYCASE_ 2026 } 2027 2028 { 2029 YYSIZE_T yysize1 = yysize + yystrlen (yyformat); 2030 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 2031 return 2; 2032 yysize = yysize1; 2033 } 2034 2035 if (*yymsg_alloc < yysize) 2036 { 2037 *yymsg_alloc = 2 * yysize; 2038 if (! (yysize <= *yymsg_alloc 2039 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 2040 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 2041 return 1; 2042 } 2043 2044 /* Avoid sprintf, as that infringes on the user's name space. 2045 Don't have undefined behavior even if the translation 2046 produced a string with the wrong number of "%s"s. */ 2047 { 2048 char *yyp = *yymsg; 2049 int yyi = 0; 2050 while ((*yyp = *yyformat) != '\0') 2051 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 2052 { 2053 yyp += yytnamerr (yyp, yyarg[yyi++]); 2054 yyformat += 2; 2055 } 2056 else 2057 { 2058 yyp++; 2059 yyformat++; 2060 } 2061 } 2062 return 0; 2063 } 2064 #endif /* YYERROR_VERBOSE */ 2065 2066 /*-----------------------------------------------. 2067 | Release the memory associated to this symbol. | 2068 `-----------------------------------------------*/ 2069 2070 static void 2071 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, TParseContext* context, void* yyscanner) 2072 { 2073 YYUSE (yyvaluep); 2074 YYUSE (yylocationp); 2075 YYUSE (context); 2076 YYUSE (yyscanner); 2077 if (!yymsg) 2078 yymsg = "Deleting"; 2079 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 2080 2081 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 2082 YYUSE (yytype); 2083 YY_IGNORE_MAYBE_UNINITIALIZED_END 2084 } 2085 2086 2087 2088 2089 /*----------. 2090 | yyparse. | 2091 `----------*/ 2092 2093 int 2094 yyparse (TParseContext* context, void* yyscanner) 2095 { 2096 /* The lookahead symbol. */ 2097 int yychar; 2098 2099 2100 /* The semantic value of the lookahead symbol. */ 2101 /* Default value used for initialization, for pacifying older GCCs 2102 or non-GCC compilers. */ 2103 YY_INITIAL_VALUE (static YYSTYPE yyval_default;) 2104 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); 2105 2106 /* Location data for the lookahead symbol. */ 2107 static YYLTYPE yyloc_default 2108 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 2109 = { 1, 1, 1, 1 } 2110 # endif 2111 ; 2112 YYLTYPE yylloc = yyloc_default; 2113 2114 /* Number of syntax errors so far. */ 2115 int yynerrs; 2116 2117 int yystate; 2118 /* Number of tokens to shift before error messages enabled. */ 2119 int yyerrstatus; 2120 2121 /* The stacks and their tools: 2122 'yyss': related to states. 2123 'yyvs': related to semantic values. 2124 'yyls': related to locations. 2125 2126 Refer to the stacks through separate pointers, to allow yyoverflow 2127 to reallocate them elsewhere. */ 2128 2129 /* The state stack. */ 2130 yytype_int16 yyssa[YYINITDEPTH]; 2131 yytype_int16 *yyss; 2132 yytype_int16 *yyssp; 2133 2134 /* The semantic value stack. */ 2135 YYSTYPE yyvsa[YYINITDEPTH]; 2136 YYSTYPE *yyvs; 2137 YYSTYPE *yyvsp; 2138 2139 /* The location stack. */ 2140 YYLTYPE yylsa[YYINITDEPTH]; 2141 YYLTYPE *yyls; 2142 YYLTYPE *yylsp; 2143 2144 /* The locations where the error started and ended. */ 2145 YYLTYPE yyerror_range[3]; 2146 2147 YYSIZE_T yystacksize; 2148 2149 int yyn; 2150 int yyresult; 2151 /* Lookahead token as an internal (translated) token number. */ 2152 int yytoken = 0; 2153 /* The variables used to return semantic value and location from the 2154 action routines. */ 2155 YYSTYPE yyval; 2156 YYLTYPE yyloc; 2157 2158 #if YYERROR_VERBOSE 2159 /* Buffer for error messages, and its allocated size. */ 2160 char yymsgbuf[128]; 2161 char *yymsg = yymsgbuf; 2162 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 2163 #endif 2164 2165 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 2166 2167 /* The number of symbols on the RHS of the reduced rule. 2168 Keep to zero when no symbol should be popped. */ 2169 int yylen = 0; 2170 2171 yyssp = yyss = yyssa; 2172 yyvsp = yyvs = yyvsa; 2173 yylsp = yyls = yylsa; 2174 yystacksize = YYINITDEPTH; 2175 2176 YYDPRINTF ((stderr, "Starting parse\n")); 2177 2178 yystate = 0; 2179 yyerrstatus = 0; 2180 yynerrs = 0; 2181 yychar = YYEMPTY; /* Cause a token to be read. */ 2182 yylsp[0] = yylloc; 2183 goto yysetstate; 2184 2185 /*------------------------------------------------------------. 2186 | yynewstate -- Push a new state, which is found in yystate. | 2187 `------------------------------------------------------------*/ 2188 yynewstate: 2189 /* In all cases, when you get here, the value and location stacks 2190 have just been pushed. So pushing a state here evens the stacks. */ 2191 yyssp++; 2192 2193 yysetstate: 2194 *yyssp = yystate; 2195 2196 if (yyss + yystacksize - 1 <= yyssp) 2197 { 2198 /* Get the current used size of the three stacks, in elements. */ 2199 YYSIZE_T yysize = yyssp - yyss + 1; 2200 2201 #ifdef yyoverflow 2202 { 2203 /* Give user a chance to reallocate the stack. Use copies of 2204 these so that the &'s don't force the real ones into 2205 memory. */ 2206 YYSTYPE *yyvs1 = yyvs; 2207 yytype_int16 *yyss1 = yyss; 2208 YYLTYPE *yyls1 = yyls; 2209 2210 /* Each stack pointer address is followed by the size of the 2211 data in use in that stack, in bytes. This used to be a 2212 conditional around just the two extra args, but that might 2213 be undefined if yyoverflow is a macro. */ 2214 yyoverflow (YY_("memory exhausted"), 2215 &yyss1, yysize * sizeof (*yyssp), 2216 &yyvs1, yysize * sizeof (*yyvsp), 2217 &yyls1, yysize * sizeof (*yylsp), 2218 &yystacksize); 2219 2220 yyls = yyls1; 2221 yyss = yyss1; 2222 yyvs = yyvs1; 2223 } 2224 #else /* no yyoverflow */ 2225 # ifndef YYSTACK_RELOCATE 2226 goto yyexhaustedlab; 2227 # else 2228 /* Extend the stack our own way. */ 2229 if (YYMAXDEPTH <= yystacksize) 2230 goto yyexhaustedlab; 2231 yystacksize *= 2; 2232 if (YYMAXDEPTH < yystacksize) 2233 yystacksize = YYMAXDEPTH; 2234 2235 { 2236 yytype_int16 *yyss1 = yyss; 2237 union yyalloc *yyptr = 2238 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 2239 if (! yyptr) 2240 goto yyexhaustedlab; 2241 YYSTACK_RELOCATE (yyss_alloc, yyss); 2242 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 2243 YYSTACK_RELOCATE (yyls_alloc, yyls); 2244 # undef YYSTACK_RELOCATE 2245 if (yyss1 != yyssa) 2246 YYSTACK_FREE (yyss1); 2247 } 2248 # endif 2249 #endif /* no yyoverflow */ 2250 2251 yyssp = yyss + yysize - 1; 2252 yyvsp = yyvs + yysize - 1; 2253 yylsp = yyls + yysize - 1; 2254 2255 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 2256 (unsigned long int) yystacksize)); 2257 2258 if (yyss + yystacksize - 1 <= yyssp) 2259 YYABORT; 2260 } 2261 2262 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2263 2264 if (yystate == YYFINAL) 2265 YYACCEPT; 2266 2267 goto yybackup; 2268 2269 /*-----------. 2270 | yybackup. | 2271 `-----------*/ 2272 yybackup: 2273 2274 /* Do appropriate processing given the current state. Read a 2275 lookahead token if we need one and don't already have one. */ 2276 2277 /* First try to decide what to do without reference to lookahead token. */ 2278 yyn = yypact[yystate]; 2279 if (yypact_value_is_default (yyn)) 2280 goto yydefault; 2281 2282 /* Not known => get a lookahead token if don't already have one. */ 2283 2284 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 2285 if (yychar == YYEMPTY) 2286 { 2287 YYDPRINTF ((stderr, "Reading a token: ")); 2288 yychar = yylex (&yylval, &yylloc, yyscanner); 2289 } 2290 2291 if (yychar <= YYEOF) 2292 { 2293 yychar = yytoken = YYEOF; 2294 YYDPRINTF ((stderr, "Now at end of input.\n")); 2295 } 2296 else 2297 { 2298 yytoken = YYTRANSLATE (yychar); 2299 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2300 } 2301 2302 /* If the proper action on seeing token YYTOKEN is to reduce or to 2303 detect an error, take that action. */ 2304 yyn += yytoken; 2305 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2306 goto yydefault; 2307 yyn = yytable[yyn]; 2308 if (yyn <= 0) 2309 { 2310 if (yytable_value_is_error (yyn)) 2311 goto yyerrlab; 2312 yyn = -yyn; 2313 goto yyreduce; 2314 } 2315 2316 /* Count tokens shifted since error; after three, turn off error 2317 status. */ 2318 if (yyerrstatus) 2319 yyerrstatus--; 2320 2321 /* Shift the lookahead token. */ 2322 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2323 2324 /* Discard the shifted token. */ 2325 yychar = YYEMPTY; 2326 2327 yystate = yyn; 2328 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 2329 *++yyvsp = yylval; 2330 YY_IGNORE_MAYBE_UNINITIALIZED_END 2331 *++yylsp = yylloc; 2332 goto yynewstate; 2333 2334 2335 /*-----------------------------------------------------------. 2336 | yydefault -- do the default action for the current state. | 2337 `-----------------------------------------------------------*/ 2338 yydefault: 2339 yyn = yydefact[yystate]; 2340 if (yyn == 0) 2341 goto yyerrlab; 2342 goto yyreduce; 2343 2344 2345 /*-----------------------------. 2346 | yyreduce -- Do a reduction. | 2347 `-----------------------------*/ 2348 yyreduce: 2349 /* yyn is the number of a rule to reduce with. */ 2350 yylen = yyr2[yyn]; 2351 2352 /* If YYLEN is nonzero, implement the default value of the action: 2353 '$$ = $1'. 2354 2355 Otherwise, the following line sets YYVAL to garbage. 2356 This behavior is undocumented and Bison 2357 users should not rely upon it. Assigning to YYVAL 2358 unconditionally makes the parser a bit smaller, and it avoids a 2359 GCC warning that YYVAL may be used uninitialized. */ 2360 yyval = yyvsp[1-yylen]; 2361 2362 /* Default location. */ 2363 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 2364 YY_REDUCE_PRINT (yyn); 2365 switch (yyn) 2366 { 2367 case 2: 2368 2369 { 2370 // The symbol table search was done in the lexical phase 2371 const TVariable *variable = context->getNamedVariable((yylsp[0]), (yyvsp[0].lex).string, (yyvsp[0].lex).symbol); 2372 2373 // don't delete $1.string, it's used by error recovery, and the pool 2374 // pop will reclaim the memory 2375 2376 ConstantUnion *constArray = variable->getConstPointer(); 2377 if (constArray) { 2378 TType t(variable->getType()); 2379 (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(constArray, t, (yylsp[0])); 2380 } else 2381 (yyval.interm.intermTypedNode) = context->intermediate.addSymbol(variable->getUniqueId(), 2382 variable->getName(), 2383 variable->getType(), (yylsp[0])); 2384 } 2385 2386 break; 2387 2388 case 3: 2389 2390 { 2391 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2392 } 2393 2394 break; 2395 2396 case 4: 2397 2398 { 2399 ConstantUnion *unionArray = new ConstantUnion[1]; 2400 unionArray->setIConst((yyvsp[0].lex).i); 2401 (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConstExpr), (yylsp[0])); 2402 } 2403 2404 break; 2405 2406 case 5: 2407 2408 { 2409 ConstantUnion *unionArray = new ConstantUnion[1]; 2410 unionArray->setUConst((yyvsp[0].lex).u); 2411 (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtUInt, EbpUndefined, EvqConstExpr), (yylsp[0])); 2412 } 2413 2414 break; 2415 2416 case 6: 2417 2418 { 2419 ConstantUnion *unionArray = new ConstantUnion[1]; 2420 unionArray->setFConst((yyvsp[0].lex).f); 2421 (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConstExpr), (yylsp[0])); 2422 } 2423 2424 break; 2425 2426 case 7: 2427 2428 { 2429 ConstantUnion *unionArray = new ConstantUnion[1]; 2430 unionArray->setBConst((yyvsp[0].lex).b); 2431 (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConstExpr), (yylsp[0])); 2432 } 2433 2434 break; 2435 2436 case 8: 2437 2438 { 2439 (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); 2440 } 2441 2442 break; 2443 2444 case 9: 2445 2446 { 2447 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2448 } 2449 2450 break; 2451 2452 case 10: 2453 2454 { 2455 (yyval.interm.intermTypedNode) = context->addIndexExpression((yyvsp[-3].interm.intermTypedNode), (yylsp[-2]), (yyvsp[-1].interm.intermTypedNode)); 2456 } 2457 2458 break; 2459 2460 case 11: 2461 2462 { 2463 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2464 } 2465 2466 break; 2467 2468 case 12: 2469 2470 { 2471 (yyval.interm.intermTypedNode) = context->addFieldSelectionExpression((yyvsp[-2].interm.intermTypedNode), (yylsp[-1]), *(yyvsp[0].lex).string, (yylsp[0])); 2472 } 2473 2474 break; 2475 2476 case 13: 2477 2478 { 2479 (yyval.interm.intermTypedNode) = context->addUnaryMathLValue(EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode), (yylsp[0])); 2480 } 2481 2482 break; 2483 2484 case 14: 2485 2486 { 2487 (yyval.interm.intermTypedNode) = context->addUnaryMathLValue(EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode), (yylsp[0])); 2488 } 2489 2490 break; 2491 2492 case 15: 2493 2494 { 2495 if (context->integerErrorCheck((yyvsp[0].interm.intermTypedNode), "[]")) 2496 context->recover(); 2497 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2498 } 2499 2500 break; 2501 2502 case 16: 2503 2504 { 2505 bool fatalError = false; 2506 (yyval.interm.intermTypedNode) = context->addFunctionCallOrMethod((yyvsp[0].interm).function, (yyvsp[0].interm).nodePair.node1, (yyvsp[0].interm).nodePair.node2, (yylsp[0]), &fatalError); 2507 if (fatalError) 2508 { 2509 YYERROR; 2510 } 2511 } 2512 2513 break; 2514 2515 case 17: 2516 2517 { 2518 (yyval.interm) = (yyvsp[0].interm); 2519 (yyval.interm).nodePair.node2 = nullptr; 2520 } 2521 2522 break; 2523 2524 case 18: 2525 2526 { 2527 ES3_ONLY("", (yylsp[0]), "methods"); 2528 (yyval.interm) = (yyvsp[0].interm); 2529 (yyval.interm).nodePair.node2 = (yyvsp[-2].interm.intermTypedNode); 2530 } 2531 2532 break; 2533 2534 case 19: 2535 2536 { 2537 (yyval.interm) = (yyvsp[-1].interm); 2538 } 2539 2540 break; 2541 2542 case 20: 2543 2544 { 2545 (yyval.interm) = (yyvsp[-1].interm); 2546 } 2547 2548 break; 2549 2550 case 21: 2551 2552 { 2553 (yyval.interm).function = (yyvsp[-1].interm.function); 2554 (yyval.interm).nodePair.node1 = nullptr; 2555 } 2556 2557 break; 2558 2559 case 22: 2560 2561 { 2562 (yyval.interm).function = (yyvsp[0].interm.function); 2563 (yyval.interm).nodePair.node1 = nullptr; 2564 } 2565 2566 break; 2567 2568 case 23: 2569 2570 { 2571 TParameter param = { 0, new TType((yyvsp[0].interm.intermTypedNode)->getType()) }; 2572 (yyvsp[-1].interm.function)->addParameter(param); 2573 (yyval.interm).function = (yyvsp[-1].interm.function); 2574 (yyval.interm).nodePair.node1 = (yyvsp[0].interm.intermTypedNode); 2575 } 2576 2577 break; 2578 2579 case 24: 2580 2581 { 2582 TParameter param = { 0, new TType((yyvsp[0].interm.intermTypedNode)->getType()) }; 2583 (yyvsp[-2].interm).function->addParameter(param); 2584 (yyval.interm).function = (yyvsp[-2].interm).function; 2585 (yyval.interm).nodePair.node1 = context->intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2586 } 2587 2588 break; 2589 2590 case 25: 2591 2592 { 2593 (yyval.interm.function) = (yyvsp[-1].interm.function); 2594 } 2595 2596 break; 2597 2598 case 26: 2599 2600 { 2601 if ((yyvsp[0].interm.type).array) { 2602 ES3_ONLY("[]", (yylsp[0]), "array constructor"); 2603 } 2604 (yyval.interm.function) = context->addConstructorFunc((yyvsp[0].interm.type)); 2605 } 2606 2607 break; 2608 2609 case 27: 2610 2611 { 2612 if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string)) 2613 context->recover(); 2614 TType type(EbtVoid, EbpUndefined); 2615 TFunction *function = new TFunction((yyvsp[0].lex).string, type); 2616 (yyval.interm.function) = function; 2617 } 2618 2619 break; 2620 2621 case 28: 2622 2623 { 2624 if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string)) 2625 context->recover(); 2626 TType type(EbtVoid, EbpUndefined); 2627 TFunction *function = new TFunction((yyvsp[0].lex).string, type); 2628 (yyval.interm.function) = function; 2629 } 2630 2631 break; 2632 2633 case 29: 2634 2635 { 2636 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2637 } 2638 2639 break; 2640 2641 case 30: 2642 2643 { 2644 (yyval.interm.intermTypedNode) = context->addUnaryMathLValue(EOpPreIncrement, (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2645 } 2646 2647 break; 2648 2649 case 31: 2650 2651 { 2652 (yyval.interm.intermTypedNode) = context->addUnaryMathLValue(EOpPreDecrement, (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2653 } 2654 2655 break; 2656 2657 case 32: 2658 2659 { 2660 if ((yyvsp[-1].interm).op != EOpNull) { 2661 (yyval.interm.intermTypedNode) = context->addUnaryMath((yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2662 } else 2663 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 2664 } 2665 2666 break; 2667 2668 case 33: 2669 2670 { (yyval.interm).op = EOpNull; } 2671 2672 break; 2673 2674 case 34: 2675 2676 { (yyval.interm).op = EOpNegative; } 2677 2678 break; 2679 2680 case 35: 2681 2682 { (yyval.interm).op = EOpLogicalNot; } 2683 2684 break; 2685 2686 case 36: 2687 2688 { 2689 ES3_ONLY("~", (yylsp[0]), "bit-wise operator"); 2690 (yyval.interm).op = EOpBitwiseNot; 2691 } 2692 2693 break; 2694 2695 case 37: 2696 2697 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2698 2699 break; 2700 2701 case 38: 2702 2703 { 2704 FRAG_VERT_ONLY("*", (yylsp[-1])); 2705 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2706 } 2707 2708 break; 2709 2710 case 39: 2711 2712 { 2713 FRAG_VERT_ONLY("/", (yylsp[-1])); 2714 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2715 } 2716 2717 break; 2718 2719 case 40: 2720 2721 { 2722 FRAG_VERT_ONLY("%", (yylsp[-1])); 2723 ES3_ONLY("%", (yylsp[-1]), "integer modulus operator"); 2724 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpIMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2725 } 2726 2727 break; 2728 2729 case 41: 2730 2731 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2732 2733 break; 2734 2735 case 42: 2736 2737 { 2738 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2739 } 2740 2741 break; 2742 2743 case 43: 2744 2745 { 2746 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2747 } 2748 2749 break; 2750 2751 case 44: 2752 2753 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2754 2755 break; 2756 2757 case 45: 2758 2759 { 2760 ES3_ONLY("<<", (yylsp[-1]), "bit-wise operator"); 2761 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpBitShiftLeft, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2762 } 2763 2764 break; 2765 2766 case 46: 2767 2768 { 2769 ES3_ONLY(">>", (yylsp[-1]), "bit-wise operator"); 2770 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpBitShiftRight, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2771 } 2772 2773 break; 2774 2775 case 47: 2776 2777 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2778 2779 break; 2780 2781 case 48: 2782 2783 { 2784 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2785 } 2786 2787 break; 2788 2789 case 49: 2790 2791 { 2792 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2793 } 2794 2795 break; 2796 2797 case 50: 2798 2799 { 2800 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2801 } 2802 2803 break; 2804 2805 case 51: 2806 2807 { 2808 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2809 } 2810 2811 break; 2812 2813 case 52: 2814 2815 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2816 2817 break; 2818 2819 case 53: 2820 2821 { 2822 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2823 } 2824 2825 break; 2826 2827 case 54: 2828 2829 { 2830 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2831 } 2832 2833 break; 2834 2835 case 55: 2836 2837 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2838 2839 break; 2840 2841 case 56: 2842 2843 { 2844 ES3_ONLY("&", (yylsp[-1]), "bit-wise operator"); 2845 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpBitwiseAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2846 } 2847 2848 break; 2849 2850 case 57: 2851 2852 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2853 2854 break; 2855 2856 case 58: 2857 2858 { 2859 ES3_ONLY("^", (yylsp[-1]), "bit-wise operator"); 2860 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpBitwiseXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2861 } 2862 2863 break; 2864 2865 case 59: 2866 2867 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2868 2869 break; 2870 2871 case 60: 2872 2873 { 2874 ES3_ONLY("|", (yylsp[-1]), "bit-wise operator"); 2875 (yyval.interm.intermTypedNode) = context->addBinaryMath(EOpBitwiseOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2876 } 2877 2878 break; 2879 2880 case 61: 2881 2882 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2883 2884 break; 2885 2886 case 62: 2887 2888 { 2889 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2890 } 2891 2892 break; 2893 2894 case 63: 2895 2896 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2897 2898 break; 2899 2900 case 64: 2901 2902 { 2903 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2904 } 2905 2906 break; 2907 2908 case 65: 2909 2910 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2911 2912 break; 2913 2914 case 66: 2915 2916 { 2917 (yyval.interm.intermTypedNode) = context->addBinaryMathBooleanResult(EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2918 } 2919 2920 break; 2921 2922 case 67: 2923 2924 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2925 2926 break; 2927 2928 case 68: 2929 2930 { 2931 (yyval.interm.intermTypedNode) = context->addTernarySelection((yyvsp[-4].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-3])); 2932 } 2933 2934 break; 2935 2936 case 69: 2937 2938 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 2939 2940 break; 2941 2942 case 70: 2943 2944 { 2945 if (context->lValueErrorCheck((yylsp[-1]), "assign", (yyvsp[-2].interm.intermTypedNode))) 2946 context->recover(); 2947 (yyval.interm.intermTypedNode) = context->addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 2948 } 2949 2950 break; 2951 2952 case 71: 2953 2954 { (yyval.interm).op = EOpAssign; } 2955 2956 break; 2957 2958 case 72: 2959 2960 { FRAG_VERT_ONLY("*=", (yylsp[0])); (yyval.interm).op = EOpMulAssign; } 2961 2962 break; 2963 2964 case 73: 2965 2966 { FRAG_VERT_ONLY("/=", (yylsp[0])); (yyval.interm).op = EOpDivAssign; } 2967 2968 break; 2969 2970 case 74: 2971 2972 { ES3_ONLY("%=", (yylsp[0]), "integer modulus operator"); 2973 FRAG_VERT_ONLY("%=", (yylsp[0])); (yyval.interm).op = EOpIModAssign; } 2974 2975 break; 2976 2977 case 75: 2978 2979 { (yyval.interm).op = EOpAddAssign; } 2980 2981 break; 2982 2983 case 76: 2984 2985 { (yyval.interm).op = EOpSubAssign; } 2986 2987 break; 2988 2989 case 77: 2990 2991 { ES3_ONLY("<<=", (yylsp[0]), "bit-wise operator"); 2992 FRAG_VERT_ONLY("<<=", (yylsp[0])); 2993 (yyval.interm).op = EOpBitShiftLeftAssign; } 2994 2995 break; 2996 2997 case 78: 2998 2999 { ES3_ONLY(">>=", (yylsp[0]), "bit-wise operator"); 3000 FRAG_VERT_ONLY(">>=", (yylsp[0])); 3001 (yyval.interm).op = EOpBitShiftRightAssign; } 3002 3003 break; 3004 3005 case 79: 3006 3007 { ES3_ONLY("&=", (yylsp[0]), "bit-wise operator"); 3008 FRAG_VERT_ONLY("&=", (yylsp[0])); 3009 (yyval.interm).op = EOpBitwiseAndAssign; } 3010 3011 break; 3012 3013 case 80: 3014 3015 { ES3_ONLY("^=", (yylsp[0]), "bit-wise operator"); 3016 FRAG_VERT_ONLY("^=", (yylsp[0])); 3017 (yyval.interm).op = EOpBitwiseXorAssign; } 3018 3019 break; 3020 3021 case 81: 3022 3023 { ES3_ONLY("|=", (yylsp[0]), "bit-wise operator"); 3024 FRAG_VERT_ONLY("|=", (yylsp[0])); 3025 (yyval.interm).op = EOpBitwiseOrAssign; } 3026 3027 break; 3028 3029 case 82: 3030 3031 { 3032 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 3033 } 3034 3035 break; 3036 3037 case 83: 3038 3039 { 3040 (yyval.interm.intermTypedNode) = context->intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yylsp[-1])); 3041 if ((yyval.interm.intermTypedNode) == 0) { 3042 context->binaryOpError((yylsp[-1]), ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); 3043 context->recover(); 3044 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 3045 } 3046 } 3047 3048 break; 3049 3050 case 84: 3051 3052 { 3053 if (context->constErrorCheck((yyvsp[0].interm.intermTypedNode))) 3054 context->recover(); 3055 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 3056 } 3057 3058 break; 3059 3060 case 85: 3061 3062 { 3063 if (context->enterStructDeclaration((yylsp[-1]), *(yyvsp[-1].lex).string)) 3064 context->recover(); 3065 (yyval.lex) = (yyvsp[-1].lex); 3066 } 3067 3068 break; 3069 3070 case 86: 3071 3072 { 3073 (yyval.interm.intermNode) = context->addFunctionPrototypeDeclaration(*((yyvsp[-1].interm).function), (yylsp[-1])); 3074 } 3075 3076 break; 3077 3078 case 87: 3079 3080 { 3081 TIntermAggregate *aggNode = (yyvsp[-1].interm).intermAggregate; 3082 if (aggNode && aggNode->getOp() == EOpNull) 3083 aggNode->setOp(EOpDeclaration); 3084 (yyval.interm.intermNode) = aggNode; 3085 } 3086 3087 break; 3088 3089 case 88: 3090 3091 { 3092 if (!context->symbolTable.setDefaultPrecision( (yyvsp[-1].interm.type), (yyvsp[-2].interm.precision) )) { 3093 context->error((yylsp[-3]), "illegal type argument for default precision qualifier", getBasicString((yyvsp[-1].interm.type).type)); 3094 context->recover(); 3095 } 3096 (yyval.interm.intermNode) = 0; 3097 } 3098 3099 break; 3100 3101 case 89: 3102 3103 { 3104 ES3_ONLY(getQualifierString((yyvsp[-4].interm.type).qualifier), (yylsp[-4]), "interface blocks"); 3105 (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[-4].interm.type), (yylsp[-3]), *(yyvsp[-3].lex).string, (yyvsp[-2].interm.fieldList), NULL, (yylsp[-4]), NULL, (yylsp[-4])); 3106 } 3107 3108 break; 3109 3110 case 90: 3111 3112 { 3113 ES3_ONLY(getQualifierString((yyvsp[-5].interm.type).qualifier), (yylsp[-5]), "interface blocks"); 3114 (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[-5].interm.type), (yylsp[-4]), *(yyvsp[-4].lex).string, (yyvsp[-3].interm.fieldList), (yyvsp[-1].lex).string, (yylsp[-1]), NULL, (yylsp[-5])); 3115 } 3116 3117 break; 3118 3119 case 91: 3120 3121 { 3122 ES3_ONLY(getQualifierString((yyvsp[-8].interm.type).qualifier), (yylsp[-8]), "interface blocks"); 3123 (yyval.interm.intermNode) = context->addInterfaceBlock((yyvsp[-8].interm.type), (yylsp[-7]), *(yyvsp[-7].lex).string, (yyvsp[-6].interm.fieldList), (yyvsp[-4].lex).string, (yylsp[-4]), (yyvsp[-2].interm.intermTypedNode), (yylsp[-3])); 3124 } 3125 3126 break; 3127 3128 case 92: 3129 3130 { 3131 context->parseGlobalLayoutQualifier((yyvsp[-1].interm.type)); 3132 (yyval.interm.intermNode) = 0; 3133 } 3134 3135 break; 3136 3137 case 93: 3138 3139 { 3140 (yyval.interm).function = context->parseFunctionDeclarator((yylsp[0]), (yyvsp[-1].interm.function)); 3141 } 3142 3143 break; 3144 3145 case 94: 3146 3147 { 3148 (yyval.interm.function) = (yyvsp[0].interm.function); 3149 } 3150 3151 break; 3152 3153 case 95: 3154 3155 { 3156 (yyval.interm.function) = (yyvsp[0].interm.function); 3157 } 3158 3159 break; 3160 3161 case 96: 3162 3163 { 3164 // Add the parameter 3165 (yyval.interm.function) = (yyvsp[-1].interm.function); 3166 if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) 3167 (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); 3168 else 3169 delete (yyvsp[0].interm).param.type; 3170 } 3171 3172 break; 3173 3174 case 97: 3175 3176 { 3177 // 3178 // Only first parameter of one-parameter functions can be void 3179 // The check for named parameters not being void is done in parameter_declarator 3180 // 3181 if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { 3182 // 3183 // This parameter > first is void 3184 // 3185 context->error((yylsp[-1]), "cannot be an argument type except for '(void)'", "void"); 3186 context->recover(); 3187 delete (yyvsp[0].interm).param.type; 3188 } else { 3189 // Add the parameter 3190 (yyval.interm.function) = (yyvsp[-2].interm.function); 3191 (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); 3192 } 3193 } 3194 3195 break; 3196 3197 case 98: 3198 3199 { 3200 if ((yyvsp[-2].interm.type).qualifier != EvqGlobal && (yyvsp[-2].interm.type).qualifier != EvqTemporary) { 3201 context->error((yylsp[-1]), "no qualifiers allowed for function return", getQualifierString((yyvsp[-2].interm.type).qualifier)); 3202 context->recover(); 3203 } 3204 if (!(yyvsp[-2].interm.type).layoutQualifier.isEmpty()) 3205 { 3206 context->error((yylsp[-1]), "no qualifiers allowed for function return", "layout"); 3207 context->recover(); 3208 } 3209 // make sure a sampler is not involved as well... 3210 if (context->samplerErrorCheck((yylsp[-1]), (yyvsp[-2].interm.type), "samplers can't be function return values")) 3211 context->recover(); 3212 3213 // Add the function as a prototype after parsing it (we do not support recursion) 3214 TFunction *function; 3215 TType type((yyvsp[-2].interm.type)); 3216 function = new TFunction((yyvsp[-1].lex).string, type); 3217 (yyval.interm.function) = function; 3218 3219 context->symbolTable.push(); 3220 } 3221 3222 break; 3223 3224 case 99: 3225 3226 { 3227 if ((yyvsp[-1].interm.type).type == EbtVoid) { 3228 context->error((yylsp[0]), "illegal use of type 'void'", (yyvsp[0].lex).string->c_str()); 3229 context->recover(); 3230 } 3231 if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string)) 3232 context->recover(); 3233 TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; 3234 (yyval.interm).param = param; 3235 } 3236 3237 break; 3238 3239 case 100: 3240 3241 { 3242 // Check that we can make an array out of this type 3243 if (context->arrayTypeErrorCheck((yylsp[-2]), (yyvsp[-4].interm.type))) 3244 context->recover(); 3245 3246 if (context->reservedErrorCheck((yylsp[-3]), *(yyvsp[-3].lex).string)) 3247 context->recover(); 3248 3249 int size; 3250 if (context->arraySizeErrorCheck((yylsp[-2]), (yyvsp[-1].interm.intermTypedNode), size)) 3251 context->recover(); 3252 (yyvsp[-4].interm.type).setArray(true, size); 3253 3254 TType* type = new TType((yyvsp[-4].interm.type)); 3255 TParameter param = { (yyvsp[-3].lex).string, type }; 3256 (yyval.interm).param = param; 3257 } 3258 3259 break; 3260 3261 case 101: 3262 3263 { 3264 (yyval.interm) = (yyvsp[0].interm); 3265 if (context->paramErrorCheck((yylsp[0]), (yyvsp[-2].interm.qualifier), (yyvsp[-1].interm.qualifier), (yyval.interm).param.type)) 3266 context->recover(); 3267 } 3268 3269 break; 3270 3271 case 102: 3272 3273 { 3274 (yyval.interm) = (yyvsp[0].interm); 3275 if (context->parameterSamplerErrorCheck((yylsp[0]), (yyvsp[-1].interm.qualifier), *(yyvsp[0].interm).param.type)) 3276 context->recover(); 3277 if (context->paramErrorCheck((yylsp[0]), EvqTemporary, (yyvsp[-1].interm.qualifier), (yyval.interm).param.type)) 3278 context->recover(); 3279 } 3280 3281 break; 3282 3283 case 103: 3284 3285 { 3286 (yyval.interm) = (yyvsp[0].interm); 3287 if (context->paramErrorCheck((yylsp[0]), (yyvsp[-2].interm.qualifier), (yyvsp[-1].interm.qualifier), (yyval.interm).param.type)) 3288 context->recover(); 3289 } 3290 3291 break; 3292 3293 case 104: 3294 3295 { 3296 (yyval.interm) = (yyvsp[0].interm); 3297 if (context->parameterSamplerErrorCheck((yylsp[0]), (yyvsp[-1].interm.qualifier), *(yyvsp[0].interm).param.type)) 3298 context->recover(); 3299 if (context->paramErrorCheck((yylsp[0]), EvqTemporary, (yyvsp[-1].interm.qualifier), (yyval.interm).param.type)) 3300 context->recover(); 3301 } 3302 3303 break; 3304 3305 case 105: 3306 3307 { 3308 (yyval.interm.qualifier) = EvqIn; 3309 } 3310 3311 break; 3312 3313 case 106: 3314 3315 { 3316 (yyval.interm.qualifier) = EvqIn; 3317 } 3318 3319 break; 3320 3321 case 107: 3322 3323 { 3324 (yyval.interm.qualifier) = EvqOut; 3325 } 3326 3327 break; 3328 3329 case 108: 3330 3331 { 3332 (yyval.interm.qualifier) = EvqInOut; 3333 } 3334 3335 break; 3336 3337 case 109: 3338 3339 { 3340 TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; 3341 (yyval.interm).param = param; 3342 } 3343 3344 break; 3345 3346 case 110: 3347 3348 { 3349 (yyval.interm) = (yyvsp[0].interm); 3350 } 3351 3352 break; 3353 3354 case 111: 3355 3356 { 3357 (yyval.interm) = (yyvsp[-2].interm); 3358 (yyval.interm).intermAggregate = context->parseDeclarator((yyval.interm).type, (yyvsp[-2].interm).intermAggregate, (yylsp[0]), *(yyvsp[0].lex).string); 3359 } 3360 3361 break; 3362 3363 case 112: 3364 3365 { 3366 (yyval.interm) = (yyvsp[-5].interm); 3367 (yyval.interm).intermAggregate = context->parseArrayDeclarator((yyval.interm).type, (yyvsp[-5].interm).intermAggregate, (yylsp[-3]), *(yyvsp[-3].lex).string, (yylsp[-2]), (yyvsp[-1].interm.intermTypedNode)); 3368 } 3369 3370 break; 3371 3372 case 113: 3373 3374 { 3375 ES3_ONLY("[]", (yylsp[-4]), "implicitly sized array"); 3376 (yyval.interm) = (yyvsp[-6].interm); 3377 (yyval.interm).intermAggregate = context->parseArrayInitDeclarator((yyval.interm).type, (yyvsp[-6].interm).intermAggregate, (yylsp[-4]), *(yyvsp[-4].lex).string, (yylsp[-3]), nullptr, (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3378 } 3379 3380 break; 3381 3382 case 114: 3383 3384 { 3385 ES3_ONLY("=", (yylsp[-1]), "first-class arrays (array initializer)"); 3386 (yyval.interm) = (yyvsp[-7].interm); 3387 (yyval.interm).intermAggregate = context->parseArrayInitDeclarator((yyval.interm).type, (yyvsp[-7].interm).intermAggregate, (yylsp[-5]), *(yyvsp[-5].lex).string, (yylsp[-4]), (yyvsp[-3].interm.intermTypedNode), (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3388 } 3389 3390 break; 3391 3392 case 115: 3393 3394 { 3395 (yyval.interm) = (yyvsp[-4].interm); 3396 (yyval.interm).intermAggregate = context->parseInitDeclarator((yyval.interm).type, (yyvsp[-4].interm).intermAggregate, (yylsp[-2]), *(yyvsp[-2].lex).string, (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3397 } 3398 3399 break; 3400 3401 case 116: 3402 3403 { 3404 (yyval.interm).type = (yyvsp[0].interm.type); 3405 (yyval.interm).intermAggregate = context->parseSingleDeclaration((yyval.interm).type, (yylsp[0]), ""); 3406 } 3407 3408 break; 3409 3410 case 117: 3411 3412 { 3413 (yyval.interm).type = (yyvsp[-1].interm.type); 3414 (yyval.interm).intermAggregate = context->parseSingleDeclaration((yyval.interm).type, (yylsp[0]), *(yyvsp[0].lex).string); 3415 } 3416 3417 break; 3418 3419 case 118: 3420 3421 { 3422 (yyval.interm).type = (yyvsp[-4].interm.type); 3423 (yyval.interm).intermAggregate = context->parseSingleArrayDeclaration((yyval.interm).type, (yylsp[-3]), *(yyvsp[-3].lex).string, (yylsp[-2]), (yyvsp[-1].interm.intermTypedNode)); 3424 } 3425 3426 break; 3427 3428 case 119: 3429 3430 { 3431 ES3_ONLY("[]", (yylsp[-3]), "implicitly sized array"); 3432 (yyval.interm).type = (yyvsp[-5].interm.type); 3433 (yyval.interm).intermAggregate = context->parseSingleArrayInitDeclaration((yyval.interm).type, (yylsp[-4]), *(yyvsp[-4].lex).string, (yylsp[-3]), nullptr, (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3434 } 3435 3436 break; 3437 3438 case 120: 3439 3440 { 3441 ES3_ONLY("=", (yylsp[-1]), "first-class arrays (array initializer)"); 3442 (yyval.interm).type = (yyvsp[-6].interm.type); 3443 (yyval.interm).intermAggregate = context->parseSingleArrayInitDeclaration((yyval.interm).type, (yylsp[-5]), *(yyvsp[-5].lex).string, (yylsp[-4]), (yyvsp[-3].interm.intermTypedNode), (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3444 } 3445 3446 break; 3447 3448 case 121: 3449 3450 { 3451 (yyval.interm).type = (yyvsp[-3].interm.type); 3452 (yyval.interm).intermAggregate = context->parseSingleInitDeclaration((yyval.interm).type, (yylsp[-2]), *(yyvsp[-2].lex).string, (yylsp[-1]), (yyvsp[0].interm.intermTypedNode)); 3453 } 3454 3455 break; 3456 3457 case 122: 3458 3459 { 3460 // $$.type is not used in invariant declarations. 3461 (yyval.interm).intermAggregate = context->parseInvariantDeclaration((yylsp[-1]), (yylsp[0]), (yyvsp[0].lex).string, (yyvsp[0].lex).symbol); 3462 } 3463 3464 break; 3465 3466 case 123: 3467 3468 { 3469 (yyval.interm.type) = (yyvsp[0].interm.type); 3470 3471 if ((yyvsp[0].interm.type).array) { 3472 ES3_ONLY("[]", (yylsp[0]), "first-class-array"); 3473 if (context->getShaderVersion() != 300) { 3474 (yyvsp[0].interm.type).clearArrayness(); 3475 } 3476 } 3477 } 3478 3479 break; 3480 3481 case 124: 3482 3483 { 3484 (yyval.interm.type) = context->addFullySpecifiedType((yyvsp[-1].interm.type).qualifier, (yyvsp[-1].interm.type).invariant, (yyvsp[-1].interm.type).layoutQualifier, (yyvsp[0].interm.type)); 3485 } 3486 3487 break; 3488 3489 case 125: 3490 3491 { 3492 (yyval.interm.type).qualifier = EvqSmooth; 3493 } 3494 3495 break; 3496 3497 case 126: 3498 3499 { 3500 (yyval.interm.type).qualifier = EvqFlat; 3501 } 3502 3503 break; 3504 3505 case 127: 3506 3507 { 3508 (yyval.interm.qualifier) = EvqConstReadOnly; 3509 } 3510 3511 break; 3512 3513 case 128: 3514 3515 { 3516 VERTEX_ONLY("attribute", (yylsp[0])); 3517 ES2_ONLY("attribute", (yylsp[0])); 3518 if (context->globalErrorCheck((yylsp[0]), context->symbolTable.atGlobalLevel(), "attribute")) 3519 context->recover(); 3520 (yyval.interm.type).setBasic(EbtVoid, EvqAttribute, (yylsp[0])); 3521 } 3522 3523 break; 3524 3525 case 129: 3526 3527 { 3528 ES2_ONLY("varying", (yylsp[0])); 3529 if (context->globalErrorCheck((yylsp[0]), context->symbolTable.atGlobalLevel(), "varying")) 3530 context->recover(); 3531 if (context->getShaderType() == GL_VERTEX_SHADER) 3532 (yyval.interm.type).setBasic(EbtVoid, EvqVaryingOut, (yylsp[0])); 3533 else 3534 (yyval.interm.type).setBasic(EbtVoid, EvqVaryingIn, (yylsp[0])); 3535 } 3536 3537 break; 3538 3539 case 130: 3540 3541 { 3542 ES2_ONLY("varying", (yylsp[-1])); 3543 if (context->globalErrorCheck((yylsp[-1]), context->symbolTable.atGlobalLevel(), "invariant varying")) 3544 context->recover(); 3545 if (context->getShaderType() == GL_VERTEX_SHADER) 3546 (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingOut, (yylsp[-1])); 3547 else 3548 (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingIn, (yylsp[-1])); 3549 } 3550 3551 break; 3552 3553 case 131: 3554 3555 { 3556 if ((yyvsp[0].interm.type).qualifier != EvqConstExpr && !context->symbolTable.atGlobalLevel()) 3557 { 3558 context->error((yylsp[0]), "Local variables can only use the const storage qualifier.", getQualifierString((yyvsp[0].interm.type).qualifier)); 3559 context->recover(); 3560 } 3561 (yyval.interm.type).setBasic(EbtVoid, (yyvsp[0].interm.type).qualifier, (yylsp[0])); 3562 } 3563 3564 break; 3565 3566 case 132: 3567 3568 { 3569 (yyval.interm.type) = context->joinInterpolationQualifiers((yylsp[-1]), (yyvsp[-1].interm.type).qualifier, (yylsp[0]), (yyvsp[0].interm.type).qualifier); 3570 } 3571 3572 break; 3573 3574 case 133: 3575 3576 { 3577 context->error((yylsp[0]), "interpolation qualifier requires a fragment 'in' or vertex 'out' storage qualifier", getQualifierString((yyvsp[0].interm.type).qualifier)); 3578 context->recover(); 3579 3580 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3581 (yyval.interm.type).setBasic(EbtVoid, qual, (yylsp[0])); 3582 } 3583 3584 break; 3585 3586 case 134: 3587 3588 { 3589 (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3590 (yyval.interm.type).layoutQualifier = (yyvsp[0].interm.layoutQualifier); 3591 } 3592 3593 break; 3594 3595 case 135: 3596 3597 { 3598 (yyval.interm.type).setBasic(EbtVoid, (yyvsp[0].interm.type).qualifier, (yylsp[0])); 3599 (yyval.interm.type).layoutQualifier = (yyvsp[-1].interm.layoutQualifier); 3600 } 3601 3602 break; 3603 3604 case 136: 3605 3606 { 3607 context->es3InvariantErrorCheck((yyvsp[0].interm.type).qualifier, (yylsp[-1])); 3608 (yyval.interm.type).setBasic(EbtVoid, (yyvsp[0].interm.type).qualifier, (yylsp[0])); 3609 (yyval.interm.type).invariant = true; 3610 } 3611 3612 break; 3613 3614 case 137: 3615 3616 { 3617 context->es3InvariantErrorCheck((yyvsp[0].interm.type).qualifier, (yylsp[-2])); 3618 (yyval.interm.type) = context->joinInterpolationQualifiers((yylsp[-1]), (yyvsp[-1].interm.type).qualifier, (yylsp[0]), (yyvsp[0].interm.type).qualifier); 3619 (yyval.interm.type).invariant = true; 3620 } 3621 3622 break; 3623 3624 case 138: 3625 3626 { 3627 (yyval.interm.type).qualifier = EvqConstExpr; 3628 } 3629 3630 break; 3631 3632 case 139: 3633 3634 { 3635 ES3_ONLY("in", (yylsp[0]), "storage qualifier"); 3636 (yyval.interm.type).qualifier = (context->getShaderType() == GL_FRAGMENT_SHADER) ? EvqFragmentIn : EvqVertexIn; 3637 } 3638 3639 break; 3640 3641 case 140: 3642 3643 { 3644 ES3_ONLY("out", (yylsp[0]), "storage qualifier"); 3645 (yyval.interm.type).qualifier = (context->getShaderType() == GL_FRAGMENT_SHADER) ? EvqFragmentOut : EvqVertexOut; 3646 } 3647 3648 break; 3649 3650 case 141: 3651 3652 { 3653 ES3_ONLY("centroid in", (yylsp[-1]), "storage qualifier"); 3654 if (context->getShaderType() == GL_VERTEX_SHADER) 3655 { 3656 context->error((yylsp[-1]), "invalid storage qualifier", "it is an error to use 'centroid in' in the vertex shader"); 3657 context->recover(); 3658 } 3659 (yyval.interm.type).qualifier = (context->getShaderType() == GL_FRAGMENT_SHADER) ? EvqCentroidIn : EvqVertexIn; 3660 } 3661 3662 break; 3663 3664 case 142: 3665 3666 { 3667 ES3_ONLY("centroid out", (yylsp[-1]), "storage qualifier"); 3668 if (context->getShaderType() == GL_FRAGMENT_SHADER) 3669 { 3670 context->error((yylsp[-1]), "invalid storage qualifier", "it is an error to use 'centroid out' in the fragment shader"); 3671 context->recover(); 3672 } 3673 (yyval.interm.type).qualifier = (context->getShaderType() == GL_FRAGMENT_SHADER) ? EvqFragmentOut : EvqCentroidOut; 3674 } 3675 3676 break; 3677 3678 case 143: 3679 3680 { 3681 if (context->globalErrorCheck((yylsp[0]), context->symbolTable.atGlobalLevel(), "uniform")) 3682 context->recover(); 3683 (yyval.interm.type).qualifier = EvqUniform; 3684 } 3685 3686 break; 3687 3688 case 144: 3689 3690 { 3691 (yyval.interm.type) = (yyvsp[0].interm.type); 3692 3693 if ((yyval.interm.type).precision == EbpUndefined) { 3694 (yyval.interm.type).precision = context->symbolTable.getDefaultPrecision((yyvsp[0].interm.type).type); 3695 if (context->precisionErrorCheck((yylsp[0]), (yyval.interm.type).precision, (yyvsp[0].interm.type).type)) { 3696 context->recover(); 3697 } 3698 } 3699 } 3700 3701 break; 3702 3703 case 145: 3704 3705 { 3706 (yyval.interm.type) = (yyvsp[0].interm.type); 3707 (yyval.interm.type).precision = (yyvsp[-1].interm.precision); 3708 3709 if (!SupportsPrecision((yyvsp[0].interm.type).type)) { 3710 context->error((yylsp[-1]), "illegal type for precision qualifier", getBasicString((yyvsp[0].interm.type).type)); 3711 context->recover(); 3712 } 3713 } 3714 3715 break; 3716 3717 case 146: 3718 3719 { 3720 (yyval.interm.precision) = EbpHigh; 3721 } 3722 3723 break; 3724 3725 case 147: 3726 3727 { 3728 (yyval.interm.precision) = EbpMedium; 3729 } 3730 3731 break; 3732 3733 case 148: 3734 3735 { 3736 (yyval.interm.precision) = EbpLow; 3737 } 3738 3739 break; 3740 3741 case 149: 3742 3743 { 3744 ES3_ONLY("layout", (yylsp[-3]), "qualifier"); 3745 (yyval.interm.layoutQualifier) = (yyvsp[-1].interm.layoutQualifier); 3746 } 3747 3748 break; 3749 3750 case 150: 3751 3752 { 3753 (yyval.interm.layoutQualifier) = (yyvsp[0].interm.layoutQualifier); 3754 } 3755 3756 break; 3757 3758 case 151: 3759 3760 { 3761 (yyval.interm.layoutQualifier) = context->joinLayoutQualifiers((yyvsp[-2].interm.layoutQualifier), (yyvsp[0].interm.layoutQualifier)); 3762 } 3763 3764 break; 3765 3766 case 152: 3767 3768 { 3769 (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[0].lex).string, (yylsp[0])); 3770 } 3771 3772 break; 3773 3774 case 153: 3775 3776 { 3777 (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0])); 3778 } 3779 3780 break; 3781 3782 case 154: 3783 3784 { 3785 (yyval.interm.layoutQualifier) = context->parseLayoutQualifier(*(yyvsp[-2].lex).string, (yylsp[-2]), *(yyvsp[0].lex).string, (yyvsp[0].lex).i, (yylsp[0])); 3786 } 3787 3788 break; 3789 3790 case 155: 3791 3792 { 3793 (yyval.interm.type) = (yyvsp[0].interm.type); 3794 } 3795 3796 break; 3797 3798 case 156: 3799 3800 { 3801 ES3_ONLY("[]", (yylsp[-1]), "implicitly sized array"); 3802 (yyval.interm.type) = (yyvsp[-2].interm.type); 3803 (yyval.interm.type).setArray(true, 0); 3804 } 3805 3806 break; 3807 3808 case 157: 3809 3810 { 3811 (yyval.interm.type) = (yyvsp[-3].interm.type); 3812 3813 if (context->arrayTypeErrorCheck((yylsp[-2]), (yyvsp[-3].interm.type))) 3814 context->recover(); 3815 else { 3816 int size; 3817 if (context->arraySizeErrorCheck((yylsp[-2]), (yyvsp[-1].interm.intermTypedNode), size)) 3818 context->recover(); 3819 (yyval.interm.type).setArray(true, size); 3820 } 3821 } 3822 3823 break; 3824 3825 case 158: 3826 3827 { 3828 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3829 (yyval.interm.type).setBasic(EbtVoid, qual, (yylsp[0])); 3830 } 3831 3832 break; 3833 3834 case 159: 3835 3836 { 3837 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3838 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 3839 } 3840 3841 break; 3842 3843 case 160: 3844 3845 { 3846 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3847 (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0])); 3848 } 3849 3850 break; 3851 3852 case 161: 3853 3854 { 3855 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3856 (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0])); 3857 } 3858 3859 break; 3860 3861 case 162: 3862 3863 { 3864 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3865 (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0])); 3866 } 3867 3868 break; 3869 3870 case 163: 3871 3872 { 3873 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3874 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 3875 (yyval.interm.type).setAggregate(2); 3876 } 3877 3878 break; 3879 3880 case 164: 3881 3882 { 3883 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3884 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 3885 (yyval.interm.type).setAggregate(3); 3886 } 3887 3888 break; 3889 3890 case 165: 3891 3892 { 3893 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3894 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 3895 (yyval.interm.type).setAggregate(4); 3896 } 3897 3898 break; 3899 3900 case 166: 3901 3902 { 3903 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3904 (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0])); 3905 (yyval.interm.type).setAggregate(2); 3906 } 3907 3908 break; 3909 3910 case 167: 3911 3912 { 3913 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3914 (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0])); 3915 (yyval.interm.type).setAggregate(3); 3916 } 3917 3918 break; 3919 3920 case 168: 3921 3922 { 3923 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3924 (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[0])); 3925 (yyval.interm.type).setAggregate(4); 3926 } 3927 3928 break; 3929 3930 case 169: 3931 3932 { 3933 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3934 (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0])); 3935 (yyval.interm.type).setAggregate(2); 3936 } 3937 3938 break; 3939 3940 case 170: 3941 3942 { 3943 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3944 (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0])); 3945 (yyval.interm.type).setAggregate(3); 3946 } 3947 3948 break; 3949 3950 case 171: 3951 3952 { 3953 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3954 (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[0])); 3955 (yyval.interm.type).setAggregate(4); 3956 } 3957 3958 break; 3959 3960 case 172: 3961 3962 { 3963 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3964 (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0])); 3965 (yyval.interm.type).setAggregate(2); 3966 } 3967 3968 break; 3969 3970 case 173: 3971 3972 { 3973 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3974 (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0])); 3975 (yyval.interm.type).setAggregate(3); 3976 } 3977 3978 break; 3979 3980 case 174: 3981 3982 { 3983 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3984 (yyval.interm.type).setBasic(EbtUInt, qual, (yylsp[0])); 3985 (yyval.interm.type).setAggregate(4); 3986 } 3987 3988 break; 3989 3990 case 175: 3991 3992 { 3993 FRAG_VERT_ONLY("mat2", (yylsp[0])); 3994 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 3995 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 3996 (yyval.interm.type).setMatrix(2, 2); 3997 } 3998 3999 break; 4000 4001 case 176: 4002 4003 { 4004 FRAG_VERT_ONLY("mat3", (yylsp[0])); 4005 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4006 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4007 (yyval.interm.type).setMatrix(3, 3); 4008 } 4009 4010 break; 4011 4012 case 177: 4013 4014 { 4015 FRAG_VERT_ONLY("mat4", (yylsp[0])); 4016 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4017 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4018 (yyval.interm.type).setMatrix(4, 4); 4019 } 4020 4021 break; 4022 4023 case 178: 4024 4025 { 4026 FRAG_VERT_ONLY("mat2x3", (yylsp[0])); 4027 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4028 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4029 (yyval.interm.type).setMatrix(2, 3); 4030 } 4031 4032 break; 4033 4034 case 179: 4035 4036 { 4037 FRAG_VERT_ONLY("mat3x2", (yylsp[0])); 4038 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4039 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4040 (yyval.interm.type).setMatrix(3, 2); 4041 } 4042 4043 break; 4044 4045 case 180: 4046 4047 { 4048 FRAG_VERT_ONLY("mat2x4", (yylsp[0])); 4049 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4050 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4051 (yyval.interm.type).setMatrix(2, 4); 4052 } 4053 4054 break; 4055 4056 case 181: 4057 4058 { 4059 FRAG_VERT_ONLY("mat4x2", (yylsp[0])); 4060 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4061 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4062 (yyval.interm.type).setMatrix(4, 2); 4063 } 4064 4065 break; 4066 4067 case 182: 4068 4069 { 4070 FRAG_VERT_ONLY("mat3x4", (yylsp[0])); 4071 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4072 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4073 (yyval.interm.type).setMatrix(3, 4); 4074 } 4075 4076 break; 4077 4078 case 183: 4079 4080 { 4081 FRAG_VERT_ONLY("mat4x3", (yylsp[0])); 4082 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4083 (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[0])); 4084 (yyval.interm.type).setMatrix(4, 3); 4085 } 4086 4087 break; 4088 4089 case 184: 4090 4091 { 4092 FRAG_VERT_ONLY("sampler2D", (yylsp[0])); 4093 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4094 (yyval.interm.type).setBasic(EbtSampler2D, qual, (yylsp[0])); 4095 } 4096 4097 break; 4098 4099 case 185: 4100 4101 { 4102 FRAG_VERT_ONLY("samplerCube", (yylsp[0])); 4103 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4104 (yyval.interm.type).setBasic(EbtSamplerCube, qual, (yylsp[0])); 4105 } 4106 4107 break; 4108 4109 case 186: 4110 4111 { 4112 if (!context->supportsExtension("GL_OES_EGL_image_external")) { 4113 context->error((yylsp[0]), "unsupported type", "samplerExternalOES", ""); 4114 context->recover(); 4115 } 4116 FRAG_VERT_ONLY("samplerExternalOES", (yylsp[0])); 4117 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4118 (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yylsp[0])); 4119 } 4120 4121 break; 4122 4123 case 187: 4124 4125 { 4126 FRAG_VERT_ONLY("sampler3D", (yylsp[0])); 4127 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4128 (yyval.interm.type).setBasic(EbtSampler3D, qual, (yylsp[0])); 4129 } 4130 4131 break; 4132 4133 case 188: 4134 4135 { 4136 FRAG_VERT_ONLY("sampler2DArray", (yylsp[0])); 4137 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4138 (yyval.interm.type).setBasic(EbtSampler2DArray, qual, (yylsp[0])); 4139 } 4140 4141 break; 4142 4143 case 189: 4144 4145 { 4146 FRAG_VERT_ONLY("isampler2D", (yylsp[0])); 4147 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4148 (yyval.interm.type).setBasic(EbtISampler2D, qual, (yylsp[0])); 4149 } 4150 4151 break; 4152 4153 case 190: 4154 4155 { 4156 FRAG_VERT_ONLY("isampler3D", (yylsp[0])); 4157 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4158 (yyval.interm.type).setBasic(EbtISampler3D, qual, (yylsp[0])); 4159 } 4160 4161 break; 4162 4163 case 191: 4164 4165 { 4166 FRAG_VERT_ONLY("isamplerCube", (yylsp[0])); 4167 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4168 (yyval.interm.type).setBasic(EbtISamplerCube, qual, (yylsp[0])); 4169 } 4170 4171 break; 4172 4173 case 192: 4174 4175 { 4176 FRAG_VERT_ONLY("isampler2DArray", (yylsp[0])); 4177 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4178 (yyval.interm.type).setBasic(EbtISampler2DArray, qual, (yylsp[0])); 4179 } 4180 4181 break; 4182 4183 case 193: 4184 4185 { 4186 FRAG_VERT_ONLY("usampler2D", (yylsp[0])); 4187 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4188 (yyval.interm.type).setBasic(EbtUSampler2D, qual, (yylsp[0])); 4189 } 4190 4191 break; 4192 4193 case 194: 4194 4195 { 4196 FRAG_VERT_ONLY("usampler3D", (yylsp[0])); 4197 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4198 (yyval.interm.type).setBasic(EbtUSampler3D, qual, (yylsp[0])); 4199 } 4200 4201 break; 4202 4203 case 195: 4204 4205 { 4206 FRAG_VERT_ONLY("usamplerCube", (yylsp[0])); 4207 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4208 (yyval.interm.type).setBasic(EbtUSamplerCube, qual, (yylsp[0])); 4209 } 4210 4211 break; 4212 4213 case 196: 4214 4215 { 4216 FRAG_VERT_ONLY("usampler2DArray", (yylsp[0])); 4217 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4218 (yyval.interm.type).setBasic(EbtUSampler2DArray, qual, (yylsp[0])); 4219 } 4220 4221 break; 4222 4223 case 197: 4224 4225 { 4226 FRAG_VERT_ONLY("sampler2DShadow", (yylsp[0])); 4227 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4228 (yyval.interm.type).setBasic(EbtSampler2DShadow, qual, (yylsp[0])); 4229 } 4230 4231 break; 4232 4233 case 198: 4234 4235 { 4236 FRAG_VERT_ONLY("samplerCubeShadow", (yylsp[0])); 4237 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4238 (yyval.interm.type).setBasic(EbtSamplerCubeShadow, qual, (yylsp[0])); 4239 } 4240 4241 break; 4242 4243 case 199: 4244 4245 { 4246 FRAG_VERT_ONLY("sampler2DArrayShadow", (yylsp[0])); 4247 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4248 (yyval.interm.type).setBasic(EbtSampler2DArrayShadow, qual, (yylsp[0])); 4249 } 4250 4251 break; 4252 4253 case 200: 4254 4255 { 4256 FRAG_VERT_ONLY("struct", (yylsp[0])); 4257 (yyval.interm.type) = (yyvsp[0].interm.type); 4258 (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4259 } 4260 4261 break; 4262 4263 case 201: 4264 4265 { 4266 // 4267 // This is for user defined type names. The lexical phase looked up the 4268 // type. 4269 // 4270 TType& structure = static_cast<TVariable*>((yyvsp[0].lex).symbol)->getType(); 4271 TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; 4272 (yyval.interm.type).setBasic(EbtStruct, qual, (yylsp[0])); 4273 (yyval.interm.type).userDef = &structure; 4274 } 4275 4276 break; 4277 4278 case 202: 4279 4280 { if (context->enterStructDeclaration((yylsp[-1]), *(yyvsp[-1].lex).string)) context->recover(); } 4281 4282 break; 4283 4284 case 203: 4285 4286 { 4287 (yyval.interm.type) = context->addStructure((yylsp[-5]), (yylsp[-4]), (yyvsp[-4].lex).string, (yyvsp[-1].interm.fieldList)); 4288 } 4289 4290 break; 4291 4292 case 204: 4293 4294 { if (context->enterStructDeclaration((yylsp[0]), *(yyvsp[0].lex).string)) context->recover(); } 4295 4296 break; 4297 4298 case 205: 4299 4300 { 4301 (yyval.interm.type) = context->addStructure((yylsp[-4]), (yylsp[-4]), NewPoolTString(""), (yyvsp[-1].interm.fieldList)); 4302 } 4303 4304 break; 4305 4306 case 206: 4307 4308 { 4309 (yyval.interm.fieldList) = (yyvsp[0].interm.fieldList); 4310 } 4311 4312 break; 4313 4314 case 207: 4315 4316 { 4317 (yyval.interm.fieldList) = (yyvsp[-1].interm.fieldList); 4318 for (unsigned int i = 0; i < (yyvsp[0].interm.fieldList)->size(); ++i) { 4319 TField* field = (*(yyvsp[0].interm.fieldList))[i]; 4320 for (unsigned int j = 0; j < (yyval.interm.fieldList)->size(); ++j) { 4321 if ((*(yyval.interm.fieldList))[j]->name() == field->name()) { 4322 context->error((*(yyvsp[0].interm.fieldList))[i]->line(), "duplicate field name in structure:", "struct", field->name().c_str()); 4323 context->recover(); 4324 } 4325 } 4326 (yyval.interm.fieldList)->push_back((*(yyvsp[0].interm.fieldList))[i]); 4327 } 4328 } 4329 4330 break; 4331 4332 case 208: 4333 4334 { 4335 (yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[-2].interm.type), (yyvsp[-1].interm.fieldList)); 4336 } 4337 4338 break; 4339 4340 case 209: 4341 4342 { 4343 // ES3 Only, but errors should be handled elsewhere 4344 (yyvsp[-2].interm.type).qualifier = (yyvsp[-3].interm.type).qualifier; 4345 (yyvsp[-2].interm.type).layoutQualifier = (yyvsp[-3].interm.type).layoutQualifier; 4346 (yyval.interm.fieldList) = context->addStructDeclaratorList((yyvsp[-2].interm.type), (yyvsp[-1].interm.fieldList)); 4347 } 4348 4349 break; 4350 4351 case 210: 4352 4353 { 4354 (yyval.interm.fieldList) = NewPoolTFieldList(); 4355 (yyval.interm.fieldList)->push_back((yyvsp[0].interm.field)); 4356 } 4357 4358 break; 4359 4360 case 211: 4361 4362 { 4363 (yyval.interm.fieldList)->push_back((yyvsp[0].interm.field)); 4364 } 4365 4366 break; 4367 4368 case 212: 4369 4370 { 4371 if (context->reservedErrorCheck((yylsp[0]), *(yyvsp[0].lex).string)) 4372 context->recover(); 4373 4374 TType* type = new TType(EbtVoid, EbpUndefined); 4375 (yyval.interm.field) = new TField(type, (yyvsp[0].lex).string, (yylsp[0])); 4376 } 4377 4378 break; 4379 4380 case 213: 4381 4382 { 4383 if (context->reservedErrorCheck((yylsp[-3]), *(yyvsp[-3].lex).string)) 4384 context->recover(); 4385 4386 TType* type = new TType(EbtVoid, EbpUndefined); 4387 int size; 4388 if (context->arraySizeErrorCheck((yyvsp[-1].interm.intermTypedNode)->getLine(), (yyvsp[-1].interm.intermTypedNode), size)) 4389 context->recover(); 4390 type->setArraySize(size); 4391 4392 (yyval.interm.field) = new TField(type, (yyvsp[-3].lex).string, (yylsp[-3])); 4393 } 4394 4395 break; 4396 4397 case 214: 4398 4399 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } 4400 4401 break; 4402 4403 case 215: 4404 4405 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4406 4407 break; 4408 4409 case 216: 4410 4411 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); } 4412 4413 break; 4414 4415 case 217: 4416 4417 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4418 4419 break; 4420 4421 case 218: 4422 4423 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4424 4425 break; 4426 4427 case 219: 4428 4429 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4430 4431 break; 4432 4433 case 220: 4434 4435 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4436 4437 break; 4438 4439 case 221: 4440 4441 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermSwitch); } 4442 4443 break; 4444 4445 case 222: 4446 4447 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermCase); } 4448 4449 break; 4450 4451 case 223: 4452 4453 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4454 4455 break; 4456 4457 case 224: 4458 4459 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4460 4461 break; 4462 4463 case 225: 4464 4465 { (yyval.interm.intermAggregate) = 0; } 4466 4467 break; 4468 4469 case 226: 4470 4471 { context->symbolTable.push(); } 4472 4473 break; 4474 4475 case 227: 4476 4477 { context->symbolTable.pop(); } 4478 4479 break; 4480 4481 case 228: 4482 4483 { 4484 if ((yyvsp[-2].interm.intermAggregate) != 0) { 4485 (yyvsp[-2].interm.intermAggregate)->setOp(EOpSequence); 4486 (yyvsp[-2].interm.intermAggregate)->setEndLine((yylsp[0])); 4487 } 4488 (yyval.interm.intermAggregate) = (yyvsp[-2].interm.intermAggregate); 4489 } 4490 4491 break; 4492 4493 case 229: 4494 4495 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); } 4496 4497 break; 4498 4499 case 230: 4500 4501 { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4502 4503 break; 4504 4505 case 231: 4506 4507 { context->symbolTable.push(); } 4508 4509 break; 4510 4511 case 232: 4512 4513 { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermAggregate); } 4514 4515 break; 4516 4517 case 233: 4518 4519 { context->symbolTable.push(); } 4520 4521 break; 4522 4523 case 234: 4524 4525 { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } 4526 4527 break; 4528 4529 case 235: 4530 4531 { 4532 (yyval.interm.intermAggregate) = 0; 4533 } 4534 4535 break; 4536 4537 case 236: 4538 4539 { 4540 if ((yyvsp[-1].interm.intermAggregate)) { 4541 (yyvsp[-1].interm.intermAggregate)->setOp(EOpSequence); 4542 (yyvsp[-1].interm.intermAggregate)->setEndLine((yylsp[0])); 4543 } 4544 (yyval.interm.intermAggregate) = (yyvsp[-1].interm.intermAggregate); 4545 } 4546 4547 break; 4548 4549 case 237: 4550 4551 { 4552 (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[0].interm.intermNode), (yyloc)); 4553 } 4554 4555 break; 4556 4557 case 238: 4558 4559 { 4560 (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[-1].interm.intermAggregate), (yyvsp[0].interm.intermNode), (yyloc)); 4561 } 4562 4563 break; 4564 4565 case 239: 4566 4567 { (yyval.interm.intermNode) = 0; } 4568 4569 break; 4570 4571 case 240: 4572 4573 { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); } 4574 4575 break; 4576 4577 case 241: 4578 4579 { 4580 if (context->boolErrorCheck((yylsp[-4]), (yyvsp[-2].interm.intermTypedNode))) 4581 context->recover(); 4582 (yyval.interm.intermNode) = context->intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yylsp[-4])); 4583 } 4584 4585 break; 4586 4587 case 242: 4588 4589 { 4590 (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); 4591 (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); 4592 } 4593 4594 break; 4595 4596 case 243: 4597 4598 { 4599 (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); 4600 (yyval.interm.nodePair).node2 = 0; 4601 } 4602 4603 break; 4604 4605 case 244: 4606 4607 { context->incrSwitchNestingLevel(); } 4608 4609 break; 4610 4611 case 245: 4612 4613 { 4614 (yyval.interm.intermSwitch) = context->addSwitch((yyvsp[-3].interm.intermTypedNode), (yyvsp[0].interm.intermAggregate), (yylsp[-5])); 4615 context->decrSwitchNestingLevel(); 4616 } 4617 4618 break; 4619 4620 case 246: 4621 4622 { 4623 (yyval.interm.intermCase) = context->addCase((yyvsp[-1].interm.intermTypedNode), (yylsp[-2])); 4624 } 4625 4626 break; 4627 4628 case 247: 4629 4630 { 4631 (yyval.interm.intermCase) = context->addDefault((yylsp[-1])); 4632 } 4633 4634 break; 4635 4636 case 248: 4637 4638 { 4639 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 4640 if (context->boolErrorCheck((yyvsp[0].interm.intermTypedNode)->getLine(), (yyvsp[0].interm.intermTypedNode))) 4641 context->recover(); 4642 } 4643 4644 break; 4645 4646 case 249: 4647 4648 { 4649 TIntermNode *intermNode; 4650 if (context->boolErrorCheck((yylsp[-2]), (yyvsp[-3].interm.type))) 4651 context->recover(); 4652 4653 if (!context->executeInitializer((yylsp[-2]), *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), (yyvsp[0].interm.intermTypedNode), &intermNode)) 4654 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 4655 else { 4656 context->recover(); 4657 (yyval.interm.intermTypedNode) = 0; 4658 } 4659 } 4660 4661 break; 4662 4663 case 250: 4664 4665 { context->symbolTable.push(); context->incrLoopNestingLevel(); } 4666 4667 break; 4668 4669 case 251: 4670 4671 { 4672 context->symbolTable.pop(); 4673 (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopWhile, 0, (yyvsp[-2].interm.intermTypedNode), 0, (yyvsp[0].interm.intermNode), (yylsp[-5])); 4674 context->decrLoopNestingLevel(); 4675 } 4676 4677 break; 4678 4679 case 252: 4680 4681 { context->incrLoopNestingLevel(); } 4682 4683 break; 4684 4685 case 253: 4686 4687 { 4688 if (context->boolErrorCheck((yylsp[0]), (yyvsp[-2].interm.intermTypedNode))) 4689 context->recover(); 4690 4691 (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[-2].interm.intermTypedNode), 0, (yyvsp[-5].interm.intermNode), (yylsp[-4])); 4692 context->decrLoopNestingLevel(); 4693 } 4694 4695 break; 4696 4697 case 254: 4698 4699 { context->symbolTable.push(); context->incrLoopNestingLevel(); } 4700 4701 break; 4702 4703 case 255: 4704 4705 { 4706 context->symbolTable.pop(); 4707 (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[-3].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[-2].interm.nodePair).node2), (yyvsp[0].interm.intermNode), (yylsp[-6])); 4708 context->decrLoopNestingLevel(); 4709 } 4710 4711 break; 4712 4713 case 256: 4714 4715 { 4716 (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); 4717 } 4718 4719 break; 4720 4721 case 257: 4722 4723 { 4724 (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); 4725 } 4726 4727 break; 4728 4729 case 258: 4730 4731 { 4732 (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); 4733 } 4734 4735 break; 4736 4737 case 259: 4738 4739 { 4740 (yyval.interm.intermTypedNode) = 0; 4741 } 4742 4743 break; 4744 4745 case 260: 4746 4747 { 4748 (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); 4749 (yyval.interm.nodePair).node2 = 0; 4750 } 4751 4752 break; 4753 4754 case 261: 4755 4756 { 4757 (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); 4758 (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); 4759 } 4760 4761 break; 4762 4763 case 262: 4764 4765 { 4766 (yyval.interm.intermNode) = context->addBranch(EOpContinue, (yylsp[-1])); 4767 } 4768 4769 break; 4770 4771 case 263: 4772 4773 { 4774 (yyval.interm.intermNode) = context->addBranch(EOpBreak, (yylsp[-1])); 4775 } 4776 4777 break; 4778 4779 case 264: 4780 4781 { 4782 (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yylsp[-1])); 4783 } 4784 4785 break; 4786 4787 case 265: 4788 4789 { 4790 (yyval.interm.intermNode) = context->addBranch(EOpReturn, (yyvsp[-1].interm.intermTypedNode), (yylsp[-2])); 4791 } 4792 4793 break; 4794 4795 case 266: 4796 4797 { 4798 FRAG_ONLY("discard", (yylsp[-1])); 4799 (yyval.interm.intermNode) = context->addBranch(EOpKill, (yylsp[-1])); 4800 } 4801 4802 break; 4803 4804 case 267: 4805 4806 { 4807 (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); 4808 context->setTreeRoot((yyval.interm.intermNode)); 4809 } 4810 4811 break; 4812 4813 case 268: 4814 4815 { 4816 (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode), (yyloc)); 4817 context->setTreeRoot((yyval.interm.intermNode)); 4818 } 4819 4820 break; 4821 4822 case 269: 4823 4824 { 4825 (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); 4826 } 4827 4828 break; 4829 4830 case 270: 4831 4832 { 4833 (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); 4834 } 4835 4836 break; 4837 4838 case 271: 4839 4840 { 4841 context->parseFunctionPrototype((yylsp[0]), (yyvsp[0].interm).function, &(yyvsp[0].interm).intermAggregate); 4842 } 4843 4844 break; 4845 4846 case 272: 4847 4848 { 4849 (yyval.interm.intermNode) = context->addFunctionDefinition(*((yyvsp[-2].interm).function), (yyvsp[-2].interm).intermAggregate, (yyvsp[0].interm.intermAggregate), (yylsp[-2])); 4850 } 4851 4852 break; 4853 4854 4855 4856 default: break; 4857 } 4858 /* User semantic actions sometimes alter yychar, and that requires 4859 that yytoken be updated with the new translation. We take the 4860 approach of translating immediately before every use of yytoken. 4861 One alternative is translating here after every semantic action, 4862 but that translation would be missed if the semantic action invokes 4863 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 4864 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 4865 incorrect destructor might then be invoked immediately. In the 4866 case of YYERROR or YYBACKUP, subsequent parser actions might lead 4867 to an incorrect destructor call or verbose syntax error message 4868 before the lookahead is translated. */ 4869 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 4870 4871 YYPOPSTACK (yylen); 4872 yylen = 0; 4873 YY_STACK_PRINT (yyss, yyssp); 4874 4875 *++yyvsp = yyval; 4876 *++yylsp = yyloc; 4877 4878 /* Now 'shift' the result of the reduction. Determine what state 4879 that goes to, based on the state we popped back to and the rule 4880 number reduced by. */ 4881 4882 yyn = yyr1[yyn]; 4883 4884 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 4885 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 4886 yystate = yytable[yystate]; 4887 else 4888 yystate = yydefgoto[yyn - YYNTOKENS]; 4889 4890 goto yynewstate; 4891 4892 4893 /*--------------------------------------. 4894 | yyerrlab -- here on detecting error. | 4895 `--------------------------------------*/ 4896 yyerrlab: 4897 /* Make sure we have latest lookahead translation. See comments at 4898 user semantic actions for why this is necessary. */ 4899 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 4900 4901 /* If not already recovering from an error, report this error. */ 4902 if (!yyerrstatus) 4903 { 4904 ++yynerrs; 4905 #if ! YYERROR_VERBOSE 4906 yyerror (&yylloc, context, yyscanner, YY_("syntax error")); 4907 #else 4908 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 4909 yyssp, yytoken) 4910 { 4911 char const *yymsgp = YY_("syntax error"); 4912 int yysyntax_error_status; 4913 yysyntax_error_status = YYSYNTAX_ERROR; 4914 if (yysyntax_error_status == 0) 4915 yymsgp = yymsg; 4916 else if (yysyntax_error_status == 1) 4917 { 4918 if (yymsg != yymsgbuf) 4919 YYSTACK_FREE (yymsg); 4920 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 4921 if (!yymsg) 4922 { 4923 yymsg = yymsgbuf; 4924 yymsg_alloc = sizeof yymsgbuf; 4925 yysyntax_error_status = 2; 4926 } 4927 else 4928 { 4929 yysyntax_error_status = YYSYNTAX_ERROR; 4930 yymsgp = yymsg; 4931 } 4932 } 4933 yyerror (&yylloc, context, yyscanner, yymsgp); 4934 if (yysyntax_error_status == 2) 4935 goto yyexhaustedlab; 4936 } 4937 # undef YYSYNTAX_ERROR 4938 #endif 4939 } 4940 4941 yyerror_range[1] = yylloc; 4942 4943 if (yyerrstatus == 3) 4944 { 4945 /* If just tried and failed to reuse lookahead token after an 4946 error, discard it. */ 4947 4948 if (yychar <= YYEOF) 4949 { 4950 /* Return failure if at end of input. */ 4951 if (yychar == YYEOF) 4952 YYABORT; 4953 } 4954 else 4955 { 4956 yydestruct ("Error: discarding", 4957 yytoken, &yylval, &yylloc, context, yyscanner); 4958 yychar = YYEMPTY; 4959 } 4960 } 4961 4962 /* Else will try to reuse lookahead token after shifting the error 4963 token. */ 4964 goto yyerrlab1; 4965 4966 4967 /*---------------------------------------------------. 4968 | yyerrorlab -- error raised explicitly by YYERROR. | 4969 `---------------------------------------------------*/ 4970 yyerrorlab: 4971 4972 /* Pacify compilers like GCC when the user code never invokes 4973 YYERROR and the label yyerrorlab therefore never appears in user 4974 code. */ 4975 if (/*CONSTCOND*/ 0) 4976 goto yyerrorlab; 4977 4978 yyerror_range[1] = yylsp[1-yylen]; 4979 /* Do not reclaim the symbols of the rule whose action triggered 4980 this YYERROR. */ 4981 YYPOPSTACK (yylen); 4982 yylen = 0; 4983 YY_STACK_PRINT (yyss, yyssp); 4984 yystate = *yyssp; 4985 goto yyerrlab1; 4986 4987 4988 /*-------------------------------------------------------------. 4989 | yyerrlab1 -- common code for both syntax error and YYERROR. | 4990 `-------------------------------------------------------------*/ 4991 yyerrlab1: 4992 yyerrstatus = 3; /* Each real token shifted decrements this. */ 4993 4994 for (;;) 4995 { 4996 yyn = yypact[yystate]; 4997 if (!yypact_value_is_default (yyn)) 4998 { 4999 yyn += YYTERROR; 5000 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 5001 { 5002 yyn = yytable[yyn]; 5003 if (0 < yyn) 5004 break; 5005 } 5006 } 5007 5008 /* Pop the current state because it cannot handle the error token. */ 5009 if (yyssp == yyss) 5010 YYABORT; 5011 5012 yyerror_range[1] = *yylsp; 5013 yydestruct ("Error: popping", 5014 yystos[yystate], yyvsp, yylsp, context, yyscanner); 5015 YYPOPSTACK (1); 5016 yystate = *yyssp; 5017 YY_STACK_PRINT (yyss, yyssp); 5018 } 5019 5020 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 5021 *++yyvsp = yylval; 5022 YY_IGNORE_MAYBE_UNINITIALIZED_END 5023 5024 yyerror_range[2] = yylloc; 5025 /* Using YYLLOC is tempting, but would change the location of 5026 the lookahead. YYLOC is available though. */ 5027 YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 5028 *++yylsp = yyloc; 5029 5030 /* Shift the error token. */ 5031 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 5032 5033 yystate = yyn; 5034 goto yynewstate; 5035 5036 5037 /*-------------------------------------. 5038 | yyacceptlab -- YYACCEPT comes here. | 5039 `-------------------------------------*/ 5040 yyacceptlab: 5041 yyresult = 0; 5042 goto yyreturn; 5043 5044 /*-----------------------------------. 5045 | yyabortlab -- YYABORT comes here. | 5046 `-----------------------------------*/ 5047 yyabortlab: 5048 yyresult = 1; 5049 goto yyreturn; 5050 5051 #if !defined yyoverflow || YYERROR_VERBOSE 5052 /*-------------------------------------------------. 5053 | yyexhaustedlab -- memory exhaustion comes here. | 5054 `-------------------------------------------------*/ 5055 yyexhaustedlab: 5056 yyerror (&yylloc, context, yyscanner, YY_("memory exhausted")); 5057 yyresult = 2; 5058 /* Fall through. */ 5059 #endif 5060 5061 yyreturn: 5062 if (yychar != YYEMPTY) 5063 { 5064 /* Make sure we have latest lookahead translation. See comments at 5065 user semantic actions for why this is necessary. */ 5066 yytoken = YYTRANSLATE (yychar); 5067 yydestruct ("Cleanup: discarding lookahead", 5068 yytoken, &yylval, &yylloc, context, yyscanner); 5069 } 5070 /* Do not reclaim the symbols of the rule whose action triggered 5071 this YYABORT or YYACCEPT. */ 5072 YYPOPSTACK (yylen); 5073 YY_STACK_PRINT (yyss, yyssp); 5074 while (yyssp != yyss) 5075 { 5076 yydestruct ("Cleanup: popping", 5077 yystos[*yyssp], yyvsp, yylsp, context, yyscanner); 5078 YYPOPSTACK (1); 5079 } 5080 #ifndef yyoverflow 5081 if (yyss != yyssa) 5082 YYSTACK_FREE (yyss); 5083 #endif 5084 #if YYERROR_VERBOSE 5085 if (yymsg != yymsgbuf) 5086 YYSTACK_FREE (yymsg); 5087 #endif 5088 return yyresult; 5089 } 5090 5091 5092 5093 int glslang_parse(TParseContext* context) { 5094 return yyparse(context, context->getScanner()); 5095 } 5096