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