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