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