Home | History | Annotate | Download | only in compiler
      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