1 /* A Bison parser, made by GNU Bison 3.0.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.2"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 1
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62 /* Substitute the variable and function names. */
63 #define yyparse _mesa_glsl_parse
64 #define yylex _mesa_glsl_lex
65 #define yyerror _mesa_glsl_error
66 #define yydebug _mesa_glsl_debug
67 #define yynerrs _mesa_glsl_nerrs
68
69
70 /* Copy the first part of user declarations. */
71 #line 1 "src/glsl/glsl_parser.yy" /* yacc.c:339 */
72
73 /*
74 * Copyright © 2008, 2009 Intel Corporation
75 *
76 * Permission is hereby granted, free of charge, to any person obtaining a
77 * copy of this software and associated documentation files (the "Software"),
78 * to deal in the Software without restriction, including without limitation
79 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
80 * and/or sell copies of the Software, and to permit persons to whom the
81 * Software is furnished to do so, subject to the following conditions:
82 *
83 * The above copyright notice and this permission notice (including the next
84 * paragraph) shall be included in all copies or substantial portions of the
85 * Software.
86 *
87 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
88 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
89 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
90 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
91 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
93 * DEALINGS IN THE SOFTWARE.
94 */
95 #include <stdio.h>
96 #include <stdlib.h>
97 #include <string.h>
98 #ifndef _MSC_VER
99 #include <strings.h>
100 #endif
101 #include <assert.h>
102
103 #include "ast.h"
104 #include "glsl_parser_extras.h"
105 #include "glsl_types.h"
106 #include "main/context.h"
107
108 #if defined(_MSC_VER)
109 # pragma warning(disable: 4065) // warning C4065: switch statement contains 'default' but no 'case' labels
110 # pragma warning(disable: 4244) // warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
111 #endif // defined(_MSC_VER)
112
113 #undef yyerror
114
yyerror(YYLTYPE * loc,_mesa_glsl_parse_state * st,const char * msg)115 static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)
116 {
117 _mesa_glsl_error(loc, st, "%s", msg);
118 }
119
120 static int
_mesa_glsl_lex(YYSTYPE * val,YYLTYPE * loc,_mesa_glsl_parse_state * state)121 _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state)
122 {
123 return _mesa_glsl_lexer_lex(val, loc, state->scanner);
124 }
125
match_layout_qualifier(const char * s1,const char * s2,_mesa_glsl_parse_state * state)126 static bool match_layout_qualifier(const char *s1, const char *s2,
127 _mesa_glsl_parse_state *state)
128 {
129 /* From the GLSL 1.50 spec, section 4.3.8 (Layout Qualifiers):
130 *
131 * "The tokens in any layout-qualifier-id-list ... are not case
132 * sensitive, unless explicitly noted otherwise."
133 *
134 * The text "unless explicitly noted otherwise" appears to be
135 * vacuous--no desktop GLSL spec (up through GLSL 4.40) notes
136 * otherwise.
137 *
138 * However, the GLSL ES 3.00 spec says, in section 4.3.8 (Layout
139 * Qualifiers):
140 *
141 * "As for other identifiers, they are case sensitive."
142 *
143 * So we need to do a case-sensitive or a case-insensitive match,
144 * depending on whether we are compiling for GLSL ES.
145 */
146 if (state->es_shader)
147 return strcmp(s1, s2);
148 else
149 return strcasecmp(s1, s2);
150 }
151
152 #line 153 "src/glsl/glsl_parser.cpp" /* yacc.c:339 */
153
154 # ifndef YY_NULLPTR
155 # if defined __cplusplus && 201103L <= __cplusplus
156 # define YY_NULLPTR nullptr
157 # else
158 # define YY_NULLPTR 0
159 # endif
160 # endif
161
162 /* Enabling verbose error messages. */
163 #ifdef YYERROR_VERBOSE
164 # undef YYERROR_VERBOSE
165 # define YYERROR_VERBOSE 1
166 #else
167 # define YYERROR_VERBOSE 1
168 #endif
169
170 /* In a future release of Bison, this section will be replaced
171 by #include "glsl_parser.h". */
172 #ifndef YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED
173 # define YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED
174 /* Debug traces. */
175 #ifndef YYDEBUG
176 # define YYDEBUG 0
177 #endif
178 #if YYDEBUG
179 extern int _mesa_glsl_debug;
180 #endif
181
182 /* Token type. */
183 #ifndef YYTOKENTYPE
184 # define YYTOKENTYPE
185 enum yytokentype
186 {
187 ATTRIBUTE = 258,
188 CONST_TOK = 259,
189 BOOL_TOK = 260,
190 FLOAT_TOK = 261,
191 INT_TOK = 262,
192 UINT_TOK = 263,
193 BREAK = 264,
194 CONTINUE = 265,
195 DO = 266,
196 ELSE = 267,
197 FOR = 268,
198 IF = 269,
199 DISCARD = 270,
200 RETURN = 271,
201 SWITCH = 272,
202 CASE = 273,
203 DEFAULT = 274,
204 BVEC2 = 275,
205 BVEC3 = 276,
206 BVEC4 = 277,
207 IVEC2 = 278,
208 IVEC3 = 279,
209 IVEC4 = 280,
210 UVEC2 = 281,
211 UVEC3 = 282,
212 UVEC4 = 283,
213 VEC2 = 284,
214 VEC3 = 285,
215 VEC4 = 286,
216 CENTROID = 287,
217 IN_TOK = 288,
218 OUT_TOK = 289,
219 INOUT_TOK = 290,
220 UNIFORM = 291,
221 VARYING = 292,
222 SAMPLE = 293,
223 NOPERSPECTIVE = 294,
224 FLAT = 295,
225 SMOOTH = 296,
226 MAT2X2 = 297,
227 MAT2X3 = 298,
228 MAT2X4 = 299,
229 MAT3X2 = 300,
230 MAT3X3 = 301,
231 MAT3X4 = 302,
232 MAT4X2 = 303,
233 MAT4X3 = 304,
234 MAT4X4 = 305,
235 SAMPLER1D = 306,
236 SAMPLER2D = 307,
237 SAMPLER3D = 308,
238 SAMPLERCUBE = 309,
239 SAMPLER1DSHADOW = 310,
240 SAMPLER2DSHADOW = 311,
241 SAMPLERCUBESHADOW = 312,
242 SAMPLER1DARRAY = 313,
243 SAMPLER2DARRAY = 314,
244 SAMPLER1DARRAYSHADOW = 315,
245 SAMPLER2DARRAYSHADOW = 316,
246 SAMPLERCUBEARRAY = 317,
247 SAMPLERCUBEARRAYSHADOW = 318,
248 ISAMPLER1D = 319,
249 ISAMPLER2D = 320,
250 ISAMPLER3D = 321,
251 ISAMPLERCUBE = 322,
252 ISAMPLER1DARRAY = 323,
253 ISAMPLER2DARRAY = 324,
254 ISAMPLERCUBEARRAY = 325,
255 USAMPLER1D = 326,
256 USAMPLER2D = 327,
257 USAMPLER3D = 328,
258 USAMPLERCUBE = 329,
259 USAMPLER1DARRAY = 330,
260 USAMPLER2DARRAY = 331,
261 USAMPLERCUBEARRAY = 332,
262 SAMPLER2DRECT = 333,
263 ISAMPLER2DRECT = 334,
264 USAMPLER2DRECT = 335,
265 SAMPLER2DRECTSHADOW = 336,
266 SAMPLERBUFFER = 337,
267 ISAMPLERBUFFER = 338,
268 USAMPLERBUFFER = 339,
269 SAMPLER2DMS = 340,
270 ISAMPLER2DMS = 341,
271 USAMPLER2DMS = 342,
272 SAMPLER2DMSARRAY = 343,
273 ISAMPLER2DMSARRAY = 344,
274 USAMPLER2DMSARRAY = 345,
275 SAMPLEREXTERNALOES = 346,
276 IMAGE1D = 347,
277 IMAGE2D = 348,
278 IMAGE3D = 349,
279 IMAGE2DRECT = 350,
280 IMAGECUBE = 351,
281 IMAGEBUFFER = 352,
282 IMAGE1DARRAY = 353,
283 IMAGE2DARRAY = 354,
284 IMAGECUBEARRAY = 355,
285 IMAGE2DMS = 356,
286 IMAGE2DMSARRAY = 357,
287 IIMAGE1D = 358,
288 IIMAGE2D = 359,
289 IIMAGE3D = 360,
290 IIMAGE2DRECT = 361,
291 IIMAGECUBE = 362,
292 IIMAGEBUFFER = 363,
293 IIMAGE1DARRAY = 364,
294 IIMAGE2DARRAY = 365,
295 IIMAGECUBEARRAY = 366,
296 IIMAGE2DMS = 367,
297 IIMAGE2DMSARRAY = 368,
298 UIMAGE1D = 369,
299 UIMAGE2D = 370,
300 UIMAGE3D = 371,
301 UIMAGE2DRECT = 372,
302 UIMAGECUBE = 373,
303 UIMAGEBUFFER = 374,
304 UIMAGE1DARRAY = 375,
305 UIMAGE2DARRAY = 376,
306 UIMAGECUBEARRAY = 377,
307 UIMAGE2DMS = 378,
308 UIMAGE2DMSARRAY = 379,
309 IMAGE1DSHADOW = 380,
310 IMAGE2DSHADOW = 381,
311 IMAGE1DARRAYSHADOW = 382,
312 IMAGE2DARRAYSHADOW = 383,
313 COHERENT = 384,
314 VOLATILE = 385,
315 RESTRICT = 386,
316 READONLY = 387,
317 WRITEONLY = 388,
318 ATOMIC_UINT = 389,
319 STRUCT = 390,
320 VOID_TOK = 391,
321 WHILE = 392,
322 IDENTIFIER = 393,
323 TYPE_IDENTIFIER = 394,
324 NEW_IDENTIFIER = 395,
325 FLOATCONSTANT = 396,
326 INTCONSTANT = 397,
327 UINTCONSTANT = 398,
328 BOOLCONSTANT = 399,
329 FIELD_SELECTION = 400,
330 LEFT_OP = 401,
331 RIGHT_OP = 402,
332 INC_OP = 403,
333 DEC_OP = 404,
334 LE_OP = 405,
335 GE_OP = 406,
336 EQ_OP = 407,
337 NE_OP = 408,
338 AND_OP = 409,
339 OR_OP = 410,
340 XOR_OP = 411,
341 MUL_ASSIGN = 412,
342 DIV_ASSIGN = 413,
343 ADD_ASSIGN = 414,
344 MOD_ASSIGN = 415,
345 LEFT_ASSIGN = 416,
346 RIGHT_ASSIGN = 417,
347 AND_ASSIGN = 418,
348 XOR_ASSIGN = 419,
349 OR_ASSIGN = 420,
350 SUB_ASSIGN = 421,
351 INVARIANT = 422,
352 PRECISE = 423,
353 LOWP = 424,
354 MEDIUMP = 425,
355 HIGHP = 426,
356 SUPERP = 427,
357 PRECISION = 428,
358 VERSION_TOK = 429,
359 EXTENSION = 430,
360 LINE = 431,
361 COLON = 432,
362 EOL = 433,
363 INTERFACE = 434,
364 OUTPUT = 435,
365 PRAGMA_DEBUG_ON = 436,
366 PRAGMA_DEBUG_OFF = 437,
367 PRAGMA_OPTIMIZE_ON = 438,
368 PRAGMA_OPTIMIZE_OFF = 439,
369 PRAGMA_INVARIANT_ALL = 440,
370 LAYOUT_TOK = 441,
371 ASM = 442,
372 CLASS = 443,
373 UNION = 444,
374 ENUM = 445,
375 TYPEDEF = 446,
376 TEMPLATE = 447,
377 THIS = 448,
378 PACKED_TOK = 449,
379 GOTO = 450,
380 INLINE_TOK = 451,
381 NOINLINE = 452,
382 PUBLIC_TOK = 453,
383 STATIC = 454,
384 EXTERN = 455,
385 EXTERNAL = 456,
386 LONG_TOK = 457,
387 SHORT_TOK = 458,
388 DOUBLE_TOK = 459,
389 HALF = 460,
390 FIXED_TOK = 461,
391 UNSIGNED = 462,
392 INPUT_TOK = 463,
393 HVEC2 = 464,
394 HVEC3 = 465,
395 HVEC4 = 466,
396 DVEC2 = 467,
397 DVEC3 = 468,
398 DVEC4 = 469,
399 FVEC2 = 470,
400 FVEC3 = 471,
401 FVEC4 = 472,
402 SAMPLER3DRECT = 473,
403 SIZEOF = 474,
404 CAST = 475,
405 NAMESPACE = 476,
406 USING = 477,
407 RESOURCE = 478,
408 PATCH = 479,
409 SUBROUTINE = 480,
410 ERROR_TOK = 481,
411 COMMON = 482,
412 PARTITION = 483,
413 ACTIVE = 484,
414 FILTER = 485,
415 ROW_MAJOR = 486,
416 THEN = 487
417 };
418 #endif
419
420 /* Value type. */
421 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
422 typedef union YYSTYPE YYSTYPE;
423 union YYSTYPE
424 {
425 #line 99 "src/glsl/glsl_parser.yy" /* yacc.c:355 */
426
427 int n;
428 float real;
429 const char *identifier;
430
431 struct ast_type_qualifier type_qualifier;
432
433 ast_node *node;
434 ast_type_specifier *type_specifier;
435 ast_array_specifier *array_specifier;
436 ast_fully_specified_type *fully_specified_type;
437 ast_function *function;
438 ast_parameter_declarator *parameter_declarator;
439 ast_function_definition *function_definition;
440 ast_compound_statement *compound_statement;
441 ast_expression *expression;
442 ast_declarator_list *declarator_list;
443 ast_struct_specifier *struct_specifier;
444 ast_declaration *declaration;
445 ast_switch_body *switch_body;
446 ast_case_label *case_label;
447 ast_case_label_list *case_label_list;
448 ast_case_statement *case_statement;
449 ast_case_statement_list *case_statement_list;
450 ast_interface_block *interface_block;
451
452 struct {
453 ast_node *cond;
454 ast_expression *rest;
455 } for_rest_statement;
456
457 struct {
458 ast_node *then_statement;
459 ast_node *else_statement;
460 } selection_rest_statement;
461
462 #line 463 "src/glsl/glsl_parser.cpp" /* yacc.c:355 */
463 };
464 # define YYSTYPE_IS_TRIVIAL 1
465 # define YYSTYPE_IS_DECLARED 1
466 #endif
467
468 /* Location type. */
469 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
470 typedef struct YYLTYPE YYLTYPE;
471 struct YYLTYPE
472 {
473 int first_line;
474 int first_column;
475 int last_line;
476 int last_column;
477 };
478 # define YYLTYPE_IS_DECLARED 1
479 # define YYLTYPE_IS_TRIVIAL 1
480 #endif
481
482
483
484 int _mesa_glsl_parse (struct _mesa_glsl_parse_state *state);
485
486 #endif /* !YY__MESA_GLSL_SRC_GLSL_GLSL_PARSER_H_INCLUDED */
487
488 /* Copy the second part of user declarations. */
489
490 #line 491 "src/glsl/glsl_parser.cpp" /* yacc.c:358 */
491
492 #ifdef short
493 # undef short
494 #endif
495
496 #ifdef YYTYPE_UINT8
497 typedef YYTYPE_UINT8 yytype_uint8;
498 #else
499 typedef unsigned char yytype_uint8;
500 #endif
501
502 #ifdef YYTYPE_INT8
503 typedef YYTYPE_INT8 yytype_int8;
504 #else
505 typedef signed char yytype_int8;
506 #endif
507
508 #ifdef YYTYPE_UINT16
509 typedef YYTYPE_UINT16 yytype_uint16;
510 #else
511 typedef unsigned short int yytype_uint16;
512 #endif
513
514 #ifdef YYTYPE_INT16
515 typedef YYTYPE_INT16 yytype_int16;
516 #else
517 typedef short int yytype_int16;
518 #endif
519
520 #ifndef YYSIZE_T
521 # ifdef __SIZE_TYPE__
522 # define YYSIZE_T __SIZE_TYPE__
523 # elif defined size_t
524 # define YYSIZE_T size_t
525 # elif ! defined YYSIZE_T
526 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
527 # define YYSIZE_T size_t
528 # else
529 # define YYSIZE_T unsigned int
530 # endif
531 #endif
532
533 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
534
535 #ifndef YY_
536 # if defined YYENABLE_NLS && YYENABLE_NLS
537 # if ENABLE_NLS
538 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
539 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
540 # endif
541 # endif
542 # ifndef YY_
543 # define YY_(Msgid) Msgid
544 # endif
545 #endif
546
547 #ifndef YY_ATTRIBUTE
548 # if (defined __GNUC__ \
549 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
550 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
551 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
552 # else
553 # define YY_ATTRIBUTE(Spec) /* empty */
554 # endif
555 #endif
556
557 #ifndef YY_ATTRIBUTE_PURE
558 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
559 #endif
560
561 #ifndef YY_ATTRIBUTE_UNUSED
562 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
563 #endif
564
565 #if !defined _Noreturn \
566 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
567 # if defined _MSC_VER && 1200 <= _MSC_VER
568 # define _Noreturn __declspec (noreturn)
569 # else
570 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
571 # endif
572 #endif
573
574 /* Suppress unused-variable warnings by "using" E. */
575 #if ! defined lint || defined __GNUC__
576 # define YYUSE(E) ((void) (E))
577 #else
578 # define YYUSE(E) /* empty */
579 #endif
580
581 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
582 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
583 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
584 _Pragma ("GCC diagnostic push") \
585 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
586 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
587 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
588 _Pragma ("GCC diagnostic pop")
589 #else
590 # define YY_INITIAL_VALUE(Value) Value
591 #endif
592 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
593 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
594 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
595 #endif
596 #ifndef YY_INITIAL_VALUE
597 # define YY_INITIAL_VALUE(Value) /* Nothing. */
598 #endif
599
600
601 #if ! defined yyoverflow || YYERROR_VERBOSE
602
603 /* The parser invokes alloca or malloc; define the necessary symbols. */
604
605 # ifdef YYSTACK_USE_ALLOCA
606 # if YYSTACK_USE_ALLOCA
607 # ifdef __GNUC__
608 # define YYSTACK_ALLOC __builtin_alloca
609 # elif defined __BUILTIN_VA_ARG_INCR
610 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
611 # elif defined _AIX
612 # define YYSTACK_ALLOC __alloca
613 # elif defined _MSC_VER
614 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
615 # define alloca _alloca
616 # else
617 # define YYSTACK_ALLOC alloca
618 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
619 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
620 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
621 # ifndef EXIT_SUCCESS
622 # define EXIT_SUCCESS 0
623 # endif
624 # endif
625 # endif
626 # endif
627 # endif
628
629 # ifdef YYSTACK_ALLOC
630 /* Pacify GCC's 'empty if-body' warning. */
631 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
632 # ifndef YYSTACK_ALLOC_MAXIMUM
633 /* The OS might guarantee only one guard page at the bottom of the stack,
634 and a page size can be as small as 4096 bytes. So we cannot safely
635 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
636 to allow for a few compiler-allocated temporary stack slots. */
637 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
638 # endif
639 # else
640 # define YYSTACK_ALLOC YYMALLOC
641 # define YYSTACK_FREE YYFREE
642 # ifndef YYSTACK_ALLOC_MAXIMUM
643 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
644 # endif
645 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
646 && ! ((defined YYMALLOC || defined malloc) \
647 && (defined YYFREE || defined free)))
648 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
649 # ifndef EXIT_SUCCESS
650 # define EXIT_SUCCESS 0
651 # endif
652 # endif
653 # ifndef YYMALLOC
654 # define YYMALLOC malloc
655 # if ! defined malloc && ! defined EXIT_SUCCESS
656 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
657 # endif
658 # endif
659 # ifndef YYFREE
660 # define YYFREE free
661 # if ! defined free && ! defined EXIT_SUCCESS
662 void free (void *); /* INFRINGES ON USER NAME SPACE */
663 # endif
664 # endif
665 # endif
666 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
667
668
669 #if (! defined yyoverflow \
670 && (! defined __cplusplus \
671 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
672 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
673
674 /* A type that is properly aligned for any stack member. */
675 union yyalloc
676 {
677 yytype_int16 yyss_alloc;
678 YYSTYPE yyvs_alloc;
679 YYLTYPE yyls_alloc;
680 };
681
682 /* The size of the maximum gap between one aligned stack and the next. */
683 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
684
685 /* The size of an array large to enough to hold all stacks, each with
686 N elements. */
687 # define YYSTACK_BYTES(N) \
688 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
689 + 2 * YYSTACK_GAP_MAXIMUM)
690
691 # define YYCOPY_NEEDED 1
692
693 /* Relocate STACK from its old location to the new one. The
694 local variables YYSIZE and YYSTACKSIZE give the old and new number of
695 elements in the stack, and YYPTR gives the new location of the
696 stack. Advance YYPTR to a properly aligned location for the next
697 stack. */
698 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
699 do \
700 { \
701 YYSIZE_T yynewbytes; \
702 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
703 Stack = &yyptr->Stack_alloc; \
704 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
705 yyptr += yynewbytes / sizeof (*yyptr); \
706 } \
707 while (0)
708
709 #endif
710
711 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
712 /* Copy COUNT objects from SRC to DST. The source and destination do
713 not overlap. */
714 # ifndef YYCOPY
715 # if defined __GNUC__ && 1 < __GNUC__
716 # define YYCOPY(Dst, Src, Count) \
717 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
718 # else
719 # define YYCOPY(Dst, Src, Count) \
720 do \
721 { \
722 YYSIZE_T yyi; \
723 for (yyi = 0; yyi < (Count); yyi++) \
724 (Dst)[yyi] = (Src)[yyi]; \
725 } \
726 while (0)
727 # endif
728 # endif
729 #endif /* !YYCOPY_NEEDED */
730
731 /* YYFINAL -- State number of the termination state. */
732 #define YYFINAL 5
733 /* YYLAST -- Last index in YYTABLE. */
734 #define YYLAST 5440
735
736 /* YYNTOKENS -- Number of terminals. */
737 #define YYNTOKENS 257
738 /* YYNNTS -- Number of nonterminals. */
739 #define YYNNTS 108
740 /* YYNRULES -- Number of rules. */
741 #define YYNRULES 386
742 /* YYNSTATES -- Number of states. */
743 #define YYNSTATES 540
744
745 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
746 by yylex, with out-of-bounds checking. */
747 #define YYUNDEFTOK 2
748 #define YYMAXUTOK 487
749
750 #define YYTRANSLATE(YYX) \
751 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
752
753 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
754 as returned by yylex, without out-of-bounds checking. */
755 static const yytype_uint16 yytranslate[] =
756 {
757 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
760 2, 2, 2, 241, 2, 2, 2, 245, 248, 2,
761 233, 234, 243, 239, 238, 240, 237, 244, 2, 2,
762 2, 2, 2, 2, 2, 2, 2, 2, 252, 254,
763 246, 253, 247, 251, 2, 2, 2, 2, 2, 2,
764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
766 2, 235, 2, 236, 249, 2, 2, 2, 2, 2,
767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
769 2, 2, 2, 255, 250, 256, 242, 2, 2, 2,
770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
771 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
782 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
783 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
784 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
785 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
786 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
787 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
788 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
789 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
790 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
791 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
792 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
793 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
794 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
795 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
796 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
797 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
798 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
799 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
800 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
801 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
802 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
803 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
804 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
805 225, 226, 227, 228, 229, 230, 231, 232
806 };
807
808 #if YYDEBUG
809 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
810 static const yytype_uint16 yyrline[] =
811 {
812 0, 303, 303, 302, 314, 316, 323, 333, 334, 335,
813 336, 337, 350, 352, 356, 357, 358, 362, 371, 379,
814 387, 398, 399, 403, 410, 417, 424, 431, 438, 445,
815 446, 452, 456, 463, 469, 478, 482, 486, 487, 496,
816 497, 501, 502, 506, 512, 524, 528, 534, 542, 553,
817 554, 558, 559, 563, 569, 581, 593, 594, 600, 606,
818 616, 617, 618, 619, 623, 624, 630, 636, 645, 646,
819 652, 661, 662, 668, 677, 678, 684, 690, 696, 705,
820 706, 712, 721, 722, 731, 732, 741, 742, 751, 752,
821 761, 762, 771, 772, 781, 782, 791, 792, 801, 802,
822 803, 804, 805, 806, 807, 808, 809, 810, 811, 815,
823 819, 835, 839, 844, 848, 853, 860, 864, 865, 869,
824 874, 882, 896, 906, 920, 925, 939, 943, 951, 959,
825 971, 984, 990, 996, 1006, 1011, 1012, 1022, 1032, 1042,
826 1056, 1063, 1073, 1083, 1093, 1103, 1115, 1130, 1137, 1148,
827 1155, 1156, 1166, 1167, 1171, 1357, 1497, 1523, 1529, 1538,
828 1544, 1550, 1560, 1566, 1571, 1572, 1573, 1574, 1575, 1594,
829 1602, 1614, 1638, 1655, 1671, 1691, 1705, 1711, 1719, 1725,
830 1731, 1737, 1743, 1749, 1770, 1776, 1781, 1786, 1792, 1797,
831 1805, 1811, 1817, 1831, 1846, 1847, 1855, 1861, 1867, 1876,
832 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886,
833 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896,
834 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906,
835 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916,
836 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926,
837 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936,
838 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946,
839 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
840 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966,
841 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
842 1980, 1985, 1990, 1998, 2005, 2014, 2019, 2027, 2046, 2051,
843 2059, 2065, 2074, 2075, 2079, 2086, 2093, 2100, 2106, 2107,
844 2111, 2112, 2113, 2114, 2115, 2116, 2120, 2127, 2126, 2140,
845 2141, 2145, 2151, 2160, 2170, 2182, 2188, 2197, 2206, 2211,
846 2219, 2223, 2241, 2249, 2254, 2262, 2267, 2275, 2283, 2291,
847 2299, 2307, 2315, 2323, 2330, 2337, 2347, 2348, 2352, 2354,
848 2360, 2365, 2374, 2380, 2386, 2392, 2398, 2407, 2408, 2409,
849 2410, 2414, 2428, 2432, 2455, 2560, 2566, 2572, 2582, 2586,
850 2592, 2601, 2606, 2614, 2638, 2646, 2654
851 };
852 #endif
853
854 #if YYDEBUG || YYERROR_VERBOSE || 1
855 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
856 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
857 static const char *const yytname[] =
858 {
859 "$end", "error", "$undefined", "ATTRIBUTE", "CONST_TOK", "BOOL_TOK",
860 "FLOAT_TOK", "INT_TOK", "UINT_TOK", "BREAK", "CONTINUE", "DO", "ELSE",
861 "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "BVEC2",
862 "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", "UVEC4",
863 "VEC2", "VEC3", "VEC4", "CENTROID", "IN_TOK", "OUT_TOK", "INOUT_TOK",
864 "UNIFORM", "VARYING", "SAMPLE", "NOPERSPECTIVE", "FLAT", "SMOOTH",
865 "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2",
866 "MAT4X3", "MAT4X4", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
867 "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
868 "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW",
869 "SAMPLER2DARRAYSHADOW", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW",
870 "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE",
871 "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "ISAMPLERCUBEARRAY", "USAMPLER1D",
872 "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
873 "USAMPLER2DARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DRECT",
874 "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
875 "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS",
876 "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
877 "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "IMAGE1D", "IMAGE2D",
878 "IMAGE3D", "IMAGE2DRECT", "IMAGECUBE", "IMAGEBUFFER", "IMAGE1DARRAY",
879 "IMAGE2DARRAY", "IMAGECUBEARRAY", "IMAGE2DMS", "IMAGE2DMSARRAY",
880 "IIMAGE1D", "IIMAGE2D", "IIMAGE3D", "IIMAGE2DRECT", "IIMAGECUBE",
881 "IIMAGEBUFFER", "IIMAGE1DARRAY", "IIMAGE2DARRAY", "IIMAGECUBEARRAY",
882 "IIMAGE2DMS", "IIMAGE2DMSARRAY", "UIMAGE1D", "UIMAGE2D", "UIMAGE3D",
883 "UIMAGE2DRECT", "UIMAGECUBE", "UIMAGEBUFFER", "UIMAGE1DARRAY",
884 "UIMAGE2DARRAY", "UIMAGECUBEARRAY", "UIMAGE2DMS", "UIMAGE2DMSARRAY",
885 "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGE1DARRAYSHADOW",
886 "IMAGE2DARRAYSHADOW", "COHERENT", "VOLATILE", "RESTRICT", "READONLY",
887 "WRITEONLY", "ATOMIC_UINT", "STRUCT", "VOID_TOK", "WHILE", "IDENTIFIER",
888 "TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", "INTCONSTANT",
889 "UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP",
890 "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
891 "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
892 "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
893 "OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "PRECISE", "LOWP", "MEDIUMP",
894 "HIGHP", "SUPERP", "PRECISION", "VERSION_TOK", "EXTENSION", "LINE",
895 "COLON", "EOL", "INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON",
896 "PRAGMA_DEBUG_OFF", "PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF",
897 "PRAGMA_INVARIANT_ALL", "LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM",
898 "TYPEDEF", "TEMPLATE", "THIS", "PACKED_TOK", "GOTO", "INLINE_TOK",
899 "NOINLINE", "PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL", "LONG_TOK",
900 "SHORT_TOK", "DOUBLE_TOK", "HALF", "FIXED_TOK", "UNSIGNED", "INPUT_TOK",
901 "HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3",
902 "FVEC4", "SAMPLER3DRECT", "SIZEOF", "CAST", "NAMESPACE", "USING",
903 "RESOURCE", "PATCH", "SUBROUTINE", "ERROR_TOK", "COMMON", "PARTITION",
904 "ACTIVE", "FILTER", "ROW_MAJOR", "THEN", "'('", "')'", "'['", "']'",
905 "'.'", "','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'",
906 "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'",
907 "$accept", "translation_unit", "$@1", "version_statement",
908 "pragma_statement", "extension_statement_list", "any_identifier",
909 "extension_statement", "external_declaration_list",
910 "variable_identifier", "primary_expression", "postfix_expression",
911 "integer_expression", "function_call", "function_call_or_method",
912 "function_call_generic", "function_call_header_no_parameters",
913 "function_call_header_with_parameters", "function_call_header",
914 "function_identifier", "method_call_generic",
915 "method_call_header_no_parameters", "method_call_header_with_parameters",
916 "method_call_header", "unary_expression", "unary_operator",
917 "multiplicative_expression", "additive_expression", "shift_expression",
918 "relational_expression", "equality_expression", "and_expression",
919 "exclusive_or_expression", "inclusive_or_expression",
920 "logical_and_expression", "logical_xor_expression",
921 "logical_or_expression", "conditional_expression",
922 "assignment_expression", "assignment_operator", "expression",
923 "constant_expression", "declaration", "function_prototype",
924 "function_declarator", "function_header_with_parameters",
925 "function_header", "parameter_declarator", "parameter_declaration",
926 "parameter_qualifier", "parameter_direction_qualifier",
927 "parameter_type_specifier", "init_declarator_list", "single_declaration",
928 "fully_specified_type", "layout_qualifier", "layout_qualifier_id_list",
929 "integer_constant", "layout_qualifier_id",
930 "interface_block_layout_qualifier", "interpolation_qualifier",
931 "type_qualifier", "auxiliary_storage_qualifier", "storage_qualifier",
932 "array_specifier", "type_specifier", "type_specifier_nonarray",
933 "basic_type_specifier_nonarray", "precision_qualifier",
934 "struct_specifier", "struct_declaration_list", "struct_declaration",
935 "struct_declarator_list", "struct_declarator", "initializer",
936 "initializer_list", "declaration_statement", "statement",
937 "simple_statement", "compound_statement", "$@2",
938 "statement_no_new_scope", "compound_statement_no_new_scope",
939 "statement_list", "expression_statement", "selection_statement",
940 "selection_rest_statement", "condition", "switch_statement",
941 "switch_body", "case_label", "case_label_list", "case_statement",
942 "case_statement_list", "iteration_statement", "for_init_statement",
943 "conditionopt", "for_rest_statement", "jump_statement",
944 "external_declaration", "function_definition", "interface_block",
945 "basic_interface_block", "interface_qualifier", "instance_name_opt",
946 "member_list", "member_declaration", "layout_defaults", YY_NULLPTR
947 };
948 #endif
949
950 # ifdef YYPRINT
951 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
952 (internal) symbol number NUM (which must be that of a token). */
953 static const yytype_uint16 yytoknum[] =
954 {
955 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
956 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
957 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
958 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
959 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
960 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
961 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
962 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
963 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
964 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
965 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
966 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
967 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
968 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
969 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
970 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
971 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
972 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
973 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
974 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
975 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
976 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
977 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
978 485, 486, 487, 40, 41, 91, 93, 46, 44, 43,
979 45, 33, 126, 42, 47, 37, 60, 62, 38, 94,
980 124, 63, 58, 61, 59, 123, 125
981 };
982 # endif
983
984 #define YYPACT_NINF -414
985
986 #define yypact_value_is_default(Yystate) \
987 (!!((Yystate) == (-414)))
988
989 #define YYTABLE_NINF -378
990
991 #define yytable_value_is_error(Yytable_value) \
992 0
993
994 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
995 STATE-NUM. */
996 static const yytype_int16 yypact[] =
997 {
998 -129, -92, 53, -414, -103, -414, -57, -414, -414, -414,
999 -414, -58, -54, 4836, -414, -414, -51, -414, -414, -414,
1000 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1001 -414, -414, -414, -414, -414, -414, -17, -12, -414, 13,
1002 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1003 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1004 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1005 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1006 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1007 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1008 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1009 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1010 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1011 -414, -414, -414, -414, -119, -414, -414, 266, 266, -414,
1012 -414, -414, 15, -33, -14, -8, -3, 10, -37, -414,
1013 4652, -414, -196, -26, -27, 30, -199, -414, 54, 314,
1014 5129, 5301, 5129, 5129, -414, -15, -414, 5129, -414, -414,
1015 -414, -414, -414, 82, -414, -54, 5007, -31, -414, -414,
1016 -414, -414, -414, 5129, 5129, -414, 5129, -414, -414, -414,
1017 5301, -414, -414, -414, -414, -414, -107, -414, -414, -414,
1018 525, -414, -414, 36, 36, -414, -414, -414, 36, -414,
1019 5301, 36, 36, -54, -414, 3, 11, -197, 12, -123,
1020 -116, -114, -414, -414, -414, -414, -414, -414, 3625, -5,
1021 -414, -23, 68, -54, 1273, -414, 5007, -16, -414, -414,
1022 -2, -143, -414, -414, 0, 1, 2007, 16, 20, 2,
1023 3184, 24, 28, -414, -414, -414, -414, -414, 4027, 4027,
1024 4027, -414, -414, -414, -414, -414, 6, -414, 32, -414,
1025 -105, -414, -414, -414, 14, -122, 4228, 34, 222, 4027,
1026 -18, -73, 26, -104, 27, 23, 25, 22, 119, 121,
1027 -126, -414, -414, -160, -414, 21, 5149, 46, -414, -414,
1028 -414, -414, 779, -414, -414, -414, -414, -414, -414, -414,
1029 -414, -414, -414, -54, -414, -414, -193, 2961, -186, -414,
1030 -414, -414, -414, -414, -414, -414, 47, -414, 3826, 5007,
1031 -414, -15, -155, -414, -414, -414, 1510, -414, 60, -414,
1032 -107, -414, -414, 147, 2500, 4027, -414, -414, -146, 4027,
1033 3424, -414, -414, -121, -414, 2007, -414, -414, 4027, 54,
1034 -414, -414, 4027, 51, -414, -414, -414, -414, -414, -414,
1035 -414, -414, -414, -414, -414, -414, -414, 4027, -414, 4027,
1036 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
1037 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027,
1038 -414, -414, -414, -15, 2961, -174, 2961, -414, -414, 2961,
1039 -414, -414, 50, -54, 38, 5007, -5, -54, -414, -414,
1040 -414, -414, -414, -414, 55, -414, -414, 3424, -88, -414,
1041 -87, 52, -54, 58, -414, 1033, 59, 52, -414, 63,
1042 -414, 74, -76, 4429, -414, -414, -414, -414, -414, -18,
1043 -18, -73, -73, 26, 26, 26, 26, -104, -104, 27,
1044 23, 25, 22, 119, 121, -156, -414, -5, -414, 2961,
1045 -414, -176, -414, -414, -145, 157, -414, -414, 4027, -414,
1046 56, 77, 2007, 64, 61, 2260, -414, -414, -414, -414,
1047 -414, 4027, 79, -414, 4027, -414, 2738, -414, -414, -15,
1048 66, -69, 4027, 2260, 303, -414, -6, -414, 2961, -414,
1049 -414, -414, -414, -414, -414, -414, -5, -414, 67, 52,
1050 -414, 2007, 4027, 70, -414, -414, 1754, 2007, -4, -414,
1051 -414, -414, -117, -414, -414, -414, -414, -414, 2007, -414
1052 };
1053
1054 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1055 Performed when YYTABLE does not specify something else to do. Zero
1056 means the default is an error. */
1057 static const yytype_uint16 yydefact[] =
1058 {
1059 4, 0, 0, 12, 0, 1, 2, 14, 15, 16,
1060 5, 0, 0, 0, 13, 6, 0, 179, 178, 203,
1061 200, 201, 202, 207, 208, 209, 210, 211, 212, 213,
1062 214, 215, 204, 205, 206, 176, 181, 182, 183, 184,
1063 180, 177, 161, 160, 159, 216, 217, 218, 219, 220,
1064 221, 222, 223, 224, 225, 226, 228, 229, 231, 232,
1065 234, 235, 236, 237, 238, 240, 241, 242, 243, 245,
1066 246, 247, 248, 250, 251, 252, 254, 255, 256, 257,
1067 259, 227, 244, 253, 233, 239, 249, 258, 260, 261,
1068 262, 263, 264, 265, 230, 266, 267, 268, 269, 270,
1069 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
1070 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
1071 291, 292, 293, 294, 295, 296, 297, 298, 185, 186,
1072 187, 188, 189, 299, 0, 199, 198, 162, 163, 302,
1073 301, 300, 0, 0, 0, 0, 0, 0, 0, 369,
1074 3, 368, 0, 0, 118, 126, 0, 135, 140, 167,
1075 166, 0, 164, 165, 147, 194, 196, 168, 197, 18,
1076 367, 115, 372, 0, 370, 0, 0, 0, 181, 182,
1077 184, 21, 22, 162, 163, 145, 167, 170, 146, 169,
1078 0, 7, 8, 9, 10, 11, 0, 20, 19, 112,
1079 0, 371, 116, 126, 126, 131, 132, 133, 126, 119,
1080 0, 126, 126, 0, 113, 14, 16, 141, 0, 181,
1081 182, 184, 172, 373, 171, 148, 173, 174, 0, 195,
1082 175, 0, 0, 0, 0, 305, 0, 0, 158, 157,
1083 154, 0, 150, 156, 0, 0, 0, 0, 0, 0,
1084 0, 0, 0, 26, 24, 25, 27, 48, 0, 0,
1085 0, 60, 61, 62, 63, 335, 327, 331, 23, 29,
1086 56, 31, 36, 37, 0, 0, 42, 0, 64, 0,
1087 68, 71, 74, 79, 82, 84, 86, 88, 90, 92,
1088 94, 96, 109, 0, 317, 0, 167, 147, 320, 333,
1089 319, 318, 0, 321, 322, 323, 324, 325, 120, 127,
1090 128, 124, 125, 134, 129, 130, 136, 0, 142, 121,
1091 385, 386, 384, 190, 64, 111, 0, 46, 0, 0,
1092 17, 310, 0, 308, 304, 306, 0, 114, 0, 149,
1093 0, 363, 362, 0, 0, 0, 366, 364, 0, 0,
1094 0, 57, 58, 0, 326, 0, 33, 34, 0, 0,
1095 40, 39, 0, 199, 43, 45, 99, 100, 102, 101,
1096 104, 105, 106, 107, 108, 103, 98, 0, 59, 0,
1097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 336, 332, 334, 122, 0, 137, 0, 312, 144, 0,
1100 191, 192, 0, 0, 0, 381, 311, 0, 307, 303,
1101 152, 153, 155, 151, 0, 357, 356, 359, 0, 365,
1102 0, 340, 0, 0, 28, 0, 0, 35, 32, 0,
1103 38, 0, 0, 52, 44, 97, 65, 66, 67, 69,
1104 70, 72, 73, 77, 78, 75, 76, 80, 81, 83,
1105 85, 87, 89, 91, 93, 0, 110, 123, 139, 0,
1106 315, 0, 143, 193, 0, 378, 382, 309, 0, 358,
1107 0, 0, 0, 0, 0, 0, 328, 30, 55, 50,
1108 49, 0, 199, 53, 0, 138, 0, 313, 383, 379,
1109 0, 0, 360, 0, 339, 337, 0, 342, 0, 330,
1110 353, 329, 54, 95, 314, 316, 380, 374, 0, 361,
1111 355, 0, 0, 0, 343, 347, 0, 351, 0, 341,
1112 354, 338, 0, 346, 349, 348, 350, 344, 352, 345
1113 };
1114
1115 /* YYPGOTO[NTERM-NUM]. */
1116 static const yytype_int16 yypgoto[] =
1117 {
1118 -414, -414, -414, -414, -414, -414, -1, 174, -414, -128,
1119 -414, -414, -414, -414, -414, -414, -414, -414, -414, -414,
1120 -414, -414, -414, -414, -19, -414, -169, -142, -170, -162,
1121 -67, -66, -68, -65, -64, -63, -414, -206, -228, -414,
1122 -244, 7, -9, 5, -414, -414, -414, -414, 125, -52,
1123 -414, -414, -414, -414, -168, -11, -414, -414, 17, -414,
1124 -414, -86, -414, -414, -212, -13, -414, -414, -101, -414,
1125 93, -207, -77, -79, -381, -414, 45, -245, -413, -414,
1126 -414, -163, 189, -10, 48, -414, -414, -84, -414, -414,
1127 -167, -414, -172, -414, -414, -414, -414, -414, -414, 240,
1128 -414, -414, -152, -414, -414, -24, -414, -414
1129 };
1130
1131 /* YYDEFGOTO[NTERM-NUM]. */
1132 static const yytype_int16 yydefgoto[] =
1133 {
1134 -1, 2, 13, 3, 149, 6, 331, 14, 150, 268,
1135 269, 270, 436, 271, 272, 273, 274, 275, 276, 277,
1136 440, 441, 442, 443, 278, 279, 280, 281, 282, 283,
1137 284, 285, 286, 287, 288, 289, 290, 291, 292, 377,
1138 293, 326, 294, 295, 153, 154, 155, 311, 209, 210,
1139 211, 312, 156, 157, 158, 186, 241, 422, 242, 243,
1140 160, 161, 162, 163, 229, 327, 165, 166, 167, 168,
1141 234, 235, 332, 333, 408, 471, 298, 299, 300, 301,
1142 355, 510, 511, 302, 303, 304, 505, 433, 305, 507,
1143 525, 526, 527, 528, 306, 427, 480, 481, 307, 169,
1144 170, 171, 172, 173, 500, 414, 415, 174
1145 };
1146
1147 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1148 positive, shift that token. If negative, reduce the rule whose
1149 number is the opposite. If YYTABLE_NINF, syntax error. */
1150 static const yytype_int16 yytable[] =
1151 {
1152 164, 343, 159, 11, 151, 318, 348, 223, 233, 185,
1153 188, 16, 522, 523, 522, 523, 353, -375, 152, 7,
1154 8, 9, 325, 468, -376, 470, -377, 335, 472, 397,
1155 218, 7, 8, 9, 204, 7, 8, 9, 228, 213,
1156 204, 190, 228, 356, 357, 1, 386, 387, 364, 328,
1157 4, 187, 189, 5, 212, 214, 317, 402, 199, 200,
1158 404, 328, 496, 205, 206, 207, 233, 409, 233, 205,
1159 206, 207, 509, 222, 224, 10, 226, 227, 399, 469,
1160 497, 230, 399, 417, 7, 8, 9, 238, 495, 407,
1161 509, 339, 399, 417, 400, 340, 494, 187, 189, 418,
1162 222, 428, 212, 212, 405, 430, 431, 212, 429, 498,
1163 212, 212, 361, 434, 437, 515, 362, 399, 12, 416,
1164 15, 399, 325, -375, 239, 398, 175, 529, -376, 335,
1165 358, 320, 359, 177, 444, 539, 176, 164, 321, 159,
1166 322, 151, 388, 389, 223, 191, 482, 483, 225, 445,
1167 399, 399, 309, -377, 465, 152, 310, 217, 490, 314,
1168 315, 413, 491, 164, 192, 518, 382, 383, 233, 399,
1169 193, 466, 384, 385, 232, 194, 407, 237, 407, 390,
1170 391, 407, 432, 431, 139, 140, 141, 297, 195, 296,
1171 402, 467, 215, 8, 216, 240, 196, 313, 208, 139,
1172 140, 141, 420, 421, 208, 139, 140, 141, 202, 324,
1173 222, 203, 316, 449, 450, 493, 453, 454, 455, 456,
1174 228, 164, 231, 164, 236, 379, 380, 381, 457, 458,
1175 328, 439, 329, 297, 501, 296, -21, 504, 337, 351,
1176 352, 407, 451, 452, -22, 319, 330, 413, 360, 344,
1177 524, 338, 537, 345, 341, 342, 346, 349, 519, 432,
1178 378, 350, 354, 512, -117, -47, 513, 365, 407, 17,
1179 18, 392, 394, 395, 393, 199, 531, 396, 532, -46,
1180 407, 534, 536, 410, 424, -41, 473, 516, 478, 297,
1181 399, 296, 485, 536, 475, 487, 488, 499, 35, 178,
1182 179, 38, 180, 40, 41, 42, 43, 44, 489, 324,
1183 502, 503, 403, -51, 508, 521, 164, 17, 18, 506,
1184 517, 530, 533, 164, 197, 459, 461, 460, 308, 336,
1185 462, 297, 463, 296, 464, 412, 474, 297, 477, 240,
1186 520, 201, 297, 479, 296, 435, 35, 219, 220, 38,
1187 221, 40, 41, 42, 43, 44, 538, 423, 438, 535,
1188 446, 447, 448, 324, 324, 324, 324, 324, 324, 324,
1189 324, 324, 324, 324, 324, 324, 324, 324, 324, 366,
1190 367, 368, 369, 370, 371, 372, 373, 374, 375, 425,
1191 198, 476, 426, 0, 0, 128, 129, 130, 131, 132,
1192 0, 0, 164, 0, 181, 0, 182, 0, 0, 0,
1193 0, 0, 0, 0, 297, 0, 0, 0, 0, 0,
1194 0, 0, 297, 0, 296, 0, 0, 0, 0, 0,
1195 0, 484, 0, 183, 184, 139, 140, 141, 0, 0,
1196 0, 0, 0, 128, 129, 130, 131, 132, 0, 0,
1197 0, 0, 148, 0, 0, 0, 0, 0, 0, 0,
1198 0, 0, 0, 0, 0, 0, 0, 0, 0, 297,
1199 0, 296, 297, 0, 296, 376, 0, 0, 0, 0,
1200 0, 183, 184, 139, 140, 141, 0, 0, 0, 0,
1201 297, 0, 296, 0, 0, 0, 0, 0, 0, 0,
1202 148, 0, 0, 0, 0, 0, 0, 0, 297, 0,
1203 296, 0, 0, 297, 297, 296, 296, 0, 0, 0,
1204 0, 0, 0, 0, 0, 297, 0, 296, 17, 18,
1205 19, 20, 21, 22, 244, 245, 246, 0, 247, 248,
1206 249, 250, 251, 0, 0, 23, 24, 25, 26, 27,
1207 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
1208 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1209 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1210 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
1211 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1212 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
1213 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1214 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
1215 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1216 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1217 0, 0, 0, 0, 128, 129, 130, 131, 132, 133,
1218 134, 135, 252, 181, 136, 182, 253, 254, 255, 256,
1219 257, 0, 0, 258, 259, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1221 0, 0, 137, 138, 139, 140, 141, 0, 142, 0,
1222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1223 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
1224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1227 0, 0, 0, 0, 0, 0, 0, 0, 260, 0,
1228 0, 0, 0, 0, 261, 262, 263, 264, 0, 0,
1229 0, 0, 0, 0, 0, 0, 0, 0, 0, 265,
1230 266, 267, 17, 18, 19, 20, 21, 22, 244, 245,
1231 246, 0, 247, 248, 249, 250, 251, 0, 0, 23,
1232 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
1233 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1234 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1235 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1236 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
1237 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1238 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
1239 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
1240 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1241 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1242 124, 125, 126, 127, 0, 0, 0, 0, 128, 129,
1243 130, 131, 132, 133, 134, 135, 252, 181, 136, 182,
1244 253, 254, 255, 256, 257, 0, 0, 258, 259, 0,
1245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1246 0, 0, 0, 0, 0, 0, 137, 138, 139, 140,
1247 141, 0, 142, 0, 0, 0, 0, 0, 0, 0,
1248 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
1249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1253 0, 0, 260, 0, 0, 0, 0, 0, 261, 262,
1254 263, 264, 0, 0, 0, 0, 0, 0, 0, 0,
1255 0, 0, 0, 265, 266, 401, 17, 18, 19, 20,
1256 21, 22, 244, 245, 246, 0, 247, 248, 249, 250,
1257 251, 0, 0, 23, 24, 25, 26, 27, 28, 29,
1258 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1259 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1260 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1261 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1262 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1263 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1264 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1265 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1266 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1267 120, 121, 122, 123, 124, 125, 126, 127, 0, 0,
1268 0, 0, 128, 129, 130, 131, 132, 133, 134, 135,
1269 252, 181, 136, 182, 253, 254, 255, 256, 257, 0,
1270 0, 258, 259, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 137, 138, 139, 140, 141, 0, 142, 0, 0, 0,
1273 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
1274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 0, 0, 0, 260, 0, 0, 0,
1279 0, 0, 261, 262, 263, 264, 17, 18, 19, 20,
1280 21, 22, 0, 0, 0, 0, 0, 265, 266, 486,
1281 0, 0, 0, 23, 24, 25, 26, 27, 28, 29,
1282 30, 31, 32, 33, 34, 35, 178, 179, 38, 180,
1283 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1284 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1285 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1286 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1287 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1288 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1289 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1290 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1291 120, 121, 122, 123, 124, 125, 126, 127, 0, 0,
1292 0, 0, 128, 129, 130, 131, 132, 133, 134, 135,
1293 0, 0, 136, 0, 0, 0, 0, 0, 0, 0,
1294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296 183, 184, 139, 140, 141, 0, 0, 0, 0, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
1298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1303 0, 0, 0, 17, 18, 19, 20, 21, 22, 0,
1304 0, 0, 0, 0, 0, 0, 0, 0, 0, 334,
1305 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1306 33, 34, 35, 178, 179, 38, 180, 40, 41, 42,
1307 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1308 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1309 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1310 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1311 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1312 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1313 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1314 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1315 123, 124, 125, 126, 127, 0, 0, 0, 0, 128,
1316 129, 130, 131, 132, 133, 134, 135, 0, 0, 136,
1317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1319 0, 0, 0, 0, 0, 0, 0, 183, 184, 139,
1320 140, 141, 0, 0, 0, 0, 0, 0, 0, 0,
1321 0, 0, 0, 0, 0, 0, 148, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 0, 0, 0, 0, 17, 18, 19,
1328 20, 21, 22, 244, 245, 246, 419, 247, 248, 249,
1329 250, 251, 522, 523, 23, 24, 25, 26, 27, 28,
1330 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1331 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1332 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1333 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
1334 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1335 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1336 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1337 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
1338 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1339 119, 120, 121, 122, 123, 124, 125, 126, 127, 0,
1340 0, 0, 0, 128, 129, 130, 131, 132, 133, 134,
1341 135, 252, 181, 136, 182, 253, 254, 255, 256, 257,
1342 0, 0, 258, 259, 0, 0, 0, 0, 0, 0,
1343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1344 0, 137, 138, 139, 140, 141, 0, 142, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346 148, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 0, 0, 0, 260, 0, 0,
1351 0, 0, 0, 261, 262, 263, 264, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0, 265, 266,
1353 17, 18, 19, 20, 21, 22, 244, 245, 246, 0,
1354 247, 248, 249, 250, 251, 0, 0, 23, 24, 25,
1355 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
1356 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
1357 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1358 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1359 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1360 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1361 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1362 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1363 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1364 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1365 126, 127, 0, 0, 0, 0, 128, 129, 130, 131,
1366 132, 133, 134, 135, 252, 181, 136, 182, 253, 254,
1367 255, 256, 257, 0, 0, 258, 259, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 137, 138, 139, 140, 141, 0,
1370 142, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
1372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1376 260, 0, 0, 0, 0, 0, 261, 262, 263, 264,
1377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1378 0, 265, 266, 17, 18, 19, 20, 21, 22, 244,
1379 245, 246, 0, 247, 248, 249, 250, 251, 0, 0,
1380 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1381 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1382 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1383 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1384 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1385 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1386 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1387 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1388 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1389 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1390 123, 124, 125, 126, 127, 0, 0, 0, 0, 128,
1391 129, 130, 131, 132, 133, 134, 135, 252, 181, 136,
1392 182, 253, 254, 255, 256, 257, 0, 0, 258, 259,
1393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1394 0, 0, 0, 0, 0, 0, 0, 137, 138, 139,
1395 140, 141, 0, 142, 0, 0, 0, 0, 0, 0,
1396 0, 0, 0, 0, 0, 0, 148, 0, 0, 0,
1397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1401 0, 0, 0, 260, 0, 0, 0, 0, 0, 261,
1402 262, 263, 264, 17, 18, 19, 20, 21, 22, 0,
1403 0, 0, 0, 0, 265, 200, 0, 0, 0, 0,
1404 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1405 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1406 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1407 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1408 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1409 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1410 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1411 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1412 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1413 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1414 123, 124, 125, 126, 127, 0, 0, 0, 0, 128,
1415 129, 130, 131, 132, 133, 134, 135, 0, 181, 136,
1416 182, 253, 254, 255, 256, 257, 0, 0, 258, 259,
1417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0, 0, 0, 137, 138, 139,
1419 140, 141, 0, 142, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 0, 148, 0, 0, 0,
1421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1425 0, 0, 0, 260, 0, 0, 0, 0, 0, 261,
1426 262, 263, 264, 19, 20, 21, 22, 0, 0, 0,
1427 0, 0, 0, 0, 265, 0, 0, 0, 23, 24,
1428 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1430 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1431 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1432 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1433 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1434 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1435 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1436 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1437 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1438 125, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1439 0, 0, 133, 134, 135, 0, 181, 136, 182, 253,
1440 254, 255, 256, 257, 0, 0, 258, 259, 0, 0,
1441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0, 0, 19, 20, 21, 22,
1449 0, 260, 0, 0, 0, 0, 0, 261, 262, 263,
1450 264, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1451 32, 33, 34, 406, 514, 0, 0, 0, 0, 0,
1452 0, 0, 0, 45, 46, 47, 48, 49, 50, 51,
1453 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1454 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1455 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1456 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1457 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1458 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1459 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1460 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0, 133, 134, 135, 0, 181,
1462 136, 182, 253, 254, 255, 256, 257, 0, 0, 258,
1463 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
1471 20, 21, 22, 0, 260, 0, 0, 0, 0, 0,
1472 261, 262, 263, 264, 23, 24, 25, 26, 27, 28,
1473 29, 30, 31, 32, 33, 34, 406, 0, 0, 0,
1474 0, 0, 0, 0, 0, 0, 45, 46, 47, 48,
1475 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1476 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
1477 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1478 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1479 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1480 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
1481 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1482 119, 120, 121, 122, 123, 124, 125, 126, 127, 0,
1483 0, 0, 0, 0, 0, 0, 0, 0, 133, 134,
1484 135, 0, 181, 136, 182, 253, 254, 255, 256, 257,
1485 0, 0, 258, 259, 0, 0, 0, 0, 0, 0,
1486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0, 0, 0, 260, 0, 0,
1494 0, 0, 0, 261, 262, 263, 264, 17, 18, 19,
1495 20, 21, 22, 0, 0, 0, 0, 0, 347, 0,
1496 0, 0, 0, 0, 23, 24, 25, 26, 27, 28,
1497 29, 30, 31, 32, 33, 34, 35, 178, 179, 38,
1498 180, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1499 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1500 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
1501 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1502 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1503 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1504 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
1505 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1506 119, 120, 121, 122, 123, 124, 125, 126, 127, 0,
1507 0, 0, 0, 128, 129, 130, 131, 132, 133, 134,
1508 135, 0, 181, 136, 182, 253, 254, 255, 256, 257,
1509 0, 0, 258, 259, 0, 0, 0, 0, 0, 0,
1510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511 0, 183, 184, 139, 140, 141, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1513 148, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1515 19, 20, 21, 22, 0, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 23, 24, 25, 26, 27,
1517 28, 29, 30, 31, 32, 33, 34, 260, 0, 0,
1518 0, 0, 0, 261, 262, 263, 264, 45, 46, 47,
1519 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1520 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
1521 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1522 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
1523 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1524 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
1525 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1526 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1527 0, 0, 0, 0, 0, 0, 0, 0, 0, 133,
1528 134, 135, 0, 181, 136, 182, 253, 254, 255, 256,
1529 257, 0, 0, 258, 259, 0, 0, 0, 0, 0,
1530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1535 0, 19, 20, 21, 22, 0, 0, 0, 0, 0,
1536 0, 0, 0, 0, 0, 0, 23, 24, 25, 26,
1537 27, 28, 29, 30, 31, 32, 33, 34, 260, 0,
1538 0, 323, 0, 0, 261, 262, 263, 264, 45, 46,
1539 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1540 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1541 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1542 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1543 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1544 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1545 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1546 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1547 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1548 133, 134, 135, 0, 181, 136, 182, 253, 254, 255,
1549 256, 257, 0, 0, 258, 259, 0, 0, 0, 0,
1550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1555 0, 0, 19, 20, 21, 22, 0, 0, 0, 0,
1556 0, 0, 0, 0, 0, 0, 0, 23, 24, 25,
1557 26, 27, 28, 29, 30, 31, 32, 33, 34, 260,
1558 0, 0, 411, 0, 0, 261, 262, 263, 264, 45,
1559 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1560 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1561 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1562 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1563 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1564 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1565 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1566 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1567 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
1568 0, 133, 134, 135, 0, 181, 136, 182, 253, 254,
1569 255, 256, 257, 0, 0, 258, 259, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 19, 20, 21, 22, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0, 0, 0, 23, 24,
1577 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1578 260, 0, 0, 0, 0, 0, 261, 262, 263, 264,
1579 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1580 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1581 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1582 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1583 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1584 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1585 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1586 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1587 125, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1588 0, 0, 133, 134, 363, 0, 181, 136, 182, 253,
1589 254, 255, 256, 257, 0, 0, 258, 259, 0, 0,
1590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1595 0, 0, 0, 0, 19, 20, 21, 22, 0, 0,
1596 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
1597 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
1598 34, 260, 0, 0, 0, 0, 0, 261, 262, 263,
1599 264, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1600 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1601 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
1602 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1603 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
1604 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
1605 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1606 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1607 124, 125, 126, 127, 0, 0, 0, 0, 0, 0,
1608 0, 0, 0, 133, 134, 492, 0, 181, 136, 182,
1609 253, 254, 255, 256, 257, 0, 0, 258, 259, 0,
1610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1617 0, 0, 0, 0, 0, 17, 18, 19, 20, 21,
1618 22, 0, 260, 0, 0, 0, 0, 0, 261, 262,
1619 263, 264, 23, 24, 25, 26, 27, 28, 29, 30,
1620 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1621 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1622 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1623 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1624 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1625 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1626 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1627 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1628 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1629 121, 122, 123, 124, 125, 126, 127, 0, 0, 0,
1630 0, 128, 129, 130, 131, 132, 133, 134, 135, 0,
1631 0, 136, 0, 0, 0, 0, 0, 0, 0, 0,
1632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1633 0, 0, 0, 0, 0, 0, 0, 0, 0, 137,
1634 138, 139, 140, 141, 0, 142, 0, 12, 0, 0,
1635 0, 0, 0, 143, 144, 145, 146, 147, 148, 17,
1636 18, 19, 20, 21, 22, 0, 0, 0, 0, 0,
1637 0, 0, 0, 0, 0, 0, 23, 24, 25, 26,
1638 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1639 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1640 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1641 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1642 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1643 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1644 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1645 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1646 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1647 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1648 127, 0, 0, 0, 0, 128, 129, 130, 131, 132,
1649 133, 134, 135, 0, 0, 136, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 137, 138, 139, 140, 141, 0, 142,
1653 17, 18, 19, 20, 21, 22, 0, 143, 144, 145,
1654 146, 147, 148, 0, 0, 0, 0, 23, 24, 25,
1655 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
1656 178, 179, 38, 180, 40, 41, 42, 43, 44, 45,
1657 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1658 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1659 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1660 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1661 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1662 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1663 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1664 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1665 126, 127, 17, 18, 0, 0, 128, 129, 130, 131,
1666 132, 133, 134, 135, 0, 0, 136, 0, 0, 0,
1667 0, 0, 17, 18, 0, 0, 0, 0, 0, 0,
1668 0, 35, 178, 179, 38, 180, 40, 41, 42, 43,
1669 44, 0, 0, 0, 183, 184, 139, 140, 141, 0,
1670 0, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1671 44, 0, 0, 148, 0, 0, 0, 0, 0, 0,
1672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1677 0, 0, 0, 0, 0, 0, 0, 0, 128, 129,
1678 130, 131, 132, 0, 0, 0, 0, 0, 0, 0,
1679 0, 0, 0, 0, 0, 0, 0, 0, 128, 129,
1680 130, 131, 132, 0, 0, 0, 0, 0, 0, 0,
1681 0, 0, 0, 0, 0, 0, 183, 184, 139, 140,
1682 141, 0, 0, 0, 0, 0, 19, 20, 21, 22,
1683 0, 0, 0, 0, 0, 148, 183, 184, 139, 140,
1684 141, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1685 32, 33, 34, 0, 0, 148, 0, 0, 0, 0,
1686 0, 0, 0, 45, 46, 47, 48, 49, 50, 51,
1687 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1688 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1689 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1690 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1691 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1692 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1693 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1694 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
1695 0, 0, 0, 0, 0, 133, 134, 135, 0, 0,
1696 136
1697 };
1698
1699 static const yytype_int16 yycheck[] =
1700 {
1701 13, 246, 13, 4, 13, 217, 250, 159, 176, 137,
1702 138, 12, 18, 19, 18, 19, 260, 140, 13, 138,
1703 139, 140, 228, 404, 140, 406, 140, 234, 409, 155,
1704 158, 138, 139, 140, 4, 138, 139, 140, 235, 238,
1705 4, 142, 235, 148, 149, 174, 150, 151, 276, 235,
1706 142, 137, 138, 0, 155, 254, 253, 302, 254, 255,
1707 253, 235, 238, 33, 34, 35, 234, 253, 236, 33,
1708 34, 35, 485, 159, 160, 178, 162, 163, 238, 253,
1709 256, 167, 238, 238, 138, 139, 140, 194, 469, 317,
1710 503, 234, 238, 238, 254, 238, 252, 183, 184, 254,
1711 186, 345, 203, 204, 316, 349, 350, 208, 254, 254,
1712 211, 212, 234, 234, 358, 496, 238, 238, 175, 331,
1713 178, 238, 328, 140, 231, 251, 177, 508, 140, 336,
1714 235, 254, 237, 134, 362, 252, 255, 150, 254, 150,
1715 254, 150, 246, 247, 296, 178, 234, 234, 161, 377,
1716 238, 238, 204, 140, 398, 150, 208, 158, 234, 211,
1717 212, 329, 238, 176, 178, 234, 239, 240, 336, 238,
1718 178, 399, 146, 147, 175, 178, 404, 190, 406, 152,
1719 153, 409, 350, 427, 169, 170, 171, 200, 178, 200,
1720 435, 403, 138, 139, 140, 196, 233, 210, 168, 169,
1721 170, 171, 142, 143, 168, 169, 170, 171, 234, 228,
1722 296, 238, 213, 382, 383, 443, 386, 387, 388, 389,
1723 235, 234, 140, 236, 255, 243, 244, 245, 390, 391,
1724 235, 359, 255, 246, 478, 246, 233, 482, 254, 258,
1725 259, 469, 384, 385, 233, 233, 178, 415, 234, 233,
1726 256, 253, 256, 233, 254, 254, 254, 233, 502, 427,
1727 279, 233, 256, 491, 234, 233, 494, 233, 496, 3,
1728 4, 248, 250, 154, 249, 254, 521, 156, 522, 233,
1729 508, 526, 527, 236, 137, 234, 236, 499, 233, 302,
1730 238, 302, 234, 538, 256, 236, 233, 140, 32, 33,
1731 34, 35, 36, 37, 38, 39, 40, 41, 234, 328,
1732 254, 234, 313, 234, 253, 12, 329, 3, 4, 255,
1733 254, 254, 252, 336, 150, 392, 394, 393, 203, 236,
1734 395, 344, 396, 344, 397, 328, 413, 350, 417, 340,
1735 503, 152, 355, 427, 355, 355, 32, 33, 34, 35,
1736 36, 37, 38, 39, 40, 41, 528, 340, 359, 526,
1737 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
1738 389, 390, 391, 392, 393, 394, 395, 396, 397, 157,
1739 158, 159, 160, 161, 162, 163, 164, 165, 166, 344,
1740 150, 415, 344, -1, -1, 129, 130, 131, 132, 133,
1741 -1, -1, 415, -1, 138, -1, 140, -1, -1, -1,
1742 -1, -1, -1, -1, 427, -1, -1, -1, -1, -1,
1743 -1, -1, 435, -1, 435, -1, -1, -1, -1, -1,
1744 -1, 432, -1, 167, 168, 169, 170, 171, -1, -1,
1745 -1, -1, -1, 129, 130, 131, 132, 133, -1, -1,
1746 -1, -1, 186, -1, -1, -1, -1, -1, -1, -1,
1747 -1, -1, -1, -1, -1, -1, -1, -1, -1, 482,
1748 -1, 482, 485, -1, 485, 253, -1, -1, -1, -1,
1749 -1, 167, 168, 169, 170, 171, -1, -1, -1, -1,
1750 503, -1, 503, -1, -1, -1, -1, -1, -1, -1,
1751 186, -1, -1, -1, -1, -1, -1, -1, 521, -1,
1752 521, -1, -1, 526, 527, 526, 527, -1, -1, -1,
1753 -1, -1, -1, -1, -1, 538, -1, 538, 3, 4,
1754 5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
1755 15, 16, 17, -1, -1, 20, 21, 22, 23, 24,
1756 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1757 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1758 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1759 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1760 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1761 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1762 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1763 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1764 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1765 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1766 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
1767 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1768 145, -1, -1, 148, 149, -1, -1, -1, -1, -1,
1769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1770 -1, -1, 167, 168, 169, 170, 171, -1, 173, -1,
1771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1772 -1, 186, -1, -1, -1, -1, -1, -1, -1, -1,
1773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1776 -1, -1, -1, -1, -1, -1, -1, -1, 233, -1,
1777 -1, -1, -1, -1, 239, 240, 241, 242, -1, -1,
1778 -1, -1, -1, -1, -1, -1, -1, -1, -1, 254,
1779 255, 256, 3, 4, 5, 6, 7, 8, 9, 10,
1780 11, -1, 13, 14, 15, 16, 17, -1, -1, 20,
1781 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1782 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1783 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1784 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1785 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1786 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1787 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1788 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1789 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1790 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1791 121, 122, 123, 124, -1, -1, -1, -1, 129, 130,
1792 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
1793 141, 142, 143, 144, 145, -1, -1, 148, 149, -1,
1794 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1795 -1, -1, -1, -1, -1, -1, 167, 168, 169, 170,
1796 171, -1, 173, -1, -1, -1, -1, -1, -1, -1,
1797 -1, -1, -1, -1, -1, 186, -1, -1, -1, -1,
1798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1802 -1, -1, 233, -1, -1, -1, -1, -1, 239, 240,
1803 241, 242, -1, -1, -1, -1, -1, -1, -1, -1,
1804 -1, -1, -1, 254, 255, 256, 3, 4, 5, 6,
1805 7, 8, 9, 10, 11, -1, 13, 14, 15, 16,
1806 17, -1, -1, 20, 21, 22, 23, 24, 25, 26,
1807 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1808 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1809 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1810 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1811 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1812 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1813 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1814 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1815 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1816 117, 118, 119, 120, 121, 122, 123, 124, -1, -1,
1817 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
1818 137, 138, 139, 140, 141, 142, 143, 144, 145, -1,
1819 -1, 148, 149, -1, -1, -1, -1, -1, -1, -1,
1820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1821 167, 168, 169, 170, 171, -1, 173, -1, -1, -1,
1822 -1, -1, -1, -1, -1, -1, -1, -1, -1, 186,
1823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1824 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1827 -1, -1, -1, -1, -1, -1, 233, -1, -1, -1,
1828 -1, -1, 239, 240, 241, 242, 3, 4, 5, 6,
1829 7, 8, -1, -1, -1, -1, -1, 254, 255, 256,
1830 -1, -1, -1, 20, 21, 22, 23, 24, 25, 26,
1831 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1832 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1833 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1834 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1835 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1836 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1837 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1838 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1839 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1840 117, 118, 119, 120, 121, 122, 123, 124, -1, -1,
1841 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
1842 -1, -1, 139, -1, -1, -1, -1, -1, -1, -1,
1843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1844 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1845 167, 168, 169, 170, 171, -1, -1, -1, -1, -1,
1846 -1, -1, -1, -1, -1, -1, -1, -1, -1, 186,
1847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1849 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1850 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1851 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1852 -1, -1, -1, 3, 4, 5, 6, 7, 8, -1,
1853 -1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
1854 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1855 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1856 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1857 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1858 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1859 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1860 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1861 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1862 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1863 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1864 120, 121, 122, 123, 124, -1, -1, -1, -1, 129,
1865 130, 131, 132, 133, 134, 135, 136, -1, -1, 139,
1866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1868 -1, -1, -1, -1, -1, -1, -1, 167, 168, 169,
1869 170, 171, -1, -1, -1, -1, -1, -1, -1, -1,
1870 -1, -1, -1, -1, -1, -1, 186, -1, -1, -1,
1871 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1875 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1876 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
1877 6, 7, 8, 9, 10, 11, 256, 13, 14, 15,
1878 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1879 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
1880 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
1881 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1882 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1883 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1884 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1885 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1886 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1887 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1888 116, 117, 118, 119, 120, 121, 122, 123, 124, -1,
1889 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
1890 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
1891 -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
1892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1893 -1, 167, 168, 169, 170, 171, -1, 173, -1, -1,
1894 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1895 186, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1897 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1899 -1, -1, -1, -1, -1, -1, -1, 233, -1, -1,
1900 -1, -1, -1, 239, 240, 241, 242, -1, -1, -1,
1901 -1, -1, -1, -1, -1, -1, -1, -1, 254, 255,
1902 3, 4, 5, 6, 7, 8, 9, 10, 11, -1,
1903 13, 14, 15, 16, 17, -1, -1, 20, 21, 22,
1904 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1905 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1906 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1907 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1908 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1909 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1910 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1911 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1912 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1913 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1914 123, 124, -1, -1, -1, -1, 129, 130, 131, 132,
1915 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
1916 143, 144, 145, -1, -1, 148, 149, -1, -1, -1,
1917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1918 -1, -1, -1, -1, 167, 168, 169, 170, 171, -1,
1919 173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1920 -1, -1, -1, 186, -1, -1, -1, -1, -1, -1,
1921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1925 233, -1, -1, -1, -1, -1, 239, 240, 241, 242,
1926 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1927 -1, 254, 255, 3, 4, 5, 6, 7, 8, 9,
1928 10, 11, -1, 13, 14, 15, 16, 17, -1, -1,
1929 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1930 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1931 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1932 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1933 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1934 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1935 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1936 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1937 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1938 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1939 120, 121, 122, 123, 124, -1, -1, -1, -1, 129,
1940 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
1941 140, 141, 142, 143, 144, 145, -1, -1, 148, 149,
1942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1943 -1, -1, -1, -1, -1, -1, -1, 167, 168, 169,
1944 170, 171, -1, 173, -1, -1, -1, -1, -1, -1,
1945 -1, -1, -1, -1, -1, -1, 186, -1, -1, -1,
1946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1950 -1, -1, -1, 233, -1, -1, -1, -1, -1, 239,
1951 240, 241, 242, 3, 4, 5, 6, 7, 8, -1,
1952 -1, -1, -1, -1, 254, 255, -1, -1, -1, -1,
1953 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1954 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1955 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1956 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1957 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1958 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1959 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1960 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1961 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1962 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1963 120, 121, 122, 123, 124, -1, -1, -1, -1, 129,
1964 130, 131, 132, 133, 134, 135, 136, -1, 138, 139,
1965 140, 141, 142, 143, 144, 145, -1, -1, 148, 149,
1966 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1967 -1, -1, -1, -1, -1, -1, -1, 167, 168, 169,
1968 170, 171, -1, 173, -1, -1, -1, -1, -1, -1,
1969 -1, -1, -1, -1, -1, -1, 186, -1, -1, -1,
1970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1971 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1974 -1, -1, -1, 233, -1, -1, -1, -1, -1, 239,
1975 240, 241, 242, 5, 6, 7, 8, -1, -1, -1,
1976 -1, -1, -1, -1, 254, -1, -1, -1, 20, 21,
1977 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1979 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1980 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1981 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1982 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1983 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1984 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1985 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1986 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1987 122, 123, 124, -1, -1, -1, -1, -1, -1, -1,
1988 -1, -1, 134, 135, 136, -1, 138, 139, 140, 141,
1989 142, 143, 144, 145, -1, -1, 148, 149, -1, -1,
1990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1992 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1995 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1996 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1997 -1, -1, -1, -1, -1, -1, 5, 6, 7, 8,
1998 -1, 233, -1, -1, -1, -1, -1, 239, 240, 241,
1999 242, 20, 21, 22, 23, 24, 25, 26, 27, 28,
2000 29, 30, 31, 255, 256, -1, -1, -1, -1, -1,
2001 -1, -1, -1, 42, 43, 44, 45, 46, 47, 48,
2002 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
2003 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
2004 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
2005 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2006 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
2007 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
2008 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
2009 119, 120, 121, 122, 123, 124, -1, -1, -1, -1,
2010 -1, -1, -1, -1, -1, 134, 135, 136, -1, 138,
2011 139, 140, 141, 142, 143, 144, 145, -1, -1, 148,
2012 149, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2013 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2016 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2017 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2019 -1, -1, -1, -1, -1, -1, -1, -1, -1, 5,
2020 6, 7, 8, -1, 233, -1, -1, -1, -1, -1,
2021 239, 240, 241, 242, 20, 21, 22, 23, 24, 25,
2022 26, 27, 28, 29, 30, 31, 255, -1, -1, -1,
2023 -1, -1, -1, -1, -1, -1, 42, 43, 44, 45,
2024 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
2025 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
2026 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
2027 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
2028 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2029 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
2030 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
2031 116, 117, 118, 119, 120, 121, 122, 123, 124, -1,
2032 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
2033 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
2034 -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
2035 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2041 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2042 -1, -1, -1, -1, -1, -1, -1, 233, -1, -1,
2043 -1, -1, -1, 239, 240, 241, 242, 3, 4, 5,
2044 6, 7, 8, -1, -1, -1, -1, -1, 254, -1,
2045 -1, -1, -1, -1, 20, 21, 22, 23, 24, 25,
2046 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
2047 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2048 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
2049 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
2050 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
2051 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
2052 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2053 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
2054 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
2055 116, 117, 118, 119, 120, 121, 122, 123, 124, -1,
2056 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
2057 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
2058 -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
2059 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2060 -1, 167, 168, 169, 170, 171, -1, -1, -1, -1,
2061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2062 186, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2063 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2064 5, 6, 7, 8, -1, -1, -1, -1, -1, -1,
2065 -1, -1, -1, -1, -1, 20, 21, 22, 23, 24,
2066 25, 26, 27, 28, 29, 30, 31, 233, -1, -1,
2067 -1, -1, -1, 239, 240, 241, 242, 42, 43, 44,
2068 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2069 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2070 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
2071 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
2072 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
2073 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
2074 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
2075 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
2076 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
2077 135, 136, -1, 138, 139, 140, 141, 142, 143, 144,
2078 145, -1, -1, 148, 149, -1, -1, -1, -1, -1,
2079 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2082 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2083 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2084 -1, 5, 6, 7, 8, -1, -1, -1, -1, -1,
2085 -1, -1, -1, -1, -1, -1, 20, 21, 22, 23,
2086 24, 25, 26, 27, 28, 29, 30, 31, 233, -1,
2087 -1, 236, -1, -1, 239, 240, 241, 242, 42, 43,
2088 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
2089 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2090 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
2091 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
2092 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
2093 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
2094 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2095 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2096 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2097 134, 135, 136, -1, 138, 139, 140, 141, 142, 143,
2098 144, 145, -1, -1, 148, 149, -1, -1, -1, -1,
2099 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2100 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2101 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2102 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2104 -1, -1, 5, 6, 7, 8, -1, -1, -1, -1,
2105 -1, -1, -1, -1, -1, -1, -1, 20, 21, 22,
2106 23, 24, 25, 26, 27, 28, 29, 30, 31, 233,
2107 -1, -1, 236, -1, -1, 239, 240, 241, 242, 42,
2108 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
2109 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
2110 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
2111 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2112 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2113 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
2114 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
2115 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
2116 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
2117 -1, 134, 135, 136, -1, 138, 139, 140, 141, 142,
2118 143, 144, 145, -1, -1, 148, 149, -1, -1, -1,
2119 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2120 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2121 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2123 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2124 -1, -1, -1, 5, 6, 7, 8, -1, -1, -1,
2125 -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
2126 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2127 233, -1, -1, -1, -1, -1, 239, 240, 241, 242,
2128 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
2129 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
2130 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
2131 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2132 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2133 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
2134 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
2135 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
2136 122, 123, 124, -1, -1, -1, -1, -1, -1, -1,
2137 -1, -1, 134, 135, 136, -1, 138, 139, 140, 141,
2138 142, 143, 144, 145, -1, -1, 148, 149, -1, -1,
2139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2140 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2143 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2144 -1, -1, -1, -1, 5, 6, 7, 8, -1, -1,
2145 -1, -1, -1, -1, -1, -1, -1, -1, -1, 20,
2146 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
2147 31, 233, -1, -1, -1, -1, -1, 239, 240, 241,
2148 242, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2149 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
2150 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
2151 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
2152 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
2153 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
2154 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
2155 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
2156 121, 122, 123, 124, -1, -1, -1, -1, -1, -1,
2157 -1, -1, -1, 134, 135, 136, -1, 138, 139, 140,
2158 141, 142, 143, 144, 145, -1, -1, 148, 149, -1,
2159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2162 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2164 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2166 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
2167 8, -1, 233, -1, -1, -1, -1, -1, 239, 240,
2168 241, 242, 20, 21, 22, 23, 24, 25, 26, 27,
2169 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
2170 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2171 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2172 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2173 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
2174 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
2175 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
2176 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
2177 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
2178 118, 119, 120, 121, 122, 123, 124, -1, -1, -1,
2179 -1, 129, 130, 131, 132, 133, 134, 135, 136, -1,
2180 -1, 139, -1, -1, -1, -1, -1, -1, -1, -1,
2181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2182 -1, -1, -1, -1, -1, -1, -1, -1, -1, 167,
2183 168, 169, 170, 171, -1, 173, -1, 175, -1, -1,
2184 -1, -1, -1, 181, 182, 183, 184, 185, 186, 3,
2185 4, 5, 6, 7, 8, -1, -1, -1, -1, -1,
2186 -1, -1, -1, -1, -1, -1, 20, 21, 22, 23,
2187 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2188 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
2189 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
2190 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2191 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
2192 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
2193 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
2194 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
2195 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2196 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2197 124, -1, -1, -1, -1, 129, 130, 131, 132, 133,
2198 134, 135, 136, -1, -1, 139, -1, -1, -1, -1,
2199 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2200 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2201 -1, -1, -1, 167, 168, 169, 170, 171, -1, 173,
2202 3, 4, 5, 6, 7, 8, -1, 181, 182, 183,
2203 184, 185, 186, -1, -1, -1, -1, 20, 21, 22,
2204 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
2205 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
2206 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
2207 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
2208 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
2209 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2210 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2211 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
2212 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
2213 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
2214 123, 124, 3, 4, -1, -1, 129, 130, 131, 132,
2215 133, 134, 135, 136, -1, -1, 139, -1, -1, -1,
2216 -1, -1, 3, 4, -1, -1, -1, -1, -1, -1,
2217 -1, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2218 41, -1, -1, -1, 167, 168, 169, 170, 171, -1,
2219 -1, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2220 41, -1, -1, 186, -1, -1, -1, -1, -1, -1,
2221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2222 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2223 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2225 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2226 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
2227 131, 132, 133, -1, -1, -1, -1, -1, -1, -1,
2228 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
2229 131, 132, 133, -1, -1, -1, -1, -1, -1, -1,
2230 -1, -1, -1, -1, -1, -1, 167, 168, 169, 170,
2231 171, -1, -1, -1, -1, -1, 5, 6, 7, 8,
2232 -1, -1, -1, -1, -1, 186, 167, 168, 169, 170,
2233 171, 20, 21, 22, 23, 24, 25, 26, 27, 28,
2234 29, 30, 31, -1, -1, 186, -1, -1, -1, -1,
2235 -1, -1, -1, 42, 43, 44, 45, 46, 47, 48,
2236 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
2237 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
2238 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
2239 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2240 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
2241 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
2242 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
2243 119, 120, 121, 122, 123, 124, -1, -1, -1, -1,
2244 -1, -1, -1, -1, -1, 134, 135, 136, -1, -1,
2245 139
2246 };
2247
2248 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2249 symbol of state STATE-NUM. */
2250 static const yytype_uint16 yystos[] =
2251 {
2252 0, 174, 258, 260, 142, 0, 262, 138, 139, 140,
2253 178, 263, 175, 259, 264, 178, 263, 3, 4, 5,
2254 6, 7, 8, 20, 21, 22, 23, 24, 25, 26,
2255 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
2256 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
2257 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
2258 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2259 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
2260 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
2261 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
2262 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
2263 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
2264 117, 118, 119, 120, 121, 122, 123, 124, 129, 130,
2265 131, 132, 133, 134, 135, 136, 139, 167, 168, 169,
2266 170, 171, 173, 181, 182, 183, 184, 185, 186, 261,
2267 265, 299, 300, 301, 302, 303, 309, 310, 311, 312,
2268 317, 318, 319, 320, 322, 323, 324, 325, 326, 356,
2269 357, 358, 359, 360, 364, 177, 255, 263, 33, 34,
2270 36, 138, 140, 167, 168, 266, 312, 318, 266, 318,
2271 325, 178, 178, 178, 178, 178, 233, 264, 356, 254,
2272 255, 339, 234, 238, 4, 33, 34, 35, 168, 305,
2273 306, 307, 325, 238, 254, 138, 140, 263, 266, 33,
2274 34, 36, 318, 359, 318, 322, 318, 318, 235, 321,
2275 318, 140, 263, 311, 327, 328, 255, 322, 194, 231,
2276 263, 313, 315, 316, 9, 10, 11, 13, 14, 15,
2277 16, 17, 137, 141, 142, 143, 144, 145, 148, 149,
2278 233, 239, 240, 241, 242, 254, 255, 256, 266, 267,
2279 268, 270, 271, 272, 273, 274, 275, 276, 281, 282,
2280 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
2281 293, 294, 295, 297, 299, 300, 312, 322, 333, 334,
2282 335, 336, 340, 341, 342, 345, 351, 355, 305, 306,
2283 306, 304, 308, 322, 306, 306, 263, 253, 321, 233,
2284 254, 254, 254, 236, 281, 294, 298, 322, 235, 255,
2285 178, 263, 329, 330, 256, 328, 327, 254, 253, 234,
2286 238, 254, 254, 334, 233, 233, 254, 254, 297, 233,
2287 233, 281, 281, 297, 256, 337, 148, 149, 235, 237,
2288 234, 234, 238, 136, 295, 233, 157, 158, 159, 160,
2289 161, 162, 163, 164, 165, 166, 253, 296, 281, 243,
2290 244, 245, 239, 240, 146, 147, 150, 151, 246, 247,
2291 152, 153, 248, 249, 250, 154, 156, 155, 251, 238,
2292 254, 256, 334, 263, 253, 321, 255, 295, 331, 253,
2293 236, 236, 298, 311, 362, 363, 321, 238, 254, 256,
2294 142, 143, 314, 315, 137, 333, 341, 352, 297, 254,
2295 297, 297, 311, 344, 234, 340, 269, 297, 263, 266,
2296 277, 278, 279, 280, 295, 295, 281, 281, 281, 283,
2297 283, 284, 284, 285, 285, 285, 285, 286, 286, 287,
2298 288, 289, 290, 291, 292, 297, 295, 321, 331, 253,
2299 331, 332, 331, 236, 329, 256, 362, 330, 233, 344,
2300 353, 354, 234, 234, 263, 234, 256, 236, 233, 234,
2301 234, 238, 136, 295, 252, 331, 238, 256, 254, 140,
2302 361, 297, 254, 234, 334, 343, 255, 346, 253, 335,
2303 338, 339, 295, 295, 256, 331, 321, 254, 234, 297,
2304 338, 12, 18, 19, 256, 347, 348, 349, 350, 331,
2305 254, 334, 297, 252, 334, 347, 334, 256, 349, 252
2306 };
2307
2308 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2309 static const yytype_uint16 yyr1[] =
2310 {
2311 0, 257, 259, 258, 260, 260, 260, 261, 261, 261,
2312 261, 261, 262, 262, 263, 263, 263, 264, 265, 265,
2313 265, 266, 266, 267, 267, 267, 267, 267, 267, 268,
2314 268, 268, 268, 268, 268, 269, 270, 271, 271, 272,
2315 272, 273, 273, 274, 274, 275, 276, 276, 276, 277,
2316 277, 278, 278, 279, 279, 280, 281, 281, 281, 281,
2317 282, 282, 282, 282, 283, 283, 283, 283, 284, 284,
2318 284, 285, 285, 285, 286, 286, 286, 286, 286, 287,
2319 287, 287, 288, 288, 289, 289, 290, 290, 291, 291,
2320 292, 292, 293, 293, 294, 294, 295, 295, 296, 296,
2321 296, 296, 296, 296, 296, 296, 296, 296, 296, 297,
2322 297, 298, 299, 299, 299, 299, 300, 301, 301, 302,
2323 302, 303, 304, 304, 305, 305, 306, 306, 306, 306,
2324 306, 307, 307, 307, 308, 309, 309, 309, 309, 309,
2325 310, 310, 310, 310, 310, 310, 310, 311, 311, 312,
2326 313, 313, 314, 314, 315, 315, 315, 316, 316, 317,
2327 317, 317, 318, 318, 318, 318, 318, 318, 318, 318,
2328 318, 318, 318, 318, 318, 318, 319, 319, 320, 320,
2329 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
2330 321, 321, 321, 321, 322, 322, 323, 323, 323, 324,
2331 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2332 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2333 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2334 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2335 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2336 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2337 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2338 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2339 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2340 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
2341 325, 325, 325, 326, 326, 327, 327, 328, 329, 329,
2342 330, 330, 331, 331, 331, 332, 332, 333, 334, 334,
2343 335, 335, 335, 335, 335, 335, 336, 337, 336, 338,
2344 338, 339, 339, 340, 340, 341, 341, 342, 343, 343,
2345 344, 344, 345, 346, 346, 347, 347, 348, 348, 349,
2346 349, 350, 350, 351, 351, 351, 352, 352, 353, 353,
2347 354, 354, 355, 355, 355, 355, 355, 356, 356, 356,
2348 356, 357, 358, 358, 359, 360, 360, 360, 361, 361,
2349 361, 362, 362, 363, 364, 364, 364
2350 };
2351
2352 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2353 static const yytype_uint8 yyr2[] =
2354 {
2355 0, 2, 0, 4, 0, 3, 4, 2, 2, 2,
2356 2, 2, 0, 2, 1, 1, 1, 5, 1, 2,
2357 2, 1, 1, 1, 1, 1, 1, 1, 3, 1,
2358 4, 1, 3, 2, 2, 1, 1, 1, 3, 2,
2359 2, 2, 1, 2, 3, 2, 1, 1, 1, 2,
2360 2, 2, 1, 2, 3, 2, 1, 2, 2, 2,
2361 1, 1, 1, 1, 1, 3, 3, 3, 1, 3,
2362 3, 1, 3, 3, 1, 3, 3, 3, 3, 1,
2363 3, 3, 1, 3, 1, 3, 1, 3, 1, 3,
2364 1, 3, 1, 3, 1, 5, 1, 3, 1, 1,
2365 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2366 3, 1, 2, 2, 4, 1, 2, 1, 1, 2,
2367 3, 3, 2, 3, 2, 2, 0, 2, 2, 2,
2368 2, 1, 1, 1, 1, 1, 3, 4, 6, 5,
2369 1, 2, 3, 5, 4, 2, 2, 1, 2, 4,
2370 1, 3, 1, 1, 1, 3, 1, 1, 1, 1,
2371 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2372 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
2373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2374 2, 3, 3, 4, 1, 2, 1, 1, 1, 1,
2375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2385 1, 1, 1, 5, 4, 1, 2, 3, 1, 3,
2386 1, 2, 1, 3, 4, 1, 3, 1, 1, 1,
2387 1, 1, 1, 1, 1, 1, 2, 0, 4, 1,
2388 1, 2, 3, 1, 2, 1, 2, 5, 3, 1,
2389 1, 4, 5, 2, 3, 3, 2, 1, 2, 2,
2390 2, 1, 2, 5, 7, 6, 1, 1, 1, 0,
2391 2, 3, 2, 2, 2, 3, 2, 1, 1, 1,
2392 1, 2, 1, 2, 7, 1, 1, 1, 0, 1,
2393 2, 1, 2, 3, 3, 3, 3
2394 };
2395
2396
2397 #define yyerrok (yyerrstatus = 0)
2398 #define yyclearin (yychar = YYEMPTY)
2399 #define YYEMPTY (-2)
2400 #define YYEOF 0
2401
2402 #define YYACCEPT goto yyacceptlab
2403 #define YYABORT goto yyabortlab
2404 #define YYERROR goto yyerrorlab
2405
2406
2407 #define YYRECOVERING() (!!yyerrstatus)
2408
2409 #define YYBACKUP(Token, Value) \
2410 do \
2411 if (yychar == YYEMPTY) \
2412 { \
2413 yychar = (Token); \
2414 yylval = (Value); \
2415 YYPOPSTACK (yylen); \
2416 yystate = *yyssp; \
2417 goto yybackup; \
2418 } \
2419 else \
2420 { \
2421 yyerror (&yylloc, state, YY_("syntax error: cannot back up")); \
2422 YYERROR; \
2423 } \
2424 while (0)
2425
2426 /* Error token number */
2427 #define YYTERROR 1
2428 #define YYERRCODE 256
2429
2430
2431 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2432 If N is 0, then set CURRENT to the empty location which ends
2433 the previous symbol: RHS[0] (always defined). */
2434
2435 #ifndef YYLLOC_DEFAULT
2436 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2437 do \
2438 if (N) \
2439 { \
2440 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2441 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2442 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2443 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2444 } \
2445 else \
2446 { \
2447 (Current).first_line = (Current).last_line = \
2448 YYRHSLOC (Rhs, 0).last_line; \
2449 (Current).first_column = (Current).last_column = \
2450 YYRHSLOC (Rhs, 0).last_column; \
2451 } \
2452 while (0)
2453 #endif
2454
2455 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2456
2457
2458 /* Enable debugging if requested. */
2459 #if YYDEBUG
2460
2461 # ifndef YYFPRINTF
2462 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2463 # define YYFPRINTF fprintf
2464 # endif
2465
2466 # define YYDPRINTF(Args) \
2467 do { \
2468 if (yydebug) \
2469 YYFPRINTF Args; \
2470 } while (0)
2471
2472
2473 /* YY_LOCATION_PRINT -- Print the location on the stream.
2474 This macro was not mandated originally: define only if we know
2475 we won't break user code: when these are the locations we know. */
2476
2477 #ifndef YY_LOCATION_PRINT
2478 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2479
2480 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2481
2482 YY_ATTRIBUTE_UNUSED
2483 static unsigned
yy_location_print_(FILE * yyo,YYLTYPE const * const yylocp)2484 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2485 {
2486 unsigned res = 0;
2487 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2488 if (0 <= yylocp->first_line)
2489 {
2490 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2491 if (0 <= yylocp->first_column)
2492 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2493 }
2494 if (0 <= yylocp->last_line)
2495 {
2496 if (yylocp->first_line < yylocp->last_line)
2497 {
2498 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2499 if (0 <= end_col)
2500 res += YYFPRINTF (yyo, ".%d", end_col);
2501 }
2502 else if (0 <= end_col && yylocp->first_column < end_col)
2503 res += YYFPRINTF (yyo, "-%d", end_col);
2504 }
2505 return res;
2506 }
2507
2508 # define YY_LOCATION_PRINT(File, Loc) \
2509 yy_location_print_ (File, &(Loc))
2510
2511 # else
2512 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2513 # endif
2514 #endif
2515
2516
2517 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2518 do { \
2519 if (yydebug) \
2520 { \
2521 YYFPRINTF (stderr, "%s ", Title); \
2522 yy_symbol_print (stderr, \
2523 Type, Value, Location, state); \
2524 YYFPRINTF (stderr, "\n"); \
2525 } \
2526 } while (0)
2527
2528
2529 /*----------------------------------------.
2530 | Print this symbol's value on YYOUTPUT. |
2531 `----------------------------------------*/
2532
2533 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,struct _mesa_glsl_parse_state * state)2534 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct _mesa_glsl_parse_state *state)
2535 {
2536 FILE *yyo = yyoutput;
2537 YYUSE (yyo);
2538 YYUSE (yylocationp);
2539 YYUSE (state);
2540 if (!yyvaluep)
2541 return;
2542 # ifdef YYPRINT
2543 if (yytype < YYNTOKENS)
2544 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2545 # endif
2546 YYUSE (yytype);
2547 }
2548
2549
2550 /*--------------------------------.
2551 | Print this symbol on YYOUTPUT. |
2552 `--------------------------------*/
2553
2554 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,struct _mesa_glsl_parse_state * state)2555 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct _mesa_glsl_parse_state *state)
2556 {
2557 YYFPRINTF (yyoutput, "%s %s (",
2558 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2559
2560 YY_LOCATION_PRINT (yyoutput, *yylocationp);
2561 YYFPRINTF (yyoutput, ": ");
2562 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, state);
2563 YYFPRINTF (yyoutput, ")");
2564 }
2565
2566 /*------------------------------------------------------------------.
2567 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2568 | TOP (included). |
2569 `------------------------------------------------------------------*/
2570
2571 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)2572 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2573 {
2574 YYFPRINTF (stderr, "Stack now");
2575 for (; yybottom <= yytop; yybottom++)
2576 {
2577 int yybot = *yybottom;
2578 YYFPRINTF (stderr, " %d", yybot);
2579 }
2580 YYFPRINTF (stderr, "\n");
2581 }
2582
2583 # define YY_STACK_PRINT(Bottom, Top) \
2584 do { \
2585 if (yydebug) \
2586 yy_stack_print ((Bottom), (Top)); \
2587 } while (0)
2588
2589
2590 /*------------------------------------------------.
2591 | Report that the YYRULE is going to be reduced. |
2592 `------------------------------------------------*/
2593
2594 static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule,struct _mesa_glsl_parse_state * state)2595 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct _mesa_glsl_parse_state *state)
2596 {
2597 unsigned long int yylno = yyrline[yyrule];
2598 int yynrhs = yyr2[yyrule];
2599 int yyi;
2600 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2601 yyrule - 1, yylno);
2602 /* The symbols being reduced. */
2603 for (yyi = 0; yyi < yynrhs; yyi++)
2604 {
2605 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2606 yy_symbol_print (stderr,
2607 yystos[yyssp[yyi + 1 - yynrhs]],
2608 &(yyvsp[(yyi + 1) - (yynrhs)])
2609 , &(yylsp[(yyi + 1) - (yynrhs)]) , state);
2610 YYFPRINTF (stderr, "\n");
2611 }
2612 }
2613
2614 # define YY_REDUCE_PRINT(Rule) \
2615 do { \
2616 if (yydebug) \
2617 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, state); \
2618 } while (0)
2619
2620 /* Nonzero means print parse trace. It is left uninitialized so that
2621 multiple parsers can coexist. */
2622 int yydebug;
2623 #else /* !YYDEBUG */
2624 # define YYDPRINTF(Args)
2625 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2626 # define YY_STACK_PRINT(Bottom, Top)
2627 # define YY_REDUCE_PRINT(Rule)
2628 #endif /* !YYDEBUG */
2629
2630
2631 /* YYINITDEPTH -- initial size of the parser's stacks. */
2632 #ifndef YYINITDEPTH
2633 # define YYINITDEPTH 200
2634 #endif
2635
2636 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2637 if the built-in stack extension method is used).
2638
2639 Do not make this value too large; the results are undefined if
2640 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2641 evaluated with infinite-precision integer arithmetic. */
2642
2643 #ifndef YYMAXDEPTH
2644 # define YYMAXDEPTH 10000
2645 #endif
2646
2647
2648 #if YYERROR_VERBOSE
2649
2650 # ifndef yystrlen
2651 # if defined __GLIBC__ && defined _STRING_H
2652 # define yystrlen strlen
2653 # else
2654 /* Return the length of YYSTR. */
2655 static YYSIZE_T
yystrlen(const char * yystr)2656 yystrlen (const char *yystr)
2657 {
2658 YYSIZE_T yylen;
2659 for (yylen = 0; yystr[yylen]; yylen++)
2660 continue;
2661 return yylen;
2662 }
2663 # endif
2664 # endif
2665
2666 # ifndef yystpcpy
2667 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2668 # define yystpcpy stpcpy
2669 # else
2670 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2671 YYDEST. */
2672 static char *
yystpcpy(char * yydest,const char * yysrc)2673 yystpcpy (char *yydest, const char *yysrc)
2674 {
2675 char *yyd = yydest;
2676 const char *yys = yysrc;
2677
2678 while ((*yyd++ = *yys++) != '\0')
2679 continue;
2680
2681 return yyd - 1;
2682 }
2683 # endif
2684 # endif
2685
2686 # ifndef yytnamerr
2687 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2688 quotes and backslashes, so that it's suitable for yyerror. The
2689 heuristic is that double-quoting is unnecessary unless the string
2690 contains an apostrophe, a comma, or backslash (other than
2691 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2692 null, do not copy; instead, return the length of what the result
2693 would have been. */
2694 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)2695 yytnamerr (char *yyres, const char *yystr)
2696 {
2697 if (*yystr == '"')
2698 {
2699 YYSIZE_T yyn = 0;
2700 char const *yyp = yystr;
2701
2702 for (;;)
2703 switch (*++yyp)
2704 {
2705 case '\'':
2706 case ',':
2707 goto do_not_strip_quotes;
2708
2709 case '\\':
2710 if (*++yyp != '\\')
2711 goto do_not_strip_quotes;
2712 /* Fall through. */
2713 default:
2714 if (yyres)
2715 yyres[yyn] = *yyp;
2716 yyn++;
2717 break;
2718
2719 case '"':
2720 if (yyres)
2721 yyres[yyn] = '\0';
2722 return yyn;
2723 }
2724 do_not_strip_quotes: ;
2725 }
2726
2727 if (! yyres)
2728 return yystrlen (yystr);
2729
2730 return yystpcpy (yyres, yystr) - yyres;
2731 }
2732 # endif
2733
2734 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2735 about the unexpected token YYTOKEN for the state stack whose top is
2736 YYSSP.
2737
2738 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2739 not large enough to hold the message. In that case, also set
2740 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2741 required number of bytes is too large to store. */
2742 static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)2743 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2744 yytype_int16 *yyssp, int yytoken)
2745 {
2746 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2747 YYSIZE_T yysize = yysize0;
2748 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2749 /* Internationalized format string. */
2750 const char *yyformat = YY_NULLPTR;
2751 /* Arguments of yyformat. */
2752 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2753 /* Number of reported tokens (one for the "unexpected", one per
2754 "expected"). */
2755 int yycount = 0;
2756
2757 /* There are many possibilities here to consider:
2758 - If this state is a consistent state with a default action, then
2759 the only way this function was invoked is if the default action
2760 is an error action. In that case, don't check for expected
2761 tokens because there are none.
2762 - The only way there can be no lookahead present (in yychar) is if
2763 this state is a consistent state with a default action. Thus,
2764 detecting the absence of a lookahead is sufficient to determine
2765 that there is no unexpected or expected token to report. In that
2766 case, just report a simple "syntax error".
2767 - Don't assume there isn't a lookahead just because this state is a
2768 consistent state with a default action. There might have been a
2769 previous inconsistent state, consistent state with a non-default
2770 action, or user semantic action that manipulated yychar.
2771 - Of course, the expected token list depends on states to have
2772 correct lookahead information, and it depends on the parser not
2773 to perform extra reductions after fetching a lookahead from the
2774 scanner and before detecting a syntax error. Thus, state merging
2775 (from LALR or IELR) and default reductions corrupt the expected
2776 token list. However, the list is correct for canonical LR with
2777 one exception: it will still contain any token that will not be
2778 accepted due to an error action in a later state.
2779 */
2780 if (yytoken != YYEMPTY)
2781 {
2782 int yyn = yypact[*yyssp];
2783 yyarg[yycount++] = yytname[yytoken];
2784 if (!yypact_value_is_default (yyn))
2785 {
2786 /* Start YYX at -YYN if negative to avoid negative indexes in
2787 YYCHECK. In other words, skip the first -YYN actions for
2788 this state because they are default actions. */
2789 int yyxbegin = yyn < 0 ? -yyn : 0;
2790 /* Stay within bounds of both yycheck and yytname. */
2791 int yychecklim = YYLAST - yyn + 1;
2792 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2793 int yyx;
2794
2795 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2796 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2797 && !yytable_value_is_error (yytable[yyx + yyn]))
2798 {
2799 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2800 {
2801 yycount = 1;
2802 yysize = yysize0;
2803 break;
2804 }
2805 yyarg[yycount++] = yytname[yyx];
2806 {
2807 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2808 if (! (yysize <= yysize1
2809 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2810 return 2;
2811 yysize = yysize1;
2812 }
2813 }
2814 }
2815 }
2816
2817 switch (yycount)
2818 {
2819 # define YYCASE_(N, S) \
2820 case N: \
2821 yyformat = S; \
2822 break
2823 YYCASE_(0, YY_("syntax error"));
2824 YYCASE_(1, YY_("syntax error, unexpected %s"));
2825 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2826 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2827 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2828 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2829 # undef YYCASE_
2830 }
2831
2832 {
2833 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2834 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2835 return 2;
2836 yysize = yysize1;
2837 }
2838
2839 if (*yymsg_alloc < yysize)
2840 {
2841 *yymsg_alloc = 2 * yysize;
2842 if (! (yysize <= *yymsg_alloc
2843 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2844 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2845 return 1;
2846 }
2847
2848 /* Avoid sprintf, as that infringes on the user's name space.
2849 Don't have undefined behavior even if the translation
2850 produced a string with the wrong number of "%s"s. */
2851 {
2852 char *yyp = *yymsg;
2853 int yyi = 0;
2854 while ((*yyp = *yyformat) != '\0')
2855 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2856 {
2857 yyp += yytnamerr (yyp, yyarg[yyi++]);
2858 yyformat += 2;
2859 }
2860 else
2861 {
2862 yyp++;
2863 yyformat++;
2864 }
2865 }
2866 return 0;
2867 }
2868 #endif /* YYERROR_VERBOSE */
2869
2870 /*-----------------------------------------------.
2871 | Release the memory associated to this symbol. |
2872 `-----------------------------------------------*/
2873
2874 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep,YYLTYPE * yylocationp,struct _mesa_glsl_parse_state * state)2875 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct _mesa_glsl_parse_state *state)
2876 {
2877 YYUSE (yyvaluep);
2878 YYUSE (yylocationp);
2879 YYUSE (state);
2880 if (!yymsg)
2881 yymsg = "Deleting";
2882 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2883
2884 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2885 YYUSE (yytype);
2886 YY_IGNORE_MAYBE_UNINITIALIZED_END
2887 }
2888
2889
2890
2891
2892 /*----------.
2893 | yyparse. |
2894 `----------*/
2895
2896 int
yyparse(struct _mesa_glsl_parse_state * state)2897 yyparse (struct _mesa_glsl_parse_state *state)
2898 {
2899 /* The lookahead symbol. */
2900 int yychar;
2901
2902
2903 /* The semantic value of the lookahead symbol. */
2904 /* Default value used for initialization, for pacifying older GCCs
2905 or non-GCC compilers. */
2906 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
2907 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
2908
2909 /* Location data for the lookahead symbol. */
2910 static YYLTYPE yyloc_default
2911 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2912 = { 1, 1, 1, 1 }
2913 # endif
2914 ;
2915 YYLTYPE yylloc = yyloc_default;
2916
2917 /* Number of syntax errors so far. */
2918 int yynerrs;
2919
2920 int yystate;
2921 /* Number of tokens to shift before error messages enabled. */
2922 int yyerrstatus;
2923
2924 /* The stacks and their tools:
2925 'yyss': related to states.
2926 'yyvs': related to semantic values.
2927 'yyls': related to locations.
2928
2929 Refer to the stacks through separate pointers, to allow yyoverflow
2930 to reallocate them elsewhere. */
2931
2932 /* The state stack. */
2933 yytype_int16 yyssa[YYINITDEPTH];
2934 yytype_int16 *yyss;
2935 yytype_int16 *yyssp;
2936
2937 /* The semantic value stack. */
2938 YYSTYPE yyvsa[YYINITDEPTH];
2939 YYSTYPE *yyvs;
2940 YYSTYPE *yyvsp;
2941
2942 /* The location stack. */
2943 YYLTYPE yylsa[YYINITDEPTH];
2944 YYLTYPE *yyls;
2945 YYLTYPE *yylsp;
2946
2947 /* The locations where the error started and ended. */
2948 YYLTYPE yyerror_range[3];
2949
2950 YYSIZE_T yystacksize;
2951
2952 int yyn;
2953 int yyresult;
2954 /* Lookahead token as an internal (translated) token number. */
2955 int yytoken = 0;
2956 /* The variables used to return semantic value and location from the
2957 action routines. */
2958 YYSTYPE yyval;
2959 YYLTYPE yyloc;
2960
2961 #if YYERROR_VERBOSE
2962 /* Buffer for error messages, and its allocated size. */
2963 char yymsgbuf[128];
2964 char *yymsg = yymsgbuf;
2965 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2966 #endif
2967
2968 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
2969
2970 /* The number of symbols on the RHS of the reduced rule.
2971 Keep to zero when no symbol should be popped. */
2972 int yylen = 0;
2973
2974 yyssp = yyss = yyssa;
2975 yyvsp = yyvs = yyvsa;
2976 yylsp = yyls = yylsa;
2977 yystacksize = YYINITDEPTH;
2978
2979 YYDPRINTF ((stderr, "Starting parse\n"));
2980
2981 yystate = 0;
2982 yyerrstatus = 0;
2983 yynerrs = 0;
2984 yychar = YYEMPTY; /* Cause a token to be read. */
2985
2986 /* User initialization code. */
2987 #line 88 "src/glsl/glsl_parser.yy" /* yacc.c:1429 */
2988 {
2989 yylloc.first_line = 1;
2990 yylloc.first_column = 1;
2991 yylloc.last_line = 1;
2992 yylloc.last_column = 1;
2993 yylloc.source = 0;
2994 }
2995
2996 #line 2997 "src/glsl/glsl_parser.cpp" /* yacc.c:1429 */
2997 yylsp[0] = yylloc;
2998 goto yysetstate;
2999
3000 /*------------------------------------------------------------.
3001 | yynewstate -- Push a new state, which is found in yystate. |
3002 `------------------------------------------------------------*/
3003 yynewstate:
3004 /* In all cases, when you get here, the value and location stacks
3005 have just been pushed. So pushing a state here evens the stacks. */
3006 yyssp++;
3007
3008 yysetstate:
3009 *yyssp = yystate;
3010
3011 if (yyss + yystacksize - 1 <= yyssp)
3012 {
3013 /* Get the current used size of the three stacks, in elements. */
3014 YYSIZE_T yysize = yyssp - yyss + 1;
3015
3016 #ifdef yyoverflow
3017 {
3018 /* Give user a chance to reallocate the stack. Use copies of
3019 these so that the &'s don't force the real ones into
3020 memory. */
3021 YYSTYPE *yyvs1 = yyvs;
3022 yytype_int16 *yyss1 = yyss;
3023 YYLTYPE *yyls1 = yyls;
3024
3025 /* Each stack pointer address is followed by the size of the
3026 data in use in that stack, in bytes. This used to be a
3027 conditional around just the two extra args, but that might
3028 be undefined if yyoverflow is a macro. */
3029 yyoverflow (YY_("memory exhausted"),
3030 &yyss1, yysize * sizeof (*yyssp),
3031 &yyvs1, yysize * sizeof (*yyvsp),
3032 &yyls1, yysize * sizeof (*yylsp),
3033 &yystacksize);
3034
3035 yyls = yyls1;
3036 yyss = yyss1;
3037 yyvs = yyvs1;
3038 }
3039 #else /* no yyoverflow */
3040 # ifndef YYSTACK_RELOCATE
3041 goto yyexhaustedlab;
3042 # else
3043 /* Extend the stack our own way. */
3044 if (YYMAXDEPTH <= yystacksize)
3045 goto yyexhaustedlab;
3046 yystacksize *= 2;
3047 if (YYMAXDEPTH < yystacksize)
3048 yystacksize = YYMAXDEPTH;
3049
3050 {
3051 yytype_int16 *yyss1 = yyss;
3052 union yyalloc *yyptr =
3053 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3054 if (! yyptr)
3055 goto yyexhaustedlab;
3056 YYSTACK_RELOCATE (yyss_alloc, yyss);
3057 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3058 YYSTACK_RELOCATE (yyls_alloc, yyls);
3059 # undef YYSTACK_RELOCATE
3060 if (yyss1 != yyssa)
3061 YYSTACK_FREE (yyss1);
3062 }
3063 # endif
3064 #endif /* no yyoverflow */
3065
3066 yyssp = yyss + yysize - 1;
3067 yyvsp = yyvs + yysize - 1;
3068 yylsp = yyls + yysize - 1;
3069
3070 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3071 (unsigned long int) yystacksize));
3072
3073 if (yyss + yystacksize - 1 <= yyssp)
3074 YYABORT;
3075 }
3076
3077 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3078
3079 if (yystate == YYFINAL)
3080 YYACCEPT;
3081
3082 goto yybackup;
3083
3084 /*-----------.
3085 | yybackup. |
3086 `-----------*/
3087 yybackup:
3088
3089 /* Do appropriate processing given the current state. Read a
3090 lookahead token if we need one and don't already have one. */
3091
3092 /* First try to decide what to do without reference to lookahead token. */
3093 yyn = yypact[yystate];
3094 if (yypact_value_is_default (yyn))
3095 goto yydefault;
3096
3097 /* Not known => get a lookahead token if don't already have one. */
3098
3099 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3100 if (yychar == YYEMPTY)
3101 {
3102 YYDPRINTF ((stderr, "Reading a token: "));
3103 yychar = yylex (&yylval, &yylloc, state);
3104 }
3105
3106 if (yychar <= YYEOF)
3107 {
3108 yychar = yytoken = YYEOF;
3109 YYDPRINTF ((stderr, "Now at end of input.\n"));
3110 }
3111 else
3112 {
3113 yytoken = YYTRANSLATE (yychar);
3114 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3115 }
3116
3117 /* If the proper action on seeing token YYTOKEN is to reduce or to
3118 detect an error, take that action. */
3119 yyn += yytoken;
3120 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3121 goto yydefault;
3122 yyn = yytable[yyn];
3123 if (yyn <= 0)
3124 {
3125 if (yytable_value_is_error (yyn))
3126 goto yyerrlab;
3127 yyn = -yyn;
3128 goto yyreduce;
3129 }
3130
3131 /* Count tokens shifted since error; after three, turn off error
3132 status. */
3133 if (yyerrstatus)
3134 yyerrstatus--;
3135
3136 /* Shift the lookahead token. */
3137 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3138
3139 /* Discard the shifted token. */
3140 yychar = YYEMPTY;
3141
3142 yystate = yyn;
3143 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3144 *++yyvsp = yylval;
3145 YY_IGNORE_MAYBE_UNINITIALIZED_END
3146 *++yylsp = yylloc;
3147 goto yynewstate;
3148
3149
3150 /*-----------------------------------------------------------.
3151 | yydefault -- do the default action for the current state. |
3152 `-----------------------------------------------------------*/
3153 yydefault:
3154 yyn = yydefact[yystate];
3155 if (yyn == 0)
3156 goto yyerrlab;
3157 goto yyreduce;
3158
3159
3160 /*-----------------------------.
3161 | yyreduce -- Do a reduction. |
3162 `-----------------------------*/
3163 yyreduce:
3164 /* yyn is the number of a rule to reduce with. */
3165 yylen = yyr2[yyn];
3166
3167 /* If YYLEN is nonzero, implement the default value of the action:
3168 '$$ = $1'.
3169
3170 Otherwise, the following line sets YYVAL to garbage.
3171 This behavior is undocumented and Bison
3172 users should not rely upon it. Assigning to YYVAL
3173 unconditionally makes the parser a bit smaller, and it avoids a
3174 GCC warning that YYVAL may be used uninitialized. */
3175 yyval = yyvsp[1-yylen];
3176
3177 /* Default location. */
3178 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3179 YY_REDUCE_PRINT (yyn);
3180 switch (yyn)
3181 {
3182 case 2:
3183 #line 303 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3184 {
3185 _mesa_glsl_initialize_types(state);
3186 }
3187 #line 3188 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3188 break;
3189
3190 case 3:
3191 #line 307 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3192 {
3193 delete state->symbols;
3194 state->symbols = new(ralloc_parent(state)) glsl_symbol_table;
3195 _mesa_glsl_initialize_types(state);
3196 }
3197 #line 3198 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3198 break;
3199
3200 case 5:
3201 #line 317 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3202 {
3203 state->process_version_directive(&(yylsp[-1]), (yyvsp[-1].n), NULL);
3204 if (state->error) {
3205 YYERROR;
3206 }
3207 }
3208 #line 3209 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3209 break;
3210
3211 case 6:
3212 #line 324 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3213 {
3214 state->process_version_directive(&(yylsp[-2]), (yyvsp[-2].n), (yyvsp[-1].identifier));
3215 if (state->error) {
3216 YYERROR;
3217 }
3218 }
3219 #line 3220 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3220 break;
3221
3222 case 11:
3223 #line 338 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3224 {
3225 if (!state->is_version(120, 100)) {
3226 _mesa_glsl_warning(& (yylsp[-1]), state,
3227 "pragma `invariant(all)' not supported in %s "
3228 "(GLSL ES 1.00 or GLSL 1.20 required)",
3229 state->get_version_string());
3230 } else {
3231 state->all_invariant = true;
3232 }
3233 }
3234 #line 3235 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3235 break;
3236
3237 case 17:
3238 #line 363 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3239 {
3240 if (!_mesa_glsl_process_extension((yyvsp[-3].identifier), & (yylsp[-3]), (yyvsp[-1].identifier), & (yylsp[-1]), state)) {
3241 YYERROR;
3242 }
3243 }
3244 #line 3245 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3245 break;
3246
3247 case 18:
3248 #line 372 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3249 {
3250 /* FINISHME: The NULL test is required because pragmas are set to
3251 * FINISHME: NULL. (See production rule for external_declaration.)
3252 */
3253 if ((yyvsp[0].node) != NULL)
3254 state->translation_unit.push_tail(& (yyvsp[0].node)->link);
3255 }
3256 #line 3257 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3257 break;
3258
3259 case 19:
3260 #line 380 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3261 {
3262 /* FINISHME: The NULL test is required because pragmas are set to
3263 * FINISHME: NULL. (See production rule for external_declaration.)
3264 */
3265 if ((yyvsp[0].node) != NULL)
3266 state->translation_unit.push_tail(& (yyvsp[0].node)->link);
3267 }
3268 #line 3269 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3269 break;
3270
3271 case 20:
3272 #line 387 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3273 {
3274 if (!state->allow_extension_directive_midshader) {
3275 _mesa_glsl_error(& (yylsp[0]), state,
3276 "#extension directive is not allowed "
3277 "in the middle of a shader");
3278 YYERROR;
3279 }
3280 }
3281 #line 3282 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3282 break;
3283
3284 case 23:
3285 #line 404 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3286 {
3287 void *ctx = state;
3288 (yyval.expression) = new(ctx) ast_expression(ast_identifier, NULL, NULL, NULL);
3289 (yyval.expression)->set_location((yylsp[0]));
3290 (yyval.expression)->primary_expression.identifier = (yyvsp[0].identifier);
3291 }
3292 #line 3293 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3293 break;
3294
3295 case 24:
3296 #line 411 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3297 {
3298 void *ctx = state;
3299 (yyval.expression) = new(ctx) ast_expression(ast_int_constant, NULL, NULL, NULL);
3300 (yyval.expression)->set_location((yylsp[0]));
3301 (yyval.expression)->primary_expression.int_constant = (yyvsp[0].n);
3302 }
3303 #line 3304 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3304 break;
3305
3306 case 25:
3307 #line 418 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3308 {
3309 void *ctx = state;
3310 (yyval.expression) = new(ctx) ast_expression(ast_uint_constant, NULL, NULL, NULL);
3311 (yyval.expression)->set_location((yylsp[0]));
3312 (yyval.expression)->primary_expression.uint_constant = (yyvsp[0].n);
3313 }
3314 #line 3315 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3315 break;
3316
3317 case 26:
3318 #line 425 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3319 {
3320 void *ctx = state;
3321 (yyval.expression) = new(ctx) ast_expression(ast_float_constant, NULL, NULL, NULL);
3322 (yyval.expression)->set_location((yylsp[0]));
3323 (yyval.expression)->primary_expression.float_constant = (yyvsp[0].real);
3324 }
3325 #line 3326 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3326 break;
3327
3328 case 27:
3329 #line 432 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3330 {
3331 void *ctx = state;
3332 (yyval.expression) = new(ctx) ast_expression(ast_bool_constant, NULL, NULL, NULL);
3333 (yyval.expression)->set_location((yylsp[0]));
3334 (yyval.expression)->primary_expression.bool_constant = (yyvsp[0].n);
3335 }
3336 #line 3337 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3337 break;
3338
3339 case 28:
3340 #line 439 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3341 {
3342 (yyval.expression) = (yyvsp[-1].expression);
3343 }
3344 #line 3345 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3345 break;
3346
3347 case 30:
3348 #line 447 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3349 {
3350 void *ctx = state;
3351 (yyval.expression) = new(ctx) ast_expression(ast_array_index, (yyvsp[-3].expression), (yyvsp[-1].expression), NULL);
3352 (yyval.expression)->set_location_range((yylsp[-3]), (yylsp[0]));
3353 }
3354 #line 3355 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3355 break;
3356
3357 case 31:
3358 #line 453 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3359 {
3360 (yyval.expression) = (yyvsp[0].expression);
3361 }
3362 #line 3363 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3363 break;
3364
3365 case 32:
3366 #line 457 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3367 {
3368 void *ctx = state;
3369 (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[-2].expression), NULL, NULL);
3370 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3371 (yyval.expression)->primary_expression.identifier = (yyvsp[0].identifier);
3372 }
3373 #line 3374 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3374 break;
3375
3376 case 33:
3377 #line 464 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3378 {
3379 void *ctx = state;
3380 (yyval.expression) = new(ctx) ast_expression(ast_post_inc, (yyvsp[-1].expression), NULL, NULL);
3381 (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0]));
3382 }
3383 #line 3384 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3384 break;
3385
3386 case 34:
3387 #line 470 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3388 {
3389 void *ctx = state;
3390 (yyval.expression) = new(ctx) ast_expression(ast_post_dec, (yyvsp[-1].expression), NULL, NULL);
3391 (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0]));
3392 }
3393 #line 3394 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3394 break;
3395
3396 case 38:
3397 #line 488 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3398 {
3399 void *ctx = state;
3400 (yyval.expression) = new(ctx) ast_expression(ast_field_selection, (yyvsp[-2].expression), (yyvsp[0].expression), NULL);
3401 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3402 }
3403 #line 3404 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3404 break;
3405
3406 case 43:
3407 #line 507 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3408 {
3409 (yyval.expression) = (yyvsp[-1].expression);
3410 (yyval.expression)->set_location((yylsp[-1]));
3411 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
3412 }
3413 #line 3414 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3414 break;
3415
3416 case 44:
3417 #line 513 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3418 {
3419 (yyval.expression) = (yyvsp[-2].expression);
3420 (yyval.expression)->set_location((yylsp[-2]));
3421 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
3422 }
3423 #line 3424 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3424 break;
3425
3426 case 46:
3427 #line 529 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3428 {
3429 void *ctx = state;
3430 (yyval.expression) = new(ctx) ast_function_expression((yyvsp[0].type_specifier));
3431 (yyval.expression)->set_location((yylsp[0]));
3432 }
3433 #line 3434 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3434 break;
3435
3436 case 47:
3437 #line 535 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3438 {
3439 void *ctx = state;
3440 ast_expression *callee = new(ctx) ast_expression((yyvsp[0].identifier));
3441 callee->set_location((yylsp[0]));
3442 (yyval.expression) = new(ctx) ast_function_expression(callee);
3443 (yyval.expression)->set_location((yylsp[0]));
3444 }
3445 #line 3446 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3446 break;
3447
3448 case 48:
3449 #line 543 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3450 {
3451 void *ctx = state;
3452 ast_expression *callee = new(ctx) ast_expression((yyvsp[0].identifier));
3453 callee->set_location((yylsp[0]));
3454 (yyval.expression) = new(ctx) ast_function_expression(callee);
3455 (yyval.expression)->set_location((yylsp[0]));
3456 }
3457 #line 3458 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3458 break;
3459
3460 case 53:
3461 #line 564 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3462 {
3463 (yyval.expression) = (yyvsp[-1].expression);
3464 (yyval.expression)->set_location((yylsp[-1]));
3465 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
3466 }
3467 #line 3468 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3468 break;
3469
3470 case 54:
3471 #line 570 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3472 {
3473 (yyval.expression) = (yyvsp[-2].expression);
3474 (yyval.expression)->set_location((yylsp[-2]));
3475 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
3476 }
3477 #line 3478 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3478 break;
3479
3480 case 55:
3481 #line 582 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3482 {
3483 void *ctx = state;
3484 ast_expression *callee = new(ctx) ast_expression((yyvsp[-1].identifier));
3485 callee->set_location((yylsp[-1]));
3486 (yyval.expression) = new(ctx) ast_function_expression(callee);
3487 (yyval.expression)->set_location((yylsp[-1]));
3488 }
3489 #line 3490 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3490 break;
3491
3492 case 57:
3493 #line 595 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3494 {
3495 void *ctx = state;
3496 (yyval.expression) = new(ctx) ast_expression(ast_pre_inc, (yyvsp[0].expression), NULL, NULL);
3497 (yyval.expression)->set_location((yylsp[-1]));
3498 }
3499 #line 3500 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3500 break;
3501
3502 case 58:
3503 #line 601 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3504 {
3505 void *ctx = state;
3506 (yyval.expression) = new(ctx) ast_expression(ast_pre_dec, (yyvsp[0].expression), NULL, NULL);
3507 (yyval.expression)->set_location((yylsp[-1]));
3508 }
3509 #line 3510 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3510 break;
3511
3512 case 59:
3513 #line 607 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3514 {
3515 void *ctx = state;
3516 (yyval.expression) = new(ctx) ast_expression((yyvsp[-1].n), (yyvsp[0].expression), NULL, NULL);
3517 (yyval.expression)->set_location_range((yylsp[-1]), (yylsp[0]));
3518 }
3519 #line 3520 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3520 break;
3521
3522 case 60:
3523 #line 616 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3524 { (yyval.n) = ast_plus; }
3525 #line 3526 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3526 break;
3527
3528 case 61:
3529 #line 617 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3530 { (yyval.n) = ast_neg; }
3531 #line 3532 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3532 break;
3533
3534 case 62:
3535 #line 618 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3536 { (yyval.n) = ast_logic_not; }
3537 #line 3538 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3538 break;
3539
3540 case 63:
3541 #line 619 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3542 { (yyval.n) = ast_bit_not; }
3543 #line 3544 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3544 break;
3545
3546 case 65:
3547 #line 625 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3548 {
3549 void *ctx = state;
3550 (yyval.expression) = new(ctx) ast_expression_bin(ast_mul, (yyvsp[-2].expression), (yyvsp[0].expression));
3551 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3552 }
3553 #line 3554 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3554 break;
3555
3556 case 66:
3557 #line 631 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3558 {
3559 void *ctx = state;
3560 (yyval.expression) = new(ctx) ast_expression_bin(ast_div, (yyvsp[-2].expression), (yyvsp[0].expression));
3561 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3562 }
3563 #line 3564 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3564 break;
3565
3566 case 67:
3567 #line 637 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3568 {
3569 void *ctx = state;
3570 (yyval.expression) = new(ctx) ast_expression_bin(ast_mod, (yyvsp[-2].expression), (yyvsp[0].expression));
3571 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3572 }
3573 #line 3574 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3574 break;
3575
3576 case 69:
3577 #line 647 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3578 {
3579 void *ctx = state;
3580 (yyval.expression) = new(ctx) ast_expression_bin(ast_add, (yyvsp[-2].expression), (yyvsp[0].expression));
3581 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3582 }
3583 #line 3584 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3584 break;
3585
3586 case 70:
3587 #line 653 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3588 {
3589 void *ctx = state;
3590 (yyval.expression) = new(ctx) ast_expression_bin(ast_sub, (yyvsp[-2].expression), (yyvsp[0].expression));
3591 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3592 }
3593 #line 3594 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3594 break;
3595
3596 case 72:
3597 #line 663 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3598 {
3599 void *ctx = state;
3600 (yyval.expression) = new(ctx) ast_expression_bin(ast_lshift, (yyvsp[-2].expression), (yyvsp[0].expression));
3601 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3602 }
3603 #line 3604 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3604 break;
3605
3606 case 73:
3607 #line 669 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3608 {
3609 void *ctx = state;
3610 (yyval.expression) = new(ctx) ast_expression_bin(ast_rshift, (yyvsp[-2].expression), (yyvsp[0].expression));
3611 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3612 }
3613 #line 3614 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3614 break;
3615
3616 case 75:
3617 #line 679 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3618 {
3619 void *ctx = state;
3620 (yyval.expression) = new(ctx) ast_expression_bin(ast_less, (yyvsp[-2].expression), (yyvsp[0].expression));
3621 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3622 }
3623 #line 3624 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3624 break;
3625
3626 case 76:
3627 #line 685 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3628 {
3629 void *ctx = state;
3630 (yyval.expression) = new(ctx) ast_expression_bin(ast_greater, (yyvsp[-2].expression), (yyvsp[0].expression));
3631 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3632 }
3633 #line 3634 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3634 break;
3635
3636 case 77:
3637 #line 691 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3638 {
3639 void *ctx = state;
3640 (yyval.expression) = new(ctx) ast_expression_bin(ast_lequal, (yyvsp[-2].expression), (yyvsp[0].expression));
3641 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3642 }
3643 #line 3644 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3644 break;
3645
3646 case 78:
3647 #line 697 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3648 {
3649 void *ctx = state;
3650 (yyval.expression) = new(ctx) ast_expression_bin(ast_gequal, (yyvsp[-2].expression), (yyvsp[0].expression));
3651 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3652 }
3653 #line 3654 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3654 break;
3655
3656 case 80:
3657 #line 707 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3658 {
3659 void *ctx = state;
3660 (yyval.expression) = new(ctx) ast_expression_bin(ast_equal, (yyvsp[-2].expression), (yyvsp[0].expression));
3661 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3662 }
3663 #line 3664 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3664 break;
3665
3666 case 81:
3667 #line 713 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3668 {
3669 void *ctx = state;
3670 (yyval.expression) = new(ctx) ast_expression_bin(ast_nequal, (yyvsp[-2].expression), (yyvsp[0].expression));
3671 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3672 }
3673 #line 3674 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3674 break;
3675
3676 case 83:
3677 #line 723 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3678 {
3679 void *ctx = state;
3680 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_and, (yyvsp[-2].expression), (yyvsp[0].expression));
3681 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3682 }
3683 #line 3684 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3684 break;
3685
3686 case 85:
3687 #line 733 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3688 {
3689 void *ctx = state;
3690 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_xor, (yyvsp[-2].expression), (yyvsp[0].expression));
3691 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3692 }
3693 #line 3694 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3694 break;
3695
3696 case 87:
3697 #line 743 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3698 {
3699 void *ctx = state;
3700 (yyval.expression) = new(ctx) ast_expression_bin(ast_bit_or, (yyvsp[-2].expression), (yyvsp[0].expression));
3701 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3702 }
3703 #line 3704 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3704 break;
3705
3706 case 89:
3707 #line 753 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3708 {
3709 void *ctx = state;
3710 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_and, (yyvsp[-2].expression), (yyvsp[0].expression));
3711 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3712 }
3713 #line 3714 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3714 break;
3715
3716 case 91:
3717 #line 763 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3718 {
3719 void *ctx = state;
3720 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_xor, (yyvsp[-2].expression), (yyvsp[0].expression));
3721 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3722 }
3723 #line 3724 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3724 break;
3725
3726 case 93:
3727 #line 773 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3728 {
3729 void *ctx = state;
3730 (yyval.expression) = new(ctx) ast_expression_bin(ast_logic_or, (yyvsp[-2].expression), (yyvsp[0].expression));
3731 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3732 }
3733 #line 3734 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3734 break;
3735
3736 case 95:
3737 #line 783 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3738 {
3739 void *ctx = state;
3740 (yyval.expression) = new(ctx) ast_expression(ast_conditional, (yyvsp[-4].expression), (yyvsp[-2].expression), (yyvsp[0].expression));
3741 (yyval.expression)->set_location_range((yylsp[-4]), (yylsp[0]));
3742 }
3743 #line 3744 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3744 break;
3745
3746 case 97:
3747 #line 793 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3748 {
3749 void *ctx = state;
3750 (yyval.expression) = new(ctx) ast_expression((yyvsp[-1].n), (yyvsp[-2].expression), (yyvsp[0].expression), NULL);
3751 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3752 }
3753 #line 3754 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3754 break;
3755
3756 case 98:
3757 #line 801 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3758 { (yyval.n) = ast_assign; }
3759 #line 3760 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3760 break;
3761
3762 case 99:
3763 #line 802 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3764 { (yyval.n) = ast_mul_assign; }
3765 #line 3766 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3766 break;
3767
3768 case 100:
3769 #line 803 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3770 { (yyval.n) = ast_div_assign; }
3771 #line 3772 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3772 break;
3773
3774 case 101:
3775 #line 804 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3776 { (yyval.n) = ast_mod_assign; }
3777 #line 3778 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3778 break;
3779
3780 case 102:
3781 #line 805 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3782 { (yyval.n) = ast_add_assign; }
3783 #line 3784 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3784 break;
3785
3786 case 103:
3787 #line 806 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3788 { (yyval.n) = ast_sub_assign; }
3789 #line 3790 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3790 break;
3791
3792 case 104:
3793 #line 807 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3794 { (yyval.n) = ast_ls_assign; }
3795 #line 3796 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3796 break;
3797
3798 case 105:
3799 #line 808 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3800 { (yyval.n) = ast_rs_assign; }
3801 #line 3802 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3802 break;
3803
3804 case 106:
3805 #line 809 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3806 { (yyval.n) = ast_and_assign; }
3807 #line 3808 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3808 break;
3809
3810 case 107:
3811 #line 810 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3812 { (yyval.n) = ast_xor_assign; }
3813 #line 3814 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3814 break;
3815
3816 case 108:
3817 #line 811 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3818 { (yyval.n) = ast_or_assign; }
3819 #line 3820 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3820 break;
3821
3822 case 109:
3823 #line 816 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3824 {
3825 (yyval.expression) = (yyvsp[0].expression);
3826 }
3827 #line 3828 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3828 break;
3829
3830 case 110:
3831 #line 820 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3832 {
3833 void *ctx = state;
3834 if ((yyvsp[-2].expression)->oper != ast_sequence) {
3835 (yyval.expression) = new(ctx) ast_expression(ast_sequence, NULL, NULL, NULL);
3836 (yyval.expression)->set_location_range((yylsp[-2]), (yylsp[0]));
3837 (yyval.expression)->expressions.push_tail(& (yyvsp[-2].expression)->link);
3838 } else {
3839 (yyval.expression) = (yyvsp[-2].expression);
3840 }
3841
3842 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
3843 }
3844 #line 3845 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3845 break;
3846
3847 case 112:
3848 #line 840 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3849 {
3850 state->symbols->pop_scope();
3851 (yyval.node) = (yyvsp[-1].function);
3852 }
3853 #line 3854 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3854 break;
3855
3856 case 113:
3857 #line 845 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3858 {
3859 (yyval.node) = (yyvsp[-1].declarator_list);
3860 }
3861 #line 3862 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3862 break;
3863
3864 case 114:
3865 #line 849 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3866 {
3867 (yyvsp[-1].type_specifier)->default_precision = (yyvsp[-2].n);
3868 (yyval.node) = (yyvsp[-1].type_specifier);
3869 }
3870 #line 3871 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3871 break;
3872
3873 case 115:
3874 #line 854 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3875 {
3876 (yyval.node) = (yyvsp[0].node);
3877 }
3878 #line 3879 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3879 break;
3880
3881 case 119:
3882 #line 870 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3883 {
3884 (yyval.function) = (yyvsp[-1].function);
3885 (yyval.function)->parameters.push_tail(& (yyvsp[0].parameter_declarator)->link);
3886 }
3887 #line 3888 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3888 break;
3889
3890 case 120:
3891 #line 875 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3892 {
3893 (yyval.function) = (yyvsp[-2].function);
3894 (yyval.function)->parameters.push_tail(& (yyvsp[0].parameter_declarator)->link);
3895 }
3896 #line 3897 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3897 break;
3898
3899 case 121:
3900 #line 883 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3901 {
3902 void *ctx = state;
3903 (yyval.function) = new(ctx) ast_function();
3904 (yyval.function)->set_location((yylsp[-1]));
3905 (yyval.function)->return_type = (yyvsp[-2].fully_specified_type);
3906 (yyval.function)->identifier = (yyvsp[-1].identifier);
3907
3908 state->symbols->add_function(new(state) ir_function((yyvsp[-1].identifier)));
3909 state->symbols->push_scope();
3910 }
3911 #line 3912 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3912 break;
3913
3914 case 122:
3915 #line 897 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3916 {
3917 void *ctx = state;
3918 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
3919 (yyval.parameter_declarator)->set_location_range((yylsp[-1]), (yylsp[0]));
3920 (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type();
3921 (yyval.parameter_declarator)->type->set_location((yylsp[-1]));
3922 (yyval.parameter_declarator)->type->specifier = (yyvsp[-1].type_specifier);
3923 (yyval.parameter_declarator)->identifier = (yyvsp[0].identifier);
3924 }
3925 #line 3926 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3926 break;
3927
3928 case 123:
3929 #line 907 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3930 {
3931 void *ctx = state;
3932 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
3933 (yyval.parameter_declarator)->set_location_range((yylsp[-2]), (yylsp[0]));
3934 (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type();
3935 (yyval.parameter_declarator)->type->set_location((yylsp[-2]));
3936 (yyval.parameter_declarator)->type->specifier = (yyvsp[-2].type_specifier);
3937 (yyval.parameter_declarator)->identifier = (yyvsp[-1].identifier);
3938 (yyval.parameter_declarator)->array_specifier = (yyvsp[0].array_specifier);
3939 }
3940 #line 3941 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3941 break;
3942
3943 case 124:
3944 #line 921 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3945 {
3946 (yyval.parameter_declarator) = (yyvsp[0].parameter_declarator);
3947 (yyval.parameter_declarator)->type->qualifier = (yyvsp[-1].type_qualifier);
3948 }
3949 #line 3950 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3950 break;
3951
3952 case 125:
3953 #line 926 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3954 {
3955 void *ctx = state;
3956 (yyval.parameter_declarator) = new(ctx) ast_parameter_declarator();
3957 (yyval.parameter_declarator)->set_location((yylsp[0]));
3958 (yyval.parameter_declarator)->type = new(ctx) ast_fully_specified_type();
3959 (yyval.parameter_declarator)->type->set_location_range((yylsp[-1]), (yylsp[0]));
3960 (yyval.parameter_declarator)->type->qualifier = (yyvsp[-1].type_qualifier);
3961 (yyval.parameter_declarator)->type->specifier = (yyvsp[0].type_specifier);
3962 }
3963 #line 3964 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3964 break;
3965
3966 case 126:
3967 #line 939 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3968 {
3969 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
3970 (yyval.type_qualifier).precision = ast_precision_none;
3971 }
3972 #line 3973 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3973 break;
3974
3975 case 127:
3976 #line 944 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3977 {
3978 if ((yyvsp[0].type_qualifier).flags.q.constant)
3979 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate const qualifier");
3980
3981 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
3982 (yyval.type_qualifier).flags.q.constant = 1;
3983 }
3984 #line 3985 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3985 break;
3986
3987 case 128:
3988 #line 952 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
3989 {
3990 if ((yyvsp[0].type_qualifier).flags.q.precise)
3991 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate precise qualifier");
3992
3993 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
3994 (yyval.type_qualifier).flags.q.precise = 1;
3995 }
3996 #line 3997 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
3997 break;
3998
3999 case 129:
4000 #line 960 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4001 {
4002 if (((yyvsp[-1].type_qualifier).flags.q.in || (yyvsp[-1].type_qualifier).flags.q.out) && ((yyvsp[0].type_qualifier).flags.q.in || (yyvsp[0].type_qualifier).flags.q.out))
4003 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate in/out/inout qualifier");
4004
4005 if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.q.constant)
4006 _mesa_glsl_error(&(yylsp[-1]), state, "in/out/inout must come after const "
4007 "or precise");
4008
4009 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4010 (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier));
4011 }
4012 #line 4013 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4013 break;
4014
4015 case 130:
4016 #line 972 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4017 {
4018 if ((yyvsp[0].type_qualifier).precision != ast_precision_none)
4019 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate precision qualifier");
4020
4021 if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.i != 0)
4022 _mesa_glsl_error(&(yylsp[-1]), state, "precision qualifiers must come last");
4023
4024 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
4025 (yyval.type_qualifier).precision = (yyvsp[-1].n);
4026 }
4027 #line 4028 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4028 break;
4029
4030 case 131:
4031 #line 985 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4032 {
4033 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4034 (yyval.type_qualifier).precision = ast_precision_none;
4035 (yyval.type_qualifier).flags.q.in = 1;
4036 }
4037 #line 4038 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4038 break;
4039
4040 case 132:
4041 #line 991 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4042 {
4043 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4044 (yyval.type_qualifier).precision = ast_precision_none;
4045 (yyval.type_qualifier).flags.q.out = 1;
4046 }
4047 #line 4048 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4048 break;
4049
4050 case 133:
4051 #line 997 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4052 {
4053 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4054 (yyval.type_qualifier).precision = ast_precision_none;
4055 (yyval.type_qualifier).flags.q.in = 1;
4056 (yyval.type_qualifier).flags.q.out = 1;
4057 }
4058 #line 4059 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4059 break;
4060
4061 case 136:
4062 #line 1013 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4063 {
4064 void *ctx = state;
4065 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL);
4066 decl->set_location((yylsp[0]));
4067
4068 (yyval.declarator_list) = (yyvsp[-2].declarator_list);
4069 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4070 state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[0].identifier), ir_var_auto, glsl_precision_undefined));
4071 }
4072 #line 4073 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4073 break;
4074
4075 case 137:
4076 #line 1023 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4077 {
4078 void *ctx = state;
4079 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL);
4080 decl->set_location_range((yylsp[-1]), (yylsp[0]));
4081
4082 (yyval.declarator_list) = (yyvsp[-3].declarator_list);
4083 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4084 state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-1].identifier), ir_var_auto, glsl_precision_undefined));
4085 }
4086 #line 4087 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4087 break;
4088
4089 case 138:
4090 #line 1033 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4091 {
4092 void *ctx = state;
4093 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-3].identifier), (yyvsp[-2].array_specifier), (yyvsp[0].expression));
4094 decl->set_location_range((yylsp[-3]), (yylsp[-2]));
4095
4096 (yyval.declarator_list) = (yyvsp[-5].declarator_list);
4097 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4098 state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-3].identifier), ir_var_auto, glsl_precision_undefined));
4099 }
4100 #line 4101 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4101 break;
4102
4103 case 139:
4104 #line 1043 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4105 {
4106 void *ctx = state;
4107 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression));
4108 decl->set_location((yylsp[-2]));
4109
4110 (yyval.declarator_list) = (yyvsp[-4].declarator_list);
4111 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4112 state->symbols->add_variable(new(state) ir_variable(NULL, (yyvsp[-2].identifier), ir_var_auto, glsl_precision_undefined));
4113 }
4114 #line 4115 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4115 break;
4116
4117 case 140:
4118 #line 1057 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4119 {
4120 void *ctx = state;
4121 /* Empty declaration list is valid. */
4122 (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[0].fully_specified_type));
4123 (yyval.declarator_list)->set_location((yylsp[0]));
4124 }
4125 #line 4126 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4126 break;
4127
4128 case 141:
4129 #line 1064 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4130 {
4131 void *ctx = state;
4132 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL);
4133 decl->set_location((yylsp[0]));
4134
4135 (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-1].fully_specified_type));
4136 (yyval.declarator_list)->set_location_range((yylsp[-1]), (yylsp[0]));
4137 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4138 }
4139 #line 4140 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4140 break;
4141
4142 case 142:
4143 #line 1074 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4144 {
4145 void *ctx = state;
4146 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL);
4147 decl->set_location_range((yylsp[-1]), (yylsp[0]));
4148
4149 (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-2].fully_specified_type));
4150 (yyval.declarator_list)->set_location_range((yylsp[-2]), (yylsp[0]));
4151 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4152 }
4153 #line 4154 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4154 break;
4155
4156 case 143:
4157 #line 1084 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4158 {
4159 void *ctx = state;
4160 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-3].identifier), (yyvsp[-2].array_specifier), (yyvsp[0].expression));
4161 decl->set_location_range((yylsp[-3]), (yylsp[-2]));
4162
4163 (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-4].fully_specified_type));
4164 (yyval.declarator_list)->set_location_range((yylsp[-4]), (yylsp[-2]));
4165 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4166 }
4167 #line 4168 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4168 break;
4169
4170 case 144:
4171 #line 1094 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4172 {
4173 void *ctx = state;
4174 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression));
4175 decl->set_location((yylsp[-2]));
4176
4177 (yyval.declarator_list) = new(ctx) ast_declarator_list((yyvsp[-3].fully_specified_type));
4178 (yyval.declarator_list)->set_location_range((yylsp[-3]), (yylsp[-2]));
4179 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4180 }
4181 #line 4182 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4182 break;
4183
4184 case 145:
4185 #line 1104 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4186 {
4187 void *ctx = state;
4188 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL);
4189 decl->set_location((yylsp[0]));
4190
4191 (yyval.declarator_list) = new(ctx) ast_declarator_list(NULL);
4192 (yyval.declarator_list)->set_location_range((yylsp[-1]), (yylsp[0]));
4193 (yyval.declarator_list)->invariant = true;
4194
4195 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4196 }
4197 #line 4198 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4198 break;
4199
4200 case 146:
4201 #line 1116 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4202 {
4203 void *ctx = state;
4204 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL);
4205 decl->set_location((yylsp[0]));
4206
4207 (yyval.declarator_list) = new(ctx) ast_declarator_list(NULL);
4208 (yyval.declarator_list)->set_location_range((yylsp[-1]), (yylsp[0]));
4209 (yyval.declarator_list)->precise = true;
4210
4211 (yyval.declarator_list)->declarations.push_tail(&decl->link);
4212 }
4213 #line 4214 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4214 break;
4215
4216 case 147:
4217 #line 1131 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4218 {
4219 void *ctx = state;
4220 (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
4221 (yyval.fully_specified_type)->set_location((yylsp[0]));
4222 (yyval.fully_specified_type)->specifier = (yyvsp[0].type_specifier);
4223 }
4224 #line 4225 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4225 break;
4226
4227 case 148:
4228 #line 1138 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4229 {
4230 void *ctx = state;
4231 (yyval.fully_specified_type) = new(ctx) ast_fully_specified_type();
4232 (yyval.fully_specified_type)->set_location_range((yylsp[-1]), (yylsp[0]));
4233 (yyval.fully_specified_type)->qualifier = (yyvsp[-1].type_qualifier);
4234 (yyval.fully_specified_type)->specifier = (yyvsp[0].type_specifier);
4235 }
4236 #line 4237 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4237 break;
4238
4239 case 149:
4240 #line 1149 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4241 {
4242 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4243 }
4244 #line 4245 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4245 break;
4246
4247 case 151:
4248 #line 1157 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4249 {
4250 (yyval.type_qualifier) = (yyvsp[-2].type_qualifier);
4251 if (!(yyval.type_qualifier).merge_qualifier(& (yylsp[0]), state, (yyvsp[0].type_qualifier))) {
4252 YYERROR;
4253 }
4254 }
4255 #line 4256 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4256 break;
4257
4258 case 152:
4259 #line 1166 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4260 { (yyval.n) = (yyvsp[0].n); }
4261 #line 4262 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4262 break;
4263
4264 case 153:
4265 #line 1167 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4266 { (yyval.n) = (yyvsp[0].n); }
4267 #line 4268 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4268 break;
4269
4270 case 154:
4271 #line 1172 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4272 {
4273 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4274 (yyval.type_qualifier).precision = ast_precision_none;
4275
4276 /* Layout qualifiers for ARB_fragment_coord_conventions. */
4277 if (!(yyval.type_qualifier).flags.i && (state->ARB_fragment_coord_conventions_enable ||
4278 state->is_version(150, 0))) {
4279 if (match_layout_qualifier((yyvsp[0].identifier), "origin_upper_left", state) == 0) {
4280 (yyval.type_qualifier).flags.q.origin_upper_left = 1;
4281 } else if (match_layout_qualifier((yyvsp[0].identifier), "pixel_center_integer",
4282 state) == 0) {
4283 (yyval.type_qualifier).flags.q.pixel_center_integer = 1;
4284 }
4285
4286 if ((yyval.type_qualifier).flags.i && state->ARB_fragment_coord_conventions_warn) {
4287 _mesa_glsl_warning(& (yylsp[0]), state,
4288 "GL_ARB_fragment_coord_conventions layout "
4289 "identifier `%s' used", (yyvsp[0].identifier));
4290 }
4291 }
4292
4293 /* Layout qualifiers for AMD/ARB_conservative_depth. */
4294 if (!(yyval.type_qualifier).flags.i &&
4295 (state->AMD_conservative_depth_enable ||
4296 state->ARB_conservative_depth_enable)) {
4297 if (match_layout_qualifier((yyvsp[0].identifier), "depth_any", state) == 0) {
4298 (yyval.type_qualifier).flags.q.depth_any = 1;
4299 } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_greater", state) == 0) {
4300 (yyval.type_qualifier).flags.q.depth_greater = 1;
4301 } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_less", state) == 0) {
4302 (yyval.type_qualifier).flags.q.depth_less = 1;
4303 } else if (match_layout_qualifier((yyvsp[0].identifier), "depth_unchanged",
4304 state) == 0) {
4305 (yyval.type_qualifier).flags.q.depth_unchanged = 1;
4306 }
4307
4308 if ((yyval.type_qualifier).flags.i && state->AMD_conservative_depth_warn) {
4309 _mesa_glsl_warning(& (yylsp[0]), state,
4310 "GL_AMD_conservative_depth "
4311 "layout qualifier `%s' is used", (yyvsp[0].identifier));
4312 }
4313 if ((yyval.type_qualifier).flags.i && state->ARB_conservative_depth_warn) {
4314 _mesa_glsl_warning(& (yylsp[0]), state,
4315 "GL_ARB_conservative_depth "
4316 "layout qualifier `%s' is used", (yyvsp[0].identifier));
4317 }
4318 }
4319
4320 /* See also interface_block_layout_qualifier. */
4321 if (!(yyval.type_qualifier).flags.i && state->has_uniform_buffer_objects()) {
4322 if (match_layout_qualifier((yyvsp[0].identifier), "std140", state) == 0) {
4323 (yyval.type_qualifier).flags.q.std140 = 1;
4324 } else if (match_layout_qualifier((yyvsp[0].identifier), "shared", state) == 0) {
4325 (yyval.type_qualifier).flags.q.shared = 1;
4326 } else if (match_layout_qualifier((yyvsp[0].identifier), "column_major", state) == 0) {
4327 (yyval.type_qualifier).flags.q.column_major = 1;
4328 /* "row_major" is a reserved word in GLSL 1.30+. Its token is parsed
4329 * below in the interface_block_layout_qualifier rule.
4330 *
4331 * It is not a reserved word in GLSL ES 3.00, so it's handled here as
4332 * an identifier.
4333 *
4334 * Also, this takes care of alternate capitalizations of
4335 * "row_major" (which is necessary because layout qualifiers
4336 * are case-insensitive in desktop GLSL).
4337 */
4338 } else if (match_layout_qualifier((yyvsp[0].identifier), "row_major", state) == 0) {
4339 (yyval.type_qualifier).flags.q.row_major = 1;
4340 /* "packed" is a reserved word in GLSL, and its token is
4341 * parsed below in the interface_block_layout_qualifier rule.
4342 * However, we must take care of alternate capitalizations of
4343 * "packed", because layout qualifiers are case-insensitive
4344 * in desktop GLSL.
4345 */
4346 } else if (match_layout_qualifier((yyvsp[0].identifier), "packed", state) == 0) {
4347 (yyval.type_qualifier).flags.q.packed = 1;
4348 }
4349
4350 if ((yyval.type_qualifier).flags.i && state->ARB_uniform_buffer_object_warn) {
4351 _mesa_glsl_warning(& (yylsp[0]), state,
4352 "#version 140 / GL_ARB_uniform_buffer_object "
4353 "layout qualifier `%s' is used", (yyvsp[0].identifier));
4354 }
4355 }
4356
4357 /* Layout qualifiers for GLSL 1.50 geometry shaders. */
4358 if (!(yyval.type_qualifier).flags.i) {
4359 static const struct {
4360 const char *s;
4361 GLenum e;
4362 } map[] = {
4363 { "points", GL_POINTS },
4364 { "lines", GL_LINES },
4365 { "lines_adjacency", GL_LINES_ADJACENCY },
4366 { "line_strip", GL_LINE_STRIP },
4367 { "triangles", GL_TRIANGLES },
4368 { "triangles_adjacency", GL_TRIANGLES_ADJACENCY },
4369 { "triangle_strip", GL_TRIANGLE_STRIP },
4370 };
4371 for (unsigned i = 0; i < Elements(map); i++) {
4372 if (match_layout_qualifier((yyvsp[0].identifier), map[i].s, state) == 0) {
4373 (yyval.type_qualifier).flags.q.prim_type = 1;
4374 (yyval.type_qualifier).prim_type = map[i].e;
4375 break;
4376 }
4377 }
4378
4379 if ((yyval.type_qualifier).flags.i && !state->is_version(150, 0)) {
4380 _mesa_glsl_error(& (yylsp[0]), state, "#version 150 layout "
4381 "qualifier `%s' used", (yyvsp[0].identifier));
4382 }
4383 }
4384
4385 /* Layout qualifiers for ARB_shader_image_load_store. */
4386 if (state->ARB_shader_image_load_store_enable ||
4387 state->is_version(420, 0)) {
4388 if (!(yyval.type_qualifier).flags.i) {
4389 static const struct {
4390 const char *name;
4391 GLenum format;
4392 glsl_base_type base_type;
4393 } map[] = {
4394 { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT },
4395 { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT },
4396 { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT },
4397 { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT },
4398 { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT },
4399 { "r32f", GL_R32F, GLSL_TYPE_FLOAT },
4400 { "r16f", GL_R16F, GLSL_TYPE_FLOAT },
4401 { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT },
4402 { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT },
4403 { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT },
4404 { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT },
4405 { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT },
4406 { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT },
4407 { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT },
4408 { "r32ui", GL_R32UI, GLSL_TYPE_UINT },
4409 { "r16ui", GL_R16UI, GLSL_TYPE_UINT },
4410 { "r8ui", GL_R8UI, GLSL_TYPE_UINT },
4411 { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT },
4412 { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT },
4413 { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT },
4414 { "rg32i", GL_RG32I, GLSL_TYPE_INT },
4415 { "rg16i", GL_RG16I, GLSL_TYPE_INT },
4416 { "rg8i", GL_RG8I, GLSL_TYPE_INT },
4417 { "r32i", GL_R32I, GLSL_TYPE_INT },
4418 { "r16i", GL_R16I, GLSL_TYPE_INT },
4419 { "r8i", GL_R8I, GLSL_TYPE_INT },
4420 { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT },
4421 { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT },
4422 { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT },
4423 { "rg16", GL_RG16, GLSL_TYPE_FLOAT },
4424 { "rg8", GL_RG8, GLSL_TYPE_FLOAT },
4425 { "r16", GL_R16, GLSL_TYPE_FLOAT },
4426 { "r8", GL_R8, GLSL_TYPE_FLOAT },
4427 { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT },
4428 { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT },
4429 { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT },
4430 { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT },
4431 { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT },
4432 { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT }
4433 };
4434
4435 for (unsigned i = 0; i < Elements(map); i++) {
4436 if (match_layout_qualifier((yyvsp[0].identifier), map[i].name, state) == 0) {
4437 (yyval.type_qualifier).flags.q.explicit_image_format = 1;
4438 (yyval.type_qualifier).image_format = map[i].format;
4439 (yyval.type_qualifier).image_base_type = map[i].base_type;
4440 break;
4441 }
4442 }
4443 }
4444
4445 if (!(yyval.type_qualifier).flags.i &&
4446 match_layout_qualifier((yyvsp[0].identifier), "early_fragment_tests", state) == 0) {
4447 (yyval.type_qualifier).flags.q.early_fragment_tests = 1;
4448 }
4449 }
4450
4451 if (!(yyval.type_qualifier).flags.i) {
4452 _mesa_glsl_error(& (yylsp[0]), state, "unrecognized layout identifier "
4453 "`%s'", (yyvsp[0].identifier));
4454 YYERROR;
4455 }
4456 }
4457 #line 4458 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4458 break;
4459
4460 case 155:
4461 #line 1358 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4462 {
4463 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4464 (yyval.type_qualifier).precision = ast_precision_none;
4465
4466 if (match_layout_qualifier("location", (yyvsp[-2].identifier), state) == 0) {
4467 (yyval.type_qualifier).flags.q.explicit_location = 1;
4468
4469 if ((yyval.type_qualifier).flags.q.attribute == 1 &&
4470 state->ARB_explicit_attrib_location_warn) {
4471 _mesa_glsl_warning(& (yylsp[-2]), state,
4472 "GL_ARB_explicit_attrib_location layout "
4473 "identifier `%s' used", (yyvsp[-2].identifier));
4474 }
4475
4476 if ((yyvsp[0].n) >= 0) {
4477 (yyval.type_qualifier).location = (yyvsp[0].n);
4478 } else {
4479 _mesa_glsl_error(& (yylsp[0]), state, "invalid location %d specified", (yyvsp[0].n));
4480 YYERROR;
4481 }
4482 }
4483
4484 if (match_layout_qualifier("index", (yyvsp[-2].identifier), state) == 0) {
4485 (yyval.type_qualifier).flags.q.explicit_index = 1;
4486
4487 if ((yyvsp[0].n) >= 0) {
4488 (yyval.type_qualifier).index = (yyvsp[0].n);
4489 } else {
4490 _mesa_glsl_error(& (yylsp[0]), state, "invalid index %d specified", (yyvsp[0].n));
4491 YYERROR;
4492 }
4493 }
4494
4495 if ((state->ARB_shading_language_420pack_enable ||
4496 state->ARB_shader_atomic_counters_enable) &&
4497 match_layout_qualifier("binding", (yyvsp[-2].identifier), state) == 0) {
4498 (yyval.type_qualifier).flags.q.explicit_binding = 1;
4499 (yyval.type_qualifier).binding = (yyvsp[0].n);
4500 }
4501
4502 if (state->ARB_shader_atomic_counters_enable &&
4503 match_layout_qualifier("offset", (yyvsp[-2].identifier), state) == 0) {
4504 (yyval.type_qualifier).flags.q.explicit_offset = 1;
4505 (yyval.type_qualifier).offset = (yyvsp[0].n);
4506 }
4507
4508 if (match_layout_qualifier("max_vertices", (yyvsp[-2].identifier), state) == 0) {
4509 (yyval.type_qualifier).flags.q.max_vertices = 1;
4510
4511 if ((yyvsp[0].n) < 0) {
4512 _mesa_glsl_error(& (yylsp[0]), state,
4513 "invalid max_vertices %d specified", (yyvsp[0].n));
4514 YYERROR;
4515 } else {
4516 (yyval.type_qualifier).max_vertices = (yyvsp[0].n);
4517 if (!state->is_version(150, 0)) {
4518 _mesa_glsl_error(& (yylsp[0]), state,
4519 "#version 150 max_vertices qualifier "
4520 "specified", (yyvsp[0].n));
4521 }
4522 }
4523 }
4524
4525 if (state->stage == MESA_SHADER_GEOMETRY) {
4526 if (match_layout_qualifier("stream", (yyvsp[-2].identifier), state) == 0 &&
4527 state->check_explicit_attrib_stream_allowed(& (yylsp[0]))) {
4528 (yyval.type_qualifier).flags.q.stream = 1;
4529
4530 if ((yyvsp[0].n) < 0) {
4531 _mesa_glsl_error(& (yylsp[0]), state,
4532 "invalid stream %d specified", (yyvsp[0].n));
4533 YYERROR;
4534 } else {
4535 (yyval.type_qualifier).flags.q.explicit_stream = 1;
4536 (yyval.type_qualifier).stream = (yyvsp[0].n);
4537 }
4538 }
4539 }
4540
4541 static const char * const local_size_qualifiers[3] = {
4542 "local_size_x",
4543 "local_size_y",
4544 "local_size_z",
4545 };
4546 for (int i = 0; i < 3; i++) {
4547 if (match_layout_qualifier(local_size_qualifiers[i], (yyvsp[-2].identifier),
4548 state) == 0) {
4549 if ((yyvsp[0].n) <= 0) {
4550 _mesa_glsl_error(& (yylsp[0]), state,
4551 "invalid %s of %d specified",
4552 local_size_qualifiers[i], (yyvsp[0].n));
4553 YYERROR;
4554 } else if (!state->is_version(430, 0) &&
4555 !state->ARB_compute_shader_enable) {
4556 _mesa_glsl_error(& (yylsp[0]), state,
4557 "%s qualifier requires GLSL 4.30 or "
4558 "ARB_compute_shader",
4559 local_size_qualifiers[i]);
4560 YYERROR;
4561 } else {
4562 (yyval.type_qualifier).flags.q.local_size |= (1 << i);
4563 (yyval.type_qualifier).local_size[i] = (yyvsp[0].n);
4564 }
4565 break;
4566 }
4567 }
4568
4569 if (match_layout_qualifier("invocations", (yyvsp[-2].identifier), state) == 0) {
4570 (yyval.type_qualifier).flags.q.invocations = 1;
4571
4572 if ((yyvsp[0].n) <= 0) {
4573 _mesa_glsl_error(& (yylsp[0]), state,
4574 "invalid invocations %d specified", (yyvsp[0].n));
4575 YYERROR;
4576 } else if ((yyvsp[0].n) > MAX_GEOMETRY_SHADER_INVOCATIONS) {
4577 _mesa_glsl_error(& (yylsp[0]), state,
4578 "invocations (%d) exceeds "
4579 "GL_MAX_GEOMETRY_SHADER_INVOCATIONS", (yyvsp[0].n));
4580 YYERROR;
4581 } else {
4582 (yyval.type_qualifier).invocations = (yyvsp[0].n);
4583 if (!state->is_version(400, 0) &&
4584 !state->ARB_gpu_shader5_enable) {
4585 _mesa_glsl_error(& (yylsp[0]), state,
4586 "GL_ARB_gpu_shader5 invocations "
4587 "qualifier specified", (yyvsp[0].n));
4588 }
4589 }
4590 }
4591
4592 /* If the identifier didn't match any known layout identifiers,
4593 * emit an error.
4594 */
4595 if (!(yyval.type_qualifier).flags.i) {
4596 _mesa_glsl_error(& (yylsp[-2]), state, "unrecognized layout identifier "
4597 "`%s'", (yyvsp[-2].identifier));
4598 YYERROR;
4599 }
4600 }
4601 #line 4602 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4602 break;
4603
4604 case 156:
4605 #line 1498 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4606 {
4607 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
4608 /* Layout qualifiers for ARB_uniform_buffer_object. */
4609 if ((yyval.type_qualifier).flags.q.uniform && !state->has_uniform_buffer_objects()) {
4610 _mesa_glsl_error(& (yylsp[0]), state,
4611 "#version 140 / GL_ARB_uniform_buffer_object "
4612 "layout qualifier `%s' is used", (yyvsp[0].type_qualifier));
4613 } else if ((yyval.type_qualifier).flags.q.uniform && state->ARB_uniform_buffer_object_warn) {
4614 _mesa_glsl_warning(& (yylsp[0]), state,
4615 "#version 140 / GL_ARB_uniform_buffer_object "
4616 "layout qualifier `%s' is used", (yyvsp[0].type_qualifier));
4617 }
4618 }
4619 #line 4620 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4620 break;
4621
4622 case 157:
4623 #line 1524 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4624 {
4625 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4626 (yyval.type_qualifier).precision = ast_precision_none;
4627 (yyval.type_qualifier).flags.q.row_major = 1;
4628 }
4629 #line 4630 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4630 break;
4631
4632 case 158:
4633 #line 1530 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4634 {
4635 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4636 (yyval.type_qualifier).precision = ast_precision_none;
4637 (yyval.type_qualifier).flags.q.packed = 1;
4638 }
4639 #line 4640 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4640 break;
4641
4642 case 159:
4643 #line 1539 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4644 {
4645 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4646 (yyval.type_qualifier).precision = ast_precision_none;
4647 (yyval.type_qualifier).flags.q.smooth = 1;
4648 }
4649 #line 4650 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4650 break;
4651
4652 case 160:
4653 #line 1545 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4654 {
4655 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4656 (yyval.type_qualifier).precision = ast_precision_none;
4657 (yyval.type_qualifier).flags.q.flat = 1;
4658 }
4659 #line 4660 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4660 break;
4661
4662 case 161:
4663 #line 1551 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4664 {
4665 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4666 (yyval.type_qualifier).precision = ast_precision_none;
4667 (yyval.type_qualifier).flags.q.noperspective = 1;
4668 }
4669 #line 4670 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4670 break;
4671
4672 case 162:
4673 #line 1561 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4674 {
4675 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4676 (yyval.type_qualifier).precision = ast_precision_none;
4677 (yyval.type_qualifier).flags.q.invariant = 1;
4678 }
4679 #line 4680 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4680 break;
4681
4682 case 163:
4683 #line 1567 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4684 {
4685 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4686 (yyval.type_qualifier).flags.q.precise = 1;
4687 }
4688 #line 4689 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4689 break;
4690
4691 case 168:
4692 #line 1576 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4693 {
4694 memset(&(yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4695 (yyval.type_qualifier).precision = ast_precision_none;
4696 (yyval.type_qualifier).precision = (yyvsp[0].n);
4697 }
4698 #line 4699 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4699 break;
4700
4701 case 169:
4702 #line 1595 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4703 {
4704 if ((yyvsp[0].type_qualifier).flags.q.precise)
4705 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate \"precise\" qualifier");
4706
4707 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
4708 (yyval.type_qualifier).flags.q.precise = 1;
4709 }
4710 #line 4711 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4711 break;
4712
4713 case 170:
4714 #line 1603 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4715 {
4716 if ((yyvsp[0].type_qualifier).flags.q.invariant)
4717 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate \"invariant\" qualifier");
4718
4719 if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.q.precise)
4720 _mesa_glsl_error(&(yylsp[-1]), state,
4721 "\"invariant\" must come after \"precise\"");
4722
4723 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
4724 (yyval.type_qualifier).flags.q.invariant = 1;
4725 }
4726 #line 4727 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4727 break;
4728
4729 case 171:
4730 #line 1615 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4731 {
4732 /* Section 4.3 of the GLSL 1.40 specification states:
4733 * "...qualified with one of these interpolation qualifiers"
4734 *
4735 * GLSL 1.30 claims to allow "one or more", but insists that:
4736 * "These interpolation qualifiers may only precede the qualifiers in,
4737 * centroid in, out, or centroid out in a declaration."
4738 *
4739 * ...which means that e.g. smooth can't precede smooth, so there can be
4740 * only one after all, and the 1.40 text is a clarification, not a change.
4741 */
4742 if ((yyvsp[0].type_qualifier).has_interpolation())
4743 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate interpolation qualifier");
4744
4745 if (!state->ARB_shading_language_420pack_enable &&
4746 ((yyvsp[0].type_qualifier).flags.q.precise || (yyvsp[0].type_qualifier).flags.q.invariant)) {
4747 _mesa_glsl_error(&(yylsp[-1]), state, "interpolation qualifiers must come "
4748 "after \"precise\" or \"invariant\"");
4749 }
4750
4751 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4752 (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier));
4753 }
4754 #line 4755 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4755 break;
4756
4757 case 172:
4758 #line 1639 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4759 {
4760 /* In the absence of ARB_shading_language_420pack, layout qualifiers may
4761 * appear no later than auxiliary storage qualifiers. There is no
4762 * particularly clear spec language mandating this, but in all examples
4763 * the layout qualifier precedes the storage qualifier.
4764 *
4765 * We allow combinations of layout with interpolation, invariant or
4766 * precise qualifiers since these are useful in ARB_separate_shader_objects.
4767 * There is no clear spec guidance on this either.
4768 */
4769 if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).has_layout())
4770 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate layout(...) qualifiers");
4771
4772 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4773 (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier));
4774 }
4775 #line 4776 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4776 break;
4777
4778 case 173:
4779 #line 1656 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4780 {
4781 if ((yyvsp[0].type_qualifier).has_auxiliary_storage()) {
4782 _mesa_glsl_error(&(yylsp[-1]), state,
4783 "duplicate auxiliary storage qualifier (centroid or sample)");
4784 }
4785
4786 if (!state->ARB_shading_language_420pack_enable &&
4787 ((yyvsp[0].type_qualifier).flags.q.precise || (yyvsp[0].type_qualifier).flags.q.invariant ||
4788 (yyvsp[0].type_qualifier).has_interpolation() || (yyvsp[0].type_qualifier).has_layout())) {
4789 _mesa_glsl_error(&(yylsp[-1]), state, "auxiliary storage qualifiers must come "
4790 "just before storage qualifiers");
4791 }
4792 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4793 (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier));
4794 }
4795 #line 4796 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4796 break;
4797
4798 case 174:
4799 #line 1672 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4800 {
4801 /* Section 4.3 of the GLSL 1.20 specification states:
4802 * "Variable declarations may have a storage qualifier specified..."
4803 * 1.30 clarifies this to "may have one storage qualifier".
4804 */
4805 if ((yyvsp[0].type_qualifier).has_storage())
4806 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate storage qualifier");
4807
4808 if (!state->ARB_shading_language_420pack_enable &&
4809 ((yyvsp[0].type_qualifier).flags.q.precise || (yyvsp[0].type_qualifier).flags.q.invariant || (yyvsp[0].type_qualifier).has_interpolation() ||
4810 (yyvsp[0].type_qualifier).has_layout() || (yyvsp[0].type_qualifier).has_auxiliary_storage())) {
4811 _mesa_glsl_error(&(yylsp[-1]), state, "storage qualifiers must come after "
4812 "precise, invariant, interpolation, layout and auxiliary "
4813 "storage qualifiers");
4814 }
4815
4816 (yyval.type_qualifier) = (yyvsp[-1].type_qualifier);
4817 (yyval.type_qualifier).merge_qualifier(&(yylsp[-1]), state, (yyvsp[0].type_qualifier));
4818 }
4819 #line 4820 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4820 break;
4821
4822 case 175:
4823 #line 1692 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4824 {
4825 if ((yyvsp[0].type_qualifier).precision != ast_precision_none)
4826 _mesa_glsl_error(&(yylsp[-1]), state, "duplicate precision qualifier");
4827
4828 if (!state->ARB_shading_language_420pack_enable && (yyvsp[0].type_qualifier).flags.i != 0)
4829 _mesa_glsl_error(&(yylsp[-1]), state, "precision qualifiers must come last");
4830
4831 (yyval.type_qualifier) = (yyvsp[0].type_qualifier);
4832 (yyval.type_qualifier).precision = (yyvsp[-1].n);
4833 }
4834 #line 4835 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4835 break;
4836
4837 case 176:
4838 #line 1706 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4839 {
4840 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4841 (yyval.type_qualifier).precision = ast_precision_none;
4842 (yyval.type_qualifier).flags.q.centroid = 1;
4843 }
4844 #line 4845 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4845 break;
4846
4847 case 177:
4848 #line 1712 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4849 {
4850 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4851 (yyval.type_qualifier).flags.q.sample = 1;
4852 }
4853 #line 4854 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4854 break;
4855
4856 case 178:
4857 #line 1720 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4858 {
4859 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4860 (yyval.type_qualifier).precision = ast_precision_none;
4861 (yyval.type_qualifier).flags.q.constant = 1;
4862 }
4863 #line 4864 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4864 break;
4865
4866 case 179:
4867 #line 1726 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4868 {
4869 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4870 (yyval.type_qualifier).precision = ast_precision_none;
4871 (yyval.type_qualifier).flags.q.attribute = 1;
4872 }
4873 #line 4874 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4874 break;
4875
4876 case 180:
4877 #line 1732 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4878 {
4879 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4880 (yyval.type_qualifier).precision = ast_precision_none;
4881 (yyval.type_qualifier).flags.q.varying = 1;
4882 }
4883 #line 4884 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4884 break;
4885
4886 case 181:
4887 #line 1738 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4888 {
4889 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4890 (yyval.type_qualifier).precision = ast_precision_none;
4891 (yyval.type_qualifier).flags.q.in = 1;
4892 }
4893 #line 4894 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4894 break;
4895
4896 case 182:
4897 #line 1744 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4898 {
4899 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4900 (yyval.type_qualifier).precision = ast_precision_none;
4901 (yyval.type_qualifier).flags.q.out = 1;
4902 }
4903 #line 4904 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4904 break;
4905
4906 case 183:
4907 #line 1750 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4908 {
4909 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4910 (yyval.type_qualifier).precision = ast_precision_none;
4911 (yyval.type_qualifier).flags.q.in = 1;
4912 (yyval.type_qualifier).flags.q.out = 1;
4913
4914 if (state->stage == MESA_SHADER_GEOMETRY &&
4915 state->has_explicit_attrib_stream()) {
4916 /* Section 4.3.8.2 (Output Layout Qualifiers) of the GLSL 4.00
4917 * spec says:
4918 *
4919 * "If the block or variable is declared with the stream
4920 * identifier, it is associated with the specified stream;
4921 * otherwise, it is associated with the current default stream."
4922 */
4923 (yyval.type_qualifier).flags.q.stream = 1;
4924 (yyval.type_qualifier).flags.q.explicit_stream = 0;
4925 (yyval.type_qualifier).stream = state->out_qualifier->stream;
4926 }
4927 }
4928 #line 4929 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4929 break;
4930
4931 case 184:
4932 #line 1771 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4933 {
4934 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4935 (yyval.type_qualifier).precision = ast_precision_none;
4936 (yyval.type_qualifier).flags.q.uniform = 1;
4937 }
4938 #line 4939 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4939 break;
4940
4941 case 185:
4942 #line 1777 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4943 {
4944 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4945 (yyval.type_qualifier).flags.q.coherent = 1;
4946 }
4947 #line 4948 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4948 break;
4949
4950 case 186:
4951 #line 1782 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4952 {
4953 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4954 (yyval.type_qualifier).flags.q._volatile = 1;
4955 }
4956 #line 4957 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4957 break;
4958
4959 case 187:
4960 #line 1787 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4961 {
4962 STATIC_ASSERT(sizeof((yyval.type_qualifier).flags.q) <= sizeof((yyval.type_qualifier).flags.i));
4963 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4964 (yyval.type_qualifier).flags.q.restrict_flag = 1;
4965 }
4966 #line 4967 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4967 break;
4968
4969 case 188:
4970 #line 1793 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4971 {
4972 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4973 (yyval.type_qualifier).flags.q.read_only = 1;
4974 }
4975 #line 4976 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4976 break;
4977
4978 case 189:
4979 #line 1798 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4980 {
4981 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
4982 (yyval.type_qualifier).flags.q.write_only = 1;
4983 }
4984 #line 4985 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4985 break;
4986
4987 case 190:
4988 #line 1806 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4989 {
4990 void *ctx = state;
4991 (yyval.array_specifier) = new(ctx) ast_array_specifier((yylsp[-1]));
4992 (yyval.array_specifier)->set_location_range((yylsp[-1]), (yylsp[0]));
4993 }
4994 #line 4995 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
4995 break;
4996
4997 case 191:
4998 #line 1812 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
4999 {
5000 void *ctx = state;
5001 (yyval.array_specifier) = new(ctx) ast_array_specifier((yylsp[-2]), (yyvsp[-1].expression));
5002 (yyval.array_specifier)->set_location_range((yylsp[-2]), (yylsp[0]));
5003 }
5004 #line 5005 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5005 break;
5006
5007 case 192:
5008 #line 1818 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5009 {
5010 (yyval.array_specifier) = (yyvsp[-2].array_specifier);
5011
5012 if (!state->ARB_arrays_of_arrays_enable) {
5013 _mesa_glsl_error(& (yylsp[-2]), state,
5014 "GL_ARB_arrays_of_arrays "
5015 "required for defining arrays of arrays");
5016 } else {
5017 _mesa_glsl_error(& (yylsp[-2]), state,
5018 "only the outermost array dimension can "
5019 "be unsized");
5020 }
5021 }
5022 #line 5023 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5023 break;
5024
5025 case 193:
5026 #line 1832 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5027 {
5028 (yyval.array_specifier) = (yyvsp[-3].array_specifier);
5029
5030 if (!state->ARB_arrays_of_arrays_enable) {
5031 _mesa_glsl_error(& (yylsp[-3]), state,
5032 "GL_ARB_arrays_of_arrays "
5033 "required for defining arrays of arrays");
5034 }
5035
5036 (yyval.array_specifier)->add_dimension((yyvsp[-1].expression));
5037 }
5038 #line 5039 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5039 break;
5040
5041 case 195:
5042 #line 1848 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5043 {
5044 (yyval.type_specifier) = (yyvsp[-1].type_specifier);
5045 (yyval.type_specifier)->array_specifier = (yyvsp[0].array_specifier);
5046 }
5047 #line 5048 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5048 break;
5049
5050 case 196:
5051 #line 1856 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5052 {
5053 void *ctx = state;
5054 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].identifier));
5055 (yyval.type_specifier)->set_location((yylsp[0]));
5056 }
5057 #line 5058 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5058 break;
5059
5060 case 197:
5061 #line 1862 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5062 {
5063 void *ctx = state;
5064 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].struct_specifier));
5065 (yyval.type_specifier)->set_location((yylsp[0]));
5066 }
5067 #line 5068 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5068 break;
5069
5070 case 198:
5071 #line 1868 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5072 {
5073 void *ctx = state;
5074 (yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[0].identifier));
5075 (yyval.type_specifier)->set_location((yylsp[0]));
5076 }
5077 #line 5078 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5078 break;
5079
5080 case 199:
5081 #line 1876 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5082 { (yyval.identifier) = "void"; }
5083 #line 5084 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5084 break;
5085
5086 case 200:
5087 #line 1877 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5088 { (yyval.identifier) = "float"; }
5089 #line 5090 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5090 break;
5091
5092 case 201:
5093 #line 1878 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5094 { (yyval.identifier) = "int"; }
5095 #line 5096 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5096 break;
5097
5098 case 202:
5099 #line 1879 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5100 { (yyval.identifier) = "uint"; }
5101 #line 5102 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5102 break;
5103
5104 case 203:
5105 #line 1880 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5106 { (yyval.identifier) = "bool"; }
5107 #line 5108 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5108 break;
5109
5110 case 204:
5111 #line 1881 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5112 { (yyval.identifier) = "vec2"; }
5113 #line 5114 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5114 break;
5115
5116 case 205:
5117 #line 1882 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5118 { (yyval.identifier) = "vec3"; }
5119 #line 5120 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5120 break;
5121
5122 case 206:
5123 #line 1883 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5124 { (yyval.identifier) = "vec4"; }
5125 #line 5126 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5126 break;
5127
5128 case 207:
5129 #line 1884 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5130 { (yyval.identifier) = "bvec2"; }
5131 #line 5132 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5132 break;
5133
5134 case 208:
5135 #line 1885 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5136 { (yyval.identifier) = "bvec3"; }
5137 #line 5138 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5138 break;
5139
5140 case 209:
5141 #line 1886 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5142 { (yyval.identifier) = "bvec4"; }
5143 #line 5144 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5144 break;
5145
5146 case 210:
5147 #line 1887 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5148 { (yyval.identifier) = "ivec2"; }
5149 #line 5150 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5150 break;
5151
5152 case 211:
5153 #line 1888 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5154 { (yyval.identifier) = "ivec3"; }
5155 #line 5156 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5156 break;
5157
5158 case 212:
5159 #line 1889 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5160 { (yyval.identifier) = "ivec4"; }
5161 #line 5162 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5162 break;
5163
5164 case 213:
5165 #line 1890 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5166 { (yyval.identifier) = "uvec2"; }
5167 #line 5168 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5168 break;
5169
5170 case 214:
5171 #line 1891 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5172 { (yyval.identifier) = "uvec3"; }
5173 #line 5174 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5174 break;
5175
5176 case 215:
5177 #line 1892 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5178 { (yyval.identifier) = "uvec4"; }
5179 #line 5180 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5180 break;
5181
5182 case 216:
5183 #line 1893 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5184 { (yyval.identifier) = "mat2"; }
5185 #line 5186 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5186 break;
5187
5188 case 217:
5189 #line 1894 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5190 { (yyval.identifier) = "mat2x3"; }
5191 #line 5192 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5192 break;
5193
5194 case 218:
5195 #line 1895 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5196 { (yyval.identifier) = "mat2x4"; }
5197 #line 5198 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5198 break;
5199
5200 case 219:
5201 #line 1896 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5202 { (yyval.identifier) = "mat3x2"; }
5203 #line 5204 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5204 break;
5205
5206 case 220:
5207 #line 1897 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5208 { (yyval.identifier) = "mat3"; }
5209 #line 5210 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5210 break;
5211
5212 case 221:
5213 #line 1898 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5214 { (yyval.identifier) = "mat3x4"; }
5215 #line 5216 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5216 break;
5217
5218 case 222:
5219 #line 1899 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5220 { (yyval.identifier) = "mat4x2"; }
5221 #line 5222 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5222 break;
5223
5224 case 223:
5225 #line 1900 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5226 { (yyval.identifier) = "mat4x3"; }
5227 #line 5228 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5228 break;
5229
5230 case 224:
5231 #line 1901 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5232 { (yyval.identifier) = "mat4"; }
5233 #line 5234 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5234 break;
5235
5236 case 225:
5237 #line 1902 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5238 { (yyval.identifier) = "sampler1D"; }
5239 #line 5240 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5240 break;
5241
5242 case 226:
5243 #line 1903 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5244 { (yyval.identifier) = "sampler2D"; }
5245 #line 5246 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5246 break;
5247
5248 case 227:
5249 #line 1904 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5250 { (yyval.identifier) = "sampler2DRect"; }
5251 #line 5252 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5252 break;
5253
5254 case 228:
5255 #line 1905 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5256 { (yyval.identifier) = "sampler3D"; }
5257 #line 5258 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5258 break;
5259
5260 case 229:
5261 #line 1906 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5262 { (yyval.identifier) = "samplerCube"; }
5263 #line 5264 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5264 break;
5265
5266 case 230:
5267 #line 1907 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5268 { (yyval.identifier) = "samplerExternalOES"; }
5269 #line 5270 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5270 break;
5271
5272 case 231:
5273 #line 1908 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5274 { (yyval.identifier) = "sampler1DShadow"; }
5275 #line 5276 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5276 break;
5277
5278 case 232:
5279 #line 1909 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5280 { (yyval.identifier) = "sampler2DShadow"; }
5281 #line 5282 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5282 break;
5283
5284 case 233:
5285 #line 1910 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5286 { (yyval.identifier) = "sampler2DRectShadow"; }
5287 #line 5288 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5288 break;
5289
5290 case 234:
5291 #line 1911 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5292 { (yyval.identifier) = "samplerCubeShadow"; }
5293 #line 5294 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5294 break;
5295
5296 case 235:
5297 #line 1912 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5298 { (yyval.identifier) = "sampler1DArray"; }
5299 #line 5300 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5300 break;
5301
5302 case 236:
5303 #line 1913 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5304 { (yyval.identifier) = "sampler2DArray"; }
5305 #line 5306 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5306 break;
5307
5308 case 237:
5309 #line 1914 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5310 { (yyval.identifier) = "sampler1DArrayShadow"; }
5311 #line 5312 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5312 break;
5313
5314 case 238:
5315 #line 1915 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5316 { (yyval.identifier) = "sampler2DArrayShadow"; }
5317 #line 5318 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5318 break;
5319
5320 case 239:
5321 #line 1916 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5322 { (yyval.identifier) = "samplerBuffer"; }
5323 #line 5324 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5324 break;
5325
5326 case 240:
5327 #line 1917 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5328 { (yyval.identifier) = "samplerCubeArray"; }
5329 #line 5330 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5330 break;
5331
5332 case 241:
5333 #line 1918 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5334 { (yyval.identifier) = "samplerCubeArrayShadow"; }
5335 #line 5336 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5336 break;
5337
5338 case 242:
5339 #line 1919 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5340 { (yyval.identifier) = "isampler1D"; }
5341 #line 5342 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5342 break;
5343
5344 case 243:
5345 #line 1920 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5346 { (yyval.identifier) = "isampler2D"; }
5347 #line 5348 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5348 break;
5349
5350 case 244:
5351 #line 1921 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5352 { (yyval.identifier) = "isampler2DRect"; }
5353 #line 5354 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5354 break;
5355
5356 case 245:
5357 #line 1922 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5358 { (yyval.identifier) = "isampler3D"; }
5359 #line 5360 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5360 break;
5361
5362 case 246:
5363 #line 1923 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5364 { (yyval.identifier) = "isamplerCube"; }
5365 #line 5366 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5366 break;
5367
5368 case 247:
5369 #line 1924 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5370 { (yyval.identifier) = "isampler1DArray"; }
5371 #line 5372 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5372 break;
5373
5374 case 248:
5375 #line 1925 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5376 { (yyval.identifier) = "isampler2DArray"; }
5377 #line 5378 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5378 break;
5379
5380 case 249:
5381 #line 1926 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5382 { (yyval.identifier) = "isamplerBuffer"; }
5383 #line 5384 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5384 break;
5385
5386 case 250:
5387 #line 1927 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5388 { (yyval.identifier) = "isamplerCubeArray"; }
5389 #line 5390 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5390 break;
5391
5392 case 251:
5393 #line 1928 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5394 { (yyval.identifier) = "usampler1D"; }
5395 #line 5396 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5396 break;
5397
5398 case 252:
5399 #line 1929 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5400 { (yyval.identifier) = "usampler2D"; }
5401 #line 5402 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5402 break;
5403
5404 case 253:
5405 #line 1930 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5406 { (yyval.identifier) = "usampler2DRect"; }
5407 #line 5408 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5408 break;
5409
5410 case 254:
5411 #line 1931 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5412 { (yyval.identifier) = "usampler3D"; }
5413 #line 5414 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5414 break;
5415
5416 case 255:
5417 #line 1932 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5418 { (yyval.identifier) = "usamplerCube"; }
5419 #line 5420 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5420 break;
5421
5422 case 256:
5423 #line 1933 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5424 { (yyval.identifier) = "usampler1DArray"; }
5425 #line 5426 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5426 break;
5427
5428 case 257:
5429 #line 1934 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5430 { (yyval.identifier) = "usampler2DArray"; }
5431 #line 5432 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5432 break;
5433
5434 case 258:
5435 #line 1935 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5436 { (yyval.identifier) = "usamplerBuffer"; }
5437 #line 5438 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5438 break;
5439
5440 case 259:
5441 #line 1936 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5442 { (yyval.identifier) = "usamplerCubeArray"; }
5443 #line 5444 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5444 break;
5445
5446 case 260:
5447 #line 1937 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5448 { (yyval.identifier) = "sampler2DMS"; }
5449 #line 5450 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5450 break;
5451
5452 case 261:
5453 #line 1938 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5454 { (yyval.identifier) = "isampler2DMS"; }
5455 #line 5456 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5456 break;
5457
5458 case 262:
5459 #line 1939 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5460 { (yyval.identifier) = "usampler2DMS"; }
5461 #line 5462 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5462 break;
5463
5464 case 263:
5465 #line 1940 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5466 { (yyval.identifier) = "sampler2DMSArray"; }
5467 #line 5468 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5468 break;
5469
5470 case 264:
5471 #line 1941 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5472 { (yyval.identifier) = "isampler2DMSArray"; }
5473 #line 5474 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5474 break;
5475
5476 case 265:
5477 #line 1942 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5478 { (yyval.identifier) = "usampler2DMSArray"; }
5479 #line 5480 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5480 break;
5481
5482 case 266:
5483 #line 1943 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5484 { (yyval.identifier) = "image1D"; }
5485 #line 5486 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5486 break;
5487
5488 case 267:
5489 #line 1944 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5490 { (yyval.identifier) = "image2D"; }
5491 #line 5492 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5492 break;
5493
5494 case 268:
5495 #line 1945 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5496 { (yyval.identifier) = "image3D"; }
5497 #line 5498 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5498 break;
5499
5500 case 269:
5501 #line 1946 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5502 { (yyval.identifier) = "image2DRect"; }
5503 #line 5504 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5504 break;
5505
5506 case 270:
5507 #line 1947 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5508 { (yyval.identifier) = "imageCube"; }
5509 #line 5510 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5510 break;
5511
5512 case 271:
5513 #line 1948 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5514 { (yyval.identifier) = "imageBuffer"; }
5515 #line 5516 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5516 break;
5517
5518 case 272:
5519 #line 1949 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5520 { (yyval.identifier) = "image1DArray"; }
5521 #line 5522 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5522 break;
5523
5524 case 273:
5525 #line 1950 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5526 { (yyval.identifier) = "image2DArray"; }
5527 #line 5528 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5528 break;
5529
5530 case 274:
5531 #line 1951 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5532 { (yyval.identifier) = "imageCubeArray"; }
5533 #line 5534 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5534 break;
5535
5536 case 275:
5537 #line 1952 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5538 { (yyval.identifier) = "image2DMS"; }
5539 #line 5540 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5540 break;
5541
5542 case 276:
5543 #line 1953 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5544 { (yyval.identifier) = "image2DMSArray"; }
5545 #line 5546 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5546 break;
5547
5548 case 277:
5549 #line 1954 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5550 { (yyval.identifier) = "iimage1D"; }
5551 #line 5552 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5552 break;
5553
5554 case 278:
5555 #line 1955 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5556 { (yyval.identifier) = "iimage2D"; }
5557 #line 5558 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5558 break;
5559
5560 case 279:
5561 #line 1956 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5562 { (yyval.identifier) = "iimage3D"; }
5563 #line 5564 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5564 break;
5565
5566 case 280:
5567 #line 1957 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5568 { (yyval.identifier) = "iimage2DRect"; }
5569 #line 5570 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5570 break;
5571
5572 case 281:
5573 #line 1958 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5574 { (yyval.identifier) = "iimageCube"; }
5575 #line 5576 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5576 break;
5577
5578 case 282:
5579 #line 1959 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5580 { (yyval.identifier) = "iimageBuffer"; }
5581 #line 5582 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5582 break;
5583
5584 case 283:
5585 #line 1960 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5586 { (yyval.identifier) = "iimage1DArray"; }
5587 #line 5588 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5588 break;
5589
5590 case 284:
5591 #line 1961 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5592 { (yyval.identifier) = "iimage2DArray"; }
5593 #line 5594 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5594 break;
5595
5596 case 285:
5597 #line 1962 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5598 { (yyval.identifier) = "iimageCubeArray"; }
5599 #line 5600 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5600 break;
5601
5602 case 286:
5603 #line 1963 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5604 { (yyval.identifier) = "iimage2DMS"; }
5605 #line 5606 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5606 break;
5607
5608 case 287:
5609 #line 1964 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5610 { (yyval.identifier) = "iimage2DMSArray"; }
5611 #line 5612 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5612 break;
5613
5614 case 288:
5615 #line 1965 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5616 { (yyval.identifier) = "uimage1D"; }
5617 #line 5618 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5618 break;
5619
5620 case 289:
5621 #line 1966 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5622 { (yyval.identifier) = "uimage2D"; }
5623 #line 5624 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5624 break;
5625
5626 case 290:
5627 #line 1967 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5628 { (yyval.identifier) = "uimage3D"; }
5629 #line 5630 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5630 break;
5631
5632 case 291:
5633 #line 1968 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5634 { (yyval.identifier) = "uimage2DRect"; }
5635 #line 5636 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5636 break;
5637
5638 case 292:
5639 #line 1969 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5640 { (yyval.identifier) = "uimageCube"; }
5641 #line 5642 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5642 break;
5643
5644 case 293:
5645 #line 1970 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5646 { (yyval.identifier) = "uimageBuffer"; }
5647 #line 5648 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5648 break;
5649
5650 case 294:
5651 #line 1971 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5652 { (yyval.identifier) = "uimage1DArray"; }
5653 #line 5654 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5654 break;
5655
5656 case 295:
5657 #line 1972 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5658 { (yyval.identifier) = "uimage2DArray"; }
5659 #line 5660 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5660 break;
5661
5662 case 296:
5663 #line 1973 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5664 { (yyval.identifier) = "uimageCubeArray"; }
5665 #line 5666 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5666 break;
5667
5668 case 297:
5669 #line 1974 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5670 { (yyval.identifier) = "uimage2DMS"; }
5671 #line 5672 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5672 break;
5673
5674 case 298:
5675 #line 1975 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5676 { (yyval.identifier) = "uimage2DMSArray"; }
5677 #line 5678 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5678 break;
5679
5680 case 299:
5681 #line 1976 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5682 { (yyval.identifier) = "atomic_uint"; }
5683 #line 5684 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5684 break;
5685
5686 case 300:
5687 #line 1981 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5688 {
5689 state->check_precision_qualifiers_allowed(&(yylsp[0]));
5690 (yyval.n) = ast_precision_high;
5691 }
5692 #line 5693 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5693 break;
5694
5695 case 301:
5696 #line 1986 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5697 {
5698 state->check_precision_qualifiers_allowed(&(yylsp[0]));
5699 (yyval.n) = ast_precision_medium;
5700 }
5701 #line 5702 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5702 break;
5703
5704 case 302:
5705 #line 1991 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5706 {
5707 state->check_precision_qualifiers_allowed(&(yylsp[0]));
5708 (yyval.n) = ast_precision_low;
5709 }
5710 #line 5711 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5711 break;
5712
5713 case 303:
5714 #line 1999 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5715 {
5716 void *ctx = state;
5717 (yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[-3].identifier), (yyvsp[-1].declarator_list));
5718 (yyval.struct_specifier)->set_location_range((yylsp[-3]), (yylsp[0]));
5719 state->symbols->add_type((yyvsp[-3].identifier), glsl_type::void_type);
5720 }
5721 #line 5722 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5722 break;
5723
5724 case 304:
5725 #line 2006 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5726 {
5727 void *ctx = state;
5728 (yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[-1].declarator_list));
5729 (yyval.struct_specifier)->set_location_range((yylsp[-2]), (yylsp[0]));
5730 }
5731 #line 5732 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5732 break;
5733
5734 case 305:
5735 #line 2015 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5736 {
5737 (yyval.declarator_list) = (yyvsp[0].declarator_list);
5738 (yyvsp[0].declarator_list)->link.self_link();
5739 }
5740 #line 5741 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5741 break;
5742
5743 case 306:
5744 #line 2020 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5745 {
5746 (yyval.declarator_list) = (yyvsp[-1].declarator_list);
5747 (yyval.declarator_list)->link.insert_before(& (yyvsp[0].declarator_list)->link);
5748 }
5749 #line 5750 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5750 break;
5751
5752 case 307:
5753 #line 2028 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5754 {
5755 void *ctx = state;
5756 ast_fully_specified_type *const type = (yyvsp[-2].fully_specified_type);
5757 type->set_location((yylsp[-2]));
5758
5759 if (type->qualifier.flags.i != 0)
5760 _mesa_glsl_error(&(yylsp[-2]), state,
5761 "only precision qualifiers may be applied to "
5762 "structure members");
5763
5764 (yyval.declarator_list) = new(ctx) ast_declarator_list(type);
5765 (yyval.declarator_list)->set_location((yylsp[-1]));
5766
5767 (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[-1].declaration)->link);
5768 }
5769 #line 5770 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5770 break;
5771
5772 case 308:
5773 #line 2047 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5774 {
5775 (yyval.declaration) = (yyvsp[0].declaration);
5776 (yyvsp[0].declaration)->link.self_link();
5777 }
5778 #line 5779 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5779 break;
5780
5781 case 309:
5782 #line 2052 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5783 {
5784 (yyval.declaration) = (yyvsp[-2].declaration);
5785 (yyval.declaration)->link.insert_before(& (yyvsp[0].declaration)->link);
5786 }
5787 #line 5788 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5788 break;
5789
5790 case 310:
5791 #line 2060 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5792 {
5793 void *ctx = state;
5794 (yyval.declaration) = new(ctx) ast_declaration((yyvsp[0].identifier), NULL, NULL);
5795 (yyval.declaration)->set_location((yylsp[0]));
5796 }
5797 #line 5798 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5798 break;
5799
5800 case 311:
5801 #line 2066 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5802 {
5803 void *ctx = state;
5804 (yyval.declaration) = new(ctx) ast_declaration((yyvsp[-1].identifier), (yyvsp[0].array_specifier), NULL);
5805 (yyval.declaration)->set_location_range((yylsp[-1]), (yylsp[0]));
5806 }
5807 #line 5808 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5808 break;
5809
5810 case 313:
5811 #line 2076 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5812 {
5813 (yyval.expression) = (yyvsp[-1].expression);
5814 }
5815 #line 5816 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5816 break;
5817
5818 case 314:
5819 #line 2080 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5820 {
5821 (yyval.expression) = (yyvsp[-2].expression);
5822 }
5823 #line 5824 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5824 break;
5825
5826 case 315:
5827 #line 2087 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5828 {
5829 void *ctx = state;
5830 (yyval.expression) = new(ctx) ast_aggregate_initializer();
5831 (yyval.expression)->set_location((yylsp[0]));
5832 (yyval.expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
5833 }
5834 #line 5835 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5835 break;
5836
5837 case 316:
5838 #line 2094 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5839 {
5840 (yyvsp[-2].expression)->expressions.push_tail(& (yyvsp[0].expression)->link);
5841 }
5842 #line 5843 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5843 break;
5844
5845 case 318:
5846 #line 2106 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5847 { (yyval.node) = (ast_node *) (yyvsp[0].compound_statement); }
5848 #line 5849 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5849 break;
5850
5851 case 326:
5852 #line 2121 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5853 {
5854 void *ctx = state;
5855 (yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
5856 (yyval.compound_statement)->set_location_range((yylsp[-1]), (yylsp[0]));
5857 }
5858 #line 5859 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5859 break;
5860
5861 case 327:
5862 #line 2127 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5863 {
5864 state->symbols->push_scope();
5865 }
5866 #line 5867 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5867 break;
5868
5869 case 328:
5870 #line 2131 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5871 {
5872 void *ctx = state;
5873 (yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[-1].node));
5874 (yyval.compound_statement)->set_location_range((yylsp[-3]), (yylsp[0]));
5875 state->symbols->pop_scope();
5876 }
5877 #line 5878 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5878 break;
5879
5880 case 329:
5881 #line 2140 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5882 { (yyval.node) = (ast_node *) (yyvsp[0].compound_statement); }
5883 #line 5884 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5884 break;
5885
5886 case 331:
5887 #line 2146 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5888 {
5889 void *ctx = state;
5890 (yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
5891 (yyval.compound_statement)->set_location_range((yylsp[-1]), (yylsp[0]));
5892 }
5893 #line 5894 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5894 break;
5895
5896 case 332:
5897 #line 2152 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5898 {
5899 void *ctx = state;
5900 (yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[-1].node));
5901 (yyval.compound_statement)->set_location_range((yylsp[-2]), (yylsp[0]));
5902 }
5903 #line 5904 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5904 break;
5905
5906 case 333:
5907 #line 2161 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5908 {
5909 if ((yyvsp[0].node) == NULL) {
5910 _mesa_glsl_error(& (yylsp[0]), state, "<nil> statement");
5911 assert((yyvsp[0].node) != NULL);
5912 }
5913
5914 (yyval.node) = (yyvsp[0].node);
5915 (yyval.node)->link.self_link();
5916 }
5917 #line 5918 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5918 break;
5919
5920 case 334:
5921 #line 2171 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5922 {
5923 if ((yyvsp[0].node) == NULL) {
5924 _mesa_glsl_error(& (yylsp[0]), state, "<nil> statement");
5925 assert((yyvsp[0].node) != NULL);
5926 }
5927 (yyval.node) = (yyvsp[-1].node);
5928 (yyval.node)->link.insert_before(& (yyvsp[0].node)->link);
5929 }
5930 #line 5931 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5931 break;
5932
5933 case 335:
5934 #line 2183 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5935 {
5936 void *ctx = state;
5937 (yyval.node) = new(ctx) ast_expression_statement(NULL);
5938 (yyval.node)->set_location((yylsp[0]));
5939 }
5940 #line 5941 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5941 break;
5942
5943 case 336:
5944 #line 2189 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5945 {
5946 void *ctx = state;
5947 (yyval.node) = new(ctx) ast_expression_statement((yyvsp[-1].expression));
5948 (yyval.node)->set_location((yylsp[-1]));
5949 }
5950 #line 5951 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5951 break;
5952
5953 case 337:
5954 #line 2198 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5955 {
5956 (yyval.node) = new(state) ast_selection_statement((yyvsp[-2].expression), (yyvsp[0].selection_rest_statement).then_statement,
5957 (yyvsp[0].selection_rest_statement).else_statement);
5958 (yyval.node)->set_location_range((yylsp[-4]), (yylsp[0]));
5959 }
5960 #line 5961 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5961 break;
5962
5963 case 338:
5964 #line 2207 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5965 {
5966 (yyval.selection_rest_statement).then_statement = (yyvsp[-2].node);
5967 (yyval.selection_rest_statement).else_statement = (yyvsp[0].node);
5968 }
5969 #line 5970 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5970 break;
5971
5972 case 339:
5973 #line 2212 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5974 {
5975 (yyval.selection_rest_statement).then_statement = (yyvsp[0].node);
5976 (yyval.selection_rest_statement).else_statement = NULL;
5977 }
5978 #line 5979 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5979 break;
5980
5981 case 340:
5982 #line 2220 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5983 {
5984 (yyval.node) = (ast_node *) (yyvsp[0].expression);
5985 }
5986 #line 5987 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
5987 break;
5988
5989 case 341:
5990 #line 2224 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
5991 {
5992 void *ctx = state;
5993 ast_declaration *decl = new(ctx) ast_declaration((yyvsp[-2].identifier), NULL, (yyvsp[0].expression));
5994 ast_declarator_list *declarator = new(ctx) ast_declarator_list((yyvsp[-3].fully_specified_type));
5995 decl->set_location_range((yylsp[-2]), (yylsp[0]));
5996 declarator->set_location((yylsp[-3]));
5997
5998 declarator->declarations.push_tail(&decl->link);
5999 (yyval.node) = declarator;
6000 }
6001 #line 6002 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6002 break;
6003
6004 case 342:
6005 #line 2242 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6006 {
6007 (yyval.node) = new(state) ast_switch_statement((yyvsp[-2].expression), (yyvsp[0].switch_body));
6008 (yyval.node)->set_location_range((yylsp[-4]), (yylsp[0]));
6009 }
6010 #line 6011 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6011 break;
6012
6013 case 343:
6014 #line 2250 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6015 {
6016 (yyval.switch_body) = new(state) ast_switch_body(NULL);
6017 (yyval.switch_body)->set_location_range((yylsp[-1]), (yylsp[0]));
6018 }
6019 #line 6020 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6020 break;
6021
6022 case 344:
6023 #line 2255 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6024 {
6025 (yyval.switch_body) = new(state) ast_switch_body((yyvsp[-1].case_statement_list));
6026 (yyval.switch_body)->set_location_range((yylsp[-2]), (yylsp[0]));
6027 }
6028 #line 6029 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6029 break;
6030
6031 case 345:
6032 #line 2263 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6033 {
6034 (yyval.case_label) = new(state) ast_case_label((yyvsp[-1].expression));
6035 (yyval.case_label)->set_location((yylsp[-1]));
6036 }
6037 #line 6038 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6038 break;
6039
6040 case 346:
6041 #line 2268 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6042 {
6043 (yyval.case_label) = new(state) ast_case_label(NULL);
6044 (yyval.case_label)->set_location((yylsp[0]));
6045 }
6046 #line 6047 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6047 break;
6048
6049 case 347:
6050 #line 2276 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6051 {
6052 ast_case_label_list *labels = new(state) ast_case_label_list();
6053
6054 labels->labels.push_tail(& (yyvsp[0].case_label)->link);
6055 (yyval.case_label_list) = labels;
6056 (yyval.case_label_list)->set_location((yylsp[0]));
6057 }
6058 #line 6059 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6059 break;
6060
6061 case 348:
6062 #line 2284 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6063 {
6064 (yyval.case_label_list) = (yyvsp[-1].case_label_list);
6065 (yyval.case_label_list)->labels.push_tail(& (yyvsp[0].case_label)->link);
6066 }
6067 #line 6068 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6068 break;
6069
6070 case 349:
6071 #line 2292 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6072 {
6073 ast_case_statement *stmts = new(state) ast_case_statement((yyvsp[-1].case_label_list));
6074 stmts->set_location((yylsp[0]));
6075
6076 stmts->stmts.push_tail(& (yyvsp[0].node)->link);
6077 (yyval.case_statement) = stmts;
6078 }
6079 #line 6080 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6080 break;
6081
6082 case 350:
6083 #line 2300 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6084 {
6085 (yyval.case_statement) = (yyvsp[-1].case_statement);
6086 (yyval.case_statement)->stmts.push_tail(& (yyvsp[0].node)->link);
6087 }
6088 #line 6089 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6089 break;
6090
6091 case 351:
6092 #line 2308 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6093 {
6094 ast_case_statement_list *cases= new(state) ast_case_statement_list();
6095 cases->set_location((yylsp[0]));
6096
6097 cases->cases.push_tail(& (yyvsp[0].case_statement)->link);
6098 (yyval.case_statement_list) = cases;
6099 }
6100 #line 6101 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6101 break;
6102
6103 case 352:
6104 #line 2316 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6105 {
6106 (yyval.case_statement_list) = (yyvsp[-1].case_statement_list);
6107 (yyval.case_statement_list)->cases.push_tail(& (yyvsp[0].case_statement)->link);
6108 }
6109 #line 6110 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6110 break;
6111
6112 case 353:
6113 #line 2324 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6114 {
6115 void *ctx = state;
6116 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
6117 NULL, (yyvsp[-2].node), NULL, (yyvsp[0].node));
6118 (yyval.node)->set_location_range((yylsp[-4]), (yylsp[-1]));
6119 }
6120 #line 6121 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6121 break;
6122
6123 case 354:
6124 #line 2331 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6125 {
6126 void *ctx = state;
6127 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
6128 NULL, (yyvsp[-2].expression), NULL, (yyvsp[-5].node));
6129 (yyval.node)->set_location_range((yylsp[-6]), (yylsp[-1]));
6130 }
6131 #line 6132 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6132 break;
6133
6134 case 355:
6135 #line 2338 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6136 {
6137 void *ctx = state;
6138 (yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
6139 (yyvsp[-3].node), (yyvsp[-2].for_rest_statement).cond, (yyvsp[-2].for_rest_statement).rest, (yyvsp[0].node));
6140 (yyval.node)->set_location_range((yylsp[-5]), (yylsp[0]));
6141 }
6142 #line 6143 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6143 break;
6144
6145 case 359:
6146 #line 2354 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6147 {
6148 (yyval.node) = NULL;
6149 }
6150 #line 6151 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6151 break;
6152
6153 case 360:
6154 #line 2361 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6155 {
6156 (yyval.for_rest_statement).cond = (yyvsp[-1].node);
6157 (yyval.for_rest_statement).rest = NULL;
6158 }
6159 #line 6160 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6160 break;
6161
6162 case 361:
6163 #line 2366 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6164 {
6165 (yyval.for_rest_statement).cond = (yyvsp[-2].node);
6166 (yyval.for_rest_statement).rest = (yyvsp[0].expression);
6167 }
6168 #line 6169 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6169 break;
6170
6171 case 362:
6172 #line 2375 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6173 {
6174 void *ctx = state;
6175 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
6176 (yyval.node)->set_location((yylsp[-1]));
6177 }
6178 #line 6179 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6179 break;
6180
6181 case 363:
6182 #line 2381 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6183 {
6184 void *ctx = state;
6185 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
6186 (yyval.node)->set_location((yylsp[-1]));
6187 }
6188 #line 6189 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6189 break;
6190
6191 case 364:
6192 #line 2387 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6193 {
6194 void *ctx = state;
6195 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
6196 (yyval.node)->set_location((yylsp[-1]));
6197 }
6198 #line 6199 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6199 break;
6200
6201 case 365:
6202 #line 2393 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6203 {
6204 void *ctx = state;
6205 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[-1].expression));
6206 (yyval.node)->set_location_range((yylsp[-2]), (yylsp[-1]));
6207 }
6208 #line 6209 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6209 break;
6210
6211 case 366:
6212 #line 2399 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6213 {
6214 void *ctx = state;
6215 (yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
6216 (yyval.node)->set_location((yylsp[-1]));
6217 }
6218 #line 6219 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6219 break;
6220
6221 case 367:
6222 #line 2407 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6223 { (yyval.node) = (yyvsp[0].function_definition); }
6224 #line 6225 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6225 break;
6226
6227 case 368:
6228 #line 2408 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6229 { (yyval.node) = (yyvsp[0].node); }
6230 #line 6231 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6231 break;
6232
6233 case 369:
6234 #line 2409 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6235 { (yyval.node) = NULL; }
6236 #line 6237 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6237 break;
6238
6239 case 370:
6240 #line 2410 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6241 { (yyval.node) = (yyvsp[0].node); }
6242 #line 6243 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6243 break;
6244
6245 case 371:
6246 #line 2415 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6247 {
6248 void *ctx = state;
6249 (yyval.function_definition) = new(ctx) ast_function_definition();
6250 (yyval.function_definition)->set_location_range((yylsp[-1]), (yylsp[0]));
6251 (yyval.function_definition)->prototype = (yyvsp[-1].function);
6252 (yyval.function_definition)->body = (yyvsp[0].compound_statement);
6253
6254 state->symbols->pop_scope();
6255 }
6256 #line 6257 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6257 break;
6258
6259 case 372:
6260 #line 2429 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6261 {
6262 (yyval.node) = (yyvsp[0].interface_block);
6263 }
6264 #line 6265 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6265 break;
6266
6267 case 373:
6268 #line 2433 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6269 {
6270 ast_interface_block *block = (yyvsp[0].interface_block);
6271 if (!block->layout.merge_qualifier(& (yylsp[-1]), state, (yyvsp[-1].type_qualifier))) {
6272 YYERROR;
6273 }
6274
6275 foreach_list_typed (ast_declarator_list, member, link, &block->declarations) {
6276 ast_type_qualifier& qualifier = member->type->qualifier;
6277 if (qualifier.flags.q.stream && qualifier.stream != block->layout.stream) {
6278 _mesa_glsl_error(& (yylsp[-1]), state,
6279 "stream layout qualifier on "
6280 "interface block member does not match "
6281 "the interface block (%d vs %d)",
6282 qualifier.stream, block->layout.stream);
6283 YYERROR;
6284 }
6285 }
6286 (yyval.node) = block;
6287 }
6288 #line 6289 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6289 break;
6290
6291 case 374:
6292 #line 2456 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6293 {
6294 ast_interface_block *const block = (yyvsp[-1].interface_block);
6295
6296 block->block_name = (yyvsp[-5].identifier);
6297 block->declarations.push_degenerate_list_at_head(& (yyvsp[-3].declarator_list)->link);
6298
6299 if ((yyvsp[-6].type_qualifier).flags.q.uniform) {
6300 if (!state->has_uniform_buffer_objects()) {
6301 _mesa_glsl_error(& (yylsp[-6]), state,
6302 "#version 140 / GL_ARB_uniform_buffer_object "
6303 "required for defining uniform blocks");
6304 } else if (state->ARB_uniform_buffer_object_warn) {
6305 _mesa_glsl_warning(& (yylsp[-6]), state,
6306 "#version 140 / GL_ARB_uniform_buffer_object "
6307 "required for defining uniform blocks");
6308 }
6309 } else {
6310 if (state->es_shader || state->language_version < 150) {
6311 _mesa_glsl_error(& (yylsp[-6]), state,
6312 "#version 150 required for using "
6313 "interface blocks");
6314 }
6315 }
6316
6317 /* From the GLSL 1.50.11 spec, section 4.3.7 ("Interface Blocks"):
6318 * "It is illegal to have an input block in a vertex shader
6319 * or an output block in a fragment shader"
6320 */
6321 if ((state->stage == MESA_SHADER_VERTEX) && (yyvsp[-6].type_qualifier).flags.q.in) {
6322 _mesa_glsl_error(& (yylsp[-6]), state,
6323 "`in' interface block is not allowed for "
6324 "a vertex shader");
6325 } else if ((state->stage == MESA_SHADER_FRAGMENT) && (yyvsp[-6].type_qualifier).flags.q.out) {
6326 _mesa_glsl_error(& (yylsp[-6]), state,
6327 "`out' interface block is not allowed for "
6328 "a fragment shader");
6329 }
6330
6331 /* Since block arrays require names, and both features are added in
6332 * the same language versions, we don't have to explicitly
6333 * version-check both things.
6334 */
6335 if (block->instance_name != NULL) {
6336 state->check_version(150, 300, & (yylsp[-6]), "interface blocks with "
6337 "an instance name are not allowed");
6338 }
6339
6340 uint64_t interface_type_mask;
6341 struct ast_type_qualifier temp_type_qualifier;
6342
6343 /* Get a bitmask containing only the in/out/uniform flags, allowing us
6344 * to ignore other irrelevant flags like interpolation qualifiers.
6345 */
6346 temp_type_qualifier.flags.i = 0;
6347 temp_type_qualifier.flags.q.uniform = true;
6348 temp_type_qualifier.flags.q.in = true;
6349 temp_type_qualifier.flags.q.out = true;
6350 interface_type_mask = temp_type_qualifier.flags.i;
6351
6352 /* Get the block's interface qualifier. The interface_qualifier
6353 * production rule guarantees that only one bit will be set (and
6354 * it will be in/out/uniform).
6355 */
6356 uint64_t block_interface_qualifier = (yyvsp[-6].type_qualifier).flags.i;
6357
6358 block->layout.flags.i |= block_interface_qualifier;
6359
6360 if (state->stage == MESA_SHADER_GEOMETRY &&
6361 state->has_explicit_attrib_stream()) {
6362 /* Assign global layout's stream value. */
6363 block->layout.flags.q.stream = 1;
6364 block->layout.flags.q.explicit_stream = 0;
6365 block->layout.stream = state->out_qualifier->stream;
6366 }
6367
6368 foreach_list_typed (ast_declarator_list, member, link, &block->declarations) {
6369 ast_type_qualifier& qualifier = member->type->qualifier;
6370 if ((qualifier.flags.i & interface_type_mask) == 0) {
6371 /* GLSLangSpec.1.50.11, 4.3.7 (Interface Blocks):
6372 * "If no optional qualifier is used in a member declaration, the
6373 * qualifier of the variable is just in, out, or uniform as declared
6374 * by interface-qualifier."
6375 */
6376 qualifier.flags.i |= block_interface_qualifier;
6377 } else if ((qualifier.flags.i & interface_type_mask) !=
6378 block_interface_qualifier) {
6379 /* GLSLangSpec.1.50.11, 4.3.7 (Interface Blocks):
6380 * "If optional qualifiers are used, they can include interpolation
6381 * and storage qualifiers and they must declare an input, output,
6382 * or uniform variable consistent with the interface qualifier of
6383 * the block."
6384 */
6385 _mesa_glsl_error(& (yylsp[-6]), state,
6386 "uniform/in/out qualifier on "
6387 "interface block member does not match "
6388 "the interface block");
6389 }
6390 }
6391
6392 (yyval.interface_block) = block;
6393 }
6394 #line 6395 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6395 break;
6396
6397 case 375:
6398 #line 2561 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6399 {
6400 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
6401 (yyval.type_qualifier).precision = ast_precision_none;
6402 (yyval.type_qualifier).flags.q.in = 1;
6403 }
6404 #line 6405 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6405 break;
6406
6407 case 376:
6408 #line 2567 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6409 {
6410 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
6411 (yyval.type_qualifier).precision = ast_precision_none;
6412 (yyval.type_qualifier).flags.q.out = 1;
6413 }
6414 #line 6415 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6415 break;
6416
6417 case 377:
6418 #line 2573 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6419 {
6420 memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
6421 (yyval.type_qualifier).precision = ast_precision_none;
6422 (yyval.type_qualifier).flags.q.uniform = 1;
6423 }
6424 #line 6425 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6425 break;
6426
6427 case 378:
6428 #line 2582 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6429 {
6430 (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier,
6431 NULL, NULL);
6432 }
6433 #line 6434 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6434 break;
6435
6436 case 379:
6437 #line 2587 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6438 {
6439 (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier,
6440 (yyvsp[0].identifier), NULL);
6441 (yyval.interface_block)->set_location((yylsp[0]));
6442 }
6443 #line 6444 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6444 break;
6445
6446 case 380:
6447 #line 2593 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6448 {
6449 (yyval.interface_block) = new(state) ast_interface_block(*state->default_uniform_qualifier,
6450 (yyvsp[-1].identifier), (yyvsp[0].array_specifier));
6451 (yyval.interface_block)->set_location_range((yylsp[-1]), (yylsp[0]));
6452 }
6453 #line 6454 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6454 break;
6455
6456 case 381:
6457 #line 2602 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6458 {
6459 (yyval.declarator_list) = (yyvsp[0].declarator_list);
6460 (yyvsp[0].declarator_list)->link.self_link();
6461 }
6462 #line 6463 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6463 break;
6464
6465 case 382:
6466 #line 2607 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6467 {
6468 (yyval.declarator_list) = (yyvsp[-1].declarator_list);
6469 (yyvsp[0].declarator_list)->link.insert_before(& (yyval.declarator_list)->link);
6470 }
6471 #line 6472 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6472 break;
6473
6474 case 383:
6475 #line 2615 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6476 {
6477 void *ctx = state;
6478 ast_fully_specified_type *type = (yyvsp[-2].fully_specified_type);
6479 type->set_location((yylsp[-2]));
6480
6481 if (type->qualifier.flags.q.attribute) {
6482 _mesa_glsl_error(& (yylsp[-2]), state,
6483 "keyword 'attribute' cannot be used with "
6484 "interface block member");
6485 } else if (type->qualifier.flags.q.varying) {
6486 _mesa_glsl_error(& (yylsp[-2]), state,
6487 "keyword 'varying' cannot be used with "
6488 "interface block member");
6489 }
6490
6491 (yyval.declarator_list) = new(ctx) ast_declarator_list(type);
6492 (yyval.declarator_list)->set_location((yylsp[-1]));
6493
6494 (yyval.declarator_list)->declarations.push_degenerate_list_at_head(& (yyvsp[-1].declaration)->link);
6495 }
6496 #line 6497 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6497 break;
6498
6499 case 384:
6500 #line 2639 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6501 {
6502 if (!state->default_uniform_qualifier->merge_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier))) {
6503 YYERROR;
6504 }
6505 (yyval.node) = NULL;
6506 }
6507 #line 6508 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6508 break;
6509
6510 case 385:
6511 #line 2647 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6512 {
6513 (yyval.node) = NULL;
6514 if (!state->in_qualifier->merge_in_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier), (yyval.node))) {
6515 YYERROR;
6516 }
6517 }
6518 #line 6519 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6519 break;
6520
6521 case 386:
6522 #line 2655 "src/glsl/glsl_parser.yy" /* yacc.c:1646 */
6523 {
6524 if (state->stage != MESA_SHADER_GEOMETRY) {
6525 _mesa_glsl_error(& (yylsp[-2]), state,
6526 "out layout qualifiers only valid in "
6527 "geometry shaders");
6528 } else {
6529 if ((yyvsp[-2].type_qualifier).flags.q.prim_type) {
6530 /* Make sure this is a valid output primitive type. */
6531 switch ((yyvsp[-2].type_qualifier).prim_type) {
6532 case GL_POINTS:
6533 case GL_LINE_STRIP:
6534 case GL_TRIANGLE_STRIP:
6535 break;
6536 default:
6537 _mesa_glsl_error(&(yylsp[-2]), state, "invalid geometry shader output "
6538 "primitive type");
6539 break;
6540 }
6541 }
6542 if (!state->out_qualifier->merge_qualifier(& (yylsp[-2]), state, (yyvsp[-2].type_qualifier)))
6543 YYERROR;
6544
6545 /* Allow future assigments of global out's stream id value */
6546 state->out_qualifier->flags.q.explicit_stream = 0;
6547 }
6548 (yyval.node) = NULL;
6549 }
6550 #line 6551 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6551 break;
6552
6553
6554 #line 6555 "src/glsl/glsl_parser.cpp" /* yacc.c:1646 */
6555 default: break;
6556 }
6557 /* User semantic actions sometimes alter yychar, and that requires
6558 that yytoken be updated with the new translation. We take the
6559 approach of translating immediately before every use of yytoken.
6560 One alternative is translating here after every semantic action,
6561 but that translation would be missed if the semantic action invokes
6562 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6563 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6564 incorrect destructor might then be invoked immediately. In the
6565 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6566 to an incorrect destructor call or verbose syntax error message
6567 before the lookahead is translated. */
6568 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6569
6570 YYPOPSTACK (yylen);
6571 yylen = 0;
6572 YY_STACK_PRINT (yyss, yyssp);
6573
6574 *++yyvsp = yyval;
6575 *++yylsp = yyloc;
6576
6577 /* Now 'shift' the result of the reduction. Determine what state
6578 that goes to, based on the state we popped back to and the rule
6579 number reduced by. */
6580
6581 yyn = yyr1[yyn];
6582
6583 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6584 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6585 yystate = yytable[yystate];
6586 else
6587 yystate = yydefgoto[yyn - YYNTOKENS];
6588
6589 goto yynewstate;
6590
6591
6592 /*--------------------------------------.
6593 | yyerrlab -- here on detecting error. |
6594 `--------------------------------------*/
6595 yyerrlab:
6596 /* Make sure we have latest lookahead translation. See comments at
6597 user semantic actions for why this is necessary. */
6598 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6599
6600 /* If not already recovering from an error, report this error. */
6601 if (!yyerrstatus)
6602 {
6603 ++yynerrs;
6604 #if ! YYERROR_VERBOSE
6605 yyerror (&yylloc, state, YY_("syntax error"));
6606 #else
6607 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6608 yyssp, yytoken)
6609 {
6610 char const *yymsgp = YY_("syntax error");
6611 int yysyntax_error_status;
6612 yysyntax_error_status = YYSYNTAX_ERROR;
6613 if (yysyntax_error_status == 0)
6614 yymsgp = yymsg;
6615 else if (yysyntax_error_status == 1)
6616 {
6617 if (yymsg != yymsgbuf)
6618 YYSTACK_FREE (yymsg);
6619 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6620 if (!yymsg)
6621 {
6622 yymsg = yymsgbuf;
6623 yymsg_alloc = sizeof yymsgbuf;
6624 yysyntax_error_status = 2;
6625 }
6626 else
6627 {
6628 yysyntax_error_status = YYSYNTAX_ERROR;
6629 yymsgp = yymsg;
6630 }
6631 }
6632 yyerror (&yylloc, state, yymsgp);
6633 if (yysyntax_error_status == 2)
6634 goto yyexhaustedlab;
6635 }
6636 # undef YYSYNTAX_ERROR
6637 #endif
6638 }
6639
6640 yyerror_range[1] = yylloc;
6641
6642 if (yyerrstatus == 3)
6643 {
6644 /* If just tried and failed to reuse lookahead token after an
6645 error, discard it. */
6646
6647 if (yychar <= YYEOF)
6648 {
6649 /* Return failure if at end of input. */
6650 if (yychar == YYEOF)
6651 YYABORT;
6652 }
6653 else
6654 {
6655 yydestruct ("Error: discarding",
6656 yytoken, &yylval, &yylloc, state);
6657 yychar = YYEMPTY;
6658 }
6659 }
6660
6661 /* Else will try to reuse lookahead token after shifting the error
6662 token. */
6663 goto yyerrlab1;
6664
6665
6666 /*---------------------------------------------------.
6667 | yyerrorlab -- error raised explicitly by YYERROR. |
6668 `---------------------------------------------------*/
6669 yyerrorlab:
6670
6671 /* Pacify compilers like GCC when the user code never invokes
6672 YYERROR and the label yyerrorlab therefore never appears in user
6673 code. */
6674 if (/*CONSTCOND*/ 0)
6675 goto yyerrorlab;
6676
6677 yyerror_range[1] = yylsp[1-yylen];
6678 /* Do not reclaim the symbols of the rule whose action triggered
6679 this YYERROR. */
6680 YYPOPSTACK (yylen);
6681 yylen = 0;
6682 YY_STACK_PRINT (yyss, yyssp);
6683 yystate = *yyssp;
6684 goto yyerrlab1;
6685
6686
6687 /*-------------------------------------------------------------.
6688 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6689 `-------------------------------------------------------------*/
6690 yyerrlab1:
6691 yyerrstatus = 3; /* Each real token shifted decrements this. */
6692
6693 for (;;)
6694 {
6695 yyn = yypact[yystate];
6696 if (!yypact_value_is_default (yyn))
6697 {
6698 yyn += YYTERROR;
6699 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6700 {
6701 yyn = yytable[yyn];
6702 if (0 < yyn)
6703 break;
6704 }
6705 }
6706
6707 /* Pop the current state because it cannot handle the error token. */
6708 if (yyssp == yyss)
6709 YYABORT;
6710
6711 yyerror_range[1] = *yylsp;
6712 yydestruct ("Error: popping",
6713 yystos[yystate], yyvsp, yylsp, state);
6714 YYPOPSTACK (1);
6715 yystate = *yyssp;
6716 YY_STACK_PRINT (yyss, yyssp);
6717 }
6718
6719 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6720 *++yyvsp = yylval;
6721 YY_IGNORE_MAYBE_UNINITIALIZED_END
6722
6723 yyerror_range[2] = yylloc;
6724 /* Using YYLLOC is tempting, but would change the location of
6725 the lookahead. YYLOC is available though. */
6726 YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
6727 *++yylsp = yyloc;
6728
6729 /* Shift the error token. */
6730 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6731
6732 yystate = yyn;
6733 goto yynewstate;
6734
6735
6736 /*-------------------------------------.
6737 | yyacceptlab -- YYACCEPT comes here. |
6738 `-------------------------------------*/
6739 yyacceptlab:
6740 yyresult = 0;
6741 goto yyreturn;
6742
6743 /*-----------------------------------.
6744 | yyabortlab -- YYABORT comes here. |
6745 `-----------------------------------*/
6746 yyabortlab:
6747 yyresult = 1;
6748 goto yyreturn;
6749
6750 #if !defined yyoverflow || YYERROR_VERBOSE
6751 /*-------------------------------------------------.
6752 | yyexhaustedlab -- memory exhaustion comes here. |
6753 `-------------------------------------------------*/
6754 yyexhaustedlab:
6755 yyerror (&yylloc, state, YY_("memory exhausted"));
6756 yyresult = 2;
6757 /* Fall through. */
6758 #endif
6759
6760 yyreturn:
6761 if (yychar != YYEMPTY)
6762 {
6763 /* Make sure we have latest lookahead translation. See comments at
6764 user semantic actions for why this is necessary. */
6765 yytoken = YYTRANSLATE (yychar);
6766 yydestruct ("Cleanup: discarding lookahead",
6767 yytoken, &yylval, &yylloc, state);
6768 }
6769 /* Do not reclaim the symbols of the rule whose action triggered
6770 this YYABORT or YYACCEPT. */
6771 YYPOPSTACK (yylen);
6772 YY_STACK_PRINT (yyss, yyssp);
6773 while (yyssp != yyss)
6774 {
6775 yydestruct ("Cleanup: popping",
6776 yystos[*yyssp], yyvsp, yylsp, state);
6777 YYPOPSTACK (1);
6778 }
6779 #ifndef yyoverflow
6780 if (yyss != yyssa)
6781 YYSTACK_FREE (yyss);
6782 #endif
6783 #if YYERROR_VERBOSE
6784 if (yymsg != yymsgbuf)
6785 YYSTACK_FREE (yymsg);
6786 #endif
6787 return yyresult;
6788 }
6789