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