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