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