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