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