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 210
353 #define YY_END_OF_BUFFER 211
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
[836] =
363 0, 0, 16, 16, 0, 0, 211, 209, 1, 21,
364 209, 209, 209, 209, 209, 209, 209, 209, 120, 118,
365 209, 209, 209, 208, 209, 208, 208, 208, 208, 208,
366 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
367 208, 208, 208, 208, 208, 209, 1, 209, 210, 16,
368 20, 210, 19, 17, 18, 14, 13, 1, 102, 111,
369 103, 114, 108, 97, 110, 98, 117, 122, 109, 123,
370 120, 0, 0, 125, 120, 0, 118, 118, 106, 99,
371 101, 100, 107, 208, 115, 105, 208, 208, 208, 208,
372 208, 208, 208, 208, 208, 208, 208, 208, 30, 208,
374 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
375 208, 208, 34, 208, 208, 61, 208, 208, 208, 208,
376 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
377 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
378 208, 208, 208, 208, 208, 208, 208, 208, 208, 116,
379 104, 1, 0, 0, 2, 0, 0, 0, 0, 16,
380 15, 19, 18, 0, 122, 121, 0, 123, 0, 124,
381 119, 112, 113, 208, 128, 208, 208, 208, 208, 208,
382 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
383 208, 208, 208, 208, 208, 208, 33, 208, 208, 208,
385 208, 208, 208, 208, 208, 208, 208, 26, 208, 208,
386 208, 208, 208, 208, 208, 208, 208, 208, 208, 62,
387 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
388 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
389 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
390 0, 0, 0, 0, 15, 0, 122, 0, 121, 0,
391 123, 124, 119, 208, 208, 24, 208, 208, 175, 168,
392 208, 208, 208, 208, 208, 208, 208, 208, 208, 32,
393 131, 208, 208, 208, 208, 68, 208, 208, 136, 150,
394 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
396 208, 208, 147, 171, 49, 50, 51, 208, 208, 208,
397 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
398 208, 208, 208, 208, 208, 208, 208, 134, 126, 208,
399 208, 27, 208, 208, 208, 208, 208, 208, 208, 46,
400 47, 48, 95, 208, 208, 0, 0, 0, 0, 0,
401 121, 208, 208, 28, 37, 38, 39, 208, 129, 208,
402 23, 208, 208, 208, 208, 158, 159, 160, 208, 127,
403 208, 151, 25, 161, 162, 163, 173, 155, 156, 157,
404 208, 208, 208, 63, 153, 208, 208, 208, 40, 41,
405 42, 208, 208, 208, 208, 208, 208, 208, 208, 208,
407 208, 208, 208, 208, 208, 208, 208, 148, 208, 208,
408 208, 208, 208, 208, 208, 208, 208, 208, 130, 208,
409 208, 170, 43, 44, 45, 208, 208, 31, 0, 0,
410 0, 0, 178, 208, 208, 176, 208, 208, 208, 149,
411 144, 181, 208, 208, 208, 208, 208, 208, 139, 208,
412 208, 208, 96, 52, 53, 54, 55, 56, 57, 58,
413 59, 60, 208, 208, 208, 208, 154, 135, 208, 208,
414 142, 36, 208, 208, 167, 69, 143, 94, 179, 137,
415 208, 208, 208, 208, 208, 208, 208, 208, 0, 0,
416 0, 0, 208, 208, 208, 138, 35, 208, 208, 208,
418 208, 208, 208, 182, 183, 184, 208, 208, 208, 208,
419 208, 172, 208, 208, 208, 208, 208, 208, 208, 208,
420 132, 208, 208, 208, 208, 208, 64, 208, 208, 65,
421 208, 0, 0, 0, 0, 0, 208, 66, 29, 145,
422 186, 187, 188, 208, 208, 208, 208, 208, 208, 208,
423 208, 208, 208, 208, 208, 140, 208, 208, 208, 208,
424 208, 208, 208, 208, 208, 133, 190, 191, 192, 208,
425 208, 152, 208, 141, 0, 0, 6, 0, 0, 0,
426 12, 3, 22, 208, 208, 208, 208, 208, 208, 208,
427 208, 208, 185, 146, 67, 208, 208, 208, 208, 169,
429 208, 177, 174, 207, 71, 72, 73, 208, 208, 208,
430 208, 208, 208, 208, 208, 208, 208, 0, 0, 0,
431 0, 0, 0, 0, 208, 208, 208, 189, 208, 208,
432 208, 208, 208, 82, 83, 84, 208, 208, 208, 208,
433 208, 208, 208, 208, 208, 208, 208, 208, 208, 193,
434 88, 89, 90, 208, 4, 0, 5, 0, 0, 0,
435 0, 0, 0, 208, 208, 208, 208, 208, 208, 208,
436 204, 208, 208, 208, 208, 208, 208, 208, 208, 208,
437 208, 208, 74, 208, 208, 208, 208, 208, 208, 0,
438 0, 0, 0, 208, 208, 205, 194, 208, 195, 208,
440 208, 208, 85, 208, 208, 208, 208, 208, 208, 208,
441 208, 208, 208, 208, 206, 208, 208, 91, 0, 0,
442 0, 196, 197, 208, 200, 208, 201, 208, 208, 70,
443 208, 208, 208, 164, 208, 165, 180, 208, 198, 199,
444 208, 208, 0, 0, 0, 208, 208, 208, 208, 75,
445 208, 76, 208, 208, 208, 208, 208, 0, 0, 0,
446 0, 208, 208, 86, 87, 208, 77, 208, 208, 78,
447 208, 92, 93, 0, 0, 0, 0, 208, 208, 208,
448 208, 208, 208, 0, 0, 0, 0, 208, 208, 208,
449 208, 208, 79, 0, 0, 0, 7, 0, 0, 202,
451 203, 208, 208, 208, 0, 0, 8, 0, 0, 208,
452 208, 166, 0, 0, 0, 80, 81, 0, 0, 0,
453 9, 0, 0, 10, 0, 0, 0, 0, 0, 0,
457 static yyconst flex_int32_t yy_ec
[256] =
459 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
460 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
461 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
462 1, 2, 5, 1, 6, 1, 7, 8, 1, 9,
463 10, 11, 12, 1, 13, 14, 15, 16, 17, 18,
464 19, 20, 21, 21, 21, 22, 22, 23, 1, 24,
465 25, 26, 1, 1, 27, 28, 29, 30, 31, 32,
466 33, 34, 34, 34, 34, 35, 34, 34, 34, 34,
467 34, 36, 37, 38, 39, 34, 34, 40, 34, 34,
468 1, 1, 1, 41, 42, 1, 43, 44, 45, 46,
470 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
471 57, 58, 34, 59, 60, 61, 62, 63, 64, 65,
472 66, 67, 1, 68, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
478 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
489 static yyconst flex_int32_t yy_meta
[69] =
491 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
492 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
493 3, 3, 1, 1, 1, 1, 4, 4, 4, 4,
494 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
495 1, 5, 4, 4, 4, 4, 3, 3, 5, 5,
496 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
497 5, 5, 5, 5, 5, 5, 5, 1
500 static yyconst flex_int16_t yy_base
[845] =
502 0, 67, 73, 0, 1210, 1209, 1211, 1214, 68, 1214,
503 1185, 1184, 134, 1183, 131, 132, 130, 1182, 146, 198,
504 129, 1181, 144, 0, 130, 113, 124, 141, 150, 126,
505 181, 1148, 159, 192, 118, 129, 146, 1142, 147, 174,
506 206, 192, 203, 222, 1153, 203, 221, 231, 1214, 260,
507 1214, 1187, 279, 1214, 0, 1214, 1214, 270, 1214, 1214,
508 1214, 1214, 1214, 1214, 1214, 1214, 1214, 244, 1214, 255,
509 139, 290, 307, 1214, 1214, 0, 0, 1214, 1176, 1214,
510 1214, 1214, 1175, 0, 1214, 1214, 1138, 1143, 1136, 1139,
511 1148, 1147, 1133, 1136, 1148, 144, 1142, 1129, 1126, 1140,
513 1126, 1123, 1123, 1129, 219, 193, 1123, 1134, 1119, 1125,
514 1129, 1130, 0, 1121, 1132, 278, 1131, 1126, 1106, 224,
515 1110, 1124, 1114, 232, 1107, 271, 1120, 1122, 1104, 1100,
516 1108, 1105, 1094, 1103, 234, 1101, 1107, 1102, 1105, 1093,
517 1096, 226, 145, 262, 1106, 1093, 1106, 263, 1099, 1214,
518 1214, 338, 331, 343, 1214, 1084, 1097, 1088, 1099, 345,
519 0, 334, 0, 345, 1214, 328, 391, 1214, 352, 398,
520 338, 1214, 1214, 1094, 0, 1085, 1089, 1099, 1096, 332,
521 1079, 1079, 1083, 320, 1094, 1091, 1091, 1089, 1086, 1077,
522 1084, 1070, 1068, 1081, 1066, 1083, 0, 1080, 1067, 1075,
524 1072, 1076, 1077, 1070, 1067, 1055, 1054, 1068, 1071, 1058,
525 1067, 1054, 1061, 1051, 364, 1057, 1060, 1050, 1058, 1046,
526 1050, 1041, 1056, 1046, 1037, 1056, 1039, 1037, 1048, 1037,
527 1032, 1030, 1044, 1029, 1031, 1028, 1040, 1039, 1042, 1023,
528 338, 1032, 1027, 1025, 1035, 1013, 403, 1032, 1034, 1022,
529 1014, 1018, 1030, 1013, 0, 415, 422, 439, 1214, 446,
530 455, 1214, 1214, 1008, 1019, 0, 1016, 406, 0, 0,
531 1009, 1007, 1009, 1004, 1013, 1001, 1019, 1007, 409, 0,
532 0, 1001, 1012, 1011, 1011, 0, 995, 429, 0, 0,
533 997, 460, 1005, 1006, 996, 990, 989, 990, 989, 989,
535 463, 984, 0, 0, 980, 979, 978, 980, 981, 986,
536 980, 976, 990, 985, 984, 983, 974, 977, 977, 969,
537 972, 967, 976, 981, 966, 979, 969, 0, 0, 976,
538 972, 0, 963, 963, 969, 959, 967, 466, 964, 0,
539 0, 0, 0, 953, 966, 965, 964, 961, 949, 472,
540 479, 961, 963, 0, 0, 0, 0, 949, 0, 949,
541 0, 948, 949, 943, 954, 0, 0, 0, 944, 0,
542 940, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543 951, 487, 950, 0, 0, 948, 944, 940, 0, 0,
544 0, 932, 489, 494, 499, 937, 933, 939, 929, 927,
546 941, 925, 925, 939, 927, 939, 934, 0, 932, 929,
547 933, 916, 918, 925, 931, 926, 925, 912, 0, 914,
548 915, 0, 0, 0, 0, 912, 916, 0, 910, 963,
549 909, 912, 0, 900, 910, 0, 898, 898, 912, 0,
550 914, 0, 503, 926, 925, 924, 891, 890, 0, 908,
551 907, 902, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 890, 904, 890, 887, 0, 0, 893, 892,
553 0, 0, 890, 882, 0, 0, 0, 0, 0, 0,
554 879, 891, 506, 883, 890, 889, 886, 880, 873, 524,
555 889, 874, 869, 883, 881, 0, 0, 873, 896, 895,
557 894, 861, 860, 361, 365, 0, 873, 876, 874, 862,
558 858, 0, 871, 868, 867, 856, 855, 854, 519, 863,
559 0, 879, 878, 877, 844, 843, 0, 858, 844, 0,
560 855, 850, 547, 553, 898, 843, 851, 0, 0, 0,
561 870, 869, 0, 847, 850, 834, 842, 832, 840, 841,
562 841, 840, 825, 559, 838, 0, 839, 827, 826, 822,
563 850, 849, 848, 815, 814, 0, 848, 847, 0, 825,
564 828, 0, 562, 0, 814, 580, 1214, 587, 0, 607,
565 584, 1214, 0, 811, 810, 820, 820, 807, 822, 805,
566 820, 815, 0, 0, 0, 831, 830, 829, 796, 0,
568 796, 0, 0, 0, 502, 524, 820, 807, 810, 794,
569 793, 803, 803, 819, 818, 817, 784, 789, 615, 640,
570 550, 806, 796, 784, 782, 781, 792, 0, 795, 791,
571 793, 789, 775, 806, 805, 0, 787, 779, 770, 778,
572 768, 779, 775, 777, 775, 775, 762, 761, 772, 0,
573 791, 790, 0, 772, 1214, 555, 1214, 647, 0, 667,
574 785, 770, 752, 769, 768, 751, 743, 751, 741, 749,
575 0, 746, 745, 756, 739, 742, 757, 740, 753, 754,
576 751, 748, 757, 750, 749, 732, 731, 730, 741, 582,
577 754, 724, 734, 718, 717, 0, 745, 717, 743, 715,
579 719, 718, 0, 729, 732, 728, 730, 711, 725, 709,
580 710, 718, 701, 700, 0, 706, 705, 0, 728, 713,
581 706, 0, 0, 710, 0, 709, 0, 715, 714, 0,
582 690, 698, 688, 716, 695, 0, 0, 708, 0, 0,
583 707, 706, 746, 611, 696, 703, 702, 678, 677, 705,
584 677, 703, 689, 674, 691, 670, 669, 190, 613, 557,
585 667, 687, 686, 0, 0, 681, 0, 680, 686, 0,
586 671, 0, 0, 671, 590, 343, 672, 645, 644, 654,
587 635, 631, 612, 612, 604, 443, 635, 576, 575, 549,
588 25, 87, 0, 183, 500, 552, 1214, 636, 591, 0,
590 0, 196, 258, 254, 272, 609, 1214, 614, 598, 279,
591 284, 0, 336, 348, 671, 0, 0, 362, 672, 688,
592 1214, 394, 689, 1214, 408, 670, 691, 649, 651, 474,
593 476, 693, 694, 1214, 1214, 704, 707, 710, 530, 591,
597 static yyconst flex_int16_t yy_def
[845] =
599 835, 1, 835, 3, 836, 836, 835, 835, 835, 835,
600 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
601 835, 835, 835, 837, 835, 837, 837, 837, 837, 837,
602 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
603 837, 837, 837, 837, 837, 835, 835, 835, 835, 835,
604 835, 835, 835, 835, 838, 835, 835, 835, 835, 835,
605 835, 835, 835, 835, 835, 835, 835, 839, 835, 840,
606 19, 835, 835, 835, 835, 841, 20, 835, 835, 835,
607 835, 835, 835, 837, 835, 835, 837, 837, 837, 837,
608 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
610 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
611 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
612 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
613 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
614 837, 837, 837, 837, 837, 837, 837, 837, 837, 835,
615 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
616 842, 835, 838, 835, 835, 840, 835, 835, 835, 835,
617 841, 835, 835, 837, 837, 837, 837, 837, 837, 837,
618 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
619 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
621 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
622 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
623 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
624 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
625 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
626 835, 835, 835, 835, 842, 835, 835, 835, 835, 835,
627 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
628 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
629 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
630 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
632 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
633 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
634 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
635 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
636 837, 837, 837, 837, 837, 835, 835, 835, 835, 835,
637 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
638 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
639 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
640 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
641 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
643 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
644 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
645 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
646 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
647 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
648 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
649 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
650 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
651 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
652 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
654 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
655 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
656 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
657 837, 835, 835, 835, 835, 835, 837, 837, 837, 837,
658 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
659 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
660 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
661 837, 837, 837, 837, 835, 835, 835, 835, 843, 835,
662 835, 835, 837, 837, 837, 837, 837, 837, 837, 837,
663 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
665 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
666 837, 837, 837, 837, 837, 837, 837, 835, 835, 835,
667 843, 835, 835, 835, 837, 837, 837, 837, 837, 837,
668 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
669 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
670 837, 837, 837, 837, 835, 835, 835, 835, 844, 835,
671 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
672 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
673 837, 837, 837, 837, 837, 837, 837, 837, 837, 844,
674 835, 835, 835, 837, 837, 837, 837, 837, 837, 837,
676 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
677 837, 837, 837, 837, 837, 837, 837, 837, 835, 835,
678 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
679 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
680 837, 837, 835, 835, 835, 837, 837, 837, 837, 837,
681 837, 837, 837, 837, 837, 837, 837, 835, 835, 835,
682 835, 837, 837, 837, 837, 837, 837, 837, 837, 837,
683 837, 837, 837, 835, 835, 835, 835, 837, 837, 837,
684 837, 837, 837, 835, 835, 835, 835, 837, 837, 837,
685 837, 837, 837, 835, 835, 835, 835, 835, 835, 837,
687 837, 837, 837, 837, 835, 835, 835, 835, 835, 837,
688 837, 837, 835, 835, 835, 837, 837, 835, 835, 835,
689 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
690 835, 835, 835, 835, 0, 835, 835, 835, 835, 835,
694 static yyconst flex_int16_t yy_nxt
[1283] =
696 8, 9, 10, 9, 11, 8, 12, 13, 8, 8,
697 14, 15, 16, 17, 18, 19, 20, 20, 20, 20,
698 20, 20, 8, 21, 22, 23, 24, 24, 24, 24,
699 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
700 25, 24, 26, 27, 28, 29, 30, 31, 32, 33,
701 34, 24, 24, 35, 36, 37, 38, 39, 40, 41,
702 42, 43, 44, 45, 24, 24, 24, 46, 47, 58,
703 803, 58, 48, 49, 50, 51, 50, 49, 49, 49,
704 49, 49, 49, 49, 49, 49, 49, 52, 49, 53,
705 53, 53, 53, 53, 53, 54, 49, 49, 49, 55,
707 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
708 55, 55, 55, 49, 55, 55, 55, 55, 55, 55,
709 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
710 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
711 49, 61, 64, 804, 66, 68, 68, 68, 68, 68,
712 68, 68, 79, 80, 85, 65, 67, 87, 62, 70,
713 119, 71, 71, 71, 71, 71, 71, 72, 82, 83,
714 86, 121, 88, 89, 120, 122, 73, 74, 835, 101,
715 90, 102, 91, 93, 75, 76, 92, 94, 123, 126,
716 103, 758, 73, 74, 95, 241, 97, 96, 183, 184,
718 98, 110, 124, 835, 242, 127, 99, 75, 128, 111,
719 76, 70, 100, 77, 77, 77, 77, 77, 77, 77,
720 129, 112, 152, 104, 58, 805, 153, 150, 73, 74,
721 130, 105, 154, 155, 106, 195, 78, 107, 138, 113,
722 774, 139, 114, 108, 73, 74, 115, 116, 131, 196,
723 140, 117, 810, 142, 118, 132, 133, 141, 143, 78,
724 134, 160, 144, 160, 146, 145, 135, 136, 147, 137,
725 151, 58, 193, 58, 164, 165, 231, 156, 148, 213,
726 239, 240, 218, 194, 157, 167, 168, 214, 158, 219,
727 164, 165, 232, 159, 162, 162, 162, 162, 162, 162,
729 162, 167, 168, 70, 243, 72, 72, 72, 72, 72,
730 72, 72, 244, 248, 811, 221, 249, 812, 169, 169,
731 73, 74, 170, 170, 170, 170, 170, 170, 170, 222,
732 813, 205, 154, 155, 206, 207, 73, 74, 208, 152,
733 209, 58, 816, 153, 154, 155, 160, 817, 160, 162,
734 162, 162, 162, 162, 162, 162, 256, 256, 258, 259,
735 257, 257, 257, 257, 257, 257, 257, 170, 170, 170,
736 170, 170, 170, 170, 258, 259, 263, 156, 269, 274,
737 275, 305, 306, 307, 157, 333, 818, 546, 158, 156,
738 785, 548, 270, 159, 334, 819, 157, 547, 786, 263,
740 158, 549, 260, 260, 822, 159, 261, 261, 261, 261,
741 261, 261, 261, 170, 170, 170, 170, 170, 170, 170,
742 340, 341, 342, 355, 356, 357, 366, 367, 368, 262,
743 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
744 257, 257, 257, 257, 796, 262, 374, 375, 376, 825,
745 350, 350, 797, 165, 351, 351, 351, 351, 351, 351,
746 351, 261, 261, 261, 261, 261, 261, 261, 826, 165,
747 261, 261, 261, 261, 261, 261, 261, 378, 379, 380,
748 389, 390, 391, 423, 424, 425, 168, 351, 351, 351,
749 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
751 351, 806, 168, 444, 445, 446, 454, 455, 456, 807,
752 259, 457, 458, 459, 447, 448, 460, 461, 462, 499,
753 500, 501, 522, 523, 524, 490, 259, 831, 639, 832,
754 502, 503, 68, 525, 526, 561, 562, 563, 640, 533,
755 534, 534, 534, 534, 534, 534, 564, 565, 576, 577,
756 641, 576, 577, 796, 576, 577, 656, 657, 775, 642,
757 643, 797, 578, 578, 578, 578, 578, 578, 580, 580,
758 580, 580, 580, 580, 580, 596, 597, 598, 614, 615,
759 616, 576, 577, 656, 657, 581, 579, 599, 576, 577,
760 617, 775, 808, 166, 802, 619, 620, 620, 620, 620,
762 620, 620, 578, 578, 578, 578, 578, 578, 576, 577,
763 806, 579, 759, 776, 759, 808, 656, 657, 807, 760,
764 622, 760, 580, 580, 580, 580, 580, 580, 580, 623,
765 658, 658, 658, 658, 658, 658, 798, 798, 801, 800,
766 624, 656, 657, 799, 799, 814, 776, 809, 656, 657,
767 829, 795, 829, 815, 659, 660, 660, 660, 660, 660,
768 660, 660, 658, 658, 658, 658, 658, 658, 656, 657,
769 809, 827, 820, 823, 794, 793, 792, 791, 828, 659,
770 821, 824, 660, 660, 660, 660, 660, 660, 660, 820,
771 823, 830, 827, 830, 833, 833, 790, 821, 824, 828,
773 789, 788, 834, 834, 56, 56, 56, 56, 56, 84,
774 84, 84, 163, 163, 163, 171, 171, 255, 787, 255,
775 255, 255, 621, 621, 690, 690, 784, 783, 782, 781,
776 780, 779, 778, 777, 773, 772, 771, 770, 769, 768,
777 767, 766, 765, 764, 763, 762, 761, 758, 757, 756,
778 755, 754, 753, 752, 751, 750, 749, 748, 747, 746,
779 745, 744, 743, 742, 741, 740, 739, 738, 737, 736,
780 735, 734, 733, 732, 731, 730, 729, 728, 727, 726,
781 725, 724, 723, 722, 721, 720, 719, 718, 717, 716,
782 715, 714, 713, 712, 711, 710, 709, 708, 707, 706,
784 705, 704, 703, 702, 701, 700, 699, 698, 697, 696,
785 695, 694, 693, 692, 691, 689, 688, 687, 686, 685,
786 684, 683, 682, 681, 680, 679, 678, 677, 676, 675,
787 674, 673, 672, 671, 670, 669, 668, 667, 666, 665,
788 664, 663, 662, 661, 655, 654, 653, 652, 651, 650,
789 649, 648, 647, 646, 645, 644, 638, 637, 636, 635,
790 634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
791 618, 613, 612, 611, 610, 609, 608, 607, 606, 605,
792 604, 603, 602, 601, 600, 595, 594, 593, 592, 591,
793 590, 589, 588, 587, 586, 585, 584, 583, 582, 581,
795 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
796 560, 559, 558, 557, 556, 555, 554, 553, 552, 551,
797 550, 545, 544, 543, 542, 541, 540, 539, 538, 537,
798 536, 535, 532, 531, 530, 529, 528, 527, 521, 520,
799 519, 518, 517, 516, 515, 514, 513, 512, 511, 510,
800 509, 508, 507, 506, 505, 504, 498, 497, 496, 495,
801 494, 493, 492, 491, 490, 489, 488, 487, 486, 485,
802 484, 483, 482, 481, 480, 479, 478, 477, 476, 475,
803 474, 473, 472, 471, 470, 469, 468, 467, 466, 465,
804 464, 463, 453, 452, 451, 450, 449, 443, 442, 441,
806 440, 439, 438, 437, 436, 435, 434, 433, 432, 431,
807 430, 429, 428, 427, 426, 422, 421, 420, 419, 418,
808 417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
809 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
810 397, 396, 395, 394, 393, 392, 388, 387, 386, 385,
811 384, 383, 382, 381, 377, 373, 372, 371, 370, 369,
812 365, 364, 363, 362, 361, 360, 359, 358, 354, 353,
813 352, 349, 348, 347, 346, 345, 344, 343, 339, 338,
814 337, 336, 335, 332, 331, 330, 329, 328, 327, 326,
815 325, 324, 323, 322, 321, 320, 319, 318, 317, 316,
817 315, 314, 313, 312, 311, 310, 309, 308, 304, 303,
818 302, 301, 300, 299, 298, 297, 296, 295, 294, 293,
819 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
820 282, 281, 280, 279, 278, 277, 276, 273, 272, 271,
821 268, 267, 266, 265, 264, 254, 253, 252, 251, 250,
822 247, 246, 245, 238, 237, 236, 235, 234, 233, 230,
823 229, 228, 227, 226, 225, 224, 223, 220, 217, 216,
824 215, 212, 211, 210, 204, 203, 202, 201, 200, 199,
825 198, 197, 192, 191, 190, 189, 188, 187, 186, 185,
826 182, 181, 180, 179, 178, 177, 176, 175, 174, 173,
828 172, 161, 149, 125, 109, 81, 69, 63, 60, 59,
829 835, 57, 57, 7, 835, 835, 835, 835, 835, 835,
830 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
831 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
832 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
833 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
834 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
835 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
839 static yyconst flex_int16_t yy_chk
[1283] =
841 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
842 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
843 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
844 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
845 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
846 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
847 1, 1, 1, 1, 1, 1, 1, 1, 2, 9,
848 791, 9, 2, 3, 3, 3, 3, 3, 3, 3,
849 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
850 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
852 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
853 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
854 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
855 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
856 3, 13, 15, 792, 16, 17, 17, 17, 17, 17,
857 17, 17, 21, 21, 25, 15, 16, 26, 13, 19,
858 35, 19, 19, 19, 19, 19, 19, 19, 23, 23,
859 25, 36, 26, 26, 35, 36, 19, 19, 71, 30,
860 27, 30, 27, 28, 19, 19, 27, 28, 37, 39,
861 30, 758, 19, 19, 28, 143, 29, 28, 96, 96,
863 29, 33, 37, 71, 143, 39, 29, 19, 39, 33,
864 19, 20, 29, 20, 20, 20, 20, 20, 20, 20,
865 40, 33, 47, 31, 47, 794, 47, 46, 20, 20,
866 40, 31, 48, 48, 31, 106, 20, 31, 42, 34,
867 758, 42, 34, 31, 20, 20, 34, 34, 41, 106,
868 42, 34, 802, 43, 34, 41, 41, 42, 43, 20,
869 41, 50, 43, 50, 44, 43, 41, 41, 44, 41,
870 46, 58, 105, 58, 68, 68, 135, 48, 44, 120,
871 142, 142, 124, 105, 48, 70, 70, 120, 48, 124,
872 68, 68, 135, 48, 53, 53, 53, 53, 53, 53,
874 53, 70, 70, 72, 144, 72, 72, 72, 72, 72,
875 72, 72, 144, 148, 803, 126, 148, 804, 73, 73,
876 72, 72, 73, 73, 73, 73, 73, 73, 73, 126,
877 805, 116, 153, 153, 116, 116, 72, 72, 116, 152,
878 116, 152, 810, 152, 154, 154, 160, 811, 160, 162,
879 162, 162, 162, 162, 162, 162, 164, 164, 166, 166,
880 164, 164, 164, 164, 164, 164, 164, 169, 169, 169,
881 169, 169, 169, 169, 166, 166, 171, 153, 180, 184,
882 184, 215, 215, 215, 153, 241, 813, 504, 153, 154,
883 776, 505, 180, 153, 241, 814, 154, 504, 776, 171,
885 154, 505, 167, 167, 818, 154, 167, 167, 167, 167,
886 167, 167, 167, 170, 170, 170, 170, 170, 170, 170,
887 247, 247, 247, 268, 268, 268, 279, 279, 279, 170,
888 256, 256, 256, 256, 256, 256, 256, 257, 257, 257,
889 257, 257, 257, 257, 786, 170, 288, 288, 288, 822,
890 258, 258, 786, 257, 258, 258, 258, 258, 258, 258,
891 258, 260, 260, 260, 260, 260, 260, 260, 825, 257,
892 261, 261, 261, 261, 261, 261, 261, 292, 292, 292,
893 301, 301, 301, 338, 338, 338, 261, 350, 350, 350,
894 350, 350, 350, 350, 351, 351, 351, 351, 351, 351,
896 351, 795, 261, 382, 382, 382, 393, 393, 393, 795,
897 351, 394, 394, 394, 382, 382, 395, 395, 395, 443,
898 443, 443, 483, 483, 483, 490, 351, 830, 605, 831,
899 443, 443, 839, 483, 483, 519, 519, 519, 605, 490,
900 490, 490, 490, 490, 490, 490, 519, 519, 533, 533,
901 606, 621, 621, 796, 534, 534, 656, 656, 760, 606,
902 606, 796, 533, 533, 533, 533, 533, 533, 534, 534,
903 534, 534, 534, 534, 534, 554, 554, 554, 573, 573,
904 573, 576, 576, 690, 690, 581, 533, 554, 578, 578,
905 573, 775, 799, 840, 790, 576, 576, 576, 576, 576,
907 576, 576, 578, 578, 578, 578, 578, 578, 580, 580,
908 806, 533, 744, 760, 759, 808, 619, 619, 806, 744,
909 581, 759, 580, 580, 580, 580, 580, 580, 580, 581,
910 619, 619, 619, 619, 619, 619, 787, 798, 789, 788,
911 581, 620, 620, 787, 798, 809, 775, 799, 658, 658,
912 828, 785, 829, 809, 619, 620, 620, 620, 620, 620,
913 620, 620, 658, 658, 658, 658, 658, 658, 660, 660,
914 808, 826, 815, 819, 784, 783, 782, 781, 826, 619,
915 815, 819, 660, 660, 660, 660, 660, 660, 660, 820,
916 823, 828, 827, 829, 832, 833, 780, 820, 823, 827,
918 779, 778, 832, 833, 836, 836, 836, 836, 836, 837,
919 837, 837, 838, 838, 838, 841, 841, 842, 777, 842,
920 842, 842, 843, 843, 844, 844, 774, 771, 769, 768,
921 766, 763, 762, 761, 757, 756, 755, 754, 753, 752,
922 751, 750, 749, 748, 747, 746, 745, 743, 742, 741,
923 738, 735, 734, 733, 732, 731, 729, 728, 726, 724,
924 721, 720, 719, 717, 716, 714, 713, 712, 711, 710,
925 709, 708, 707, 706, 705, 704, 702, 701, 700, 699,
926 698, 697, 695, 694, 693, 692, 691, 689, 688, 687,
927 686, 685, 684, 683, 682, 681, 680, 679, 678, 677,
929 676, 675, 674, 673, 672, 670, 669, 668, 667, 666,
930 665, 664, 663, 662, 661, 654, 652, 651, 649, 648,
931 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
932 637, 635, 634, 633, 632, 631, 630, 629, 627, 626,
933 625, 624, 623, 622, 618, 617, 616, 615, 614, 613,
934 612, 611, 610, 609, 608, 607, 601, 599, 598, 597,
935 596, 592, 591, 590, 589, 588, 587, 586, 585, 584,
936 575, 571, 570, 568, 567, 565, 564, 563, 562, 561,
937 560, 559, 558, 557, 555, 553, 552, 551, 550, 549,
938 548, 547, 546, 545, 544, 542, 541, 537, 536, 535,
940 532, 531, 529, 528, 526, 525, 524, 523, 522, 520,
941 518, 517, 516, 515, 514, 513, 511, 510, 509, 508,
942 507, 503, 502, 501, 500, 499, 498, 495, 494, 493,
943 492, 491, 489, 488, 487, 486, 485, 484, 482, 481,
944 474, 473, 470, 469, 466, 465, 464, 463, 452, 451,
945 450, 448, 447, 446, 445, 444, 441, 439, 438, 437,
946 435, 434, 432, 431, 430, 429, 427, 426, 421, 420,
947 418, 417, 416, 415, 414, 413, 412, 411, 410, 409,
948 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
949 397, 396, 392, 388, 387, 386, 383, 381, 371, 369,
951 365, 364, 363, 362, 360, 358, 353, 352, 349, 348,
952 347, 346, 345, 344, 339, 337, 336, 335, 334, 333,
953 331, 330, 327, 326, 325, 324, 323, 322, 321, 320,
954 319, 318, 317, 316, 315, 314, 313, 312, 311, 310,
955 309, 308, 307, 306, 305, 302, 300, 299, 298, 297,
956 296, 295, 294, 293, 291, 287, 285, 284, 283, 282,
957 278, 277, 276, 275, 274, 273, 272, 271, 267, 265,
958 264, 254, 253, 252, 251, 250, 249, 248, 246, 245,
959 244, 243, 242, 240, 239, 238, 237, 236, 235, 234,
960 233, 232, 231, 230, 229, 228, 227, 226, 225, 224,
962 223, 222, 221, 220, 219, 218, 217, 216, 214, 213,
963 212, 211, 210, 209, 208, 207, 206, 205, 204, 203,
964 202, 201, 200, 199, 198, 196, 195, 194, 193, 192,
965 191, 190, 189, 188, 187, 186, 185, 183, 182, 181,
966 179, 178, 177, 176, 174, 159, 158, 157, 156, 149,
967 147, 146, 145, 141, 140, 139, 138, 137, 136, 134,
968 133, 132, 131, 130, 129, 128, 127, 125, 123, 122,
969 121, 119, 118, 117, 115, 114, 112, 111, 110, 109,
970 108, 107, 104, 103, 102, 101, 100, 99, 98, 97,
971 95, 94, 93, 92, 91, 90, 89, 88, 87, 83,
973 79, 52, 45, 38, 32, 22, 18, 14, 12, 11,
974 7, 6, 5, 835, 835, 835, 835, 835, 835, 835,
975 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
976 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
977 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
978 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
979 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
980 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
984 /* The intent behind this definition is that it'll catch
985 * any uses of REJECT which flex missed.
987 #define REJECT reject_used_but_not_detected
988 #define yymore() yymore_used_but_not_detected
989 #define YY_MORE_ADJ 0
990 #define YY_RESTORE_YY_MORE_OFFSET
991 #line 1 "glsl_lexer.lpp"
992 #line 2 "glsl_lexer.lpp"
994 * Copyright © 2008, 2009 Intel Corporation
996 * Permission is hereby granted, free of charge, to any person obtaining a
997 * copy of this software and associated documentation files (the "Software"),
998 * to deal in the Software without restriction, including without limitation
999 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1000 * and/or sell copies of the Software, and to permit persons to whom the
1001 * Software is furnished to do so, subject to the following conditions:
1003 * The above copyright notice and this permission notice (including the next
1004 * paragraph) shall be included in all copies or substantial portions of the
1007 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1008 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1009 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1010 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1011 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1012 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1013 * DEALINGS IN THE SOFTWARE.
1018 #include "glsl_parser_extras.h"
1019 #include "glsl_parser.h"
1021 #define YY_USER_ACTION \
1023 yylloc->source = 0; \
1024 yylloc->first_column = yycolumn + 1; \
1025 yylloc->first_line = yylineno + 1; \
1026 yycolumn += yyleng; \
1029 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
1031 #define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
1033 /* A macro for handling reserved words and keywords across language versions.
1035 * Certain words start out as identifiers, become reserved words in
1036 * later language revisions, and finally become language keywords.
1038 * For example, consider the following lexer rule:
1039 * samplerBuffer KEYWORD(130, 140, SAMPLERBUFFER)
1041 * This means that "samplerBuffer" will be treated as:
1042 * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40
1043 * - a reserved word - error ...in GLSL >= 1.30
1044 * - an identifier ...in GLSL < 1.30
1046 #define KEYWORD(reserved_version, allowed_version, token) \
1048 if (yyextra->language_version >= allowed_version) { \
1050 } else if (yyextra->language_version >= reserved_version) { \
1051 _mesa_glsl_error(yylloc, yyextra, \
1052 "Illegal use of reserved word `%s'", yytext); \
1055 yylval->identifier = strdup(yytext); \
1056 return IDENTIFIER; \
1060 /* The ES macro can be used in KEYWORD checks:
1062 * word KEYWORD(110 || ES, 400, TOKEN)
1063 * ...means the word is reserved in GLSL ES 1.00, while
1065 * word KEYWORD(110, 130 || ES, TOKEN)
1066 * ...means the word is a legal keyword in GLSL ES 1.00.
1068 #define ES yyextra->es_shader
1070 #line 1071 "glsl_lexer.cpp"
1076 #define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
1078 /* Holds the entire state of the reentrant scanner. */
1082 /* User-defined. Not touched by flex. */
1083 YY_EXTRA_TYPE yyextra_r
;
1085 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1086 FILE *yyin_r
, *yyout_r
;
1087 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1088 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1089 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1096 int yy_did_buffer_switch_on_eof
;
1097 int yy_start_stack_ptr
;
1098 int yy_start_stack_depth
;
1099 int *yy_start_stack
;
1100 yy_state_type yy_last_accepting_state
;
1101 char* yy_last_accepting_cpos
;
1104 int yy_flex_debug_r
;
1114 }; /* end struct yyguts_t */
1116 static int yy_init_globals (yyscan_t yyscanner
);
1118 /* This must go here because YYSTYPE and YYLTYPE are included
1119 * from bison output in section 1.*/
1120 # define yylval yyg->yylval_r
1122 # define yylloc yyg->yylloc_r
1124 int _mesa_glsl_lex_init (yyscan_t
* scanner
);
1126 int _mesa_glsl_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1128 /* Accessor methods to globals.
1129 These are made visible to non-reentrant scanners for convenience. */
1131 int _mesa_glsl_lex_destroy (yyscan_t yyscanner
);
1133 int _mesa_glsl_get_debug (yyscan_t yyscanner
);
1135 void _mesa_glsl_set_debug (int debug_flag
,yyscan_t yyscanner
);
1137 YY_EXTRA_TYPE
_mesa_glsl_get_extra (yyscan_t yyscanner
);
1139 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1141 FILE *_mesa_glsl_get_in (yyscan_t yyscanner
);
1143 void _mesa_glsl_set_in (FILE * in_str
,yyscan_t yyscanner
);
1145 FILE *_mesa_glsl_get_out (yyscan_t yyscanner
);
1147 void _mesa_glsl_set_out (FILE * out_str
,yyscan_t yyscanner
);
1149 int _mesa_glsl_get_leng (yyscan_t yyscanner
);
1151 char *_mesa_glsl_get_text (yyscan_t yyscanner
);
1153 int _mesa_glsl_get_lineno (yyscan_t yyscanner
);
1155 void _mesa_glsl_set_lineno (int line_number
,yyscan_t yyscanner
);
1157 int _mesa_glsl_get_column (yyscan_t yyscanner
);
1159 void _mesa_glsl_set_column (int column_no
,yyscan_t yyscanner
);
1161 YYSTYPE
* _mesa_glsl_get_lval (yyscan_t yyscanner
);
1163 void _mesa_glsl_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1165 YYLTYPE
*_mesa_glsl_get_lloc (yyscan_t yyscanner
);
1167 void _mesa_glsl_set_lloc (YYLTYPE
* yylloc_param
,yyscan_t yyscanner
);
1169 /* Macros after this point can all be overridden by user definitions in
1173 #ifndef YY_SKIP_YYWRAP
1175 extern "C" int _mesa_glsl_wrap (yyscan_t yyscanner
);
1177 extern int _mesa_glsl_wrap (yyscan_t yyscanner
);
1182 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1185 #ifdef YY_NEED_STRLEN
1186 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1192 static int yyinput (yyscan_t yyscanner
);
1194 static int input (yyscan_t yyscanner
);
1199 /* Amount of stuff to slurp up with each read. */
1200 #ifndef YY_READ_BUF_SIZE
1201 #define YY_READ_BUF_SIZE 8192
1204 /* Copy whatever the last rule matched to the standard output. */
1206 /* This used to be an fputs(), but since the string might contain NUL's,
1207 * we now use fwrite().
1209 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1212 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1213 * is returned in "result".
1216 #define YY_INPUT(buf,result,max_size) \
1217 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1221 for ( n = 0; n < max_size && \
1222 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1223 buf[n] = (char) c; \
1225 buf[n++] = (char) c; \
1226 if ( c == EOF && ferror( yyin ) ) \
1227 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1233 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1235 if( errno != EINTR) \
1237 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1248 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1249 * we don't want an extra ';' after the "return" because that will cause
1250 * some compilers to complain about unreachable statements.
1253 #define yyterminate() return YY_NULL
1256 /* Number of entries by which start-condition stack grows. */
1257 #ifndef YY_START_STACK_INCR
1258 #define YY_START_STACK_INCR 25
1261 /* Report a fatal error. */
1262 #ifndef YY_FATAL_ERROR
1263 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1266 /* end tables serialization structures and prototypes */
1268 /* Default declaration of generated scanner - a define so the user can
1269 * easily add parameters.
1272 #define YY_DECL_IS_OURS 1
1274 extern int _mesa_glsl_lex \
1275 (YYSTYPE
* yylval_param
,YYLTYPE
* yylloc_param
,yyscan_t yyscanner
);
1277 #define YY_DECL int _mesa_glsl_lex \
1278 (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1279 #endif /* !YY_DECL */
1281 /* Code executed at the beginning of each rule, after yytext and yyleng
1284 #ifndef YY_USER_ACTION
1285 #define YY_USER_ACTION
1288 /* Code executed at the end of each rule. */
1290 #define YY_BREAK break;
1293 #define YY_RULE_SETUP \
1295 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1296 (yytext[yyleng - 1] == '\n'); \
1299 /** The main scanner function which does all the work.
1303 register yy_state_type yy_current_state
;
1304 register char *yy_cp
, *yy_bp
;
1305 register int yy_act
;
1306 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1308 #line 95 "glsl_lexer.lpp"
1311 #line 1312 "glsl_lexer.cpp"
1313 yylval
= yylval_param
;
1315 yylloc
= yylloc_param
;
1317 if ( !yyg
->yy_init
)
1325 if ( ! yyg
->yy_start
)
1326 yyg
->yy_start
= 1; /* first start state */
1334 if ( ! YY_CURRENT_BUFFER
) {
1335 _mesa_glsl_ensure_buffer_stack (yyscanner
);
1336 YY_CURRENT_BUFFER_LVALUE
=
1337 _mesa_glsl__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1340 _mesa_glsl__load_buffer_state(yyscanner
);
1343 while ( 1 ) /* loops until end-of-file is reached */
1345 yy_cp
= yyg
->yy_c_buf_p
;
1347 /* Support of yytext. */
1348 *yy_cp
= yyg
->yy_hold_char
;
1350 /* yy_bp points to the position in yy_ch_buf of the start of
1355 yy_current_state
= yyg
->yy_start
;
1356 yy_current_state
+= YY_AT_BOL();
1360 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1361 if ( yy_accept
[yy_current_state
] )
1363 yyg
->yy_last_accepting_state
= yy_current_state
;
1364 yyg
->yy_last_accepting_cpos
= yy_cp
;
1366 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1368 yy_current_state
= (int) yy_def
[yy_current_state
];
1369 if ( yy_current_state
>= 836 )
1370 yy_c
= yy_meta
[(unsigned int) yy_c
];
1372 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1375 while ( yy_current_state
!= 835 );
1376 yy_cp
= yyg
->yy_last_accepting_cpos
;
1377 yy_current_state
= yyg
->yy_last_accepting_state
;
1380 yy_act
= yy_accept
[yy_current_state
];
1382 YY_DO_BEFORE_ACTION
;
1384 do_action
: /* This label is used only to access EOF actions. */
1387 { /* beginning of action switch */
1388 case 0: /* must back up */
1389 /* undo the effects of YY_DO_BEFORE_ACTION */
1390 *yy_cp
= yyg
->yy_hold_char
;
1391 yy_cp
= yyg
->yy_last_accepting_cpos
;
1392 yy_current_state
= yyg
->yy_last_accepting_state
;
1393 goto yy_find_action
;
1397 #line 97 "glsl_lexer.lpp"
1400 /* Preprocessor tokens. */
1402 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1403 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1404 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1406 #line 100 "glsl_lexer.lpp"
1411 #line 101 "glsl_lexer.lpp"
1412 { BEGIN PP
; return VERSION
; }
1416 #line 102 "glsl_lexer.lpp"
1417 { BEGIN PP
; return EXTENSION
; }
1420 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1421 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1422 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1424 #line 103 "glsl_lexer.lpp"
1426 /* Eat characters until the first digit is
1430 while (!isdigit(*ptr
))
1433 /* Subtract one from the line number because
1434 * yylineno is zero-based instead of
1437 yylineno
= strtol(ptr
, &ptr
, 0) - 1;
1438 yylloc
->source
= strtol(ptr
, NULL
, 0);
1442 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1443 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1444 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1446 #line 118 "glsl_lexer.lpp"
1448 /* Eat characters until the first digit is
1452 while (!isdigit(*ptr
))
1455 /* Subtract one from the line number because
1456 * yylineno is zero-based instead of
1459 yylineno
= strtol(ptr
, &ptr
, 0) - 1;
1464 #line 132 "glsl_lexer.lpp"
1467 return PRAGMA_DEBUG_ON
;
1472 #line 136 "glsl_lexer.lpp"
1475 return PRAGMA_DEBUG_OFF
;
1480 #line 140 "glsl_lexer.lpp"
1483 return PRAGMA_OPTIMIZE_ON
;
1488 #line 144 "glsl_lexer.lpp"
1491 return PRAGMA_OPTIMIZE_OFF
;
1496 #line 148 "glsl_lexer.lpp"
1499 return PRAGMA_INVARIANT_ALL
;
1504 #line 152 "glsl_lexer.lpp"
1508 /* rule 13 can match eol */
1510 #line 154 "glsl_lexer.lpp"
1511 { BEGIN
0; yylineno
++; yycolumn
= 0; }
1515 #line 155 "glsl_lexer.lpp"
1520 #line 157 "glsl_lexer.lpp"
1525 #line 158 "glsl_lexer.lpp"
1530 #line 159 "glsl_lexer.lpp"
1535 #line 160 "glsl_lexer.lpp"
1537 yylval
->identifier
= strdup(yytext
);
1543 #line 164 "glsl_lexer.lpp"
1545 yylval
->n
= strtol(yytext
, NULL
, 10);
1550 /* rule 20 can match eol */
1552 #line 168 "glsl_lexer.lpp"
1553 { BEGIN
0; yylineno
++; yycolumn
= 0; return EOL
; }
1556 /* rule 21 can match eol */
1558 #line 170 "glsl_lexer.lpp"
1559 { yylineno
++; yycolumn
= 0; }
1563 #line 172 "glsl_lexer.lpp"
1568 #line 173 "glsl_lexer.lpp"
1573 #line 174 "glsl_lexer.lpp"
1578 #line 175 "glsl_lexer.lpp"
1583 #line 176 "glsl_lexer.lpp"
1588 #line 177 "glsl_lexer.lpp"
1589 KEYWORD(130, 130, UINT_TOK
);
1593 #line 179 "glsl_lexer.lpp"
1598 #line 180 "glsl_lexer.lpp"
1603 #line 181 "glsl_lexer.lpp"
1608 #line 182 "glsl_lexer.lpp"
1613 #line 183 "glsl_lexer.lpp"
1618 #line 184 "glsl_lexer.lpp"
1623 #line 185 "glsl_lexer.lpp"
1628 #line 186 "glsl_lexer.lpp"
1633 #line 187 "glsl_lexer.lpp"
1638 #line 189 "glsl_lexer.lpp"
1643 #line 190 "glsl_lexer.lpp"
1648 #line 191 "glsl_lexer.lpp"
1653 #line 192 "glsl_lexer.lpp"
1658 #line 193 "glsl_lexer.lpp"
1663 #line 194 "glsl_lexer.lpp"
1668 #line 195 "glsl_lexer.lpp"
1669 KEYWORD(130, 130, UVEC2
);
1673 #line 196 "glsl_lexer.lpp"
1674 KEYWORD(130, 130, UVEC3
);
1678 #line 197 "glsl_lexer.lpp"
1679 KEYWORD(130, 130, UVEC4
);
1683 #line 198 "glsl_lexer.lpp"
1688 #line 199 "glsl_lexer.lpp"
1693 #line 200 "glsl_lexer.lpp"
1698 #line 201 "glsl_lexer.lpp"
1703 #line 202 "glsl_lexer.lpp"
1708 #line 203 "glsl_lexer.lpp"
1713 #line 204 "glsl_lexer.lpp"
1714 KEYWORD(120, 120, MAT2X2
);
1718 #line 205 "glsl_lexer.lpp"
1719 KEYWORD(120, 120, MAT2X3
);
1723 #line 206 "glsl_lexer.lpp"
1724 KEYWORD(120, 120, MAT2X4
);
1728 #line 207 "glsl_lexer.lpp"
1729 KEYWORD(120, 120, MAT3X2
);
1733 #line 208 "glsl_lexer.lpp"
1734 KEYWORD(120, 120, MAT3X3
);
1738 #line 209 "glsl_lexer.lpp"
1739 KEYWORD(120, 120, MAT3X4
);
1743 #line 210 "glsl_lexer.lpp"
1744 KEYWORD(120, 120, MAT4X2
);
1748 #line 211 "glsl_lexer.lpp"
1749 KEYWORD(120, 120, MAT4X3
);
1753 #line 212 "glsl_lexer.lpp"
1754 KEYWORD(120, 120, MAT4X4
);
1758 #line 214 "glsl_lexer.lpp"
1763 #line 215 "glsl_lexer.lpp"
1768 #line 216 "glsl_lexer.lpp"
1773 #line 217 "glsl_lexer.lpp"
1778 #line 218 "glsl_lexer.lpp"
1783 #line 219 "glsl_lexer.lpp"
1784 KEYWORD(120, 120, CENTROID
);
1788 #line 220 "glsl_lexer.lpp"
1789 KEYWORD(120 || ES
, 120 || ES
, INVARIANT
);
1793 #line 221 "glsl_lexer.lpp"
1794 KEYWORD(130 || ES
, 130, FLAT
);
1798 #line 222 "glsl_lexer.lpp"
1799 KEYWORD(130, 130, SMOOTH
);
1803 #line 223 "glsl_lexer.lpp"
1804 KEYWORD(130, 130, NOPERSPECTIVE
);
1808 #line 225 "glsl_lexer.lpp"
1813 #line 226 "glsl_lexer.lpp"
1818 #line 227 "glsl_lexer.lpp"
1823 #line 228 "glsl_lexer.lpp"
1828 #line 229 "glsl_lexer.lpp"
1829 KEYWORD(130, 130, SAMPLER1DARRAY
);
1833 #line 230 "glsl_lexer.lpp"
1834 KEYWORD(130, 130, SAMPLER2DARRAY
);
1838 #line 231 "glsl_lexer.lpp"
1839 return SAMPLER1DSHADOW
;
1843 #line 232 "glsl_lexer.lpp"
1844 return SAMPLER2DSHADOW
;
1848 #line 233 "glsl_lexer.lpp"
1849 KEYWORD(130, 130, SAMPLERCUBESHADOW
);
1853 #line 234 "glsl_lexer.lpp"
1854 KEYWORD(130, 130, SAMPLER1DARRAYSHADOW
);
1858 #line 235 "glsl_lexer.lpp"
1859 KEYWORD(130, 130, SAMPLER2DARRAYSHADOW
);
1863 #line 236 "glsl_lexer.lpp"
1864 KEYWORD(130, 130, ISAMPLER1D
);
1868 #line 237 "glsl_lexer.lpp"
1869 KEYWORD(130, 130, ISAMPLER2D
);
1873 #line 238 "glsl_lexer.lpp"
1874 KEYWORD(130, 130, ISAMPLER3D
);
1878 #line 239 "glsl_lexer.lpp"
1879 KEYWORD(130, 130, ISAMPLERCUBE
);
1883 #line 240 "glsl_lexer.lpp"
1884 KEYWORD(130, 130, ISAMPLER1DARRAY
);
1888 #line 241 "glsl_lexer.lpp"
1889 KEYWORD(130, 130, ISAMPLER2DARRAY
);
1893 #line 242 "glsl_lexer.lpp"
1894 KEYWORD(130, 130, USAMPLER1D
);
1898 #line 243 "glsl_lexer.lpp"
1899 KEYWORD(130, 130, USAMPLER2D
);
1903 #line 244 "glsl_lexer.lpp"
1904 KEYWORD(130, 130, USAMPLER3D
);
1908 #line 245 "glsl_lexer.lpp"
1909 KEYWORD(130, 130, USAMPLERCUBE
);
1913 #line 246 "glsl_lexer.lpp"
1914 KEYWORD(130, 130, USAMPLER1DARRAY
);
1918 #line 247 "glsl_lexer.lpp"
1919 KEYWORD(130, 130, USAMPLER2DARRAY
);
1923 #line 250 "glsl_lexer.lpp"
1928 #line 251 "glsl_lexer.lpp"
1933 #line 253 "glsl_lexer.lpp"
1935 if ((yyextra
->language_version
>= 140)
1936 || yyextra
->ARB_explicit_attrib_location_enable
1937 || (yyextra
->ARB_fragment_coord_conventions_enable
)){
1940 yylval
->identifier
= strdup(yytext
);
1947 #line 264 "glsl_lexer.lpp"
1952 #line 265 "glsl_lexer.lpp"
1957 #line 266 "glsl_lexer.lpp"
1962 #line 267 "glsl_lexer.lpp"
1967 #line 268 "glsl_lexer.lpp"
1972 #line 269 "glsl_lexer.lpp"
1977 #line 270 "glsl_lexer.lpp"
1982 #line 271 "glsl_lexer.lpp"
1987 #line 272 "glsl_lexer.lpp"
1992 #line 273 "glsl_lexer.lpp"
1997 #line 274 "glsl_lexer.lpp"
2002 #line 276 "glsl_lexer.lpp"
2007 #line 277 "glsl_lexer.lpp"
2012 #line 278 "glsl_lexer.lpp"
2017 #line 279 "glsl_lexer.lpp"
2022 #line 280 "glsl_lexer.lpp"
2027 #line 281 "glsl_lexer.lpp"
2028 return RIGHT_ASSIGN
;
2032 #line 282 "glsl_lexer.lpp"
2037 #line 283 "glsl_lexer.lpp"
2042 #line 284 "glsl_lexer.lpp"
2047 #line 285 "glsl_lexer.lpp"
2052 #line 287 "glsl_lexer.lpp"
2054 yylval
->n
= strtol(yytext
, NULL
, 10);
2055 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2060 #line 291 "glsl_lexer.lpp"
2062 yylval
->n
= strtol(yytext
+ 2, NULL
, 16);
2063 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2068 #line 295 "glsl_lexer.lpp"
2070 yylval
->n
= strtol(yytext
, NULL
, 8);
2071 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2076 #line 300 "glsl_lexer.lpp"
2078 yylval
->real
= glsl_strtod(yytext
, NULL
);
2079 return FLOATCONSTANT
;
2084 #line 304 "glsl_lexer.lpp"
2086 yylval
->real
= glsl_strtod(yytext
, NULL
);
2087 return FLOATCONSTANT
;
2092 #line 308 "glsl_lexer.lpp"
2094 yylval
->real
= glsl_strtod(yytext
, NULL
);
2095 return FLOATCONSTANT
;
2100 #line 312 "glsl_lexer.lpp"
2102 yylval
->real
= glsl_strtod(yytext
, NULL
);
2103 return FLOATCONSTANT
;
2108 #line 316 "glsl_lexer.lpp"
2110 yylval
->real
= glsl_strtod(yytext
, NULL
);
2111 return FLOATCONSTANT
;
2116 #line 321 "glsl_lexer.lpp"
2119 return BOOLCONSTANT
;
2124 #line 325 "glsl_lexer.lpp"
2127 return BOOLCONSTANT
;
2130 /* Reserved words in GLSL 1.10. */
2133 #line 332 "glsl_lexer.lpp"
2134 KEYWORD(110 || ES
, 999, ASM
);
2138 #line 333 "glsl_lexer.lpp"
2139 KEYWORD(110 || ES
, 999, CLASS
);
2143 #line 334 "glsl_lexer.lpp"
2144 KEYWORD(110 || ES
, 999, UNION
);
2148 #line 335 "glsl_lexer.lpp"
2149 KEYWORD(110 || ES
, 999, ENUM
);
2153 #line 336 "glsl_lexer.lpp"
2154 KEYWORD(110 || ES
, 999, TYPEDEF
);
2158 #line 337 "glsl_lexer.lpp"
2159 KEYWORD(110 || ES
, 999, TEMPLATE
);
2163 #line 338 "glsl_lexer.lpp"
2164 KEYWORD(110 || ES
, 999, THIS
);
2168 #line 339 "glsl_lexer.lpp"
2169 KEYWORD(110 || ES
, 999, PACKED_TOK
);
2173 #line 340 "glsl_lexer.lpp"
2174 KEYWORD(110 || ES
, 999, GOTO
);
2178 #line 341 "glsl_lexer.lpp"
2179 KEYWORD(110 || ES
, 130, SWITCH
);
2183 #line 342 "glsl_lexer.lpp"
2184 KEYWORD(110 || ES
, 130, DEFAULT
);
2188 #line 343 "glsl_lexer.lpp"
2189 KEYWORD(110 || ES
, 999, INLINE_TOK
);
2193 #line 344 "glsl_lexer.lpp"
2194 KEYWORD(110 || ES
, 999, NOINLINE
);
2198 #line 345 "glsl_lexer.lpp"
2199 KEYWORD(110 || ES
, 999, VOLATILE
);
2203 #line 346 "glsl_lexer.lpp"
2204 KEYWORD(110 || ES
, 999, PUBLIC_TOK
);
2208 #line 347 "glsl_lexer.lpp"
2209 KEYWORD(110 || ES
, 999, STATIC
);
2213 #line 348 "glsl_lexer.lpp"
2214 KEYWORD(110 || ES
, 999, EXTERN
);
2218 #line 349 "glsl_lexer.lpp"
2219 KEYWORD(110 || ES
, 999, EXTERNAL
);
2223 #line 350 "glsl_lexer.lpp"
2224 KEYWORD(110 || ES
, 999, INTERFACE
);
2228 #line 351 "glsl_lexer.lpp"
2229 KEYWORD(110 || ES
, 999, LONG_TOK
);
2233 #line 352 "glsl_lexer.lpp"
2234 KEYWORD(110 || ES
, 999, SHORT_TOK
);
2238 #line 353 "glsl_lexer.lpp"
2239 KEYWORD(110 || ES
, 400, DOUBLE_TOK
);
2243 #line 354 "glsl_lexer.lpp"
2244 KEYWORD(110 || ES
, 999, HALF
);
2248 #line 355 "glsl_lexer.lpp"
2249 KEYWORD(110 || ES
, 999, FIXED_TOK
);
2253 #line 356 "glsl_lexer.lpp"
2254 KEYWORD(110 || ES
, 999, UNSIGNED
);
2258 #line 357 "glsl_lexer.lpp"
2259 KEYWORD(110 || ES
, 999, INPUT_TOK
);
2263 #line 358 "glsl_lexer.lpp"
2264 KEYWORD(110 || ES
, 999, OUTPUT
);
2268 #line 359 "glsl_lexer.lpp"
2269 KEYWORD(110 || ES
, 999, HVEC2
);
2273 #line 360 "glsl_lexer.lpp"
2274 KEYWORD(110 || ES
, 999, HVEC3
);
2278 #line 361 "glsl_lexer.lpp"
2279 KEYWORD(110 || ES
, 999, HVEC4
);
2283 #line 362 "glsl_lexer.lpp"
2284 KEYWORD(110 || ES
, 400, DVEC2
);
2288 #line 363 "glsl_lexer.lpp"
2289 KEYWORD(110 || ES
, 400, DVEC3
);
2293 #line 364 "glsl_lexer.lpp"
2294 KEYWORD(110 || ES
, 400, DVEC4
);
2298 #line 365 "glsl_lexer.lpp"
2299 KEYWORD(110 || ES
, 999, FVEC2
);
2303 #line 366 "glsl_lexer.lpp"
2304 KEYWORD(110 || ES
, 999, FVEC3
);
2308 #line 367 "glsl_lexer.lpp"
2309 KEYWORD(110 || ES
, 999, FVEC4
);
2313 #line 368 "glsl_lexer.lpp"
2314 return SAMPLER2DRECT
;
2318 #line 369 "glsl_lexer.lpp"
2319 KEYWORD(110 || ES
, 999, SAMPLER3DRECT
);
2323 #line 370 "glsl_lexer.lpp"
2324 return SAMPLER2DRECTSHADOW
;
2328 #line 371 "glsl_lexer.lpp"
2329 KEYWORD(110 || ES
, 999, SIZEOF
);
2333 #line 372 "glsl_lexer.lpp"
2334 KEYWORD(110 || ES
, 999, CAST
);
2338 #line 373 "glsl_lexer.lpp"
2339 KEYWORD(110 || ES
, 999, NAMESPACE
);
2343 #line 374 "glsl_lexer.lpp"
2344 KEYWORD(110 || ES
, 999, USING
);
2346 /* Additional reserved words in GLSL 1.20. */
2349 #line 377 "glsl_lexer.lpp"
2350 KEYWORD(120, 130 || ES
, LOWP
);
2354 #line 378 "glsl_lexer.lpp"
2355 KEYWORD(120, 130 || ES
, MEDIUMP
);
2359 #line 379 "glsl_lexer.lpp"
2360 KEYWORD(120, 130 || ES
, HIGHP
);
2364 #line 380 "glsl_lexer.lpp"
2365 KEYWORD(120, 130 || ES
, PRECISION
);
2367 /* Additional reserved words in GLSL 1.30. */
2370 #line 383 "glsl_lexer.lpp"
2371 KEYWORD(130, 130, CASE
);
2375 #line 384 "glsl_lexer.lpp"
2376 KEYWORD(130, 999, COMMON
);
2380 #line 385 "glsl_lexer.lpp"
2381 KEYWORD(130, 999, PARTITION
);
2385 #line 386 "glsl_lexer.lpp"
2386 KEYWORD(130, 999, ACTIVE
);
2390 #line 387 "glsl_lexer.lpp"
2391 KEYWORD(130 || ES
, 999, SUPERP
);
2395 #line 388 "glsl_lexer.lpp"
2396 KEYWORD(130, 140, SAMPLERBUFFER
);
2400 #line 389 "glsl_lexer.lpp"
2401 KEYWORD(130, 999, FILTER
);
2405 #line 390 "glsl_lexer.lpp"
2406 KEYWORD(130, 999, IMAGE1D
);
2410 #line 391 "glsl_lexer.lpp"
2411 KEYWORD(130, 999, IMAGE2D
);
2415 #line 392 "glsl_lexer.lpp"
2416 KEYWORD(130, 999, IMAGE3D
);
2420 #line 393 "glsl_lexer.lpp"
2421 KEYWORD(130, 999, IMAGECUBE
);
2425 #line 394 "glsl_lexer.lpp"
2426 KEYWORD(130, 999, IIMAGE1D
);
2430 #line 395 "glsl_lexer.lpp"
2431 KEYWORD(130, 999, IIMAGE2D
);
2435 #line 396 "glsl_lexer.lpp"
2436 KEYWORD(130, 999, IIMAGE3D
);
2440 #line 397 "glsl_lexer.lpp"
2441 KEYWORD(130, 999, IIMAGECUBE
);
2445 #line 398 "glsl_lexer.lpp"
2446 KEYWORD(130, 999, UIMAGE1D
);
2450 #line 399 "glsl_lexer.lpp"
2451 KEYWORD(130, 999, UIMAGE2D
);
2455 #line 400 "glsl_lexer.lpp"
2456 KEYWORD(130, 999, UIMAGE3D
);
2460 #line 401 "glsl_lexer.lpp"
2461 KEYWORD(130, 999, UIMAGECUBE
);
2465 #line 402 "glsl_lexer.lpp"
2466 KEYWORD(130, 999, IMAGE1DARRAY
);
2470 #line 403 "glsl_lexer.lpp"
2471 KEYWORD(130, 999, IMAGE2DARRAY
);
2475 #line 404 "glsl_lexer.lpp"
2476 KEYWORD(130, 999, IIMAGE1DARRAY
);
2480 #line 405 "glsl_lexer.lpp"
2481 KEYWORD(130, 999, IIMAGE2DARRAY
);
2485 #line 406 "glsl_lexer.lpp"
2486 KEYWORD(130, 999, UIMAGE1DARRAY
);
2490 #line 407 "glsl_lexer.lpp"
2491 KEYWORD(130, 999, UIMAGE2DARRAY
);
2495 #line 408 "glsl_lexer.lpp"
2496 KEYWORD(130, 999, IMAGE1DSHADOW
);
2500 #line 409 "glsl_lexer.lpp"
2501 KEYWORD(130, 999, IMAGE2DSHADOW
);
2505 #line 410 "glsl_lexer.lpp"
2506 KEYWORD(130, 999, IMAGE1DARRAYSHADOW
);
2510 #line 411 "glsl_lexer.lpp"
2511 KEYWORD(130, 999, IMAGE2DARRAYSHADOW
);
2515 #line 412 "glsl_lexer.lpp"
2516 KEYWORD(130, 999, IMAGEBUFFER
);
2520 #line 413 "glsl_lexer.lpp"
2521 KEYWORD(130, 999, IIMAGEBUFFER
);
2525 #line 414 "glsl_lexer.lpp"
2526 KEYWORD(130, 999, UIMAGEBUFFER
);
2530 #line 415 "glsl_lexer.lpp"
2531 KEYWORD(130, 999, ROW_MAJOR
);
2535 #line 417 "glsl_lexer.lpp"
2537 struct _mesa_glsl_parse_state
*state
= yyextra
;
2539 yylval
->identifier
= talloc_strdup(ctx
, yytext
);
2545 #line 424 "glsl_lexer.lpp"
2546 { return yytext
[0]; }
2550 #line 426 "glsl_lexer.lpp"
2553 #line 2554 "glsl_lexer.cpp"
2554 case YY_STATE_EOF(INITIAL
):
2555 case YY_STATE_EOF(PP
):
2556 case YY_STATE_EOF(PRAGMA
):
2559 case YY_END_OF_BUFFER
:
2561 /* Amount of text matched not including the EOB char. */
2562 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
2564 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2565 *yy_cp
= yyg
->yy_hold_char
;
2566 YY_RESTORE_YY_MORE_OFFSET
2568 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
2570 /* We're scanning a new file or input source. It's
2571 * possible that this happened because the user
2572 * just pointed yyin at a new source and called
2573 * _mesa_glsl_lex(). If so, then we have to assure
2574 * consistency between YY_CURRENT_BUFFER and our
2575 * globals. Here is the right place to do so, because
2576 * this is the first action (other than possibly a
2577 * back-up) that will match for the new input source.
2579 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2580 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
2581 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
2584 /* Note that here we test for yy_c_buf_p "<=" to the position
2585 * of the first EOB in the buffer, since yy_c_buf_p will
2586 * already have been incremented past the NUL character
2587 * (since all states make transitions on EOB to the
2588 * end-of-buffer state). Contrast this with the test
2591 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2592 { /* This was really a NUL. */
2593 yy_state_type yy_next_state
;
2595 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2597 yy_current_state
= yy_get_previous_state( yyscanner
);
2599 /* Okay, we're now positioned to make the NUL
2600 * transition. We couldn't have
2601 * yy_get_previous_state() go ahead and do it
2602 * for us because it doesn't know how to deal
2603 * with the possibility of jamming (and we don't
2604 * want to build jamming into it because then it
2605 * will run more slowly).
2608 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2610 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2612 if ( yy_next_state
)
2614 /* Consume the NUL. */
2615 yy_cp
= ++yyg
->yy_c_buf_p
;
2616 yy_current_state
= yy_next_state
;
2622 yy_cp
= yyg
->yy_last_accepting_cpos
;
2623 yy_current_state
= yyg
->yy_last_accepting_state
;
2624 goto yy_find_action
;
2628 else switch ( yy_get_next_buffer( yyscanner
) )
2630 case EOB_ACT_END_OF_FILE
:
2632 yyg
->yy_did_buffer_switch_on_eof
= 0;
2634 if ( _mesa_glsl_wrap(yyscanner
) )
2636 /* Note: because we've taken care in
2637 * yy_get_next_buffer() to have set up
2638 * yytext, we can now set up
2639 * yy_c_buf_p so that if some total
2640 * hoser (like flex itself) wants to
2641 * call the scanner after we return the
2642 * YY_NULL, it'll still work - another
2643 * YY_NULL will get returned.
2645 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2647 yy_act
= YY_STATE_EOF(YY_START
);
2653 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2659 case EOB_ACT_CONTINUE_SCAN
:
2661 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2663 yy_current_state
= yy_get_previous_state( yyscanner
);
2665 yy_cp
= yyg
->yy_c_buf_p
;
2666 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2669 case EOB_ACT_LAST_MATCH
:
2671 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2673 yy_current_state
= yy_get_previous_state( yyscanner
);
2675 yy_cp
= yyg
->yy_c_buf_p
;
2676 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2677 goto yy_find_action
;
2684 "fatal flex scanner internal error--no action found" );
2685 } /* end of action switch */
2686 } /* end of scanning one token */
2687 } /* end of _mesa_glsl_lex */
2689 /* yy_get_next_buffer - try to read in a new buffer
2691 * Returns a code representing an action:
2692 * EOB_ACT_LAST_MATCH -
2693 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2694 * EOB_ACT_END_OF_FILE - end of file
2696 static int yy_get_next_buffer (yyscan_t yyscanner
)
2698 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2699 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2700 register char *source
= yyg
->yytext_ptr
;
2701 register int number_to_move
, i
;
2704 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2706 "fatal flex scanner internal error--end of buffer missed" );
2708 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2709 { /* Don't try to fill the buffer, so this is an EOF. */
2710 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2712 /* We matched a single character, the EOB, so
2713 * treat this as a final EOF.
2715 return EOB_ACT_END_OF_FILE
;
2720 /* We matched some text prior to the EOB, first
2723 return EOB_ACT_LAST_MATCH
;
2727 /* Try to read more data. */
2729 /* First move last chars to start of buffer. */
2730 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2732 for ( i
= 0; i
< number_to_move
; ++i
)
2733 *(dest
++) = *(source
++);
2735 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2736 /* don't do the read, it's not guaranteed to return an EOF,
2739 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2744 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2746 while ( num_to_read
<= 0 )
2747 { /* Not enough room in the buffer - grow it. */
2749 /* just a shorter name for the current buffer */
2750 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2752 int yy_c_buf_p_offset
=
2753 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2755 if ( b
->yy_is_our_buffer
)
2757 int new_size
= b
->yy_buf_size
* 2;
2759 if ( new_size
<= 0 )
2760 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2762 b
->yy_buf_size
*= 2;
2764 b
->yy_ch_buf
= (char *)
2765 /* Include room in for 2 EOB chars. */
2766 _mesa_glsl_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2769 /* Can't grow it, we don't own it. */
2772 if ( ! b
->yy_ch_buf
)
2774 "fatal error - scanner input buffer overflow" );
2776 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2778 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2783 if ( num_to_read
> YY_READ_BUF_SIZE
)
2784 num_to_read
= YY_READ_BUF_SIZE
;
2786 /* Read in more data. */
2787 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2788 yyg
->yy_n_chars
, (size_t) num_to_read
);
2790 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2793 if ( yyg
->yy_n_chars
== 0 )
2795 if ( number_to_move
== YY_MORE_ADJ
)
2797 ret_val
= EOB_ACT_END_OF_FILE
;
2798 _mesa_glsl_restart(yyin
,yyscanner
);
2803 ret_val
= EOB_ACT_LAST_MATCH
;
2804 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2805 YY_BUFFER_EOF_PENDING
;
2810 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2812 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2813 /* Extend the array by 50%, plus the number we really need. */
2814 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2815 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) _mesa_glsl_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2816 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2817 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2820 yyg
->yy_n_chars
+= number_to_move
;
2821 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2822 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2824 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2829 /* yy_get_previous_state - get the state just before the EOB char was reached */
2831 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2833 register yy_state_type yy_current_state
;
2834 register char *yy_cp
;
2835 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2837 yy_current_state
= yyg
->yy_start
;
2838 yy_current_state
+= YY_AT_BOL();
2840 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2842 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2843 if ( yy_accept
[yy_current_state
] )
2845 yyg
->yy_last_accepting_state
= yy_current_state
;
2846 yyg
->yy_last_accepting_cpos
= yy_cp
;
2848 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2850 yy_current_state
= (int) yy_def
[yy_current_state
];
2851 if ( yy_current_state
>= 836 )
2852 yy_c
= yy_meta
[(unsigned int) yy_c
];
2854 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2857 return yy_current_state
;
2860 /* yy_try_NUL_trans - try to make a transition on the NUL character
2863 * next_state = yy_try_NUL_trans( current_state );
2865 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2867 register int yy_is_jam
;
2868 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2869 register char *yy_cp
= yyg
->yy_c_buf_p
;
2871 register YY_CHAR yy_c
= 1;
2872 if ( yy_accept
[yy_current_state
] )
2874 yyg
->yy_last_accepting_state
= yy_current_state
;
2875 yyg
->yy_last_accepting_cpos
= yy_cp
;
2877 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2879 yy_current_state
= (int) yy_def
[yy_current_state
];
2880 if ( yy_current_state
>= 836 )
2881 yy_c
= yy_meta
[(unsigned int) yy_c
];
2883 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2884 yy_is_jam
= (yy_current_state
== 835);
2886 return yy_is_jam
? 0 : yy_current_state
;
2891 static int yyinput (yyscan_t yyscanner
)
2893 static int input (yyscan_t yyscanner
)
2898 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2900 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2902 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2904 /* yy_c_buf_p now points to the character we want to return.
2905 * If this occurs *before* the EOB characters, then it's a
2906 * valid NUL; if not, then we've hit the end of the buffer.
2908 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2909 /* This was really a NUL. */
2910 *yyg
->yy_c_buf_p
= '\0';
2913 { /* need more input */
2914 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2917 switch ( yy_get_next_buffer( yyscanner
) )
2919 case EOB_ACT_LAST_MATCH
:
2920 /* This happens because yy_g_n_b()
2921 * sees that we've accumulated a
2922 * token and flags that we need to
2923 * try matching the token before
2924 * proceeding. But for input(),
2925 * there's no matching to consider.
2926 * So convert the EOB_ACT_LAST_MATCH
2927 * to EOB_ACT_END_OF_FILE.
2930 /* Reset buffer status. */
2931 _mesa_glsl_restart(yyin
,yyscanner
);
2935 case EOB_ACT_END_OF_FILE
:
2937 if ( _mesa_glsl_wrap(yyscanner
) )
2940 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2943 return yyinput(yyscanner
);
2945 return input(yyscanner
);
2949 case EOB_ACT_CONTINUE_SCAN
:
2950 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2956 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2957 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2958 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2960 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2964 #endif /* ifndef YY_NO_INPUT */
2966 /** Immediately switch to a different input stream.
2967 * @param input_file A readable stream.
2968 * @param yyscanner The scanner object.
2969 * @note This function does not reset the start condition to @c INITIAL .
2971 void _mesa_glsl_restart (FILE * input_file
, yyscan_t yyscanner
)
2973 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2975 if ( ! YY_CURRENT_BUFFER
){
2976 _mesa_glsl_ensure_buffer_stack (yyscanner
);
2977 YY_CURRENT_BUFFER_LVALUE
=
2978 _mesa_glsl__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2981 _mesa_glsl__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2982 _mesa_glsl__load_buffer_state(yyscanner
);
2985 /** Switch to a different input buffer.
2986 * @param new_buffer The new input buffer.
2987 * @param yyscanner The scanner object.
2989 void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2991 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2993 /* TODO. We should be able to replace this entire function body
2995 * _mesa_glsl_pop_buffer_state();
2996 * _mesa_glsl_push_buffer_state(new_buffer);
2998 _mesa_glsl_ensure_buffer_stack (yyscanner
);
2999 if ( YY_CURRENT_BUFFER
== new_buffer
)
3002 if ( YY_CURRENT_BUFFER
)
3004 /* Flush out information for old buffer. */
3005 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3006 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3007 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3010 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3011 _mesa_glsl__load_buffer_state(yyscanner
);
3013 /* We don't actually know whether we did this switch during
3014 * EOF (_mesa_glsl_wrap()) processing, but the only time this flag
3015 * is looked at is after _mesa_glsl_wrap() is called, so it's safe
3016 * to go ahead and always set it.
3018 yyg
->yy_did_buffer_switch_on_eof
= 1;
3021 static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner
)
3023 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3024 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
3025 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
3026 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
3027 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
3030 /** Allocate and initialize an input buffer state.
3031 * @param file A readable stream.
3032 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3033 * @param yyscanner The scanner object.
3034 * @return the allocated buffer state.
3036 YY_BUFFER_STATE
_mesa_glsl__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
3040 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3042 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3044 b
->yy_buf_size
= size
;
3046 /* yy_ch_buf has to be 2 characters longer than the size given because
3047 * we need to put in 2 end-of-buffer characters.
3049 b
->yy_ch_buf
= (char *) _mesa_glsl_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
3050 if ( ! b
->yy_ch_buf
)
3051 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3053 b
->yy_is_our_buffer
= 1;
3055 _mesa_glsl__init_buffer(b
,file
,yyscanner
);
3060 /** Destroy the buffer.
3061 * @param b a buffer created with _mesa_glsl__create_buffer()
3062 * @param yyscanner The scanner object.
3064 void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3066 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3071 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
3072 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
3074 if ( b
->yy_is_our_buffer
)
3075 _mesa_glsl_free((void *) b
->yy_ch_buf
,yyscanner
);
3077 _mesa_glsl_free((void *) b
,yyscanner
);
3080 /* Initializes or reinitializes a buffer.
3081 * This function is sometimes called more than once on the same buffer,
3082 * such as during a _mesa_glsl_restart() or at EOF.
3084 static void _mesa_glsl__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
3088 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3090 _mesa_glsl__flush_buffer(b
,yyscanner
);
3092 b
->yy_input_file
= file
;
3093 b
->yy_fill_buffer
= 1;
3095 /* If b is the current buffer, then _mesa_glsl__init_buffer was _probably_
3096 * called from _mesa_glsl_restart() or through yy_get_next_buffer.
3097 * In that case, we don't want to reset the lineno or column.
3099 if (b
!= YY_CURRENT_BUFFER
){
3100 b
->yy_bs_lineno
= 1;
3101 b
->yy_bs_column
= 0;
3104 b
->yy_is_interactive
= 0;
3109 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3110 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3111 * @param yyscanner The scanner object.
3113 void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3115 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3121 /* We always need two end-of-buffer characters. The first causes
3122 * a transition to the end-of-buffer state. The second causes
3123 * a jam in that state.
3125 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
3126 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
3128 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
3131 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3133 if ( b
== YY_CURRENT_BUFFER
)
3134 _mesa_glsl__load_buffer_state(yyscanner
);
3137 /** Pushes the new state onto the stack. The new state becomes
3138 * the current state. This function will allocate the stack
3140 * @param new_buffer The new state.
3141 * @param yyscanner The scanner object.
3143 void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
3145 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3146 if (new_buffer
== NULL
)
3149 _mesa_glsl_ensure_buffer_stack(yyscanner
);
3151 /* This block is copied from _mesa_glsl__switch_to_buffer. */
3152 if ( YY_CURRENT_BUFFER
)
3154 /* Flush out information for old buffer. */
3155 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3156 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3157 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3160 /* Only push if top exists. Otherwise, replace top. */
3161 if (YY_CURRENT_BUFFER
)
3162 yyg
->yy_buffer_stack_top
++;
3163 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3165 /* copied from _mesa_glsl__switch_to_buffer. */
3166 _mesa_glsl__load_buffer_state(yyscanner
);
3167 yyg
->yy_did_buffer_switch_on_eof
= 1;
3170 /** Removes and deletes the top of the stack, if present.
3171 * The next element becomes the new top.
3172 * @param yyscanner The scanner object.
3174 void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner
)
3176 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3177 if (!YY_CURRENT_BUFFER
)
3180 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3181 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3182 if (yyg
->yy_buffer_stack_top
> 0)
3183 --yyg
->yy_buffer_stack_top
;
3185 if (YY_CURRENT_BUFFER
) {
3186 _mesa_glsl__load_buffer_state(yyscanner
);
3187 yyg
->yy_did_buffer_switch_on_eof
= 1;
3191 /* Allocates the stack if it does not exist.
3192 * Guarantees space for at least one push.
3194 static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner
)
3197 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3199 if (!yyg
->yy_buffer_stack
) {
3201 /* First allocation is just for 2 elements, since we don't know if this
3202 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3203 * immediate realloc on the next call.
3206 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_alloc
3207 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
3209 if ( ! yyg
->yy_buffer_stack
)
3210 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3212 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
3214 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3215 yyg
->yy_buffer_stack_top
= 0;
3219 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
3221 /* Increase the buffer to prepare for a possible push. */
3222 int grow_size
= 8 /* arbitrary grow size */;
3224 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
3225 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_realloc
3226 (yyg
->yy_buffer_stack
,
3227 num_to_alloc
* sizeof(struct yy_buffer_state
*)
3229 if ( ! yyg
->yy_buffer_stack
)
3230 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3232 /* zero only the new slots.*/
3233 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
3234 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3238 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3239 * @param base the character buffer
3240 * @param size the size in bytes of the character buffer
3241 * @param yyscanner The scanner object.
3242 * @return the newly allocated buffer state object.
3244 YY_BUFFER_STATE
_mesa_glsl__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
3249 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
3250 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
3251 /* They forgot to leave room for the EOB's. */
3254 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3256 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_buffer()" );
3258 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
3259 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
3260 b
->yy_is_our_buffer
= 0;
3261 b
->yy_input_file
= 0;
3262 b
->yy_n_chars
= b
->yy_buf_size
;
3263 b
->yy_is_interactive
= 0;
3265 b
->yy_fill_buffer
= 0;
3266 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3268 _mesa_glsl__switch_to_buffer(b
,yyscanner
);
3273 /** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lex() will
3274 * scan from a @e copy of @a str.
3275 * @param yystr a NUL-terminated string to scan
3276 * @param yyscanner The scanner object.
3277 * @return the newly allocated buffer state object.
3278 * @note If you want to scan bytes that may contain NUL values, then use
3279 * _mesa_glsl__scan_bytes() instead.
3281 YY_BUFFER_STATE
_mesa_glsl__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
3284 return _mesa_glsl__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
3287 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
3288 * scan from a @e copy of @a bytes.
3289 * @param bytes the byte buffer to scan
3290 * @param len the number of bytes in the buffer pointed to by @a bytes.
3291 * @param yyscanner The scanner object.
3292 * @return the newly allocated buffer state object.
3294 YY_BUFFER_STATE
_mesa_glsl__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
3301 /* Get memory for full buffer, including space for trailing EOB's. */
3302 n
= _yybytes_len
+ 2;
3303 buf
= (char *) _mesa_glsl_alloc(n
,yyscanner
);
3305 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_bytes()" );
3307 for ( i
= 0; i
< _yybytes_len
; ++i
)
3308 buf
[i
] = yybytes
[i
];
3310 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
3312 b
= _mesa_glsl__scan_buffer(buf
,n
,yyscanner
);
3314 YY_FATAL_ERROR( "bad buffer in _mesa_glsl__scan_bytes()" );
3316 /* It's okay to grow etc. this buffer, and we should throw it
3317 * away when we're done.
3319 b
->yy_is_our_buffer
= 1;
3324 #ifndef YY_EXIT_FAILURE
3325 #define YY_EXIT_FAILURE 2
3328 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
3330 (void) fprintf( stderr
, "%s\n", msg
);
3331 exit( YY_EXIT_FAILURE
);
3334 /* Redefine yyless() so it works in section 3 code. */
3340 /* Undo effects of setting up yytext. */ \
3341 int yyless_macro_arg = (n); \
3342 YY_LESS_LINENO(yyless_macro_arg);\
3343 yytext[yyleng] = yyg->yy_hold_char; \
3344 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3345 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3346 *yyg->yy_c_buf_p = '\0'; \
3347 yyleng = yyless_macro_arg; \
3351 /* Accessor methods (get/set functions) to struct members. */
3353 /** Get the user-defined data for this scanner.
3354 * @param yyscanner The scanner object.
3356 YY_EXTRA_TYPE
_mesa_glsl_get_extra (yyscan_t yyscanner
)
3358 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3362 /** Get the current line number.
3363 * @param yyscanner The scanner object.
3365 int _mesa_glsl_get_lineno (yyscan_t yyscanner
)
3367 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3369 if (! YY_CURRENT_BUFFER
)
3375 /** Get the current column number.
3376 * @param yyscanner The scanner object.
3378 int _mesa_glsl_get_column (yyscan_t yyscanner
)
3380 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3382 if (! YY_CURRENT_BUFFER
)
3388 /** Get the input stream.
3389 * @param yyscanner The scanner object.
3391 FILE *_mesa_glsl_get_in (yyscan_t yyscanner
)
3393 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3397 /** Get the output stream.
3398 * @param yyscanner The scanner object.
3400 FILE *_mesa_glsl_get_out (yyscan_t yyscanner
)
3402 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3406 /** Get the length of the current token.
3407 * @param yyscanner The scanner object.
3409 int _mesa_glsl_get_leng (yyscan_t yyscanner
)
3411 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3415 /** Get the current token.
3416 * @param yyscanner The scanner object.
3419 char *_mesa_glsl_get_text (yyscan_t yyscanner
)
3421 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3425 /** Set the user-defined data. This data is never touched by the scanner.
3426 * @param user_defined The data to be associated with this scanner.
3427 * @param yyscanner The scanner object.
3429 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
3431 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3432 yyextra
= user_defined
;
3435 /** Set the current line number.
3436 * @param line_number
3437 * @param yyscanner The scanner object.
3439 void _mesa_glsl_set_lineno (int line_number
, yyscan_t yyscanner
)
3441 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3443 /* lineno is only valid if an input buffer exists. */
3444 if (! YY_CURRENT_BUFFER
)
3445 yy_fatal_error( "_mesa_glsl_set_lineno called with no buffer" , yyscanner
);
3447 yylineno
= line_number
;
3450 /** Set the current column.
3451 * @param line_number
3452 * @param yyscanner The scanner object.
3454 void _mesa_glsl_set_column (int column_no
, yyscan_t yyscanner
)
3456 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3458 /* column is only valid if an input buffer exists. */
3459 if (! YY_CURRENT_BUFFER
)
3460 yy_fatal_error( "_mesa_glsl_set_column called with no buffer" , yyscanner
);
3462 yycolumn
= column_no
;
3465 /** Set the input stream. This does not discard the current
3467 * @param in_str A readable stream.
3468 * @param yyscanner The scanner object.
3469 * @see _mesa_glsl__switch_to_buffer
3471 void _mesa_glsl_set_in (FILE * in_str
, yyscan_t yyscanner
)
3473 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3477 void _mesa_glsl_set_out (FILE * out_str
, yyscan_t yyscanner
)
3479 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3483 int _mesa_glsl_get_debug (yyscan_t yyscanner
)
3485 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3486 return yy_flex_debug
;
3489 void _mesa_glsl_set_debug (int bdebug
, yyscan_t yyscanner
)
3491 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3492 yy_flex_debug
= bdebug
;
3495 /* Accessor methods for yylval and yylloc */
3497 YYSTYPE
* _mesa_glsl_get_lval (yyscan_t yyscanner
)
3499 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3503 void _mesa_glsl_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3505 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3506 yylval
= yylval_param
;
3509 YYLTYPE
*_mesa_glsl_get_lloc (yyscan_t yyscanner
)
3511 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3515 void _mesa_glsl_set_lloc (YYLTYPE
* yylloc_param
, yyscan_t yyscanner
)
3517 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3518 yylloc
= yylloc_param
;
3521 /* User-visible API */
3523 /* _mesa_glsl_lex_init is special because it creates the scanner itself, so it is
3524 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3525 * That's why we explicitly handle the declaration, instead of using our macros.
3528 int _mesa_glsl_lex_init(yyscan_t
* ptr_yy_globals
)
3531 if (ptr_yy_globals
== NULL
){
3536 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), NULL
);
3538 if (*ptr_yy_globals
== NULL
){
3543 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3544 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3546 return yy_init_globals ( *ptr_yy_globals
);
3549 /* _mesa_glsl_lex_init_extra has the same functionality as _mesa_glsl_lex_init, but follows the
3550 * convention of taking the scanner as the last argument. Note however, that
3551 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3552 * is the reason, too, why this function also must handle its own declaration).
3553 * The user defined value in the first argument will be available to _mesa_glsl_alloc in
3554 * the yyextra field.
3557 int _mesa_glsl_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3560 struct yyguts_t dummy_yyguts
;
3562 _mesa_glsl_set_extra (yy_user_defined
, &dummy_yyguts
);
3564 if (ptr_yy_globals
== NULL
){
3569 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3571 if (*ptr_yy_globals
== NULL
){
3576 /* By setting to 0xAA, we expose bugs in
3577 yy_init_globals. Leave at 0x00 for releases. */
3578 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3580 _mesa_glsl_set_extra (yy_user_defined
, *ptr_yy_globals
);
3582 return yy_init_globals ( *ptr_yy_globals
);
3585 static int yy_init_globals (yyscan_t yyscanner
)
3587 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3588 /* Initialization is the same as for the non-reentrant scanner.
3589 * This function is called from _mesa_glsl_lex_destroy(), so don't allocate here.
3592 yyg
->yy_buffer_stack
= 0;
3593 yyg
->yy_buffer_stack_top
= 0;
3594 yyg
->yy_buffer_stack_max
= 0;
3595 yyg
->yy_c_buf_p
= (char *) 0;
3599 yyg
->yy_start_stack_ptr
= 0;
3600 yyg
->yy_start_stack_depth
= 0;
3601 yyg
->yy_start_stack
= NULL
;
3603 /* Defined in main.c */
3612 /* For future reference: Set errno on error, since we are called by
3613 * _mesa_glsl_lex_init()
3618 /* _mesa_glsl_lex_destroy is for both reentrant and non-reentrant scanners. */
3619 int _mesa_glsl_lex_destroy (yyscan_t yyscanner
)
3621 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3623 /* Pop the buffer stack, destroying each element. */
3624 while(YY_CURRENT_BUFFER
){
3625 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3626 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3627 _mesa_glsl_pop_buffer_state(yyscanner
);
3630 /* Destroy the stack itself. */
3631 _mesa_glsl_free(yyg
->yy_buffer_stack
,yyscanner
);
3632 yyg
->yy_buffer_stack
= NULL
;
3634 /* Destroy the start condition stack. */
3635 _mesa_glsl_free(yyg
->yy_start_stack
,yyscanner
);
3636 yyg
->yy_start_stack
= NULL
;
3638 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3639 * _mesa_glsl_lex() is called, initialization will occur. */
3640 yy_init_globals( yyscanner
);
3642 /* Destroy the main struct (reentrant only). */
3643 _mesa_glsl_free ( yyscanner
, yyscanner
);
3649 * Internal utility routines.
3653 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3656 for ( i
= 0; i
< n
; ++i
)
3661 #ifdef YY_NEED_STRLEN
3662 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3665 for ( n
= 0; s
[n
]; ++n
)
3672 void *_mesa_glsl_alloc (yy_size_t size
, yyscan_t yyscanner
)
3674 return (void *) malloc( size
);
3677 void *_mesa_glsl_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3679 /* The cast to (char *) in the following accommodates both
3680 * implementations that use char* generic pointers, and those
3681 * that use void* generic pointers. It works with the latter
3682 * because both ANSI C and C++ allow castless assignment from
3683 * any pointer type to void*, and deal with argument conversions
3684 * as though doing an assignment.
3686 return (void *) realloc( (char *) ptr
, size
);
3689 void _mesa_glsl_free (void * ptr
, yyscan_t yyscanner
)
3691 free( (char *) ptr
); /* see _mesa_glsl_realloc() for (char *) cast */
3694 #define YYTABLES_NAME "yytables"
3696 #line 426 "glsl_lexer.lpp"
3701 _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state
*state
, const char *string
)
3703 _mesa_glsl_lex_init_extra(state
,& state
->scanner
);
3704 _mesa_glsl__scan_string(string
,state
->scanner
);
3708 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state
*state
)
3710 _mesa_glsl_lex_destroy(state
->scanner
);