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