1 #line 2 "glsl_lexer.cpp"
3 #line 4 "glsl_lexer.cpp"
5 #define YY_INT_ALIGNED short int
7 /* A lexical scanner generated by flex */
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
17 /* First, we deal with platform-specific or compiler-specific issues. */
19 /* begin standard C headers. */
25 /* end standard C headers. */
27 /* flex integer type definitions */
32 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
34 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
36 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37 * if you want the limit (max/min) macros for int types.
39 #ifndef __STDC_LIMIT_MACROS
40 #define __STDC_LIMIT_MACROS 1
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
;
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
;
59 /* Limits of integral types. */
61 #define INT8_MIN (-128)
64 #define INT16_MIN (-32767-1)
67 #define INT32_MIN (-2147483647-1)
70 #define INT8_MAX (127)
73 #define INT16_MAX (32767)
76 #define INT32_MAX (2147483647)
79 #define UINT8_MAX (255U)
82 #define UINT16_MAX (65535U)
85 #define UINT32_MAX (4294967295U)
88 #endif /* ! FLEXINT_H */
92 /* The "const" storage-class-modifier is valid. */
95 #else /* ! __cplusplus */
97 /* C99 requires __STDC__ to be defined as 1. */
98 #if defined (__STDC__)
102 #endif /* defined (__STDC__) */
103 #endif /* ! __cplusplus */
106 #define yyconst const
111 /* Returned upon end-of-file. */
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
119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121 /* An opaque pointer. */
122 #ifndef YY_TYPEDEF_YY_SCANNER_T
123 #define YY_TYPEDEF_YY_SCANNER_T
124 typedef void* yyscan_t
;
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
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.
142 #define BEGIN yyg->yy_start = 1 + 2 *
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
148 #define YY_START ((yyg->yy_start - 1) / 2)
149 #define YYSTATE YY_START
151 /* Action number for EOF rule of a given start state. */
152 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
154 /* Special action meaning "start processing a new file". */
155 #define YY_NEW_FILE _mesa_glsl_restart(yyin ,yyscanner )
157 #define YY_END_OF_BUFFER_CHAR 0
159 /* Size of default input buffer. */
161 #define YY_BUF_SIZE 16384
164 /* The state buf must be large enough to hold one state per character in the main buffer.
166 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
168 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
169 #define YY_TYPEDEF_YY_BUFFER_STATE
170 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
173 #define EOB_ACT_CONTINUE_SCAN 0
174 #define EOB_ACT_END_OF_FILE 1
175 #define EOB_ACT_LAST_MATCH 2
177 #define YY_LESS_LINENO(n)
179 /* Return all but the first "n" matched characters back to the input stream. */
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 */ \
193 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
195 #ifndef YY_TYPEDEF_YY_SIZE_T
196 #define YY_TYPEDEF_YY_SIZE_T
197 typedef size_t yy_size_t
;
200 #ifndef YY_STRUCT_YY_BUFFER_STATE
201 #define YY_STRUCT_YY_BUFFER_STATE
202 struct yy_buffer_state
206 char *yy_ch_buf
; /* input buffer */
207 char *yy_buf_pos
; /* current position in input buffer */
209 /* Size of input buffer in bytes, not including room for EOB
212 yy_size_t yy_buf_size
;
214 /* Number of characters read into yy_ch_buf, not including EOB
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
223 int yy_is_our_buffer
;
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
230 int yy_is_interactive
;
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
238 int yy_bs_lineno
; /**< The line count. */
239 int yy_bs_column
; /**< The column count. */
241 /* Whether to try to fill the input buffer when we reach the
246 int yy_buffer_status
;
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.
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.
260 #define YY_BUFFER_EOF_PENDING 2
263 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
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
269 * Returns the top of the stack, or NULL.
271 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
272 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
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.
278 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
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
);
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
);
292 #define YY_FLUSH_BUFFER _mesa_glsl__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
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
);
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
);
302 #define yy_new_buffer _mesa_glsl__create_buffer
304 #define yy_set_interactive(is_interactive) \
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); \
311 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
314 #define yy_set_bol(at_bol) \
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); \
321 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
324 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
326 /* Begin user sect3 */
328 #define _mesa_glsl_wrap(n) 1
329 #define YY_SKIP_YYWRAP
331 typedef unsigned char YY_CHAR
;
333 typedef int yy_state_type
;
335 #define yytext_ptr yytext_r
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
);
342 /* Done after the current pattern has been matched and before the
343 * corresponding action - sets up yytext.
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; \
350 yyg->yy_c_buf_p = yy_cp;
352 #define YY_NUM_RULES 211
353 #define YY_END_OF_BUFFER 212
354 /* This struct is not used in this scanner,
355 but its presence is necessary. */
358 flex_int32_t yy_verify
;
361 static yyconst flex_int16_t yy_accept
[847] =
363 0, 0, 16, 16, 0, 0, 212, 210, 1, 21,
364 210, 210, 210, 210, 210, 210, 210, 210, 121, 119,
365 210, 210, 210, 209, 210, 209, 209, 209, 209, 209,
366 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
367 209, 209, 209, 209, 209, 210, 1, 210, 211, 16,
368 20, 211, 19, 17, 18, 14, 13, 1, 103, 112,
369 104, 115, 109, 98, 111, 99, 118, 123, 110, 124,
370 121, 0, 0, 126, 121, 0, 119, 119, 107, 100,
371 102, 101, 108, 209, 116, 106, 209, 209, 209, 209,
372 209, 209, 209, 209, 209, 209, 209, 209, 30, 209,
374 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
375 209, 209, 34, 209, 209, 61, 209, 209, 209, 209,
376 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
377 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
378 209, 209, 209, 209, 209, 209, 209, 209, 209, 117,
379 105, 1, 0, 0, 2, 0, 0, 0, 0, 16,
380 15, 19, 18, 0, 123, 122, 0, 124, 0, 125,
381 120, 113, 114, 209, 129, 209, 209, 209, 209, 209,
382 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
383 209, 209, 209, 209, 209, 209, 33, 209, 209, 209,
385 209, 209, 209, 209, 209, 209, 209, 26, 209, 209,
386 209, 209, 209, 209, 209, 209, 209, 209, 209, 62,
387 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
388 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
389 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
390 0, 0, 0, 0, 15, 0, 123, 0, 122, 0,
391 124, 125, 120, 209, 209, 24, 209, 209, 176, 169,
392 209, 209, 209, 209, 209, 209, 209, 209, 209, 32,
393 132, 209, 209, 209, 209, 68, 209, 209, 137, 151,
394 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
396 209, 209, 148, 172, 49, 50, 51, 209, 209, 209,
397 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
398 209, 209, 209, 209, 209, 209, 209, 135, 127, 209,
399 209, 27, 209, 209, 209, 209, 209, 209, 209, 46,
400 47, 48, 96, 209, 209, 0, 0, 0, 0, 0,
401 122, 209, 209, 28, 37, 38, 39, 209, 130, 209,
402 23, 209, 209, 209, 209, 159, 160, 161, 209, 128,
403 209, 152, 25, 162, 163, 164, 174, 156, 157, 158,
404 209, 209, 209, 63, 154, 209, 209, 209, 40, 41,
405 42, 209, 209, 209, 209, 209, 209, 209, 209, 209,
407 209, 209, 209, 209, 209, 209, 209, 149, 209, 209,
408 209, 209, 209, 209, 209, 209, 209, 209, 131, 209,
409 209, 171, 43, 44, 45, 209, 209, 31, 0, 0,
410 0, 0, 179, 209, 209, 177, 209, 209, 209, 150,
411 145, 182, 209, 209, 209, 209, 209, 209, 140, 209,
412 209, 209, 97, 52, 53, 54, 55, 56, 57, 58,
413 59, 60, 209, 209, 209, 209, 155, 136, 209, 209,
414 143, 36, 209, 209, 168, 69, 144, 95, 180, 138,
415 209, 209, 209, 209, 209, 209, 209, 209, 0, 0,
416 0, 0, 209, 209, 209, 139, 35, 209, 209, 209,
418 209, 209, 209, 183, 184, 185, 209, 209, 209, 209,
419 209, 173, 209, 209, 209, 209, 209, 209, 209, 209,
420 133, 209, 209, 209, 209, 209, 64, 209, 209, 65,
421 209, 0, 0, 0, 0, 0, 209, 66, 29, 146,
422 187, 188, 189, 209, 209, 209, 209, 209, 209, 209,
423 209, 209, 209, 209, 209, 141, 209, 209, 209, 209,
424 209, 209, 209, 209, 209, 209, 134, 191, 192, 193,
425 209, 209, 153, 209, 142, 0, 0, 6, 0, 0,
426 0, 12, 3, 22, 209, 209, 209, 209, 209, 209,
427 209, 209, 209, 186, 147, 67, 209, 209, 209, 209,
429 170, 209, 178, 175, 208, 71, 72, 73, 209, 209,
430 209, 209, 209, 209, 209, 209, 209, 209, 209, 0,
431 0, 0, 0, 0, 0, 0, 209, 209, 209, 190,
432 209, 209, 209, 209, 209, 82, 83, 84, 209, 209,
433 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
434 209, 209, 194, 88, 89, 90, 209, 4, 0, 5,
435 0, 0, 0, 0, 0, 0, 209, 209, 209, 209,
436 209, 209, 209, 205, 209, 209, 209, 209, 209, 209,
437 209, 209, 209, 209, 209, 74, 209, 209, 209, 209,
438 209, 209, 209, 0, 0, 0, 0, 209, 209, 206,
440 195, 209, 196, 209, 209, 209, 85, 209, 209, 209,
441 209, 209, 209, 209, 209, 209, 209, 209, 209, 207,
442 209, 209, 91, 0, 0, 0, 197, 198, 209, 201,
443 209, 202, 209, 209, 70, 209, 209, 209, 165, 209,
444 166, 181, 209, 209, 199, 200, 209, 209, 0, 0,
445 0, 209, 209, 209, 209, 75, 209, 76, 209, 209,
446 209, 209, 209, 209, 0, 0, 0, 0, 209, 209,
447 86, 87, 209, 77, 209, 209, 78, 209, 209, 92,
448 93, 0, 0, 0, 0, 209, 209, 209, 209, 209,
449 209, 209, 0, 0, 0, 0, 209, 209, 209, 209,
451 209, 79, 209, 0, 0, 0, 7, 0, 0, 203,
452 204, 209, 209, 209, 94, 0, 0, 8, 0, 0,
453 209, 209, 167, 0, 0, 0, 80, 81, 0, 0,
454 0, 9, 0, 0, 10, 0, 0, 0, 0, 0,
458 static yyconst flex_int32_t yy_ec
[256] =
460 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
461 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
462 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
463 1, 2, 5, 1, 6, 1, 7, 8, 1, 9,
464 10, 11, 12, 1, 13, 14, 15, 16, 17, 18,
465 19, 20, 21, 21, 21, 22, 22, 23, 1, 24,
466 25, 26, 1, 1, 27, 28, 29, 30, 31, 32,
467 33, 34, 34, 34, 34, 35, 34, 34, 36, 34,
468 34, 37, 38, 39, 40, 34, 34, 41, 34, 34,
469 1, 1, 1, 42, 43, 1, 44, 45, 46, 47,
471 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
472 58, 59, 34, 60, 61, 62, 63, 64, 65, 66,
473 67, 68, 1, 69, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
478 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 static yyconst flex_int32_t yy_meta
[70] =
492 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
493 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
494 3, 3, 1, 1, 1, 1, 4, 4, 4, 4,
495 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
496 5, 1, 5, 4, 4, 4, 4, 3, 3, 5,
497 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
498 5, 5, 5, 5, 5, 5, 5, 5, 1
501 static yyconst flex_int16_t yy_base
[856] =
503 0, 68, 74, 0, 1223, 1222, 1224, 1227, 69, 1227,
504 1198, 1197, 136, 1196, 133, 134, 132, 1195, 148, 201,
505 131, 1194, 146, 0, 121, 114, 123, 146, 134, 136,
506 172, 1160, 161, 182, 141, 129, 151, 1154, 140, 187,
507 196, 203, 205, 223, 1165, 187, 204, 270, 1227, 224,
508 1227, 1200, 258, 1227, 0, 1227, 1227, 240, 1227, 1227,
509 1227, 1227, 1227, 1227, 1227, 1227, 1227, 251, 1227, 253,
510 224, 321, 275, 1227, 1227, 0, 0, 1227, 1189, 1227,
511 1227, 1227, 1188, 0, 1227, 1227, 1150, 1155, 1148, 1151,
512 1160, 1159, 1145, 1148, 1160, 247, 1154, 1141, 1138, 1152,
514 1138, 1135, 1135, 1141, 243, 261, 1135, 1146, 1131, 1137,
515 1141, 1142, 0, 1133, 1144, 252, 1143, 1138, 1118, 172,
516 1122, 1136, 1126, 201, 1119, 260, 1132, 1134, 1116, 1112,
517 1120, 1117, 1106, 1115, 264, 1113, 1119, 1114, 1117, 1105,
518 1108, 256, 265, 271, 1118, 1105, 1118, 234, 1111, 1227,
519 1227, 326, 319, 342, 1227, 1096, 1109, 1100, 1111, 329,
520 0, 338, 0, 391, 1227, 315, 402, 1227, 409, 416,
521 287, 1227, 1227, 1106, 0, 1097, 1101, 1111, 1108, 300,
522 1091, 1091, 1095, 304, 1106, 1103, 1103, 1101, 1098, 1089,
523 1096, 1082, 1080, 1093, 1078, 1095, 0, 1092, 1079, 1087,
525 1084, 1088, 1089, 1082, 1079, 1067, 1066, 1080, 1083, 1070,
526 1079, 1066, 1073, 1063, 353, 1069, 1072, 1062, 1070, 1058,
527 1062, 1053, 1068, 1058, 1049, 1068, 1051, 1049, 1060, 1049,
528 1044, 1042, 1056, 1041, 1043, 1040, 1052, 1051, 1054, 1035,
529 319, 1044, 1039, 1037, 1047, 1025, 361, 1044, 1046, 1034,
530 1026, 1030, 1042, 1025, 0, 423, 434, 451, 1227, 458,
531 468, 1227, 1227, 1020, 1031, 0, 1028, 366, 0, 0,
532 1021, 1019, 1021, 1016, 1025, 1013, 1031, 1019, 369, 0,
533 0, 1013, 1024, 1023, 1023, 0, 1007, 373, 0, 0,
534 1009, 376, 1017, 1018, 1008, 1002, 1001, 1002, 1001, 1001,
536 380, 996, 0, 0, 992, 991, 990, 992, 993, 998,
537 992, 988, 1002, 997, 996, 995, 986, 989, 989, 981,
538 984, 979, 988, 993, 978, 991, 981, 0, 0, 988,
539 984, 0, 975, 975, 981, 971, 979, 439, 976, 0,
540 0, 0, 0, 965, 978, 977, 976, 973, 961, 475,
541 486, 973, 975, 0, 0, 0, 0, 961, 0, 961,
542 0, 960, 961, 955, 966, 0, 0, 0, 956, 0,
543 952, 0, 0, 0, 0, 0, 0, 0, 0, 0,
544 963, 492, 962, 0, 0, 960, 956, 952, 0, 0,
545 0, 944, 442, 494, 504, 949, 945, 951, 941, 939,
547 953, 937, 937, 951, 939, 951, 946, 0, 944, 941,
548 945, 928, 930, 937, 943, 938, 937, 924, 0, 926,
549 927, 0, 0, 0, 0, 924, 928, 0, 922, 976,
550 921, 924, 0, 912, 922, 0, 910, 910, 924, 0,
551 926, 0, 508, 939, 938, 937, 903, 902, 0, 920,
552 919, 914, 0, 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 902, 916, 902, 899, 0, 0, 905, 904,
554 0, 0, 902, 894, 0, 0, 0, 0, 0, 0,
555 891, 903, 511, 895, 902, 901, 898, 892, 885, 529,
556 901, 886, 881, 895, 893, 0, 0, 885, 909, 908,
558 907, 873, 872, 378, 505, 0, 885, 888, 886, 874,
559 870, 0, 883, 880, 879, 868, 867, 866, 535, 875,
560 0, 892, 891, 890, 856, 855, 0, 870, 856, 0,
561 867, 862, 539, 565, 911, 855, 863, 0, 0, 0,
562 883, 882, 0, 859, 862, 846, 854, 844, 852, 853,
563 853, 852, 837, 559, 850, 0, 851, 839, 838, 834,
564 863, 862, 861, 827, 826, 822, 0, 860, 859, 0,
565 836, 839, 0, 572, 0, 825, 590, 1227, 597, 0,
566 617, 593, 1227, 0, 822, 821, 831, 831, 818, 833,
567 816, 831, 826, 0, 0, 0, 843, 842, 841, 807,
569 0, 807, 0, 0, 0, 506, 534, 831, 818, 821,
570 803, 804, 803, 813, 813, 830, 829, 828, 794, 799,
571 625, 651, 373, 816, 806, 794, 792, 791, 802, 0,
572 805, 801, 803, 799, 785, 817, 816, 0, 797, 789,
573 780, 788, 778, 789, 785, 787, 785, 785, 784, 771,
574 770, 781, 0, 801, 800, 0, 781, 1227, 444, 1227,
575 658, 0, 678, 795, 779, 761, 778, 777, 760, 752,
576 760, 750, 758, 0, 755, 754, 765, 748, 751, 766,
577 749, 762, 763, 760, 757, 766, 743, 758, 757, 740,
578 739, 738, 749, 479, 763, 732, 742, 726, 725, 0,
580 753, 725, 751, 723, 727, 726, 0, 737, 740, 736,
581 738, 719, 733, 717, 718, 726, 719, 708, 707, 0,
582 713, 712, 0, 736, 720, 713, 0, 0, 717, 0,
583 716, 0, 722, 721, 0, 697, 705, 695, 723, 702,
584 0, 0, 715, 714, 0, 0, 713, 712, 753, 560,
585 702, 709, 708, 684, 683, 711, 683, 709, 695, 680,
586 697, 688, 675, 674, 155, 594, 359, 672, 692, 691,
587 0, 0, 686, 0, 685, 691, 0, 676, 690, 0,
588 0, 652, 517, 516, 658, 631, 630, 643, 28, 127,
589 113, 224, 204, 287, 592, 595, 284, 286, 335, 355,
591 391, 0, 460, 455, 619, 620, 1227, 623, 568, 0,
592 0, 443, 457, 451, 0, 474, 645, 1227, 646, 600,
593 473, 509, 0, 527, 549, 648, 0, 0, 579, 654,
594 680, 1227, 567, 682, 1227, 590, 684, 699, 661, 663,
595 604, 607, 700, 701, 1227, 1227, 711, 714, 717, 680,
596 682, 720, 724, 727, 729
599 static yyconst flex_int16_t yy_def
[856] =
601 846, 1, 846, 3, 847, 847, 846, 846, 846, 846,
602 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
603 846, 846, 846, 848, 846, 848, 848, 848, 848, 848,
604 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
605 848, 848, 848, 848, 848, 846, 846, 846, 846, 846,
606 846, 846, 846, 846, 849, 846, 846, 846, 846, 846,
607 846, 846, 846, 846, 846, 846, 846, 850, 846, 851,
608 19, 846, 846, 846, 846, 852, 20, 846, 846, 846,
609 846, 846, 846, 848, 846, 846, 848, 848, 848, 848,
610 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
612 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
613 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
614 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
615 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
616 848, 848, 848, 848, 848, 848, 848, 848, 848, 846,
617 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
618 853, 846, 849, 846, 846, 851, 846, 846, 846, 846,
619 852, 846, 846, 848, 848, 848, 848, 848, 848, 848,
620 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
621 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
623 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
624 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
625 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
626 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
627 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
628 846, 846, 846, 846, 853, 846, 846, 846, 846, 846,
629 846, 846, 846, 848, 848, 848, 848, 848, 848, 848,
630 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
631 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
632 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
634 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
635 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
636 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
637 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
638 848, 848, 848, 848, 848, 846, 846, 846, 846, 846,
639 846, 848, 848, 848, 848, 848, 848, 848, 848, 848,
640 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
641 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
642 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
643 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
645 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
646 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
647 848, 848, 848, 848, 848, 848, 848, 848, 846, 846,
648 846, 846, 848, 848, 848, 848, 848, 848, 848, 848,
649 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
650 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
651 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
652 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
653 848, 848, 848, 848, 848, 848, 848, 848, 846, 846,
654 846, 846, 848, 848, 848, 848, 848, 848, 848, 848,
656 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
657 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
658 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
659 848, 846, 846, 846, 846, 846, 848, 848, 848, 848,
660 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
661 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
662 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
663 848, 848, 848, 848, 848, 846, 846, 846, 846, 854,
664 846, 846, 846, 848, 848, 848, 848, 848, 848, 848,
665 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
667 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
668 848, 848, 848, 848, 848, 848, 848, 848, 848, 846,
669 846, 846, 854, 846, 846, 846, 848, 848, 848, 848,
670 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
671 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
672 848, 848, 848, 848, 848, 848, 848, 846, 846, 846,
673 846, 855, 846, 846, 846, 846, 848, 848, 848, 848,
674 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
675 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
676 848, 848, 848, 855, 846, 846, 846, 848, 848, 848,
678 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
679 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
680 848, 848, 848, 846, 846, 846, 848, 848, 848, 848,
681 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
682 848, 848, 848, 848, 848, 848, 848, 848, 846, 846,
683 846, 848, 848, 848, 848, 848, 848, 848, 848, 848,
684 848, 848, 848, 848, 846, 846, 846, 846, 848, 848,
685 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
686 848, 846, 846, 846, 846, 848, 848, 848, 848, 848,
687 848, 848, 846, 846, 846, 846, 848, 848, 848, 848,
689 848, 848, 848, 846, 846, 846, 846, 846, 846, 848,
690 848, 848, 848, 848, 848, 846, 846, 846, 846, 846,
691 848, 848, 848, 846, 846, 846, 848, 848, 846, 846,
692 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
693 846, 846, 846, 846, 846, 0, 846, 846, 846, 846,
694 846, 846, 846, 846, 846
697 static yyconst flex_int16_t yy_nxt
[1297] =
699 8, 9, 10, 9, 11, 8, 12, 13, 8, 8,
700 14, 15, 16, 17, 18, 19, 20, 20, 20, 20,
701 20, 20, 8, 21, 22, 23, 24, 24, 24, 24,
702 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
703 24, 25, 24, 26, 27, 28, 29, 30, 31, 32,
704 33, 34, 24, 24, 35, 36, 37, 38, 39, 40,
705 41, 42, 43, 44, 45, 24, 24, 24, 46, 47,
706 58, 800, 58, 48, 49, 50, 51, 50, 49, 49,
707 49, 49, 49, 49, 49, 49, 49, 49, 52, 49,
708 53, 53, 53, 53, 53, 53, 54, 49, 49, 49,
710 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
711 55, 55, 55, 55, 55, 49, 55, 55, 55, 55,
712 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
713 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
714 55, 55, 49, 61, 64, 85, 66, 68, 68, 68,
715 68, 68, 68, 68, 79, 80, 765, 65, 67, 87,
716 62, 70, 86, 71, 71, 71, 71, 71, 71, 72,
717 82, 83, 121, 801, 88, 89, 122, 802, 73, 74,
718 90, 97, 91, 126, 119, 98, 92, 75, 76, 93,
719 101, 99, 102, 94, 123, 73, 74, 100, 120, 127,
721 95, 103, 128, 96, 110, 152, 782, 58, 124, 153,
722 75, 150, 111, 76, 70, 104, 77, 77, 77, 77,
723 77, 77, 77, 105, 112, 160, 106, 160, 213, 107,
724 113, 73, 74, 114, 129, 108, 214, 115, 116, 131,
725 78, 58, 117, 58, 130, 118, 132, 133, 73, 74,
726 138, 134, 218, 139, 803, 151, 142, 135, 136, 219,
727 137, 143, 140, 78, 846, 144, 146, 804, 145, 141,
728 147, 154, 155, 162, 162, 162, 162, 162, 162, 162,
729 148, 164, 165, 167, 168, 248, 169, 169, 249, 846,
730 170, 170, 170, 170, 170, 170, 170, 193, 164, 165,
732 167, 168, 183, 184, 195, 221, 205, 231, 194, 206,
733 207, 239, 240, 208, 243, 209, 241, 156, 196, 222,
734 154, 155, 244, 232, 157, 242, 263, 152, 158, 58,
735 160, 153, 160, 159, 70, 805, 72, 72, 72, 72,
736 72, 72, 72, 154, 155, 258, 259, 269, 810, 263,
737 811, 73, 74, 162, 162, 162, 162, 162, 162, 162,
738 783, 270, 258, 259, 274, 275, 156, 333, 73, 74,
739 305, 306, 307, 157, 577, 578, 334, 158, 340, 341,
740 342, 812, 159, 355, 356, 357, 366, 367, 368, 156,
741 374, 375, 376, 378, 379, 380, 157, 389, 390, 391,
743 158, 813, 256, 256, 546, 159, 257, 257, 257, 257,
744 257, 257, 257, 260, 260, 547, 784, 261, 261, 261,
745 261, 261, 261, 261, 170, 170, 170, 170, 170, 170,
746 170, 170, 170, 170, 170, 170, 170, 170, 257, 257,
747 257, 257, 257, 257, 257, 659, 660, 262, 814, 257,
748 257, 257, 257, 257, 257, 257, 423, 424, 425, 454,
749 455, 456, 350, 350, 262, 165, 351, 351, 351, 351,
750 351, 351, 351, 261, 261, 261, 261, 261, 261, 261,
751 659, 660, 165, 261, 261, 261, 261, 261, 261, 261,
752 351, 351, 351, 351, 351, 351, 351, 815, 816, 168,
754 821, 351, 351, 351, 351, 351, 351, 351, 444, 445,
755 446, 457, 458, 459, 822, 823, 168, 259, 783, 447,
756 448, 460, 461, 462, 499, 500, 501, 522, 523, 524,
757 490, 548, 641, 824, 259, 502, 503, 827, 525, 526,
758 577, 578, 549, 642, 533, 534, 534, 534, 534, 534,
759 534, 561, 562, 563, 579, 579, 579, 579, 579, 579,
760 643, 766, 564, 565, 794, 566, 577, 578, 767, 819,
761 644, 645, 795, 828, 784, 597, 598, 599, 829, 580,
762 581, 581, 581, 581, 581, 581, 581, 600, 616, 617,
763 618, 577, 578, 806, 582, 766, 808, 830, 577, 578,
765 619, 807, 767, 809, 580, 621, 622, 622, 622, 622,
766 622, 622, 579, 579, 579, 579, 579, 579, 577, 578,
767 817, 806, 833, 836, 808, 820, 659, 660, 818, 807,
768 624, 809, 581, 581, 581, 581, 581, 581, 581, 625,
769 661, 661, 661, 661, 661, 661, 817, 819, 825, 831,
770 626, 837, 659, 660, 818, 834, 826, 832, 842, 659,
771 660, 843, 840, 835, 840, 662, 663, 663, 663, 663,
772 663, 663, 663, 661, 661, 661, 661, 661, 661, 659,
773 660, 831, 68, 834, 166, 838, 799, 798, 797, 832,
774 662, 835, 839, 663, 663, 663, 663, 663, 663, 663,
776 838, 844, 844, 820, 841, 796, 841, 839, 793, 845,
777 845, 56, 56, 56, 56, 56, 84, 84, 84, 163,
778 163, 163, 171, 171, 255, 792, 255, 255, 255, 623,
779 623, 694, 694, 791, 790, 789, 788, 787, 786, 785,
780 781, 780, 779, 778, 777, 776, 775, 774, 773, 772,
781 771, 770, 769, 768, 765, 764, 763, 762, 761, 760,
782 759, 758, 757, 756, 755, 754, 753, 752, 751, 750,
783 749, 748, 747, 746, 745, 744, 743, 742, 741, 740,
784 739, 738, 737, 736, 735, 734, 733, 732, 731, 730,
785 729, 728, 727, 726, 725, 724, 723, 722, 721, 720,
787 719, 718, 717, 716, 715, 714, 713, 712, 711, 710,
788 709, 708, 707, 706, 705, 704, 703, 702, 701, 700,
789 699, 698, 697, 696, 695, 693, 692, 691, 690, 689,
790 688, 687, 686, 685, 684, 683, 682, 681, 680, 679,
791 678, 677, 676, 675, 674, 673, 672, 671, 670, 669,
792 668, 667, 666, 665, 664, 658, 657, 656, 655, 654,
793 653, 652, 651, 650, 649, 648, 647, 646, 640, 639,
794 638, 637, 636, 635, 634, 633, 632, 631, 630, 629,
795 628, 627, 620, 615, 614, 613, 612, 611, 610, 609,
796 608, 607, 606, 605, 604, 603, 602, 601, 596, 595,
798 594, 593, 592, 591, 590, 589, 588, 587, 586, 585,
799 584, 583, 582, 576, 575, 574, 573, 572, 571, 570,
800 569, 568, 567, 560, 559, 558, 557, 556, 555, 554,
801 553, 552, 551, 550, 545, 544, 543, 542, 541, 540,
802 539, 538, 537, 536, 535, 532, 531, 530, 529, 528,
803 527, 521, 520, 519, 518, 517, 516, 515, 514, 513,
804 512, 511, 510, 509, 508, 507, 506, 505, 504, 498,
805 497, 496, 495, 494, 493, 492, 491, 490, 489, 488,
806 487, 486, 485, 484, 483, 482, 481, 480, 479, 478,
807 477, 476, 475, 474, 473, 472, 471, 470, 469, 468,
809 467, 466, 465, 464, 463, 453, 452, 451, 450, 449,
810 443, 442, 441, 440, 439, 438, 437, 436, 435, 434,
811 433, 432, 431, 430, 429, 428, 427, 426, 422, 421,
812 420, 419, 418, 417, 416, 415, 414, 413, 412, 411,
813 410, 409, 408, 407, 406, 405, 404, 403, 402, 401,
814 400, 399, 398, 397, 396, 395, 394, 393, 392, 388,
815 387, 386, 385, 384, 383, 382, 381, 377, 373, 372,
816 371, 370, 369, 365, 364, 363, 362, 361, 360, 359,
817 358, 354, 353, 352, 349, 348, 347, 346, 345, 344,
818 343, 339, 338, 337, 336, 335, 332, 331, 330, 329,
820 328, 327, 326, 325, 324, 323, 322, 321, 320, 319,
821 318, 317, 316, 315, 314, 313, 312, 311, 310, 309,
822 308, 304, 303, 302, 301, 300, 299, 298, 297, 296,
823 295, 294, 293, 292, 291, 290, 289, 288, 287, 286,
824 285, 284, 283, 282, 281, 280, 279, 278, 277, 276,
825 273, 272, 271, 268, 267, 266, 265, 264, 254, 253,
826 252, 251, 250, 247, 246, 245, 238, 237, 236, 235,
827 234, 233, 230, 229, 228, 227, 226, 225, 224, 223,
828 220, 217, 216, 215, 212, 211, 210, 204, 203, 202,
829 201, 200, 199, 198, 197, 192, 191, 190, 189, 188,
831 187, 186, 185, 182, 181, 180, 179, 178, 177, 176,
832 175, 174, 173, 172, 161, 149, 125, 109, 81, 69,
833 63, 60, 59, 846, 57, 57, 7, 846, 846, 846,
834 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
835 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
836 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
837 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
838 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
839 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
840 846, 846, 846, 846, 846, 846
844 static yyconst flex_int16_t yy_chk
[1297] =
846 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
847 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
848 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
849 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
850 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
851 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
852 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
853 9, 789, 9, 2, 3, 3, 3, 3, 3, 3,
854 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
855 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
857 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
858 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
859 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
860 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
861 3, 3, 3, 13, 15, 25, 16, 17, 17, 17,
862 17, 17, 17, 17, 21, 21, 765, 15, 16, 26,
863 13, 19, 25, 19, 19, 19, 19, 19, 19, 19,
864 23, 23, 36, 790, 26, 26, 36, 791, 19, 19,
865 27, 29, 27, 39, 35, 29, 27, 19, 19, 28,
866 30, 29, 30, 28, 37, 19, 19, 29, 35, 39,
868 28, 30, 39, 28, 33, 47, 765, 47, 37, 47,
869 19, 46, 33, 19, 20, 31, 20, 20, 20, 20,
870 20, 20, 20, 31, 33, 50, 31, 50, 120, 31,
871 34, 20, 20, 34, 40, 31, 120, 34, 34, 41,
872 20, 58, 34, 58, 40, 34, 41, 41, 20, 20,
873 42, 41, 124, 42, 792, 46, 43, 41, 41, 124,
874 41, 43, 42, 20, 71, 43, 44, 793, 43, 42,
875 44, 48, 48, 53, 53, 53, 53, 53, 53, 53,
876 44, 68, 68, 70, 70, 148, 73, 73, 148, 71,
877 73, 73, 73, 73, 73, 73, 73, 105, 68, 68,
879 70, 70, 96, 96, 106, 126, 116, 135, 105, 116,
880 116, 142, 142, 116, 144, 116, 143, 48, 106, 126,
881 153, 153, 144, 135, 48, 143, 171, 152, 48, 152,
882 160, 152, 160, 48, 72, 794, 72, 72, 72, 72,
883 72, 72, 72, 154, 154, 166, 166, 180, 797, 171,
884 798, 72, 72, 162, 162, 162, 162, 162, 162, 162,
885 767, 180, 166, 166, 184, 184, 153, 241, 72, 72,
886 215, 215, 215, 153, 623, 623, 241, 153, 247, 247,
887 247, 799, 153, 268, 268, 268, 279, 279, 279, 154,
888 288, 288, 288, 292, 292, 292, 154, 301, 301, 301,
890 154, 800, 164, 164, 504, 154, 164, 164, 164, 164,
891 164, 164, 164, 167, 167, 504, 767, 167, 167, 167,
892 167, 167, 167, 167, 169, 169, 169, 169, 169, 169,
893 169, 170, 170, 170, 170, 170, 170, 170, 256, 256,
894 256, 256, 256, 256, 256, 659, 659, 170, 801, 257,
895 257, 257, 257, 257, 257, 257, 338, 338, 338, 393,
896 393, 393, 258, 258, 170, 257, 258, 258, 258, 258,
897 258, 258, 258, 260, 260, 260, 260, 260, 260, 260,
898 694, 694, 257, 261, 261, 261, 261, 261, 261, 261,
899 350, 350, 350, 350, 350, 350, 350, 803, 804, 261,
901 812, 351, 351, 351, 351, 351, 351, 351, 382, 382,
902 382, 394, 394, 394, 813, 814, 261, 351, 783, 382,
903 382, 395, 395, 395, 443, 443, 443, 483, 483, 483,
904 490, 505, 606, 816, 351, 443, 443, 821, 483, 483,
905 533, 533, 505, 606, 490, 490, 490, 490, 490, 490,
906 490, 519, 519, 519, 533, 533, 533, 533, 533, 533,
907 607, 750, 519, 519, 784, 519, 534, 534, 750, 809,
908 607, 607, 784, 822, 783, 554, 554, 554, 824, 533,
909 534, 534, 534, 534, 534, 534, 534, 554, 574, 574,
910 574, 577, 577, 795, 582, 766, 796, 825, 579, 579,
912 574, 795, 766, 796, 533, 577, 577, 577, 577, 577,
913 577, 577, 579, 579, 579, 579, 579, 579, 581, 581,
914 805, 806, 829, 833, 808, 809, 621, 621, 805, 806,
915 582, 808, 581, 581, 581, 581, 581, 581, 581, 582,
916 621, 621, 621, 621, 621, 621, 817, 819, 820, 826,
917 582, 836, 622, 622, 817, 830, 820, 826, 841, 661,
918 661, 842, 839, 830, 840, 621, 622, 622, 622, 622,
919 622, 622, 622, 661, 661, 661, 661, 661, 661, 663,
920 663, 831, 850, 834, 851, 837, 788, 787, 786, 831,
921 621, 834, 837, 663, 663, 663, 663, 663, 663, 663,
923 838, 843, 844, 819, 839, 785, 840, 838, 782, 843,
924 844, 847, 847, 847, 847, 847, 848, 848, 848, 849,
925 849, 849, 852, 852, 853, 779, 853, 853, 853, 854,
926 854, 855, 855, 778, 776, 775, 773, 770, 769, 768,
927 764, 763, 762, 761, 760, 759, 758, 757, 756, 755,
928 754, 753, 752, 751, 749, 748, 747, 744, 743, 740,
929 739, 738, 737, 736, 734, 733, 731, 729, 726, 725,
930 724, 722, 721, 719, 718, 717, 716, 715, 714, 713,
931 712, 711, 710, 709, 708, 706, 705, 704, 703, 702,
932 701, 699, 698, 697, 696, 695, 693, 692, 691, 690,
934 689, 688, 687, 686, 685, 684, 683, 682, 681, 680,
935 679, 678, 677, 676, 675, 673, 672, 671, 670, 669,
936 668, 667, 666, 665, 664, 657, 655, 654, 652, 651,
937 650, 649, 648, 647, 646, 645, 644, 643, 642, 641,
938 640, 639, 637, 636, 635, 634, 633, 632, 631, 629,
939 628, 627, 626, 625, 624, 620, 619, 618, 617, 616,
940 615, 614, 613, 612, 611, 610, 609, 608, 602, 600,
941 599, 598, 597, 593, 592, 591, 590, 589, 588, 587,
942 586, 585, 576, 572, 571, 569, 568, 566, 565, 564,
943 563, 562, 561, 560, 559, 558, 557, 555, 553, 552,
945 551, 550, 549, 548, 547, 546, 545, 544, 542, 541,
946 537, 536, 535, 532, 531, 529, 528, 526, 525, 524,
947 523, 522, 520, 518, 517, 516, 515, 514, 513, 511,
948 510, 509, 508, 507, 503, 502, 501, 500, 499, 498,
949 495, 494, 493, 492, 491, 489, 488, 487, 486, 485,
950 484, 482, 481, 474, 473, 470, 469, 466, 465, 464,
951 463, 452, 451, 450, 448, 447, 446, 445, 444, 441,
952 439, 438, 437, 435, 434, 432, 431, 430, 429, 427,
953 426, 421, 420, 418, 417, 416, 415, 414, 413, 412,
954 411, 410, 409, 407, 406, 405, 404, 403, 402, 401,
956 400, 399, 398, 397, 396, 392, 388, 387, 386, 383,
957 381, 371, 369, 365, 364, 363, 362, 360, 358, 353,
958 352, 349, 348, 347, 346, 345, 344, 339, 337, 336,
959 335, 334, 333, 331, 330, 327, 326, 325, 324, 323,
960 322, 321, 320, 319, 318, 317, 316, 315, 314, 313,
961 312, 311, 310, 309, 308, 307, 306, 305, 302, 300,
962 299, 298, 297, 296, 295, 294, 293, 291, 287, 285,
963 284, 283, 282, 278, 277, 276, 275, 274, 273, 272,
964 271, 267, 265, 264, 254, 253, 252, 251, 250, 249,
965 248, 246, 245, 244, 243, 242, 240, 239, 238, 237,
967 236, 235, 234, 233, 232, 231, 230, 229, 228, 227,
968 226, 225, 224, 223, 222, 221, 220, 219, 218, 217,
969 216, 214, 213, 212, 211, 210, 209, 208, 207, 206,
970 205, 204, 203, 202, 201, 200, 199, 198, 196, 195,
971 194, 193, 192, 191, 190, 189, 188, 187, 186, 185,
972 183, 182, 181, 179, 178, 177, 176, 174, 159, 158,
973 157, 156, 149, 147, 146, 145, 141, 140, 139, 138,
974 137, 136, 134, 133, 132, 131, 130, 129, 128, 127,
975 125, 123, 122, 121, 119, 118, 117, 115, 114, 112,
976 111, 110, 109, 108, 107, 104, 103, 102, 101, 100,
978 99, 98, 97, 95, 94, 93, 92, 91, 90, 89,
979 88, 87, 83, 79, 52, 45, 38, 32, 22, 18,
980 14, 12, 11, 7, 6, 5, 846, 846, 846, 846,
981 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
982 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
983 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
984 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
985 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
986 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
987 846, 846, 846, 846, 846, 846
991 /* The intent behind this definition is that it'll catch
992 * any uses of REJECT which flex missed.
994 #define REJECT reject_used_but_not_detected
995 #define yymore() yymore_used_but_not_detected
996 #define YY_MORE_ADJ 0
997 #define YY_RESTORE_YY_MORE_OFFSET
998 #line 1 "glsl_lexer.ll"
999 #line 2 "glsl_lexer.ll"
1001 * Copyright © 2008, 2009 Intel Corporation
1003 * Permission is hereby granted, free of charge, to any person obtaining a
1004 * copy of this software and associated documentation files (the "Software"),
1005 * to deal in the Software without restriction, including without limitation
1006 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1007 * and/or sell copies of the Software, and to permit persons to whom the
1008 * Software is furnished to do so, subject to the following conditions:
1010 * The above copyright notice and this permission notice (including the next
1011 * paragraph) shall be included in all copies or substantial portions of the
1014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1017 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1019 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1020 * DEALINGS IN THE SOFTWARE.
1026 #include "glsl_parser_extras.h"
1027 #include "glsl_parser.h"
1029 static int classify_identifier(struct _mesa_glsl_parse_state
*, const char *);
1032 #define YY_NO_UNISTD_H
1035 #define YY_USER_ACTION \
1037 yylloc->source = 0; \
1038 yylloc->first_column = yycolumn + 1; \
1039 yylloc->first_line = yylineno + 1; \
1040 yycolumn += yyleng; \
1043 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
1045 /* A macro for handling reserved words and keywords across language versions.
1047 * Certain words start out as identifiers, become reserved words in
1048 * later language revisions, and finally become language keywords.
1050 * For example, consider the following lexer rule:
1051 * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER)
1053 * This means that "samplerBuffer" will be treated as:
1054 * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40
1055 * - a reserved word - error ...in GLSL >= 1.30
1056 * - an identifier ...in GLSL < 1.30
1058 #define KEYWORD(reserved_version, allowed_version, token) \
1060 if (yyextra->language_version >= allowed_version) { \
1062 } else if (yyextra->language_version >= reserved_version) { \
1063 _mesa_glsl_error(yylloc, yyextra, \
1064 "Illegal use of reserved word `%s'", yytext); \
1067 yylval->identifier = strdup(yytext); \
1068 return classify_identifier(yyextra, yytext); \
1072 /* The ES macro can be used in KEYWORD checks:
1074 * word KEYWORD(110 || ES, 400, TOKEN)
1075 * ...means the word is reserved in GLSL ES 1.00, while
1077 * word KEYWORD(110, 130 || ES, TOKEN)
1078 * ...means the word is a legal keyword in GLSL ES 1.00.
1080 #define ES yyextra->es_shader
1083 literal_integer(char *text
, int len
, struct _mesa_glsl_parse_state
*state
,
1084 YYSTYPE
*lval
, YYLTYPE
*lloc
, int base
)
1086 bool is_uint
= (text
[len
- 1] == 'u' ||
1087 text
[len
- 1] == 'U');
1088 const char *digits
= text
;
1095 unsigned __int64 value
= _strtoui64(digits
, NULL
, base
);
1097 unsigned long long value
= strtoull(digits
, NULL
, base
);
1100 lval
->n
= (int)value
;
1102 if (value
> UINT_MAX
) {
1103 /* Note that signed 0xffffffff is valid, not out of range! */
1104 if (state
->language_version
>= 130) {
1105 _mesa_glsl_error(lloc
, state
,
1106 "Literal value `%s' out of range", text
);
1108 _mesa_glsl_warning(lloc
, state
,
1109 "Literal value `%s' out of range", text
);
1111 } else if (base
== 10 && !is_uint
&& (unsigned)value
> (unsigned)INT_MAX
+ 1) {
1112 /* Tries to catch unintentionally providing a negative value.
1113 * Note that -2147483648 is parsed as -(2147483648), so we don't
1114 * want to warn for INT_MAX.
1116 _mesa_glsl_warning(lloc
, state
,
1117 "Signed literal value `%s' is interpreted as %d",
1120 return is_uint
? UINTCONSTANT
: INTCONSTANT
;
1123 #define LITERAL_INTEGER(base) \
1124 literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base)
1127 #line 1128 "glsl_lexer.cpp"
1133 #define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
1135 /* Holds the entire state of the reentrant scanner. */
1139 /* User-defined. Not touched by flex. */
1140 YY_EXTRA_TYPE yyextra_r
;
1142 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1143 FILE *yyin_r
, *yyout_r
;
1144 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1145 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1146 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1153 int yy_did_buffer_switch_on_eof
;
1154 int yy_start_stack_ptr
;
1155 int yy_start_stack_depth
;
1156 int *yy_start_stack
;
1157 yy_state_type yy_last_accepting_state
;
1158 char* yy_last_accepting_cpos
;
1161 int yy_flex_debug_r
;
1171 }; /* end struct yyguts_t */
1173 static int yy_init_globals (yyscan_t yyscanner
);
1175 /* This must go here because YYSTYPE and YYLTYPE are included
1176 * from bison output in section 1.*/
1177 # define yylval yyg->yylval_r
1179 # define yylloc yyg->yylloc_r
1181 int _mesa_glsl_lex_init (yyscan_t
* scanner
);
1183 int _mesa_glsl_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1185 /* Accessor methods to globals.
1186 These are made visible to non-reentrant scanners for convenience. */
1188 int _mesa_glsl_lex_destroy (yyscan_t yyscanner
);
1190 int _mesa_glsl_get_debug (yyscan_t yyscanner
);
1192 void _mesa_glsl_set_debug (int debug_flag
,yyscan_t yyscanner
);
1194 YY_EXTRA_TYPE
_mesa_glsl_get_extra (yyscan_t yyscanner
);
1196 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1198 FILE *_mesa_glsl_get_in (yyscan_t yyscanner
);
1200 void _mesa_glsl_set_in (FILE * in_str
,yyscan_t yyscanner
);
1202 FILE *_mesa_glsl_get_out (yyscan_t yyscanner
);
1204 void _mesa_glsl_set_out (FILE * out_str
,yyscan_t yyscanner
);
1206 int _mesa_glsl_get_leng (yyscan_t yyscanner
);
1208 char *_mesa_glsl_get_text (yyscan_t yyscanner
);
1210 int _mesa_glsl_get_lineno (yyscan_t yyscanner
);
1212 void _mesa_glsl_set_lineno (int line_number
,yyscan_t yyscanner
);
1214 int _mesa_glsl_get_column (yyscan_t yyscanner
);
1216 void _mesa_glsl_set_column (int column_no
,yyscan_t yyscanner
);
1218 YYSTYPE
* _mesa_glsl_get_lval (yyscan_t yyscanner
);
1220 void _mesa_glsl_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1222 YYLTYPE
*_mesa_glsl_get_lloc (yyscan_t yyscanner
);
1224 void _mesa_glsl_set_lloc (YYLTYPE
* yylloc_param
,yyscan_t yyscanner
);
1226 /* Macros after this point can all be overridden by user definitions in
1230 #ifndef YY_SKIP_YYWRAP
1232 extern "C" int _mesa_glsl_wrap (yyscan_t yyscanner
);
1234 extern int _mesa_glsl_wrap (yyscan_t yyscanner
);
1239 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1242 #ifdef YY_NEED_STRLEN
1243 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1249 static int yyinput (yyscan_t yyscanner
);
1251 static int input (yyscan_t yyscanner
);
1256 /* Amount of stuff to slurp up with each read. */
1257 #ifndef YY_READ_BUF_SIZE
1258 #define YY_READ_BUF_SIZE 8192
1261 /* Copy whatever the last rule matched to the standard output. */
1263 /* This used to be an fputs(), but since the string might contain NUL's,
1264 * we now use fwrite().
1266 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1269 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1270 * is returned in "result".
1273 #define YY_INPUT(buf,result,max_size) \
1274 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1278 for ( n = 0; n < max_size && \
1279 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1280 buf[n] = (char) c; \
1282 buf[n++] = (char) c; \
1283 if ( c == EOF && ferror( yyin ) ) \
1284 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1290 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1292 if( errno != EINTR) \
1294 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1305 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1306 * we don't want an extra ';' after the "return" because that will cause
1307 * some compilers to complain about unreachable statements.
1310 #define yyterminate() return YY_NULL
1313 /* Number of entries by which start-condition stack grows. */
1314 #ifndef YY_START_STACK_INCR
1315 #define YY_START_STACK_INCR 25
1318 /* Report a fatal error. */
1319 #ifndef YY_FATAL_ERROR
1320 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1323 /* end tables serialization structures and prototypes */
1325 /* Default declaration of generated scanner - a define so the user can
1326 * easily add parameters.
1329 #define YY_DECL_IS_OURS 1
1331 extern int _mesa_glsl_lex \
1332 (YYSTYPE
* yylval_param
,YYLTYPE
* yylloc_param
,yyscan_t yyscanner
);
1334 #define YY_DECL int _mesa_glsl_lex \
1335 (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1336 #endif /* !YY_DECL */
1338 /* Code executed at the beginning of each rule, after yytext and yyleng
1341 #ifndef YY_USER_ACTION
1342 #define YY_USER_ACTION
1345 /* Code executed at the end of each rule. */
1347 #define YY_BREAK break;
1350 #define YY_RULE_SETUP \
1352 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1353 (yytext[yyleng - 1] == '\n'); \
1356 /** The main scanner function which does all the work.
1360 register yy_state_type yy_current_state
;
1361 register char *yy_cp
, *yy_bp
;
1362 register int yy_act
;
1363 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1365 #line 145 "glsl_lexer.ll"
1368 #line 1369 "glsl_lexer.cpp"
1370 yylval
= yylval_param
;
1372 yylloc
= yylloc_param
;
1374 if ( !yyg
->yy_init
)
1382 if ( ! yyg
->yy_start
)
1383 yyg
->yy_start
= 1; /* first start state */
1391 if ( ! YY_CURRENT_BUFFER
) {
1392 _mesa_glsl_ensure_buffer_stack (yyscanner
);
1393 YY_CURRENT_BUFFER_LVALUE
=
1394 _mesa_glsl__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1397 _mesa_glsl__load_buffer_state(yyscanner
);
1400 while ( 1 ) /* loops until end-of-file is reached */
1402 yy_cp
= yyg
->yy_c_buf_p
;
1404 /* Support of yytext. */
1405 *yy_cp
= yyg
->yy_hold_char
;
1407 /* yy_bp points to the position in yy_ch_buf of the start of
1412 yy_current_state
= yyg
->yy_start
;
1413 yy_current_state
+= YY_AT_BOL();
1417 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1418 if ( yy_accept
[yy_current_state
] )
1420 yyg
->yy_last_accepting_state
= yy_current_state
;
1421 yyg
->yy_last_accepting_cpos
= yy_cp
;
1423 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1425 yy_current_state
= (int) yy_def
[yy_current_state
];
1426 if ( yy_current_state
>= 847 )
1427 yy_c
= yy_meta
[(unsigned int) yy_c
];
1429 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1432 while ( yy_current_state
!= 846 );
1433 yy_cp
= yyg
->yy_last_accepting_cpos
;
1434 yy_current_state
= yyg
->yy_last_accepting_state
;
1437 yy_act
= yy_accept
[yy_current_state
];
1439 YY_DO_BEFORE_ACTION
;
1441 do_action
: /* This label is used only to access EOF actions. */
1444 { /* beginning of action switch */
1445 case 0: /* must back up */
1446 /* undo the effects of YY_DO_BEFORE_ACTION */
1447 *yy_cp
= yyg
->yy_hold_char
;
1448 yy_cp
= yyg
->yy_last_accepting_cpos
;
1449 yy_current_state
= yyg
->yy_last_accepting_state
;
1450 goto yy_find_action
;
1454 #line 147 "glsl_lexer.ll"
1457 /* Preprocessor tokens. */
1459 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1460 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1461 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1463 #line 150 "glsl_lexer.ll"
1468 #line 151 "glsl_lexer.ll"
1469 { BEGIN PP
; return VERSION_TOK
; }
1473 #line 152 "glsl_lexer.ll"
1474 { BEGIN PP
; return EXTENSION
; }
1477 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1478 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1479 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1481 #line 153 "glsl_lexer.ll"
1483 /* Eat characters until the first digit is
1487 while (!isdigit(*ptr
))
1490 /* Subtract one from the line number because
1491 * yylineno is zero-based instead of
1494 yylineno
= strtol(ptr
, &ptr
, 0) - 1;
1495 yylloc
->source
= strtol(ptr
, NULL
, 0);
1499 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1500 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1501 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1503 #line 168 "glsl_lexer.ll"
1505 /* Eat characters until the first digit is
1509 while (!isdigit(*ptr
))
1512 /* Subtract one from the line number because
1513 * yylineno is zero-based instead of
1516 yylineno
= strtol(ptr
, &ptr
, 0) - 1;
1521 #line 182 "glsl_lexer.ll"
1524 return PRAGMA_DEBUG_ON
;
1529 #line 186 "glsl_lexer.ll"
1532 return PRAGMA_DEBUG_OFF
;
1537 #line 190 "glsl_lexer.ll"
1540 return PRAGMA_OPTIMIZE_ON
;
1545 #line 194 "glsl_lexer.ll"
1548 return PRAGMA_OPTIMIZE_OFF
;
1553 #line 198 "glsl_lexer.ll"
1556 return PRAGMA_INVARIANT_ALL
;
1561 #line 202 "glsl_lexer.ll"
1565 /* rule 13 can match eol */
1567 #line 204 "glsl_lexer.ll"
1568 { BEGIN
0; yylineno
++; yycolumn
= 0; }
1572 #line 205 "glsl_lexer.ll"
1577 #line 207 "glsl_lexer.ll"
1582 #line 208 "glsl_lexer.ll"
1587 #line 209 "glsl_lexer.ll"
1592 #line 210 "glsl_lexer.ll"
1594 yylval
->identifier
= strdup(yytext
);
1600 #line 214 "glsl_lexer.ll"
1602 yylval
->n
= strtol(yytext
, NULL
, 10);
1607 /* rule 20 can match eol */
1609 #line 218 "glsl_lexer.ll"
1610 { BEGIN
0; yylineno
++; yycolumn
= 0; return EOL
; }
1613 /* rule 21 can match eol */
1615 #line 220 "glsl_lexer.ll"
1616 { yylineno
++; yycolumn
= 0; }
1620 #line 222 "glsl_lexer.ll"
1625 #line 223 "glsl_lexer.ll"
1630 #line 224 "glsl_lexer.ll"
1635 #line 225 "glsl_lexer.ll"
1640 #line 226 "glsl_lexer.ll"
1645 #line 227 "glsl_lexer.ll"
1646 KEYWORD(130, 130, UINT_TOK
);
1650 #line 229 "glsl_lexer.ll"
1655 #line 230 "glsl_lexer.ll"
1660 #line 231 "glsl_lexer.ll"
1665 #line 232 "glsl_lexer.ll"
1670 #line 233 "glsl_lexer.ll"
1675 #line 234 "glsl_lexer.ll"
1680 #line 235 "glsl_lexer.ll"
1685 #line 236 "glsl_lexer.ll"
1690 #line 237 "glsl_lexer.ll"
1695 #line 239 "glsl_lexer.ll"
1700 #line 240 "glsl_lexer.ll"
1705 #line 241 "glsl_lexer.ll"
1710 #line 242 "glsl_lexer.ll"
1715 #line 243 "glsl_lexer.ll"
1720 #line 244 "glsl_lexer.ll"
1725 #line 245 "glsl_lexer.ll"
1726 KEYWORD(130, 130, UVEC2
);
1730 #line 246 "glsl_lexer.ll"
1731 KEYWORD(130, 130, UVEC3
);
1735 #line 247 "glsl_lexer.ll"
1736 KEYWORD(130, 130, UVEC4
);
1740 #line 248 "glsl_lexer.ll"
1745 #line 249 "glsl_lexer.ll"
1750 #line 250 "glsl_lexer.ll"
1755 #line 251 "glsl_lexer.ll"
1760 #line 252 "glsl_lexer.ll"
1765 #line 253 "glsl_lexer.ll"
1770 #line 254 "glsl_lexer.ll"
1771 KEYWORD(120, 120, MAT2X2
);
1775 #line 255 "glsl_lexer.ll"
1776 KEYWORD(120, 120, MAT2X3
);
1780 #line 256 "glsl_lexer.ll"
1781 KEYWORD(120, 120, MAT2X4
);
1785 #line 257 "glsl_lexer.ll"
1786 KEYWORD(120, 120, MAT3X2
);
1790 #line 258 "glsl_lexer.ll"
1791 KEYWORD(120, 120, MAT3X3
);
1795 #line 259 "glsl_lexer.ll"
1796 KEYWORD(120, 120, MAT3X4
);
1800 #line 260 "glsl_lexer.ll"
1801 KEYWORD(120, 120, MAT4X2
);
1805 #line 261 "glsl_lexer.ll"
1806 KEYWORD(120, 120, MAT4X3
);
1810 #line 262 "glsl_lexer.ll"
1811 KEYWORD(120, 120, MAT4X4
);
1815 #line 264 "glsl_lexer.ll"
1820 #line 265 "glsl_lexer.ll"
1825 #line 266 "glsl_lexer.ll"
1830 #line 267 "glsl_lexer.ll"
1835 #line 268 "glsl_lexer.ll"
1840 #line 269 "glsl_lexer.ll"
1841 KEYWORD(120, 120, CENTROID
);
1845 #line 270 "glsl_lexer.ll"
1846 KEYWORD(120 || ES
, 120 || ES
, INVARIANT
);
1850 #line 271 "glsl_lexer.ll"
1851 KEYWORD(130 || ES
, 130, FLAT
);
1855 #line 272 "glsl_lexer.ll"
1856 KEYWORD(130, 130, SMOOTH
);
1860 #line 273 "glsl_lexer.ll"
1861 KEYWORD(130, 130, NOPERSPECTIVE
);
1865 #line 275 "glsl_lexer.ll"
1870 #line 276 "glsl_lexer.ll"
1875 #line 277 "glsl_lexer.ll"
1880 #line 278 "glsl_lexer.ll"
1885 #line 279 "glsl_lexer.ll"
1886 KEYWORD(130, 130, SAMPLER1DARRAY
);
1890 #line 280 "glsl_lexer.ll"
1891 KEYWORD(130, 130, SAMPLER2DARRAY
);
1895 #line 281 "glsl_lexer.ll"
1896 return SAMPLER1DSHADOW
;
1900 #line 282 "glsl_lexer.ll"
1901 return SAMPLER2DSHADOW
;
1905 #line 283 "glsl_lexer.ll"
1906 KEYWORD(130, 130, SAMPLERCUBESHADOW
);
1910 #line 284 "glsl_lexer.ll"
1911 KEYWORD(130, 130, SAMPLER1DARRAYSHADOW
);
1915 #line 285 "glsl_lexer.ll"
1916 KEYWORD(130, 130, SAMPLER2DARRAYSHADOW
);
1920 #line 286 "glsl_lexer.ll"
1921 KEYWORD(130, 130, ISAMPLER1D
);
1925 #line 287 "glsl_lexer.ll"
1926 KEYWORD(130, 130, ISAMPLER2D
);
1930 #line 288 "glsl_lexer.ll"
1931 KEYWORD(130, 130, ISAMPLER3D
);
1935 #line 289 "glsl_lexer.ll"
1936 KEYWORD(130, 130, ISAMPLERCUBE
);
1940 #line 290 "glsl_lexer.ll"
1941 KEYWORD(130, 130, ISAMPLER1DARRAY
);
1945 #line 291 "glsl_lexer.ll"
1946 KEYWORD(130, 130, ISAMPLER2DARRAY
);
1950 #line 292 "glsl_lexer.ll"
1951 KEYWORD(130, 130, USAMPLER1D
);
1955 #line 293 "glsl_lexer.ll"
1956 KEYWORD(130, 130, USAMPLER2D
);
1960 #line 294 "glsl_lexer.ll"
1961 KEYWORD(130, 130, USAMPLER3D
);
1965 #line 295 "glsl_lexer.ll"
1966 KEYWORD(130, 130, USAMPLERCUBE
);
1970 #line 296 "glsl_lexer.ll"
1971 KEYWORD(130, 130, USAMPLER1DARRAY
);
1975 #line 297 "glsl_lexer.ll"
1976 KEYWORD(130, 130, USAMPLER2DARRAY
);
1980 #line 299 "glsl_lexer.ll"
1982 if (yyextra
->OES_EGL_image_external_enable
)
1983 return SAMPLEREXTERNALOES
;
1990 #line 307 "glsl_lexer.ll"
1995 #line 308 "glsl_lexer.ll"
2000 #line 310 "glsl_lexer.ll"
2002 if ((yyextra
->language_version
>= 140)
2003 || yyextra
->AMD_conservative_depth_enable
2004 || yyextra
->ARB_conservative_depth_enable
2005 || yyextra
->ARB_fragment_coord_conventions_enable
) {
2008 yylval
->identifier
= strdup(yytext
);
2015 #line 323 "glsl_lexer.ll"
2020 #line 324 "glsl_lexer.ll"
2025 #line 325 "glsl_lexer.ll"
2030 #line 326 "glsl_lexer.ll"
2035 #line 327 "glsl_lexer.ll"
2040 #line 328 "glsl_lexer.ll"
2045 #line 329 "glsl_lexer.ll"
2050 #line 330 "glsl_lexer.ll"
2055 #line 331 "glsl_lexer.ll"
2060 #line 332 "glsl_lexer.ll"
2065 #line 333 "glsl_lexer.ll"
2070 #line 335 "glsl_lexer.ll"
2075 #line 336 "glsl_lexer.ll"
2080 #line 337 "glsl_lexer.ll"
2085 #line 338 "glsl_lexer.ll"
2090 #line 339 "glsl_lexer.ll"
2095 #line 340 "glsl_lexer.ll"
2096 return RIGHT_ASSIGN
;
2100 #line 341 "glsl_lexer.ll"
2105 #line 342 "glsl_lexer.ll"
2110 #line 343 "glsl_lexer.ll"
2115 #line 344 "glsl_lexer.ll"
2120 #line 346 "glsl_lexer.ll"
2122 return LITERAL_INTEGER(10);
2127 #line 349 "glsl_lexer.ll"
2129 return LITERAL_INTEGER(16);
2134 #line 352 "glsl_lexer.ll"
2136 return LITERAL_INTEGER(8);
2141 #line 356 "glsl_lexer.ll"
2143 yylval
->real
= glsl_strtod(yytext
, NULL
);
2144 return FLOATCONSTANT
;
2149 #line 360 "glsl_lexer.ll"
2151 yylval
->real
= glsl_strtod(yytext
, NULL
);
2152 return FLOATCONSTANT
;
2157 #line 364 "glsl_lexer.ll"
2159 yylval
->real
= glsl_strtod(yytext
, NULL
);
2160 return FLOATCONSTANT
;
2165 #line 368 "glsl_lexer.ll"
2167 yylval
->real
= glsl_strtod(yytext
, NULL
);
2168 return FLOATCONSTANT
;
2173 #line 372 "glsl_lexer.ll"
2175 yylval
->real
= glsl_strtod(yytext
, NULL
);
2176 return FLOATCONSTANT
;
2181 #line 377 "glsl_lexer.ll"
2184 return BOOLCONSTANT
;
2189 #line 381 "glsl_lexer.ll"
2192 return BOOLCONSTANT
;
2195 /* Reserved words in GLSL 1.10. */
2198 #line 388 "glsl_lexer.ll"
2199 KEYWORD(110 || ES
, 999, ASM
);
2203 #line 389 "glsl_lexer.ll"
2204 KEYWORD(110 || ES
, 999, CLASS
);
2208 #line 390 "glsl_lexer.ll"
2209 KEYWORD(110 || ES
, 999, UNION
);
2213 #line 391 "glsl_lexer.ll"
2214 KEYWORD(110 || ES
, 999, ENUM
);
2218 #line 392 "glsl_lexer.ll"
2219 KEYWORD(110 || ES
, 999, TYPEDEF
);
2223 #line 393 "glsl_lexer.ll"
2224 KEYWORD(110 || ES
, 999, TEMPLATE
);
2228 #line 394 "glsl_lexer.ll"
2229 KEYWORD(110 || ES
, 999, THIS
);
2233 #line 395 "glsl_lexer.ll"
2234 KEYWORD(110 || ES
, 999, PACKED_TOK
);
2238 #line 396 "glsl_lexer.ll"
2239 KEYWORD(110 || ES
, 999, GOTO
);
2243 #line 397 "glsl_lexer.ll"
2244 KEYWORD(110 || ES
, 130, SWITCH
);
2248 #line 398 "glsl_lexer.ll"
2249 KEYWORD(110 || ES
, 130, DEFAULT
);
2253 #line 399 "glsl_lexer.ll"
2254 KEYWORD(110 || ES
, 999, INLINE_TOK
);
2258 #line 400 "glsl_lexer.ll"
2259 KEYWORD(110 || ES
, 999, NOINLINE
);
2263 #line 401 "glsl_lexer.ll"
2264 KEYWORD(110 || ES
, 999, VOLATILE
);
2268 #line 402 "glsl_lexer.ll"
2269 KEYWORD(110 || ES
, 999, PUBLIC_TOK
);
2273 #line 403 "glsl_lexer.ll"
2274 KEYWORD(110 || ES
, 999, STATIC
);
2278 #line 404 "glsl_lexer.ll"
2279 KEYWORD(110 || ES
, 999, EXTERN
);
2283 #line 405 "glsl_lexer.ll"
2284 KEYWORD(110 || ES
, 999, EXTERNAL
);
2288 #line 406 "glsl_lexer.ll"
2289 KEYWORD(110 || ES
, 999, INTERFACE
);
2293 #line 407 "glsl_lexer.ll"
2294 KEYWORD(110 || ES
, 999, LONG_TOK
);
2298 #line 408 "glsl_lexer.ll"
2299 KEYWORD(110 || ES
, 999, SHORT_TOK
);
2303 #line 409 "glsl_lexer.ll"
2304 KEYWORD(110 || ES
, 400, DOUBLE_TOK
);
2308 #line 410 "glsl_lexer.ll"
2309 KEYWORD(110 || ES
, 999, HALF
);
2313 #line 411 "glsl_lexer.ll"
2314 KEYWORD(110 || ES
, 999, FIXED_TOK
);
2318 #line 412 "glsl_lexer.ll"
2319 KEYWORD(110 || ES
, 999, UNSIGNED
);
2323 #line 413 "glsl_lexer.ll"
2324 KEYWORD(110 || ES
, 999, INPUT_TOK
);
2328 #line 414 "glsl_lexer.ll"
2329 KEYWORD(110 || ES
, 999, OUTPUT
);
2333 #line 415 "glsl_lexer.ll"
2334 KEYWORD(110 || ES
, 999, HVEC2
);
2338 #line 416 "glsl_lexer.ll"
2339 KEYWORD(110 || ES
, 999, HVEC3
);
2343 #line 417 "glsl_lexer.ll"
2344 KEYWORD(110 || ES
, 999, HVEC4
);
2348 #line 418 "glsl_lexer.ll"
2349 KEYWORD(110 || ES
, 400, DVEC2
);
2353 #line 419 "glsl_lexer.ll"
2354 KEYWORD(110 || ES
, 400, DVEC3
);
2358 #line 420 "glsl_lexer.ll"
2359 KEYWORD(110 || ES
, 400, DVEC4
);
2363 #line 421 "glsl_lexer.ll"
2364 KEYWORD(110 || ES
, 999, FVEC2
);
2368 #line 422 "glsl_lexer.ll"
2369 KEYWORD(110 || ES
, 999, FVEC3
);
2373 #line 423 "glsl_lexer.ll"
2374 KEYWORD(110 || ES
, 999, FVEC4
);
2378 #line 424 "glsl_lexer.ll"
2379 return SAMPLER2DRECT
;
2383 #line 425 "glsl_lexer.ll"
2384 KEYWORD(110 || ES
, 999, SAMPLER3DRECT
);
2388 #line 426 "glsl_lexer.ll"
2389 return SAMPLER2DRECTSHADOW
;
2393 #line 427 "glsl_lexer.ll"
2394 KEYWORD(110 || ES
, 999, SIZEOF
);
2398 #line 428 "glsl_lexer.ll"
2399 KEYWORD(110 || ES
, 999, CAST
);
2403 #line 429 "glsl_lexer.ll"
2404 KEYWORD(110 || ES
, 999, NAMESPACE
);
2408 #line 430 "glsl_lexer.ll"
2409 KEYWORD(110 || ES
, 999, USING
);
2411 /* Additional reserved words in GLSL 1.20. */
2414 #line 433 "glsl_lexer.ll"
2415 KEYWORD(120, 130 || ES
, LOWP
);
2419 #line 434 "glsl_lexer.ll"
2420 KEYWORD(120, 130 || ES
, MEDIUMP
);
2424 #line 435 "glsl_lexer.ll"
2425 KEYWORD(120, 130 || ES
, HIGHP
);
2429 #line 436 "glsl_lexer.ll"
2430 KEYWORD(120, 130 || ES
, PRECISION
);
2432 /* Additional reserved words in GLSL 1.30. */
2435 #line 439 "glsl_lexer.ll"
2436 KEYWORD(130, 130, CASE
);
2440 #line 440 "glsl_lexer.ll"
2441 KEYWORD(130, 999, COMMON
);
2445 #line 441 "glsl_lexer.ll"
2446 KEYWORD(130, 999, PARTITION
);
2450 #line 442 "glsl_lexer.ll"
2451 KEYWORD(130, 999, ACTIVE
);
2455 #line 443 "glsl_lexer.ll"
2456 KEYWORD(130 || ES
, 999, SUPERP
);
2460 #line 444 "glsl_lexer.ll"
2461 KEYWORD(130, 140, SAMPLERBUFFER
);
2465 #line 445 "glsl_lexer.ll"
2466 KEYWORD(130, 999, FILTER
);
2470 #line 446 "glsl_lexer.ll"
2471 KEYWORD(130, 999, IMAGE1D
);
2475 #line 447 "glsl_lexer.ll"
2476 KEYWORD(130, 999, IMAGE2D
);
2480 #line 448 "glsl_lexer.ll"
2481 KEYWORD(130, 999, IMAGE3D
);
2485 #line 449 "glsl_lexer.ll"
2486 KEYWORD(130, 999, IMAGECUBE
);
2490 #line 450 "glsl_lexer.ll"
2491 KEYWORD(130, 999, IIMAGE1D
);
2495 #line 451 "glsl_lexer.ll"
2496 KEYWORD(130, 999, IIMAGE2D
);
2500 #line 452 "glsl_lexer.ll"
2501 KEYWORD(130, 999, IIMAGE3D
);
2505 #line 453 "glsl_lexer.ll"
2506 KEYWORD(130, 999, IIMAGECUBE
);
2510 #line 454 "glsl_lexer.ll"
2511 KEYWORD(130, 999, UIMAGE1D
);
2515 #line 455 "glsl_lexer.ll"
2516 KEYWORD(130, 999, UIMAGE2D
);
2520 #line 456 "glsl_lexer.ll"
2521 KEYWORD(130, 999, UIMAGE3D
);
2525 #line 457 "glsl_lexer.ll"
2526 KEYWORD(130, 999, UIMAGECUBE
);
2530 #line 458 "glsl_lexer.ll"
2531 KEYWORD(130, 999, IMAGE1DARRAY
);
2535 #line 459 "glsl_lexer.ll"
2536 KEYWORD(130, 999, IMAGE2DARRAY
);
2540 #line 460 "glsl_lexer.ll"
2541 KEYWORD(130, 999, IIMAGE1DARRAY
);
2545 #line 461 "glsl_lexer.ll"
2546 KEYWORD(130, 999, IIMAGE2DARRAY
);
2550 #line 462 "glsl_lexer.ll"
2551 KEYWORD(130, 999, UIMAGE1DARRAY
);
2555 #line 463 "glsl_lexer.ll"
2556 KEYWORD(130, 999, UIMAGE2DARRAY
);
2560 #line 464 "glsl_lexer.ll"
2561 KEYWORD(130, 999, IMAGE1DSHADOW
);
2565 #line 465 "glsl_lexer.ll"
2566 KEYWORD(130, 999, IMAGE2DSHADOW
);
2570 #line 466 "glsl_lexer.ll"
2571 KEYWORD(130, 999, IMAGE1DARRAYSHADOW
);
2575 #line 467 "glsl_lexer.ll"
2576 KEYWORD(130, 999, IMAGE2DARRAYSHADOW
);
2580 #line 468 "glsl_lexer.ll"
2581 KEYWORD(130, 999, IMAGEBUFFER
);
2585 #line 469 "glsl_lexer.ll"
2586 KEYWORD(130, 999, IIMAGEBUFFER
);
2590 #line 470 "glsl_lexer.ll"
2591 KEYWORD(130, 999, UIMAGEBUFFER
);
2595 #line 471 "glsl_lexer.ll"
2596 KEYWORD(130, 999, ROW_MAJOR
);
2600 #line 473 "glsl_lexer.ll"
2602 struct _mesa_glsl_parse_state
*state
= yyextra
;
2604 yylval
->identifier
= ralloc_strdup(ctx
, yytext
);
2605 return classify_identifier(state
, yytext
);
2610 #line 480 "glsl_lexer.ll"
2611 { return yytext
[0]; }
2615 #line 482 "glsl_lexer.ll"
2618 #line 2620 "glsl_lexer.cpp"
2619 case YY_STATE_EOF(INITIAL
):
2620 case YY_STATE_EOF(PP
):
2621 case YY_STATE_EOF(PRAGMA
):
2624 case YY_END_OF_BUFFER
:
2626 /* Amount of text matched not including the EOB char. */
2627 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
2629 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2630 *yy_cp
= yyg
->yy_hold_char
;
2631 YY_RESTORE_YY_MORE_OFFSET
2633 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
2635 /* We're scanning a new file or input source. It's
2636 * possible that this happened because the user
2637 * just pointed yyin at a new source and called
2638 * _mesa_glsl_lex(). If so, then we have to assure
2639 * consistency between YY_CURRENT_BUFFER and our
2640 * globals. Here is the right place to do so, because
2641 * this is the first action (other than possibly a
2642 * back-up) that will match for the new input source.
2644 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2645 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
2646 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
2649 /* Note that here we test for yy_c_buf_p "<=" to the position
2650 * of the first EOB in the buffer, since yy_c_buf_p will
2651 * already have been incremented past the NUL character
2652 * (since all states make transitions on EOB to the
2653 * end-of-buffer state). Contrast this with the test
2656 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2657 { /* This was really a NUL. */
2658 yy_state_type yy_next_state
;
2660 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2662 yy_current_state
= yy_get_previous_state( yyscanner
);
2664 /* Okay, we're now positioned to make the NUL
2665 * transition. We couldn't have
2666 * yy_get_previous_state() go ahead and do it
2667 * for us because it doesn't know how to deal
2668 * with the possibility of jamming (and we don't
2669 * want to build jamming into it because then it
2670 * will run more slowly).
2673 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2675 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2677 if ( yy_next_state
)
2679 /* Consume the NUL. */
2680 yy_cp
= ++yyg
->yy_c_buf_p
;
2681 yy_current_state
= yy_next_state
;
2687 yy_cp
= yyg
->yy_last_accepting_cpos
;
2688 yy_current_state
= yyg
->yy_last_accepting_state
;
2689 goto yy_find_action
;
2693 else switch ( yy_get_next_buffer( yyscanner
) )
2695 case EOB_ACT_END_OF_FILE
:
2697 yyg
->yy_did_buffer_switch_on_eof
= 0;
2699 if ( _mesa_glsl_wrap(yyscanner
) )
2701 /* Note: because we've taken care in
2702 * yy_get_next_buffer() to have set up
2703 * yytext, we can now set up
2704 * yy_c_buf_p so that if some total
2705 * hoser (like flex itself) wants to
2706 * call the scanner after we return the
2707 * YY_NULL, it'll still work - another
2708 * YY_NULL will get returned.
2710 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2712 yy_act
= YY_STATE_EOF(YY_START
);
2718 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2724 case EOB_ACT_CONTINUE_SCAN
:
2726 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2728 yy_current_state
= yy_get_previous_state( yyscanner
);
2730 yy_cp
= yyg
->yy_c_buf_p
;
2731 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2734 case EOB_ACT_LAST_MATCH
:
2736 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2738 yy_current_state
= yy_get_previous_state( yyscanner
);
2740 yy_cp
= yyg
->yy_c_buf_p
;
2741 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2742 goto yy_find_action
;
2749 "fatal flex scanner internal error--no action found" );
2750 } /* end of action switch */
2751 } /* end of scanning one token */
2752 } /* end of _mesa_glsl_lex */
2754 /* yy_get_next_buffer - try to read in a new buffer
2756 * Returns a code representing an action:
2757 * EOB_ACT_LAST_MATCH -
2758 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2759 * EOB_ACT_END_OF_FILE - end of file
2761 static int yy_get_next_buffer (yyscan_t yyscanner
)
2763 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2764 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2765 register char *source
= yyg
->yytext_ptr
;
2766 register int number_to_move
, i
;
2769 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2771 "fatal flex scanner internal error--end of buffer missed" );
2773 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2774 { /* Don't try to fill the buffer, so this is an EOF. */
2775 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2777 /* We matched a single character, the EOB, so
2778 * treat this as a final EOF.
2780 return EOB_ACT_END_OF_FILE
;
2785 /* We matched some text prior to the EOB, first
2788 return EOB_ACT_LAST_MATCH
;
2792 /* Try to read more data. */
2794 /* First move last chars to start of buffer. */
2795 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2797 for ( i
= 0; i
< number_to_move
; ++i
)
2798 *(dest
++) = *(source
++);
2800 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2801 /* don't do the read, it's not guaranteed to return an EOF,
2804 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2809 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2811 while ( num_to_read
<= 0 )
2812 { /* Not enough room in the buffer - grow it. */
2814 /* just a shorter name for the current buffer */
2815 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2817 int yy_c_buf_p_offset
=
2818 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2820 if ( b
->yy_is_our_buffer
)
2822 int new_size
= b
->yy_buf_size
* 2;
2824 if ( new_size
<= 0 )
2825 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2827 b
->yy_buf_size
*= 2;
2829 b
->yy_ch_buf
= (char *)
2830 /* Include room in for 2 EOB chars. */
2831 _mesa_glsl_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2834 /* Can't grow it, we don't own it. */
2837 if ( ! b
->yy_ch_buf
)
2839 "fatal error - scanner input buffer overflow" );
2841 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2843 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2848 if ( num_to_read
> YY_READ_BUF_SIZE
)
2849 num_to_read
= YY_READ_BUF_SIZE
;
2851 /* Read in more data. */
2852 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2853 yyg
->yy_n_chars
, (size_t) num_to_read
);
2855 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2858 if ( yyg
->yy_n_chars
== 0 )
2860 if ( number_to_move
== YY_MORE_ADJ
)
2862 ret_val
= EOB_ACT_END_OF_FILE
;
2863 _mesa_glsl_restart(yyin
,yyscanner
);
2868 ret_val
= EOB_ACT_LAST_MATCH
;
2869 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2870 YY_BUFFER_EOF_PENDING
;
2875 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2877 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2878 /* Extend the array by 50%, plus the number we really need. */
2879 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2880 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) _mesa_glsl_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2881 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2882 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2885 yyg
->yy_n_chars
+= number_to_move
;
2886 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2887 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2889 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2894 /* yy_get_previous_state - get the state just before the EOB char was reached */
2896 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2898 register yy_state_type yy_current_state
;
2899 register char *yy_cp
;
2900 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2902 yy_current_state
= yyg
->yy_start
;
2903 yy_current_state
+= YY_AT_BOL();
2905 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2907 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2908 if ( yy_accept
[yy_current_state
] )
2910 yyg
->yy_last_accepting_state
= yy_current_state
;
2911 yyg
->yy_last_accepting_cpos
= yy_cp
;
2913 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2915 yy_current_state
= (int) yy_def
[yy_current_state
];
2916 if ( yy_current_state
>= 847 )
2917 yy_c
= yy_meta
[(unsigned int) yy_c
];
2919 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2922 return yy_current_state
;
2925 /* yy_try_NUL_trans - try to make a transition on the NUL character
2928 * next_state = yy_try_NUL_trans( current_state );
2930 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2932 register int yy_is_jam
;
2933 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2934 register char *yy_cp
= yyg
->yy_c_buf_p
;
2936 register YY_CHAR yy_c
= 1;
2937 if ( yy_accept
[yy_current_state
] )
2939 yyg
->yy_last_accepting_state
= yy_current_state
;
2940 yyg
->yy_last_accepting_cpos
= yy_cp
;
2942 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2944 yy_current_state
= (int) yy_def
[yy_current_state
];
2945 if ( yy_current_state
>= 847 )
2946 yy_c
= yy_meta
[(unsigned int) yy_c
];
2948 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2949 yy_is_jam
= (yy_current_state
== 846);
2951 return yy_is_jam
? 0 : yy_current_state
;
2956 static int yyinput (yyscan_t yyscanner
)
2958 static int input (yyscan_t yyscanner
)
2963 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2965 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2967 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2969 /* yy_c_buf_p now points to the character we want to return.
2970 * If this occurs *before* the EOB characters, then it's a
2971 * valid NUL; if not, then we've hit the end of the buffer.
2973 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2974 /* This was really a NUL. */
2975 *yyg
->yy_c_buf_p
= '\0';
2978 { /* need more input */
2979 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2982 switch ( yy_get_next_buffer( yyscanner
) )
2984 case EOB_ACT_LAST_MATCH
:
2985 /* This happens because yy_g_n_b()
2986 * sees that we've accumulated a
2987 * token and flags that we need to
2988 * try matching the token before
2989 * proceeding. But for input(),
2990 * there's no matching to consider.
2991 * So convert the EOB_ACT_LAST_MATCH
2992 * to EOB_ACT_END_OF_FILE.
2995 /* Reset buffer status. */
2996 _mesa_glsl_restart(yyin
,yyscanner
);
3000 case EOB_ACT_END_OF_FILE
:
3002 if ( _mesa_glsl_wrap(yyscanner
) )
3005 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
3008 return yyinput(yyscanner
);
3010 return input(yyscanner
);
3014 case EOB_ACT_CONTINUE_SCAN
:
3015 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
3021 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
3022 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
3023 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
3025 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
3029 #endif /* ifndef YY_NO_INPUT */
3031 /** Immediately switch to a different input stream.
3032 * @param input_file A readable stream.
3033 * @param yyscanner The scanner object.
3034 * @note This function does not reset the start condition to @c INITIAL .
3036 void _mesa_glsl_restart (FILE * input_file
, yyscan_t yyscanner
)
3038 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3040 if ( ! YY_CURRENT_BUFFER
){
3041 _mesa_glsl_ensure_buffer_stack (yyscanner
);
3042 YY_CURRENT_BUFFER_LVALUE
=
3043 _mesa_glsl__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
3046 _mesa_glsl__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
3047 _mesa_glsl__load_buffer_state(yyscanner
);
3050 /** Switch to a different input buffer.
3051 * @param new_buffer The new input buffer.
3052 * @param yyscanner The scanner object.
3054 void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
3056 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3058 /* TODO. We should be able to replace this entire function body
3060 * _mesa_glsl_pop_buffer_state();
3061 * _mesa_glsl_push_buffer_state(new_buffer);
3063 _mesa_glsl_ensure_buffer_stack (yyscanner
);
3064 if ( YY_CURRENT_BUFFER
== new_buffer
)
3067 if ( YY_CURRENT_BUFFER
)
3069 /* Flush out information for old buffer. */
3070 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3071 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3072 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3075 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3076 _mesa_glsl__load_buffer_state(yyscanner
);
3078 /* We don't actually know whether we did this switch during
3079 * EOF (_mesa_glsl_wrap()) processing, but the only time this flag
3080 * is looked at is after _mesa_glsl_wrap() is called, so it's safe
3081 * to go ahead and always set it.
3083 yyg
->yy_did_buffer_switch_on_eof
= 1;
3086 static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner
)
3088 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3089 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
3090 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
3091 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
3092 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
3095 /** Allocate and initialize an input buffer state.
3096 * @param file A readable stream.
3097 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3098 * @param yyscanner The scanner object.
3099 * @return the allocated buffer state.
3101 YY_BUFFER_STATE
_mesa_glsl__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
3105 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3107 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3109 b
->yy_buf_size
= size
;
3111 /* yy_ch_buf has to be 2 characters longer than the size given because
3112 * we need to put in 2 end-of-buffer characters.
3114 b
->yy_ch_buf
= (char *) _mesa_glsl_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
3115 if ( ! b
->yy_ch_buf
)
3116 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3118 b
->yy_is_our_buffer
= 1;
3120 _mesa_glsl__init_buffer(b
,file
,yyscanner
);
3125 /** Destroy the buffer.
3126 * @param b a buffer created with _mesa_glsl__create_buffer()
3127 * @param yyscanner The scanner object.
3129 void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3131 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3136 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
3137 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
3139 if ( b
->yy_is_our_buffer
)
3140 _mesa_glsl_free((void *) b
->yy_ch_buf
,yyscanner
);
3142 _mesa_glsl_free((void *) b
,yyscanner
);
3145 /* Initializes or reinitializes a buffer.
3146 * This function is sometimes called more than once on the same buffer,
3147 * such as during a _mesa_glsl_restart() or at EOF.
3149 static void _mesa_glsl__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
3153 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3155 _mesa_glsl__flush_buffer(b
,yyscanner
);
3157 b
->yy_input_file
= file
;
3158 b
->yy_fill_buffer
= 1;
3160 /* If b is the current buffer, then _mesa_glsl__init_buffer was _probably_
3161 * called from _mesa_glsl_restart() or through yy_get_next_buffer.
3162 * In that case, we don't want to reset the lineno or column.
3164 if (b
!= YY_CURRENT_BUFFER
){
3165 b
->yy_bs_lineno
= 1;
3166 b
->yy_bs_column
= 0;
3169 b
->yy_is_interactive
= 0;
3174 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3175 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3176 * @param yyscanner The scanner object.
3178 void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3180 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3186 /* We always need two end-of-buffer characters. The first causes
3187 * a transition to the end-of-buffer state. The second causes
3188 * a jam in that state.
3190 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
3191 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
3193 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
3196 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3198 if ( b
== YY_CURRENT_BUFFER
)
3199 _mesa_glsl__load_buffer_state(yyscanner
);
3202 /** Pushes the new state onto the stack. The new state becomes
3203 * the current state. This function will allocate the stack
3205 * @param new_buffer The new state.
3206 * @param yyscanner The scanner object.
3208 void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
3210 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3211 if (new_buffer
== NULL
)
3214 _mesa_glsl_ensure_buffer_stack(yyscanner
);
3216 /* This block is copied from _mesa_glsl__switch_to_buffer. */
3217 if ( YY_CURRENT_BUFFER
)
3219 /* Flush out information for old buffer. */
3220 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3221 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3222 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3225 /* Only push if top exists. Otherwise, replace top. */
3226 if (YY_CURRENT_BUFFER
)
3227 yyg
->yy_buffer_stack_top
++;
3228 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3230 /* copied from _mesa_glsl__switch_to_buffer. */
3231 _mesa_glsl__load_buffer_state(yyscanner
);
3232 yyg
->yy_did_buffer_switch_on_eof
= 1;
3235 /** Removes and deletes the top of the stack, if present.
3236 * The next element becomes the new top.
3237 * @param yyscanner The scanner object.
3239 void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner
)
3241 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3242 if (!YY_CURRENT_BUFFER
)
3245 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3246 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3247 if (yyg
->yy_buffer_stack_top
> 0)
3248 --yyg
->yy_buffer_stack_top
;
3250 if (YY_CURRENT_BUFFER
) {
3251 _mesa_glsl__load_buffer_state(yyscanner
);
3252 yyg
->yy_did_buffer_switch_on_eof
= 1;
3256 /* Allocates the stack if it does not exist.
3257 * Guarantees space for at least one push.
3259 static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner
)
3262 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3264 if (!yyg
->yy_buffer_stack
) {
3266 /* First allocation is just for 2 elements, since we don't know if this
3267 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3268 * immediate realloc on the next call.
3271 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_alloc
3272 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
3274 if ( ! yyg
->yy_buffer_stack
)
3275 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3277 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
3279 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3280 yyg
->yy_buffer_stack_top
= 0;
3284 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
3286 /* Increase the buffer to prepare for a possible push. */
3287 int grow_size
= 8 /* arbitrary grow size */;
3289 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
3290 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_realloc
3291 (yyg
->yy_buffer_stack
,
3292 num_to_alloc
* sizeof(struct yy_buffer_state
*)
3294 if ( ! yyg
->yy_buffer_stack
)
3295 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3297 /* zero only the new slots.*/
3298 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
3299 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3303 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3304 * @param base the character buffer
3305 * @param size the size in bytes of the character buffer
3306 * @param yyscanner The scanner object.
3307 * @return the newly allocated buffer state object.
3309 YY_BUFFER_STATE
_mesa_glsl__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
3314 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
3315 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
3316 /* They forgot to leave room for the EOB's. */
3319 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3321 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_buffer()" );
3323 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
3324 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
3325 b
->yy_is_our_buffer
= 0;
3326 b
->yy_input_file
= 0;
3327 b
->yy_n_chars
= b
->yy_buf_size
;
3328 b
->yy_is_interactive
= 0;
3330 b
->yy_fill_buffer
= 0;
3331 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3333 _mesa_glsl__switch_to_buffer(b
,yyscanner
);
3338 /** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lex() will
3339 * scan from a @e copy of @a str.
3340 * @param yystr a NUL-terminated string to scan
3341 * @param yyscanner The scanner object.
3342 * @return the newly allocated buffer state object.
3343 * @note If you want to scan bytes that may contain NUL values, then use
3344 * _mesa_glsl__scan_bytes() instead.
3346 YY_BUFFER_STATE
_mesa_glsl__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
3349 return _mesa_glsl__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
3352 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
3353 * scan from a @e copy of @a bytes.
3354 * @param bytes the byte buffer to scan
3355 * @param len the number of bytes in the buffer pointed to by @a bytes.
3356 * @param yyscanner The scanner object.
3357 * @return the newly allocated buffer state object.
3359 YY_BUFFER_STATE
_mesa_glsl__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
3366 /* Get memory for full buffer, including space for trailing EOB's. */
3367 n
= _yybytes_len
+ 2;
3368 buf
= (char *) _mesa_glsl_alloc(n
,yyscanner
);
3370 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_bytes()" );
3372 for ( i
= 0; i
< _yybytes_len
; ++i
)
3373 buf
[i
] = yybytes
[i
];
3375 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
3377 b
= _mesa_glsl__scan_buffer(buf
,n
,yyscanner
);
3379 YY_FATAL_ERROR( "bad buffer in _mesa_glsl__scan_bytes()" );
3381 /* It's okay to grow etc. this buffer, and we should throw it
3382 * away when we're done.
3384 b
->yy_is_our_buffer
= 1;
3389 #ifndef YY_EXIT_FAILURE
3390 #define YY_EXIT_FAILURE 2
3393 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
3395 (void) fprintf( stderr
, "%s\n", msg
);
3396 exit( YY_EXIT_FAILURE
);
3399 /* Redefine yyless() so it works in section 3 code. */
3405 /* Undo effects of setting up yytext. */ \
3406 int yyless_macro_arg = (n); \
3407 YY_LESS_LINENO(yyless_macro_arg);\
3408 yytext[yyleng] = yyg->yy_hold_char; \
3409 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3410 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3411 *yyg->yy_c_buf_p = '\0'; \
3412 yyleng = yyless_macro_arg; \
3416 /* Accessor methods (get/set functions) to struct members. */
3418 /** Get the user-defined data for this scanner.
3419 * @param yyscanner The scanner object.
3421 YY_EXTRA_TYPE
_mesa_glsl_get_extra (yyscan_t yyscanner
)
3423 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3427 /** Get the current line number.
3428 * @param yyscanner The scanner object.
3430 int _mesa_glsl_get_lineno (yyscan_t yyscanner
)
3432 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3434 if (! YY_CURRENT_BUFFER
)
3440 /** Get the current column number.
3441 * @param yyscanner The scanner object.
3443 int _mesa_glsl_get_column (yyscan_t yyscanner
)
3445 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3447 if (! YY_CURRENT_BUFFER
)
3453 /** Get the input stream.
3454 * @param yyscanner The scanner object.
3456 FILE *_mesa_glsl_get_in (yyscan_t yyscanner
)
3458 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3462 /** Get the output stream.
3463 * @param yyscanner The scanner object.
3465 FILE *_mesa_glsl_get_out (yyscan_t yyscanner
)
3467 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3471 /** Get the length of the current token.
3472 * @param yyscanner The scanner object.
3474 int _mesa_glsl_get_leng (yyscan_t yyscanner
)
3476 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3480 /** Get the current token.
3481 * @param yyscanner The scanner object.
3484 char *_mesa_glsl_get_text (yyscan_t yyscanner
)
3486 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3490 /** Set the user-defined data. This data is never touched by the scanner.
3491 * @param user_defined The data to be associated with this scanner.
3492 * @param yyscanner The scanner object.
3494 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
3496 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3497 yyextra
= user_defined
;
3500 /** Set the current line number.
3501 * @param line_number
3502 * @param yyscanner The scanner object.
3504 void _mesa_glsl_set_lineno (int line_number
, yyscan_t yyscanner
)
3506 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3508 /* lineno is only valid if an input buffer exists. */
3509 if (! YY_CURRENT_BUFFER
)
3510 yy_fatal_error( "_mesa_glsl_set_lineno called with no buffer" , yyscanner
);
3512 yylineno
= line_number
;
3515 /** Set the current column.
3516 * @param line_number
3517 * @param yyscanner The scanner object.
3519 void _mesa_glsl_set_column (int column_no
, yyscan_t yyscanner
)
3521 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3523 /* column is only valid if an input buffer exists. */
3524 if (! YY_CURRENT_BUFFER
)
3525 yy_fatal_error( "_mesa_glsl_set_column called with no buffer" , yyscanner
);
3527 yycolumn
= column_no
;
3530 /** Set the input stream. This does not discard the current
3532 * @param in_str A readable stream.
3533 * @param yyscanner The scanner object.
3534 * @see _mesa_glsl__switch_to_buffer
3536 void _mesa_glsl_set_in (FILE * in_str
, yyscan_t yyscanner
)
3538 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3542 void _mesa_glsl_set_out (FILE * out_str
, yyscan_t yyscanner
)
3544 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3548 int _mesa_glsl_get_debug (yyscan_t yyscanner
)
3550 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3551 return yy_flex_debug
;
3554 void _mesa_glsl_set_debug (int bdebug
, yyscan_t yyscanner
)
3556 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3557 yy_flex_debug
= bdebug
;
3560 /* Accessor methods for yylval and yylloc */
3562 YYSTYPE
* _mesa_glsl_get_lval (yyscan_t yyscanner
)
3564 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3568 void _mesa_glsl_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3570 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3571 yylval
= yylval_param
;
3574 YYLTYPE
*_mesa_glsl_get_lloc (yyscan_t yyscanner
)
3576 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3580 void _mesa_glsl_set_lloc (YYLTYPE
* yylloc_param
, yyscan_t yyscanner
)
3582 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3583 yylloc
= yylloc_param
;
3586 /* User-visible API */
3588 /* _mesa_glsl_lex_init is special because it creates the scanner itself, so it is
3589 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3590 * That's why we explicitly handle the declaration, instead of using our macros.
3593 int _mesa_glsl_lex_init(yyscan_t
* ptr_yy_globals
)
3596 if (ptr_yy_globals
== NULL
){
3601 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), NULL
);
3603 if (*ptr_yy_globals
== NULL
){
3608 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3609 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3611 return yy_init_globals ( *ptr_yy_globals
);
3614 /* _mesa_glsl_lex_init_extra has the same functionality as _mesa_glsl_lex_init, but follows the
3615 * convention of taking the scanner as the last argument. Note however, that
3616 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3617 * is the reason, too, why this function also must handle its own declaration).
3618 * The user defined value in the first argument will be available to _mesa_glsl_alloc in
3619 * the yyextra field.
3622 int _mesa_glsl_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3625 struct yyguts_t dummy_yyguts
;
3627 _mesa_glsl_set_extra (yy_user_defined
, &dummy_yyguts
);
3629 if (ptr_yy_globals
== NULL
){
3634 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3636 if (*ptr_yy_globals
== NULL
){
3641 /* By setting to 0xAA, we expose bugs in
3642 yy_init_globals. Leave at 0x00 for releases. */
3643 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3645 _mesa_glsl_set_extra (yy_user_defined
, *ptr_yy_globals
);
3647 return yy_init_globals ( *ptr_yy_globals
);
3650 static int yy_init_globals (yyscan_t yyscanner
)
3652 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3653 /* Initialization is the same as for the non-reentrant scanner.
3654 * This function is called from _mesa_glsl_lex_destroy(), so don't allocate here.
3657 yyg
->yy_buffer_stack
= 0;
3658 yyg
->yy_buffer_stack_top
= 0;
3659 yyg
->yy_buffer_stack_max
= 0;
3660 yyg
->yy_c_buf_p
= (char *) 0;
3664 yyg
->yy_start_stack_ptr
= 0;
3665 yyg
->yy_start_stack_depth
= 0;
3666 yyg
->yy_start_stack
= NULL
;
3668 /* Defined in main.c */
3677 /* For future reference: Set errno on error, since we are called by
3678 * _mesa_glsl_lex_init()
3683 /* _mesa_glsl_lex_destroy is for both reentrant and non-reentrant scanners. */
3684 int _mesa_glsl_lex_destroy (yyscan_t yyscanner
)
3686 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3688 /* Pop the buffer stack, destroying each element. */
3689 while(YY_CURRENT_BUFFER
){
3690 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3691 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3692 _mesa_glsl_pop_buffer_state(yyscanner
);
3695 /* Destroy the stack itself. */
3696 _mesa_glsl_free(yyg
->yy_buffer_stack
,yyscanner
);
3697 yyg
->yy_buffer_stack
= NULL
;
3699 /* Destroy the start condition stack. */
3700 _mesa_glsl_free(yyg
->yy_start_stack
,yyscanner
);
3701 yyg
->yy_start_stack
= NULL
;
3703 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3704 * _mesa_glsl_lex() is called, initialization will occur. */
3705 yy_init_globals( yyscanner
);
3707 /* Destroy the main struct (reentrant only). */
3708 _mesa_glsl_free ( yyscanner
, yyscanner
);
3714 * Internal utility routines.
3718 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3721 for ( i
= 0; i
< n
; ++i
)
3726 #ifdef YY_NEED_STRLEN
3727 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3730 for ( n
= 0; s
[n
]; ++n
)
3737 void *_mesa_glsl_alloc (yy_size_t size
, yyscan_t yyscanner
)
3739 return (void *) malloc( size
);
3742 void *_mesa_glsl_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3744 /* The cast to (char *) in the following accommodates both
3745 * implementations that use char* generic pointers, and those
3746 * that use void* generic pointers. It works with the latter
3747 * because both ANSI C and C++ allow castless assignment from
3748 * any pointer type to void*, and deal with argument conversions
3749 * as though doing an assignment.
3751 return (void *) realloc( (char *) ptr
, size
);
3754 void _mesa_glsl_free (void * ptr
, yyscan_t yyscanner
)
3756 free( (char *) ptr
); /* see _mesa_glsl_realloc() for (char *) cast */
3759 #define YYTABLES_NAME "yytables"
3761 #line 482 "glsl_lexer.ll"
3766 classify_identifier(struct _mesa_glsl_parse_state
*state
, const char *name
)
3768 if (state
->symbols
->get_variable(name
) || state
->symbols
->get_function(name
))
3770 else if (state
->symbols
->get_type(name
))
3771 return TYPE_IDENTIFIER
;
3773 return NEW_IDENTIFIER
;
3777 _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state
*state
, const char *string
)
3779 _mesa_glsl_lex_init_extra(state
,& state
->scanner
);
3780 _mesa_glsl__scan_string(string
,state
->scanner
);
3784 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state
*state
)
3786 _mesa_glsl_lex_destroy(state
->scanner
);