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