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