glsl: Refresh autogenerated lexer file
[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->AMD_conservative_depth_enable
1937 || yyextra->ARB_explicit_attrib_location_enable
1938 || yyextra->ARB_fragment_coord_conventions_enable) {
1939 return LAYOUT_TOK;
1940 } else {
1941 yylval->identifier = strdup(yytext);
1942 return IDENTIFIER;
1943 }
1944 }
1945 YY_BREAK
1946 case 97:
1947 YY_RULE_SETUP
1948 #line 265 "glsl_lexer.lpp"
1949 return INC_OP;
1950 YY_BREAK
1951 case 98:
1952 YY_RULE_SETUP
1953 #line 266 "glsl_lexer.lpp"
1954 return DEC_OP;
1955 YY_BREAK
1956 case 99:
1957 YY_RULE_SETUP
1958 #line 267 "glsl_lexer.lpp"
1959 return LE_OP;
1960 YY_BREAK
1961 case 100:
1962 YY_RULE_SETUP
1963 #line 268 "glsl_lexer.lpp"
1964 return GE_OP;
1965 YY_BREAK
1966 case 101:
1967 YY_RULE_SETUP
1968 #line 269 "glsl_lexer.lpp"
1969 return EQ_OP;
1970 YY_BREAK
1971 case 102:
1972 YY_RULE_SETUP
1973 #line 270 "glsl_lexer.lpp"
1974 return NE_OP;
1975 YY_BREAK
1976 case 103:
1977 YY_RULE_SETUP
1978 #line 271 "glsl_lexer.lpp"
1979 return AND_OP;
1980 YY_BREAK
1981 case 104:
1982 YY_RULE_SETUP
1983 #line 272 "glsl_lexer.lpp"
1984 return OR_OP;
1985 YY_BREAK
1986 case 105:
1987 YY_RULE_SETUP
1988 #line 273 "glsl_lexer.lpp"
1989 return XOR_OP;
1990 YY_BREAK
1991 case 106:
1992 YY_RULE_SETUP
1993 #line 274 "glsl_lexer.lpp"
1994 return LEFT_OP;
1995 YY_BREAK
1996 case 107:
1997 YY_RULE_SETUP
1998 #line 275 "glsl_lexer.lpp"
1999 return RIGHT_OP;
2000 YY_BREAK
2001 case 108:
2002 YY_RULE_SETUP
2003 #line 277 "glsl_lexer.lpp"
2004 return MUL_ASSIGN;
2005 YY_BREAK
2006 case 109:
2007 YY_RULE_SETUP
2008 #line 278 "glsl_lexer.lpp"
2009 return DIV_ASSIGN;
2010 YY_BREAK
2011 case 110:
2012 YY_RULE_SETUP
2013 #line 279 "glsl_lexer.lpp"
2014 return ADD_ASSIGN;
2015 YY_BREAK
2016 case 111:
2017 YY_RULE_SETUP
2018 #line 280 "glsl_lexer.lpp"
2019 return MOD_ASSIGN;
2020 YY_BREAK
2021 case 112:
2022 YY_RULE_SETUP
2023 #line 281 "glsl_lexer.lpp"
2024 return LEFT_ASSIGN;
2025 YY_BREAK
2026 case 113:
2027 YY_RULE_SETUP
2028 #line 282 "glsl_lexer.lpp"
2029 return RIGHT_ASSIGN;
2030 YY_BREAK
2031 case 114:
2032 YY_RULE_SETUP
2033 #line 283 "glsl_lexer.lpp"
2034 return AND_ASSIGN;
2035 YY_BREAK
2036 case 115:
2037 YY_RULE_SETUP
2038 #line 284 "glsl_lexer.lpp"
2039 return XOR_ASSIGN;
2040 YY_BREAK
2041 case 116:
2042 YY_RULE_SETUP
2043 #line 285 "glsl_lexer.lpp"
2044 return OR_ASSIGN;
2045 YY_BREAK
2046 case 117:
2047 YY_RULE_SETUP
2048 #line 286 "glsl_lexer.lpp"
2049 return SUB_ASSIGN;
2050 YY_BREAK
2051 case 118:
2052 YY_RULE_SETUP
2053 #line 288 "glsl_lexer.lpp"
2054 {
2055 yylval->n = strtol(yytext, NULL, 10);
2056 return IS_UINT ? UINTCONSTANT : INTCONSTANT;
2057 }
2058 YY_BREAK
2059 case 119:
2060 YY_RULE_SETUP
2061 #line 292 "glsl_lexer.lpp"
2062 {
2063 yylval->n = strtol(yytext + 2, NULL, 16);
2064 return IS_UINT ? UINTCONSTANT : INTCONSTANT;
2065 }
2066 YY_BREAK
2067 case 120:
2068 YY_RULE_SETUP
2069 #line 296 "glsl_lexer.lpp"
2070 {
2071 yylval->n = strtol(yytext, NULL, 8);
2072 return IS_UINT ? UINTCONSTANT : INTCONSTANT;
2073 }
2074 YY_BREAK
2075 case 121:
2076 YY_RULE_SETUP
2077 #line 301 "glsl_lexer.lpp"
2078 {
2079 yylval->real = glsl_strtod(yytext, NULL);
2080 return FLOATCONSTANT;
2081 }
2082 YY_BREAK
2083 case 122:
2084 YY_RULE_SETUP
2085 #line 305 "glsl_lexer.lpp"
2086 {
2087 yylval->real = glsl_strtod(yytext, NULL);
2088 return FLOATCONSTANT;
2089 }
2090 YY_BREAK
2091 case 123:
2092 YY_RULE_SETUP
2093 #line 309 "glsl_lexer.lpp"
2094 {
2095 yylval->real = glsl_strtod(yytext, NULL);
2096 return FLOATCONSTANT;
2097 }
2098 YY_BREAK
2099 case 124:
2100 YY_RULE_SETUP
2101 #line 313 "glsl_lexer.lpp"
2102 {
2103 yylval->real = glsl_strtod(yytext, NULL);
2104 return FLOATCONSTANT;
2105 }
2106 YY_BREAK
2107 case 125:
2108 YY_RULE_SETUP
2109 #line 317 "glsl_lexer.lpp"
2110 {
2111 yylval->real = glsl_strtod(yytext, NULL);
2112 return FLOATCONSTANT;
2113 }
2114 YY_BREAK
2115 case 126:
2116 YY_RULE_SETUP
2117 #line 322 "glsl_lexer.lpp"
2118 {
2119 yylval->n = 1;
2120 return BOOLCONSTANT;
2121 }
2122 YY_BREAK
2123 case 127:
2124 YY_RULE_SETUP
2125 #line 326 "glsl_lexer.lpp"
2126 {
2127 yylval->n = 0;
2128 return BOOLCONSTANT;
2129 }
2130 YY_BREAK
2131 /* Reserved words in GLSL 1.10. */
2132 case 128:
2133 YY_RULE_SETUP
2134 #line 333 "glsl_lexer.lpp"
2135 KEYWORD(110 || ES, 999, ASM);
2136 YY_BREAK
2137 case 129:
2138 YY_RULE_SETUP
2139 #line 334 "glsl_lexer.lpp"
2140 KEYWORD(110 || ES, 999, CLASS);
2141 YY_BREAK
2142 case 130:
2143 YY_RULE_SETUP
2144 #line 335 "glsl_lexer.lpp"
2145 KEYWORD(110 || ES, 999, UNION);
2146 YY_BREAK
2147 case 131:
2148 YY_RULE_SETUP
2149 #line 336 "glsl_lexer.lpp"
2150 KEYWORD(110 || ES, 999, ENUM);
2151 YY_BREAK
2152 case 132:
2153 YY_RULE_SETUP
2154 #line 337 "glsl_lexer.lpp"
2155 KEYWORD(110 || ES, 999, TYPEDEF);
2156 YY_BREAK
2157 case 133:
2158 YY_RULE_SETUP
2159 #line 338 "glsl_lexer.lpp"
2160 KEYWORD(110 || ES, 999, TEMPLATE);
2161 YY_BREAK
2162 case 134:
2163 YY_RULE_SETUP
2164 #line 339 "glsl_lexer.lpp"
2165 KEYWORD(110 || ES, 999, THIS);
2166 YY_BREAK
2167 case 135:
2168 YY_RULE_SETUP
2169 #line 340 "glsl_lexer.lpp"
2170 KEYWORD(110 || ES, 999, PACKED_TOK);
2171 YY_BREAK
2172 case 136:
2173 YY_RULE_SETUP
2174 #line 341 "glsl_lexer.lpp"
2175 KEYWORD(110 || ES, 999, GOTO);
2176 YY_BREAK
2177 case 137:
2178 YY_RULE_SETUP
2179 #line 342 "glsl_lexer.lpp"
2180 KEYWORD(110 || ES, 130, SWITCH);
2181 YY_BREAK
2182 case 138:
2183 YY_RULE_SETUP
2184 #line 343 "glsl_lexer.lpp"
2185 KEYWORD(110 || ES, 130, DEFAULT);
2186 YY_BREAK
2187 case 139:
2188 YY_RULE_SETUP
2189 #line 344 "glsl_lexer.lpp"
2190 KEYWORD(110 || ES, 999, INLINE_TOK);
2191 YY_BREAK
2192 case 140:
2193 YY_RULE_SETUP
2194 #line 345 "glsl_lexer.lpp"
2195 KEYWORD(110 || ES, 999, NOINLINE);
2196 YY_BREAK
2197 case 141:
2198 YY_RULE_SETUP
2199 #line 346 "glsl_lexer.lpp"
2200 KEYWORD(110 || ES, 999, VOLATILE);
2201 YY_BREAK
2202 case 142:
2203 YY_RULE_SETUP
2204 #line 347 "glsl_lexer.lpp"
2205 KEYWORD(110 || ES, 999, PUBLIC_TOK);
2206 YY_BREAK
2207 case 143:
2208 YY_RULE_SETUP
2209 #line 348 "glsl_lexer.lpp"
2210 KEYWORD(110 || ES, 999, STATIC);
2211 YY_BREAK
2212 case 144:
2213 YY_RULE_SETUP
2214 #line 349 "glsl_lexer.lpp"
2215 KEYWORD(110 || ES, 999, EXTERN);
2216 YY_BREAK
2217 case 145:
2218 YY_RULE_SETUP
2219 #line 350 "glsl_lexer.lpp"
2220 KEYWORD(110 || ES, 999, EXTERNAL);
2221 YY_BREAK
2222 case 146:
2223 YY_RULE_SETUP
2224 #line 351 "glsl_lexer.lpp"
2225 KEYWORD(110 || ES, 999, INTERFACE);
2226 YY_BREAK
2227 case 147:
2228 YY_RULE_SETUP
2229 #line 352 "glsl_lexer.lpp"
2230 KEYWORD(110 || ES, 999, LONG_TOK);
2231 YY_BREAK
2232 case 148:
2233 YY_RULE_SETUP
2234 #line 353 "glsl_lexer.lpp"
2235 KEYWORD(110 || ES, 999, SHORT_TOK);
2236 YY_BREAK
2237 case 149:
2238 YY_RULE_SETUP
2239 #line 354 "glsl_lexer.lpp"
2240 KEYWORD(110 || ES, 400, DOUBLE_TOK);
2241 YY_BREAK
2242 case 150:
2243 YY_RULE_SETUP
2244 #line 355 "glsl_lexer.lpp"
2245 KEYWORD(110 || ES, 999, HALF);
2246 YY_BREAK
2247 case 151:
2248 YY_RULE_SETUP
2249 #line 356 "glsl_lexer.lpp"
2250 KEYWORD(110 || ES, 999, FIXED_TOK);
2251 YY_BREAK
2252 case 152:
2253 YY_RULE_SETUP
2254 #line 357 "glsl_lexer.lpp"
2255 KEYWORD(110 || ES, 999, UNSIGNED);
2256 YY_BREAK
2257 case 153:
2258 YY_RULE_SETUP
2259 #line 358 "glsl_lexer.lpp"
2260 KEYWORD(110 || ES, 999, INPUT_TOK);
2261 YY_BREAK
2262 case 154:
2263 YY_RULE_SETUP
2264 #line 359 "glsl_lexer.lpp"
2265 KEYWORD(110 || ES, 999, OUTPUT);
2266 YY_BREAK
2267 case 155:
2268 YY_RULE_SETUP
2269 #line 360 "glsl_lexer.lpp"
2270 KEYWORD(110 || ES, 999, HVEC2);
2271 YY_BREAK
2272 case 156:
2273 YY_RULE_SETUP
2274 #line 361 "glsl_lexer.lpp"
2275 KEYWORD(110 || ES, 999, HVEC3);
2276 YY_BREAK
2277 case 157:
2278 YY_RULE_SETUP
2279 #line 362 "glsl_lexer.lpp"
2280 KEYWORD(110 || ES, 999, HVEC4);
2281 YY_BREAK
2282 case 158:
2283 YY_RULE_SETUP
2284 #line 363 "glsl_lexer.lpp"
2285 KEYWORD(110 || ES, 400, DVEC2);
2286 YY_BREAK
2287 case 159:
2288 YY_RULE_SETUP
2289 #line 364 "glsl_lexer.lpp"
2290 KEYWORD(110 || ES, 400, DVEC3);
2291 YY_BREAK
2292 case 160:
2293 YY_RULE_SETUP
2294 #line 365 "glsl_lexer.lpp"
2295 KEYWORD(110 || ES, 400, DVEC4);
2296 YY_BREAK
2297 case 161:
2298 YY_RULE_SETUP
2299 #line 366 "glsl_lexer.lpp"
2300 KEYWORD(110 || ES, 999, FVEC2);
2301 YY_BREAK
2302 case 162:
2303 YY_RULE_SETUP
2304 #line 367 "glsl_lexer.lpp"
2305 KEYWORD(110 || ES, 999, FVEC3);
2306 YY_BREAK
2307 case 163:
2308 YY_RULE_SETUP
2309 #line 368 "glsl_lexer.lpp"
2310 KEYWORD(110 || ES, 999, FVEC4);
2311 YY_BREAK
2312 case 164:
2313 YY_RULE_SETUP
2314 #line 369 "glsl_lexer.lpp"
2315 return SAMPLER2DRECT;
2316 YY_BREAK
2317 case 165:
2318 YY_RULE_SETUP
2319 #line 370 "glsl_lexer.lpp"
2320 KEYWORD(110 || ES, 999, SAMPLER3DRECT);
2321 YY_BREAK
2322 case 166:
2323 YY_RULE_SETUP
2324 #line 371 "glsl_lexer.lpp"
2325 return SAMPLER2DRECTSHADOW;
2326 YY_BREAK
2327 case 167:
2328 YY_RULE_SETUP
2329 #line 372 "glsl_lexer.lpp"
2330 KEYWORD(110 || ES, 999, SIZEOF);
2331 YY_BREAK
2332 case 168:
2333 YY_RULE_SETUP
2334 #line 373 "glsl_lexer.lpp"
2335 KEYWORD(110 || ES, 999, CAST);
2336 YY_BREAK
2337 case 169:
2338 YY_RULE_SETUP
2339 #line 374 "glsl_lexer.lpp"
2340 KEYWORD(110 || ES, 999, NAMESPACE);
2341 YY_BREAK
2342 case 170:
2343 YY_RULE_SETUP
2344 #line 375 "glsl_lexer.lpp"
2345 KEYWORD(110 || ES, 999, USING);
2346 YY_BREAK
2347 /* Additional reserved words in GLSL 1.20. */
2348 case 171:
2349 YY_RULE_SETUP
2350 #line 378 "glsl_lexer.lpp"
2351 KEYWORD(120, 130 || ES, LOWP);
2352 YY_BREAK
2353 case 172:
2354 YY_RULE_SETUP
2355 #line 379 "glsl_lexer.lpp"
2356 KEYWORD(120, 130 || ES, MEDIUMP);
2357 YY_BREAK
2358 case 173:
2359 YY_RULE_SETUP
2360 #line 380 "glsl_lexer.lpp"
2361 KEYWORD(120, 130 || ES, HIGHP);
2362 YY_BREAK
2363 case 174:
2364 YY_RULE_SETUP
2365 #line 381 "glsl_lexer.lpp"
2366 KEYWORD(120, 130 || ES, PRECISION);
2367 YY_BREAK
2368 /* Additional reserved words in GLSL 1.30. */
2369 case 175:
2370 YY_RULE_SETUP
2371 #line 384 "glsl_lexer.lpp"
2372 KEYWORD(130, 130, CASE);
2373 YY_BREAK
2374 case 176:
2375 YY_RULE_SETUP
2376 #line 385 "glsl_lexer.lpp"
2377 KEYWORD(130, 999, COMMON);
2378 YY_BREAK
2379 case 177:
2380 YY_RULE_SETUP
2381 #line 386 "glsl_lexer.lpp"
2382 KEYWORD(130, 999, PARTITION);
2383 YY_BREAK
2384 case 178:
2385 YY_RULE_SETUP
2386 #line 387 "glsl_lexer.lpp"
2387 KEYWORD(130, 999, ACTIVE);
2388 YY_BREAK
2389 case 179:
2390 YY_RULE_SETUP
2391 #line 388 "glsl_lexer.lpp"
2392 KEYWORD(130 || ES, 999, SUPERP);
2393 YY_BREAK
2394 case 180:
2395 YY_RULE_SETUP
2396 #line 389 "glsl_lexer.lpp"
2397 KEYWORD(130, 140, SAMPLERBUFFER);
2398 YY_BREAK
2399 case 181:
2400 YY_RULE_SETUP
2401 #line 390 "glsl_lexer.lpp"
2402 KEYWORD(130, 999, FILTER);
2403 YY_BREAK
2404 case 182:
2405 YY_RULE_SETUP
2406 #line 391 "glsl_lexer.lpp"
2407 KEYWORD(130, 999, IMAGE1D);
2408 YY_BREAK
2409 case 183:
2410 YY_RULE_SETUP
2411 #line 392 "glsl_lexer.lpp"
2412 KEYWORD(130, 999, IMAGE2D);
2413 YY_BREAK
2414 case 184:
2415 YY_RULE_SETUP
2416 #line 393 "glsl_lexer.lpp"
2417 KEYWORD(130, 999, IMAGE3D);
2418 YY_BREAK
2419 case 185:
2420 YY_RULE_SETUP
2421 #line 394 "glsl_lexer.lpp"
2422 KEYWORD(130, 999, IMAGECUBE);
2423 YY_BREAK
2424 case 186:
2425 YY_RULE_SETUP
2426 #line 395 "glsl_lexer.lpp"
2427 KEYWORD(130, 999, IIMAGE1D);
2428 YY_BREAK
2429 case 187:
2430 YY_RULE_SETUP
2431 #line 396 "glsl_lexer.lpp"
2432 KEYWORD(130, 999, IIMAGE2D);
2433 YY_BREAK
2434 case 188:
2435 YY_RULE_SETUP
2436 #line 397 "glsl_lexer.lpp"
2437 KEYWORD(130, 999, IIMAGE3D);
2438 YY_BREAK
2439 case 189:
2440 YY_RULE_SETUP
2441 #line 398 "glsl_lexer.lpp"
2442 KEYWORD(130, 999, IIMAGECUBE);
2443 YY_BREAK
2444 case 190:
2445 YY_RULE_SETUP
2446 #line 399 "glsl_lexer.lpp"
2447 KEYWORD(130, 999, UIMAGE1D);
2448 YY_BREAK
2449 case 191:
2450 YY_RULE_SETUP
2451 #line 400 "glsl_lexer.lpp"
2452 KEYWORD(130, 999, UIMAGE2D);
2453 YY_BREAK
2454 case 192:
2455 YY_RULE_SETUP
2456 #line 401 "glsl_lexer.lpp"
2457 KEYWORD(130, 999, UIMAGE3D);
2458 YY_BREAK
2459 case 193:
2460 YY_RULE_SETUP
2461 #line 402 "glsl_lexer.lpp"
2462 KEYWORD(130, 999, UIMAGECUBE);
2463 YY_BREAK
2464 case 194:
2465 YY_RULE_SETUP
2466 #line 403 "glsl_lexer.lpp"
2467 KEYWORD(130, 999, IMAGE1DARRAY);
2468 YY_BREAK
2469 case 195:
2470 YY_RULE_SETUP
2471 #line 404 "glsl_lexer.lpp"
2472 KEYWORD(130, 999, IMAGE2DARRAY);
2473 YY_BREAK
2474 case 196:
2475 YY_RULE_SETUP
2476 #line 405 "glsl_lexer.lpp"
2477 KEYWORD(130, 999, IIMAGE1DARRAY);
2478 YY_BREAK
2479 case 197:
2480 YY_RULE_SETUP
2481 #line 406 "glsl_lexer.lpp"
2482 KEYWORD(130, 999, IIMAGE2DARRAY);
2483 YY_BREAK
2484 case 198:
2485 YY_RULE_SETUP
2486 #line 407 "glsl_lexer.lpp"
2487 KEYWORD(130, 999, UIMAGE1DARRAY);
2488 YY_BREAK
2489 case 199:
2490 YY_RULE_SETUP
2491 #line 408 "glsl_lexer.lpp"
2492 KEYWORD(130, 999, UIMAGE2DARRAY);
2493 YY_BREAK
2494 case 200:
2495 YY_RULE_SETUP
2496 #line 409 "glsl_lexer.lpp"
2497 KEYWORD(130, 999, IMAGE1DSHADOW);
2498 YY_BREAK
2499 case 201:
2500 YY_RULE_SETUP
2501 #line 410 "glsl_lexer.lpp"
2502 KEYWORD(130, 999, IMAGE2DSHADOW);
2503 YY_BREAK
2504 case 202:
2505 YY_RULE_SETUP
2506 #line 411 "glsl_lexer.lpp"
2507 KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
2508 YY_BREAK
2509 case 203:
2510 YY_RULE_SETUP
2511 #line 412 "glsl_lexer.lpp"
2512 KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
2513 YY_BREAK
2514 case 204:
2515 YY_RULE_SETUP
2516 #line 413 "glsl_lexer.lpp"
2517 KEYWORD(130, 999, IMAGEBUFFER);
2518 YY_BREAK
2519 case 205:
2520 YY_RULE_SETUP
2521 #line 414 "glsl_lexer.lpp"
2522 KEYWORD(130, 999, IIMAGEBUFFER);
2523 YY_BREAK
2524 case 206:
2525 YY_RULE_SETUP
2526 #line 415 "glsl_lexer.lpp"
2527 KEYWORD(130, 999, UIMAGEBUFFER);
2528 YY_BREAK
2529 case 207:
2530 YY_RULE_SETUP
2531 #line 416 "glsl_lexer.lpp"
2532 KEYWORD(130, 999, ROW_MAJOR);
2533 YY_BREAK
2534 case 208:
2535 YY_RULE_SETUP
2536 #line 418 "glsl_lexer.lpp"
2537 {
2538 struct _mesa_glsl_parse_state *state = yyextra;
2539 void *ctx = state;
2540 yylval->identifier = talloc_strdup(ctx, yytext);
2541 return IDENTIFIER;
2542 }
2543 YY_BREAK
2544 case 209:
2545 YY_RULE_SETUP
2546 #line 425 "glsl_lexer.lpp"
2547 { return yytext[0]; }
2548 YY_BREAK
2549 case 210:
2550 YY_RULE_SETUP
2551 #line 427 "glsl_lexer.lpp"
2552 ECHO;
2553 YY_BREAK
2554 #line 2555 "glsl_lexer.cpp"
2555 case YY_STATE_EOF(INITIAL):
2556 case YY_STATE_EOF(PP):
2557 case YY_STATE_EOF(PRAGMA):
2558 yyterminate();
2559
2560 case YY_END_OF_BUFFER:
2561 {
2562 /* Amount of text matched not including the EOB char. */
2563 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2564
2565 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2566 *yy_cp = yyg->yy_hold_char;
2567 YY_RESTORE_YY_MORE_OFFSET
2568
2569 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2570 {
2571 /* We're scanning a new file or input source. It's
2572 * possible that this happened because the user
2573 * just pointed yyin at a new source and called
2574 * _mesa_glsl_lex(). If so, then we have to assure
2575 * consistency between YY_CURRENT_BUFFER and our
2576 * globals. Here is the right place to do so, because
2577 * this is the first action (other than possibly a
2578 * back-up) that will match for the new input source.
2579 */
2580 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2581 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2582 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2583 }
2584
2585 /* Note that here we test for yy_c_buf_p "<=" to the position
2586 * of the first EOB in the buffer, since yy_c_buf_p will
2587 * already have been incremented past the NUL character
2588 * (since all states make transitions on EOB to the
2589 * end-of-buffer state). Contrast this with the test
2590 * in input().
2591 */
2592 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2593 { /* This was really a NUL. */
2594 yy_state_type yy_next_state;
2595
2596 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2597
2598 yy_current_state = yy_get_previous_state( yyscanner );
2599
2600 /* Okay, we're now positioned to make the NUL
2601 * transition. We couldn't have
2602 * yy_get_previous_state() go ahead and do it
2603 * for us because it doesn't know how to deal
2604 * with the possibility of jamming (and we don't
2605 * want to build jamming into it because then it
2606 * will run more slowly).
2607 */
2608
2609 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2610
2611 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2612
2613 if ( yy_next_state )
2614 {
2615 /* Consume the NUL. */
2616 yy_cp = ++yyg->yy_c_buf_p;
2617 yy_current_state = yy_next_state;
2618 goto yy_match;
2619 }
2620
2621 else
2622 {
2623 yy_cp = yyg->yy_last_accepting_cpos;
2624 yy_current_state = yyg->yy_last_accepting_state;
2625 goto yy_find_action;
2626 }
2627 }
2628
2629 else switch ( yy_get_next_buffer( yyscanner ) )
2630 {
2631 case EOB_ACT_END_OF_FILE:
2632 {
2633 yyg->yy_did_buffer_switch_on_eof = 0;
2634
2635 if ( _mesa_glsl_wrap(yyscanner ) )
2636 {
2637 /* Note: because we've taken care in
2638 * yy_get_next_buffer() to have set up
2639 * yytext, we can now set up
2640 * yy_c_buf_p so that if some total
2641 * hoser (like flex itself) wants to
2642 * call the scanner after we return the
2643 * YY_NULL, it'll still work - another
2644 * YY_NULL will get returned.
2645 */
2646 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2647
2648 yy_act = YY_STATE_EOF(YY_START);
2649 goto do_action;
2650 }
2651
2652 else
2653 {
2654 if ( ! yyg->yy_did_buffer_switch_on_eof )
2655 YY_NEW_FILE;
2656 }
2657 break;
2658 }
2659
2660 case EOB_ACT_CONTINUE_SCAN:
2661 yyg->yy_c_buf_p =
2662 yyg->yytext_ptr + yy_amount_of_matched_text;
2663
2664 yy_current_state = yy_get_previous_state( yyscanner );
2665
2666 yy_cp = yyg->yy_c_buf_p;
2667 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2668 goto yy_match;
2669
2670 case EOB_ACT_LAST_MATCH:
2671 yyg->yy_c_buf_p =
2672 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2673
2674 yy_current_state = yy_get_previous_state( yyscanner );
2675
2676 yy_cp = yyg->yy_c_buf_p;
2677 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2678 goto yy_find_action;
2679 }
2680 break;
2681 }
2682
2683 default:
2684 YY_FATAL_ERROR(
2685 "fatal flex scanner internal error--no action found" );
2686 } /* end of action switch */
2687 } /* end of scanning one token */
2688 } /* end of _mesa_glsl_lex */
2689
2690 /* yy_get_next_buffer - try to read in a new buffer
2691 *
2692 * Returns a code representing an action:
2693 * EOB_ACT_LAST_MATCH -
2694 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2695 * EOB_ACT_END_OF_FILE - end of file
2696 */
2697 static int yy_get_next_buffer (yyscan_t yyscanner)
2698 {
2699 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2700 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2701 register char *source = yyg->yytext_ptr;
2702 register int number_to_move, i;
2703 int ret_val;
2704
2705 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2706 YY_FATAL_ERROR(
2707 "fatal flex scanner internal error--end of buffer missed" );
2708
2709 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2710 { /* Don't try to fill the buffer, so this is an EOF. */
2711 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2712 {
2713 /* We matched a single character, the EOB, so
2714 * treat this as a final EOF.
2715 */
2716 return EOB_ACT_END_OF_FILE;
2717 }
2718
2719 else
2720 {
2721 /* We matched some text prior to the EOB, first
2722 * process it.
2723 */
2724 return EOB_ACT_LAST_MATCH;
2725 }
2726 }
2727
2728 /* Try to read more data. */
2729
2730 /* First move last chars to start of buffer. */
2731 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2732
2733 for ( i = 0; i < number_to_move; ++i )
2734 *(dest++) = *(source++);
2735
2736 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2737 /* don't do the read, it's not guaranteed to return an EOF,
2738 * just force an EOF
2739 */
2740 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2741
2742 else
2743 {
2744 int num_to_read =
2745 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2746
2747 while ( num_to_read <= 0 )
2748 { /* Not enough room in the buffer - grow it. */
2749
2750 /* just a shorter name for the current buffer */
2751 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2752
2753 int yy_c_buf_p_offset =
2754 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2755
2756 if ( b->yy_is_our_buffer )
2757 {
2758 int new_size = b->yy_buf_size * 2;
2759
2760 if ( new_size <= 0 )
2761 b->yy_buf_size += b->yy_buf_size / 8;
2762 else
2763 b->yy_buf_size *= 2;
2764
2765 b->yy_ch_buf = (char *)
2766 /* Include room in for 2 EOB chars. */
2767 _mesa_glsl_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2768 }
2769 else
2770 /* Can't grow it, we don't own it. */
2771 b->yy_ch_buf = 0;
2772
2773 if ( ! b->yy_ch_buf )
2774 YY_FATAL_ERROR(
2775 "fatal error - scanner input buffer overflow" );
2776
2777 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2778
2779 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2780 number_to_move - 1;
2781
2782 }
2783
2784 if ( num_to_read > YY_READ_BUF_SIZE )
2785 num_to_read = YY_READ_BUF_SIZE;
2786
2787 /* Read in more data. */
2788 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2789 yyg->yy_n_chars, (size_t) num_to_read );
2790
2791 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2792 }
2793
2794 if ( yyg->yy_n_chars == 0 )
2795 {
2796 if ( number_to_move == YY_MORE_ADJ )
2797 {
2798 ret_val = EOB_ACT_END_OF_FILE;
2799 _mesa_glsl_restart(yyin ,yyscanner);
2800 }
2801
2802 else
2803 {
2804 ret_val = EOB_ACT_LAST_MATCH;
2805 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2806 YY_BUFFER_EOF_PENDING;
2807 }
2808 }
2809
2810 else
2811 ret_val = EOB_ACT_CONTINUE_SCAN;
2812
2813 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2814 /* Extend the array by 50%, plus the number we really need. */
2815 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2816 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) _mesa_glsl_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
2817 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2818 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2819 }
2820
2821 yyg->yy_n_chars += number_to_move;
2822 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2823 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2824
2825 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2826
2827 return ret_val;
2828 }
2829
2830 /* yy_get_previous_state - get the state just before the EOB char was reached */
2831
2832 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2833 {
2834 register yy_state_type yy_current_state;
2835 register char *yy_cp;
2836 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2837
2838 yy_current_state = yyg->yy_start;
2839 yy_current_state += YY_AT_BOL();
2840
2841 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2842 {
2843 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2844 if ( yy_accept[yy_current_state] )
2845 {
2846 yyg->yy_last_accepting_state = yy_current_state;
2847 yyg->yy_last_accepting_cpos = yy_cp;
2848 }
2849 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2850 {
2851 yy_current_state = (int) yy_def[yy_current_state];
2852 if ( yy_current_state >= 836 )
2853 yy_c = yy_meta[(unsigned int) yy_c];
2854 }
2855 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2856 }
2857
2858 return yy_current_state;
2859 }
2860
2861 /* yy_try_NUL_trans - try to make a transition on the NUL character
2862 *
2863 * synopsis
2864 * next_state = yy_try_NUL_trans( current_state );
2865 */
2866 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2867 {
2868 register int yy_is_jam;
2869 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2870 register char *yy_cp = yyg->yy_c_buf_p;
2871
2872 register YY_CHAR yy_c = 1;
2873 if ( yy_accept[yy_current_state] )
2874 {
2875 yyg->yy_last_accepting_state = yy_current_state;
2876 yyg->yy_last_accepting_cpos = yy_cp;
2877 }
2878 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2879 {
2880 yy_current_state = (int) yy_def[yy_current_state];
2881 if ( yy_current_state >= 836 )
2882 yy_c = yy_meta[(unsigned int) yy_c];
2883 }
2884 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2885 yy_is_jam = (yy_current_state == 835);
2886
2887 return yy_is_jam ? 0 : yy_current_state;
2888 }
2889
2890 #ifndef YY_NO_INPUT
2891 #ifdef __cplusplus
2892 static int yyinput (yyscan_t yyscanner)
2893 #else
2894 static int input (yyscan_t yyscanner)
2895 #endif
2896
2897 {
2898 int c;
2899 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2900
2901 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2902
2903 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2904 {
2905 /* yy_c_buf_p now points to the character we want to return.
2906 * If this occurs *before* the EOB characters, then it's a
2907 * valid NUL; if not, then we've hit the end of the buffer.
2908 */
2909 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2910 /* This was really a NUL. */
2911 *yyg->yy_c_buf_p = '\0';
2912
2913 else
2914 { /* need more input */
2915 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2916 ++yyg->yy_c_buf_p;
2917
2918 switch ( yy_get_next_buffer( yyscanner ) )
2919 {
2920 case EOB_ACT_LAST_MATCH:
2921 /* This happens because yy_g_n_b()
2922 * sees that we've accumulated a
2923 * token and flags that we need to
2924 * try matching the token before
2925 * proceeding. But for input(),
2926 * there's no matching to consider.
2927 * So convert the EOB_ACT_LAST_MATCH
2928 * to EOB_ACT_END_OF_FILE.
2929 */
2930
2931 /* Reset buffer status. */
2932 _mesa_glsl_restart(yyin ,yyscanner);
2933
2934 /*FALLTHROUGH*/
2935
2936 case EOB_ACT_END_OF_FILE:
2937 {
2938 if ( _mesa_glsl_wrap(yyscanner ) )
2939 return EOF;
2940
2941 if ( ! yyg->yy_did_buffer_switch_on_eof )
2942 YY_NEW_FILE;
2943 #ifdef __cplusplus
2944 return yyinput(yyscanner);
2945 #else
2946 return input(yyscanner);
2947 #endif
2948 }
2949
2950 case EOB_ACT_CONTINUE_SCAN:
2951 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2952 break;
2953 }
2954 }
2955 }
2956
2957 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2958 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2959 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2960
2961 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
2962
2963 return c;
2964 }
2965 #endif /* ifndef YY_NO_INPUT */
2966
2967 /** Immediately switch to a different input stream.
2968 * @param input_file A readable stream.
2969 * @param yyscanner The scanner object.
2970 * @note This function does not reset the start condition to @c INITIAL .
2971 */
2972 void _mesa_glsl_restart (FILE * input_file , yyscan_t yyscanner)
2973 {
2974 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2975
2976 if ( ! YY_CURRENT_BUFFER ){
2977 _mesa_glsl_ensure_buffer_stack (yyscanner);
2978 YY_CURRENT_BUFFER_LVALUE =
2979 _mesa_glsl__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2980 }
2981
2982 _mesa_glsl__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2983 _mesa_glsl__load_buffer_state(yyscanner );
2984 }
2985
2986 /** Switch to a different input buffer.
2987 * @param new_buffer The new input buffer.
2988 * @param yyscanner The scanner object.
2989 */
2990 void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2991 {
2992 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2993
2994 /* TODO. We should be able to replace this entire function body
2995 * with
2996 * _mesa_glsl_pop_buffer_state();
2997 * _mesa_glsl_push_buffer_state(new_buffer);
2998 */
2999 _mesa_glsl_ensure_buffer_stack (yyscanner);
3000 if ( YY_CURRENT_BUFFER == new_buffer )
3001 return;
3002
3003 if ( YY_CURRENT_BUFFER )
3004 {
3005 /* Flush out information for old buffer. */
3006 *yyg->yy_c_buf_p = yyg->yy_hold_char;
3007 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3008 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3009 }
3010
3011 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3012 _mesa_glsl__load_buffer_state(yyscanner );
3013
3014 /* We don't actually know whether we did this switch during
3015 * EOF (_mesa_glsl_wrap()) processing, but the only time this flag
3016 * is looked at is after _mesa_glsl_wrap() is called, so it's safe
3017 * to go ahead and always set it.
3018 */
3019 yyg->yy_did_buffer_switch_on_eof = 1;
3020 }
3021
3022 static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner)
3023 {
3024 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3025 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3026 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3027 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3028 yyg->yy_hold_char = *yyg->yy_c_buf_p;
3029 }
3030
3031 /** Allocate and initialize an input buffer state.
3032 * @param file A readable stream.
3033 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3034 * @param yyscanner The scanner object.
3035 * @return the allocated buffer state.
3036 */
3037 YY_BUFFER_STATE _mesa_glsl__create_buffer (FILE * file, int size , yyscan_t yyscanner)
3038 {
3039 YY_BUFFER_STATE b;
3040
3041 b = (YY_BUFFER_STATE) _mesa_glsl_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
3042 if ( ! b )
3043 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3044
3045 b->yy_buf_size = size;
3046
3047 /* yy_ch_buf has to be 2 characters longer than the size given because
3048 * we need to put in 2 end-of-buffer characters.
3049 */
3050 b->yy_ch_buf = (char *) _mesa_glsl_alloc(b->yy_buf_size + 2 ,yyscanner );
3051 if ( ! b->yy_ch_buf )
3052 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3053
3054 b->yy_is_our_buffer = 1;
3055
3056 _mesa_glsl__init_buffer(b,file ,yyscanner);
3057
3058 return b;
3059 }
3060
3061 /** Destroy the buffer.
3062 * @param b a buffer created with _mesa_glsl__create_buffer()
3063 * @param yyscanner The scanner object.
3064 */
3065 void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
3066 {
3067 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3068
3069 if ( ! b )
3070 return;
3071
3072 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3073 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3074
3075 if ( b->yy_is_our_buffer )
3076 _mesa_glsl_free((void *) b->yy_ch_buf ,yyscanner );
3077
3078 _mesa_glsl_free((void *) b ,yyscanner );
3079 }
3080
3081 /* Initializes or reinitializes a buffer.
3082 * This function is sometimes called more than once on the same buffer,
3083 * such as during a _mesa_glsl_restart() or at EOF.
3084 */
3085 static void _mesa_glsl__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
3086
3087 {
3088 int oerrno = errno;
3089 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3090
3091 _mesa_glsl__flush_buffer(b ,yyscanner);
3092
3093 b->yy_input_file = file;
3094 b->yy_fill_buffer = 1;
3095
3096 /* If b is the current buffer, then _mesa_glsl__init_buffer was _probably_
3097 * called from _mesa_glsl_restart() or through yy_get_next_buffer.
3098 * In that case, we don't want to reset the lineno or column.
3099 */
3100 if (b != YY_CURRENT_BUFFER){
3101 b->yy_bs_lineno = 1;
3102 b->yy_bs_column = 0;
3103 }
3104
3105 b->yy_is_interactive = 0;
3106
3107 errno = oerrno;
3108 }
3109
3110 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3111 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3112 * @param yyscanner The scanner object.
3113 */
3114 void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
3115 {
3116 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3117 if ( ! b )
3118 return;
3119
3120 b->yy_n_chars = 0;
3121
3122 /* We always need two end-of-buffer characters. The first causes
3123 * a transition to the end-of-buffer state. The second causes
3124 * a jam in that state.
3125 */
3126 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3127 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3128
3129 b->yy_buf_pos = &b->yy_ch_buf[0];
3130
3131 b->yy_at_bol = 1;
3132 b->yy_buffer_status = YY_BUFFER_NEW;
3133
3134 if ( b == YY_CURRENT_BUFFER )
3135 _mesa_glsl__load_buffer_state(yyscanner );
3136 }
3137
3138 /** Pushes the new state onto the stack. The new state becomes
3139 * the current state. This function will allocate the stack
3140 * if necessary.
3141 * @param new_buffer The new state.
3142 * @param yyscanner The scanner object.
3143 */
3144 void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
3145 {
3146 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3147 if (new_buffer == NULL)
3148 return;
3149
3150 _mesa_glsl_ensure_buffer_stack(yyscanner);
3151
3152 /* This block is copied from _mesa_glsl__switch_to_buffer. */
3153 if ( YY_CURRENT_BUFFER )
3154 {
3155 /* Flush out information for old buffer. */
3156 *yyg->yy_c_buf_p = yyg->yy_hold_char;
3157 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
3158 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
3159 }
3160
3161 /* Only push if top exists. Otherwise, replace top. */
3162 if (YY_CURRENT_BUFFER)
3163 yyg->yy_buffer_stack_top++;
3164 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3165
3166 /* copied from _mesa_glsl__switch_to_buffer. */
3167 _mesa_glsl__load_buffer_state(yyscanner );
3168 yyg->yy_did_buffer_switch_on_eof = 1;
3169 }
3170
3171 /** Removes and deletes the top of the stack, if present.
3172 * The next element becomes the new top.
3173 * @param yyscanner The scanner object.
3174 */
3175 void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner)
3176 {
3177 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3178 if (!YY_CURRENT_BUFFER)
3179 return;
3180
3181 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
3182 YY_CURRENT_BUFFER_LVALUE = NULL;
3183 if (yyg->yy_buffer_stack_top > 0)
3184 --yyg->yy_buffer_stack_top;
3185
3186 if (YY_CURRENT_BUFFER) {
3187 _mesa_glsl__load_buffer_state(yyscanner );
3188 yyg->yy_did_buffer_switch_on_eof = 1;
3189 }
3190 }
3191
3192 /* Allocates the stack if it does not exist.
3193 * Guarantees space for at least one push.
3194 */
3195 static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner)
3196 {
3197 int num_to_alloc;
3198 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3199
3200 if (!yyg->yy_buffer_stack) {
3201
3202 /* First allocation is just for 2 elements, since we don't know if this
3203 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3204 * immediate realloc on the next call.
3205 */
3206 num_to_alloc = 1;
3207 yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_alloc
3208 (num_to_alloc * sizeof(struct yy_buffer_state*)
3209 , yyscanner);
3210 if ( ! yyg->yy_buffer_stack )
3211 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3212
3213 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3214
3215 yyg->yy_buffer_stack_max = num_to_alloc;
3216 yyg->yy_buffer_stack_top = 0;
3217 return;
3218 }
3219
3220 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
3221
3222 /* Increase the buffer to prepare for a possible push. */
3223 int grow_size = 8 /* arbitrary grow size */;
3224
3225 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
3226 yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_realloc
3227 (yyg->yy_buffer_stack,
3228 num_to_alloc * sizeof(struct yy_buffer_state*)
3229 , yyscanner);
3230 if ( ! yyg->yy_buffer_stack )
3231 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3232
3233 /* zero only the new slots.*/
3234 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
3235 yyg->yy_buffer_stack_max = num_to_alloc;
3236 }
3237 }
3238
3239 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3240 * @param base the character buffer
3241 * @param size the size in bytes of the character buffer
3242 * @param yyscanner The scanner object.
3243 * @return the newly allocated buffer state object.
3244 */
3245 YY_BUFFER_STATE _mesa_glsl__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
3246 {
3247 YY_BUFFER_STATE b;
3248
3249 if ( size < 2 ||
3250 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3251 base[size-1] != YY_END_OF_BUFFER_CHAR )
3252 /* They forgot to leave room for the EOB's. */
3253 return 0;
3254
3255 b = (YY_BUFFER_STATE) _mesa_glsl_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
3256 if ( ! b )
3257 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_buffer()" );
3258
3259 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3260 b->yy_buf_pos = b->yy_ch_buf = base;
3261 b->yy_is_our_buffer = 0;
3262 b->yy_input_file = 0;
3263 b->yy_n_chars = b->yy_buf_size;
3264 b->yy_is_interactive = 0;
3265 b->yy_at_bol = 1;
3266 b->yy_fill_buffer = 0;
3267 b->yy_buffer_status = YY_BUFFER_NEW;
3268
3269 _mesa_glsl__switch_to_buffer(b ,yyscanner );
3270
3271 return b;
3272 }
3273
3274 /** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lex() will
3275 * scan from a @e copy of @a str.
3276 * @param yystr a NUL-terminated string to scan
3277 * @param yyscanner The scanner object.
3278 * @return the newly allocated buffer state object.
3279 * @note If you want to scan bytes that may contain NUL values, then use
3280 * _mesa_glsl__scan_bytes() instead.
3281 */
3282 YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscanner)
3283 {
3284
3285 return _mesa_glsl__scan_bytes(yystr,strlen(yystr) ,yyscanner);
3286 }
3287
3288 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
3289 * scan from a @e copy of @a bytes.
3290 * @param bytes the byte buffer to scan
3291 * @param len the number of bytes in the buffer pointed to by @a bytes.
3292 * @param yyscanner The scanner object.
3293 * @return the newly allocated buffer state object.
3294 */
3295 YY_BUFFER_STATE _mesa_glsl__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
3296 {
3297 YY_BUFFER_STATE b;
3298 char *buf;
3299 yy_size_t n;
3300 int i;
3301
3302 /* Get memory for full buffer, including space for trailing EOB's. */
3303 n = _yybytes_len + 2;
3304 buf = (char *) _mesa_glsl_alloc(n ,yyscanner );
3305 if ( ! buf )
3306 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_bytes()" );
3307
3308 for ( i = 0; i < _yybytes_len; ++i )
3309 buf[i] = yybytes[i];
3310
3311 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3312
3313 b = _mesa_glsl__scan_buffer(buf,n ,yyscanner);
3314 if ( ! b )
3315 YY_FATAL_ERROR( "bad buffer in _mesa_glsl__scan_bytes()" );
3316
3317 /* It's okay to grow etc. this buffer, and we should throw it
3318 * away when we're done.
3319 */
3320 b->yy_is_our_buffer = 1;
3321
3322 return b;
3323 }
3324
3325 #ifndef YY_EXIT_FAILURE
3326 #define YY_EXIT_FAILURE 2
3327 #endif
3328
3329 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
3330 {
3331 (void) fprintf( stderr, "%s\n", msg );
3332 exit( YY_EXIT_FAILURE );
3333 }
3334
3335 /* Redefine yyless() so it works in section 3 code. */
3336
3337 #undef yyless
3338 #define yyless(n) \
3339 do \
3340 { \
3341 /* Undo effects of setting up yytext. */ \
3342 int yyless_macro_arg = (n); \
3343 YY_LESS_LINENO(yyless_macro_arg);\
3344 yytext[yyleng] = yyg->yy_hold_char; \
3345 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3346 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3347 *yyg->yy_c_buf_p = '\0'; \
3348 yyleng = yyless_macro_arg; \
3349 } \
3350 while ( 0 )
3351
3352 /* Accessor methods (get/set functions) to struct members. */
3353
3354 /** Get the user-defined data for this scanner.
3355 * @param yyscanner The scanner object.
3356 */
3357 YY_EXTRA_TYPE _mesa_glsl_get_extra (yyscan_t yyscanner)
3358 {
3359 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3360 return yyextra;
3361 }
3362
3363 /** Get the current line number.
3364 * @param yyscanner The scanner object.
3365 */
3366 int _mesa_glsl_get_lineno (yyscan_t yyscanner)
3367 {
3368 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3369
3370 if (! YY_CURRENT_BUFFER)
3371 return 0;
3372
3373 return yylineno;
3374 }
3375
3376 /** Get the current column number.
3377 * @param yyscanner The scanner object.
3378 */
3379 int _mesa_glsl_get_column (yyscan_t yyscanner)
3380 {
3381 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3382
3383 if (! YY_CURRENT_BUFFER)
3384 return 0;
3385
3386 return yycolumn;
3387 }
3388
3389 /** Get the input stream.
3390 * @param yyscanner The scanner object.
3391 */
3392 FILE *_mesa_glsl_get_in (yyscan_t yyscanner)
3393 {
3394 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3395 return yyin;
3396 }
3397
3398 /** Get the output stream.
3399 * @param yyscanner The scanner object.
3400 */
3401 FILE *_mesa_glsl_get_out (yyscan_t yyscanner)
3402 {
3403 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3404 return yyout;
3405 }
3406
3407 /** Get the length of the current token.
3408 * @param yyscanner The scanner object.
3409 */
3410 int _mesa_glsl_get_leng (yyscan_t yyscanner)
3411 {
3412 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3413 return yyleng;
3414 }
3415
3416 /** Get the current token.
3417 * @param yyscanner The scanner object.
3418 */
3419
3420 char *_mesa_glsl_get_text (yyscan_t yyscanner)
3421 {
3422 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3423 return yytext;
3424 }
3425
3426 /** Set the user-defined data. This data is never touched by the scanner.
3427 * @param user_defined The data to be associated with this scanner.
3428 * @param yyscanner The scanner object.
3429 */
3430 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
3431 {
3432 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3433 yyextra = user_defined ;
3434 }
3435
3436 /** Set the current line number.
3437 * @param line_number
3438 * @param yyscanner The scanner object.
3439 */
3440 void _mesa_glsl_set_lineno (int line_number , yyscan_t yyscanner)
3441 {
3442 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3443
3444 /* lineno is only valid if an input buffer exists. */
3445 if (! YY_CURRENT_BUFFER )
3446 yy_fatal_error( "_mesa_glsl_set_lineno called with no buffer" , yyscanner);
3447
3448 yylineno = line_number;
3449 }
3450
3451 /** Set the current column.
3452 * @param line_number
3453 * @param yyscanner The scanner object.
3454 */
3455 void _mesa_glsl_set_column (int column_no , yyscan_t yyscanner)
3456 {
3457 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3458
3459 /* column is only valid if an input buffer exists. */
3460 if (! YY_CURRENT_BUFFER )
3461 yy_fatal_error( "_mesa_glsl_set_column called with no buffer" , yyscanner);
3462
3463 yycolumn = column_no;
3464 }
3465
3466 /** Set the input stream. This does not discard the current
3467 * input buffer.
3468 * @param in_str A readable stream.
3469 * @param yyscanner The scanner object.
3470 * @see _mesa_glsl__switch_to_buffer
3471 */
3472 void _mesa_glsl_set_in (FILE * in_str , yyscan_t yyscanner)
3473 {
3474 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3475 yyin = in_str ;
3476 }
3477
3478 void _mesa_glsl_set_out (FILE * out_str , yyscan_t yyscanner)
3479 {
3480 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3481 yyout = out_str ;
3482 }
3483
3484 int _mesa_glsl_get_debug (yyscan_t yyscanner)
3485 {
3486 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3487 return yy_flex_debug;
3488 }
3489
3490 void _mesa_glsl_set_debug (int bdebug , yyscan_t yyscanner)
3491 {
3492 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3493 yy_flex_debug = bdebug ;
3494 }
3495
3496 /* Accessor methods for yylval and yylloc */
3497
3498 YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner)
3499 {
3500 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3501 return yylval;
3502 }
3503
3504 void _mesa_glsl_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
3505 {
3506 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3507 yylval = yylval_param;
3508 }
3509
3510 YYLTYPE *_mesa_glsl_get_lloc (yyscan_t yyscanner)
3511 {
3512 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3513 return yylloc;
3514 }
3515
3516 void _mesa_glsl_set_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner)
3517 {
3518 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3519 yylloc = yylloc_param;
3520 }
3521
3522 /* User-visible API */
3523
3524 /* _mesa_glsl_lex_init is special because it creates the scanner itself, so it is
3525 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3526 * That's why we explicitly handle the declaration, instead of using our macros.
3527 */
3528
3529 int _mesa_glsl_lex_init(yyscan_t* ptr_yy_globals)
3530
3531 {
3532 if (ptr_yy_globals == NULL){
3533 errno = EINVAL;
3534 return 1;
3535 }
3536
3537 *ptr_yy_globals = (yyscan_t) _mesa_glsl_alloc ( sizeof( struct yyguts_t ), NULL );
3538
3539 if (*ptr_yy_globals == NULL){
3540 errno = ENOMEM;
3541 return 1;
3542 }
3543
3544 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3545 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3546
3547 return yy_init_globals ( *ptr_yy_globals );
3548 }
3549
3550 /* _mesa_glsl_lex_init_extra has the same functionality as _mesa_glsl_lex_init, but follows the
3551 * convention of taking the scanner as the last argument. Note however, that
3552 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3553 * is the reason, too, why this function also must handle its own declaration).
3554 * The user defined value in the first argument will be available to _mesa_glsl_alloc in
3555 * the yyextra field.
3556 */
3557
3558 int _mesa_glsl_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
3559
3560 {
3561 struct yyguts_t dummy_yyguts;
3562
3563 _mesa_glsl_set_extra (yy_user_defined, &dummy_yyguts);
3564
3565 if (ptr_yy_globals == NULL){
3566 errno = EINVAL;
3567 return 1;
3568 }
3569
3570 *ptr_yy_globals = (yyscan_t) _mesa_glsl_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
3571
3572 if (*ptr_yy_globals == NULL){
3573 errno = ENOMEM;
3574 return 1;
3575 }
3576
3577 /* By setting to 0xAA, we expose bugs in
3578 yy_init_globals. Leave at 0x00 for releases. */
3579 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3580
3581 _mesa_glsl_set_extra (yy_user_defined, *ptr_yy_globals);
3582
3583 return yy_init_globals ( *ptr_yy_globals );
3584 }
3585
3586 static int yy_init_globals (yyscan_t yyscanner)
3587 {
3588 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3589 /* Initialization is the same as for the non-reentrant scanner.
3590 * This function is called from _mesa_glsl_lex_destroy(), so don't allocate here.
3591 */
3592
3593 yyg->yy_buffer_stack = 0;
3594 yyg->yy_buffer_stack_top = 0;
3595 yyg->yy_buffer_stack_max = 0;
3596 yyg->yy_c_buf_p = (char *) 0;
3597 yyg->yy_init = 0;
3598 yyg->yy_start = 0;
3599
3600 yyg->yy_start_stack_ptr = 0;
3601 yyg->yy_start_stack_depth = 0;
3602 yyg->yy_start_stack = NULL;
3603
3604 /* Defined in main.c */
3605 #ifdef YY_STDINIT
3606 yyin = stdin;
3607 yyout = stdout;
3608 #else
3609 yyin = (FILE *) 0;
3610 yyout = (FILE *) 0;
3611 #endif
3612
3613 /* For future reference: Set errno on error, since we are called by
3614 * _mesa_glsl_lex_init()
3615 */
3616 return 0;
3617 }
3618
3619 /* _mesa_glsl_lex_destroy is for both reentrant and non-reentrant scanners. */
3620 int _mesa_glsl_lex_destroy (yyscan_t yyscanner)
3621 {
3622 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3623
3624 /* Pop the buffer stack, destroying each element. */
3625 while(YY_CURRENT_BUFFER){
3626 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3627 YY_CURRENT_BUFFER_LVALUE = NULL;
3628 _mesa_glsl_pop_buffer_state(yyscanner);
3629 }
3630
3631 /* Destroy the stack itself. */
3632 _mesa_glsl_free(yyg->yy_buffer_stack ,yyscanner);
3633 yyg->yy_buffer_stack = NULL;
3634
3635 /* Destroy the start condition stack. */
3636 _mesa_glsl_free(yyg->yy_start_stack ,yyscanner );
3637 yyg->yy_start_stack = NULL;
3638
3639 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3640 * _mesa_glsl_lex() is called, initialization will occur. */
3641 yy_init_globals( yyscanner);
3642
3643 /* Destroy the main struct (reentrant only). */
3644 _mesa_glsl_free ( yyscanner , yyscanner );
3645 yyscanner = NULL;
3646 return 0;
3647 }
3648
3649 /*
3650 * Internal utility routines.
3651 */
3652
3653 #ifndef yytext_ptr
3654 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3655 {
3656 register int i;
3657 for ( i = 0; i < n; ++i )
3658 s1[i] = s2[i];
3659 }
3660 #endif
3661
3662 #ifdef YY_NEED_STRLEN
3663 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3664 {
3665 register int n;
3666 for ( n = 0; s[n]; ++n )
3667 ;
3668
3669 return n;
3670 }
3671 #endif
3672
3673 void *_mesa_glsl_alloc (yy_size_t size , yyscan_t yyscanner)
3674 {
3675 return (void *) malloc( size );
3676 }
3677
3678 void *_mesa_glsl_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
3679 {
3680 /* The cast to (char *) in the following accommodates both
3681 * implementations that use char* generic pointers, and those
3682 * that use void* generic pointers. It works with the latter
3683 * because both ANSI C and C++ allow castless assignment from
3684 * any pointer type to void*, and deal with argument conversions
3685 * as though doing an assignment.
3686 */
3687 return (void *) realloc( (char *) ptr, size );
3688 }
3689
3690 void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
3691 {
3692 free( (char *) ptr ); /* see _mesa_glsl_realloc() for (char *) cast */
3693 }
3694
3695 #define YYTABLES_NAME "yytables"
3696
3697 #line 427 "glsl_lexer.lpp"
3698
3699
3700
3701 void
3702 _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
3703 {
3704 _mesa_glsl_lex_init_extra(state,& state->scanner);
3705 _mesa_glsl__scan_string(string,state->scanner);
3706 }
3707
3708 void
3709 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
3710 {
3711 _mesa_glsl_lex_destroy(state->scanner);
3712 }
3713