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