glsl_lexer.cpp revision 10e230b6
1#line 1 "src/compiler/glsl/glsl_lexer.cpp"
2
3#line 3 "src/compiler/glsl/glsl_lexer.cpp"
4
5#define  YY_INT_ALIGNED short int
6
7/* A lexical scanner generated by flex */
8
9#define FLEX_SCANNER
10#define YY_FLEX_MAJOR_VERSION 2
11#define YY_FLEX_MINOR_VERSION 6
12#define YY_FLEX_SUBMINOR_VERSION 4
13#if YY_FLEX_SUBMINOR_VERSION > 0
14#define FLEX_BETA
15#endif
16
17#ifdef yy_create_buffer
18#define _mesa_glsl_lexer__create_buffer_ALREADY_DEFINED
19#else
20#define yy_create_buffer _mesa_glsl_lexer__create_buffer
21#endif
22
23#ifdef yy_delete_buffer
24#define _mesa_glsl_lexer__delete_buffer_ALREADY_DEFINED
25#else
26#define yy_delete_buffer _mesa_glsl_lexer__delete_buffer
27#endif
28
29#ifdef yy_scan_buffer
30#define _mesa_glsl_lexer__scan_buffer_ALREADY_DEFINED
31#else
32#define yy_scan_buffer _mesa_glsl_lexer__scan_buffer
33#endif
34
35#ifdef yy_scan_string
36#define _mesa_glsl_lexer__scan_string_ALREADY_DEFINED
37#else
38#define yy_scan_string _mesa_glsl_lexer__scan_string
39#endif
40
41#ifdef yy_scan_bytes
42#define _mesa_glsl_lexer__scan_bytes_ALREADY_DEFINED
43#else
44#define yy_scan_bytes _mesa_glsl_lexer__scan_bytes
45#endif
46
47#ifdef yy_init_buffer
48#define _mesa_glsl_lexer__init_buffer_ALREADY_DEFINED
49#else
50#define yy_init_buffer _mesa_glsl_lexer__init_buffer
51#endif
52
53#ifdef yy_flush_buffer
54#define _mesa_glsl_lexer__flush_buffer_ALREADY_DEFINED
55#else
56#define yy_flush_buffer _mesa_glsl_lexer__flush_buffer
57#endif
58
59#ifdef yy_load_buffer_state
60#define _mesa_glsl_lexer__load_buffer_state_ALREADY_DEFINED
61#else
62#define yy_load_buffer_state _mesa_glsl_lexer__load_buffer_state
63#endif
64
65#ifdef yy_switch_to_buffer
66#define _mesa_glsl_lexer__switch_to_buffer_ALREADY_DEFINED
67#else
68#define yy_switch_to_buffer _mesa_glsl_lexer__switch_to_buffer
69#endif
70
71#ifdef yypush_buffer_state
72#define _mesa_glsl_lexer_push_buffer_state_ALREADY_DEFINED
73#else
74#define yypush_buffer_state _mesa_glsl_lexer_push_buffer_state
75#endif
76
77#ifdef yypop_buffer_state
78#define _mesa_glsl_lexer_pop_buffer_state_ALREADY_DEFINED
79#else
80#define yypop_buffer_state _mesa_glsl_lexer_pop_buffer_state
81#endif
82
83#ifdef yyensure_buffer_stack
84#define _mesa_glsl_lexer_ensure_buffer_stack_ALREADY_DEFINED
85#else
86#define yyensure_buffer_stack _mesa_glsl_lexer_ensure_buffer_stack
87#endif
88
89#ifdef yylex
90#define _mesa_glsl_lexer_lex_ALREADY_DEFINED
91#else
92#define yylex _mesa_glsl_lexer_lex
93#endif
94
95#ifdef yyrestart
96#define _mesa_glsl_lexer_restart_ALREADY_DEFINED
97#else
98#define yyrestart _mesa_glsl_lexer_restart
99#endif
100
101#ifdef yylex_init
102#define _mesa_glsl_lexer_lex_init_ALREADY_DEFINED
103#else
104#define yylex_init _mesa_glsl_lexer_lex_init
105#endif
106
107#ifdef yylex_init_extra
108#define _mesa_glsl_lexer_lex_init_extra_ALREADY_DEFINED
109#else
110#define yylex_init_extra _mesa_glsl_lexer_lex_init_extra
111#endif
112
113#ifdef yylex_destroy
114#define _mesa_glsl_lexer_lex_destroy_ALREADY_DEFINED
115#else
116#define yylex_destroy _mesa_glsl_lexer_lex_destroy
117#endif
118
119#ifdef yyget_debug
120#define _mesa_glsl_lexer_get_debug_ALREADY_DEFINED
121#else
122#define yyget_debug _mesa_glsl_lexer_get_debug
123#endif
124
125#ifdef yyset_debug
126#define _mesa_glsl_lexer_set_debug_ALREADY_DEFINED
127#else
128#define yyset_debug _mesa_glsl_lexer_set_debug
129#endif
130
131#ifdef yyget_extra
132#define _mesa_glsl_lexer_get_extra_ALREADY_DEFINED
133#else
134#define yyget_extra _mesa_glsl_lexer_get_extra
135#endif
136
137#ifdef yyset_extra
138#define _mesa_glsl_lexer_set_extra_ALREADY_DEFINED
139#else
140#define yyset_extra _mesa_glsl_lexer_set_extra
141#endif
142
143#ifdef yyget_in
144#define _mesa_glsl_lexer_get_in_ALREADY_DEFINED
145#else
146#define yyget_in _mesa_glsl_lexer_get_in
147#endif
148
149#ifdef yyset_in
150#define _mesa_glsl_lexer_set_in_ALREADY_DEFINED
151#else
152#define yyset_in _mesa_glsl_lexer_set_in
153#endif
154
155#ifdef yyget_out
156#define _mesa_glsl_lexer_get_out_ALREADY_DEFINED
157#else
158#define yyget_out _mesa_glsl_lexer_get_out
159#endif
160
161#ifdef yyset_out
162#define _mesa_glsl_lexer_set_out_ALREADY_DEFINED
163#else
164#define yyset_out _mesa_glsl_lexer_set_out
165#endif
166
167#ifdef yyget_leng
168#define _mesa_glsl_lexer_get_leng_ALREADY_DEFINED
169#else
170#define yyget_leng _mesa_glsl_lexer_get_leng
171#endif
172
173#ifdef yyget_text
174#define _mesa_glsl_lexer_get_text_ALREADY_DEFINED
175#else
176#define yyget_text _mesa_glsl_lexer_get_text
177#endif
178
179#ifdef yyget_lineno
180#define _mesa_glsl_lexer_get_lineno_ALREADY_DEFINED
181#else
182#define yyget_lineno _mesa_glsl_lexer_get_lineno
183#endif
184
185#ifdef yyset_lineno
186#define _mesa_glsl_lexer_set_lineno_ALREADY_DEFINED
187#else
188#define yyset_lineno _mesa_glsl_lexer_set_lineno
189#endif
190
191#ifdef yyget_column
192#define _mesa_glsl_lexer_get_column_ALREADY_DEFINED
193#else
194#define yyget_column _mesa_glsl_lexer_get_column
195#endif
196
197#ifdef yyset_column
198#define _mesa_glsl_lexer_set_column_ALREADY_DEFINED
199#else
200#define yyset_column _mesa_glsl_lexer_set_column
201#endif
202
203#ifdef yywrap
204#define _mesa_glsl_lexer_wrap_ALREADY_DEFINED
205#else
206#define yywrap _mesa_glsl_lexer_wrap
207#endif
208
209#ifdef yyget_lval
210#define _mesa_glsl_lexer_get_lval_ALREADY_DEFINED
211#else
212#define yyget_lval _mesa_glsl_lexer_get_lval
213#endif
214
215#ifdef yyset_lval
216#define _mesa_glsl_lexer_set_lval_ALREADY_DEFINED
217#else
218#define yyset_lval _mesa_glsl_lexer_set_lval
219#endif
220
221#ifdef yyget_lloc
222#define _mesa_glsl_lexer_get_lloc_ALREADY_DEFINED
223#else
224#define yyget_lloc _mesa_glsl_lexer_get_lloc
225#endif
226
227#ifdef yyset_lloc
228#define _mesa_glsl_lexer_set_lloc_ALREADY_DEFINED
229#else
230#define yyset_lloc _mesa_glsl_lexer_set_lloc
231#endif
232
233#ifdef yyalloc
234#define _mesa_glsl_lexer_alloc_ALREADY_DEFINED
235#else
236#define yyalloc _mesa_glsl_lexer_alloc
237#endif
238
239#ifdef yyrealloc
240#define _mesa_glsl_lexer_realloc_ALREADY_DEFINED
241#else
242#define yyrealloc _mesa_glsl_lexer_realloc
243#endif
244
245#ifdef yyfree
246#define _mesa_glsl_lexer_free_ALREADY_DEFINED
247#else
248#define yyfree _mesa_glsl_lexer_free
249#endif
250
251/* First, we deal with  platform-specific or compiler-specific issues. */
252
253/* begin standard C headers. */
254#ifdef _LIBC
255#include "namespace.h"
256#endif
257#include <stdio.h>
258#include <string.h>
259#include <errno.h>
260#include <stdlib.h>
261
262/* end standard C headers. */
263
264/*	$NetBSD: glsl_lexer.cpp,v 1.1 2019/09/24 19:21:11 maya Exp $	*/
265
266/* flex integer type definitions */
267
268#ifndef FLEXINT_H
269#define FLEXINT_H
270
271/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
272
273#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
274
275/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
276 * if you want the limit (max/min) macros for int types.
277 */
278#ifndef __STDC_LIMIT_MACROS
279#define __STDC_LIMIT_MACROS 1
280#endif
281
282#include <inttypes.h>
283typedef int8_t flex_int8_t;
284typedef uint8_t flex_uint8_t;
285typedef int16_t flex_int16_t;
286typedef uint16_t flex_uint16_t;
287typedef int32_t flex_int32_t;
288typedef uint32_t flex_uint32_t;
289#else
290typedef signed char flex_int8_t;
291typedef short int flex_int16_t;
292typedef int flex_int32_t;
293typedef unsigned char flex_uint8_t;
294typedef unsigned short int flex_uint16_t;
295typedef unsigned int flex_uint32_t;
296
297/* Limits of integral types. */
298#ifndef INT8_MIN
299#define INT8_MIN               (-128)
300#endif
301#ifndef INT16_MIN
302#define INT16_MIN              (-32767-1)
303#endif
304#ifndef INT32_MIN
305#define INT32_MIN              (-2147483647-1)
306#endif
307#ifndef INT8_MAX
308#define INT8_MAX               (127)
309#endif
310#ifndef INT16_MAX
311#define INT16_MAX              (32767)
312#endif
313#ifndef INT32_MAX
314#define INT32_MAX              (2147483647)
315#endif
316#ifndef UINT8_MAX
317#define UINT8_MAX              (255U)
318#endif
319#ifndef UINT16_MAX
320#define UINT16_MAX             (65535U)
321#endif
322#ifndef UINT32_MAX
323#define UINT32_MAX             (4294967295U)
324#endif
325
326#ifndef SIZE_MAX
327#define SIZE_MAX               (~(size_t)0)
328#endif
329
330#endif /* ! C99 */
331
332#endif /* ! FLEXINT_H */
333
334/* begin standard C++ headers. */
335
336/* TODO: this is always defined, so inline it */
337#define yyconst const
338
339#if defined(__GNUC__) && __GNUC__ >= 3
340#define yynoreturn __attribute__((__noreturn__))
341#else
342#define yynoreturn
343#endif
344
345/* Returned upon end-of-file. */
346#define YY_NULL 0
347
348/* Promotes a possibly negative, possibly signed char to an
349 *   integer in range [0..255] for use as an array index.
350 */
351#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
352
353/* An opaque pointer. */
354#ifndef YY_TYPEDEF_YY_SCANNER_T
355#define YY_TYPEDEF_YY_SCANNER_T
356typedef void* yyscan_t;
357#endif
358
359/* For convenience, these vars (plus the bison vars far below)
360   are macros in the reentrant scanner. */
361#define yyin yyg->yyin_r
362#define yyout yyg->yyout_r
363#define yyextra yyg->yyextra_r
364#define yyleng yyg->yyleng_r
365#define yytext yyg->yytext_r
366#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
367#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
368#define yy_flex_debug yyg->yy_flex_debug_r
369
370/* Enter a start condition.  This macro really ought to take a parameter,
371 * but we do it the disgusting crufty way forced on us by the ()-less
372 * definition of BEGIN.
373 */
374#define BEGIN yyg->yy_start = 1 + 2 *
375/* Translate the current start state into a value that can be later handed
376 * to BEGIN to return to the state.  The YYSTATE alias is for lex
377 * compatibility.
378 */
379#define YY_START ((yyg->yy_start - 1) / 2)
380#define YYSTATE YY_START
381/* Action number for EOF rule of a given start state. */
382#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
383/* Special action meaning "start processing a new file". */
384#define YY_NEW_FILE yyrestart( yyin , yyscanner )
385#define YY_END_OF_BUFFER_CHAR 0
386
387/* Size of default input buffer. */
388#ifndef YY_BUF_SIZE
389#ifdef __ia64__
390/* On IA-64, the buffer size is 16k, not 8k.
391 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
392 * Ditto for the __ia64__ case accordingly.
393 */
394#define YY_BUF_SIZE 32768
395#else
396#define YY_BUF_SIZE 16384
397#endif /* __ia64__ */
398#endif
399
400/* The state buf must be large enough to hold one state per character in the main buffer.
401 */
402#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
403
404#ifndef YY_TYPEDEF_YY_BUFFER_STATE
405#define YY_TYPEDEF_YY_BUFFER_STATE
406typedef struct yy_buffer_state *YY_BUFFER_STATE;
407#endif
408
409#ifndef YY_TYPEDEF_YY_SIZE_T
410#define YY_TYPEDEF_YY_SIZE_T
411typedef size_t yy_size_t;
412#endif
413
414#define EOB_ACT_CONTINUE_SCAN 0
415#define EOB_ACT_END_OF_FILE 1
416#define EOB_ACT_LAST_MATCH 2
417
418    #define YY_LESS_LINENO(n)
419    #define YY_LINENO_REWIND_TO(ptr)
420
421/* Return all but the first "n" matched characters back to the input stream. */
422#define yyless(n) \
423	do \
424		{ \
425		/* Undo effects of setting up yytext. */ \
426        int yyless_macro_arg = (n); \
427        YY_LESS_LINENO(yyless_macro_arg);\
428		*yy_cp = yyg->yy_hold_char; \
429		YY_RESTORE_YY_MORE_OFFSET \
430		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
431		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
432		} \
433	while ( 0 )
434#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
435
436#ifndef YY_STRUCT_YY_BUFFER_STATE
437#define YY_STRUCT_YY_BUFFER_STATE
438struct yy_buffer_state
439	{
440	FILE *yy_input_file;
441
442	char *yy_ch_buf;		/* input buffer */
443	char *yy_buf_pos;		/* current position in input buffer */
444
445	/* Size of input buffer in bytes, not including room for EOB
446	 * characters.
447	 */
448	size_t yy_buf_size;
449
450	/* Number of characters read into yy_ch_buf, not including EOB
451	 * characters.
452	 */
453	size_t yy_n_chars;
454
455	/* Whether we "own" the buffer - i.e., we know we created it,
456	 * and can realloc() it to grow it, and should free() it to
457	 * delete it.
458	 */
459	int yy_is_our_buffer;
460
461	/* Whether this is an "interactive" input source; if so, and
462	 * if we're using stdio for input, then we want to use getc()
463	 * instead of fread(), to make sure we stop fetching input after
464	 * each newline.
465	 */
466	int yy_is_interactive;
467
468	/* Whether we're considered to be at the beginning of a line.
469	 * If so, '^' rules will be active on the next match, otherwise
470	 * not.
471	 */
472	int yy_at_bol;
473
474    int yy_bs_lineno; /**< The line count. */
475    int yy_bs_column; /**< The column count. */
476
477	/* Whether to try to fill the input buffer when we reach the
478	 * end of it.
479	 */
480	int yy_fill_buffer;
481
482	int yy_buffer_status;
483
484#define YY_BUFFER_NEW 0
485#define YY_BUFFER_NORMAL 1
486	/* When an EOF's been seen but there's still some text to process
487	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
488	 * shouldn't try reading from the input source any more.  We might
489	 * still have a bunch of tokens to match, though, because of
490	 * possible backing-up.
491	 *
492	 * When we actually see the EOF, we change the status to "new"
493	 * (via yyrestart()), so that the user can continue scanning by
494	 * just pointing yyin at a new input file.
495	 */
496#define YY_BUFFER_EOF_PENDING 2
497
498	};
499#endif /* !YY_STRUCT_YY_BUFFER_STATE */
500
501/* We provide macros for accessing buffer states in case in the
502 * future we want to put the buffer states in a more general
503 * "scanner state".
504 *
505 * Returns the top of the stack, or NULL.
506 */
507#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
508                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
509                          : NULL)
510/* Same as previous macro, but useful when we know that the buffer stack is not
511 * NULL or when we need an lvalue. For internal use only.
512 */
513#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
514
515void yyrestart ( FILE *input_file , yyscan_t yyscanner );
516void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
517YY_BUFFER_STATE yy_create_buffer ( FILE *file, yy_size_t size , yyscan_t yyscanner );
518void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
519void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
520void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
521void yypop_buffer_state ( yyscan_t yyscanner );
522
523static void yyensure_buffer_stack ( yyscan_t yyscanner );
524static void yy_load_buffer_state ( yyscan_t yyscanner );
525static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
526#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
527
528YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
529YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
530YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner );
531
532void *yyalloc ( yy_size_t , yyscan_t yyscanner );
533void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
534void yyfree ( void * , yyscan_t yyscanner );
535
536#define yy_new_buffer yy_create_buffer
537#define yy_set_interactive(is_interactive) \
538	{ \
539	if ( ! YY_CURRENT_BUFFER ){ \
540        yyensure_buffer_stack (yyscanner); \
541		YY_CURRENT_BUFFER_LVALUE =    \
542            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
543	} \
544	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
545	}
546#define yy_set_bol(at_bol) \
547	{ \
548	if ( ! YY_CURRENT_BUFFER ){\
549        yyensure_buffer_stack (yyscanner); \
550		YY_CURRENT_BUFFER_LVALUE =    \
551            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
552	} \
553	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
554	}
555#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
556
557/* Begin user sect3 */
558
559#define _mesa_glsl_lexer_wrap(yyscanner) (/*CONSTCOND*/1)
560#define YY_SKIP_YYWRAP
561typedef flex_uint8_t YY_CHAR;
562
563typedef int yy_state_type;
564
565#define yytext_ptr yytext_r
566
567static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
568static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
569static int yy_get_next_buffer ( yyscan_t yyscanner );
570static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
571
572/* Done after the current pattern has been matched and before the
573 * corresponding action - sets up yytext.
574 */
575#define YY_DO_BEFORE_ACTION \
576	yyg->yytext_ptr = yy_bp; \
577	yyleng = (yy_size_t)(yy_cp - yy_bp); \
578	yyg->yy_hold_char = *yy_cp; \
579	*yy_cp = '\0'; \
580	yyg->yy_c_buf_p = yy_cp;
581#define YY_NUM_RULES 277
582#define YY_END_OF_BUFFER 278
583/* This struct is not used in this scanner,
584   but its presence is necessary. */
585struct yy_trans_info
586	{
587	flex_int32_t yy_verify;
588	flex_int32_t yy_nxt;
589	};
590static const flex_int16_t yy_accept[1096] =
591    {   0,
592        0,    0,   18,   18,    0,    0,  278,  276,    1,   25,
593      276,  276,  276,  276,  276,  276,  275,  276,  182,  180,
594      276,  276,  276,  274,  276,  274,  274,  274,  274,  274,
595      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
596      274,  274,  274,  274,  274,  276,    1,  276,   24,   18,
597       23,   24,   22,   21,   19,   20,   16,   15,    1,  164,
598      173,  165,  176,  170,  159,  172,  160,  179,  184,  171,
599      185,  182,    0,    0,  182,  182,    0,  182,  180,  180,
600      180,  180,  168,  161,  163,  162,  169,  274,  177,  167,
601      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
602
603      274,  274,  274,  274,   34,  274,  274,  274,  274,  274,
604      274,  274,  274,  274,  274,  274,  274,  274,  274,   38,
605      274,  274,   65,  274,  274,  274,  274,  274,  274,  274,
606      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
607      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
608      274,  274,  274,  274,  274,  274,  274,  274,  178,  166,
609        1,    0,    0,    2,    0,    0,    0,    0,   18,   17,
610       21,   20,    0,  184,    0,    0,  183,    0,  185,    0,
611        0,    0,  186,  181,  174,  175,  274,  193,  274,  274,
612      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
613
614      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
615      274,  274,  274,   37,  274,  274,  274,  274,  274,  274,
616      274,  274,  274,  274,  274,   30,  274,  274,  274,  274,
617      274,  274,  274,  274,  274,  274,  274,   66,  274,  274,
618      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
619      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
620      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
621      274,  274,  274,  274,  274,    0,    0,    0,    0,   17,
622        0,  184,  188,    0,  183,    0,    0,    0,  185,  189,
623      186,    0,    0,  181,  181,  181,  274,  274,  274,   28,
624
625      274,  274,  274,  251,  244,  274,  274,  274,  274,  274,
626      274,  274,  274,  274,  274,  274,   36,  196,  274,  274,
627      274,  274,   73,  274,  274,  201,  214,  274,  274,  274,
628      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
629      274,  211,  247,   53,   54,   55,  274,  274,  274,  274,
630      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
631      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
632      274,  274,  199,  191,  274,  274,  274,   31,  274,  274,
633      274,  274,  274,  274,  274,   50,   51,   52,  157,  274,
634      274,  274,    0,    0,    0,    0,    0,  183,  187,  190,
635
636      274,  274,  274,   32,  274,   41,   42,   43,  274,  194,
637      274,  274,   27,  274,  274,  274,  225,  226,  227,  274,
638      222,  223,  224,  274,  192,  274,  215,   29,  237,  238,
639      239,  249,  219,  220,  221,  274,  274,  274,  274,   67,
640      217,  274,  274,  274,  274,   44,   45,   46,  274,  274,
641      274,  274,  274,  274,  274,  274,  274,  274,  274,   76,
642      274,  274,  274,  274,  274,  274,  274,  274,  274,  212,
643      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
644      274,  274,  274,  195,  274,  274,  246,   47,   48,   49,
645      274,  274,   35,  274,    0,    0,    0,    0,  254,  274,
646
647      274,   69,  274,  274,  252,  274,  274,  274,  274,  274,
648      274,  213,  208,  257,  274,  274,  274,  274,  274,  274,
649      274,  204,  274,  274,  274,  274,  158,   56,   57,   58,
650       59,   60,   61,   62,   63,   64,  274,  274,  274,  274,
651      218,  200,  274,  274,  206,  274,  274,  274,   40,  274,
652      264,  155,  243,   74,  207,  156,  274,  255,  202,  274,
653      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
654        0,    0,    0,    0,  274,  274,  274,  274,  274,  203,
655       39,  228,  229,  230,  231,  232,  233,  234,  235,  236,
656      274,  267,  268,  269,  274,  274,  274,  274,  274,  112,
657
658      113,  114,  274,  274,  266,  274,  274,  274,  248,  274,
659      274,  274,  274,  111,  274,  274,  274,  274,  274,  274,
660      274,  274,  197,  271,  272,  273,  274,  274,  274,  274,
661      274,  274,   68,  274,  274,   70,  274,  274,    0,    0,
662        0,    0,    0,  274,  274,   71,  149,   33,  209,  123,
663      124,  125,  274,  274,  274,  274,  274,  274,  274,  274,
664      274,  274,  274,  274,  274,  274,  205,  274,  274,  274,
665      152,  263,  151,  274,  274,  274,  274,  274,  274,  274,
666      274,  198,  134,  135,  136,  274,  274,  270,  216,  274,
667      150,  274,    0,    0,    6,    0,    0,    0,   14,    3,
668
669      274,   26,  274,  274,  274,  274,  274,  274,  274,  274,
670      274,  121,  274,  274,  274,  116,  210,   72,  274,  274,
671      274,  274,  274,  245,  274,  253,  250,  258,   77,   78,
672       79,  274,  274,  274,  274,  274,  274,  274,  274,  274,
673      274,  274,  274,  274,  274,  274,  153,    0,    0,    0,
674        0,    0,    0,    0,    0,  274,  274,  274,  132,  274,
675      274,  127,  274,  274,  274,  274,  274,  274,  274,  274,
676       88,   89,   90,  274,  274,  274,  274,  274,  274,  274,
677      274,  274,  274,  274,  274,  274,  265,  274,  274,  143,
678      274,  274,  138,   94,   95,   96,  274,  274,    4,    0,
679
680        5,    0,    0,    0,    0,    0,    0,    0,  154,  274,
681      274,  274,  274,  274,  274,  274,  274,  274,  274,  115,
682      274,  117,  274,  274,  274,  274,  274,  274,  274,  274,
683      274,  274,  274,  100,  274,  274,  274,  274,   80,  274,
684      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
685      274,  274,    0,    0,    0,    0,    0,  274,  274,  274,
686      126,  128,  274,  118,  274,  119,  274,  274,  274,  274,
687      274,  101,  274,  274,   91,  274,  274,  274,  274,  274,
688      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
689      137,  139,  274,  274,  274,  102,  274,  274,   97,    0,
690
691        0,    0,    0,  129,  130,  274,  274,  274,  145,  274,
692      274,  146,  274,  274,  274,  274,  274,  274,  274,   75,
693      274,  274,  274,  274,  240,  274,  241,  256,  274,  274,
694      274,  140,  141,  274,  274,  274,  274,  274,  274,  274,
695      274,    0,    0,    0,    0,  274,  274,  274,  274,  122,
696      120,  274,  274,  274,  259,  261,  274,   81,  274,   82,
697      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
698      274,  260,  262,  274,    0,    0,    0,    0,    0,  133,
699      131,  274,  274,   92,   93,  274,  274,  274,   83,  274,
700      274,  274,   84,  274,  274,  274,  144,  142,   98,   99,
701
702      274,  274,    0,    0,    0,    0,    0,  274,  274,  274,
703      274,  274,  274,  103,  274,  106,  274,  274,  274,  274,
704        0,    0,    0,    0,    0,    0,  274,  274,  104,  107,
705      274,  274,  274,  274,   85,  274,  105,  108,    0,    0,
706        0,    7,    0,    0,    0,    0,  147,  148,  274,  274,
707      274,  274,  110,    0,    0,    8,    0,    0,    0,    0,
708      274,  274,  242,  274,    0,    0,    0,    0,    0,   11,
709       86,   87,  274,    0,    0,    0,    9,    0,   12,  274,
710        0,    0,   10,  109,    0,    0,    0,    0,    0,    0,
711        0,    0,    0,   13,    0
712
713    } ;
714
715static const YY_CHAR yy_ec[256] =
716    {   0,
717        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
718        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
719        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
720        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
721       10,   11,   12,    1,   13,   14,   15,   16,   17,   18,
722       19,   20,   21,   22,   21,   23,   23,   24,    1,   25,
723       26,   27,    1,    1,   28,   29,   30,   31,   32,   33,
724       34,   35,   35,   35,   35,   36,   37,   35,   38,   35,
725       35,   39,   40,   41,   42,   35,   35,   43,   35,   35,
726        1,    1,    1,   44,   45,    1,   46,   47,   48,   49,
727
728       50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
729       60,   61,   35,   62,   63,   64,   65,   66,   67,   68,
730       69,   70,    1,   71,    1,    1,    1,    1,    1,    1,
731        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
732        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
733        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
734        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
735        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
736        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
737        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
738
739        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
740        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
741        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
742        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
743        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
744        1,    1,    1,    1,    1
745    } ;
746
747static const YY_CHAR yy_meta[72] =
748    {   0,
749        1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
750        1,    1,    1,    4,    1,    5,    5,    5,    5,    5,
751        5,    5,    6,    1,    1,    1,    1,    7,    7,    7,
752        7,    8,    9,   10,   10,   11,   10,   10,   10,   10,
753       10,   10,   12,    1,   10,    7,    7,    7,    7,    8,
754        9,   10,   10,   10,   10,   10,   11,   10,   10,   10,
755       10,   10,   10,   10,   10,   10,   10,   12,   10,   10,
756        1
757    } ;
758
759static const flex_int16_t yy_base[1110] =
760    {   0,
761        0,   70,   76,    0, 1543, 1542, 1544, 1547,   71, 1547,
762     1517, 1516,  140, 1515,  137,  138,  136, 1514,  153,  208,
763      135, 1513,  151,    0,  124,  117,  122,  133,  147,  141,
764      188, 1478,  140,  198,  156,  158,  173, 1472,  197,  186,
765      214,  213,  217,  191,  161,  206,  282,  267, 1547,  213,
766     1547, 1521, 1547,  273, 1547,    0, 1547, 1547,  251, 1547,
767     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,  318, 1547,
768      360,  231,  271,  288, 1547, 1499,    0, 1477,    0, 1547,
769     1497, 1475, 1505, 1547, 1547, 1547, 1504,    0, 1547, 1547,
770     1465, 1470,  238, 1467, 1476, 1474, 1474, 1460, 1463, 1475,
771
772      260, 1469, 1456, 1472, 1452, 1466, 1452, 1449, 1449, 1455,
773      255,  269, 1449, 1460, 1445, 1451, 1455, 1456, 1485,    0,
774     1446, 1457,  292, 1456, 1451, 1431,  132, 1435, 1449, 1439,
775      266, 1432,  268, 1445, 1447,  279, 1426, 1434,  285, 1421,
776     1430,  298,  300, 1435, 1430, 1433, 1421, 1424, 1464,  153,
777      184,  268, 1433, 1420, 1433,  305, 1426, 1425, 1547, 1547,
778      361,  368,  370, 1547, 1410, 1423, 1414, 1425,  344,    0,
779      368,    0,  382, 1547, 1441, 1422,  390,  432, 1547, 1439,
780     1420,  440,  373,  428, 1547, 1547, 1416,    0, 1411, 1406,
781     1410, 1420, 1414, 1416,  357, 1399, 1399, 1411, 1402,  349,
782
783     1413, 1410, 1393, 1409, 1407, 1404, 1395, 1402, 1388, 1386,
784     1399, 1384, 1401,    0, 1398, 1385, 1393, 1390, 1394, 1375,
785     1394, 1387, 1384, 1372, 1371,  392, 1389, 1376, 1385, 1372,
786     1379, 1369,  419, 1375, 1378, 1368, 1376, 1364, 1368, 1359,
787     1374, 1373, 1363, 1370,  355, 1353, 1372, 1355, 1353, 1352,
788     1363, 1352, 1347, 1345, 1347, 1358, 1343, 1345, 1342, 1354,
789     1353, 1336, 1355, 1336,  304, 1345, 1340, 1338, 1348, 1326,
790      447, 1345, 1347, 1335, 1327, 1326, 1330, 1342, 1325,    0,
791      455,  446, 1547,  488, 1547, 1353, 1334,  496,  487, 1547,
792     1547, 1351, 1332, 1547, 1346, 1324, 1314, 1325, 1324,    0,
793
794     1321, 1326,  468,    0,    0, 1313, 1311, 1311, 1312, 1307,
795     1316, 1304, 1322,  471, 1310,  476,    0,    0, 1304, 1315,
796     1314, 1314,    0, 1298,  506,    0,    0, 1300,  509, 1310,
797     1307, 1308, 1298, 1292, 1291, 1334, 1291, 1290, 1290,  512,
798     1285,    0,    0, 1281, 1280, 1279, 1281, 1282, 1287, 1281,
799     1277, 1291, 1286, 1286, 1284, 1283, 1276, 1270, 1272, 1271,
800     1274, 1274, 1280, 1265, 1268, 1263, 1272, 1277, 1264, 1261,
801     1274, 1264,    0,    0, 1271, 1269, 1266, 1295, 1256, 1256,
802     1262, 1252, 1260,  515, 1257,    0,    0,    0,    0, 1246,
803     1259, 1258, 1257, 1256, 1253, 1241,  529,  503, 1547, 1547,
804
805     1253, 1254, 1254,    0, 1238,    0,    0,    0, 1239,    0,
806     1248, 1238,    0, 1237, 1238, 1232, 1225, 1224, 1223, 1240,
807        0,    0,    0, 1230,    0, 1226,    0,    0,    0,    0,
808        0,    0,    0,    0,    0, 1239, 1236,  538, 1235,    0,
809        0, 1239, 1232, 1228, 1224,    0,    0,    0, 1216,  522,
810      543,  546, 1221, 1217, 1223, 1213, 1211, 1225, 1209,    0,
811     1209, 1223, 1211, 1207, 1214, 1208, 1220, 1215, 1215,    0,
812     1212, 1209, 1213, 1196, 1194, 1197, 1204, 1210, 1205, 1206,
813     1203, 1232, 1189,    0, 1191, 1192,    0,    0,    0,    0,
814     1189, 1193,    0, 1186, 1186, 1242, 1185, 1188,    0, 1196,
815
816     1175,    0, 1185, 1179,    0, 1172, 1172, 1186,  551,  554,
817      557,    0, 1188,    0,  560,  564, 1202, 1201, 1200, 1165,
818     1164,    0, 1164, 1181, 1180, 1175,    0,    0,    0,    0,
819        0,    0,    0,    0,    0,    0, 1163, 1177, 1163, 1160,
820        0,    0, 1166,  378,    0, 1162, 1170, 1169,    0, 1161,
821     1153,    0,    0,    0,    0,    0, 1150,    0,    0, 1149,
822     1161,  566,  570, 1166, 1152, 1159, 1158, 1155, 1149, 1146,
823     1141,  588, 1157, 1142, 1136, 1136, 1150, 1134, 1147,    0,
824        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
825     1139,    0,    0,    0, 1164, 1163, 1162, 1127, 1126,  440,
826
827      575,    0, 1139, 1142,    0, 1140, 1128, 1124,    0, 1137,
828     1134, 1133, 1122,    0, 1121, 1111, 1129, 1114, 1117,  599,
829     1122, 1125,    0,    0,    0,    0, 1143, 1142, 1141, 1106,
830     1105, 1105,    0, 1119, 1105,    0, 1116, 1108, 1110,  589,
831      617, 1161, 1103, 1107, 1110,    0,    0,    0,    0, 1131,
832      585,    0, 1107, 1110, 1094, 1102, 1092, 1113, 1102, 1098,
833     1099, 1099, 1098, 1083,  624, 1096,    0, 1097, 1085, 1084,
834        0,    0,    0, 1080, 1110, 1109, 1108, 1073, 1072, 1068,
835     1076,    0, 1106,  619,    0, 1082, 1085,    0,    0,  631,
836        0, 1062, 1070,  649, 1547,  660,    0,  671,  657, 1547,
837
838     1070,    0, 1066, 1065, 1086, 1075, 1073, 1073, 1060, 1075,
839     1058, 1091, 1070, 1071, 1066, 1087,    0,    0, 1083, 1082,
840     1081, 1046, 1045,    0, 1045,    0,    0,    0,  441,  668,
841     1069, 1056, 1059, 1035, 1048, 1035, 1034, 1055, 1044, 1041,
842     1033, 1051, 1050, 1049, 1014, 1013,    0, 1017,  642,  709,
843      481, 1031, 1020, 1008, 1019,  999, 1000,  996, 1028, 1007,
844     1001, 1021, 1002,  987,  981,  931,  928,  942,  928,  927,
845      960,  647,    0,  936,  939,  931,  922,  930,  920,  941,
846      930,  926,  928,  926,  926,  925,    0,  911,  910,  943,
847      922,  919,  940,  939,  676,    0,  913,  916, 1547,  496,
848
849     1547,  717,    0,  738,  930,  913,   10,  100,    0,  146,
850      189,  225,  233,  264,  295,  297,  314,  328,  346,    0,
851      356,    0,  371,  373,  381,  406,  442,  451,  471,  456,
852      475,  497,  491,  530,  511,  549,  548,  547,  655,  536,
853      555,  556,  559,  559,  563,  564,  565,  568,  606,  605,
854      613,  648,  697,  667,  637,  649,  650,  645,  647,  656,
855        0,    0,  659,  682,  656,  702,  697,  677,  699,  684,
856      685,  720,  701,  700,  723,  702,  707,  713,  717,  702,
857      701,  717,  703,  706,  707,  717,  712,  703,  704,  712,
858        0,    0,  713,  714,  715,  750,  731,  730,  753,  746,
859
860      731,  726,  731,    0,    0,  740,  741,  735,    0,  736,
861      721,    0,  722,  746,  747,  732,  731,  734,  735,    0,
862      729,  739,  731,  739,  762,  743,    0,    0,  742,  759,
863      760,    0,    0,  761,  762,  763,  764,  749,  748,  751,
864      752,  813,  814,  763,  759,  750,  751,  775,  776,    0,
865        0,  755,  756,  764,    0,    0,  765,  788,  762,  790,
866      785,  779,  766,  788,  786,  779,  768,  769,  770,  771,
867      779,    0,    0,  780,  841,  842,  843,  776,  795,    0,
868        0,  799,  800,    0,    0,  804,  806,  800,    0,  801,
869      786,  810,    0,  788,  798,  821,    0,    0,    0,    0,
870
871      814,  815,  803,  861,  813,  815,  864,  807,  808,  800,
872      801,  825,  828,    0,  826,  836,  810,  846,  810,  811,
873      815,  831,  881,  883,  884,  882,  820,  821,    0,    0,
874      840,  841,  834,  843,    0,  857,    0,    0,  852,  897,
875      898, 1547,  900,  899,  902,  854,    0,    0,  846,  850,
876      844,  866,    0,  852,  913, 1547,  914,  866,  867,  917,
877      853,  855,    0,  875,  872,  877,  927,  928,  929, 1547,
878        0,    0,  872,  887,  933,  934, 1547,  938, 1547,  867,
879      882,  943, 1547,    0,  882,  945,  947,  948,  949,  895,
880      898,  955,  956, 1547, 1547,  995, 1003, 1011, 1020, 1024,
881
882     1033, 1041, 1048, 1055, 1062, 1072, 1080, 1088, 1096
883    } ;
884
885static const flex_int16_t yy_def[1110] =
886    {   0,
887     1095,    1, 1095,    3, 1096, 1096, 1095, 1095, 1095, 1095,
888     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
889     1095, 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1097,
890     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
891     1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095,
892     1095, 1095, 1095, 1095, 1095, 1098, 1095, 1095, 1095, 1095,
893     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
894     1095,   19, 1099, 1095, 1095, 1095, 1100, 1095,   20, 1095,
895     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1095, 1095,
896     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
897
898     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
899     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
900     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
901     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
902     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
903     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
904     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1101,
905     1095, 1098, 1095, 1095, 1095, 1095,   71, 1095, 1095, 1095,
906     1095, 1095, 1102, 1100, 1095, 1095, 1097, 1097, 1097, 1097,
907     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
908
909     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
910     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
911     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
912     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
913     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
914     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
915     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
916     1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1101,
917     1095, 1103, 1095, 1095, 1095, 1095, 1095, 1095, 1104, 1095,
918     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
919
920     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
921     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
922     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
923     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
924     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
925     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
926     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
927     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
928     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
929     1097, 1097, 1095, 1095, 1095, 1095, 1095, 1105, 1095, 1095,
930
931     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
932     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
933     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
934     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
935     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
936     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
937     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
938     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
939     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
940     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1097, 1097,
941
942     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
943     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
944     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
945     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
946     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
947     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
948     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
949     1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097,
950     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
951     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
952
953     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
954     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
955     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
956     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1106,
957     1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
958     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
959     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
960     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
961     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
962     1097, 1097, 1095, 1095, 1095, 1095, 1107, 1095, 1095, 1095,
963
964     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
965     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
966     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
967     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
968     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1108, 1095,
969     1107, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097,
970     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
971     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
972     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
973     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
974
975     1095, 1095, 1109, 1095, 1095, 1095, 1095, 1095, 1097, 1097,
976     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
977     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
978     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
979     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
980     1097, 1097, 1109, 1095, 1095, 1095, 1095, 1097, 1097, 1097,
981     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
982     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
983     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
984     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095,
985
986     1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
987     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
988     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
989     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
990     1097, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097,
991     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
992     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
993     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097,
994     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
995     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
996
997     1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097,
998     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
999     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
1000     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095,
1001     1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097,
1002     1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1003     1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095,
1004     1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1097,
1005     1095, 1095, 1095, 1097, 1095, 1095, 1095, 1095, 1095, 1095,
1006     1095, 1095, 1095, 1095,    0, 1095, 1095, 1095, 1095, 1095,
1007
1008     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1009    } ;
1010
1011static const flex_int16_t yy_nxt[1619] =
1012    {   0,
1013        8,    9,   10,    9,   11,    8,   12,   13,    8,    8,
1014       14,   15,   16,   17,   18,   19,   20,   20,   20,   20,
1015       20,   20,   20,    8,   21,   22,   23,   24,   24,   24,
1016       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
1017       24,   24,   24,   25,   24,   26,   27,   28,   29,   30,
1018       31,   32,   33,   34,   24,   24,   35,   36,   37,   38,
1019       39,   40,   41,   42,   43,   44,   45,   24,   24,   24,
1020       46,   47,   59,  856,   59,   48,   49,   50,   51,   50,
1021       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
1022       52,   53,   54,   54,   54,   54,   54,   54,   54,   55,
1023
1024       49,   49,   49,   56,   56,   56,   56,   56,   56,   56,
1025       56,   56,   56,   56,   56,   56,   56,   56,   56,   49,
1026       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
1027       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
1028       56,   56,   56,   56,   56,   56,   49,   62,   65,   89,
1029       67,   69,   69,   69,   69,   69,   69,   69,   69,   83,
1030       84,  857,   66,   68,   91,   63,   71,   90,   72,   72,
1031       72,   72,   72,   72,   72,   73,   86,   87,   98,   92,
1032       93,   94,   99,   95,   74,  116,   96,   97,   75,  100,
1033      231,  858,  101,  117,   76,   77,  102,  107,  232,  108,
1034
1035      103,  126,   74,  128,  104,  118,  105,  129,  109,   75,
1036      263,  264,  106,  157,  169,  127,  169,   78,  130,  119,
1037       77,   71,  158,   79,   79,   79,   79,   79,   79,   79,
1038       79,  159,  131,  110,  859,  136,  154,  265,  149,   74,
1039      155,  111,  133,   80,  112,  137,  266,  113,  120,   81,
1040      156,  121,   59,  114,   59,  122,  123,   74,  134,  138,
1041      124,  135,  145,  125,   80,  146,  139,  140,  163,  164,
1042      150,  141,   82, 1095,  147,  151,  160,  142,  143,  152,
1043      144,  148,  153,  161,   71,   59,  860,  162,  171,  171,
1044      171,  171,  171,  171,  171,  171,  861,  189, 1095,  182,
1045
1046      182,  190,   74,  183,  183,  183,  183,  183,  183,  183,
1047      183,  210,  198,  267,  212,  239,  165,  199,  200,  236,
1048       74,  268,  211,  166,  244,  862,  237,  167,  213,  240,
1049      249,  241,  168,   69,   69,   69,   69,   69,   69,   69,
1050       69,  245,  246,  253,  250,  169,  255,  169,  223,  173,
1051      174,  224,  225,  175,  379,  226,  863,  227,  272,  254,
1052      256,  273,  161,  380,   59,  864,  162,  173,  174,  163,
1053      164,  163,  164,  865,  176,  177,  177,  177,  177,  177,
1054      177,  177,  177,  171,  171,  171,  171,  171,  171,  171,
1055      171,  178,  179,  281,  281,  180,  866,  282,  282,  282,
1056
1057      282,  282,  282,  282,  282,  291,  304,  867,  292,  178,
1058      179,  310,  311,  336,  358,  868,  181,  165,  359,  165,
1059      305,  284,  285,  291,  166,  286,  166,  614,  167,  293,
1060      167,  615,  869,  168,  870,  168,  344,  345,  346,  284,
1061      285,  337,  871,  288,  288,  872,  287,  289,  289,  289,
1062      289,  289,  289,  289,  289,  183,  183,  183,  183,  183,
1063      183,  183,  183,  294,  386,  387,  388,  655,  777,  295,
1064      282,  282,  282,  282,  282,  282,  282,  282,  174,  656,
1065      778,  175,  694,  695,  294,  406,  407,  408,  417,  418,
1066      419,  873,  296,  421,  422,  423,  174,  800,  801,  397,
1067
1068      397,  874,  176,  398,  398,  398,  398,  398,  398,  398,
1069      398,  289,  289,  289,  289,  289,  289,  289,  289,  179,
1070      875,  876,  180,  429,  430,  431,  433,  434,  435,  446,
1071      447,  448,  488,  489,  490,  285,  877,  179,  286,  528,
1072      529,  530,  878,  181,  398,  398,  398,  398,  398,  398,
1073      398,  398,  879,  285,  517,  518,  519,  880,  881,  287,
1074      531,  532,  533,  534,  535,  536,  520,  521,  582,  583,
1075      584,  585,  586,  587,  588,  589,  590,  592,  593,  594,
1076      595,  596,  597,  624,  625,  626,  627,  628,  629,  572,
1077      694,  695,  598,  599,  882,  883,  884,  887,  630,  631,
1078
1079      888,  889,  657,  640,  641,  641,  641,  641,  641,  641,
1080      641,  658,  704,  659,  660,  675,  676,  677,  694,  695,
1081      890,  705,  891,  706,  892,  893,  894,  678,  679,  895,
1082      680,  697,  698,  698,  698,  698,  698,  698,  698,  698,
1083      719,  720,  721,  800,  801,  896,  737,  742,  743,  744,
1084      694,  695,  722,  723,  897,  738,  697,  739,  699,  745,
1085      746,  694,  695,  898,  749,  750,  750,  750,  750,  750,
1086      750,  750,  694,  695,  825,  696,  696,  696,  696,  696,
1087      696,  696,  885,  826,  803,  827,  698,  698,  698,  698,
1088      698,  698,  698,  698,  886,  779,  752,  899,  800,  801,
1089
1090      900,  901,  902,  848,  780,  753,  781,  782,  903,  803,
1091      800,  801,  849,  904,  850,  905,  754,  906,  800,  801,
1092      907,  908,  909,  755,  804,  804,  804,  804,  804,  804,
1093      804,  804,  802,  802,  802,  802,  802,  802,  802,  800,
1094      801,  910,  911,  912,  913,  914,  915,  916,  917,  918,
1095      919,  920,  921,  804,  804,  804,  804,  804,  804,  804,
1096      804,  922,  923,  924,  925,  926,  927,  928,  929,  930,
1097      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
1098      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
1099      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
1100
1101      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
1102      971,  972,  973,  974,  975,  976,  978,  979,  980,  981,
1103      982,  983,  977,  984,  985,  986,  987,  988,  989,  990,
1104      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
1105     1001, 1002,  975,  976, 1004, 1006, 1007, 1008, 1009, 1010,
1106      977, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
1107     1020, 1021, 1004, 1022, 1024, 1025, 1027, 1028, 1029, 1030,
1108     1031, 1023, 1026, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
1109     1039, 1040, 1041, 1045, 1043, 1025, 1047, 1048, 1049, 1050,
1110     1042, 1044, 1026, 1051, 1003, 1052, 1053, 1054, 1055, 1041,
1111
1112     1057, 1043, 1005, 1045, 1059, 1061, 1056, 1042, 1044, 1062,
1113     1063, 1064, 1060, 1065, 1055, 1057, 1066, 1068, 1069, 1071,
1114     1005, 1072, 1056, 1073, 1067, 1074, 1070, 1075, 1076, 1078,
1115     1069, 1080, 1081, 1084, 1082, 1076, 1077, 1079, 1070, 1078,
1116     1085, 1046, 1083, 1077, 1082, 1086, 1087, 1079, 1087, 1089,
1117     1089, 1091, 1083, 1088, 1092, 1088, 1093, 1093, 1058,  855,
1118      854, 1046,  852,  851, 1094, 1094,  847,  846,  845,  844,
1119      843,  842,  841, 1058,  840,  839,  838,  837,  836,  835,
1120      834,  833,  832,  831,  830,  829,  828,  824,  823,  822,
1121      821,  820,  819, 1090, 1090,   57,   57,   57,   57,   57,
1122
1123       57,   57,   57,   57,   57,   57,   57,   88,   88,   88,
1124       88,   88,   88,   88,   88,  172,  172,  172,  172,  172,
1125      172,  172,  172,   73,   73,   73,  818,   73,  184,  184,
1126      184,  184,  184,  280,  280,  817,  280,  280,  280,  280,
1127      280,  280,  280,  280,  280,  183,  183,  816,  815,  183,
1128      814,  183,  282,  282,  813,  812,  282,  811,  282,  289,
1129      289,  810,  809,  289,  808,  289,  398,  398,  807,  806,
1130      398,  805,  398,  696,  696,  799,  696,  798,  797,  796,
1131      795,  794,  793,  696,  751,  751,  751,  751,  751,  802,
1132      802,  792,  802,  791,  790,  789,  788,  787,  786,  802,
1133
1134      853,  853,  853,  853,  853,  785,  784,  783,  776,  775,
1135      774,  773,  772,  771,  770,  769,  768,  767,  766,  765,
1136      764,  763,  762,  761,  760,  759,  758,  757,  756,  748,
1137      747,  741,  740,  736,  735,  734,  733,  732,  731,  730,
1138      729,  728,  727,  726,  725,  724,  718,  717,  716,  715,
1139      714,  713,  712,  711,  710,  709,  708,  707,  703,  702,
1140      701,  700,  699,  693,  692,  691,  690,  689,  688,  687,
1141      686,  685,  684,  683,  682,  681,  674,  673,  672,  671,
1142      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
1143      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
1144
1145      644,  643,  642,  639,  638,  637,  636,  635,  634,  633,
1146      632,  623,  622,  621,  620,  619,  618,  617,  616,  613,
1147      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
1148      602,  601,  600,  591,  581,  580,  579,  578,  577,  576,
1149      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
1150      565,  564,  563,  562,  561,  560,  559,  558,  557,  556,
1151      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
1152      545,  544,  543,  542,  541,  540,  539,  538,  537,  527,
1153      526,  525,  524,  523,  522,  516,  515,  514,  513,  512,
1154      511,  510,  509,  508,  507,  506,  505,  504,  503,  502,
1155
1156      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
1157      491,  487,  486,  485,  484,  483,  482,  481,  480,  479,
1158      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
1159      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
1160      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
1161      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
1162      432,  428,  427,  426,  425,  424,  420,  416,  415,  414,
1163      413,  412,  411,  410,  409,  405,  404,  403,  402,  401,
1164      294,  294,  400,  400,  399,  399,  396,  395,  394,  393,
1165      392,  391,  390,  389,  385,  384,  383,  382,  381,  378,
1166
1167      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
1168      367,  366,  365,  364,  363,  362,  361,  360,  357,  356,
1169      355,  354,  353,  352,  351,  350,  349,  348,  347,  343,
1170      342,  341,  340,  339,  338,  335,  334,  333,  332,  331,
1171      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
1172      320,  319,  318,  317,  316,  315,  314,  313,  312,  309,
1173      308,  307,  306,  303,  302,  301,  300,  299,  298,  297,
1174      290,  290,  283,  283,  279,  278,  277,  276,  275,  274,
1175      271,  270,  269,  262,  261,  260,  259,  258,  257,  252,
1176      251,  248,  247,  243,  242,  238,  235,  234,  233,  230,
1177
1178      229,  228,  222,  221,  220,  219,  218,  217,  216,  215,
1179      214,  209,  208,  207,  206,  205,  204,  203,  202,  201,
1180      197,  196,  195,  194,  193,  192,  191,  188,  187,  186,
1181      185,   80,   80,   75,   75,  170,  132,  115,   85,   70,
1182       64,   61,   60, 1095,   58,   58,    7, 1095, 1095, 1095,
1183     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1184     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1185     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1186     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1187     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1188
1189     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1190     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1191    } ;
1192
1193static const flex_int16_t yy_chk[1619] =
1194    {   0,
1195        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1196        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1197        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1198        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1199        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1200        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1201        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
1202        1,    2,    9,  807,    9,    2,    3,    3,    3,    3,
1203        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1204        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1205
1206        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1207        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1208        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1209        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1210        3,    3,    3,    3,    3,    3,    3,   13,   15,   25,
1211       16,   17,   17,   17,   17,   17,   17,   17,   17,   21,
1212       21,  808,   15,   16,   26,   13,   19,   25,   19,   19,
1213       19,   19,   19,   19,   19,   19,   23,   23,   28,   26,
1214       26,   27,   28,   27,   19,   33,   27,   27,   19,   28,
1215      127,  810,   28,   33,   19,   19,   29,   30,  127,   30,
1216
1217       29,   35,   19,   36,   29,   33,   29,   36,   30,   19,
1218      150,  150,   29,   45,   50,   35,   50,   19,   37,   34,
1219       19,   20,   45,   20,   20,   20,   20,   20,   20,   20,
1220       20,   46,   37,   31,  811,   40,   44,  151,   43,   20,
1221       44,   31,   39,   20,   31,   40,  151,   31,   34,   20,
1222       44,   34,   59,   31,   59,   34,   34,   20,   39,   41,
1223       34,   39,   42,   34,   20,   42,   41,   41,   48,   48,
1224       43,   41,   20,   72,   42,   43,   46,   41,   41,   43,
1225       41,   42,   43,   47,   73,   47,  812,   47,   54,   54,
1226       54,   54,   54,   54,   54,   54,  813,   93,   72,   74,
1227
1228       74,   93,   73,   74,   74,   74,   74,   74,   74,   74,
1229       74,  111,  101,  152,  112,  133,   48,  101,  101,  131,
1230       73,  152,  111,   48,  136,  814,  131,   48,  112,  133,
1231      139,  133,   48,   69,   69,   69,   69,   69,   69,   69,
1232       69,  136,  136,  142,  139,  169,  143,  169,  123,   69,
1233       69,  123,  123,   69,  265,  123,  815,  123,  156,  142,
1234      143,  156,  161,  265,  161,  816,  161,   69,   69,  162,
1235      162,  163,  163,  817,   69,   71,   71,   71,   71,   71,
1236       71,   71,   71,  171,  171,  171,  171,  171,  171,  171,
1237      171,   71,   71,  173,  173,   71,  818,  173,  173,  173,
1238
1239      173,  173,  173,  173,  173,  183,  195,  819,  183,   71,
1240       71,  200,  200,  226,  245,  821,   71,  162,  245,  163,
1241      195,  177,  177,  183,  162,  177,  163,  544,  162,  183,
1242      163,  544,  823,  162,  824,  163,  233,  233,  233,  177,
1243      177,  226,  825,  178,  178,  826,  177,  178,  178,  178,
1244      178,  178,  178,  178,  178,  182,  182,  182,  182,  182,
1245      182,  182,  182,  184,  271,  271,  271,  600,  729,  184,
1246      281,  281,  281,  281,  281,  281,  281,  281,  282,  600,
1247      729,  282,  751,  751,  184,  303,  303,  303,  314,  314,
1248      314,  827,  184,  316,  316,  316,  282,  800,  800,  284,
1249
1250      284,  828,  282,  284,  284,  284,  284,  284,  284,  284,
1251      284,  288,  288,  288,  288,  288,  288,  288,  288,  289,
1252      829,  830,  289,  325,  325,  325,  329,  329,  329,  340,
1253      340,  340,  384,  384,  384,  398,  831,  289,  398,  450,
1254      450,  450,  832,  289,  397,  397,  397,  397,  397,  397,
1255      397,  397,  833,  398,  438,  438,  438,  834,  835,  398,
1256      451,  451,  451,  452,  452,  452,  438,  438,  509,  509,
1257      509,  510,  510,  510,  511,  511,  511,  515,  515,  515,
1258      516,  516,  516,  562,  562,  562,  563,  563,  563,  572,
1259      640,  640,  516,  516,  836,  837,  838,  840,  563,  563,
1260
1261      841,  842,  601,  572,  572,  572,  572,  572,  572,  572,
1262      572,  601,  651,  601,  601,  620,  620,  620,  641,  641,
1263      843,  651,  844,  651,  845,  846,  847,  620,  620,  848,
1264      620,  640,  641,  641,  641,  641,  641,  641,  641,  641,
1265      665,  665,  665,  749,  749,  849,  684,  690,  690,  690,
1266      694,  694,  665,  665,  850,  684,  640,  684,  699,  690,
1267      690,  696,  696,  851,  694,  694,  694,  694,  694,  694,
1268      694,  694,  698,  698,  772,  696,  696,  696,  696,  696,
1269      696,  696,  839,  772,  749,  772,  698,  698,  698,  698,
1270      698,  698,  698,  698,  839,  730,  699,  852,  853,  853,
1271
1272      854,  855,  856,  795,  730,  699,  730,  730,  857,  749,
1273      750,  750,  795,  858,  795,  859,  699,  860,  802,  802,
1274      863,  864,  865,  699,  750,  750,  750,  750,  750,  750,
1275      750,  750,  802,  802,  802,  802,  802,  802,  802,  804,
1276      804,  866,  867,  868,  869,  870,  871,  872,  873,  874,
1277      875,  876,  877,  804,  804,  804,  804,  804,  804,  804,
1278      804,  878,  879,  880,  881,  882,  883,  884,  885,  886,
1279      887,  888,  889,  890,  893,  894,  895,  896,  897,  898,
1280      899,  900,  901,  902,  903,  906,  907,  908,  910,  911,
1281      913,  914,  915,  916,  917,  918,  919,  921,  922,  923,
1282
1283      924,  925,  926,  929,  930,  931,  934,  935,  936,  937,
1284      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
1285      948,  949,  943,  952,  953,  954,  957,  958,  959,  960,
1286      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
1287      971,  974,  975,  976,  977,  978,  979,  982,  983,  986,
1288      976,  987,  988,  990,  991,  992,  994,  995,  996, 1001,
1289     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
1290     1012, 1005, 1007, 1013, 1015, 1016, 1017, 1018, 1019, 1020,
1291     1021, 1022, 1023, 1026, 1024, 1025, 1027, 1028, 1031, 1032,
1292     1023, 1024, 1025, 1033,  975, 1034, 1036, 1039, 1040, 1041,
1293
1294     1044, 1043,  977, 1045, 1046, 1049, 1040, 1041, 1043, 1050,
1295     1051, 1052, 1046, 1054, 1055, 1057, 1058, 1059, 1060, 1061,
1296     1004, 1062, 1055, 1064, 1058, 1065, 1060, 1066, 1067, 1068,
1297     1069, 1073, 1074, 1080, 1075, 1076, 1067, 1068, 1069, 1078,
1298     1081, 1026, 1075, 1076, 1082, 1085, 1086, 1078, 1087, 1088,
1299     1089, 1090, 1082, 1086, 1091, 1087, 1092, 1093, 1044,  806,
1300      805, 1045,  798,  797, 1092, 1093,  794,  793,  792,  791,
1301      790,  789,  788, 1057,  786,  785,  784,  783,  782,  781,
1302      780,  779,  778,  777,  776,  775,  774,  771,  770,  769,
1303      768,  767,  766, 1088, 1089, 1096, 1096, 1096, 1096, 1096,
1304
1305     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1097,
1306     1097, 1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1098,
1307     1098, 1098, 1098, 1099, 1099, 1099,  765, 1099, 1100, 1100,
1308     1100, 1100, 1100, 1101, 1101,  764, 1101, 1101, 1101, 1101,
1309     1101, 1101, 1101, 1101, 1101, 1102, 1102,  763,  762, 1102,
1310      761, 1102, 1103, 1103,  760,  759, 1103,  758, 1103, 1104,
1311     1104,  757,  756, 1104,  755, 1104, 1105, 1105,  754,  753,
1312     1105,  752, 1105, 1106, 1106,  748, 1106,  746,  745,  744,
1313      743,  742,  741, 1106, 1107, 1107, 1107, 1107, 1107, 1108,
1314     1108,  740, 1108,  739,  738,  737,  736,  735,  734, 1108,
1315
1316     1109, 1109, 1109, 1109, 1109,  733,  732,  731,  725,  723,
1317      722,  721,  720,  719,  716,  715,  714,  713,  712,  711,
1318      710,  709,  708,  707,  706,  705,  704,  703,  701,  693,
1319      692,  687,  686,  683,  681,  680,  679,  678,  677,  676,
1320      675,  674,  670,  669,  668,  666,  664,  663,  662,  661,
1321      660,  659,  658,  657,  656,  655,  654,  653,  650,  645,
1322      644,  643,  642,  639,  638,  637,  635,  634,  632,  631,
1323      630,  629,  628,  627,  622,  621,  619,  618,  617,  616,
1324      615,  613,  612,  611,  610,  608,  607,  606,  604,  603,
1325      599,  598,  597,  596,  595,  591,  579,  578,  577,  576,
1326
1327      575,  574,  573,  571,  570,  569,  568,  567,  566,  565,
1328      564,  561,  560,  557,  551,  550,  548,  547,  546,  543,
1329      540,  539,  538,  537,  526,  525,  524,  523,  521,  520,
1330      519,  518,  517,  513,  508,  507,  506,  504,  503,  501,
1331      500,  498,  497,  496,  495,  494,  492,  491,  486,  485,
1332      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
1333      473,  472,  471,  469,  468,  467,  466,  465,  464,  463,
1334      462,  461,  459,  458,  457,  456,  455,  454,  453,  449,
1335      445,  444,  443,  442,  439,  437,  436,  426,  424,  420,
1336      419,  418,  417,  416,  415,  414,  412,  411,  409,  405,
1337
1338      403,  402,  401,  396,  395,  394,  393,  392,  391,  390,
1339      385,  383,  382,  381,  380,  379,  378,  377,  376,  375,
1340      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
1341      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
1342      352,  351,  350,  349,  348,  347,  346,  345,  344,  341,
1343      339,  338,  337,  336,  335,  334,  333,  332,  331,  330,
1344      328,  324,  322,  321,  320,  319,  315,  313,  312,  311,
1345      310,  309,  308,  307,  306,  302,  301,  299,  298,  297,
1346      296,  295,  293,  292,  287,  286,  279,  278,  277,  276,
1347      275,  274,  273,  272,  270,  269,  268,  267,  266,  264,
1348
1349      263,  262,  261,  260,  259,  258,  257,  256,  255,  254,
1350      253,  252,  251,  250,  249,  248,  247,  246,  244,  243,
1351      242,  241,  240,  239,  238,  237,  236,  235,  234,  232,
1352      231,  230,  229,  228,  227,  225,  224,  223,  222,  221,
1353      220,  219,  218,  217,  216,  215,  213,  212,  211,  210,
1354      209,  208,  207,  206,  205,  204,  203,  202,  201,  199,
1355      198,  197,  196,  194,  193,  192,  191,  190,  189,  187,
1356      181,  180,  176,  175,  168,  167,  166,  165,  158,  157,
1357      155,  154,  153,  149,  148,  147,  146,  145,  144,  141,
1358      140,  138,  137,  135,  134,  132,  130,  129,  128,  126,
1359
1360      125,  124,  122,  121,  119,  118,  117,  116,  115,  114,
1361      113,  110,  109,  108,  107,  106,  105,  104,  103,  102,
1362      100,   99,   98,   97,   96,   95,   94,   92,   91,   87,
1363       83,   82,   81,   78,   76,   52,   38,   32,   22,   18,
1364       14,   12,   11,    7,    6,    5, 1095, 1095, 1095, 1095,
1365     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1366     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1367     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1368     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1369     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1370
1371     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
1372     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095
1373    } ;
1374
1375/* The intent behind this definition is that it'll catch
1376 * any uses of REJECT which flex missed.
1377 */
1378#define REJECT reject_used_but_not_detected
1379#define yymore() yymore_used_but_not_detected
1380#define YY_MORE_ADJ 0
1381#define YY_RESTORE_YY_MORE_OFFSET
1382#line 1 "../src/compiler/glsl/glsl_lexer.ll"
1383#line 2 "../src/compiler/glsl/glsl_lexer.ll"
1384/*
1385 * Copyright © 2008, 2009 Intel Corporation
1386 *
1387 * Permission is hereby granted, free of charge, to any person obtaining a
1388 * copy of this software and associated documentation files (the "Software"),
1389 * to deal in the Software without restriction, including without limitation
1390 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1391 * and/or sell copies of the Software, and to permit persons to whom the
1392 * Software is furnished to do so, subject to the following conditions:
1393 *
1394 * The above copyright notice and this permission notice (including the next
1395 * paragraph) shall be included in all copies or substantial portions of the
1396 * Software.
1397 *
1398 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1399 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1400 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1401 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1402 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1403 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1404 * DEALINGS IN THE SOFTWARE.
1405 */
1406#include <ctype.h>
1407#include <limits.h>
1408#include "util/strtod.h"
1409#include "ast.h"
1410#include "glsl_parser_extras.h"
1411#include "glsl_parser.h"
1412#include "main/mtypes.h"
1413
1414static int classify_identifier(struct _mesa_glsl_parse_state *, const char *,
1415			       unsigned name_len, YYSTYPE *output);
1416
1417#ifdef _MSC_VER
1418#define YY_NO_UNISTD_H
1419#endif
1420
1421#define YY_NO_INPUT
1422#define YY_USER_ACTION						\
1423   do {								\
1424      yylloc->first_column = yycolumn + 1;			\
1425      yylloc->first_line = yylloc->last_line = yylineno + 1;	\
1426      yycolumn += yyleng;					\
1427      yylloc->last_column = yycolumn + 1;			\
1428   } while(0);
1429
1430#define YY_USER_INIT yylineno = 0; yycolumn = 0; yylloc->source = 0;
1431
1432/* A macro for handling reserved words and keywords across language versions.
1433 *
1434 * Certain words start out as identifiers, become reserved words in
1435 * later language revisions, and finally become language keywords.
1436 * This may happen at different times in desktop GLSL and GLSL ES.
1437 *
1438 * For example, consider the following lexer rule:
1439 * samplerBuffer       KEYWORD(130, 0, 140, 0, SAMPLERBUFFER)
1440 *
1441 * This means that "samplerBuffer" will be treated as:
1442 * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
1443 * - a reserved word - error                 ...in GLSL >= 1.30
1444 * - an identifier                           ...in GLSL <  1.30 or GLSL ES
1445 */
1446#define KEYWORD(reserved_glsl, reserved_glsl_es,			\
1447                allowed_glsl, allowed_glsl_es, token)			\
1448   KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1449                    allowed_glsl, allowed_glsl_es, false, token)
1450
1451/**
1452 * Like the KEYWORD macro, but the word is also treated as a keyword
1453 * if the given boolean expression is true.
1454 */
1455#define KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,		\
1456                         allowed_glsl, allowed_glsl_es,			\
1457                         alt_expr, token)				\
1458   do {									\
1459      if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
1460          || (alt_expr)) {						\
1461	 return token;							\
1462      } else if (yyextra->is_version(reserved_glsl,			\
1463                                     reserved_glsl_es)) {		\
1464	 _mesa_glsl_error(yylloc, yyextra,				\
1465			  "illegal use of reserved word `%s'", yytext);	\
1466	 return ERROR_TOK;						\
1467      } else {								\
1468	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1469      }									\
1470   } while (0)
1471
1472/**
1473 * Like KEYWORD_WITH_ALT, but used for built-in GLSL types
1474 */
1475#define TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1476		      allowed_glsl, allowed_glsl_es,			\
1477		      alt_expr, gtype)					\
1478   do {									\
1479      if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
1480          || (alt_expr)) {						\
1481	 yylval->type = gtype; 						\
1482	 return BASIC_TYPE_TOK;						\
1483      } else if (yyextra->is_version(reserved_glsl,			\
1484                                     reserved_glsl_es)) {		\
1485	 _mesa_glsl_error(yylloc, yyextra,				\
1486			  "illegal use of reserved word `%s'", yytext);	\
1487	 return ERROR_TOK;						\
1488      } else {								\
1489	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1490      }									\
1491   } while (0)
1492
1493#define TYPE(reserved_glsl, reserved_glsl_es,				\
1494             allowed_glsl, allowed_glsl_es,				\
1495             gtype)							\
1496   TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
1497                 allowed_glsl, allowed_glsl_es,				\
1498                 false, gtype)
1499
1500/**
1501 * A macro for handling keywords that have been present in GLSL since
1502 * its origin, but were changed into reserved words in GLSL 3.00 ES.
1503 */
1504#define DEPRECATED_ES_KEYWORD(token)					\
1505   do {									\
1506      if (yyextra->is_version(0, 300)) {				\
1507	 _mesa_glsl_error(yylloc, yyextra,				\
1508			  "illegal use of reserved word `%s'", yytext);	\
1509	 return ERROR_TOK;						\
1510      } else {								\
1511         return token;							\
1512      }									\
1513   } while (0)
1514
1515/**
1516 * Like DEPRECATED_ES_KEYWORD, but for types
1517 */
1518#define DEPRECATED_ES_TYPE_WITH_ALT(alt_expr, gtype)			\
1519   do {									\
1520      if (yyextra->is_version(0, 300)) {				\
1521         _mesa_glsl_error(yylloc, yyextra,				\
1522                          "illegal use of reserved word `%s'", yytext);	\
1523         return ERROR_TOK;						\
1524      } else if (alt_expr) {						\
1525         yylval->type = gtype;						\
1526         return BASIC_TYPE_TOK;						\
1527      } else {								\
1528         return classify_identifier(yyextra, yytext, yyleng, yylval);	\
1529      }									\
1530   } while (0)
1531
1532#define DEPRECATED_ES_TYPE(gtype)					\
1533   DEPRECATED_ES_TYPE_WITH_ALT(true, gtype)
1534
1535static int
1536literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
1537		YYSTYPE *lval, YYLTYPE *lloc, int base)
1538{
1539   bool is_uint = (text[len - 1] == 'u' ||
1540		   text[len - 1] == 'U');
1541   bool is_long = (text[len - 1] == 'l' || text[len - 1] == 'L');
1542   const char *digits = text;
1543
1544   if (is_long)
1545      is_uint = (text[len - 2] == 'u' && text[len - 1] == 'l') ||
1546                (text[len - 2] == 'U' && text[len - 1] == 'L');
1547   /* Skip "0x" */
1548   if (base == 16)
1549      digits += 2;
1550
1551   unsigned long long value = strtoull(digits, NULL, base);
1552
1553   if (is_long)
1554      lval->n64 = (int64_t)value;
1555   else
1556      lval->n = (int)value;
1557
1558   if (is_long && !is_uint && base == 10 && value > (uint64_t)LLONG_MAX + 1) {
1559      /* Tries to catch unintentionally providing a negative value. */
1560      _mesa_glsl_warning(lloc, state,
1561                         "signed literal value `%s' is interpreted as %lld",
1562                         text, lval->n64);
1563   } else if (!is_long && value > UINT_MAX) {
1564      /* Note that signed 0xffffffff is valid, not out of range! */
1565      if (state->is_version(130, 300)) {
1566	 _mesa_glsl_error(lloc, state,
1567			  "literal value `%s' out of range", text);
1568      } else {
1569	 _mesa_glsl_warning(lloc, state,
1570			    "literal value `%s' out of range", text);
1571      }
1572   } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) {
1573      /* Tries to catch unintentionally providing a negative value.
1574       * Note that -2147483648 is parsed as -(2147483648), so we don't
1575       * want to warn for INT_MAX.
1576       */
1577      _mesa_glsl_warning(lloc, state,
1578			 "signed literal value `%s' is interpreted as %d",
1579			 text, lval->n);
1580   }
1581   if (is_long)
1582      return is_uint ? UINT64CONSTANT : INT64CONSTANT;
1583   else
1584      return is_uint ? UINTCONSTANT : INTCONSTANT;
1585}
1586
1587#define LITERAL_INTEGER(base) \
1588   literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base)
1589
1590#line 1590 "src/compiler/glsl/glsl_lexer.cpp"
1591#line 218 "../src/compiler/glsl/glsl_lexer.ll"
1592	/* Note: When adding any start conditions to this list, you must also
1593	 * update the "Internal compiler error" catch-all rule near the end of
1594	 * this file. */
1595
1596#line 1596 "src/compiler/glsl/glsl_lexer.cpp"
1597
1598#define INITIAL 0
1599#define PP 1
1600#define PRAGMA 2
1601
1602#ifndef YY_NO_UNISTD_H
1603/* Special case for "unistd.h", since it is non-ANSI. We include it way
1604 * down here because we want the user's section 1 to have been scanned first.
1605 * The user has a chance to override it with an option.
1606 */
1607#include <unistd.h>
1608#endif
1609
1610#define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
1611
1612/* Holds the entire state of the reentrant scanner. */
1613struct yyguts_t
1614    {
1615
1616    /* User-defined. Not touched by flex. */
1617    YY_EXTRA_TYPE yyextra_r;
1618
1619    /* The rest are the same as the globals declared in the non-reentrant scanner. */
1620    FILE *yyin_r, *yyout_r;
1621    size_t yy_buffer_stack_top; /**< index of top of stack. */
1622    size_t yy_buffer_stack_max; /**< capacity of stack. */
1623    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1624    char yy_hold_char;
1625    yy_size_t yy_n_chars;
1626    yy_size_t yyleng_r;
1627    char *yy_c_buf_p;
1628    int yy_init;
1629    int yy_start;
1630    int yy_did_buffer_switch_on_eof;
1631    int yy_start_stack_ptr;
1632    int yy_start_stack_depth;
1633    int *yy_start_stack;
1634    yy_state_type yy_last_accepting_state;
1635    char* yy_last_accepting_cpos;
1636
1637    int yylineno_r;
1638    int yy_flex_debug_r;
1639
1640    char *yytext_r;
1641    int yy_more_flag;
1642    int yy_more_len;
1643
1644    YYSTYPE * yylval_r;
1645
1646    YYLTYPE * yylloc_r;
1647
1648    }; /* end struct yyguts_t */
1649
1650static int yy_init_globals ( yyscan_t yyscanner );
1651
1652    /* This must go here because YYSTYPE and YYLTYPE are included
1653     * from bison output in section 1.*/
1654    #    define yylval yyg->yylval_r
1655
1656    #    define yylloc yyg->yylloc_r
1657
1658int yylex_init (yyscan_t* scanner);
1659
1660int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
1661
1662/* Accessor methods to globals.
1663   These are made visible to non-reentrant scanners for convenience. */
1664
1665int yylex_destroy ( yyscan_t yyscanner );
1666
1667int yyget_debug ( yyscan_t yyscanner );
1668
1669void yyset_debug ( int debug_flag , yyscan_t yyscanner );
1670
1671YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
1672
1673void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
1674
1675FILE *yyget_in ( yyscan_t yyscanner );
1676
1677void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
1678
1679FILE *yyget_out ( yyscan_t yyscanner );
1680
1681void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
1682
1683			yy_size_t yyget_leng ( yyscan_t yyscanner );
1684
1685char *yyget_text ( yyscan_t yyscanner );
1686
1687int yyget_lineno ( yyscan_t yyscanner );
1688
1689void yyset_lineno ( int _line_number , yyscan_t yyscanner );
1690
1691int yyget_column  ( yyscan_t yyscanner );
1692
1693void yyset_column ( int _column_no , yyscan_t yyscanner );
1694
1695YYSTYPE * yyget_lval ( yyscan_t yyscanner );
1696
1697void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
1698
1699       YYLTYPE *yyget_lloc ( yyscan_t yyscanner );
1700
1701        void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner );
1702
1703/* Macros after this point can all be overridden by user definitions in
1704 * section 1.
1705 */
1706
1707#ifndef YY_SKIP_YYWRAP
1708#ifdef __cplusplus
1709extern "C" int yywrap ( yyscan_t yyscanner );
1710#else
1711extern int yywrap ( yyscan_t yyscanner );
1712#endif
1713#endif
1714
1715#ifndef YY_NO_UNPUT
1716
1717#endif
1718
1719#ifndef yytext_ptr
1720static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
1721#endif
1722
1723#ifdef YY_NEED_STRLEN
1724static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
1725#endif
1726
1727#ifndef YY_NO_INPUT
1728#ifdef __cplusplus
1729static int yyinput ( yyscan_t yyscanner );
1730#else
1731static int input ( yyscan_t yyscanner );
1732#endif
1733
1734#endif
1735
1736/* Amount of stuff to slurp up with each read. */
1737#ifndef YY_READ_BUF_SIZE
1738#ifdef __ia64__
1739/* On IA-64, the buffer size is 16k, not 8k */
1740#define YY_READ_BUF_SIZE 16384
1741#else
1742#define YY_READ_BUF_SIZE 8192
1743#endif /* __ia64__ */
1744#endif
1745
1746/* Copy whatever the last rule matched to the standard output. */
1747#ifndef ECHO
1748/* This used to be an fputs(), but since the string might contain NUL's,
1749 * we now use fwrite().
1750 */
1751#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1752#endif
1753
1754/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1755 * is returned in "result".
1756 */
1757#ifndef YY_INPUT
1758#define YY_INPUT(buf,result,max_size) \
1759	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1760		{ \
1761		int c = '*'; \
1762		yy_size_t n; \
1763		for ( n = 0; n < max_size && \
1764			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1765			buf[n] = (char) c; \
1766		if ( c == '\n' ) \
1767			buf[n++] = (char) c; \
1768		if ( c == EOF && ferror( yyin ) ) \
1769			YY_FATAL_ERROR( "input in flex scanner failed" ); \
1770		result = n; \
1771		} \
1772	else \
1773		{ \
1774		errno=0; \
1775		while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1776			{ \
1777			if( errno != EINTR) \
1778				{ \
1779				YY_FATAL_ERROR( "input in flex scanner failed" ); \
1780				break; \
1781				} \
1782			errno=0; \
1783			clearerr(yyin); \
1784			} \
1785		}\
1786\
1787
1788#endif
1789
1790/* No semi-colon after return; correct usage is to write "yyterminate();" -
1791 * we don't want an extra ';' after the "return" because that will cause
1792 * some compilers to complain about unreachable statements.
1793 */
1794#ifndef yyterminate
1795#define yyterminate() return YY_NULL
1796#endif
1797
1798/* Number of entries by which start-condition stack grows. */
1799#ifndef YY_START_STACK_INCR
1800#define YY_START_STACK_INCR 25
1801#endif
1802
1803/* Report a fatal error. */
1804#ifndef YY_FATAL_ERROR
1805#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1806#endif
1807
1808/* end tables serialization structures and prototypes */
1809
1810/* Default declaration of generated scanner - a define so the user can
1811 * easily add parameters.
1812 */
1813#ifndef YY_DECL
1814#define YY_DECL_IS_OURS 1
1815
1816extern int yylex \
1817               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner);
1818
1819#define YY_DECL int yylex \
1820               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1821#endif /* !YY_DECL */
1822
1823/* Code executed at the beginning of each rule, after yytext and yyleng
1824 * have been set up.
1825 */
1826#ifndef YY_USER_ACTION
1827#define YY_USER_ACTION
1828#endif
1829
1830/* Code executed at the end of each rule. */
1831#ifndef YY_BREAK
1832#define YY_BREAK /*LINTED*/break;
1833#endif
1834
1835#define YY_RULE_SETUP \
1836	if ( yyleng > 0 ) \
1837		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1838				(yytext[yyleng - 1] == '\n'); \
1839	YY_USER_ACTION
1840
1841/** The main scanner function which does all the work.
1842 */
1843YY_DECL
1844{
1845	yy_state_type yy_current_state;
1846	char *yy_cp, *yy_bp;
1847	int yy_act;
1848    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1849
1850    yylval = yylval_param;
1851
1852    yylloc = yylloc_param;
1853
1854	if ( !yyg->yy_init )
1855		{
1856		yyg->yy_init = 1;
1857
1858#ifdef YY_USER_INIT
1859		YY_USER_INIT;
1860#endif
1861
1862		if ( ! yyg->yy_start )
1863			yyg->yy_start = 1;	/* first start state */
1864
1865		if ( ! yyin )
1866			yyin = stdin;
1867
1868		if ( ! yyout )
1869			yyout = stdout;
1870
1871		if ( ! YY_CURRENT_BUFFER ) {
1872			yyensure_buffer_stack (yyscanner);
1873			YY_CURRENT_BUFFER_LVALUE =
1874				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
1875		}
1876
1877		yy_load_buffer_state( yyscanner );
1878		}
1879
1880	{
1881#line 230 "../src/compiler/glsl/glsl_lexer.ll"
1882
1883
1884#line 1884 "src/compiler/glsl/glsl_lexer.cpp"
1885
1886	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
1887		{
1888		yy_cp = yyg->yy_c_buf_p;
1889
1890		/* Support of yytext. */
1891		*yy_cp = yyg->yy_hold_char;
1892
1893		/* yy_bp points to the position in yy_ch_buf of the start of
1894		 * the current run.
1895		 */
1896		yy_bp = yy_cp;
1897
1898		yy_current_state = yyg->yy_start;
1899		yy_current_state += YY_AT_BOL();
1900yy_match:
1901		do
1902			{
1903			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1904			if ( yy_accept[yy_current_state] )
1905				{
1906				yyg->yy_last_accepting_state = yy_current_state;
1907				yyg->yy_last_accepting_cpos = yy_cp;
1908				}
1909			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1910				{
1911				yy_current_state = (int) yy_def[yy_current_state];
1912				if ( yy_current_state >= 1096 )
1913					yy_c = yy_meta[yy_c];
1914				}
1915			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1916			++yy_cp;
1917			}
1918		while ( yy_current_state != 1095 );
1919		yy_cp = yyg->yy_last_accepting_cpos;
1920		yy_current_state = yyg->yy_last_accepting_state;
1921
1922yy_find_action:
1923		yy_act = yy_accept[yy_current_state];
1924
1925		YY_DO_BEFORE_ACTION;
1926
1927do_action:	/* This label is used only to access EOF actions. */
1928
1929		switch ( yy_act )
1930	{ /* beginning of action switch */
1931			case 0: /* must back up */
1932			/* undo the effects of YY_DO_BEFORE_ACTION */
1933			*yy_cp = yyg->yy_hold_char;
1934			yy_cp = yyg->yy_last_accepting_cpos;
1935			yy_current_state = yyg->yy_last_accepting_state;
1936			goto yy_find_action;
1937
1938case 1:
1939YY_RULE_SETUP
1940#line 232 "../src/compiler/glsl/glsl_lexer.ll"
1941;
1942	YY_BREAK
1943/* Preprocessor tokens. */
1944case 2:
1945*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1946yyg->yy_c_buf_p = yy_cp -= 1;
1947YY_DO_BEFORE_ACTION; /* set up yytext again */
1948YY_RULE_SETUP
1949#line 235 "../src/compiler/glsl/glsl_lexer.ll"
1950;
1951	YY_BREAK
1952case 3:
1953YY_RULE_SETUP
1954#line 236 "../src/compiler/glsl/glsl_lexer.ll"
1955{ BEGIN PP; return VERSION_TOK; }
1956	YY_BREAK
1957case 4:
1958YY_RULE_SETUP
1959#line 237 "../src/compiler/glsl/glsl_lexer.ll"
1960{ BEGIN PP; return EXTENSION; }
1961	YY_BREAK
1962case 5:
1963*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1964yyg->yy_c_buf_p = yy_cp -= 1;
1965YY_DO_BEFORE_ACTION; /* set up yytext again */
1966YY_RULE_SETUP
1967#line 238 "../src/compiler/glsl/glsl_lexer.ll"
1968{
1969				   /* Eat characters until the first digit is
1970				    * encountered
1971				    */
1972				   char *ptr = yytext;
1973				   while (!isdigit(*ptr))
1974				      ptr++;
1975
1976				   /* Subtract one from the line number because
1977				    * yylineno is zero-based instead of
1978				    * one-based.
1979				    */
1980				   yylineno = strtol(ptr, &ptr, 0) - 1;
1981
1982                                   /* From GLSL 3.30 and GLSL ES on, after processing the
1983                                    * line directive (including its new-line), the implementation
1984                                    * will behave as if it is compiling at the line number passed
1985                                    * as argument. It was line number + 1 in older specifications.
1986                                    */
1987                                   if (yyextra->is_version(330, 100))
1988                                      yylineno--;
1989
1990				   yylloc->source = strtol(ptr, NULL, 0);
1991				}
1992	YY_BREAK
1993case 6:
1994*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1995yyg->yy_c_buf_p = yy_cp -= 1;
1996YY_DO_BEFORE_ACTION; /* set up yytext again */
1997YY_RULE_SETUP
1998#line 262 "../src/compiler/glsl/glsl_lexer.ll"
1999{
2000				   /* Eat characters until the first digit is
2001				    * encountered
2002				    */
2003				   char *ptr = yytext;
2004				   while (!isdigit(*ptr))
2005				      ptr++;
2006
2007				   /* Subtract one from the line number because
2008				    * yylineno is zero-based instead of
2009				    * one-based.
2010				    */
2011				   yylineno = strtol(ptr, &ptr, 0) - 1;
2012
2013                                   /* From GLSL 3.30 and GLSL ES on, after processing the
2014                                    * line directive (including its new-line), the implementation
2015                                    * will behave as if it is compiling at the line number passed
2016                                    * as argument. It was line number + 1 in older specifications.
2017                                    */
2018                                   if (yyextra->is_version(330, 100))
2019                                      yylineno--;
2020				}
2021	YY_BREAK
2022case 7:
2023YY_RULE_SETUP
2024#line 284 "../src/compiler/glsl/glsl_lexer.ll"
2025{
2026				  BEGIN PP;
2027				  return PRAGMA_DEBUG_ON;
2028				}
2029	YY_BREAK
2030case 8:
2031YY_RULE_SETUP
2032#line 288 "../src/compiler/glsl/glsl_lexer.ll"
2033{
2034				  BEGIN PP;
2035				  return PRAGMA_DEBUG_OFF;
2036				}
2037	YY_BREAK
2038case 9:
2039YY_RULE_SETUP
2040#line 292 "../src/compiler/glsl/glsl_lexer.ll"
2041{
2042				  BEGIN PP;
2043				  return PRAGMA_OPTIMIZE_ON;
2044				}
2045	YY_BREAK
2046case 10:
2047YY_RULE_SETUP
2048#line 296 "../src/compiler/glsl/glsl_lexer.ll"
2049{
2050				  BEGIN PP;
2051				  return PRAGMA_OPTIMIZE_OFF;
2052				}
2053	YY_BREAK
2054case 11:
2055YY_RULE_SETUP
2056#line 300 "../src/compiler/glsl/glsl_lexer.ll"
2057{
2058				  BEGIN PP;
2059				  return PRAGMA_WARNING_ON;
2060				}
2061	YY_BREAK
2062case 12:
2063YY_RULE_SETUP
2064#line 304 "../src/compiler/glsl/glsl_lexer.ll"
2065{
2066				  BEGIN PP;
2067				  return PRAGMA_WARNING_OFF;
2068				}
2069	YY_BREAK
2070case 13:
2071YY_RULE_SETUP
2072#line 308 "../src/compiler/glsl/glsl_lexer.ll"
2073{
2074				  BEGIN PP;
2075				  return PRAGMA_INVARIANT_ALL;
2076				}
2077	YY_BREAK
2078case 14:
2079YY_RULE_SETUP
2080#line 312 "../src/compiler/glsl/glsl_lexer.ll"
2081{ BEGIN PRAGMA; }
2082	YY_BREAK
2083case 15:
2084/* rule 15 can match eol */
2085YY_RULE_SETUP
2086#line 314 "../src/compiler/glsl/glsl_lexer.ll"
2087{ BEGIN 0; yylineno++; yycolumn = 0; }
2088	YY_BREAK
2089case 16:
2090YY_RULE_SETUP
2091#line 315 "../src/compiler/glsl/glsl_lexer.ll"
2092{ }
2093	YY_BREAK
2094case 17:
2095YY_RULE_SETUP
2096#line 317 "../src/compiler/glsl/glsl_lexer.ll"
2097{ }
2098	YY_BREAK
2099case 18:
2100YY_RULE_SETUP
2101#line 318 "../src/compiler/glsl/glsl_lexer.ll"
2102{ }
2103	YY_BREAK
2104case 19:
2105YY_RULE_SETUP
2106#line 319 "../src/compiler/glsl/glsl_lexer.ll"
2107return COLON;
2108	YY_BREAK
2109case 20:
2110YY_RULE_SETUP
2111#line 320 "../src/compiler/glsl/glsl_lexer.ll"
2112{
2113				   /* We're not doing linear_strdup here, to avoid an implicit call
2114				    * on strlen() for the length of the string, as this is already
2115				    * found by flex and stored in yyleng
2116				    */
2117                                    void *mem_ctx = yyextra->linalloc;
2118                                    char *id = (char *) linear_alloc_child(mem_ctx, yyleng + 1);
2119                                    memcpy(id, yytext, yyleng + 1);
2120                                    yylval->identifier = id;
2121				   return IDENTIFIER;
2122				}
2123	YY_BREAK
2124case 21:
2125YY_RULE_SETUP
2126#line 331 "../src/compiler/glsl/glsl_lexer.ll"
2127{
2128				    yylval->n = strtol(yytext, NULL, 10);
2129				    return INTCONSTANT;
2130				}
2131	YY_BREAK
2132case 22:
2133YY_RULE_SETUP
2134#line 335 "../src/compiler/glsl/glsl_lexer.ll"
2135{
2136				    yylval->n = 0;
2137				    return INTCONSTANT;
2138				}
2139	YY_BREAK
2140case 23:
2141/* rule 23 can match eol */
2142YY_RULE_SETUP
2143#line 339 "../src/compiler/glsl/glsl_lexer.ll"
2144{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
2145	YY_BREAK
2146case 24:
2147YY_RULE_SETUP
2148#line 340 "../src/compiler/glsl/glsl_lexer.ll"
2149{ return yytext[0]; }
2150	YY_BREAK
2151case 25:
2152/* rule 25 can match eol */
2153YY_RULE_SETUP
2154#line 342 "../src/compiler/glsl/glsl_lexer.ll"
2155{ yylineno++; yycolumn = 0; }
2156	YY_BREAK
2157case 26:
2158YY_RULE_SETUP
2159#line 344 "../src/compiler/glsl/glsl_lexer.ll"
2160DEPRECATED_ES_KEYWORD(ATTRIBUTE);
2161	YY_BREAK
2162case 27:
2163YY_RULE_SETUP
2164#line 345 "../src/compiler/glsl/glsl_lexer.ll"
2165return CONST_TOK;
2166	YY_BREAK
2167case 28:
2168YY_RULE_SETUP
2169#line 346 "../src/compiler/glsl/glsl_lexer.ll"
2170{ yylval->type = glsl_type::bool_type; return BASIC_TYPE_TOK; }
2171	YY_BREAK
2172case 29:
2173YY_RULE_SETUP
2174#line 347 "../src/compiler/glsl/glsl_lexer.ll"
2175{ yylval->type = glsl_type::float_type; return BASIC_TYPE_TOK; }
2176	YY_BREAK
2177case 30:
2178YY_RULE_SETUP
2179#line 348 "../src/compiler/glsl/glsl_lexer.ll"
2180{ yylval->type = glsl_type::int_type; return BASIC_TYPE_TOK; }
2181	YY_BREAK
2182case 31:
2183YY_RULE_SETUP
2184#line 349 "../src/compiler/glsl/glsl_lexer.ll"
2185TYPE(130, 300, 130, 300, glsl_type::uint_type);
2186	YY_BREAK
2187case 32:
2188YY_RULE_SETUP
2189#line 351 "../src/compiler/glsl/glsl_lexer.ll"
2190return BREAK;
2191	YY_BREAK
2192case 33:
2193YY_RULE_SETUP
2194#line 352 "../src/compiler/glsl/glsl_lexer.ll"
2195return CONTINUE;
2196	YY_BREAK
2197case 34:
2198YY_RULE_SETUP
2199#line 353 "../src/compiler/glsl/glsl_lexer.ll"
2200return DO;
2201	YY_BREAK
2202case 35:
2203YY_RULE_SETUP
2204#line 354 "../src/compiler/glsl/glsl_lexer.ll"
2205return WHILE;
2206	YY_BREAK
2207case 36:
2208YY_RULE_SETUP
2209#line 355 "../src/compiler/glsl/glsl_lexer.ll"
2210return ELSE;
2211	YY_BREAK
2212case 37:
2213YY_RULE_SETUP
2214#line 356 "../src/compiler/glsl/glsl_lexer.ll"
2215return FOR;
2216	YY_BREAK
2217case 38:
2218YY_RULE_SETUP
2219#line 357 "../src/compiler/glsl/glsl_lexer.ll"
2220return IF;
2221	YY_BREAK
2222case 39:
2223YY_RULE_SETUP
2224#line 358 "../src/compiler/glsl/glsl_lexer.ll"
2225return DISCARD;
2226	YY_BREAK
2227case 40:
2228YY_RULE_SETUP
2229#line 359 "../src/compiler/glsl/glsl_lexer.ll"
2230return RETURN;
2231	YY_BREAK
2232case 41:
2233YY_RULE_SETUP
2234#line 361 "../src/compiler/glsl/glsl_lexer.ll"
2235{ yylval->type = glsl_type::bvec2_type; return BASIC_TYPE_TOK; }
2236	YY_BREAK
2237case 42:
2238YY_RULE_SETUP
2239#line 362 "../src/compiler/glsl/glsl_lexer.ll"
2240{ yylval->type = glsl_type::bvec3_type; return BASIC_TYPE_TOK; }
2241	YY_BREAK
2242case 43:
2243YY_RULE_SETUP
2244#line 363 "../src/compiler/glsl/glsl_lexer.ll"
2245{ yylval->type = glsl_type::bvec4_type; return BASIC_TYPE_TOK; }
2246	YY_BREAK
2247case 44:
2248YY_RULE_SETUP
2249#line 364 "../src/compiler/glsl/glsl_lexer.ll"
2250{ yylval->type = glsl_type::ivec2_type; return BASIC_TYPE_TOK; }
2251	YY_BREAK
2252case 45:
2253YY_RULE_SETUP
2254#line 365 "../src/compiler/glsl/glsl_lexer.ll"
2255{ yylval->type = glsl_type::ivec3_type; return BASIC_TYPE_TOK; }
2256	YY_BREAK
2257case 46:
2258YY_RULE_SETUP
2259#line 366 "../src/compiler/glsl/glsl_lexer.ll"
2260{ yylval->type = glsl_type::ivec4_type; return BASIC_TYPE_TOK; }
2261	YY_BREAK
2262case 47:
2263YY_RULE_SETUP
2264#line 367 "../src/compiler/glsl/glsl_lexer.ll"
2265TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec2_type);
2266	YY_BREAK
2267case 48:
2268YY_RULE_SETUP
2269#line 368 "../src/compiler/glsl/glsl_lexer.ll"
2270TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec3_type);
2271	YY_BREAK
2272case 49:
2273YY_RULE_SETUP
2274#line 369 "../src/compiler/glsl/glsl_lexer.ll"
2275TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec4_type);
2276	YY_BREAK
2277case 50:
2278YY_RULE_SETUP
2279#line 370 "../src/compiler/glsl/glsl_lexer.ll"
2280{ yylval->type = glsl_type::vec2_type; return BASIC_TYPE_TOK; }
2281	YY_BREAK
2282case 51:
2283YY_RULE_SETUP
2284#line 371 "../src/compiler/glsl/glsl_lexer.ll"
2285{ yylval->type = glsl_type::vec3_type; return BASIC_TYPE_TOK; }
2286	YY_BREAK
2287case 52:
2288YY_RULE_SETUP
2289#line 372 "../src/compiler/glsl/glsl_lexer.ll"
2290{ yylval->type = glsl_type::vec4_type; return BASIC_TYPE_TOK; }
2291	YY_BREAK
2292case 53:
2293YY_RULE_SETUP
2294#line 373 "../src/compiler/glsl/glsl_lexer.ll"
2295{ yylval->type = glsl_type::mat2_type; return BASIC_TYPE_TOK; }
2296	YY_BREAK
2297case 54:
2298YY_RULE_SETUP
2299#line 374 "../src/compiler/glsl/glsl_lexer.ll"
2300{ yylval->type = glsl_type::mat3_type; return BASIC_TYPE_TOK; }
2301	YY_BREAK
2302case 55:
2303YY_RULE_SETUP
2304#line 375 "../src/compiler/glsl/glsl_lexer.ll"
2305{ yylval->type = glsl_type::mat4_type; return BASIC_TYPE_TOK; }
2306	YY_BREAK
2307case 56:
2308YY_RULE_SETUP
2309#line 376 "../src/compiler/glsl/glsl_lexer.ll"
2310TYPE(120, 300, 120, 300, glsl_type::mat2_type);
2311	YY_BREAK
2312case 57:
2313YY_RULE_SETUP
2314#line 377 "../src/compiler/glsl/glsl_lexer.ll"
2315TYPE(120, 300, 120, 300, glsl_type::mat2x3_type);
2316	YY_BREAK
2317case 58:
2318YY_RULE_SETUP
2319#line 378 "../src/compiler/glsl/glsl_lexer.ll"
2320TYPE(120, 300, 120, 300, glsl_type::mat2x4_type);
2321	YY_BREAK
2322case 59:
2323YY_RULE_SETUP
2324#line 379 "../src/compiler/glsl/glsl_lexer.ll"
2325TYPE(120, 300, 120, 300, glsl_type::mat3x2_type);
2326	YY_BREAK
2327case 60:
2328YY_RULE_SETUP
2329#line 380 "../src/compiler/glsl/glsl_lexer.ll"
2330TYPE(120, 300, 120, 300, glsl_type::mat3_type);
2331	YY_BREAK
2332case 61:
2333YY_RULE_SETUP
2334#line 381 "../src/compiler/glsl/glsl_lexer.ll"
2335TYPE(120, 300, 120, 300, glsl_type::mat3x4_type);
2336	YY_BREAK
2337case 62:
2338YY_RULE_SETUP
2339#line 382 "../src/compiler/glsl/glsl_lexer.ll"
2340TYPE(120, 300, 120, 300, glsl_type::mat4x2_type);
2341	YY_BREAK
2342case 63:
2343YY_RULE_SETUP
2344#line 383 "../src/compiler/glsl/glsl_lexer.ll"
2345TYPE(120, 300, 120, 300, glsl_type::mat4x3_type);
2346	YY_BREAK
2347case 64:
2348YY_RULE_SETUP
2349#line 384 "../src/compiler/glsl/glsl_lexer.ll"
2350TYPE(120, 300, 120, 300, glsl_type::mat4_type);
2351	YY_BREAK
2352case 65:
2353YY_RULE_SETUP
2354#line 386 "../src/compiler/glsl/glsl_lexer.ll"
2355return IN_TOK;
2356	YY_BREAK
2357case 66:
2358YY_RULE_SETUP
2359#line 387 "../src/compiler/glsl/glsl_lexer.ll"
2360return OUT_TOK;
2361	YY_BREAK
2362case 67:
2363YY_RULE_SETUP
2364#line 388 "../src/compiler/glsl/glsl_lexer.ll"
2365return INOUT_TOK;
2366	YY_BREAK
2367case 68:
2368YY_RULE_SETUP
2369#line 389 "../src/compiler/glsl/glsl_lexer.ll"
2370return UNIFORM;
2371	YY_BREAK
2372case 69:
2373YY_RULE_SETUP
2374#line 390 "../src/compiler/glsl/glsl_lexer.ll"
2375KEYWORD_WITH_ALT(0, 0, 430, 310, yyextra->ARB_shader_storage_buffer_object_enable, BUFFER);
2376	YY_BREAK
2377case 70:
2378YY_RULE_SETUP
2379#line 391 "../src/compiler/glsl/glsl_lexer.ll"
2380DEPRECATED_ES_KEYWORD(VARYING);
2381	YY_BREAK
2382case 71:
2383YY_RULE_SETUP
2384#line 392 "../src/compiler/glsl/glsl_lexer.ll"
2385KEYWORD_WITH_ALT(120, 300, 120, 300, yyextra->EXT_gpu_shader4_enable, CENTROID);
2386	YY_BREAK
2387case 72:
2388YY_RULE_SETUP
2389#line 393 "../src/compiler/glsl/glsl_lexer.ll"
2390KEYWORD(120, 100, 120, 100, INVARIANT);
2391	YY_BREAK
2392case 73:
2393YY_RULE_SETUP
2394#line 394 "../src/compiler/glsl/glsl_lexer.ll"
2395KEYWORD_WITH_ALT(130, 100, 130, 300, yyextra->EXT_gpu_shader4_enable, FLAT);
2396	YY_BREAK
2397case 74:
2398YY_RULE_SETUP
2399#line 395 "../src/compiler/glsl/glsl_lexer.ll"
2400KEYWORD(130, 300, 130, 300, SMOOTH);
2401	YY_BREAK
2402case 75:
2403YY_RULE_SETUP
2404#line 396 "../src/compiler/glsl/glsl_lexer.ll"
2405KEYWORD_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable, NOPERSPECTIVE);
2406	YY_BREAK
2407case 76:
2408YY_RULE_SETUP
2409#line 397 "../src/compiler/glsl/glsl_lexer.ll"
2410KEYWORD_WITH_ALT(0, 300, 400, 320, yyextra->has_tessellation_shader(), PATCH);
2411	YY_BREAK
2412case 77:
2413YY_RULE_SETUP
2414#line 399 "../src/compiler/glsl/glsl_lexer.ll"
2415DEPRECATED_ES_TYPE(glsl_type::sampler1D_type);
2416	YY_BREAK
2417case 78:
2418YY_RULE_SETUP
2419#line 400 "../src/compiler/glsl/glsl_lexer.ll"
2420{ yylval->type = glsl_type::sampler2D_type; return BASIC_TYPE_TOK; }
2421	YY_BREAK
2422case 79:
2423YY_RULE_SETUP
2424#line 401 "../src/compiler/glsl/glsl_lexer.ll"
2425{ yylval->type = glsl_type::sampler3D_type; return BASIC_TYPE_TOK; }
2426	YY_BREAK
2427case 80:
2428YY_RULE_SETUP
2429#line 402 "../src/compiler/glsl/glsl_lexer.ll"
2430{ yylval->type = glsl_type::samplerCube_type; return BASIC_TYPE_TOK; }
2431	YY_BREAK
2432case 81:
2433YY_RULE_SETUP
2434#line 403 "../src/compiler/glsl/glsl_lexer.ll"
2435TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArray_type);
2436	YY_BREAK
2437case 82:
2438YY_RULE_SETUP
2439#line 404 "../src/compiler/glsl/glsl_lexer.ll"
2440TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArray_type);
2441	YY_BREAK
2442case 83:
2443YY_RULE_SETUP
2444#line 405 "../src/compiler/glsl/glsl_lexer.ll"
2445DEPRECATED_ES_TYPE(glsl_type::sampler1DShadow_type);
2446	YY_BREAK
2447case 84:
2448YY_RULE_SETUP
2449#line 406 "../src/compiler/glsl/glsl_lexer.ll"
2450{ yylval->type = glsl_type::sampler2DShadow_type; return BASIC_TYPE_TOK; }
2451	YY_BREAK
2452case 85:
2453YY_RULE_SETUP
2454#line 407 "../src/compiler/glsl/glsl_lexer.ll"
2455TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::samplerCubeShadow_type);
2456	YY_BREAK
2457case 86:
2458YY_RULE_SETUP
2459#line 408 "../src/compiler/glsl/glsl_lexer.ll"
2460TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArrayShadow_type);
2461	YY_BREAK
2462case 87:
2463YY_RULE_SETUP
2464#line 409 "../src/compiler/glsl/glsl_lexer.ll"
2465TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArrayShadow_type);
2466	YY_BREAK
2467case 88:
2468YY_RULE_SETUP
2469#line 410 "../src/compiler/glsl/glsl_lexer.ll"
2470TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler1D_type);
2471	YY_BREAK
2472case 89:
2473YY_RULE_SETUP
2474#line 411 "../src/compiler/glsl/glsl_lexer.ll"
2475TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2D_type);
2476	YY_BREAK
2477case 90:
2478YY_RULE_SETUP
2479#line 412 "../src/compiler/glsl/glsl_lexer.ll"
2480TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler3D_type);
2481	YY_BREAK
2482case 91:
2483YY_RULE_SETUP
2484#line 413 "../src/compiler/glsl/glsl_lexer.ll"
2485TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isamplerCube_type);
2486	YY_BREAK
2487case 92:
2488YY_RULE_SETUP
2489#line 414 "../src/compiler/glsl/glsl_lexer.ll"
2490TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler1DArray_type);
2491	YY_BREAK
2492case 93:
2493YY_RULE_SETUP
2494#line 415 "../src/compiler/glsl/glsl_lexer.ll"
2495TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler2DArray_type);
2496	YY_BREAK
2497case 94:
2498YY_RULE_SETUP
2499#line 416 "../src/compiler/glsl/glsl_lexer.ll"
2500TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler1D_type);
2501	YY_BREAK
2502case 95:
2503YY_RULE_SETUP
2504#line 417 "../src/compiler/glsl/glsl_lexer.ll"
2505TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2D_type);
2506	YY_BREAK
2507case 96:
2508YY_RULE_SETUP
2509#line 418 "../src/compiler/glsl/glsl_lexer.ll"
2510TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler3D_type);
2511	YY_BREAK
2512case 97:
2513YY_RULE_SETUP
2514#line 419 "../src/compiler/glsl/glsl_lexer.ll"
2515TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usamplerCube_type);
2516	YY_BREAK
2517case 98:
2518YY_RULE_SETUP
2519#line 420 "../src/compiler/glsl/glsl_lexer.ll"
2520TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler1DArray_type);
2521	YY_BREAK
2522case 99:
2523YY_RULE_SETUP
2524#line 421 "../src/compiler/glsl/glsl_lexer.ll"
2525TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler2DArray_type);
2526	YY_BREAK
2527/* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */
2528/* these are reserved but not defined in GLSL 3.00 */
2529/* [iu]sampler2DMS are defined in GLSL ES 3.10 */
2530case 100:
2531YY_RULE_SETUP
2532#line 426 "../src/compiler/glsl/glsl_lexer.ll"
2533TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::sampler2DMS_type);
2534	YY_BREAK
2535case 101:
2536YY_RULE_SETUP
2537#line 427 "../src/compiler/glsl/glsl_lexer.ll"
2538TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::isampler2DMS_type);
2539	YY_BREAK
2540case 102:
2541YY_RULE_SETUP
2542#line 428 "../src/compiler/glsl/glsl_lexer.ll"
2543TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::usampler2DMS_type);
2544	YY_BREAK
2545case 103:
2546YY_RULE_SETUP
2547#line 429 "../src/compiler/glsl/glsl_lexer.ll"
2548TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::sampler2DMSArray_type);
2549	YY_BREAK
2550case 104:
2551YY_RULE_SETUP
2552#line 430 "../src/compiler/glsl/glsl_lexer.ll"
2553TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::isampler2DMSArray_type);
2554	YY_BREAK
2555case 105:
2556YY_RULE_SETUP
2557#line 431 "../src/compiler/glsl/glsl_lexer.ll"
2558TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::usampler2DMSArray_type);
2559	YY_BREAK
2560/* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */
2561case 106:
2562YY_RULE_SETUP
2563#line 434 "../src/compiler/glsl/glsl_lexer.ll"
2564TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArray_type);
2565	YY_BREAK
2566case 107:
2567YY_RULE_SETUP
2568#line 435 "../src/compiler/glsl/glsl_lexer.ll"
2569TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::isamplerCubeArray_type);
2570	YY_BREAK
2571case 108:
2572YY_RULE_SETUP
2573#line 436 "../src/compiler/glsl/glsl_lexer.ll"
2574TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::usamplerCubeArray_type);
2575	YY_BREAK
2576case 109:
2577YY_RULE_SETUP
2578#line 437 "../src/compiler/glsl/glsl_lexer.ll"
2579TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArrayShadow_type);
2580	YY_BREAK
2581case 110:
2582YY_RULE_SETUP
2583#line 439 "../src/compiler/glsl/glsl_lexer.ll"
2584{
2585			  if (yyextra->OES_EGL_image_external_enable || yyextra->OES_EGL_image_external_essl3_enable) {
2586			     yylval->type = glsl_type::samplerExternalOES_type;
2587			     return BASIC_TYPE_TOK;
2588			  } else
2589			     return IDENTIFIER;
2590		}
2591	YY_BREAK
2592/* keywords available with ARB_gpu_shader5 */
2593case 111:
2594YY_RULE_SETUP
2595#line 448 "../src/compiler/glsl/glsl_lexer.ll"
2596KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || yyextra->OES_gpu_shader5_enable, PRECISE);
2597	YY_BREAK
2598/* keywords available with ARB_shader_image_load_store */
2599case 112:
2600YY_RULE_SETUP
2601#line 451 "../src/compiler/glsl/glsl_lexer.ll"
2602TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1D_type);
2603	YY_BREAK
2604case 113:
2605YY_RULE_SETUP
2606#line 452 "../src/compiler/glsl/glsl_lexer.ll"
2607TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2D_type);
2608	YY_BREAK
2609case 114:
2610YY_RULE_SETUP
2611#line 453 "../src/compiler/glsl/glsl_lexer.ll"
2612TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image3D_type);
2613	YY_BREAK
2614case 115:
2615YY_RULE_SETUP
2616#line 454 "../src/compiler/glsl/glsl_lexer.ll"
2617TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DRect_type);
2618	YY_BREAK
2619case 116:
2620YY_RULE_SETUP
2621#line 455 "../src/compiler/glsl/glsl_lexer.ll"
2622TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::imageCube_type);
2623	YY_BREAK
2624case 117:
2625YY_RULE_SETUP
2626#line 456 "../src/compiler/glsl/glsl_lexer.ll"
2627TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::imageBuffer_type);
2628	YY_BREAK
2629case 118:
2630YY_RULE_SETUP
2631#line 457 "../src/compiler/glsl/glsl_lexer.ll"
2632TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1DArray_type);
2633	YY_BREAK
2634case 119:
2635YY_RULE_SETUP
2636#line 458 "../src/compiler/glsl/glsl_lexer.ll"
2637TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DArray_type);
2638	YY_BREAK
2639case 120:
2640YY_RULE_SETUP
2641#line 459 "../src/compiler/glsl/glsl_lexer.ll"
2642TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::imageCubeArray_type);
2643	YY_BREAK
2644case 121:
2645YY_RULE_SETUP
2646#line 460 "../src/compiler/glsl/glsl_lexer.ll"
2647TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMS_type);
2648	YY_BREAK
2649case 122:
2650YY_RULE_SETUP
2651#line 461 "../src/compiler/glsl/glsl_lexer.ll"
2652TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMSArray_type);
2653	YY_BREAK
2654case 123:
2655YY_RULE_SETUP
2656#line 462 "../src/compiler/glsl/glsl_lexer.ll"
2657TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1D_type);
2658	YY_BREAK
2659case 124:
2660YY_RULE_SETUP
2661#line 463 "../src/compiler/glsl/glsl_lexer.ll"
2662TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2D_type);
2663	YY_BREAK
2664case 125:
2665YY_RULE_SETUP
2666#line 464 "../src/compiler/glsl/glsl_lexer.ll"
2667TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage3D_type);
2668	YY_BREAK
2669case 126:
2670YY_RULE_SETUP
2671#line 465 "../src/compiler/glsl/glsl_lexer.ll"
2672TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DRect_type);
2673	YY_BREAK
2674case 127:
2675YY_RULE_SETUP
2676#line 466 "../src/compiler/glsl/glsl_lexer.ll"
2677TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimageCube_type);
2678	YY_BREAK
2679case 128:
2680YY_RULE_SETUP
2681#line 467 "../src/compiler/glsl/glsl_lexer.ll"
2682TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::iimageBuffer_type);
2683	YY_BREAK
2684case 129:
2685YY_RULE_SETUP
2686#line 468 "../src/compiler/glsl/glsl_lexer.ll"
2687TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1DArray_type);
2688	YY_BREAK
2689case 130:
2690YY_RULE_SETUP
2691#line 469 "../src/compiler/glsl/glsl_lexer.ll"
2692TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DArray_type);
2693	YY_BREAK
2694case 131:
2695YY_RULE_SETUP
2696#line 470 "../src/compiler/glsl/glsl_lexer.ll"
2697TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::iimageCubeArray_type);
2698	YY_BREAK
2699case 132:
2700YY_RULE_SETUP
2701#line 471 "../src/compiler/glsl/glsl_lexer.ll"
2702TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMS_type);
2703	YY_BREAK
2704case 133:
2705YY_RULE_SETUP
2706#line 472 "../src/compiler/glsl/glsl_lexer.ll"
2707TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMSArray_type);
2708	YY_BREAK
2709case 134:
2710YY_RULE_SETUP
2711#line 473 "../src/compiler/glsl/glsl_lexer.ll"
2712TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1D_type);
2713	YY_BREAK
2714case 135:
2715YY_RULE_SETUP
2716#line 474 "../src/compiler/glsl/glsl_lexer.ll"
2717TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2D_type);
2718	YY_BREAK
2719case 136:
2720YY_RULE_SETUP
2721#line 475 "../src/compiler/glsl/glsl_lexer.ll"
2722TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage3D_type);
2723	YY_BREAK
2724case 137:
2725YY_RULE_SETUP
2726#line 476 "../src/compiler/glsl/glsl_lexer.ll"
2727TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DRect_type);
2728	YY_BREAK
2729case 138:
2730YY_RULE_SETUP
2731#line 477 "../src/compiler/glsl/glsl_lexer.ll"
2732TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimageCube_type);
2733	YY_BREAK
2734case 139:
2735YY_RULE_SETUP
2736#line 478 "../src/compiler/glsl/glsl_lexer.ll"
2737TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::uimageBuffer_type);
2738	YY_BREAK
2739case 140:
2740YY_RULE_SETUP
2741#line 479 "../src/compiler/glsl/glsl_lexer.ll"
2742TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1DArray_type);
2743	YY_BREAK
2744case 141:
2745YY_RULE_SETUP
2746#line 480 "../src/compiler/glsl/glsl_lexer.ll"
2747TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DArray_type);
2748	YY_BREAK
2749case 142:
2750YY_RULE_SETUP
2751#line 481 "../src/compiler/glsl/glsl_lexer.ll"
2752TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::uimageCubeArray_type);
2753	YY_BREAK
2754case 143:
2755YY_RULE_SETUP
2756#line 482 "../src/compiler/glsl/glsl_lexer.ll"
2757TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMS_type);
2758	YY_BREAK
2759case 144:
2760YY_RULE_SETUP
2761#line 483 "../src/compiler/glsl/glsl_lexer.ll"
2762TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMSArray_type);
2763	YY_BREAK
2764case 145:
2765YY_RULE_SETUP
2766#line 484 "../src/compiler/glsl/glsl_lexer.ll"
2767KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
2768	YY_BREAK
2769case 146:
2770YY_RULE_SETUP
2771#line 485 "../src/compiler/glsl/glsl_lexer.ll"
2772KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
2773	YY_BREAK
2774case 147:
2775YY_RULE_SETUP
2776#line 486 "../src/compiler/glsl/glsl_lexer.ll"
2777KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
2778	YY_BREAK
2779case 148:
2780YY_RULE_SETUP
2781#line 487 "../src/compiler/glsl/glsl_lexer.ll"
2782KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
2783	YY_BREAK
2784case 149:
2785YY_RULE_SETUP
2786#line 489 "../src/compiler/glsl/glsl_lexer.ll"
2787KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, COHERENT);
2788	YY_BREAK
2789case 150:
2790YY_RULE_SETUP
2791#line 490 "../src/compiler/glsl/glsl_lexer.ll"
2792KEYWORD_WITH_ALT(110, 100, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, VOLATILE);
2793	YY_BREAK
2794case 151:
2795YY_RULE_SETUP
2796#line 491 "../src/compiler/glsl/glsl_lexer.ll"
2797KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, RESTRICT);
2798	YY_BREAK
2799case 152:
2800YY_RULE_SETUP
2801#line 492 "../src/compiler/glsl/glsl_lexer.ll"
2802KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, READONLY);
2803	YY_BREAK
2804case 153:
2805YY_RULE_SETUP
2806#line 493 "../src/compiler/glsl/glsl_lexer.ll"
2807KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, WRITEONLY);
2808	YY_BREAK
2809case 154:
2810YY_RULE_SETUP
2811#line 495 "../src/compiler/glsl/glsl_lexer.ll"
2812TYPE_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, glsl_type::atomic_uint_type);
2813	YY_BREAK
2814case 155:
2815YY_RULE_SETUP
2816#line 497 "../src/compiler/glsl/glsl_lexer.ll"
2817KEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED);
2818	YY_BREAK
2819case 156:
2820YY_RULE_SETUP
2821#line 499 "../src/compiler/glsl/glsl_lexer.ll"
2822return STRUCT;
2823	YY_BREAK
2824case 157:
2825YY_RULE_SETUP
2826#line 500 "../src/compiler/glsl/glsl_lexer.ll"
2827return VOID_TOK;
2828	YY_BREAK
2829case 158:
2830YY_RULE_SETUP
2831#line 502 "../src/compiler/glsl/glsl_lexer.ll"
2832{
2833		  if ((yyextra->is_version(140, 300))
2834		      || yyextra->ARB_bindless_texture_enable
2835		      || yyextra->KHR_blend_equation_advanced_enable
2836		      || yyextra->AMD_conservative_depth_enable
2837		      || yyextra->ARB_conservative_depth_enable
2838		      || yyextra->ARB_explicit_attrib_location_enable
2839		      || yyextra->ARB_explicit_uniform_location_enable
2840                      || yyextra->ARB_post_depth_coverage_enable
2841                      || yyextra->has_separate_shader_objects()
2842		      || yyextra->ARB_uniform_buffer_object_enable
2843		      || yyextra->ARB_fragment_coord_conventions_enable
2844                      || yyextra->ARB_shading_language_420pack_enable
2845                      || yyextra->ARB_compute_shader_enable
2846                      || yyextra->ARB_tessellation_shader_enable
2847                      || yyextra->EXT_shader_framebuffer_fetch_non_coherent_enable) {
2848		      return LAYOUT_TOK;
2849		   } else {
2850		      return classify_identifier(yyextra, yytext, yyleng, yylval);
2851		   }
2852		}
2853	YY_BREAK
2854case 159:
2855YY_RULE_SETUP
2856#line 524 "../src/compiler/glsl/glsl_lexer.ll"
2857return INC_OP;
2858	YY_BREAK
2859case 160:
2860YY_RULE_SETUP
2861#line 525 "../src/compiler/glsl/glsl_lexer.ll"
2862return DEC_OP;
2863	YY_BREAK
2864case 161:
2865YY_RULE_SETUP
2866#line 526 "../src/compiler/glsl/glsl_lexer.ll"
2867return LE_OP;
2868	YY_BREAK
2869case 162:
2870YY_RULE_SETUP
2871#line 527 "../src/compiler/glsl/glsl_lexer.ll"
2872return GE_OP;
2873	YY_BREAK
2874case 163:
2875YY_RULE_SETUP
2876#line 528 "../src/compiler/glsl/glsl_lexer.ll"
2877return EQ_OP;
2878	YY_BREAK
2879case 164:
2880YY_RULE_SETUP
2881#line 529 "../src/compiler/glsl/glsl_lexer.ll"
2882return NE_OP;
2883	YY_BREAK
2884case 165:
2885YY_RULE_SETUP
2886#line 530 "../src/compiler/glsl/glsl_lexer.ll"
2887return AND_OP;
2888	YY_BREAK
2889case 166:
2890YY_RULE_SETUP
2891#line 531 "../src/compiler/glsl/glsl_lexer.ll"
2892return OR_OP;
2893	YY_BREAK
2894case 167:
2895YY_RULE_SETUP
2896#line 532 "../src/compiler/glsl/glsl_lexer.ll"
2897return XOR_OP;
2898	YY_BREAK
2899case 168:
2900YY_RULE_SETUP
2901#line 533 "../src/compiler/glsl/glsl_lexer.ll"
2902return LEFT_OP;
2903	YY_BREAK
2904case 169:
2905YY_RULE_SETUP
2906#line 534 "../src/compiler/glsl/glsl_lexer.ll"
2907return RIGHT_OP;
2908	YY_BREAK
2909case 170:
2910YY_RULE_SETUP
2911#line 536 "../src/compiler/glsl/glsl_lexer.ll"
2912return MUL_ASSIGN;
2913	YY_BREAK
2914case 171:
2915YY_RULE_SETUP
2916#line 537 "../src/compiler/glsl/glsl_lexer.ll"
2917return DIV_ASSIGN;
2918	YY_BREAK
2919case 172:
2920YY_RULE_SETUP
2921#line 538 "../src/compiler/glsl/glsl_lexer.ll"
2922return ADD_ASSIGN;
2923	YY_BREAK
2924case 173:
2925YY_RULE_SETUP
2926#line 539 "../src/compiler/glsl/glsl_lexer.ll"
2927return MOD_ASSIGN;
2928	YY_BREAK
2929case 174:
2930YY_RULE_SETUP
2931#line 540 "../src/compiler/glsl/glsl_lexer.ll"
2932return LEFT_ASSIGN;
2933	YY_BREAK
2934case 175:
2935YY_RULE_SETUP
2936#line 541 "../src/compiler/glsl/glsl_lexer.ll"
2937return RIGHT_ASSIGN;
2938	YY_BREAK
2939case 176:
2940YY_RULE_SETUP
2941#line 542 "../src/compiler/glsl/glsl_lexer.ll"
2942return AND_ASSIGN;
2943	YY_BREAK
2944case 177:
2945YY_RULE_SETUP
2946#line 543 "../src/compiler/glsl/glsl_lexer.ll"
2947return XOR_ASSIGN;
2948	YY_BREAK
2949case 178:
2950YY_RULE_SETUP
2951#line 544 "../src/compiler/glsl/glsl_lexer.ll"
2952return OR_ASSIGN;
2953	YY_BREAK
2954case 179:
2955YY_RULE_SETUP
2956#line 545 "../src/compiler/glsl/glsl_lexer.ll"
2957return SUB_ASSIGN;
2958	YY_BREAK
2959case 180:
2960YY_RULE_SETUP
2961#line 547 "../src/compiler/glsl/glsl_lexer.ll"
2962{
2963			    return LITERAL_INTEGER(10);
2964			}
2965	YY_BREAK
2966case 181:
2967YY_RULE_SETUP
2968#line 550 "../src/compiler/glsl/glsl_lexer.ll"
2969{
2970			    return LITERAL_INTEGER(16);
2971			}
2972	YY_BREAK
2973case 182:
2974YY_RULE_SETUP
2975#line 553 "../src/compiler/glsl/glsl_lexer.ll"
2976{
2977			    return LITERAL_INTEGER(8);
2978			}
2979	YY_BREAK
2980case 183:
2981#line 558 "../src/compiler/glsl/glsl_lexer.ll"
2982case 184:
2983#line 559 "../src/compiler/glsl/glsl_lexer.ll"
2984case 185:
2985#line 560 "../src/compiler/glsl/glsl_lexer.ll"
2986case 186:
2987YY_RULE_SETUP
2988#line 560 "../src/compiler/glsl/glsl_lexer.ll"
2989{
2990			    struct _mesa_glsl_parse_state *state = yyextra;
2991			    char suffix = yytext[strlen(yytext) - 1];
2992			    if (!state->is_version(120, 300) &&
2993			        (suffix == 'f' || suffix == 'F')) {
2994			        _mesa_glsl_warning(yylloc, state,
2995			                           "Float suffixes are invalid in GLSL 1.10");
2996			    }
2997			    yylval->real = _mesa_strtof(yytext, NULL);
2998			    return FLOATCONSTANT;
2999			}
3000	YY_BREAK
3001case 187:
3002#line 573 "../src/compiler/glsl/glsl_lexer.ll"
3003case 188:
3004#line 574 "../src/compiler/glsl/glsl_lexer.ll"
3005case 189:
3006#line 575 "../src/compiler/glsl/glsl_lexer.ll"
3007case 190:
3008YY_RULE_SETUP
3009#line 575 "../src/compiler/glsl/glsl_lexer.ll"
3010{
3011			    if (!yyextra->is_version(400, 0) &&
3012			        !yyextra->ARB_gpu_shader_fp64_enable)
3013			        return ERROR_TOK;
3014			    yylval->dreal = _mesa_strtod(yytext, NULL);
3015			    return DOUBLECONSTANT;
3016			}
3017	YY_BREAK
3018case 191:
3019YY_RULE_SETUP
3020#line 583 "../src/compiler/glsl/glsl_lexer.ll"
3021{
3022			    yylval->n = 1;
3023			    return BOOLCONSTANT;
3024			}
3025	YY_BREAK
3026case 192:
3027YY_RULE_SETUP
3028#line 587 "../src/compiler/glsl/glsl_lexer.ll"
3029{
3030			    yylval->n = 0;
3031			    return BOOLCONSTANT;
3032			}
3033	YY_BREAK
3034/* Reserved words in GLSL 1.10. */
3035case 193:
3036YY_RULE_SETUP
3037#line 594 "../src/compiler/glsl/glsl_lexer.ll"
3038KEYWORD(110, 100, 0, 0, ASM);
3039	YY_BREAK
3040case 194:
3041YY_RULE_SETUP
3042#line 595 "../src/compiler/glsl/glsl_lexer.ll"
3043KEYWORD(110, 100, 0, 0, CLASS);
3044	YY_BREAK
3045case 195:
3046YY_RULE_SETUP
3047#line 596 "../src/compiler/glsl/glsl_lexer.ll"
3048KEYWORD(110, 100, 0, 0, UNION);
3049	YY_BREAK
3050case 196:
3051YY_RULE_SETUP
3052#line 597 "../src/compiler/glsl/glsl_lexer.ll"
3053KEYWORD(110, 100, 0, 0, ENUM);
3054	YY_BREAK
3055case 197:
3056YY_RULE_SETUP
3057#line 598 "../src/compiler/glsl/glsl_lexer.ll"
3058KEYWORD(110, 100, 0, 0, TYPEDEF);
3059	YY_BREAK
3060case 198:
3061YY_RULE_SETUP
3062#line 599 "../src/compiler/glsl/glsl_lexer.ll"
3063KEYWORD(110, 100, 0, 0, TEMPLATE);
3064	YY_BREAK
3065case 199:
3066YY_RULE_SETUP
3067#line 600 "../src/compiler/glsl/glsl_lexer.ll"
3068KEYWORD(110, 100, 0, 0, THIS);
3069	YY_BREAK
3070case 200:
3071YY_RULE_SETUP
3072#line 601 "../src/compiler/glsl/glsl_lexer.ll"
3073KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK);
3074	YY_BREAK
3075case 201:
3076YY_RULE_SETUP
3077#line 602 "../src/compiler/glsl/glsl_lexer.ll"
3078KEYWORD(110, 100, 0, 0, GOTO);
3079	YY_BREAK
3080case 202:
3081YY_RULE_SETUP
3082#line 603 "../src/compiler/glsl/glsl_lexer.ll"
3083KEYWORD(110, 100, 130, 300, SWITCH);
3084	YY_BREAK
3085case 203:
3086YY_RULE_SETUP
3087#line 604 "../src/compiler/glsl/glsl_lexer.ll"
3088KEYWORD(110, 100, 130, 300, DEFAULT);
3089	YY_BREAK
3090case 204:
3091YY_RULE_SETUP
3092#line 605 "../src/compiler/glsl/glsl_lexer.ll"
3093KEYWORD(110, 100, 0, 0, INLINE_TOK);
3094	YY_BREAK
3095case 205:
3096YY_RULE_SETUP
3097#line 606 "../src/compiler/glsl/glsl_lexer.ll"
3098KEYWORD(110, 100, 0, 0, NOINLINE);
3099	YY_BREAK
3100case 206:
3101YY_RULE_SETUP
3102#line 607 "../src/compiler/glsl/glsl_lexer.ll"
3103KEYWORD(110, 100, 0, 0, PUBLIC_TOK);
3104	YY_BREAK
3105case 207:
3106YY_RULE_SETUP
3107#line 608 "../src/compiler/glsl/glsl_lexer.ll"
3108KEYWORD(110, 100, 0, 0, STATIC);
3109	YY_BREAK
3110case 208:
3111YY_RULE_SETUP
3112#line 609 "../src/compiler/glsl/glsl_lexer.ll"
3113KEYWORD(110, 100, 0, 0, EXTERN);
3114	YY_BREAK
3115case 209:
3116YY_RULE_SETUP
3117#line 610 "../src/compiler/glsl/glsl_lexer.ll"
3118KEYWORD(110, 100, 0, 0, EXTERNAL);
3119	YY_BREAK
3120case 210:
3121YY_RULE_SETUP
3122#line 611 "../src/compiler/glsl/glsl_lexer.ll"
3123KEYWORD(110, 100, 0, 0, INTERFACE);
3124	YY_BREAK
3125case 211:
3126YY_RULE_SETUP
3127#line 612 "../src/compiler/glsl/glsl_lexer.ll"
3128KEYWORD(110, 100, 0, 0, LONG_TOK);
3129	YY_BREAK
3130case 212:
3131YY_RULE_SETUP
3132#line 613 "../src/compiler/glsl/glsl_lexer.ll"
3133KEYWORD(110, 100, 0, 0, SHORT_TOK);
3134	YY_BREAK
3135case 213:
3136YY_RULE_SETUP
3137#line 614 "../src/compiler/glsl/glsl_lexer.ll"
3138TYPE_WITH_ALT(130, 100, 130, 300, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::double_type);
3139	YY_BREAK
3140case 214:
3141YY_RULE_SETUP
3142#line 615 "../src/compiler/glsl/glsl_lexer.ll"
3143KEYWORD(110, 100, 0, 0, HALF);
3144	YY_BREAK
3145case 215:
3146YY_RULE_SETUP
3147#line 616 "../src/compiler/glsl/glsl_lexer.ll"
3148KEYWORD(110, 100, 0, 0, FIXED_TOK);
3149	YY_BREAK
3150case 216:
3151YY_RULE_SETUP
3152#line 617 "../src/compiler/glsl/glsl_lexer.ll"
3153KEYWORD_WITH_ALT(110, 100, 0, 0, yyextra->EXT_gpu_shader4_enable, UNSIGNED);
3154	YY_BREAK
3155case 217:
3156YY_RULE_SETUP
3157#line 618 "../src/compiler/glsl/glsl_lexer.ll"
3158KEYWORD(110, 100, 0, 0, INPUT_TOK);
3159	YY_BREAK
3160case 218:
3161YY_RULE_SETUP
3162#line 619 "../src/compiler/glsl/glsl_lexer.ll"
3163KEYWORD(110, 100, 0, 0, OUTPUT);
3164	YY_BREAK
3165case 219:
3166YY_RULE_SETUP
3167#line 620 "../src/compiler/glsl/glsl_lexer.ll"
3168KEYWORD(110, 100, 0, 0, HVEC2);
3169	YY_BREAK
3170case 220:
3171YY_RULE_SETUP
3172#line 621 "../src/compiler/glsl/glsl_lexer.ll"
3173KEYWORD(110, 100, 0, 0, HVEC3);
3174	YY_BREAK
3175case 221:
3176YY_RULE_SETUP
3177#line 622 "../src/compiler/glsl/glsl_lexer.ll"
3178KEYWORD(110, 100, 0, 0, HVEC4);
3179	YY_BREAK
3180case 222:
3181YY_RULE_SETUP
3182#line 623 "../src/compiler/glsl/glsl_lexer.ll"
3183TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec2_type);
3184	YY_BREAK
3185case 223:
3186YY_RULE_SETUP
3187#line 624 "../src/compiler/glsl/glsl_lexer.ll"
3188TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec3_type);
3189	YY_BREAK
3190case 224:
3191YY_RULE_SETUP
3192#line 625 "../src/compiler/glsl/glsl_lexer.ll"
3193TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec4_type);
3194	YY_BREAK
3195case 225:
3196YY_RULE_SETUP
3197#line 626 "../src/compiler/glsl/glsl_lexer.ll"
3198TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
3199	YY_BREAK
3200case 226:
3201YY_RULE_SETUP
3202#line 627 "../src/compiler/glsl/glsl_lexer.ll"
3203TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
3204	YY_BREAK
3205case 227:
3206YY_RULE_SETUP
3207#line 628 "../src/compiler/glsl/glsl_lexer.ll"
3208TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
3209	YY_BREAK
3210case 228:
3211YY_RULE_SETUP
3212#line 629 "../src/compiler/glsl/glsl_lexer.ll"
3213TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
3214	YY_BREAK
3215case 229:
3216YY_RULE_SETUP
3217#line 630 "../src/compiler/glsl/glsl_lexer.ll"
3218TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x3_type);
3219	YY_BREAK
3220case 230:
3221YY_RULE_SETUP
3222#line 631 "../src/compiler/glsl/glsl_lexer.ll"
3223TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x4_type);
3224	YY_BREAK
3225case 231:
3226YY_RULE_SETUP
3227#line 632 "../src/compiler/glsl/glsl_lexer.ll"
3228TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x2_type);
3229	YY_BREAK
3230case 232:
3231YY_RULE_SETUP
3232#line 633 "../src/compiler/glsl/glsl_lexer.ll"
3233TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
3234	YY_BREAK
3235case 233:
3236YY_RULE_SETUP
3237#line 634 "../src/compiler/glsl/glsl_lexer.ll"
3238TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x4_type);
3239	YY_BREAK
3240case 234:
3241YY_RULE_SETUP
3242#line 635 "../src/compiler/glsl/glsl_lexer.ll"
3243TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x2_type);
3244	YY_BREAK
3245case 235:
3246YY_RULE_SETUP
3247#line 636 "../src/compiler/glsl/glsl_lexer.ll"
3248TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x3_type);
3249	YY_BREAK
3250case 236:
3251YY_RULE_SETUP
3252#line 637 "../src/compiler/glsl/glsl_lexer.ll"
3253TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
3254	YY_BREAK
3255case 237:
3256YY_RULE_SETUP
3257#line 638 "../src/compiler/glsl/glsl_lexer.ll"
3258KEYWORD(110, 100, 0, 0, FVEC2);
3259	YY_BREAK
3260case 238:
3261YY_RULE_SETUP
3262#line 639 "../src/compiler/glsl/glsl_lexer.ll"
3263KEYWORD(110, 100, 0, 0, FVEC3);
3264	YY_BREAK
3265case 239:
3266YY_RULE_SETUP
3267#line 640 "../src/compiler/glsl/glsl_lexer.ll"
3268KEYWORD(110, 100, 0, 0, FVEC4);
3269	YY_BREAK
3270case 240:
3271YY_RULE_SETUP
3272#line 641 "../src/compiler/glsl/glsl_lexer.ll"
3273TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRect_type);
3274	YY_BREAK
3275case 241:
3276YY_RULE_SETUP
3277#line 642 "../src/compiler/glsl/glsl_lexer.ll"
3278KEYWORD(110, 100, 0, 0, SAMPLER3DRECT);
3279	YY_BREAK
3280case 242:
3281YY_RULE_SETUP
3282#line 643 "../src/compiler/glsl/glsl_lexer.ll"
3283TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRectShadow_type);
3284	YY_BREAK
3285case 243:
3286YY_RULE_SETUP
3287#line 644 "../src/compiler/glsl/glsl_lexer.ll"
3288KEYWORD(110, 100, 0, 0, SIZEOF);
3289	YY_BREAK
3290case 244:
3291YY_RULE_SETUP
3292#line 645 "../src/compiler/glsl/glsl_lexer.ll"
3293KEYWORD(110, 100, 0, 0, CAST);
3294	YY_BREAK
3295case 245:
3296YY_RULE_SETUP
3297#line 646 "../src/compiler/glsl/glsl_lexer.ll"
3298KEYWORD(110, 100, 0, 0, NAMESPACE);
3299	YY_BREAK
3300case 246:
3301YY_RULE_SETUP
3302#line 647 "../src/compiler/glsl/glsl_lexer.ll"
3303KEYWORD(110, 100, 0, 0, USING);
3304	YY_BREAK
3305/* Additional reserved words in GLSL 1.20. */
3306case 247:
3307YY_RULE_SETUP
3308#line 650 "../src/compiler/glsl/glsl_lexer.ll"
3309KEYWORD(120, 100, 130, 100, LOWP);
3310	YY_BREAK
3311case 248:
3312YY_RULE_SETUP
3313#line 651 "../src/compiler/glsl/glsl_lexer.ll"
3314KEYWORD(120, 100, 130, 100, MEDIUMP);
3315	YY_BREAK
3316case 249:
3317YY_RULE_SETUP
3318#line 652 "../src/compiler/glsl/glsl_lexer.ll"
3319KEYWORD(120, 100, 130, 100, HIGHP);
3320	YY_BREAK
3321case 250:
3322YY_RULE_SETUP
3323#line 653 "../src/compiler/glsl/glsl_lexer.ll"
3324KEYWORD(120, 100, 130, 100, PRECISION);
3325	YY_BREAK
3326/* Additional reserved words in GLSL 1.30. */
3327case 251:
3328YY_RULE_SETUP
3329#line 656 "../src/compiler/glsl/glsl_lexer.ll"
3330KEYWORD(130, 300, 130, 300, CASE);
3331	YY_BREAK
3332case 252:
3333YY_RULE_SETUP
3334#line 657 "../src/compiler/glsl/glsl_lexer.ll"
3335KEYWORD(130, 300, 0, 0, COMMON);
3336	YY_BREAK
3337case 253:
3338YY_RULE_SETUP
3339#line 658 "../src/compiler/glsl/glsl_lexer.ll"
3340KEYWORD(130, 300, 0, 0, PARTITION);
3341	YY_BREAK
3342case 254:
3343YY_RULE_SETUP
3344#line 659 "../src/compiler/glsl/glsl_lexer.ll"
3345KEYWORD(130, 300, 0, 0, ACTIVE);
3346	YY_BREAK
3347case 255:
3348YY_RULE_SETUP
3349#line 660 "../src/compiler/glsl/glsl_lexer.ll"
3350KEYWORD(130, 100, 0, 0, SUPERP);
3351	YY_BREAK
3352case 256:
3353YY_RULE_SETUP
3354#line 661 "../src/compiler/glsl/glsl_lexer.ll"
3355TYPE_WITH_ALT(130, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object), glsl_type::samplerBuffer_type);
3356	YY_BREAK
3357case 257:
3358YY_RULE_SETUP
3359#line 662 "../src/compiler/glsl/glsl_lexer.ll"
3360KEYWORD(130, 300, 0, 0, FILTER);
3361	YY_BREAK
3362case 258:
3363YY_RULE_SETUP
3364#line 663 "../src/compiler/glsl/glsl_lexer.ll"
3365KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
3366	YY_BREAK
3367/* Additional reserved words in GLSL 1.40 */
3368case 259:
3369YY_RULE_SETUP
3370#line 666 "../src/compiler/glsl/glsl_lexer.ll"
3371TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2DRect_type);
3372	YY_BREAK
3373case 260:
3374YY_RULE_SETUP
3375#line 667 "../src/compiler/glsl/glsl_lexer.ll"
3376TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2DRect_type);
3377	YY_BREAK
3378case 261:
3379YY_RULE_SETUP
3380#line 668 "../src/compiler/glsl/glsl_lexer.ll"
3381TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::isamplerBuffer_type);
3382	YY_BREAK
3383case 262:
3384YY_RULE_SETUP
3385#line 669 "../src/compiler/glsl/glsl_lexer.ll"
3386TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::usamplerBuffer_type);
3387	YY_BREAK
3388/* Additional reserved words in GLSL ES 3.00 */
3389case 263:
3390YY_RULE_SETUP
3391#line 672 "../src/compiler/glsl/glsl_lexer.ll"
3392KEYWORD(420, 300, 0, 0, RESOURCE);
3393	YY_BREAK
3394case 264:
3395YY_RULE_SETUP
3396#line 673 "../src/compiler/glsl/glsl_lexer.ll"
3397KEYWORD_WITH_ALT(400, 300, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->OES_shader_multisample_interpolation_enable, SAMPLE);
3398	YY_BREAK
3399case 265:
3400YY_RULE_SETUP
3401#line 674 "../src/compiler/glsl/glsl_lexer.ll"
3402KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_shader_subroutine_enable, SUBROUTINE);
3403	YY_BREAK
3404/* Additional words for ARB_gpu_shader_int64 */
3405case 266:
3406YY_RULE_SETUP
3407#line 677 "../src/compiler/glsl/glsl_lexer.ll"
3408TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::int64_t_type);
3409	YY_BREAK
3410case 267:
3411YY_RULE_SETUP
3412#line 678 "../src/compiler/glsl/glsl_lexer.ll"
3413TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec2_type);
3414	YY_BREAK
3415case 268:
3416YY_RULE_SETUP
3417#line 679 "../src/compiler/glsl/glsl_lexer.ll"
3418TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec3_type);
3419	YY_BREAK
3420case 269:
3421YY_RULE_SETUP
3422#line 680 "../src/compiler/glsl/glsl_lexer.ll"
3423TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec4_type);
3424	YY_BREAK
3425case 270:
3426YY_RULE_SETUP
3427#line 682 "../src/compiler/glsl/glsl_lexer.ll"
3428TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type);
3429	YY_BREAK
3430case 271:
3431YY_RULE_SETUP
3432#line 683 "../src/compiler/glsl/glsl_lexer.ll"
3433TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec2_type);
3434	YY_BREAK
3435case 272:
3436YY_RULE_SETUP
3437#line 684 "../src/compiler/glsl/glsl_lexer.ll"
3438TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec3_type);
3439	YY_BREAK
3440case 273:
3441YY_RULE_SETUP
3442#line 685 "../src/compiler/glsl/glsl_lexer.ll"
3443TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec4_type);
3444	YY_BREAK
3445case 274:
3446YY_RULE_SETUP
3447#line 687 "../src/compiler/glsl/glsl_lexer.ll"
3448{
3449			    struct _mesa_glsl_parse_state *state = yyextra;
3450			    if (state->es_shader && yyleng > 1024) {
3451			       _mesa_glsl_error(yylloc, state,
3452			                        "Identifier `%s' exceeds 1024 characters",
3453			                        yytext);
3454			    }
3455			    return classify_identifier(state, yytext, yyleng, yylval);
3456			}
3457	YY_BREAK
3458case 275:
3459YY_RULE_SETUP
3460#line 697 "../src/compiler/glsl/glsl_lexer.ll"
3461{ struct _mesa_glsl_parse_state *state = yyextra;
3462			  state->is_field = true;
3463			  return DOT_TOK; }
3464	YY_BREAK
3465case 276:
3466YY_RULE_SETUP
3467#line 701 "../src/compiler/glsl/glsl_lexer.ll"
3468{ return yytext[0]; }
3469	YY_BREAK
3470case 277:
3471YY_RULE_SETUP
3472#line 703 "../src/compiler/glsl/glsl_lexer.ll"
3473YY_FATAL_ERROR( "flex scanner jammed" );
3474	YY_BREAK
3475#line 3475 "src/compiler/glsl/glsl_lexer.cpp"
3476case YY_STATE_EOF(INITIAL):
3477case YY_STATE_EOF(PP):
3478case YY_STATE_EOF(PRAGMA):
3479	yyterminate();
3480
3481	case YY_END_OF_BUFFER:
3482		{
3483		/* Amount of text matched not including the EOB char. */
3484		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
3485
3486		/* Undo the effects of YY_DO_BEFORE_ACTION. */
3487		*yy_cp = yyg->yy_hold_char;
3488		YY_RESTORE_YY_MORE_OFFSET
3489
3490		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3491			{
3492			/* We're scanning a new file or input source.  It's
3493			 * possible that this happened because the user
3494			 * just pointed yyin at a new source and called
3495			 * yylex().  If so, then we have to assure
3496			 * consistency between YY_CURRENT_BUFFER and our
3497			 * globals.  Here is the right place to do so, because
3498			 * this is the first action (other than possibly a
3499			 * back-up) that will match for the new input source.
3500			 */
3501			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3502			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3503			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3504			}
3505
3506		/* Note that here we test for yy_c_buf_p "<=" to the position
3507		 * of the first EOB in the buffer, since yy_c_buf_p will
3508		 * already have been incremented past the NUL character
3509		 * (since all states make transitions on EOB to the
3510		 * end-of-buffer state).  Contrast this with the test
3511		 * in input().
3512		 */
3513		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
3514			{ /* This was really a NUL. */
3515			yy_state_type yy_next_state;
3516
3517			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
3518
3519			yy_current_state = yy_get_previous_state( yyscanner );
3520
3521			/* Okay, we're now positioned to make the NUL
3522			 * transition.  We couldn't have
3523			 * yy_get_previous_state() go ahead and do it
3524			 * for us because it doesn't know how to deal
3525			 * with the possibility of jamming (and we don't
3526			 * want to build jamming into it because then it
3527			 * will run more slowly).
3528			 */
3529
3530			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
3531
3532			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3533
3534			if ( yy_next_state )
3535				{
3536				/* Consume the NUL. */
3537				yy_cp = ++yyg->yy_c_buf_p;
3538				yy_current_state = yy_next_state;
3539				goto yy_match;
3540				}
3541
3542			else
3543				{
3544				yy_cp = yyg->yy_last_accepting_cpos;
3545				yy_current_state = yyg->yy_last_accepting_state;
3546				goto yy_find_action;
3547				}
3548			}
3549
3550		else switch ( yy_get_next_buffer( yyscanner ) )
3551			{
3552			case EOB_ACT_END_OF_FILE:
3553				{
3554				yyg->yy_did_buffer_switch_on_eof = 0;
3555
3556				if ( yywrap( yyscanner ) )
3557					{
3558					/* Note: because we've taken care in
3559					 * yy_get_next_buffer() to have set up
3560					 * yytext, we can now set up
3561					 * yy_c_buf_p so that if some total
3562					 * hoser (like flex itself) wants to
3563					 * call the scanner after we return the
3564					 * YY_NULL, it'll still work - another
3565					 * YY_NULL will get returned.
3566					 */
3567					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
3568
3569					yy_act = YY_STATE_EOF(YY_START);
3570					goto do_action;
3571					}
3572
3573				else
3574					{
3575					if ( ! yyg->yy_did_buffer_switch_on_eof )
3576						YY_NEW_FILE;
3577					}
3578				break;
3579				}
3580
3581			case EOB_ACT_CONTINUE_SCAN:
3582				yyg->yy_c_buf_p =
3583					yyg->yytext_ptr + yy_amount_of_matched_text;
3584
3585				yy_current_state = yy_get_previous_state( yyscanner );
3586
3587				yy_cp = yyg->yy_c_buf_p;
3588				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3589				goto yy_match;
3590
3591			case EOB_ACT_LAST_MATCH:
3592				yyg->yy_c_buf_p =
3593				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
3594
3595				yy_current_state = yy_get_previous_state( yyscanner );
3596
3597				yy_cp = yyg->yy_c_buf_p;
3598				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
3599				goto yy_find_action;
3600			}
3601		break;
3602		}
3603
3604	default:
3605		YY_FATAL_ERROR(
3606			"fatal flex scanner internal error--no action found" );
3607	} /* end of action switch */
3608		} /* end of scanning one token */
3609	} /* end of user's declarations */
3610} /* end of yylex */
3611
3612/* yy_get_next_buffer - try to read in a new buffer
3613 *
3614 * Returns a code representing an action:
3615 *	EOB_ACT_LAST_MATCH -
3616 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3617 *	EOB_ACT_END_OF_FILE - end of file
3618 */
3619static int yy_get_next_buffer (yyscan_t yyscanner)
3620{
3621    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3622	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3623	char *source = yyg->yytext_ptr;
3624	yy_size_t number_to_move, i;
3625	int ret_val;
3626
3627	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
3628		YY_FATAL_ERROR(
3629		"fatal flex scanner internal error--end of buffer missed" );
3630
3631	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3632		{ /* Don't try to fill the buffer, so this is an EOF. */
3633		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
3634			{
3635			/* We matched a single character, the EOB, so
3636			 * treat this as a final EOF.
3637			 */
3638			return EOB_ACT_END_OF_FILE;
3639			}
3640
3641		else
3642			{
3643			/* We matched some text prior to the EOB, first
3644			 * process it.
3645			 */
3646			return EOB_ACT_LAST_MATCH;
3647			}
3648		}
3649
3650	/* Try to read more data. */
3651
3652	/* First move last chars to start of buffer. */
3653	number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
3654
3655	for ( i = 0; i < number_to_move; ++i )
3656		*(dest++) = *(source++);
3657
3658	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3659		/* don't do the read, it's not guaranteed to return an EOF,
3660		 * just force an EOF
3661		 */
3662		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
3663
3664	else
3665		{
3666			yy_size_t num_to_read =
3667			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3668
3669		while ( num_to_read <= 0 )
3670			{ /* Not enough room in the buffer - grow it. */
3671
3672			/* just a shorter name for the current buffer */
3673			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
3674
3675			int yy_c_buf_p_offset =
3676				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
3677
3678			if ( b->yy_is_our_buffer )
3679				{
3680				yy_size_t new_size = b->yy_buf_size * 2;
3681
3682				if ( new_size <= 0 )
3683					b->yy_buf_size += b->yy_buf_size / 8;
3684				else
3685					b->yy_buf_size *= 2;
3686
3687				b->yy_ch_buf = (char *)
3688					/* Include room in for 2 EOB chars. */
3689					yyrealloc( (void *) b->yy_ch_buf,
3690							 (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
3691				}
3692			else
3693				/* Can't grow it, we don't own it. */
3694				b->yy_ch_buf = NULL;
3695
3696			if ( ! b->yy_ch_buf )
3697				YY_FATAL_ERROR(
3698				"fatal error - scanner input buffer overflow" );
3699
3700			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3701
3702			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3703						number_to_move - 1;
3704
3705			}
3706
3707		if ( num_to_read > YY_READ_BUF_SIZE )
3708			num_to_read = YY_READ_BUF_SIZE;
3709
3710		/* Read in more data. */
3711		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3712			yyg->yy_n_chars, num_to_read );
3713
3714		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3715		}
3716
3717	if ( yyg->yy_n_chars == 0 )
3718		{
3719		if ( number_to_move == YY_MORE_ADJ )
3720			{
3721			ret_val = EOB_ACT_END_OF_FILE;
3722			yyrestart( yyin  , yyscanner);
3723			}
3724
3725		else
3726			{
3727			ret_val = EOB_ACT_LAST_MATCH;
3728			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3729				YY_BUFFER_EOF_PENDING;
3730			}
3731		}
3732
3733	else
3734		ret_val = EOB_ACT_CONTINUE_SCAN;
3735
3736	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3737		/* Extend the array by 50%, plus the number we really need. */
3738		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
3739		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
3740			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
3741		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3742			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3743		/* "- 2" to take care of EOB's */
3744		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (yy_size_t) (new_size - 2);
3745	}
3746
3747	yyg->yy_n_chars += number_to_move;
3748	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3749	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3750
3751	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3752
3753	return ret_val;
3754}
3755
3756/* yy_get_previous_state - get the state just before the EOB char was reached */
3757
3758    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
3759{
3760	yy_state_type yy_current_state;
3761	char *yy_cp;
3762    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3763
3764	yy_current_state = yyg->yy_start;
3765	yy_current_state += YY_AT_BOL();
3766
3767	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
3768		{
3769		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3770		if ( yy_accept[yy_current_state] )
3771			{
3772			yyg->yy_last_accepting_state = yy_current_state;
3773			yyg->yy_last_accepting_cpos = yy_cp;
3774			}
3775		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3776			{
3777			yy_current_state = (int) yy_def[yy_current_state];
3778			if ( yy_current_state >= 1096 )
3779				yy_c = yy_meta[yy_c];
3780			}
3781		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3782		}
3783
3784	return yy_current_state;
3785}
3786
3787/* yy_try_NUL_trans - try to make a transition on the NUL character
3788 *
3789 * synopsis
3790 *	next_state = yy_try_NUL_trans( current_state );
3791 */
3792    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
3793{
3794	int yy_is_jam;
3795    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
3796	char *yy_cp = yyg->yy_c_buf_p;
3797
3798	YY_CHAR yy_c = 1;
3799	if ( yy_accept[yy_current_state] )
3800		{
3801		yyg->yy_last_accepting_state = yy_current_state;
3802		yyg->yy_last_accepting_cpos = yy_cp;
3803		}
3804	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3805		{
3806		yy_current_state = (int) yy_def[yy_current_state];
3807		if ( yy_current_state >= 1096 )
3808			yy_c = yy_meta[yy_c];
3809		}
3810	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3811	yy_is_jam = (yy_current_state == 1095);
3812
3813	(void)yyg;
3814	return yy_is_jam ? 0 : yy_current_state;
3815}
3816
3817#ifndef YY_NO_UNPUT
3818
3819#endif
3820
3821#ifndef YY_NO_INPUT
3822#ifdef __cplusplus
3823    static int yyinput (yyscan_t yyscanner)
3824#else
3825    static int input  (yyscan_t yyscanner)
3826#endif
3827
3828{
3829	int c;
3830    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3831
3832	*yyg->yy_c_buf_p = yyg->yy_hold_char;
3833
3834	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3835		{
3836		/* yy_c_buf_p now points to the character we want to return.
3837		 * If this occurs *before* the EOB characters, then it's a
3838		 * valid NUL; if not, then we've hit the end of the buffer.
3839		 */
3840		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
3841			/* This was really a NUL. */
3842			*yyg->yy_c_buf_p = '\0';
3843
3844		else
3845			{ /* need more input */
3846			yy_size_t offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
3847			++yyg->yy_c_buf_p;
3848
3849			switch ( yy_get_next_buffer( yyscanner ) )
3850				{
3851				case EOB_ACT_LAST_MATCH:
3852					/* This happens because yy_g_n_b()
3853					 * sees that we've accumulated a
3854					 * token and flags that we need to
3855					 * try matching the token before
3856					 * proceeding.  But for input(),
3857					 * there's no matching to consider.
3858					 * So convert the EOB_ACT_LAST_MATCH
3859					 * to EOB_ACT_END_OF_FILE.
3860					 */
3861
3862					/* Reset buffer status. */
3863					yyrestart( yyin , yyscanner);
3864
3865					/*FALLTHROUGH*/
3866
3867				case EOB_ACT_END_OF_FILE:
3868					{
3869					if ( yywrap( yyscanner ) )
3870						return 0;
3871
3872					if ( ! yyg->yy_did_buffer_switch_on_eof )
3873						YY_NEW_FILE;
3874#ifdef __cplusplus
3875					return yyinput(yyscanner);
3876#else
3877					return input(yyscanner);
3878#endif
3879					}
3880
3881				case EOB_ACT_CONTINUE_SCAN:
3882					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
3883					break;
3884				}
3885			}
3886		}
3887
3888	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
3889	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
3890	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
3891
3892	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3893
3894	return c;
3895}
3896#endif	/* ifndef YY_NO_INPUT */
3897
3898/** Immediately switch to a different input stream.
3899 * @param input_file A readable stream.
3900 * @param yyscanner The scanner object.
3901 * @note This function does not reset the start condition to @c INITIAL .
3902 */
3903    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
3904{
3905    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3906
3907	if ( ! YY_CURRENT_BUFFER ){
3908        yyensure_buffer_stack (yyscanner);
3909		YY_CURRENT_BUFFER_LVALUE =
3910            yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
3911	}
3912
3913	yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
3914	yy_load_buffer_state( yyscanner );
3915}
3916
3917/** Switch to a different input buffer.
3918 * @param new_buffer The new input buffer.
3919 * @param yyscanner The scanner object.
3920 */
3921    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
3922{
3923    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3924
3925	/* TODO. We should be able to replace this entire function body
3926	 * with
3927	 *		yypop_buffer_state();
3928	 *		yypush_buffer_state(new_buffer);
3929     */
3930	yyensure_buffer_stack (yyscanner);
3931	if ( YY_CURRENT_BUFFER == new_buffer )
3932		return;
3933
3934	if ( YY_CURRENT_BUFFER )
3935		{
3936		/* Flush out information for old buffer. */
3937		*yyg->yy_c_buf_p = yyg->yy_hold_char;
3938		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3939		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3940		}
3941
3942	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3943	yy_load_buffer_state( yyscanner );
3944
3945	/* We don't actually know whether we did this switch during
3946	 * EOF (yywrap()) processing, but the only time this flag
3947	 * is looked at is after yywrap() is called, so it's safe
3948	 * to go ahead and always set it.
3949	 */
3950	yyg->yy_did_buffer_switch_on_eof = 1;
3951}
3952
3953static void yy_load_buffer_state  (yyscan_t yyscanner)
3954{
3955    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3956	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3957	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3958	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3959	yyg->yy_hold_char = *yyg->yy_c_buf_p;
3960}
3961
3962/** Allocate and initialize an input buffer state.
3963 * @param file A readable stream.
3964 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3965 * @param yyscanner The scanner object.
3966 * @return the allocated buffer state.
3967 */
3968    YY_BUFFER_STATE yy_create_buffer  (FILE * file, yy_size_t  size , yyscan_t yyscanner)
3969{
3970	YY_BUFFER_STATE b;
3971
3972	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
3973	if ( ! b )
3974		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3975
3976	b->yy_buf_size = size;
3977
3978	/* yy_ch_buf has to be 2 characters longer than the size given because
3979	 * we need to put in 2 end-of-buffer characters.
3980	 */
3981	b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
3982	if ( ! b->yy_ch_buf )
3983		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3984
3985	b->yy_is_our_buffer = 1;
3986
3987	yy_init_buffer( b, file , yyscanner);
3988
3989	return b;
3990}
3991
3992/** Destroy the buffer.
3993 * @param b a buffer created with yy_create_buffer()
3994 * @param yyscanner The scanner object.
3995 */
3996    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
3997{
3998    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3999
4000	if ( ! b )
4001		return;
4002
4003	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4004		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4005
4006	if ( b->yy_is_our_buffer )
4007		yyfree( (void *) b->yy_ch_buf , yyscanner );
4008
4009	yyfree( (void *) b , yyscanner );
4010}
4011
4012/* Initializes or reinitializes a buffer.
4013 * This function is sometimes called more than once on the same buffer,
4014 * such as during a yyrestart() or at EOF.
4015 */
4016    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
4017
4018{
4019	int oerrno = errno;
4020    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4021
4022	yy_flush_buffer( b , yyscanner);
4023
4024	b->yy_input_file = file;
4025	b->yy_fill_buffer = 1;
4026
4027    /* If b is the current buffer, then yy_init_buffer was _probably_
4028     * called from yyrestart() or through yy_get_next_buffer.
4029     * In that case, we don't want to reset the lineno or column.
4030     */
4031    if (b != YY_CURRENT_BUFFER){
4032        b->yy_bs_lineno = 1;
4033        b->yy_bs_column = 0;
4034    }
4035
4036        b->yy_is_interactive = 0;
4037
4038	errno = oerrno;
4039}
4040
4041/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4042 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4043 * @param yyscanner The scanner object.
4044 */
4045    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
4046{
4047    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4048	if ( ! b )
4049		return;
4050
4051	b->yy_n_chars = 0;
4052
4053	/* We always need two end-of-buffer characters.  The first causes
4054	 * a transition to the end-of-buffer state.  The second causes
4055	 * a jam in that state.
4056	 */
4057	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4058	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4059
4060	b->yy_buf_pos = &b->yy_ch_buf[0];
4061
4062	b->yy_at_bol = 1;
4063	b->yy_buffer_status = YY_BUFFER_NEW;
4064
4065	if ( b == YY_CURRENT_BUFFER )
4066		yy_load_buffer_state( yyscanner );
4067}
4068
4069/** Pushes the new state onto the stack. The new state becomes
4070 *  the current state. This function will allocate the stack
4071 *  if necessary.
4072 *  @param new_buffer The new state.
4073 *  @param yyscanner The scanner object.
4074 */
4075void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4076{
4077    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4078	if (new_buffer == NULL)
4079		return;
4080
4081	yyensure_buffer_stack(yyscanner);
4082
4083	/* This block is copied from yy_switch_to_buffer. */
4084	if ( YY_CURRENT_BUFFER )
4085		{
4086		/* Flush out information for old buffer. */
4087		*yyg->yy_c_buf_p = yyg->yy_hold_char;
4088		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4089		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4090		}
4091
4092	/* Only push if top exists. Otherwise, replace top. */
4093	if (YY_CURRENT_BUFFER)
4094		yyg->yy_buffer_stack_top++;
4095	YY_CURRENT_BUFFER_LVALUE = new_buffer;
4096
4097	/* copied from yy_switch_to_buffer. */
4098	yy_load_buffer_state( yyscanner );
4099	yyg->yy_did_buffer_switch_on_eof = 1;
4100}
4101
4102/** Removes and deletes the top of the stack, if present.
4103 *  The next element becomes the new top.
4104 *  @param yyscanner The scanner object.
4105 */
4106void yypop_buffer_state (yyscan_t yyscanner)
4107{
4108    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4109	if (!YY_CURRENT_BUFFER)
4110		return;
4111
4112	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
4113	YY_CURRENT_BUFFER_LVALUE = NULL;
4114	if (yyg->yy_buffer_stack_top > 0)
4115		--yyg->yy_buffer_stack_top;
4116
4117	if (YY_CURRENT_BUFFER) {
4118		yy_load_buffer_state( yyscanner );
4119		yyg->yy_did_buffer_switch_on_eof = 1;
4120	}
4121}
4122
4123/* Allocates the stack if it does not exist.
4124 *  Guarantees space for at least one push.
4125 */
4126static void yyensure_buffer_stack (yyscan_t yyscanner)
4127{
4128	yy_size_t num_to_alloc;
4129    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4130
4131	if (!yyg->yy_buffer_stack) {
4132
4133		/* First allocation is just for 2 elements, since we don't know if this
4134		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4135		 * immediate realloc on the next call.
4136         */
4137      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
4138		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
4139								(num_to_alloc * sizeof(struct yy_buffer_state*)
4140								, yyscanner);
4141		if ( ! yyg->yy_buffer_stack )
4142			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4143
4144		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4145
4146		yyg->yy_buffer_stack_max = num_to_alloc;
4147		yyg->yy_buffer_stack_top = 0;
4148		return;
4149	}
4150
4151	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4152
4153		/* Increase the buffer to prepare for a possible push. */
4154		yy_size_t grow_size = 8 /* arbitrary grow size */;
4155
4156		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4157		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
4158								(yyg->yy_buffer_stack,
4159								num_to_alloc * sizeof(struct yy_buffer_state*)
4160								, yyscanner);
4161		if ( ! yyg->yy_buffer_stack )
4162			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4163
4164		/* zero only the new slots.*/
4165		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4166		yyg->yy_buffer_stack_max = num_to_alloc;
4167	}
4168}
4169
4170/** Setup the input buffer state to scan directly from a user-specified character buffer.
4171 * @param base the character buffer
4172 * @param size the size in bytes of the character buffer
4173 * @param yyscanner The scanner object.
4174 * @return the newly allocated buffer state object.
4175 */
4176YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
4177{
4178	YY_BUFFER_STATE b;
4179
4180	if ( size < 2 ||
4181	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
4182	     base[size-1] != YY_END_OF_BUFFER_CHAR )
4183		/* They forgot to leave room for the EOB's. */
4184		return NULL;
4185
4186	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
4187	if ( ! b )
4188		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4189
4190	b->yy_buf_size = (size - 2);	/* "- 2" to take care of EOB's */
4191	b->yy_buf_pos = b->yy_ch_buf = base;
4192	b->yy_is_our_buffer = 0;
4193	b->yy_input_file = NULL;
4194	b->yy_n_chars = b->yy_buf_size;
4195	b->yy_is_interactive = 0;
4196	b->yy_at_bol = 1;
4197	b->yy_fill_buffer = 0;
4198	b->yy_buffer_status = YY_BUFFER_NEW;
4199
4200	yy_switch_to_buffer( b , yyscanner );
4201
4202	return b;
4203}
4204
4205/** Setup the input buffer state to scan a string. The next call to yylex() will
4206 * scan from a @e copy of @a str.
4207 * @param yystr a NUL-terminated string to scan
4208 * @param yyscanner The scanner object.
4209 * @return the newly allocated buffer state object.
4210 * @note If you want to scan bytes that may contain NUL values, then use
4211 *       yy_scan_bytes() instead.
4212 */
4213YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
4214{
4215
4216	return yy_scan_bytes( yystr, strlen(yystr) , yyscanner);
4217}
4218
4219/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4220 * scan from a @e copy of @a bytes.
4221 * @param yybytes the byte buffer to scan
4222 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4223 * @param yyscanner The scanner object.
4224 * @return the newly allocated buffer state object.
4225 */
4226YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
4227{
4228	YY_BUFFER_STATE b;
4229	char *buf;
4230	yy_size_t n;
4231	yy_size_t i;
4232
4233	/* Get memory for full buffer, including space for trailing EOB's. */
4234	n = (yy_size_t) (_yybytes_len + 2);
4235	buf = (char *) yyalloc( n , yyscanner );
4236	if ( ! buf )
4237		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4238
4239	for ( i = 0; i < _yybytes_len; ++i )
4240		buf[i] = yybytes[i];
4241
4242	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4243
4244	b = yy_scan_buffer( buf, n , yyscanner);
4245	if ( ! b )
4246		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4247
4248	/* It's okay to grow etc. this buffer, and we should throw it
4249	 * away when we're done.
4250	 */
4251	b->yy_is_our_buffer = 1;
4252
4253	return b;
4254}
4255
4256#ifndef YY_EXIT_FAILURE
4257#define YY_EXIT_FAILURE 2
4258#endif
4259
4260static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
4261{
4262	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4263	(void)yyg;
4264	fprintf( stderr, "%s\n", msg );
4265	exit( YY_EXIT_FAILURE );
4266}
4267
4268/* Redefine yyless() so it works in section 3 code. */
4269
4270#undef yyless
4271#define yyless(n) \
4272	do \
4273		{ \
4274		/* Undo effects of setting up yytext. */ \
4275        int yyless_macro_arg = (n); \
4276        YY_LESS_LINENO(yyless_macro_arg);\
4277		yytext[yyleng] = yyg->yy_hold_char; \
4278		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
4279		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
4280		*yyg->yy_c_buf_p = '\0'; \
4281		yyleng = yyless_macro_arg; \
4282		} \
4283	while ( 0 )
4284
4285/* Accessor  methods (get/set functions) to struct members. */
4286
4287/** Get the user-defined data for this scanner.
4288 * @param yyscanner The scanner object.
4289 */
4290YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
4291{
4292    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4293    return yyextra;
4294}
4295
4296/** Get the current line number.
4297 * @param yyscanner The scanner object.
4298 */
4299int yyget_lineno  (yyscan_t yyscanner)
4300{
4301    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4302
4303        if (! YY_CURRENT_BUFFER)
4304            return 0;
4305
4306    return yylineno;
4307}
4308
4309/** Get the current column number.
4310 * @param yyscanner The scanner object.
4311 */
4312int yyget_column  (yyscan_t yyscanner)
4313{
4314    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4315
4316        if (! YY_CURRENT_BUFFER)
4317            return 0;
4318
4319    return yycolumn;
4320}
4321
4322/** Get the input stream.
4323 * @param yyscanner The scanner object.
4324 */
4325FILE *yyget_in  (yyscan_t yyscanner)
4326{
4327    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4328    return yyin;
4329}
4330
4331/** Get the output stream.
4332 * @param yyscanner The scanner object.
4333 */
4334FILE *yyget_out  (yyscan_t yyscanner)
4335{
4336    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4337    return yyout;
4338}
4339
4340/** Get the length of the current token.
4341 * @param yyscanner The scanner object.
4342 */
4343yy_size_t yyget_leng  (yyscan_t yyscanner)
4344{
4345    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4346    return yyleng;
4347}
4348
4349/** Get the current token.
4350 * @param yyscanner The scanner object.
4351 */
4352
4353char *yyget_text  (yyscan_t yyscanner)
4354{
4355    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4356    return yytext;
4357}
4358
4359/** Set the user-defined data. This data is never touched by the scanner.
4360 * @param user_defined The data to be associated with this scanner.
4361 * @param yyscanner The scanner object.
4362 */
4363void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
4364{
4365    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4366    yyextra = user_defined ;
4367}
4368
4369/** Set the current line number.
4370 * @param _line_number line number
4371 * @param yyscanner The scanner object.
4372 */
4373void yyset_lineno (int  _line_number , yyscan_t yyscanner)
4374{
4375    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4376
4377        /* lineno is only valid if an input buffer exists. */
4378        if (! YY_CURRENT_BUFFER )
4379           YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
4380
4381    yylineno = _line_number;
4382}
4383
4384/** Set the current column.
4385 * @param _column_no column number
4386 * @param yyscanner The scanner object.
4387 */
4388void yyset_column (int  _column_no , yyscan_t yyscanner)
4389{
4390    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4391
4392        /* column is only valid if an input buffer exists. */
4393        if (! YY_CURRENT_BUFFER )
4394           YY_FATAL_ERROR( "yyset_column called with no buffer" );
4395
4396    yycolumn = _column_no;
4397}
4398
4399/** Set the input stream. This does not discard the current
4400 * input buffer.
4401 * @param _in_str A readable stream.
4402 * @param yyscanner The scanner object.
4403 * @see yy_switch_to_buffer
4404 */
4405void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
4406{
4407    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4408    yyin = _in_str ;
4409}
4410
4411void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
4412{
4413    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4414    yyout = _out_str ;
4415}
4416
4417int yyget_debug  (yyscan_t yyscanner)
4418{
4419    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4420    return yy_flex_debug;
4421}
4422
4423void yyset_debug (int  _bdebug , yyscan_t yyscanner)
4424{
4425    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4426    yy_flex_debug = _bdebug ;
4427}
4428
4429/* Accessor methods for yylval and yylloc */
4430
4431YYSTYPE * yyget_lval  (yyscan_t yyscanner)
4432{
4433    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4434    return yylval;
4435}
4436
4437void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
4438{
4439    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4440    yylval = yylval_param;
4441}
4442
4443YYLTYPE *yyget_lloc  (yyscan_t yyscanner)
4444{
4445    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4446    return yylloc;
4447}
4448
4449void yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
4450{
4451    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4452    yylloc = yylloc_param;
4453}
4454
4455/* User-visible API */
4456
4457/* yylex_init is special because it creates the scanner itself, so it is
4458 * the ONLY reentrant function that doesn't take the scanner as the last argument.
4459 * That's why we explicitly handle the declaration, instead of using our macros.
4460 */
4461int yylex_init(yyscan_t* ptr_yy_globals)
4462{
4463    if (ptr_yy_globals == NULL){
4464        errno = EINVAL;
4465        return 1;
4466    }
4467
4468    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
4469
4470    if (*ptr_yy_globals == NULL){
4471        errno = ENOMEM;
4472        return 1;
4473    }
4474
4475    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
4476    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
4477
4478    return yy_init_globals ( *ptr_yy_globals );
4479}
4480
4481/* yylex_init_extra has the same functionality as yylex_init, but follows the
4482 * convention of taking the scanner as the last argument. Note however, that
4483 * this is a *pointer* to a scanner, as it will be allocated by this call (and
4484 * is the reason, too, why this function also must handle its own declaration).
4485 * The user defined value in the first argument will be available to yyalloc in
4486 * the yyextra field.
4487 */
4488int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
4489{
4490    struct yyguts_t dummy_yyguts;
4491
4492    yyset_extra (yy_user_defined, &dummy_yyguts);
4493
4494    if (ptr_yy_globals == NULL){
4495        errno = EINVAL;
4496        return 1;
4497    }
4498
4499    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
4500
4501    if (*ptr_yy_globals == NULL){
4502        errno = ENOMEM;
4503        return 1;
4504    }
4505
4506    /* By setting to 0xAA, we expose bugs in
4507    yy_init_globals. Leave at 0x00 for releases. */
4508    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
4509
4510    yyset_extra (yy_user_defined, *ptr_yy_globals);
4511
4512    return yy_init_globals ( *ptr_yy_globals );
4513}
4514
4515static int yy_init_globals (yyscan_t yyscanner)
4516{
4517    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4518    /* Initialization is the same as for the non-reentrant scanner.
4519     * This function is called from yylex_destroy(), so don't allocate here.
4520     */
4521
4522    yyg->yy_buffer_stack = NULL;
4523    yyg->yy_buffer_stack_top = 0;
4524    yyg->yy_buffer_stack_max = 0;
4525    yyg->yy_c_buf_p = NULL;
4526    yyg->yy_init = 0;
4527    yyg->yy_start = 0;
4528
4529    yyg->yy_start_stack_ptr = 0;
4530    yyg->yy_start_stack_depth = 0;
4531    yyg->yy_start_stack =  NULL;
4532
4533/* Defined in main.c */
4534#ifdef YY_STDINIT
4535    yyin = stdin;
4536    yyout = stdout;
4537#else
4538    yyin = NULL;
4539    yyout = NULL;
4540#endif
4541
4542    /* For future reference: Set errno on error, since we are called by
4543     * yylex_init()
4544     */
4545    return 0;
4546}
4547
4548/* yylex_destroy is for both reentrant and non-reentrant scanners. */
4549int yylex_destroy  (yyscan_t yyscanner)
4550{
4551    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4552
4553    /* Pop the buffer stack, destroying each element. */
4554	while(YY_CURRENT_BUFFER){
4555		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
4556		YY_CURRENT_BUFFER_LVALUE = NULL;
4557		yypop_buffer_state(yyscanner);
4558	}
4559
4560	/* Destroy the stack itself. */
4561	yyfree(yyg->yy_buffer_stack , yyscanner);
4562	yyg->yy_buffer_stack = NULL;
4563
4564    /* Destroy the start condition stack. */
4565        yyfree( yyg->yy_start_stack , yyscanner );
4566        yyg->yy_start_stack = NULL;
4567
4568    /* Reset the globals. This is important in a non-reentrant scanner so the next time
4569     * yylex() is called, initialization will occur. */
4570    yy_init_globals( yyscanner);
4571
4572    /* Destroy the main struct (reentrant only). */
4573    yyfree ( yyscanner , yyscanner );
4574    yyscanner = NULL;
4575    return 0;
4576}
4577
4578/*
4579 * Internal utility routines.
4580 */
4581
4582#ifndef yytext_ptr
4583static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
4584{
4585	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4586	(void)yyg;
4587
4588	int i;
4589	for ( i = 0; i < n; ++i )
4590		s1[i] = s2[i];
4591}
4592#endif
4593
4594#ifdef YY_NEED_STRLEN
4595static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
4596{
4597	int n;
4598	for ( n = 0; s[n]; ++n )
4599		;
4600
4601	return n;
4602}
4603#endif
4604
4605void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
4606{
4607	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4608	(void)yyg;
4609	return malloc(size);
4610}
4611
4612void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
4613{
4614	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4615	(void)yyg;
4616
4617	/* The cast to (char *) in the following accommodates both
4618	 * implementations that use char* generic pointers, and those
4619	 * that use void* generic pointers.  It works with the latter
4620	 * because both ANSI C and C++ allow castless assignment from
4621	 * any pointer type to void*, and deal with argument conversions
4622	 * as though doing an assignment.
4623	 */
4624	return realloc(ptr, size);
4625}
4626
4627void yyfree (void * ptr , yyscan_t yyscanner)
4628{
4629	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4630	(void)yyg;
4631	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
4632}
4633
4634#define YYTABLES_NAME "yytables"
4635
4636#line 703 "../src/compiler/glsl/glsl_lexer.ll"
4637
4638
4639int
4640classify_identifier(struct _mesa_glsl_parse_state *state, const char *name,
4641                    unsigned name_len, YYSTYPE *output)
4642{
4643   /* We're not doing linear_strdup here, to avoid an implicit call on
4644    * strlen() for the length of the string, as this is already found by flex
4645    * and stored in yyleng
4646    */
4647   char *id = (char *) linear_alloc_child(state->linalloc, name_len + 1);
4648   memcpy(id, name, name_len + 1);
4649   output->identifier = id;
4650
4651   if (state->is_field) {
4652      state->is_field = false;
4653      return FIELD_SELECTION;
4654   }
4655   if (state->symbols->get_variable(name) || state->symbols->get_function(name))
4656      return IDENTIFIER;
4657   else if (state->symbols->get_type(name))
4658      return TYPE_IDENTIFIER;
4659   else
4660      return NEW_IDENTIFIER;
4661}
4662
4663void
4664_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
4665{
4666   yylex_init_extra(state, & state->scanner);
4667   yy_scan_string(string, state->scanner);
4668}
4669
4670void
4671_mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
4672{
4673   yylex_destroy(state->scanner);
4674}
4675
4676