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