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