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