1#line 2 "src/chromium_gensrc/mesa/glsl_lexer.cc"
2
3#line 4 "src/chromium_gensrc/mesa/glsl_lexer.cc"
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 5
12#define YY_FLEX_SUBMINOR_VERSION 35
13#if YY_FLEX_SUBMINOR_VERSION > 0
14#define FLEX_BETA
15#endif
16
17/* First, we deal with  platform-specific or compiler-specific issues. */
18
19/* begin standard C headers. */
20#include <stdio.h>
21#include <string.h>
22#include <errno.h>
23#include <stdlib.h>
24
25/* end standard C headers. */
26
27/* flex integer type definitions */
28
29#ifndef FLEXINT_H
30#define FLEXINT_H
31
32/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33
34#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35
36/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37 * if you want the limit (max/min) macros for int types.
38 */
39#ifndef __STDC_LIMIT_MACROS
40#define __STDC_LIMIT_MACROS 1
41#endif
42
43#include <inttypes.h>
44typedef int8_t flex_int8_t;
45typedef uint8_t flex_uint8_t;
46typedef int16_t flex_int16_t;
47typedef uint16_t flex_uint16_t;
48typedef int32_t flex_int32_t;
49typedef uint32_t flex_uint32_t;
50#else
51typedef signed char flex_int8_t;
52typedef short int flex_int16_t;
53typedef int flex_int32_t;
54typedef unsigned char flex_uint8_t;
55typedef unsigned short int flex_uint16_t;
56typedef unsigned int flex_uint32_t;
57
58/* Limits of integral types. */
59#ifndef INT8_MIN
60#define INT8_MIN               (-128)
61#endif
62#ifndef INT16_MIN
63#define INT16_MIN              (-32767-1)
64#endif
65#ifndef INT32_MIN
66#define INT32_MIN              (-2147483647-1)
67#endif
68#ifndef INT8_MAX
69#define INT8_MAX               (127)
70#endif
71#ifndef INT16_MAX
72#define INT16_MAX              (32767)
73#endif
74#ifndef INT32_MAX
75#define INT32_MAX              (2147483647)
76#endif
77#ifndef UINT8_MAX
78#define UINT8_MAX              (255U)
79#endif
80#ifndef UINT16_MAX
81#define UINT16_MAX             (65535U)
82#endif
83#ifndef UINT32_MAX
84#define UINT32_MAX             (4294967295U)
85#endif
86
87#endif /* ! C99 */
88
89#endif /* ! FLEXINT_H */
90
91#ifdef __cplusplus
92
93/* The "const" storage-class-modifier is valid. */
94#define YY_USE_CONST
95
96#else	/* ! __cplusplus */
97
98/* C99 requires __STDC__ to be defined as 1. */
99#if defined (__STDC__)
100
101#define YY_USE_CONST
102
103#endif	/* defined (__STDC__) */
104#endif	/* ! __cplusplus */
105
106#ifdef YY_USE_CONST
107#define yyconst const
108#else
109#define yyconst
110#endif
111
112/* Returned upon end-of-file. */
113#define YY_NULL 0
114
115/* Promotes a possibly negative, possibly signed char to an unsigned
116 * integer for use as an array index.  If the signed char is negative,
117 * we want to instead treat it as an 8-bit unsigned char, hence the
118 * double cast.
119 */
120#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121
122/* An opaque pointer. */
123#ifndef YY_TYPEDEF_YY_SCANNER_T
124#define YY_TYPEDEF_YY_SCANNER_T
125typedef void* yyscan_t;
126#endif
127
128/* For convenience, these vars (plus the bison vars far below)
129   are macros in the reentrant scanner. */
130#define yyin yyg->yyin_r
131#define yyout yyg->yyout_r
132#define yyextra yyg->yyextra_r
133#define yyleng yyg->yyleng_r
134#define yytext yyg->yytext_r
135#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
136#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
137#define yy_flex_debug yyg->yy_flex_debug_r
138
139/* Enter a start condition.  This macro really ought to take a parameter,
140 * but we do it the disgusting crufty way forced on us by the ()-less
141 * definition of BEGIN.
142 */
143#define BEGIN yyg->yy_start = 1 + 2 *
144
145/* Translate the current start state into a value that can be later handed
146 * to BEGIN to return to the state.  The YYSTATE alias is for lex
147 * compatibility.
148 */
149#define YY_START ((yyg->yy_start - 1) / 2)
150#define YYSTATE YY_START
151
152/* Action number for EOF rule of a given start state. */
153#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154
155/* Special action meaning "start processing a new file". */
156#define YY_NEW_FILE _mesa_glsl_restart(yyin ,yyscanner )
157
158#define YY_END_OF_BUFFER_CHAR 0
159
160/* Size of default input buffer. */
161#ifndef YY_BUF_SIZE
162#ifdef __ia64__
163/* On IA-64, the buffer size is 16k, not 8k.
164 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
165 * Ditto for the __ia64__ case accordingly.
166 */
167#define YY_BUF_SIZE 32768
168#else
169#define YY_BUF_SIZE 16384
170#endif /* __ia64__ */
171#endif
172
173/* The state buf must be large enough to hold one state per character in the main buffer.
174 */
175#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
176
177#ifndef YY_TYPEDEF_YY_BUFFER_STATE
178#define YY_TYPEDEF_YY_BUFFER_STATE
179typedef struct yy_buffer_state *YY_BUFFER_STATE;
180#endif
181
182#define EOB_ACT_CONTINUE_SCAN 0
183#define EOB_ACT_END_OF_FILE 1
184#define EOB_ACT_LAST_MATCH 2
185
186    #define YY_LESS_LINENO(n)
187
188/* Return all but the first "n" matched characters back to the input stream. */
189#define yyless(n) \
190	do \
191		{ \
192		/* Undo effects of setting up yytext. */ \
193        int yyless_macro_arg = (n); \
194        YY_LESS_LINENO(yyless_macro_arg);\
195		*yy_cp = yyg->yy_hold_char; \
196		YY_RESTORE_YY_MORE_OFFSET \
197		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
198		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
199		} \
200	while ( 0 )
201
202#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
203
204#ifndef YY_TYPEDEF_YY_SIZE_T
205#define YY_TYPEDEF_YY_SIZE_T
206typedef size_t yy_size_t;
207#endif
208
209#ifndef YY_STRUCT_YY_BUFFER_STATE
210#define YY_STRUCT_YY_BUFFER_STATE
211struct yy_buffer_state
212	{
213	FILE *yy_input_file;
214
215	char *yy_ch_buf;		/* input buffer */
216	char *yy_buf_pos;		/* current position in input buffer */
217
218	/* Size of input buffer in bytes, not including room for EOB
219	 * characters.
220	 */
221	yy_size_t yy_buf_size;
222
223	/* Number of characters read into yy_ch_buf, not including EOB
224	 * characters.
225	 */
226	int yy_n_chars;
227
228	/* Whether we "own" the buffer - i.e., we know we created it,
229	 * and can realloc() it to grow it, and should free() it to
230	 * delete it.
231	 */
232	int yy_is_our_buffer;
233
234	/* Whether this is an "interactive" input source; if so, and
235	 * if we're using stdio for input, then we want to use getc()
236	 * instead of fread(), to make sure we stop fetching input after
237	 * each newline.
238	 */
239	int yy_is_interactive;
240
241	/* Whether we're considered to be at the beginning of a line.
242	 * If so, '^' rules will be active on the next match, otherwise
243	 * not.
244	 */
245	int yy_at_bol;
246
247    int yy_bs_lineno; /**< The line count. */
248    int yy_bs_column; /**< The column count. */
249
250	/* Whether to try to fill the input buffer when we reach the
251	 * end of it.
252	 */
253	int yy_fill_buffer;
254
255	int yy_buffer_status;
256
257#define YY_BUFFER_NEW 0
258#define YY_BUFFER_NORMAL 1
259	/* When an EOF's been seen but there's still some text to process
260	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
261	 * shouldn't try reading from the input source any more.  We might
262	 * still have a bunch of tokens to match, though, because of
263	 * possible backing-up.
264	 *
265	 * When we actually see the EOF, we change the status to "new"
266	 * (via _mesa_glsl_restart()), so that the user can continue scanning by
267	 * just pointing yyin at a new input file.
268	 */
269#define YY_BUFFER_EOF_PENDING 2
270
271	};
272#endif /* !YY_STRUCT_YY_BUFFER_STATE */
273
274/* We provide macros for accessing buffer states in case in the
275 * future we want to put the buffer states in a more general
276 * "scanner state".
277 *
278 * Returns the top of the stack, or NULL.
279 */
280#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
281                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
282                          : NULL)
283
284/* Same as previous macro, but useful when we know that the buffer stack is not
285 * NULL or when we need an lvalue. For internal use only.
286 */
287#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
288
289void _mesa_glsl_restart (FILE *input_file ,yyscan_t yyscanner );
290void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
291YY_BUFFER_STATE _mesa_glsl__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
292void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
293void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
294void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
295void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner );
296
297static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner );
298static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner );
299static void _mesa_glsl__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
300
301#define YY_FLUSH_BUFFER _mesa_glsl__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
302
303YY_BUFFER_STATE _mesa_glsl__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
304YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
305YY_BUFFER_STATE _mesa_glsl__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
306
307void *_mesa_glsl_alloc (yy_size_t ,yyscan_t yyscanner );
308void *_mesa_glsl_realloc (void *,yy_size_t ,yyscan_t yyscanner );
309void _mesa_glsl_free (void * ,yyscan_t yyscanner );
310
311#define yy_new_buffer _mesa_glsl__create_buffer
312
313#define yy_set_interactive(is_interactive) \
314	{ \
315	if ( ! YY_CURRENT_BUFFER ){ \
316        _mesa_glsl_ensure_buffer_stack (yyscanner); \
317		YY_CURRENT_BUFFER_LVALUE =    \
318            _mesa_glsl__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
319	} \
320	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
321	}
322
323#define yy_set_bol(at_bol) \
324	{ \
325	if ( ! YY_CURRENT_BUFFER ){\
326        _mesa_glsl_ensure_buffer_stack (yyscanner); \
327		YY_CURRENT_BUFFER_LVALUE =    \
328            _mesa_glsl__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
329	} \
330	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
331	}
332
333#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
334
335/* Begin user sect3 */
336
337#define _mesa_glsl_wrap(n) 1
338#define YY_SKIP_YYWRAP
339
340typedef unsigned char YY_CHAR;
341
342typedef int yy_state_type;
343
344#define yytext_ptr yytext_r
345
346static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
347static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
348static int yy_get_next_buffer (yyscan_t yyscanner );
349static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
350
351/* Done after the current pattern has been matched and before the
352 * corresponding action - sets up yytext.
353 */
354#define YY_DO_BEFORE_ACTION \
355	yyg->yytext_ptr = yy_bp; \
356	yyleng = (size_t) (yy_cp - yy_bp); \
357	yyg->yy_hold_char = *yy_cp; \
358	*yy_cp = '\0'; \
359	yyg->yy_c_buf_p = yy_cp;
360
361#define YY_NUM_RULES 215
362#define YY_END_OF_BUFFER 216
363/* This struct is not used in this scanner,
364   but its presence is necessary. */
365struct yy_trans_info
366	{
367	flex_int32_t yy_verify;
368	flex_int32_t yy_nxt;
369	};
370static yyconst flex_int16_t yy_accept[867] =
371    {   0,
372        0,    0,   16,   16,    0,    0,  216,  214,    1,   21,
373      214,  214,  214,  214,  214,  214,  214,  214,  121,  119,
374      214,  214,  214,  213,  214,  213,  213,  213,  213,  213,
375      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
376      213,  213,  213,  213,  213,  214,    1,  214,  215,   16,
377       20,  215,   19,   17,   18,   14,   13,    1,  103,  112,
378      104,  115,  109,   98,  111,   99,  118,  123,  110,  124,
379      121,    0,    0,  126,  121,    0,  119,  119,  107,  100,
380      102,  101,  108,  213,  116,  106,  213,  213,  213,  213,
381      213,  213,  213,  213,  213,  213,  213,  213,   30,  213,
382
383      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
384      213,  213,   34,  213,  213,   61,  213,  213,  213,  213,
385      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
386      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
387      213,  213,  213,  213,  213,  213,  213,  213,  213,  117,
388      105,    1,    0,    0,    2,    0,    0,    0,    0,   16,
389       15,   19,   18,    0,  123,  122,    0,  124,    0,  125,
390      120,  113,  114,  213,  129,  213,  213,  213,  213,  213,
391      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
392      213,  213,  213,  213,  213,  213,   33,  213,  213,  213,
393
394      213,  213,  213,  213,  213,  213,  213,   26,  213,  213,
395      213,  213,  213,  213,  213,  213,  213,  213,  213,   62,
396      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
397      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
398      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
399        0,    0,    0,    0,   15,    0,  123,    0,  122,    0,
400      124,  125,  120,  213,  213,   24,  213,  213,  176,  169,
401      213,  213,  213,  213,  213,  213,  213,  213,  213,   32,
402      132,  213,  213,  213,  213,   68,  213,  213,  137,  151,
403      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
404
405      213,  213,  148,  172,   49,   50,   51,  213,  213,  213,
406      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
407      213,  213,  213,  213,  213,  213,  213,  135,  127,  213,
408      213,   27,  213,  213,  213,  213,  213,  213,  213,   46,
409       47,   48,   96,  213,  213,    0,    0,    0,    0,    0,
410      122,  213,  213,   28,   37,   38,   39,  213,  130,  213,
411       23,  213,  213,  213,  213,  159,  160,  161,  213,  128,
412      213,  152,   25,  162,  163,  164,  174,  156,  157,  158,
413      213,  213,  213,   63,  154,  213,  213,  213,   40,   41,
414       42,  213,  213,  213,  213,  213,  213,  213,  213,  213,
415
416      213,  213,  213,  213,  213,  213,  213,  149,  213,  213,
417      213,  213,  213,  213,  213,  213,  213,  213,  131,  213,
418      213,  171,   43,   44,   45,  213,  213,   31,    0,    0,
419        0,    0,  179,  213,  213,  177,  213,  213,  213,  150,
420      145,  182,  213,  213,  213,  213,  213,  213,  140,  213,
421      213,  213,   97,   52,   53,   54,   55,   56,   57,   58,
422       59,   60,  213,  213,  213,  213,  155,  136,  213,  213,
423      143,   36,  213,  213,  168,   69,  144,   95,  180,  138,
424      213,  213,  213,  213,  213,  213,  213,  213,    0,    0,
425        0,    0,  213,  213,  213,  139,   35,  213,  213,  213,
426
427      213,  213,  213,  183,  184,  185,  213,  213,  213,  213,
428      213,  173,  213,  213,  213,  213,  213,  213,  213,  213,
429      133,  213,  213,  213,  213,  213,   64,  213,  213,   65,
430      213,    0,    0,    0,    0,    0,  213,   66,   29,  146,
431      187,  188,  189,  213,  213,  213,  213,  213,  213,  213,
432      213,  213,  213,  213,  213,  141,  213,  213,  213,  213,
433      213,  213,  213,  213,  213,  213,  134,  191,  192,  193,
434      213,  213,  153,  213,  142,    0,    0,    6,    0,    0,
435        0,   12,    3,   22,  213,  213,  213,  213,  213,  213,
436      213,  213,  213,  186,  147,   67,  213,  213,  213,  213,
437
438      213,  170,  213,  178,  175,  208,   71,   72,   73,  213,
439      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
440      213,    0,    0,    0,    0,    0,    0,    0,  213,  213,
441      213,  190,  213,  213,  213,  213,  213,   82,   83,   84,
442      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
443      213,  213,  213,  213,  213,  194,   88,   89,   90,  213,
444      213,    4,    0,    5,    0,    0,    0,    0,    0,    0,
445      213,  213,  213,  213,  213,  213,  213,  205,  213,  213,
446      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
447      213,   74,  213,  213,  213,  213,  213,  213,  213,  213,
448
449      213,    0,    0,    0,    0,  213,  213,  206,  195,  213,
450      196,  213,  213,  213,  213,  213,   85,  213,  213,  213,
451      213,  213,  213,  213,  213,  213,  213,  213,  213,  207,
452      213,  213,  213,  213,   91,    0,    0,    0,  197,  198,
453      213,  201,  213,  202,  213,  213,  213,  213,   70,  213,
454      213,  213,  165,  213,  166,  181,  213,  213,  199,  200,
455      213,  213,  213,  213,    0,    0,    0,  213,  213,  213,
456      213,  209,  211,   75,  213,   76,  213,  213,  213,  213,
457      213,  213,  210,  212,    0,    0,    0,    0,  213,  213,
458       86,   87,  213,   77,  213,  213,   78,  213,  213,   92,
459
460       93,    0,    0,    0,    0,  213,  213,  213,  213,  213,
461      213,  213,    0,    0,    0,    0,  213,  213,  213,  213,
462      213,   79,  213,    0,    0,    0,    7,    0,    0,  203,
463      204,  213,  213,  213,   94,    0,    0,    8,    0,    0,
464      213,  213,  167,    0,    0,    0,   80,   81,    0,    0,
465        0,    9,    0,    0,   10,    0,    0,    0,    0,    0,
466        0,    0,    0,    0,   11,    0
467    } ;
468
469static yyconst flex_int32_t yy_ec[256] =
470    {   0,
471        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
472        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
473        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
474        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
475       10,   11,   12,    1,   13,   14,   15,   16,   17,   18,
476       19,   20,   21,   21,   21,   22,   22,   23,    1,   24,
477       25,   26,    1,    1,   27,   28,   29,   30,   31,   32,
478       33,   34,   34,   34,   34,   35,   34,   34,   36,   34,
479       34,   37,   38,   39,   40,   34,   34,   41,   34,   34,
480        1,    1,    1,   42,   43,    1,   44,   45,   46,   47,
481
482       48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
483       58,   59,   34,   60,   61,   62,   63,   64,   65,   66,
484       67,   68,    1,   69,    1,    1,    1,    1,    1,    1,
485        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
486        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
487        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
488        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
489        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
490        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
491        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
492
493        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
494        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
495        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
496        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
497        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
498        1,    1,    1,    1,    1
499    } ;
500
501static yyconst flex_int32_t yy_meta[70] =
502    {   0,
503        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
504        1,    1,    1,    1,    1,    3,    3,    3,    3,    3,
505        3,    3,    1,    1,    1,    1,    4,    4,    4,    4,
506        3,    3,    5,    5,    5,    5,    5,    5,    5,    5,
507        5,    1,    5,    4,    4,    4,    4,    3,    3,    5,
508        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
509        5,    5,    5,    5,    5,    5,    5,    5,    1
510    } ;
511
512static yyconst flex_int16_t yy_base[876] =
513    {   0,
514        0,   68,   74,    0, 1243, 1242, 1244, 1247,   69, 1247,
515     1218, 1217,  136, 1216,  133,  134,  132, 1215,  148,  201,
516      131, 1214,  146,    0,  121,  114,  123,  146,  134,  136,
517      172, 1180,  161,  182,  141,  129,  151, 1174,  140,  187,
518      196,  203,  205,  223, 1185,  187,  204,  270, 1247,  224,
519     1247, 1220,  258, 1247,    0, 1247, 1247,  240, 1247, 1247,
520     1247, 1247, 1247, 1247, 1247, 1247, 1247,  251, 1247,  253,
521      224,  321,  275, 1247, 1247,    0,    0, 1247, 1209, 1247,
522     1247, 1247, 1208,    0, 1247, 1247, 1170, 1175, 1168, 1171,
523     1180, 1179, 1165, 1168, 1180,  247, 1174, 1161, 1158, 1172,
524
525     1158, 1155, 1155, 1161,  243,  261, 1155, 1166, 1151, 1157,
526     1161, 1162,    0, 1153, 1164,  252, 1163, 1158, 1138,  172,
527     1142, 1156, 1146,  201, 1139,  260, 1152, 1154, 1136, 1132,
528     1140, 1137, 1126, 1135,  264, 1133, 1139, 1134, 1137, 1125,
529     1128,  256,  265,  271, 1138, 1125, 1138,  234, 1131, 1247,
530     1247,  326,  319,  342, 1247, 1116, 1129, 1120, 1131,  329,
531        0,  338,    0,  391, 1247,  315,  402, 1247,  409,  416,
532      287, 1247, 1247, 1126,    0, 1117, 1121, 1131, 1128,  300,
533     1111, 1111, 1115,  304, 1126, 1123, 1123, 1121, 1118, 1109,
534     1116, 1102, 1100, 1113, 1098, 1115,    0, 1112, 1099, 1107,
535
536     1104, 1108, 1109, 1102, 1099, 1087, 1086, 1100, 1103, 1090,
537     1099, 1086, 1093, 1083,  353, 1089, 1092, 1082, 1090, 1078,
538     1082, 1073, 1088, 1078, 1069, 1088, 1071, 1069, 1080, 1069,
539     1064, 1062, 1076, 1061, 1063, 1060, 1072, 1071, 1074, 1055,
540      319, 1064, 1059, 1057, 1067, 1045,  361, 1064, 1066, 1054,
541     1046, 1050, 1062, 1045,    0,  423,  434,  451, 1247,  458,
542      468, 1247, 1247, 1040, 1051,    0, 1048,  366,    0,    0,
543     1041, 1039, 1041, 1036, 1045, 1033, 1051, 1039,  369,    0,
544        0, 1033, 1044, 1043, 1043,    0, 1027,  373,    0,    0,
545     1029,  376, 1037, 1038, 1028, 1022, 1021, 1022, 1021, 1021,
546
547      380, 1016,    0,    0, 1012, 1011, 1010, 1012, 1013, 1018,
548     1012, 1008, 1022, 1017, 1016, 1015, 1006, 1009, 1009, 1001,
549     1004,  999, 1008, 1013,  998, 1011, 1001,    0,    0, 1008,
550     1004,    0,  995,  995, 1001,  991,  999,  439,  996,    0,
551        0,    0,    0,  985,  998,  997,  996,  993,  981,  475,
552      486,  993,  995,    0,    0,    0,    0,  981,    0,  981,
553        0,  980,  981,  975,  986,    0,    0,    0,  976,    0,
554      972,    0,    0,    0,    0,    0,    0,    0,    0,    0,
555      983,  492,  982,    0,    0,  980,  976,  972,    0,    0,
556        0,  964,  442,  494,  504,  969,  965,  971,  961,  959,
557
558      973,  957,  957,  971,  959,  971,  966,    0,  964,  961,
559      965,  948,  950,  957,  963,  958,  957,  944,    0,  946,
560      947,    0,    0,    0,    0,  944,  948,    0,  942,  996,
561      941,  944,    0,  932,  942,    0,  930,  930,  944,    0,
562      946,    0,  508,  959,  958,  957,  923,  922,    0,  940,
563      939,  934,    0,    0,    0,    0,    0,    0,    0,    0,
564        0,    0,  922,  936,  922,  919,    0,    0,  925,  924,
565        0,    0,  922,  914,    0,    0,    0,    0,    0,    0,
566      911,  923,  511,  915,  922,  921,  918,  912,  905,  529,
567      921,  906,  901,  915,  913,    0,    0,  905,  929,  928,
568
569      927,  893,  892,  378,  505,    0,  905,  908,  906,  894,
570      890,    0,  903,  900,  899,  888,  887,  886,  535,  895,
571        0,  912,  911,  910,  876,  875,    0,  890,  876,    0,
572      887,  882,  539,  565,  931,  875,  883,    0,    0,    0,
573      903,  902,    0,  879,  882,  866,  874,  864,  872,  873,
574      873,  872,  857,  560,  870,    0,  871,  859,  858,  854,
575      883,  882,  881,  847,  846,  842,    0,  880,  879,    0,
576      856,  859,    0,  573,    0,  845,  591, 1247,  601,    0,
577      612,  597, 1247,    0,  842,  841,  851,  851,  838,  853,
578      836,  851,  846,    0,    0,    0,  863,  862,  861,  827,
579
580      826,    0,  826,    0,    0,    0,  506,  534,  850,  837,
581      840,  822,  823,  822,  832,  832,  849,  848,  847,  813,
582      812,  817,  621,  647,  373,  834,  824,  812,  810,  809,
583      820,    0,  823,  819,  821,  817,  803,  835,  324,    0,
584      812,  815,  807,  798,  806,  796,  807,  803,  805,  803,
585      803,  802,  789,  788,  799,    0,  819,  538,    0,  796,
586      799, 1247,  444, 1247,  654,    0,  674,  813,  797,  779,
587      796,  795,  778,  770,  778,  768,  776,    0,  773,  772,
588      783,  781,  781,  764,  767,  782,  765,  778,  779,  776,
589      773,  782,  759,  774,  773,  756,  755,  754,  765,  763,
590
591      763,  479,  777,  746,  756,  740,  739,    0,  767,  739,
592      765,  737,  741,  740,  753,  750,    0,  749,  752,  748,
593      750,  731,  745,  729,  730,  738,  731,  720,  719,    0,
594      725,  724,  737,  734,    0,  746,  730,  723,    0,    0,
595      720,    0,  704,    0,  710,  709,  689,  690,    0,  682,
596      690,  680,  708,  687,    0,    0,  700,  699,    0,    0,
597      698,  697,  678,  679,  736,  560,  685,  692,  691,  667,
598      666,    0,    0,  694,  666,  692,  678,  663,  678,  669,
599      656,    5,    0,    0,  155,  634,  568,  106,  131,  208,
600        0,    0,  217,    0,  285,  305,    0,  324,  366,    0,
601
602        0,  360,  593,  549,  401,  440,  441,  457,  471,  469,
603      454,  503,  474,  524,  643,  645,  509,  511,  549,  550,
604      542,    0,  578,  581,  650,  676, 1247,  679,  625,    0,
605        0,  588,  590,  593,    0,  599,  687, 1247,  659,  649,
606      614,  615,    0,  630,  635,  697,    0,    0,  641,  698,
607      699, 1247,  645,  701, 1247,  642,  703,  711,  708,  712,
608      660,  661,  716,  717, 1247, 1247,  756,  759,  762,  718,
609      719,  765,  769,  772,  774
610    } ;
611
612static yyconst flex_int16_t yy_def[876] =
613    {   0,
614      866,    1,  866,    3,  867,  867,  866,  866,  866,  866,
615      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
616      866,  866,  866,  868,  866,  868,  868,  868,  868,  868,
617      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
618      868,  868,  868,  868,  868,  866,  866,  866,  866,  866,
619      866,  866,  866,  866,  869,  866,  866,  866,  866,  866,
620      866,  866,  866,  866,  866,  866,  866,  870,  866,  871,
621       19,  866,  866,  866,  866,  872,   20,  866,  866,  866,
622      866,  866,  866,  868,  866,  866,  868,  868,  868,  868,
623      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
624
625      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
626      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
627      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
628      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
629      868,  868,  868,  868,  868,  868,  868,  868,  868,  866,
630      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
631      873,  866,  869,  866,  866,  871,  866,  866,  866,  866,
632      872,  866,  866,  868,  868,  868,  868,  868,  868,  868,
633      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
634      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
635
636      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
637      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
638      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
639      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
640      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
641      866,  866,  866,  866,  873,  866,  866,  866,  866,  866,
642      866,  866,  866,  868,  868,  868,  868,  868,  868,  868,
643      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
644      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
645      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
646
647      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
648      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
649      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
650      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
651      868,  868,  868,  868,  868,  866,  866,  866,  866,  866,
652      866,  868,  868,  868,  868,  868,  868,  868,  868,  868,
653      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
654      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
655      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
656      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
657
658      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
659      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
660      868,  868,  868,  868,  868,  868,  868,  868,  866,  866,
661      866,  866,  868,  868,  868,  868,  868,  868,  868,  868,
662      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
663      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
664      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
665      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
666      868,  868,  868,  868,  868,  868,  868,  868,  866,  866,
667      866,  866,  868,  868,  868,  868,  868,  868,  868,  868,
668
669      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
670      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
671      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
672      868,  866,  866,  866,  866,  866,  868,  868,  868,  868,
673      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
674      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
675      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
676      868,  868,  868,  868,  868,  866,  866,  866,  866,  874,
677      866,  866,  866,  868,  868,  868,  868,  868,  868,  868,
678      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
679
680      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
681      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
682      868,  866,  866,  866,  874,  866,  866,  866,  868,  868,
683      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
684      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
685      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
686      868,  866,  866,  866,  866,  875,  866,  866,  866,  866,
687      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
688      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
689      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
690
691      868,  875,  866,  866,  866,  868,  868,  868,  868,  868,
692      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
693      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
694      868,  868,  868,  868,  868,  866,  866,  866,  868,  868,
695      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
696      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
697      868,  868,  868,  868,  866,  866,  866,  868,  868,  868,
698      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
699      868,  868,  868,  868,  866,  866,  866,  866,  868,  868,
700      868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
701
702      868,  866,  866,  866,  866,  868,  868,  868,  868,  868,
703      868,  868,  866,  866,  866,  866,  868,  868,  868,  868,
704      868,  868,  868,  866,  866,  866,  866,  866,  866,  868,
705      868,  868,  868,  868,  868,  866,  866,  866,  866,  866,
706      868,  868,  868,  866,  866,  866,  868,  868,  866,  866,
707      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
708      866,  866,  866,  866,  866,    0,  866,  866,  866,  866,
709      866,  866,  866,  866,  866
710    } ;
711
712static yyconst flex_int16_t yy_nxt[1317] =
713    {   0,
714        8,    9,   10,    9,   11,    8,   12,   13,    8,    8,
715       14,   15,   16,   17,   18,   19,   20,   20,   20,   20,
716       20,   20,    8,   21,   22,   23,   24,   24,   24,   24,
717       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
718       24,   25,   24,   26,   27,   28,   29,   30,   31,   32,
719       33,   34,   24,   24,   35,   36,   37,   38,   39,   40,
720       41,   42,   43,   44,   45,   24,   24,   24,   46,   47,
721       58,  801,   58,   48,   49,   50,   51,   50,   49,   49,
722       49,   49,   49,   49,   49,   49,   49,   49,   52,   49,
723       53,   53,   53,   53,   53,   53,   54,   49,   49,   49,
724
725       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
726       55,   55,   55,   55,   55,   49,   55,   55,   55,   55,
727       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
728       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
729       55,   55,   49,   61,   64,   85,   66,   68,   68,   68,
730       68,   68,   68,   68,   79,   80,  785,   65,   67,   87,
731       62,   70,   86,   71,   71,   71,   71,   71,   71,   72,
732       82,   83,  121,  805,   88,   89,  122,  806,   73,   74,
733       90,   97,   91,  126,  119,   98,   92,   75,   76,   93,
734      101,   99,  102,   94,  123,   73,   74,  100,  120,  127,
735
736       95,  103,  128,   96,  110,  152,  802,   58,  124,  153,
737       75,  150,  111,   76,   70,  104,   77,   77,   77,   77,
738       77,   77,   77,  105,  112,  160,  106,  160,  213,  107,
739      113,   73,   74,  114,  129,  108,  214,  115,  116,  131,
740       78,   58,  117,   58,  130,  118,  132,  133,   73,   74,
741      138,  134,  218,  139,  807,  151,  142,  135,  136,  219,
742      137,  143,  140,   78,  866,  144,  146,  808,  145,  141,
743      147,  154,  155,  162,  162,  162,  162,  162,  162,  162,
744      148,  164,  165,  167,  168,  248,  169,  169,  249,  866,
745      170,  170,  170,  170,  170,  170,  170,  193,  164,  165,
746
747      167,  168,  183,  184,  195,  221,  205,  231,  194,  206,
748      207,  239,  240,  208,  243,  209,  241,  156,  196,  222,
749      154,  155,  244,  232,  157,  242,  263,  152,  158,   58,
750      160,  153,  160,  159,   70,  809,   72,   72,   72,   72,
751       72,   72,   72,  154,  155,  258,  259,  269,  810,  263,
752      680,   73,   74,  162,  162,  162,  162,  162,  162,  162,
753      681,  270,  258,  259,  274,  275,  156,  333,   73,   74,
754      305,  306,  307,  157,  577,  578,  334,  158,  340,  341,
755      342,  811,  159,  355,  356,  357,  366,  367,  368,  156,
756      374,  375,  376,  378,  379,  380,  157,  389,  390,  391,
757
758      158,  812,  256,  256,  546,  159,  257,  257,  257,  257,
759      257,  257,  257,  260,  260,  547,  813,  261,  261,  261,
760      261,  261,  261,  261,  170,  170,  170,  170,  170,  170,
761      170,  170,  170,  170,  170,  170,  170,  170,  257,  257,
762      257,  257,  257,  257,  257,  663,  664,  262,  816,  257,
763      257,  257,  257,  257,  257,  257,  423,  424,  425,  454,
764      455,  456,  350,  350,  262,  165,  351,  351,  351,  351,
765      351,  351,  351,  261,  261,  261,  261,  261,  261,  261,
766      663,  664,  165,  261,  261,  261,  261,  261,  261,  261,
767      351,  351,  351,  351,  351,  351,  351,  817,  818,  168,
768
769      819,  351,  351,  351,  351,  351,  351,  351,  444,  445,
770      446,  457,  458,  459,  820,  821,  168,  259,  822,  447,
771      448,  460,  461,  462,  499,  500,  501,  522,  523,  524,
772      490,  548,  644,  823,  259,  502,  503,  824,  525,  526,
773      577,  578,  549,  645,  533,  534,  534,  534,  534,  534,
774      534,  561,  562,  563,  579,  579,  579,  579,  579,  579,
775      646,  786,  564,  565,  698,  566,  577,  578,  787,  803,
776      647,  648,  825,  830,  699,  831,  597,  598,  599,  580,
777      581,  581,  581,  581,  581,  581,  581,  600,  601,  617,
778      618,  619,  577,  578,  803,  832,  833,  814,  582,  834,
779
780      620,  621,  577,  578,  580,  815,  623,  624,  624,  624,
781      624,  624,  624,  577,  578,  835,  579,  579,  579,  579,
782      579,  579,  663,  664,  836,  804,  839,  581,  581,  581,
783      581,  581,  581,  581,  626,  786,  665,  665,  665,  665,
784      665,  665,  787,  627,  826,  841,  828,  842,  663,  664,
785      804,  837,  827,  829,  628,  663,  664,  843,  844,  838,
786      839,  666,  667,  667,  667,  667,  667,  667,  667,  665,
787      665,  665,  665,  665,  665,  663,  664,  826,  847,  848,
788      828,  849,  840,  850,  853,  827,  666,  829,  837,  667,
789      667,  667,  667,  667,  667,  667,  838,  845,  851,  854,
790
791      851,  856,  854,  857,  858,  846,  852,  855,  852,  860,
792      855,  859,  858,  860,  862,  863,  840,  864,  864,  859,
793       68,  166,  800,  799,  798,  865,  865,  797,  796,  795,
794      794,  793,  792,  791,  790,  789,  788,  785,  784,  783,
795      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
796      772,  861,  771,  770,  769,  861,   56,   56,   56,   56,
797       56,   84,   84,   84,  163,  163,  163,  171,  171,  255,
798      768,  255,  255,  255,  625,  625,  702,  702,  767,  766,
799      765,  764,  763,  762,  761,  760,  759,  758,  757,  756,
800      755,  754,  753,  752,  751,  750,  749,  748,  747,  746,
801
802      745,  744,  743,  742,  741,  740,  739,  738,  737,  736,
803      735,  734,  733,  732,  731,  730,  729,  728,  727,  726,
804      725,  724,  723,  722,  721,  720,  719,  718,  717,  716,
805      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
806      705,  704,  703,  701,  700,  697,  696,  695,  694,  693,
807      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
808      682,  679,  678,  677,  676,  675,  674,  673,  672,  671,
809      670,  669,  668,  662,  661,  660,  659,  658,  657,  656,
810      655,  654,  653,  652,  651,  650,  649,  643,  642,  641,
811      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
812
813      630,  629,  622,  616,  615,  614,  613,  612,  611,  610,
814      609,  608,  607,  606,  605,  604,  603,  602,  596,  595,
815      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
816      584,  583,  582,  576,  575,  574,  573,  572,  571,  570,
817      569,  568,  567,  560,  559,  558,  557,  556,  555,  554,
818      553,  552,  551,  550,  545,  544,  543,  542,  541,  540,
819      539,  538,  537,  536,  535,  532,  531,  530,  529,  528,
820      527,  521,  520,  519,  518,  517,  516,  515,  514,  513,
821      512,  511,  510,  509,  508,  507,  506,  505,  504,  498,
822      497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
823
824      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
825      477,  476,  475,  474,  473,  472,  471,  470,  469,  468,
826      467,  466,  465,  464,  463,  453,  452,  451,  450,  449,
827      443,  442,  441,  440,  439,  438,  437,  436,  435,  434,
828      433,  432,  431,  430,  429,  428,  427,  426,  422,  421,
829      420,  419,  418,  417,  416,  415,  414,  413,  412,  411,
830      410,  409,  408,  407,  406,  405,  404,  403,  402,  401,
831      400,  399,  398,  397,  396,  395,  394,  393,  392,  388,
832      387,  386,  385,  384,  383,  382,  381,  377,  373,  372,
833      371,  370,  369,  365,  364,  363,  362,  361,  360,  359,
834
835      358,  354,  353,  352,  349,  348,  347,  346,  345,  344,
836      343,  339,  338,  337,  336,  335,  332,  331,  330,  329,
837      328,  327,  326,  325,  324,  323,  322,  321,  320,  319,
838      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
839      308,  304,  303,  302,  301,  300,  299,  298,  297,  296,
840      295,  294,  293,  292,  291,  290,  289,  288,  287,  286,
841      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
842      273,  272,  271,  268,  267,  266,  265,  264,  254,  253,
843      252,  251,  250,  247,  246,  245,  238,  237,  236,  235,
844      234,  233,  230,  229,  228,  227,  226,  225,  224,  223,
845
846      220,  217,  216,  215,  212,  211,  210,  204,  203,  202,
847      201,  200,  199,  198,  197,  192,  191,  190,  189,  188,
848      187,  186,  185,  182,  181,  180,  179,  178,  177,  176,
849      175,  174,  173,  172,  161,  149,  125,  109,   81,   69,
850       63,   60,   59,  866,   57,   57,    7,  866,  866,  866,
851      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
852      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
853      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
854      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
855      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
856
857      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
858      866,  866,  866,  866,  866,  866
859    } ;
860
861static yyconst flex_int16_t yy_chk[1317] =
862    {   0,
863        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
864        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
865        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
866        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
867        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
868        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
869        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
870        9,  782,    9,    2,    3,    3,    3,    3,    3,    3,
871        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
872        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
873
874        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
875        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
876        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
877        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
878        3,    3,    3,   13,   15,   25,   16,   17,   17,   17,
879       17,   17,   17,   17,   21,   21,  785,   15,   16,   26,
880       13,   19,   25,   19,   19,   19,   19,   19,   19,   19,
881       23,   23,   36,  788,   26,   26,   36,  789,   19,   19,
882       27,   29,   27,   39,   35,   29,   27,   19,   19,   28,
883       30,   29,   30,   28,   37,   19,   19,   29,   35,   39,
884
885       28,   30,   39,   28,   33,   47,  785,   47,   37,   47,
886       19,   46,   33,   19,   20,   31,   20,   20,   20,   20,
887       20,   20,   20,   31,   33,   50,   31,   50,  120,   31,
888       34,   20,   20,   34,   40,   31,  120,   34,   34,   41,
889       20,   58,   34,   58,   40,   34,   41,   41,   20,   20,
890       42,   41,  124,   42,  790,   46,   43,   41,   41,  124,
891       41,   43,   42,   20,   71,   43,   44,  793,   43,   42,
892       44,   48,   48,   53,   53,   53,   53,   53,   53,   53,
893       44,   68,   68,   70,   70,  148,   73,   73,  148,   71,
894       73,   73,   73,   73,   73,   73,   73,  105,   68,   68,
895
896       70,   70,   96,   96,  106,  126,  116,  135,  105,  116,
897      116,  142,  142,  116,  144,  116,  143,   48,  106,  126,
898      153,  153,  144,  135,   48,  143,  171,  152,   48,  152,
899      160,  152,  160,   48,   72,  795,   72,   72,   72,   72,
900       72,   72,   72,  154,  154,  166,  166,  180,  796,  171,
901      639,   72,   72,  162,  162,  162,  162,  162,  162,  162,
902      639,  180,  166,  166,  184,  184,  153,  241,   72,   72,
903      215,  215,  215,  153,  625,  625,  241,  153,  247,  247,
904      247,  798,  153,  268,  268,  268,  279,  279,  279,  154,
905      288,  288,  288,  292,  292,  292,  154,  301,  301,  301,
906
907      154,  799,  164,  164,  504,  154,  164,  164,  164,  164,
908      164,  164,  164,  167,  167,  504,  802,  167,  167,  167,
909      167,  167,  167,  167,  169,  169,  169,  169,  169,  169,
910      169,  170,  170,  170,  170,  170,  170,  170,  256,  256,
911      256,  256,  256,  256,  256,  663,  663,  170,  805,  257,
912      257,  257,  257,  257,  257,  257,  338,  338,  338,  393,
913      393,  393,  258,  258,  170,  257,  258,  258,  258,  258,
914      258,  258,  258,  260,  260,  260,  260,  260,  260,  260,
915      702,  702,  257,  261,  261,  261,  261,  261,  261,  261,
916      350,  350,  350,  350,  350,  350,  350,  806,  807,  261,
917
918      808,  351,  351,  351,  351,  351,  351,  351,  382,  382,
919      382,  394,  394,  394,  809,  810,  261,  351,  811,  382,
920      382,  395,  395,  395,  443,  443,  443,  483,  483,  483,
921      490,  505,  607,  812,  351,  443,  443,  813,  483,  483,
922      533,  533,  505,  607,  490,  490,  490,  490,  490,  490,
923      490,  519,  519,  519,  533,  533,  533,  533,  533,  533,
924      608,  766,  519,  519,  658,  519,  534,  534,  766,  787,
925      608,  608,  814,  817,  658,  818,  554,  554,  554,  533,
926      534,  534,  534,  534,  534,  534,  534,  554,  554,  574,
927      574,  574,  577,  577,  803,  819,  820,  804,  582,  821,
928
929      574,  574,  579,  579,  533,  804,  577,  577,  577,  577,
930      577,  577,  577,  581,  581,  823,  579,  579,  579,  579,
931      579,  579,  623,  623,  824,  787,  829,  581,  581,  581,
932      581,  581,  581,  581,  582,  786,  623,  623,  623,  623,
933      623,  623,  786,  582,  815,  832,  816,  833,  624,  624,
934      803,  825,  815,  816,  582,  665,  665,  834,  836,  825,
935      839,  623,  624,  624,  624,  624,  624,  624,  624,  665,
936      665,  665,  665,  665,  665,  667,  667,  826,  841,  842,
937      828,  844,  829,  845,  849,  826,  623,  828,  837,  667,
938      667,  667,  667,  667,  667,  667,  837,  840,  846,  850,
939
940      851,  853,  854,  856,  857,  840,  846,  850,  851,  859,
941      854,  857,  858,  860,  861,  862,  839,  863,  864,  858,
942      870,  871,  781,  780,  779,  863,  864,  778,  777,  776,
943      775,  774,  771,  770,  769,  768,  767,  765,  764,  763,
944      762,  761,  758,  757,  754,  753,  752,  751,  750,  748,
945      747,  859,  746,  745,  743,  860,  867,  867,  867,  867,
946      867,  868,  868,  868,  869,  869,  869,  872,  872,  873,
947      741,  873,  873,  873,  874,  874,  875,  875,  738,  737,
948      736,  734,  733,  732,  731,  729,  728,  727,  726,  725,
949      724,  723,  722,  721,  720,  719,  718,  716,  715,  714,
950
951      713,  712,  711,  710,  709,  707,  706,  705,  704,  703,
952      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
953      691,  690,  689,  688,  687,  686,  685,  684,  683,  682,
954      681,  680,  679,  677,  676,  675,  674,  673,  672,  671,
955      670,  669,  668,  661,  660,  657,  655,  654,  653,  652,
956      651,  650,  649,  648,  647,  646,  645,  644,  643,  642,
957      641,  638,  637,  636,  635,  634,  633,  631,  630,  629,
958      628,  627,  626,  622,  621,  620,  619,  618,  617,  616,
959      615,  614,  613,  612,  611,  610,  609,  603,  601,  600,
960      599,  598,  597,  593,  592,  591,  590,  589,  588,  587,
961
962      586,  585,  576,  572,  571,  569,  568,  566,  565,  564,
963      563,  562,  561,  560,  559,  558,  557,  555,  553,  552,
964      551,  550,  549,  548,  547,  546,  545,  544,  542,  541,
965      537,  536,  535,  532,  531,  529,  528,  526,  525,  524,
966      523,  522,  520,  518,  517,  516,  515,  514,  513,  511,
967      510,  509,  508,  507,  503,  502,  501,  500,  499,  498,
968      495,  494,  493,  492,  491,  489,  488,  487,  486,  485,
969      484,  482,  481,  474,  473,  470,  469,  466,  465,  464,
970      463,  452,  451,  450,  448,  447,  446,  445,  444,  441,
971      439,  438,  437,  435,  434,  432,  431,  430,  429,  427,
972
973      426,  421,  420,  418,  417,  416,  415,  414,  413,  412,
974      411,  410,  409,  407,  406,  405,  404,  403,  402,  401,
975      400,  399,  398,  397,  396,  392,  388,  387,  386,  383,
976      381,  371,  369,  365,  364,  363,  362,  360,  358,  353,
977      352,  349,  348,  347,  346,  345,  344,  339,  337,  336,
978      335,  334,  333,  331,  330,  327,  326,  325,  324,  323,
979      322,  321,  320,  319,  318,  317,  316,  315,  314,  313,
980      312,  311,  310,  309,  308,  307,  306,  305,  302,  300,
981      299,  298,  297,  296,  295,  294,  293,  291,  287,  285,
982      284,  283,  282,  278,  277,  276,  275,  274,  273,  272,
983
984      271,  267,  265,  264,  254,  253,  252,  251,  250,  249,
985      248,  246,  245,  244,  243,  242,  240,  239,  238,  237,
986      236,  235,  234,  233,  232,  231,  230,  229,  228,  227,
987      226,  225,  224,  223,  222,  221,  220,  219,  218,  217,
988      216,  214,  213,  212,  211,  210,  209,  208,  207,  206,
989      205,  204,  203,  202,  201,  200,  199,  198,  196,  195,
990      194,  193,  192,  191,  190,  189,  188,  187,  186,  185,
991      183,  182,  181,  179,  178,  177,  176,  174,  159,  158,
992      157,  156,  149,  147,  146,  145,  141,  140,  139,  138,
993      137,  136,  134,  133,  132,  131,  130,  129,  128,  127,
994
995      125,  123,  122,  121,  119,  118,  117,  115,  114,  112,
996      111,  110,  109,  108,  107,  104,  103,  102,  101,  100,
997       99,   98,   97,   95,   94,   93,   92,   91,   90,   89,
998       88,   87,   83,   79,   52,   45,   38,   32,   22,   18,
999       14,   12,   11,    7,    6,    5,  866,  866,  866,  866,
1000      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1001      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1002      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1003      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1004      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1005
1006      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
1007      866,  866,  866,  866,  866,  866
1008    } ;
1009
1010/* The intent behind this definition is that it'll catch
1011 * any uses of REJECT which flex missed.
1012 */
1013#define REJECT reject_used_but_not_detected
1014#define yymore() yymore_used_but_not_detected
1015#define YY_MORE_ADJ 0
1016#define YY_RESTORE_YY_MORE_OFFSET
1017#line 1 "src/src/glsl/glsl_lexer.ll"
1018#line 2 "src/src/glsl/glsl_lexer.ll"
1019/*
1020 * Copyright © 2008, 2009 Intel Corporation
1021 *
1022 * Permission is hereby granted, free of charge, to any person obtaining a
1023 * copy of this software and associated documentation files (the "Software"),
1024 * to deal in the Software without restriction, including without limitation
1025 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1026 * and/or sell copies of the Software, and to permit persons to whom the
1027 * Software is furnished to do so, subject to the following conditions:
1028 *
1029 * The above copyright notice and this permission notice (including the next
1030 * paragraph) shall be included in all copies or substantial portions of the
1031 * Software.
1032 *
1033 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1034 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1035 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1036 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1037 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1038 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1039 * DEALINGS IN THE SOFTWARE.
1040 */
1041#include <ctype.h>
1042#include <limits.h>
1043#include "strtod.h"
1044#include "ast.h"
1045#include "glsl_parser_extras.h"
1046#include "glsl_parser.h"
1047
1048static int classify_identifier(struct _mesa_glsl_parse_state *, const char *);
1049
1050#ifdef _MSC_VER
1051#define YY_NO_UNISTD_H
1052#endif
1053
1054#define YY_USER_ACTION						\
1055   do {								\
1056      yylloc->source = 0;					\
1057      yylloc->first_column = yycolumn + 1;			\
1058      yylloc->first_line = yylineno + 1;			\
1059      yycolumn += yyleng;					\
1060   } while(0);
1061
1062#define YY_USER_INIT yylineno = 0; yycolumn = 0;
1063
1064/* A macro for handling reserved words and keywords across language versions.
1065 *
1066 * Certain words start out as identifiers, become reserved words in
1067 * later language revisions, and finally become language keywords.
1068 *
1069 * For example, consider the following lexer rule:
1070 * samplerBuffer       KEYWORD(130, 140, SAMPLERBUFFER)
1071 *
1072 * This means that "samplerBuffer" will be treated as:
1073 * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
1074 * - a reserved word - error                 ...in GLSL >= 1.30
1075 * - an identifier                           ...in GLSL <  1.30
1076 */
1077#define KEYWORD(reserved_version, allowed_version, token)		\
1078   do {									\
1079      if (yyextra->language_version >= allowed_version) {		\
1080	 return token;							\
1081      } else if (yyextra->language_version >= reserved_version) {	\
1082	 _mesa_glsl_error(yylloc, yyextra,				\
1083			  "Illegal use of reserved word `%s'", yytext);	\
1084	 return ERROR_TOK;						\
1085      } else {								\
1086	 yylval->identifier = strdup(yytext);				\
1087	 return classify_identifier(yyextra, yytext);			\
1088      }									\
1089   } while (0)
1090
1091/* The ES macro can be used in KEYWORD checks:
1092 *
1093 *    word      KEYWORD(110 || ES, 400, TOKEN)
1094 * ...means the word is reserved in GLSL ES 1.00, while
1095 *
1096 *    word      KEYWORD(110, 130 || ES, TOKEN)
1097 * ...means the word is a legal keyword in GLSL ES 1.00.
1098 */
1099#define ES yyextra->es_shader
1100
1101static int
1102literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
1103		YYSTYPE *lval, YYLTYPE *lloc, int base)
1104{
1105   bool is_uint = (text[len - 1] == 'u' ||
1106		   text[len - 1] == 'U');
1107   const char *digits = text;
1108
1109   /* Skip "0x" */
1110   if (base == 16)
1111      digits += 2;
1112
1113#ifdef _MSC_VER
1114   unsigned __int64 value = _strtoui64(digits, NULL, base);
1115#else
1116   unsigned long long value = strtoull(digits, NULL, base);
1117#endif
1118
1119   lval->n = (int)value;
1120
1121   if (value > UINT_MAX) {
1122      /* Note that signed 0xffffffff is valid, not out of range! */
1123      if (state->language_version >= 130) {
1124	 _mesa_glsl_error(lloc, state,
1125			  "Literal value `%s' out of range", text);
1126      } else {
1127	 _mesa_glsl_warning(lloc, state,
1128			    "Literal value `%s' out of range", text);
1129      }
1130   } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) {
1131      /* Tries to catch unintentionally providing a negative value.
1132       * Note that -2147483648 is parsed as -(2147483648), so we don't
1133       * want to warn for INT_MAX.
1134       */
1135      _mesa_glsl_warning(lloc, state,
1136			 "Signed literal value `%s' is interpreted as %d",
1137			 text, lval->n);
1138   }
1139   return is_uint ? UINTCONSTANT : INTCONSTANT;
1140}
1141
1142#define LITERAL_INTEGER(base) \
1143   literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base)
1144
1145
1146#line 1147 "src/chromium_gensrc/mesa/glsl_lexer.cc"
1147
1148#define INITIAL 0
1149#define PP 1
1150#define PRAGMA 2
1151
1152#define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
1153
1154/* Holds the entire state of the reentrant scanner. */
1155struct yyguts_t
1156    {
1157
1158    /* User-defined. Not touched by flex. */
1159    YY_EXTRA_TYPE yyextra_r;
1160
1161    /* The rest are the same as the globals declared in the non-reentrant scanner. */
1162    FILE *yyin_r, *yyout_r;
1163    size_t yy_buffer_stack_top; /**< index of top of stack. */
1164    size_t yy_buffer_stack_max; /**< capacity of stack. */
1165    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1166    char yy_hold_char;
1167    int yy_n_chars;
1168    int yyleng_r;
1169    char *yy_c_buf_p;
1170    int yy_init;
1171    int yy_start;
1172    int yy_did_buffer_switch_on_eof;
1173    int yy_start_stack_ptr;
1174    int yy_start_stack_depth;
1175    int *yy_start_stack;
1176    yy_state_type yy_last_accepting_state;
1177    char* yy_last_accepting_cpos;
1178
1179    int yylineno_r;
1180    int yy_flex_debug_r;
1181
1182    char *yytext_r;
1183    int yy_more_flag;
1184    int yy_more_len;
1185
1186    YYSTYPE * yylval_r;
1187
1188    YYLTYPE * yylloc_r;
1189
1190    }; /* end struct yyguts_t */
1191
1192static int yy_init_globals (yyscan_t yyscanner );
1193
1194    /* This must go here because YYSTYPE and YYLTYPE are included
1195     * from bison output in section 1.*/
1196    #    define yylval yyg->yylval_r
1197
1198    #    define yylloc yyg->yylloc_r
1199
1200int _mesa_glsl_lex_init (yyscan_t* scanner);
1201
1202int _mesa_glsl_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
1203
1204/* Accessor methods to globals.
1205   These are made visible to non-reentrant scanners for convenience. */
1206
1207int _mesa_glsl_lex_destroy (yyscan_t yyscanner );
1208
1209int _mesa_glsl_get_debug (yyscan_t yyscanner );
1210
1211void _mesa_glsl_set_debug (int debug_flag ,yyscan_t yyscanner );
1212
1213YY_EXTRA_TYPE _mesa_glsl_get_extra (yyscan_t yyscanner );
1214
1215void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1216
1217FILE *_mesa_glsl_get_in (yyscan_t yyscanner );
1218
1219void _mesa_glsl_set_in  (FILE * in_str ,yyscan_t yyscanner );
1220
1221FILE *_mesa_glsl_get_out (yyscan_t yyscanner );
1222
1223void _mesa_glsl_set_out  (FILE * out_str ,yyscan_t yyscanner );
1224
1225int _mesa_glsl_get_leng (yyscan_t yyscanner );
1226
1227char *_mesa_glsl_get_text (yyscan_t yyscanner );
1228
1229int _mesa_glsl_get_lineno (yyscan_t yyscanner );
1230
1231void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner );
1232
1233YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner );
1234
1235void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1236
1237       YYLTYPE *_mesa_glsl_get_lloc (yyscan_t yyscanner );
1238
1239        void _mesa_glsl_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
1240
1241/* Macros after this point can all be overridden by user definitions in
1242 * section 1.
1243 */
1244
1245#ifndef YY_SKIP_YYWRAP
1246#ifdef __cplusplus
1247extern "C" int _mesa_glsl_wrap (yyscan_t yyscanner );
1248#else
1249extern int _mesa_glsl_wrap (yyscan_t yyscanner );
1250#endif
1251#endif
1252
1253#ifndef yytext_ptr
1254static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1255#endif
1256
1257#ifdef YY_NEED_STRLEN
1258static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1259#endif
1260
1261#ifndef YY_NO_INPUT
1262
1263#ifdef __cplusplus
1264static int yyinput (yyscan_t yyscanner );
1265#else
1266static int input (yyscan_t yyscanner );
1267#endif
1268
1269#endif
1270
1271/* Amount of stuff to slurp up with each read. */
1272#ifndef YY_READ_BUF_SIZE
1273#ifdef __ia64__
1274/* On IA-64, the buffer size is 16k, not 8k */
1275#define YY_READ_BUF_SIZE 16384
1276#else
1277#define YY_READ_BUF_SIZE 8192
1278#endif /* __ia64__ */
1279#endif
1280
1281/* Copy whatever the last rule matched to the standard output. */
1282#ifndef ECHO
1283/* This used to be an fputs(), but since the string might contain NUL's,
1284 * we now use fwrite().
1285 */
1286#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1287#endif
1288
1289/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1290 * is returned in "result".
1291 */
1292#ifndef YY_INPUT
1293#define YY_INPUT(buf,result,max_size) \
1294	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1295		{ \
1296		int c = '*'; \
1297		size_t n; \
1298		for ( n = 0; n < max_size && \
1299			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1300			buf[n] = (char) c; \
1301		if ( c == '\n' ) \
1302			buf[n++] = (char) c; \
1303		if ( c == EOF && ferror( yyin ) ) \
1304			YY_FATAL_ERROR( "input in flex scanner failed" ); \
1305		result = n; \
1306		} \
1307	else \
1308		{ \
1309		errno=0; \
1310		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1311			{ \
1312			if( errno != EINTR) \
1313				{ \
1314				YY_FATAL_ERROR( "input in flex scanner failed" ); \
1315				break; \
1316				} \
1317			errno=0; \
1318			clearerr(yyin); \
1319			} \
1320		}\
1321\
1322
1323#endif
1324
1325/* No semi-colon after return; correct usage is to write "yyterminate();" -
1326 * we don't want an extra ';' after the "return" because that will cause
1327 * some compilers to complain about unreachable statements.
1328 */
1329#ifndef yyterminate
1330#define yyterminate() return YY_NULL
1331#endif
1332
1333/* Number of entries by which start-condition stack grows. */
1334#ifndef YY_START_STACK_INCR
1335#define YY_START_STACK_INCR 25
1336#endif
1337
1338/* Report a fatal error. */
1339#ifndef YY_FATAL_ERROR
1340#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1341#endif
1342
1343/* end tables serialization structures and prototypes */
1344
1345/* Default declaration of generated scanner - a define so the user can
1346 * easily add parameters.
1347 */
1348#ifndef YY_DECL
1349#define YY_DECL_IS_OURS 1
1350
1351extern int _mesa_glsl_lex \
1352               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1353
1354#define YY_DECL int _mesa_glsl_lex \
1355               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1356#endif /* !YY_DECL */
1357
1358/* Code executed at the beginning of each rule, after yytext and yyleng
1359 * have been set up.
1360 */
1361#ifndef YY_USER_ACTION
1362#define YY_USER_ACTION
1363#endif
1364
1365/* Code executed at the end of each rule. */
1366#ifndef YY_BREAK
1367#define YY_BREAK break;
1368#endif
1369
1370#define YY_RULE_SETUP \
1371	if ( yyleng > 0 ) \
1372		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1373				(yytext[yyleng - 1] == '\n'); \
1374	YY_USER_ACTION
1375
1376/** The main scanner function which does all the work.
1377 */
1378YY_DECL
1379{
1380	register yy_state_type yy_current_state;
1381	register char *yy_cp, *yy_bp;
1382	register int yy_act;
1383    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1384
1385#line 145 "src/src/glsl/glsl_lexer.ll"
1386
1387
1388#line 1389 "src/chromium_gensrc/mesa/glsl_lexer.cc"
1389
1390    yylval = yylval_param;
1391
1392    yylloc = yylloc_param;
1393
1394	if ( !yyg->yy_init )
1395		{
1396		yyg->yy_init = 1;
1397
1398#ifdef YY_USER_INIT
1399		YY_USER_INIT;
1400#endif
1401
1402		if ( ! yyg->yy_start )
1403			yyg->yy_start = 1;	/* first start state */
1404
1405		if ( ! yyin )
1406			yyin = stdin;
1407
1408		if ( ! yyout )
1409			yyout = stdout;
1410
1411		if ( ! YY_CURRENT_BUFFER ) {
1412			_mesa_glsl_ensure_buffer_stack (yyscanner);
1413			YY_CURRENT_BUFFER_LVALUE =
1414				_mesa_glsl__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1415		}
1416
1417		_mesa_glsl__load_buffer_state(yyscanner );
1418		}
1419
1420	while ( 1 )		/* loops until end-of-file is reached */
1421		{
1422		yy_cp = yyg->yy_c_buf_p;
1423
1424		/* Support of yytext. */
1425		*yy_cp = yyg->yy_hold_char;
1426
1427		/* yy_bp points to the position in yy_ch_buf of the start of
1428		 * the current run.
1429		 */
1430		yy_bp = yy_cp;
1431
1432		yy_current_state = yyg->yy_start;
1433		yy_current_state += YY_AT_BOL();
1434yy_match:
1435		do
1436			{
1437			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1438			if ( yy_accept[yy_current_state] )
1439				{
1440				yyg->yy_last_accepting_state = yy_current_state;
1441				yyg->yy_last_accepting_cpos = yy_cp;
1442				}
1443			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1444				{
1445				yy_current_state = (int) yy_def[yy_current_state];
1446				if ( yy_current_state >= 867 )
1447					yy_c = yy_meta[(unsigned int) yy_c];
1448				}
1449			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1450			++yy_cp;
1451			}
1452		while ( yy_current_state != 866 );
1453		yy_cp = yyg->yy_last_accepting_cpos;
1454		yy_current_state = yyg->yy_last_accepting_state;
1455
1456yy_find_action:
1457		yy_act = yy_accept[yy_current_state];
1458
1459		YY_DO_BEFORE_ACTION;
1460
1461do_action:	/* This label is used only to access EOF actions. */
1462
1463		switch ( yy_act )
1464	{ /* beginning of action switch */
1465			case 0: /* must back up */
1466			/* undo the effects of YY_DO_BEFORE_ACTION */
1467			*yy_cp = yyg->yy_hold_char;
1468			yy_cp = yyg->yy_last_accepting_cpos;
1469			yy_current_state = yyg->yy_last_accepting_state;
1470			goto yy_find_action;
1471
1472case 1:
1473YY_RULE_SETUP
1474#line 147 "src/src/glsl/glsl_lexer.ll"
1475;
1476	YY_BREAK
1477/* Preprocessor tokens. */
1478case 2:
1479*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1480yyg->yy_c_buf_p = yy_cp -= 1;
1481YY_DO_BEFORE_ACTION; /* set up yytext again */
1482YY_RULE_SETUP
1483#line 150 "src/src/glsl/glsl_lexer.ll"
1484;
1485	YY_BREAK
1486case 3:
1487YY_RULE_SETUP
1488#line 151 "src/src/glsl/glsl_lexer.ll"
1489{ BEGIN PP; return VERSION_TOK; }
1490	YY_BREAK
1491case 4:
1492YY_RULE_SETUP
1493#line 152 "src/src/glsl/glsl_lexer.ll"
1494{ BEGIN PP; return EXTENSION; }
1495	YY_BREAK
1496case 5:
1497*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1498yyg->yy_c_buf_p = yy_cp -= 1;
1499YY_DO_BEFORE_ACTION; /* set up yytext again */
1500YY_RULE_SETUP
1501#line 153 "src/src/glsl/glsl_lexer.ll"
1502{
1503				   /* Eat characters until the first digit is
1504				    * encountered
1505				    */
1506				   char *ptr = yytext;
1507				   while (!isdigit(*ptr))
1508				      ptr++;
1509
1510				   /* Subtract one from the line number because
1511				    * yylineno is zero-based instead of
1512				    * one-based.
1513				    */
1514				   yylineno = strtol(ptr, &ptr, 0) - 1;
1515				   yylloc->source = strtol(ptr, NULL, 0);
1516				}
1517	YY_BREAK
1518case 6:
1519*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1520yyg->yy_c_buf_p = yy_cp -= 1;
1521YY_DO_BEFORE_ACTION; /* set up yytext again */
1522YY_RULE_SETUP
1523#line 168 "src/src/glsl/glsl_lexer.ll"
1524{
1525				   /* Eat characters until the first digit is
1526				    * encountered
1527				    */
1528				   char *ptr = yytext;
1529				   while (!isdigit(*ptr))
1530				      ptr++;
1531
1532				   /* Subtract one from the line number because
1533				    * yylineno is zero-based instead of
1534				    * one-based.
1535				    */
1536				   yylineno = strtol(ptr, &ptr, 0) - 1;
1537				}
1538	YY_BREAK
1539case 7:
1540YY_RULE_SETUP
1541#line 182 "src/src/glsl/glsl_lexer.ll"
1542{
1543				  BEGIN PP;
1544				  return PRAGMA_DEBUG_ON;
1545				}
1546	YY_BREAK
1547case 8:
1548YY_RULE_SETUP
1549#line 186 "src/src/glsl/glsl_lexer.ll"
1550{
1551				  BEGIN PP;
1552				  return PRAGMA_DEBUG_OFF;
1553				}
1554	YY_BREAK
1555case 9:
1556YY_RULE_SETUP
1557#line 190 "src/src/glsl/glsl_lexer.ll"
1558{
1559				  BEGIN PP;
1560				  return PRAGMA_OPTIMIZE_ON;
1561				}
1562	YY_BREAK
1563case 10:
1564YY_RULE_SETUP
1565#line 194 "src/src/glsl/glsl_lexer.ll"
1566{
1567				  BEGIN PP;
1568				  return PRAGMA_OPTIMIZE_OFF;
1569				}
1570	YY_BREAK
1571case 11:
1572YY_RULE_SETUP
1573#line 198 "src/src/glsl/glsl_lexer.ll"
1574{
1575				  BEGIN PP;
1576				  return PRAGMA_INVARIANT_ALL;
1577				}
1578	YY_BREAK
1579case 12:
1580YY_RULE_SETUP
1581#line 202 "src/src/glsl/glsl_lexer.ll"
1582{ BEGIN PRAGMA; }
1583	YY_BREAK
1584case 13:
1585/* rule 13 can match eol */
1586YY_RULE_SETUP
1587#line 204 "src/src/glsl/glsl_lexer.ll"
1588{ BEGIN 0; yylineno++; yycolumn = 0; }
1589	YY_BREAK
1590case 14:
1591YY_RULE_SETUP
1592#line 205 "src/src/glsl/glsl_lexer.ll"
1593{ }
1594	YY_BREAK
1595case 15:
1596YY_RULE_SETUP
1597#line 207 "src/src/glsl/glsl_lexer.ll"
1598{ }
1599	YY_BREAK
1600case 16:
1601YY_RULE_SETUP
1602#line 208 "src/src/glsl/glsl_lexer.ll"
1603{ }
1604	YY_BREAK
1605case 17:
1606YY_RULE_SETUP
1607#line 209 "src/src/glsl/glsl_lexer.ll"
1608return COLON;
1609	YY_BREAK
1610case 18:
1611YY_RULE_SETUP
1612#line 210 "src/src/glsl/glsl_lexer.ll"
1613{
1614				   yylval->identifier = strdup(yytext);
1615				   return IDENTIFIER;
1616				}
1617	YY_BREAK
1618case 19:
1619YY_RULE_SETUP
1620#line 214 "src/src/glsl/glsl_lexer.ll"
1621{
1622				    yylval->n = strtol(yytext, NULL, 10);
1623				    return INTCONSTANT;
1624				}
1625	YY_BREAK
1626case 20:
1627/* rule 20 can match eol */
1628YY_RULE_SETUP
1629#line 218 "src/src/glsl/glsl_lexer.ll"
1630{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
1631	YY_BREAK
1632case 21:
1633/* rule 21 can match eol */
1634YY_RULE_SETUP
1635#line 220 "src/src/glsl/glsl_lexer.ll"
1636{ yylineno++; yycolumn = 0; }
1637	YY_BREAK
1638case 22:
1639YY_RULE_SETUP
1640#line 222 "src/src/glsl/glsl_lexer.ll"
1641return ATTRIBUTE;
1642	YY_BREAK
1643case 23:
1644YY_RULE_SETUP
1645#line 223 "src/src/glsl/glsl_lexer.ll"
1646return CONST_TOK;
1647	YY_BREAK
1648case 24:
1649YY_RULE_SETUP
1650#line 224 "src/src/glsl/glsl_lexer.ll"
1651return BOOL_TOK;
1652	YY_BREAK
1653case 25:
1654YY_RULE_SETUP
1655#line 225 "src/src/glsl/glsl_lexer.ll"
1656return FLOAT_TOK;
1657	YY_BREAK
1658case 26:
1659YY_RULE_SETUP
1660#line 226 "src/src/glsl/glsl_lexer.ll"
1661return INT_TOK;
1662	YY_BREAK
1663case 27:
1664YY_RULE_SETUP
1665#line 227 "src/src/glsl/glsl_lexer.ll"
1666KEYWORD(130, 130, UINT_TOK);
1667	YY_BREAK
1668case 28:
1669YY_RULE_SETUP
1670#line 229 "src/src/glsl/glsl_lexer.ll"
1671return BREAK;
1672	YY_BREAK
1673case 29:
1674YY_RULE_SETUP
1675#line 230 "src/src/glsl/glsl_lexer.ll"
1676return CONTINUE;
1677	YY_BREAK
1678case 30:
1679YY_RULE_SETUP
1680#line 231 "src/src/glsl/glsl_lexer.ll"
1681return DO;
1682	YY_BREAK
1683case 31:
1684YY_RULE_SETUP
1685#line 232 "src/src/glsl/glsl_lexer.ll"
1686return WHILE;
1687	YY_BREAK
1688case 32:
1689YY_RULE_SETUP
1690#line 233 "src/src/glsl/glsl_lexer.ll"
1691return ELSE;
1692	YY_BREAK
1693case 33:
1694YY_RULE_SETUP
1695#line 234 "src/src/glsl/glsl_lexer.ll"
1696return FOR;
1697	YY_BREAK
1698case 34:
1699YY_RULE_SETUP
1700#line 235 "src/src/glsl/glsl_lexer.ll"
1701return IF;
1702	YY_BREAK
1703case 35:
1704YY_RULE_SETUP
1705#line 236 "src/src/glsl/glsl_lexer.ll"
1706return DISCARD;
1707	YY_BREAK
1708case 36:
1709YY_RULE_SETUP
1710#line 237 "src/src/glsl/glsl_lexer.ll"
1711return RETURN;
1712	YY_BREAK
1713case 37:
1714YY_RULE_SETUP
1715#line 239 "src/src/glsl/glsl_lexer.ll"
1716return BVEC2;
1717	YY_BREAK
1718case 38:
1719YY_RULE_SETUP
1720#line 240 "src/src/glsl/glsl_lexer.ll"
1721return BVEC3;
1722	YY_BREAK
1723case 39:
1724YY_RULE_SETUP
1725#line 241 "src/src/glsl/glsl_lexer.ll"
1726return BVEC4;
1727	YY_BREAK
1728case 40:
1729YY_RULE_SETUP
1730#line 242 "src/src/glsl/glsl_lexer.ll"
1731return IVEC2;
1732	YY_BREAK
1733case 41:
1734YY_RULE_SETUP
1735#line 243 "src/src/glsl/glsl_lexer.ll"
1736return IVEC3;
1737	YY_BREAK
1738case 42:
1739YY_RULE_SETUP
1740#line 244 "src/src/glsl/glsl_lexer.ll"
1741return IVEC4;
1742	YY_BREAK
1743case 43:
1744YY_RULE_SETUP
1745#line 245 "src/src/glsl/glsl_lexer.ll"
1746KEYWORD(130, 130, UVEC2);
1747	YY_BREAK
1748case 44:
1749YY_RULE_SETUP
1750#line 246 "src/src/glsl/glsl_lexer.ll"
1751KEYWORD(130, 130, UVEC3);
1752	YY_BREAK
1753case 45:
1754YY_RULE_SETUP
1755#line 247 "src/src/glsl/glsl_lexer.ll"
1756KEYWORD(130, 130, UVEC4);
1757	YY_BREAK
1758case 46:
1759YY_RULE_SETUP
1760#line 248 "src/src/glsl/glsl_lexer.ll"
1761return VEC2;
1762	YY_BREAK
1763case 47:
1764YY_RULE_SETUP
1765#line 249 "src/src/glsl/glsl_lexer.ll"
1766return VEC3;
1767	YY_BREAK
1768case 48:
1769YY_RULE_SETUP
1770#line 250 "src/src/glsl/glsl_lexer.ll"
1771return VEC4;
1772	YY_BREAK
1773case 49:
1774YY_RULE_SETUP
1775#line 251 "src/src/glsl/glsl_lexer.ll"
1776return MAT2X2;
1777	YY_BREAK
1778case 50:
1779YY_RULE_SETUP
1780#line 252 "src/src/glsl/glsl_lexer.ll"
1781return MAT3X3;
1782	YY_BREAK
1783case 51:
1784YY_RULE_SETUP
1785#line 253 "src/src/glsl/glsl_lexer.ll"
1786return MAT4X4;
1787	YY_BREAK
1788case 52:
1789YY_RULE_SETUP
1790#line 254 "src/src/glsl/glsl_lexer.ll"
1791KEYWORD(120, 120, MAT2X2);
1792	YY_BREAK
1793case 53:
1794YY_RULE_SETUP
1795#line 255 "src/src/glsl/glsl_lexer.ll"
1796KEYWORD(120, 120, MAT2X3);
1797	YY_BREAK
1798case 54:
1799YY_RULE_SETUP
1800#line 256 "src/src/glsl/glsl_lexer.ll"
1801KEYWORD(120, 120, MAT2X4);
1802	YY_BREAK
1803case 55:
1804YY_RULE_SETUP
1805#line 257 "src/src/glsl/glsl_lexer.ll"
1806KEYWORD(120, 120, MAT3X2);
1807	YY_BREAK
1808case 56:
1809YY_RULE_SETUP
1810#line 258 "src/src/glsl/glsl_lexer.ll"
1811KEYWORD(120, 120, MAT3X3);
1812	YY_BREAK
1813case 57:
1814YY_RULE_SETUP
1815#line 259 "src/src/glsl/glsl_lexer.ll"
1816KEYWORD(120, 120, MAT3X4);
1817	YY_BREAK
1818case 58:
1819YY_RULE_SETUP
1820#line 260 "src/src/glsl/glsl_lexer.ll"
1821KEYWORD(120, 120, MAT4X2);
1822	YY_BREAK
1823case 59:
1824YY_RULE_SETUP
1825#line 261 "src/src/glsl/glsl_lexer.ll"
1826KEYWORD(120, 120, MAT4X3);
1827	YY_BREAK
1828case 60:
1829YY_RULE_SETUP
1830#line 262 "src/src/glsl/glsl_lexer.ll"
1831KEYWORD(120, 120, MAT4X4);
1832	YY_BREAK
1833case 61:
1834YY_RULE_SETUP
1835#line 264 "src/src/glsl/glsl_lexer.ll"
1836return IN_TOK;
1837	YY_BREAK
1838case 62:
1839YY_RULE_SETUP
1840#line 265 "src/src/glsl/glsl_lexer.ll"
1841return OUT_TOK;
1842	YY_BREAK
1843case 63:
1844YY_RULE_SETUP
1845#line 266 "src/src/glsl/glsl_lexer.ll"
1846return INOUT_TOK;
1847	YY_BREAK
1848case 64:
1849YY_RULE_SETUP
1850#line 267 "src/src/glsl/glsl_lexer.ll"
1851return UNIFORM;
1852	YY_BREAK
1853case 65:
1854YY_RULE_SETUP
1855#line 268 "src/src/glsl/glsl_lexer.ll"
1856return VARYING;
1857	YY_BREAK
1858case 66:
1859YY_RULE_SETUP
1860#line 269 "src/src/glsl/glsl_lexer.ll"
1861KEYWORD(120, 120, CENTROID);
1862	YY_BREAK
1863case 67:
1864YY_RULE_SETUP
1865#line 270 "src/src/glsl/glsl_lexer.ll"
1866KEYWORD(120 || ES, 120 || ES, INVARIANT);
1867	YY_BREAK
1868case 68:
1869YY_RULE_SETUP
1870#line 271 "src/src/glsl/glsl_lexer.ll"
1871KEYWORD(130 || ES, 130, FLAT);
1872	YY_BREAK
1873case 69:
1874YY_RULE_SETUP
1875#line 272 "src/src/glsl/glsl_lexer.ll"
1876KEYWORD(130, 130, SMOOTH);
1877	YY_BREAK
1878case 70:
1879YY_RULE_SETUP
1880#line 273 "src/src/glsl/glsl_lexer.ll"
1881KEYWORD(130, 130, NOPERSPECTIVE);
1882	YY_BREAK
1883case 71:
1884YY_RULE_SETUP
1885#line 275 "src/src/glsl/glsl_lexer.ll"
1886return SAMPLER1D;
1887	YY_BREAK
1888case 72:
1889YY_RULE_SETUP
1890#line 276 "src/src/glsl/glsl_lexer.ll"
1891return SAMPLER2D;
1892	YY_BREAK
1893case 73:
1894YY_RULE_SETUP
1895#line 277 "src/src/glsl/glsl_lexer.ll"
1896return SAMPLER3D;
1897	YY_BREAK
1898case 74:
1899YY_RULE_SETUP
1900#line 278 "src/src/glsl/glsl_lexer.ll"
1901return SAMPLERCUBE;
1902	YY_BREAK
1903case 75:
1904YY_RULE_SETUP
1905#line 279 "src/src/glsl/glsl_lexer.ll"
1906KEYWORD(130, 130, SAMPLER1DARRAY);
1907	YY_BREAK
1908case 76:
1909YY_RULE_SETUP
1910#line 280 "src/src/glsl/glsl_lexer.ll"
1911KEYWORD(130, 130, SAMPLER2DARRAY);
1912	YY_BREAK
1913case 77:
1914YY_RULE_SETUP
1915#line 281 "src/src/glsl/glsl_lexer.ll"
1916return SAMPLER1DSHADOW;
1917	YY_BREAK
1918case 78:
1919YY_RULE_SETUP
1920#line 282 "src/src/glsl/glsl_lexer.ll"
1921return SAMPLER2DSHADOW;
1922	YY_BREAK
1923case 79:
1924YY_RULE_SETUP
1925#line 283 "src/src/glsl/glsl_lexer.ll"
1926KEYWORD(130, 130, SAMPLERCUBESHADOW);
1927	YY_BREAK
1928case 80:
1929YY_RULE_SETUP
1930#line 284 "src/src/glsl/glsl_lexer.ll"
1931KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
1932	YY_BREAK
1933case 81:
1934YY_RULE_SETUP
1935#line 285 "src/src/glsl/glsl_lexer.ll"
1936KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
1937	YY_BREAK
1938case 82:
1939YY_RULE_SETUP
1940#line 286 "src/src/glsl/glsl_lexer.ll"
1941KEYWORD(130, 130, ISAMPLER1D);
1942	YY_BREAK
1943case 83:
1944YY_RULE_SETUP
1945#line 287 "src/src/glsl/glsl_lexer.ll"
1946KEYWORD(130, 130, ISAMPLER2D);
1947	YY_BREAK
1948case 84:
1949YY_RULE_SETUP
1950#line 288 "src/src/glsl/glsl_lexer.ll"
1951KEYWORD(130, 130, ISAMPLER3D);
1952	YY_BREAK
1953case 85:
1954YY_RULE_SETUP
1955#line 289 "src/src/glsl/glsl_lexer.ll"
1956KEYWORD(130, 130, ISAMPLERCUBE);
1957	YY_BREAK
1958case 86:
1959YY_RULE_SETUP
1960#line 290 "src/src/glsl/glsl_lexer.ll"
1961KEYWORD(130, 130, ISAMPLER1DARRAY);
1962	YY_BREAK
1963case 87:
1964YY_RULE_SETUP
1965#line 291 "src/src/glsl/glsl_lexer.ll"
1966KEYWORD(130, 130, ISAMPLER2DARRAY);
1967	YY_BREAK
1968case 88:
1969YY_RULE_SETUP
1970#line 292 "src/src/glsl/glsl_lexer.ll"
1971KEYWORD(130, 130, USAMPLER1D);
1972	YY_BREAK
1973case 89:
1974YY_RULE_SETUP
1975#line 293 "src/src/glsl/glsl_lexer.ll"
1976KEYWORD(130, 130, USAMPLER2D);
1977	YY_BREAK
1978case 90:
1979YY_RULE_SETUP
1980#line 294 "src/src/glsl/glsl_lexer.ll"
1981KEYWORD(130, 130, USAMPLER3D);
1982	YY_BREAK
1983case 91:
1984YY_RULE_SETUP
1985#line 295 "src/src/glsl/glsl_lexer.ll"
1986KEYWORD(130, 130, USAMPLERCUBE);
1987	YY_BREAK
1988case 92:
1989YY_RULE_SETUP
1990#line 296 "src/src/glsl/glsl_lexer.ll"
1991KEYWORD(130, 130, USAMPLER1DARRAY);
1992	YY_BREAK
1993case 93:
1994YY_RULE_SETUP
1995#line 297 "src/src/glsl/glsl_lexer.ll"
1996KEYWORD(130, 130, USAMPLER2DARRAY);
1997	YY_BREAK
1998case 94:
1999YY_RULE_SETUP
2000#line 299 "src/src/glsl/glsl_lexer.ll"
2001{
2002			  if (yyextra->OES_EGL_image_external_enable)
2003			     return SAMPLEREXTERNALOES;
2004			  else
2005			     return IDENTIFIER;
2006			}
2007	YY_BREAK
2008case 95:
2009YY_RULE_SETUP
2010#line 307 "src/src/glsl/glsl_lexer.ll"
2011return STRUCT;
2012	YY_BREAK
2013case 96:
2014YY_RULE_SETUP
2015#line 308 "src/src/glsl/glsl_lexer.ll"
2016return VOID_TOK;
2017	YY_BREAK
2018case 97:
2019YY_RULE_SETUP
2020#line 310 "src/src/glsl/glsl_lexer.ll"
2021{
2022		  if ((yyextra->language_version >= 140)
2023		      || yyextra->AMD_conservative_depth_enable
2024		      || yyextra->ARB_conservative_depth_enable
2025		      || yyextra->ARB_explicit_attrib_location_enable
2026		      || yyextra->ARB_uniform_buffer_object_enable
2027		      || yyextra->ARB_fragment_coord_conventions_enable) {
2028		      return LAYOUT_TOK;
2029		   } else {
2030		      yylval->identifier = strdup(yytext);
2031		      return IDENTIFIER;
2032		   }
2033		}
2034	YY_BREAK
2035case 98:
2036YY_RULE_SETUP
2037#line 324 "src/src/glsl/glsl_lexer.ll"
2038return INC_OP;
2039	YY_BREAK
2040case 99:
2041YY_RULE_SETUP
2042#line 325 "src/src/glsl/glsl_lexer.ll"
2043return DEC_OP;
2044	YY_BREAK
2045case 100:
2046YY_RULE_SETUP
2047#line 326 "src/src/glsl/glsl_lexer.ll"
2048return LE_OP;
2049	YY_BREAK
2050case 101:
2051YY_RULE_SETUP
2052#line 327 "src/src/glsl/glsl_lexer.ll"
2053return GE_OP;
2054	YY_BREAK
2055case 102:
2056YY_RULE_SETUP
2057#line 328 "src/src/glsl/glsl_lexer.ll"
2058return EQ_OP;
2059	YY_BREAK
2060case 103:
2061YY_RULE_SETUP
2062#line 329 "src/src/glsl/glsl_lexer.ll"
2063return NE_OP;
2064	YY_BREAK
2065case 104:
2066YY_RULE_SETUP
2067#line 330 "src/src/glsl/glsl_lexer.ll"
2068return AND_OP;
2069	YY_BREAK
2070case 105:
2071YY_RULE_SETUP
2072#line 331 "src/src/glsl/glsl_lexer.ll"
2073return OR_OP;
2074	YY_BREAK
2075case 106:
2076YY_RULE_SETUP
2077#line 332 "src/src/glsl/glsl_lexer.ll"
2078return XOR_OP;
2079	YY_BREAK
2080case 107:
2081YY_RULE_SETUP
2082#line 333 "src/src/glsl/glsl_lexer.ll"
2083return LEFT_OP;
2084	YY_BREAK
2085case 108:
2086YY_RULE_SETUP
2087#line 334 "src/src/glsl/glsl_lexer.ll"
2088return RIGHT_OP;
2089	YY_BREAK
2090case 109:
2091YY_RULE_SETUP
2092#line 336 "src/src/glsl/glsl_lexer.ll"
2093return MUL_ASSIGN;
2094	YY_BREAK
2095case 110:
2096YY_RULE_SETUP
2097#line 337 "src/src/glsl/glsl_lexer.ll"
2098return DIV_ASSIGN;
2099	YY_BREAK
2100case 111:
2101YY_RULE_SETUP
2102#line 338 "src/src/glsl/glsl_lexer.ll"
2103return ADD_ASSIGN;
2104	YY_BREAK
2105case 112:
2106YY_RULE_SETUP
2107#line 339 "src/src/glsl/glsl_lexer.ll"
2108return MOD_ASSIGN;
2109	YY_BREAK
2110case 113:
2111YY_RULE_SETUP
2112#line 340 "src/src/glsl/glsl_lexer.ll"
2113return LEFT_ASSIGN;
2114	YY_BREAK
2115case 114:
2116YY_RULE_SETUP
2117#line 341 "src/src/glsl/glsl_lexer.ll"
2118return RIGHT_ASSIGN;
2119	YY_BREAK
2120case 115:
2121YY_RULE_SETUP
2122#line 342 "src/src/glsl/glsl_lexer.ll"
2123return AND_ASSIGN;
2124	YY_BREAK
2125case 116:
2126YY_RULE_SETUP
2127#line 343 "src/src/glsl/glsl_lexer.ll"
2128return XOR_ASSIGN;
2129	YY_BREAK
2130case 117:
2131YY_RULE_SETUP
2132#line 344 "src/src/glsl/glsl_lexer.ll"
2133return OR_ASSIGN;
2134	YY_BREAK
2135case 118:
2136YY_RULE_SETUP
2137#line 345 "src/src/glsl/glsl_lexer.ll"
2138return SUB_ASSIGN;
2139	YY_BREAK
2140case 119:
2141YY_RULE_SETUP
2142#line 347 "src/src/glsl/glsl_lexer.ll"
2143{
2144			    return LITERAL_INTEGER(10);
2145			}
2146	YY_BREAK
2147case 120:
2148YY_RULE_SETUP
2149#line 350 "src/src/glsl/glsl_lexer.ll"
2150{
2151			    return LITERAL_INTEGER(16);
2152			}
2153	YY_BREAK
2154case 121:
2155YY_RULE_SETUP
2156#line 353 "src/src/glsl/glsl_lexer.ll"
2157{
2158			    return LITERAL_INTEGER(8);
2159			}
2160	YY_BREAK
2161case 122:
2162YY_RULE_SETUP
2163#line 357 "src/src/glsl/glsl_lexer.ll"
2164{
2165			    yylval->real = glsl_strtod(yytext, NULL);
2166			    return FLOATCONSTANT;
2167			}
2168	YY_BREAK
2169case 123:
2170YY_RULE_SETUP
2171#line 361 "src/src/glsl/glsl_lexer.ll"
2172{
2173			    yylval->real = glsl_strtod(yytext, NULL);
2174			    return FLOATCONSTANT;
2175			}
2176	YY_BREAK
2177case 124:
2178YY_RULE_SETUP
2179#line 365 "src/src/glsl/glsl_lexer.ll"
2180{
2181			    yylval->real = glsl_strtod(yytext, NULL);
2182			    return FLOATCONSTANT;
2183			}
2184	YY_BREAK
2185case 125:
2186YY_RULE_SETUP
2187#line 369 "src/src/glsl/glsl_lexer.ll"
2188{
2189			    yylval->real = glsl_strtod(yytext, NULL);
2190			    return FLOATCONSTANT;
2191			}
2192	YY_BREAK
2193case 126:
2194YY_RULE_SETUP
2195#line 373 "src/src/glsl/glsl_lexer.ll"
2196{
2197			    yylval->real = glsl_strtod(yytext, NULL);
2198			    return FLOATCONSTANT;
2199			}
2200	YY_BREAK
2201case 127:
2202YY_RULE_SETUP
2203#line 378 "src/src/glsl/glsl_lexer.ll"
2204{
2205			    yylval->n = 1;
2206			    return BOOLCONSTANT;
2207			}
2208	YY_BREAK
2209case 128:
2210YY_RULE_SETUP
2211#line 382 "src/src/glsl/glsl_lexer.ll"
2212{
2213			    yylval->n = 0;
2214			    return BOOLCONSTANT;
2215			}
2216	YY_BREAK
2217/* Reserved words in GLSL 1.10. */
2218case 129:
2219YY_RULE_SETUP
2220#line 389 "src/src/glsl/glsl_lexer.ll"
2221KEYWORD(110 || ES, 999, ASM);
2222	YY_BREAK
2223case 130:
2224YY_RULE_SETUP
2225#line 390 "src/src/glsl/glsl_lexer.ll"
2226KEYWORD(110 || ES, 999, CLASS);
2227	YY_BREAK
2228case 131:
2229YY_RULE_SETUP
2230#line 391 "src/src/glsl/glsl_lexer.ll"
2231KEYWORD(110 || ES, 999, UNION);
2232	YY_BREAK
2233case 132:
2234YY_RULE_SETUP
2235#line 392 "src/src/glsl/glsl_lexer.ll"
2236KEYWORD(110 || ES, 999, ENUM);
2237	YY_BREAK
2238case 133:
2239YY_RULE_SETUP
2240#line 393 "src/src/glsl/glsl_lexer.ll"
2241KEYWORD(110 || ES, 999, TYPEDEF);
2242	YY_BREAK
2243case 134:
2244YY_RULE_SETUP
2245#line 394 "src/src/glsl/glsl_lexer.ll"
2246KEYWORD(110 || ES, 999, TEMPLATE);
2247	YY_BREAK
2248case 135:
2249YY_RULE_SETUP
2250#line 395 "src/src/glsl/glsl_lexer.ll"
2251KEYWORD(110 || ES, 999, THIS);
2252	YY_BREAK
2253case 136:
2254YY_RULE_SETUP
2255#line 396 "src/src/glsl/glsl_lexer.ll"
2256KEYWORD(110 || ES, 140 || yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK);
2257	YY_BREAK
2258case 137:
2259YY_RULE_SETUP
2260#line 397 "src/src/glsl/glsl_lexer.ll"
2261KEYWORD(110 || ES, 999, GOTO);
2262	YY_BREAK
2263case 138:
2264YY_RULE_SETUP
2265#line 398 "src/src/glsl/glsl_lexer.ll"
2266KEYWORD(110 || ES, 130, SWITCH);
2267	YY_BREAK
2268case 139:
2269YY_RULE_SETUP
2270#line 399 "src/src/glsl/glsl_lexer.ll"
2271KEYWORD(110 || ES, 130, DEFAULT);
2272	YY_BREAK
2273case 140:
2274YY_RULE_SETUP
2275#line 400 "src/src/glsl/glsl_lexer.ll"
2276KEYWORD(110 || ES, 999, INLINE_TOK);
2277	YY_BREAK
2278case 141:
2279YY_RULE_SETUP
2280#line 401 "src/src/glsl/glsl_lexer.ll"
2281KEYWORD(110 || ES, 999, NOINLINE);
2282	YY_BREAK
2283case 142:
2284YY_RULE_SETUP
2285#line 402 "src/src/glsl/glsl_lexer.ll"
2286KEYWORD(110 || ES, 999, VOLATILE);
2287	YY_BREAK
2288case 143:
2289YY_RULE_SETUP
2290#line 403 "src/src/glsl/glsl_lexer.ll"
2291KEYWORD(110 || ES, 999, PUBLIC_TOK);
2292	YY_BREAK
2293case 144:
2294YY_RULE_SETUP
2295#line 404 "src/src/glsl/glsl_lexer.ll"
2296KEYWORD(110 || ES, 999, STATIC);
2297	YY_BREAK
2298case 145:
2299YY_RULE_SETUP
2300#line 405 "src/src/glsl/glsl_lexer.ll"
2301KEYWORD(110 || ES, 999, EXTERN);
2302	YY_BREAK
2303case 146:
2304YY_RULE_SETUP
2305#line 406 "src/src/glsl/glsl_lexer.ll"
2306KEYWORD(110 || ES, 999, EXTERNAL);
2307	YY_BREAK
2308case 147:
2309YY_RULE_SETUP
2310#line 407 "src/src/glsl/glsl_lexer.ll"
2311KEYWORD(110 || ES, 999, INTERFACE);
2312	YY_BREAK
2313case 148:
2314YY_RULE_SETUP
2315#line 408 "src/src/glsl/glsl_lexer.ll"
2316KEYWORD(110 || ES, 999, LONG_TOK);
2317	YY_BREAK
2318case 149:
2319YY_RULE_SETUP
2320#line 409 "src/src/glsl/glsl_lexer.ll"
2321KEYWORD(110 || ES, 999, SHORT_TOK);
2322	YY_BREAK
2323case 150:
2324YY_RULE_SETUP
2325#line 410 "src/src/glsl/glsl_lexer.ll"
2326KEYWORD(110 || ES, 400, DOUBLE_TOK);
2327	YY_BREAK
2328case 151:
2329YY_RULE_SETUP
2330#line 411 "src/src/glsl/glsl_lexer.ll"
2331KEYWORD(110 || ES, 999, HALF);
2332	YY_BREAK
2333case 152:
2334YY_RULE_SETUP
2335#line 412 "src/src/glsl/glsl_lexer.ll"
2336KEYWORD(110 || ES, 999, FIXED_TOK);
2337	YY_BREAK
2338case 153:
2339YY_RULE_SETUP
2340#line 413 "src/src/glsl/glsl_lexer.ll"
2341KEYWORD(110 || ES, 999, UNSIGNED);
2342	YY_BREAK
2343case 154:
2344YY_RULE_SETUP
2345#line 414 "src/src/glsl/glsl_lexer.ll"
2346KEYWORD(110 || ES, 999, INPUT_TOK);
2347	YY_BREAK
2348case 155:
2349YY_RULE_SETUP
2350#line 415 "src/src/glsl/glsl_lexer.ll"
2351KEYWORD(110 || ES, 999, OUTPUT);
2352	YY_BREAK
2353case 156:
2354YY_RULE_SETUP
2355#line 416 "src/src/glsl/glsl_lexer.ll"
2356KEYWORD(110 || ES, 999, HVEC2);
2357	YY_BREAK
2358case 157:
2359YY_RULE_SETUP
2360#line 417 "src/src/glsl/glsl_lexer.ll"
2361KEYWORD(110 || ES, 999, HVEC3);
2362	YY_BREAK
2363case 158:
2364YY_RULE_SETUP
2365#line 418 "src/src/glsl/glsl_lexer.ll"
2366KEYWORD(110 || ES, 999, HVEC4);
2367	YY_BREAK
2368case 159:
2369YY_RULE_SETUP
2370#line 419 "src/src/glsl/glsl_lexer.ll"
2371KEYWORD(110 || ES, 400, DVEC2);
2372	YY_BREAK
2373case 160:
2374YY_RULE_SETUP
2375#line 420 "src/src/glsl/glsl_lexer.ll"
2376KEYWORD(110 || ES, 400, DVEC3);
2377	YY_BREAK
2378case 161:
2379YY_RULE_SETUP
2380#line 421 "src/src/glsl/glsl_lexer.ll"
2381KEYWORD(110 || ES, 400, DVEC4);
2382	YY_BREAK
2383case 162:
2384YY_RULE_SETUP
2385#line 422 "src/src/glsl/glsl_lexer.ll"
2386KEYWORD(110 || ES, 999, FVEC2);
2387	YY_BREAK
2388case 163:
2389YY_RULE_SETUP
2390#line 423 "src/src/glsl/glsl_lexer.ll"
2391KEYWORD(110 || ES, 999, FVEC3);
2392	YY_BREAK
2393case 164:
2394YY_RULE_SETUP
2395#line 424 "src/src/glsl/glsl_lexer.ll"
2396KEYWORD(110 || ES, 999, FVEC4);
2397	YY_BREAK
2398case 165:
2399YY_RULE_SETUP
2400#line 425 "src/src/glsl/glsl_lexer.ll"
2401return SAMPLER2DRECT;
2402	YY_BREAK
2403case 166:
2404YY_RULE_SETUP
2405#line 426 "src/src/glsl/glsl_lexer.ll"
2406KEYWORD(110 || ES, 999, SAMPLER3DRECT);
2407	YY_BREAK
2408case 167:
2409YY_RULE_SETUP
2410#line 427 "src/src/glsl/glsl_lexer.ll"
2411return SAMPLER2DRECTSHADOW;
2412	YY_BREAK
2413case 168:
2414YY_RULE_SETUP
2415#line 428 "src/src/glsl/glsl_lexer.ll"
2416KEYWORD(110 || ES, 999, SIZEOF);
2417	YY_BREAK
2418case 169:
2419YY_RULE_SETUP
2420#line 429 "src/src/glsl/glsl_lexer.ll"
2421KEYWORD(110 || ES, 999, CAST);
2422	YY_BREAK
2423case 170:
2424YY_RULE_SETUP
2425#line 430 "src/src/glsl/glsl_lexer.ll"
2426KEYWORD(110 || ES, 999, NAMESPACE);
2427	YY_BREAK
2428case 171:
2429YY_RULE_SETUP
2430#line 431 "src/src/glsl/glsl_lexer.ll"
2431KEYWORD(110 || ES, 999, USING);
2432	YY_BREAK
2433/* Additional reserved words in GLSL 1.20. */
2434case 172:
2435YY_RULE_SETUP
2436#line 434 "src/src/glsl/glsl_lexer.ll"
2437KEYWORD(120, 130 || ES, LOWP);
2438	YY_BREAK
2439case 173:
2440YY_RULE_SETUP
2441#line 435 "src/src/glsl/glsl_lexer.ll"
2442KEYWORD(120, 130 || ES, MEDIUMP);
2443	YY_BREAK
2444case 174:
2445YY_RULE_SETUP
2446#line 436 "src/src/glsl/glsl_lexer.ll"
2447KEYWORD(120, 130 || ES, HIGHP);
2448	YY_BREAK
2449case 175:
2450YY_RULE_SETUP
2451#line 437 "src/src/glsl/glsl_lexer.ll"
2452KEYWORD(120, 130 || ES, PRECISION);
2453	YY_BREAK
2454/* Additional reserved words in GLSL 1.30. */
2455case 176:
2456YY_RULE_SETUP
2457#line 440 "src/src/glsl/glsl_lexer.ll"
2458KEYWORD(130, 130, CASE);
2459	YY_BREAK
2460case 177:
2461YY_RULE_SETUP
2462#line 441 "src/src/glsl/glsl_lexer.ll"
2463KEYWORD(130, 999, COMMON);
2464	YY_BREAK
2465case 178:
2466YY_RULE_SETUP
2467#line 442 "src/src/glsl/glsl_lexer.ll"
2468KEYWORD(130, 999, PARTITION);
2469	YY_BREAK
2470case 179:
2471YY_RULE_SETUP
2472#line 443 "src/src/glsl/glsl_lexer.ll"
2473KEYWORD(130, 999, ACTIVE);
2474	YY_BREAK
2475case 180:
2476YY_RULE_SETUP
2477#line 444 "src/src/glsl/glsl_lexer.ll"
2478KEYWORD(130 || ES, 999, SUPERP);
2479	YY_BREAK
2480case 181:
2481YY_RULE_SETUP
2482#line 445 "src/src/glsl/glsl_lexer.ll"
2483KEYWORD(130, 140, SAMPLERBUFFER);
2484	YY_BREAK
2485case 182:
2486YY_RULE_SETUP
2487#line 446 "src/src/glsl/glsl_lexer.ll"
2488KEYWORD(130, 999, FILTER);
2489	YY_BREAK
2490case 183:
2491YY_RULE_SETUP
2492#line 447 "src/src/glsl/glsl_lexer.ll"
2493KEYWORD(130, 999, IMAGE1D);
2494	YY_BREAK
2495case 184:
2496YY_RULE_SETUP
2497#line 448 "src/src/glsl/glsl_lexer.ll"
2498KEYWORD(130, 999, IMAGE2D);
2499	YY_BREAK
2500case 185:
2501YY_RULE_SETUP
2502#line 449 "src/src/glsl/glsl_lexer.ll"
2503KEYWORD(130, 999, IMAGE3D);
2504	YY_BREAK
2505case 186:
2506YY_RULE_SETUP
2507#line 450 "src/src/glsl/glsl_lexer.ll"
2508KEYWORD(130, 999, IMAGECUBE);
2509	YY_BREAK
2510case 187:
2511YY_RULE_SETUP
2512#line 451 "src/src/glsl/glsl_lexer.ll"
2513KEYWORD(130, 999, IIMAGE1D);
2514	YY_BREAK
2515case 188:
2516YY_RULE_SETUP
2517#line 452 "src/src/glsl/glsl_lexer.ll"
2518KEYWORD(130, 999, IIMAGE2D);
2519	YY_BREAK
2520case 189:
2521YY_RULE_SETUP
2522#line 453 "src/src/glsl/glsl_lexer.ll"
2523KEYWORD(130, 999, IIMAGE3D);
2524	YY_BREAK
2525case 190:
2526YY_RULE_SETUP
2527#line 454 "src/src/glsl/glsl_lexer.ll"
2528KEYWORD(130, 999, IIMAGECUBE);
2529	YY_BREAK
2530case 191:
2531YY_RULE_SETUP
2532#line 455 "src/src/glsl/glsl_lexer.ll"
2533KEYWORD(130, 999, UIMAGE1D);
2534	YY_BREAK
2535case 192:
2536YY_RULE_SETUP
2537#line 456 "src/src/glsl/glsl_lexer.ll"
2538KEYWORD(130, 999, UIMAGE2D);
2539	YY_BREAK
2540case 193:
2541YY_RULE_SETUP
2542#line 457 "src/src/glsl/glsl_lexer.ll"
2543KEYWORD(130, 999, UIMAGE3D);
2544	YY_BREAK
2545case 194:
2546YY_RULE_SETUP
2547#line 458 "src/src/glsl/glsl_lexer.ll"
2548KEYWORD(130, 999, UIMAGECUBE);
2549	YY_BREAK
2550case 195:
2551YY_RULE_SETUP
2552#line 459 "src/src/glsl/glsl_lexer.ll"
2553KEYWORD(130, 999, IMAGE1DARRAY);
2554	YY_BREAK
2555case 196:
2556YY_RULE_SETUP
2557#line 460 "src/src/glsl/glsl_lexer.ll"
2558KEYWORD(130, 999, IMAGE2DARRAY);
2559	YY_BREAK
2560case 197:
2561YY_RULE_SETUP
2562#line 461 "src/src/glsl/glsl_lexer.ll"
2563KEYWORD(130, 999, IIMAGE1DARRAY);
2564	YY_BREAK
2565case 198:
2566YY_RULE_SETUP
2567#line 462 "src/src/glsl/glsl_lexer.ll"
2568KEYWORD(130, 999, IIMAGE2DARRAY);
2569	YY_BREAK
2570case 199:
2571YY_RULE_SETUP
2572#line 463 "src/src/glsl/glsl_lexer.ll"
2573KEYWORD(130, 999, UIMAGE1DARRAY);
2574	YY_BREAK
2575case 200:
2576YY_RULE_SETUP
2577#line 464 "src/src/glsl/glsl_lexer.ll"
2578KEYWORD(130, 999, UIMAGE2DARRAY);
2579	YY_BREAK
2580case 201:
2581YY_RULE_SETUP
2582#line 465 "src/src/glsl/glsl_lexer.ll"
2583KEYWORD(130, 999, IMAGE1DSHADOW);
2584	YY_BREAK
2585case 202:
2586YY_RULE_SETUP
2587#line 466 "src/src/glsl/glsl_lexer.ll"
2588KEYWORD(130, 999, IMAGE2DSHADOW);
2589	YY_BREAK
2590case 203:
2591YY_RULE_SETUP
2592#line 467 "src/src/glsl/glsl_lexer.ll"
2593KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
2594	YY_BREAK
2595case 204:
2596YY_RULE_SETUP
2597#line 468 "src/src/glsl/glsl_lexer.ll"
2598KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
2599	YY_BREAK
2600case 205:
2601YY_RULE_SETUP
2602#line 469 "src/src/glsl/glsl_lexer.ll"
2603KEYWORD(130, 999, IMAGEBUFFER);
2604	YY_BREAK
2605case 206:
2606YY_RULE_SETUP
2607#line 470 "src/src/glsl/glsl_lexer.ll"
2608KEYWORD(130, 999, IIMAGEBUFFER);
2609	YY_BREAK
2610case 207:
2611YY_RULE_SETUP
2612#line 471 "src/src/glsl/glsl_lexer.ll"
2613KEYWORD(130, 999, UIMAGEBUFFER);
2614	YY_BREAK
2615case 208:
2616YY_RULE_SETUP
2617#line 472 "src/src/glsl/glsl_lexer.ll"
2618KEYWORD(130, 140 || yyextra->ARB_uniform_buffer_object_enable, ROW_MAJOR);
2619	YY_BREAK
2620/* Additional reserved words in GLSL 1.40 */
2621case 209:
2622YY_RULE_SETUP
2623#line 475 "src/src/glsl/glsl_lexer.ll"
2624KEYWORD(140, 140, ISAMPLER2DRECT);
2625	YY_BREAK
2626case 210:
2627YY_RULE_SETUP
2628#line 476 "src/src/glsl/glsl_lexer.ll"
2629KEYWORD(140, 140, USAMPLER2DRECT);
2630	YY_BREAK
2631case 211:
2632YY_RULE_SETUP
2633#line 477 "src/src/glsl/glsl_lexer.ll"
2634KEYWORD(140, 140, ISAMPLERBUFFER);
2635	YY_BREAK
2636case 212:
2637YY_RULE_SETUP
2638#line 478 "src/src/glsl/glsl_lexer.ll"
2639KEYWORD(140, 140, USAMPLERBUFFER);
2640	YY_BREAK
2641case 213:
2642YY_RULE_SETUP
2643#line 480 "src/src/glsl/glsl_lexer.ll"
2644{
2645			    struct _mesa_glsl_parse_state *state = yyextra;
2646			    void *ctx = state;
2647			    yylval->identifier = ralloc_strdup(ctx, yytext);
2648			    return classify_identifier(state, yytext);
2649			}
2650	YY_BREAK
2651case 214:
2652YY_RULE_SETUP
2653#line 487 "src/src/glsl/glsl_lexer.ll"
2654{ return yytext[0]; }
2655	YY_BREAK
2656case 215:
2657YY_RULE_SETUP
2658#line 489 "src/src/glsl/glsl_lexer.ll"
2659ECHO;
2660	YY_BREAK
2661#line 2662 "src/chromium_gensrc/mesa/glsl_lexer.cc"
2662case YY_STATE_EOF(INITIAL):
2663case YY_STATE_EOF(PP):
2664case YY_STATE_EOF(PRAGMA):
2665	yyterminate();
2666
2667	case YY_END_OF_BUFFER:
2668		{
2669		/* Amount of text matched not including the EOB char. */
2670		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2671
2672		/* Undo the effects of YY_DO_BEFORE_ACTION. */
2673		*yy_cp = yyg->yy_hold_char;
2674		YY_RESTORE_YY_MORE_OFFSET
2675
2676		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2677			{
2678			/* We're scanning a new file or input source.  It's
2679			 * possible that this happened because the user
2680			 * just pointed yyin at a new source and called
2681			 * _mesa_glsl_lex().  If so, then we have to assure
2682			 * consistency between YY_CURRENT_BUFFER and our
2683			 * globals.  Here is the right place to do so, because
2684			 * this is the first action (other than possibly a
2685			 * back-up) that will match for the new input source.
2686			 */
2687			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2688			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2689			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2690			}
2691
2692		/* Note that here we test for yy_c_buf_p "<=" to the position
2693		 * of the first EOB in the buffer, since yy_c_buf_p will
2694		 * already have been incremented past the NUL character
2695		 * (since all states make transitions on EOB to the
2696		 * end-of-buffer state).  Contrast this with the test
2697		 * in input().
2698		 */
2699		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2700			{ /* This was really a NUL. */
2701			yy_state_type yy_next_state;
2702
2703			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2704
2705			yy_current_state = yy_get_previous_state( yyscanner );
2706
2707			/* Okay, we're now positioned to make the NUL
2708			 * transition.  We couldn't have
2709			 * yy_get_previous_state() go ahead and do it
2710			 * for us because it doesn't know how to deal
2711			 * with the possibility of jamming (and we don't
2712			 * want to build jamming into it because then it
2713			 * will run more slowly).
2714			 */
2715
2716			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2717
2718			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2719
2720			if ( yy_next_state )
2721				{
2722				/* Consume the NUL. */
2723				yy_cp = ++yyg->yy_c_buf_p;
2724				yy_current_state = yy_next_state;
2725				goto yy_match;
2726				}
2727
2728			else
2729				{
2730				yy_cp = yyg->yy_last_accepting_cpos;
2731				yy_current_state = yyg->yy_last_accepting_state;
2732				goto yy_find_action;
2733				}
2734			}
2735
2736		else switch ( yy_get_next_buffer( yyscanner ) )
2737			{
2738			case EOB_ACT_END_OF_FILE:
2739				{
2740				yyg->yy_did_buffer_switch_on_eof = 0;
2741
2742				if ( _mesa_glsl_wrap(yyscanner ) )
2743					{
2744					/* Note: because we've taken care in
2745					 * yy_get_next_buffer() to have set up
2746					 * yytext, we can now set up
2747					 * yy_c_buf_p so that if some total
2748					 * hoser (like flex itself) wants to
2749					 * call the scanner after we return the
2750					 * YY_NULL, it'll still work - another
2751					 * YY_NULL will get returned.
2752					 */
2753					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2754
2755					yy_act = YY_STATE_EOF(YY_START);
2756					goto do_action;
2757					}
2758
2759				else
2760					{
2761					if ( ! yyg->yy_did_buffer_switch_on_eof )
2762						YY_NEW_FILE;
2763					}
2764				break;
2765				}
2766
2767			case EOB_ACT_CONTINUE_SCAN:
2768				yyg->yy_c_buf_p =
2769					yyg->yytext_ptr + yy_amount_of_matched_text;
2770
2771				yy_current_state = yy_get_previous_state( yyscanner );
2772
2773				yy_cp = yyg->yy_c_buf_p;
2774				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2775				goto yy_match;
2776
2777			case EOB_ACT_LAST_MATCH:
2778				yyg->yy_c_buf_p =
2779				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2780
2781				yy_current_state = yy_get_previous_state( yyscanner );
2782
2783				yy_cp = yyg->yy_c_buf_p;
2784				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2785				goto yy_find_action;
2786			}
2787		break;
2788		}
2789
2790	default:
2791		YY_FATAL_ERROR(
2792			"fatal flex scanner internal error--no action found" );
2793	} /* end of action switch */
2794		} /* end of scanning one token */
2795} /* end of _mesa_glsl_lex */
2796
2797/* yy_get_next_buffer - try to read in a new buffer
2798 *
2799 * Returns a code representing an action:
2800 *	EOB_ACT_LAST_MATCH -
2801 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2802 *	EOB_ACT_END_OF_FILE - end of file
2803 */
2804static int yy_get_next_buffer (yyscan_t yyscanner)
2805{
2806    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2807	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2808	register char *source = yyg->yytext_ptr;
2809	register int number_to_move, i;
2810	int ret_val;
2811
2812	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2813		YY_FATAL_ERROR(
2814		"fatal flex scanner internal error--end of buffer missed" );
2815
2816	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2817		{ /* Don't try to fill the buffer, so this is an EOF. */
2818		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2819			{
2820			/* We matched a single character, the EOB, so
2821			 * treat this as a final EOF.
2822			 */
2823			return EOB_ACT_END_OF_FILE;
2824			}
2825
2826		else
2827			{
2828			/* We matched some text prior to the EOB, first
2829			 * process it.
2830			 */
2831			return EOB_ACT_LAST_MATCH;
2832			}
2833		}
2834
2835	/* Try to read more data. */
2836
2837	/* First move last chars to start of buffer. */
2838	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2839
2840	for ( i = 0; i < number_to_move; ++i )
2841		*(dest++) = *(source++);
2842
2843	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2844		/* don't do the read, it's not guaranteed to return an EOF,
2845		 * just force an EOF
2846		 */
2847		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2848
2849	else
2850		{
2851			int num_to_read =
2852			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2853
2854		while ( num_to_read <= 0 )
2855			{ /* Not enough room in the buffer - grow it. */
2856
2857			/* just a shorter name for the current buffer */
2858			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2859
2860			int yy_c_buf_p_offset =
2861				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2862
2863			if ( b->yy_is_our_buffer )
2864				{
2865				int new_size = b->yy_buf_size * 2;
2866
2867				if ( new_size <= 0 )
2868					b->yy_buf_size += b->yy_buf_size / 8;
2869				else
2870					b->yy_buf_size *= 2;
2871
2872				b->yy_ch_buf = (char *)
2873					/* Include room in for 2 EOB chars. */
2874					_mesa_glsl_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2875				}
2876			else
2877				/* Can't grow it, we don't own it. */
2878				b->yy_ch_buf = 0;
2879
2880			if ( ! b->yy_ch_buf )
2881				YY_FATAL_ERROR(
2882				"fatal error - scanner input buffer overflow" );
2883
2884			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2885
2886			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2887						number_to_move - 1;
2888
2889			}
2890
2891		if ( num_to_read > YY_READ_BUF_SIZE )
2892			num_to_read = YY_READ_BUF_SIZE;
2893
2894		/* Read in more data. */
2895		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2896			yyg->yy_n_chars, (size_t) num_to_read );
2897
2898		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2899		}
2900
2901	if ( yyg->yy_n_chars == 0 )
2902		{
2903		if ( number_to_move == YY_MORE_ADJ )
2904			{
2905			ret_val = EOB_ACT_END_OF_FILE;
2906			_mesa_glsl_restart(yyin  ,yyscanner);
2907			}
2908
2909		else
2910			{
2911			ret_val = EOB_ACT_LAST_MATCH;
2912			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2913				YY_BUFFER_EOF_PENDING;
2914			}
2915		}
2916
2917	else
2918		ret_val = EOB_ACT_CONTINUE_SCAN;
2919
2920	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2921		/* Extend the array by 50%, plus the number we really need. */
2922		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2923		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) _mesa_glsl_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
2924		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2925			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2926	}
2927
2928	yyg->yy_n_chars += number_to_move;
2929	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2930	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2931
2932	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2933
2934	return ret_val;
2935}
2936
2937/* yy_get_previous_state - get the state just before the EOB char was reached */
2938
2939    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2940{
2941	register yy_state_type yy_current_state;
2942	register char *yy_cp;
2943    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2944
2945	yy_current_state = yyg->yy_start;
2946	yy_current_state += YY_AT_BOL();
2947
2948	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2949		{
2950		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2951		if ( yy_accept[yy_current_state] )
2952			{
2953			yyg->yy_last_accepting_state = yy_current_state;
2954			yyg->yy_last_accepting_cpos = yy_cp;
2955			}
2956		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2957			{
2958			yy_current_state = (int) yy_def[yy_current_state];
2959			if ( yy_current_state >= 867 )
2960				yy_c = yy_meta[(unsigned int) yy_c];
2961			}
2962		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2963		}
2964
2965	return yy_current_state;
2966}
2967
2968/* yy_try_NUL_trans - try to make a transition on the NUL character
2969 *
2970 * synopsis
2971 *	next_state = yy_try_NUL_trans( current_state );
2972 */
2973    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
2974{
2975	register int yy_is_jam;
2976    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2977	register char *yy_cp = yyg->yy_c_buf_p;
2978
2979	register YY_CHAR yy_c = 1;
2980	if ( yy_accept[yy_current_state] )
2981		{
2982		yyg->yy_last_accepting_state = yy_current_state;
2983		yyg->yy_last_accepting_cpos = yy_cp;
2984		}
2985	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2986		{
2987		yy_current_state = (int) yy_def[yy_current_state];
2988		if ( yy_current_state >= 867 )
2989			yy_c = yy_meta[(unsigned int) yy_c];
2990		}
2991	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2992	yy_is_jam = (yy_current_state == 866);
2993
2994	return yy_is_jam ? 0 : yy_current_state;
2995}
2996
2997#ifndef YY_NO_INPUT
2998#ifdef __cplusplus
2999    static int yyinput (yyscan_t yyscanner)
3000#else
3001    static int input  (yyscan_t yyscanner)
3002#endif
3003
3004{
3005	int c;
3006    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3007
3008	*yyg->yy_c_buf_p = yyg->yy_hold_char;
3009
3010	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3011		{
3012		/* yy_c_buf_p now points to the character we want to return.
3013		 * If this occurs *before* the EOB characters, then it's a
3014		 * valid NUL; if not, then we've hit the end of the buffer.
3015		 */
3016		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
3017			/* This was really a NUL. */
3018			*yyg->yy_c_buf_p = '\0';
3019
3020		else
3021			{ /* need more input */
3022			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
3023			++yyg->yy_c_buf_p;
3024
3025			switch ( yy_get_next_buffer( yyscanner ) )
3026				{
3027				case EOB_ACT_LAST_MATCH:
3028					/* This happens because yy_g_n_b()
3029					 * sees that we've accumulated a
3030					 * token and flags that we need to
3031					 * try matching the token before
3032					 * proceeding.  But for input(),
3033					 * there's no matching to consider.
3034					 * So convert the EOB_ACT_LAST_MATCH
3035					 * to EOB_ACT_END_OF_FILE.
3036					 */
3037
3038					/* Reset buffer status. */
3039					_mesa_glsl_restart(yyin ,yyscanner);
3040
3041					/*FALLTHROUGH*/
3042
3043				case EOB_ACT_END_OF_FILE:
3044					{
3045					if ( _mesa_glsl_wrap(yyscanner ) )
3046						return EOF;
3047
3048					if ( ! yyg->yy_did_buffer_switch_on_eof )
3049						YY_NEW_FILE;
3050#ifdef __cplusplus
3051					return yyinput(yyscanner);
3052#else
3053					return input(yyscanner);
3054#endif
3055					}
3056
3057				case EOB_ACT_CONTINUE_SCAN:
3058					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
3059					break;
3060				}
3061			}
3062		}
3063
3064	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
3065	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
3066	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
3067
3068	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3069
3070	return c;
3071}
3072#endif	/* ifndef YY_NO_INPUT */
3073
3074/** Immediately switch to a different input stream.
3075 * @param input_file A readable stream.
3076 * @param yyscanner The scanner object.
3077 * @note This function does not reset the start condition to @c INITIAL .
3078 */
3079    void _mesa_glsl_restart  (FILE * input_file , yyscan_t yyscanner)
3080{
3081    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3082
3083	if ( ! YY_CURRENT_BUFFER ){
3084        _mesa_glsl_ensure_buffer_stack (yyscanner);
3085		YY_CURRENT_BUFFER_LVALUE =
3086            _mesa_glsl__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
3087	}
3088
3089	_mesa_glsl__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
3090	_mesa_glsl__load_buffer_state(yyscanner );
3091}
3092
3093/** Switch to a different input buffer.
3094 * @param new_buffer The new input buffer.
3095 * @param yyscanner The scanner object.
3096 */
3097    void _mesa_glsl__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
3098{
3099    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3100
3101	/* TODO. We should be able to replace this entire function body
3102	 * with
3103	 *		_mesa_glsl_pop_buffer_state();
3104	 *		_mesa_glsl_push_buffer_state(new_buffer);
3105     */
3106	_mesa_glsl_ensure_buffer_stack (yyscanner);
3107	if ( YY_CURRENT_BUFFER == new_buffer )
3108		return;
3109
3110	if ( YY_CURRENT_BUFFER )
3111		{
3112		/* Flush out information for old buffer. */
3113		*yyg->yy_c_buf_p = yyg->yy_hold_char;
3114		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3115		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3116		}
3117
3118	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3119	_mesa_glsl__load_buffer_state(yyscanner );
3120
3121	/* We don't actually know whether we did this switch during
3122	 * EOF (_mesa_glsl_wrap()) processing, but the only time this flag
3123	 * is looked at is after _mesa_glsl_wrap() is called, so it's safe
3124	 * to go ahead and always set it.
3125	 */
3126	yyg->yy_did_buffer_switch_on_eof = 1;
3127}
3128
3129static void _mesa_glsl__load_buffer_state  (yyscan_t yyscanner)
3130{
3131    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3132	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3133	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3134	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3135	yyg->yy_hold_char = *yyg->yy_c_buf_p;
3136}
3137
3138/** Allocate and initialize an input buffer state.
3139 * @param file A readable stream.
3140 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3141 * @param yyscanner The scanner object.
3142 * @return the allocated buffer state.
3143 */
3144    YY_BUFFER_STATE _mesa_glsl__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
3145{
3146	YY_BUFFER_STATE b;
3147
3148	b = (YY_BUFFER_STATE) _mesa_glsl_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
3149	if ( ! b )
3150		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3151
3152	b->yy_buf_size = size;
3153
3154	/* yy_ch_buf has to be 2 characters longer than the size given because
3155	 * we need to put in 2 end-of-buffer characters.
3156	 */
3157	b->yy_ch_buf = (char *) _mesa_glsl_alloc(b->yy_buf_size + 2 ,yyscanner );
3158	if ( ! b->yy_ch_buf )
3159		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3160
3161	b->yy_is_our_buffer = 1;
3162
3163	_mesa_glsl__init_buffer(b,file ,yyscanner);
3164
3165	return b;
3166}
3167
3168/** Destroy the buffer.
3169 * @param b a buffer created with _mesa_glsl__create_buffer()
3170 * @param yyscanner The scanner object.
3171 */
3172    void _mesa_glsl__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
3173{
3174    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3175
3176	if ( ! b )
3177		return;
3178
3179	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3180		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3181
3182	if ( b->yy_is_our_buffer )
3183		_mesa_glsl_free((void *) b->yy_ch_buf ,yyscanner );
3184
3185	_mesa_glsl_free((void *) b ,yyscanner );
3186}
3187
3188/* Initializes or reinitializes a buffer.
3189 * This function is sometimes called more than once on the same buffer,
3190 * such as during a _mesa_glsl_restart() or at EOF.
3191 */
3192    static void _mesa_glsl__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
3193
3194{
3195	int oerrno = errno;
3196    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3197
3198	_mesa_glsl__flush_buffer(b ,yyscanner);
3199
3200	b->yy_input_file = file;
3201	b->yy_fill_buffer = 1;
3202
3203    /* If b is the current buffer, then _mesa_glsl__init_buffer was _probably_
3204     * called from _mesa_glsl_restart() or through yy_get_next_buffer.
3205     * In that case, we don't want to reset the lineno or column.
3206     */
3207    if (b != YY_CURRENT_BUFFER){
3208        b->yy_bs_lineno = 1;
3209        b->yy_bs_column = 0;
3210    }
3211
3212        b->yy_is_interactive = 0;
3213
3214	errno = oerrno;
3215}
3216
3217/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3218 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3219 * @param yyscanner The scanner object.
3220 */
3221    void _mesa_glsl__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
3222{
3223    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3224	if ( ! b )
3225		return;
3226
3227	b->yy_n_chars = 0;
3228
3229	/* We always need two end-of-buffer characters.  The first causes
3230	 * a transition to the end-of-buffer state.  The second causes
3231	 * a jam in that state.
3232	 */
3233	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3234	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3235
3236	b->yy_buf_pos = &b->yy_ch_buf[0];
3237
3238	b->yy_at_bol = 1;
3239	b->yy_buffer_status = YY_BUFFER_NEW;
3240
3241	if ( b == YY_CURRENT_BUFFER )
3242		_mesa_glsl__load_buffer_state(yyscanner );
3243}
3244
3245/** Pushes the new state onto the stack. The new state becomes
3246 *  the current state. This function will allocate the stack
3247 *  if necessary.
3248 *  @param new_buffer The new state.
3249 *  @param yyscanner The scanner object.
3250 */
3251void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
3252{
3253    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3254	if (new_buffer == NULL)
3255		return;
3256
3257	_mesa_glsl_ensure_buffer_stack(yyscanner);
3258
3259	/* This block is copied from _mesa_glsl__switch_to_buffer. */
3260	if ( YY_CURRENT_BUFFER )
3261		{
3262		/* Flush out information for old buffer. */
3263		*yyg->yy_c_buf_p = yyg->yy_hold_char;
3264		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3265		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3266		}
3267
3268	/* Only push if top exists. Otherwise, replace top. */
3269	if (YY_CURRENT_BUFFER)
3270		yyg->yy_buffer_stack_top++;
3271	YY_CURRENT_BUFFER_LVALUE = new_buffer;
3272
3273	/* copied from _mesa_glsl__switch_to_buffer. */
3274	_mesa_glsl__load_buffer_state(yyscanner );
3275	yyg->yy_did_buffer_switch_on_eof = 1;
3276}
3277
3278/** Removes and deletes the top of the stack, if present.
3279 *  The next element becomes the new top.
3280 *  @param yyscanner The scanner object.
3281 */
3282void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner)
3283{
3284    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3285	if (!YY_CURRENT_BUFFER)
3286		return;
3287
3288	_mesa_glsl__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
3289	YY_CURRENT_BUFFER_LVALUE = NULL;
3290	if (yyg->yy_buffer_stack_top > 0)
3291		--yyg->yy_buffer_stack_top;
3292
3293	if (YY_CURRENT_BUFFER) {
3294		_mesa_glsl__load_buffer_state(yyscanner );
3295		yyg->yy_did_buffer_switch_on_eof = 1;
3296	}
3297}
3298
3299/* Allocates the stack if it does not exist.
3300 *  Guarantees space for at least one push.
3301 */
3302static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner)
3303{
3304	int num_to_alloc;
3305    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3306
3307	if (!yyg->yy_buffer_stack) {
3308
3309		/* First allocation is just for 2 elements, since we don't know if this
3310		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3311		 * immediate realloc on the next call.
3312         */
3313		num_to_alloc = 1;
3314		yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_alloc
3315								(num_to_alloc * sizeof(struct yy_buffer_state*)
3316								, yyscanner);
3317		if ( ! yyg->yy_buffer_stack )
3318			YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3319
3320		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3321
3322		yyg->yy_buffer_stack_max = num_to_alloc;
3323		yyg->yy_buffer_stack_top = 0;
3324		return;
3325	}
3326
3327	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
3328
3329		/* Increase the buffer to prepare for a possible push. */
3330		int grow_size = 8 /* arbitrary grow size */;
3331
3332		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
3333		yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_realloc
3334								(yyg->yy_buffer_stack,
3335								num_to_alloc * sizeof(struct yy_buffer_state*)
3336								, yyscanner);
3337		if ( ! yyg->yy_buffer_stack )
3338			YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3339
3340		/* zero only the new slots.*/
3341		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
3342		yyg->yy_buffer_stack_max = num_to_alloc;
3343	}
3344}
3345
3346/** Setup the input buffer state to scan directly from a user-specified character buffer.
3347 * @param base the character buffer
3348 * @param size the size in bytes of the character buffer
3349 * @param yyscanner The scanner object.
3350 * @return the newly allocated buffer state object.
3351 */
3352YY_BUFFER_STATE _mesa_glsl__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
3353{
3354	YY_BUFFER_STATE b;
3355
3356	if ( size < 2 ||
3357	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
3358	     base[size-1] != YY_END_OF_BUFFER_CHAR )
3359		/* They forgot to leave room for the EOB's. */
3360		return 0;
3361
3362	b = (YY_BUFFER_STATE) _mesa_glsl_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
3363	if ( ! b )
3364		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_buffer()" );
3365
3366	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
3367	b->yy_buf_pos = b->yy_ch_buf = base;
3368	b->yy_is_our_buffer = 0;
3369	b->yy_input_file = 0;
3370	b->yy_n_chars = b->yy_buf_size;
3371	b->yy_is_interactive = 0;
3372	b->yy_at_bol = 1;
3373	b->yy_fill_buffer = 0;
3374	b->yy_buffer_status = YY_BUFFER_NEW;
3375
3376	_mesa_glsl__switch_to_buffer(b ,yyscanner );
3377
3378	return b;
3379}
3380
3381/** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lex() will
3382 * scan from a @e copy of @a str.
3383 * @param yystr a NUL-terminated string to scan
3384 * @param yyscanner The scanner object.
3385 * @return the newly allocated buffer state object.
3386 * @note If you want to scan bytes that may contain NUL values, then use
3387 *       _mesa_glsl__scan_bytes() instead.
3388 */
3389YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscanner)
3390{
3391
3392	return _mesa_glsl__scan_bytes(yystr,strlen(yystr) ,yyscanner);
3393}
3394
3395/** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
3396 * scan from a @e copy of @a bytes.
3397 * @param yybytes the byte buffer to scan
3398 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3399 * @param yyscanner The scanner object.
3400 * @return the newly allocated buffer state object.
3401 */
3402YY_BUFFER_STATE _mesa_glsl__scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
3403{
3404	YY_BUFFER_STATE b;
3405	char *buf;
3406	yy_size_t n;
3407	int i;
3408
3409	/* Get memory for full buffer, including space for trailing EOB's. */
3410	n = _yybytes_len + 2;
3411	buf = (char *) _mesa_glsl_alloc(n ,yyscanner );
3412	if ( ! buf )
3413		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_bytes()" );
3414
3415	for ( i = 0; i < _yybytes_len; ++i )
3416		buf[i] = yybytes[i];
3417
3418	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3419
3420	b = _mesa_glsl__scan_buffer(buf,n ,yyscanner);
3421	if ( ! b )
3422		YY_FATAL_ERROR( "bad buffer in _mesa_glsl__scan_bytes()" );
3423
3424	/* It's okay to grow etc. this buffer, and we should throw it
3425	 * away when we're done.
3426	 */
3427	b->yy_is_our_buffer = 1;
3428
3429	return b;
3430}
3431
3432#ifndef YY_EXIT_FAILURE
3433#define YY_EXIT_FAILURE 2
3434#endif
3435
3436static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
3437{
3438    	(void) fprintf( stderr, "%s\n", msg );
3439	exit( YY_EXIT_FAILURE );
3440}
3441
3442/* Redefine yyless() so it works in section 3 code. */
3443
3444#undef yyless
3445#define yyless(n) \
3446	do \
3447		{ \
3448		/* Undo effects of setting up yytext. */ \
3449        int yyless_macro_arg = (n); \
3450        YY_LESS_LINENO(yyless_macro_arg);\
3451		yytext[yyleng] = yyg->yy_hold_char; \
3452		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3453		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3454		*yyg->yy_c_buf_p = '\0'; \
3455		yyleng = yyless_macro_arg; \
3456		} \
3457	while ( 0 )
3458
3459/* Accessor  methods (get/set functions) to struct members. */
3460
3461/** Get the user-defined data for this scanner.
3462 * @param yyscanner The scanner object.
3463 */
3464YY_EXTRA_TYPE _mesa_glsl_get_extra  (yyscan_t yyscanner)
3465{
3466    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3467    return yyextra;
3468}
3469
3470/** Get the current line number.
3471 * @param yyscanner The scanner object.
3472 */
3473int _mesa_glsl_get_lineno  (yyscan_t yyscanner)
3474{
3475    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3476
3477        if (! YY_CURRENT_BUFFER)
3478            return 0;
3479
3480    return yylineno;
3481}
3482
3483/** Get the current column number.
3484 * @param yyscanner The scanner object.
3485 */
3486int _mesa_glsl_get_column  (yyscan_t yyscanner)
3487{
3488    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3489
3490        if (! YY_CURRENT_BUFFER)
3491            return 0;
3492
3493    return yycolumn;
3494}
3495
3496/** Get the input stream.
3497 * @param yyscanner The scanner object.
3498 */
3499FILE *_mesa_glsl_get_in  (yyscan_t yyscanner)
3500{
3501    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3502    return yyin;
3503}
3504
3505/** Get the output stream.
3506 * @param yyscanner The scanner object.
3507 */
3508FILE *_mesa_glsl_get_out  (yyscan_t yyscanner)
3509{
3510    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3511    return yyout;
3512}
3513
3514/** Get the length of the current token.
3515 * @param yyscanner The scanner object.
3516 */
3517int _mesa_glsl_get_leng  (yyscan_t yyscanner)
3518{
3519    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3520    return yyleng;
3521}
3522
3523/** Get the current token.
3524 * @param yyscanner The scanner object.
3525 */
3526
3527char *_mesa_glsl_get_text  (yyscan_t yyscanner)
3528{
3529    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3530    return yytext;
3531}
3532
3533/** Set the user-defined data. This data is never touched by the scanner.
3534 * @param user_defined The data to be associated with this scanner.
3535 * @param yyscanner The scanner object.
3536 */
3537void _mesa_glsl_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
3538{
3539    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3540    yyextra = user_defined ;
3541}
3542
3543/** Set the current line number.
3544 * @param line_number
3545 * @param yyscanner The scanner object.
3546 */
3547void _mesa_glsl_set_lineno (int  line_number , yyscan_t yyscanner)
3548{
3549    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3550
3551        /* lineno is only valid if an input buffer exists. */
3552        if (! YY_CURRENT_BUFFER )
3553           yy_fatal_error( "_mesa_glsl_set_lineno called with no buffer" , yyscanner);
3554
3555    yylineno = line_number;
3556}
3557
3558/** Set the current column.
3559 * @param line_number
3560 * @param yyscanner The scanner object.
3561 */
3562void _mesa_glsl_set_column (int  column_no , yyscan_t yyscanner)
3563{
3564    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3565
3566        /* column is only valid if an input buffer exists. */
3567        if (! YY_CURRENT_BUFFER )
3568           yy_fatal_error( "_mesa_glsl_set_column called with no buffer" , yyscanner);
3569
3570    yycolumn = column_no;
3571}
3572
3573/** Set the input stream. This does not discard the current
3574 * input buffer.
3575 * @param in_str A readable stream.
3576 * @param yyscanner The scanner object.
3577 * @see _mesa_glsl__switch_to_buffer
3578 */
3579void _mesa_glsl_set_in (FILE *  in_str , yyscan_t yyscanner)
3580{
3581    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3582    yyin = in_str ;
3583}
3584
3585void _mesa_glsl_set_out (FILE *  out_str , yyscan_t yyscanner)
3586{
3587    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3588    yyout = out_str ;
3589}
3590
3591int _mesa_glsl_get_debug  (yyscan_t yyscanner)
3592{
3593    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3594    return yy_flex_debug;
3595}
3596
3597void _mesa_glsl_set_debug (int  bdebug , yyscan_t yyscanner)
3598{
3599    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3600    yy_flex_debug = bdebug ;
3601}
3602
3603/* Accessor methods for yylval and yylloc */
3604
3605YYSTYPE * _mesa_glsl_get_lval  (yyscan_t yyscanner)
3606{
3607    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3608    return yylval;
3609}
3610
3611void _mesa_glsl_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
3612{
3613    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3614    yylval = yylval_param;
3615}
3616
3617YYLTYPE *_mesa_glsl_get_lloc  (yyscan_t yyscanner)
3618{
3619    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3620    return yylloc;
3621}
3622
3623void _mesa_glsl_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
3624{
3625    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3626    yylloc = yylloc_param;
3627}
3628
3629/* User-visible API */
3630
3631/* _mesa_glsl_lex_init is special because it creates the scanner itself, so it is
3632 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3633 * That's why we explicitly handle the declaration, instead of using our macros.
3634 */
3635
3636int _mesa_glsl_lex_init(yyscan_t* ptr_yy_globals)
3637
3638{
3639    if (ptr_yy_globals == NULL){
3640        errno = EINVAL;
3641        return 1;
3642    }
3643
3644    *ptr_yy_globals = (yyscan_t) _mesa_glsl_alloc ( sizeof( struct yyguts_t ), NULL );
3645
3646    if (*ptr_yy_globals == NULL){
3647        errno = ENOMEM;
3648        return 1;
3649    }
3650
3651    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3652    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3653
3654    return yy_init_globals ( *ptr_yy_globals );
3655}
3656
3657/* _mesa_glsl_lex_init_extra has the same functionality as _mesa_glsl_lex_init, but follows the
3658 * convention of taking the scanner as the last argument. Note however, that
3659 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3660 * is the reason, too, why this function also must handle its own declaration).
3661 * The user defined value in the first argument will be available to _mesa_glsl_alloc in
3662 * the yyextra field.
3663 */
3664
3665int _mesa_glsl_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
3666
3667{
3668    struct yyguts_t dummy_yyguts;
3669
3670    _mesa_glsl_set_extra (yy_user_defined, &dummy_yyguts);
3671
3672    if (ptr_yy_globals == NULL){
3673        errno = EINVAL;
3674        return 1;
3675    }
3676
3677    *ptr_yy_globals = (yyscan_t) _mesa_glsl_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
3678
3679    if (*ptr_yy_globals == NULL){
3680        errno = ENOMEM;
3681        return 1;
3682    }
3683
3684    /* By setting to 0xAA, we expose bugs in
3685    yy_init_globals. Leave at 0x00 for releases. */
3686    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3687
3688    _mesa_glsl_set_extra (yy_user_defined, *ptr_yy_globals);
3689
3690    return yy_init_globals ( *ptr_yy_globals );
3691}
3692
3693static int yy_init_globals (yyscan_t yyscanner)
3694{
3695    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3696    /* Initialization is the same as for the non-reentrant scanner.
3697     * This function is called from _mesa_glsl_lex_destroy(), so don't allocate here.
3698     */
3699
3700    yyg->yy_buffer_stack = 0;
3701    yyg->yy_buffer_stack_top = 0;
3702    yyg->yy_buffer_stack_max = 0;
3703    yyg->yy_c_buf_p = (char *) 0;
3704    yyg->yy_init = 0;
3705    yyg->yy_start = 0;
3706
3707    yyg->yy_start_stack_ptr = 0;
3708    yyg->yy_start_stack_depth = 0;
3709    yyg->yy_start_stack =  NULL;
3710
3711/* Defined in main.c */
3712#ifdef YY_STDINIT
3713    yyin = stdin;
3714    yyout = stdout;
3715#else
3716    yyin = (FILE *) 0;
3717    yyout = (FILE *) 0;
3718#endif
3719
3720    /* For future reference: Set errno on error, since we are called by
3721     * _mesa_glsl_lex_init()
3722     */
3723    return 0;
3724}
3725
3726/* _mesa_glsl_lex_destroy is for both reentrant and non-reentrant scanners. */
3727int _mesa_glsl_lex_destroy  (yyscan_t yyscanner)
3728{
3729    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3730
3731    /* Pop the buffer stack, destroying each element. */
3732	while(YY_CURRENT_BUFFER){
3733		_mesa_glsl__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3734		YY_CURRENT_BUFFER_LVALUE = NULL;
3735		_mesa_glsl_pop_buffer_state(yyscanner);
3736	}
3737
3738	/* Destroy the stack itself. */
3739	_mesa_glsl_free(yyg->yy_buffer_stack ,yyscanner);
3740	yyg->yy_buffer_stack = NULL;
3741
3742    /* Destroy the start condition stack. */
3743        _mesa_glsl_free(yyg->yy_start_stack ,yyscanner );
3744        yyg->yy_start_stack = NULL;
3745
3746    /* Reset the globals. This is important in a non-reentrant scanner so the next time
3747     * _mesa_glsl_lex() is called, initialization will occur. */
3748    yy_init_globals( yyscanner);
3749
3750    /* Destroy the main struct (reentrant only). */
3751    _mesa_glsl_free ( yyscanner , yyscanner );
3752    yyscanner = NULL;
3753    return 0;
3754}
3755
3756/*
3757 * Internal utility routines.
3758 */
3759
3760#ifndef yytext_ptr
3761static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3762{
3763	register int i;
3764	for ( i = 0; i < n; ++i )
3765		s1[i] = s2[i];
3766}
3767#endif
3768
3769#ifdef YY_NEED_STRLEN
3770static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3771{
3772	register int n;
3773	for ( n = 0; s[n]; ++n )
3774		;
3775
3776	return n;
3777}
3778#endif
3779
3780void *_mesa_glsl_alloc (yy_size_t  size , yyscan_t yyscanner)
3781{
3782	return (void *) malloc( size );
3783}
3784
3785void *_mesa_glsl_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
3786{
3787	/* The cast to (char *) in the following accommodates both
3788	 * implementations that use char* generic pointers, and those
3789	 * that use void* generic pointers.  It works with the latter
3790	 * because both ANSI C and C++ allow castless assignment from
3791	 * any pointer type to void*, and deal with argument conversions
3792	 * as though doing an assignment.
3793	 */
3794	return (void *) realloc( (char *) ptr, size );
3795}
3796
3797void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
3798{
3799	free( (char *) ptr );	/* see _mesa_glsl_realloc() for (char *) cast */
3800}
3801
3802#define YYTABLES_NAME "yytables"
3803
3804#line 489 "src/src/glsl/glsl_lexer.ll"
3805
3806
3807
3808int
3809classify_identifier(struct _mesa_glsl_parse_state *state, const char *name)
3810{
3811   if (state->symbols->get_variable(name) || state->symbols->get_function(name))
3812      return IDENTIFIER;
3813   else if (state->symbols->get_type(name))
3814      return TYPE_IDENTIFIER;
3815   else
3816      return NEW_IDENTIFIER;
3817}
3818
3819void
3820_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
3821{
3822   _mesa_glsl_lex_init_extra(state,& state->scanner);
3823   _mesa_glsl__scan_string(string,state->scanner);
3824}
3825
3826void
3827_mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
3828{
3829   _mesa_glsl_lex_destroy(state->scanner);
3830}
3831
3832