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
->AMD_conservative_depth_enable
1937 || yyextra
->ARB_explicit_attrib_location_enable
1938 || yyextra
->ARB_fragment_coord_conventions_enable
) {
1941 yylval
->identifier
= strdup(yytext
);
1948 #line 265 "glsl_lexer.lpp"
1953 #line 266 "glsl_lexer.lpp"
1958 #line 267 "glsl_lexer.lpp"
1963 #line 268 "glsl_lexer.lpp"
1968 #line 269 "glsl_lexer.lpp"
1973 #line 270 "glsl_lexer.lpp"
1978 #line 271 "glsl_lexer.lpp"
1983 #line 272 "glsl_lexer.lpp"
1988 #line 273 "glsl_lexer.lpp"
1993 #line 274 "glsl_lexer.lpp"
1998 #line 275 "glsl_lexer.lpp"
2003 #line 277 "glsl_lexer.lpp"
2008 #line 278 "glsl_lexer.lpp"
2013 #line 279 "glsl_lexer.lpp"
2018 #line 280 "glsl_lexer.lpp"
2023 #line 281 "glsl_lexer.lpp"
2028 #line 282 "glsl_lexer.lpp"
2029 return RIGHT_ASSIGN
;
2033 #line 283 "glsl_lexer.lpp"
2038 #line 284 "glsl_lexer.lpp"
2043 #line 285 "glsl_lexer.lpp"
2048 #line 286 "glsl_lexer.lpp"
2053 #line 288 "glsl_lexer.lpp"
2055 yylval
->n
= strtol(yytext
, NULL
, 10);
2056 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2061 #line 292 "glsl_lexer.lpp"
2063 yylval
->n
= strtol(yytext
+ 2, NULL
, 16);
2064 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2069 #line 296 "glsl_lexer.lpp"
2071 yylval
->n
= strtol(yytext
, NULL
, 8);
2072 return IS_UINT
? UINTCONSTANT
: INTCONSTANT
;
2077 #line 301 "glsl_lexer.lpp"
2079 yylval
->real
= glsl_strtod(yytext
, NULL
);
2080 return FLOATCONSTANT
;
2085 #line 305 "glsl_lexer.lpp"
2087 yylval
->real
= glsl_strtod(yytext
, NULL
);
2088 return FLOATCONSTANT
;
2093 #line 309 "glsl_lexer.lpp"
2095 yylval
->real
= glsl_strtod(yytext
, NULL
);
2096 return FLOATCONSTANT
;
2101 #line 313 "glsl_lexer.lpp"
2103 yylval
->real
= glsl_strtod(yytext
, NULL
);
2104 return FLOATCONSTANT
;
2109 #line 317 "glsl_lexer.lpp"
2111 yylval
->real
= glsl_strtod(yytext
, NULL
);
2112 return FLOATCONSTANT
;
2117 #line 322 "glsl_lexer.lpp"
2120 return BOOLCONSTANT
;
2125 #line 326 "glsl_lexer.lpp"
2128 return BOOLCONSTANT
;
2131 /* Reserved words in GLSL 1.10. */
2134 #line 333 "glsl_lexer.lpp"
2135 KEYWORD(110 || ES
, 999, ASM
);
2139 #line 334 "glsl_lexer.lpp"
2140 KEYWORD(110 || ES
, 999, CLASS
);
2144 #line 335 "glsl_lexer.lpp"
2145 KEYWORD(110 || ES
, 999, UNION
);
2149 #line 336 "glsl_lexer.lpp"
2150 KEYWORD(110 || ES
, 999, ENUM
);
2154 #line 337 "glsl_lexer.lpp"
2155 KEYWORD(110 || ES
, 999, TYPEDEF
);
2159 #line 338 "glsl_lexer.lpp"
2160 KEYWORD(110 || ES
, 999, TEMPLATE
);
2164 #line 339 "glsl_lexer.lpp"
2165 KEYWORD(110 || ES
, 999, THIS
);
2169 #line 340 "glsl_lexer.lpp"
2170 KEYWORD(110 || ES
, 999, PACKED_TOK
);
2174 #line 341 "glsl_lexer.lpp"
2175 KEYWORD(110 || ES
, 999, GOTO
);
2179 #line 342 "glsl_lexer.lpp"
2180 KEYWORD(110 || ES
, 130, SWITCH
);
2184 #line 343 "glsl_lexer.lpp"
2185 KEYWORD(110 || ES
, 130, DEFAULT
);
2189 #line 344 "glsl_lexer.lpp"
2190 KEYWORD(110 || ES
, 999, INLINE_TOK
);
2194 #line 345 "glsl_lexer.lpp"
2195 KEYWORD(110 || ES
, 999, NOINLINE
);
2199 #line 346 "glsl_lexer.lpp"
2200 KEYWORD(110 || ES
, 999, VOLATILE
);
2204 #line 347 "glsl_lexer.lpp"
2205 KEYWORD(110 || ES
, 999, PUBLIC_TOK
);
2209 #line 348 "glsl_lexer.lpp"
2210 KEYWORD(110 || ES
, 999, STATIC
);
2214 #line 349 "glsl_lexer.lpp"
2215 KEYWORD(110 || ES
, 999, EXTERN
);
2219 #line 350 "glsl_lexer.lpp"
2220 KEYWORD(110 || ES
, 999, EXTERNAL
);
2224 #line 351 "glsl_lexer.lpp"
2225 KEYWORD(110 || ES
, 999, INTERFACE
);
2229 #line 352 "glsl_lexer.lpp"
2230 KEYWORD(110 || ES
, 999, LONG_TOK
);
2234 #line 353 "glsl_lexer.lpp"
2235 KEYWORD(110 || ES
, 999, SHORT_TOK
);
2239 #line 354 "glsl_lexer.lpp"
2240 KEYWORD(110 || ES
, 400, DOUBLE_TOK
);
2244 #line 355 "glsl_lexer.lpp"
2245 KEYWORD(110 || ES
, 999, HALF
);
2249 #line 356 "glsl_lexer.lpp"
2250 KEYWORD(110 || ES
, 999, FIXED_TOK
);
2254 #line 357 "glsl_lexer.lpp"
2255 KEYWORD(110 || ES
, 999, UNSIGNED
);
2259 #line 358 "glsl_lexer.lpp"
2260 KEYWORD(110 || ES
, 999, INPUT_TOK
);
2264 #line 359 "glsl_lexer.lpp"
2265 KEYWORD(110 || ES
, 999, OUTPUT
);
2269 #line 360 "glsl_lexer.lpp"
2270 KEYWORD(110 || ES
, 999, HVEC2
);
2274 #line 361 "glsl_lexer.lpp"
2275 KEYWORD(110 || ES
, 999, HVEC3
);
2279 #line 362 "glsl_lexer.lpp"
2280 KEYWORD(110 || ES
, 999, HVEC4
);
2284 #line 363 "glsl_lexer.lpp"
2285 KEYWORD(110 || ES
, 400, DVEC2
);
2289 #line 364 "glsl_lexer.lpp"
2290 KEYWORD(110 || ES
, 400, DVEC3
);
2294 #line 365 "glsl_lexer.lpp"
2295 KEYWORD(110 || ES
, 400, DVEC4
);
2299 #line 366 "glsl_lexer.lpp"
2300 KEYWORD(110 || ES
, 999, FVEC2
);
2304 #line 367 "glsl_lexer.lpp"
2305 KEYWORD(110 || ES
, 999, FVEC3
);
2309 #line 368 "glsl_lexer.lpp"
2310 KEYWORD(110 || ES
, 999, FVEC4
);
2314 #line 369 "glsl_lexer.lpp"
2315 return SAMPLER2DRECT
;
2319 #line 370 "glsl_lexer.lpp"
2320 KEYWORD(110 || ES
, 999, SAMPLER3DRECT
);
2324 #line 371 "glsl_lexer.lpp"
2325 return SAMPLER2DRECTSHADOW
;
2329 #line 372 "glsl_lexer.lpp"
2330 KEYWORD(110 || ES
, 999, SIZEOF
);
2334 #line 373 "glsl_lexer.lpp"
2335 KEYWORD(110 || ES
, 999, CAST
);
2339 #line 374 "glsl_lexer.lpp"
2340 KEYWORD(110 || ES
, 999, NAMESPACE
);
2344 #line 375 "glsl_lexer.lpp"
2345 KEYWORD(110 || ES
, 999, USING
);
2347 /* Additional reserved words in GLSL 1.20. */
2350 #line 378 "glsl_lexer.lpp"
2351 KEYWORD(120, 130 || ES
, LOWP
);
2355 #line 379 "glsl_lexer.lpp"
2356 KEYWORD(120, 130 || ES
, MEDIUMP
);
2360 #line 380 "glsl_lexer.lpp"
2361 KEYWORD(120, 130 || ES
, HIGHP
);
2365 #line 381 "glsl_lexer.lpp"
2366 KEYWORD(120, 130 || ES
, PRECISION
);
2368 /* Additional reserved words in GLSL 1.30. */
2371 #line 384 "glsl_lexer.lpp"
2372 KEYWORD(130, 130, CASE
);
2376 #line 385 "glsl_lexer.lpp"
2377 KEYWORD(130, 999, COMMON
);
2381 #line 386 "glsl_lexer.lpp"
2382 KEYWORD(130, 999, PARTITION
);
2386 #line 387 "glsl_lexer.lpp"
2387 KEYWORD(130, 999, ACTIVE
);
2391 #line 388 "glsl_lexer.lpp"
2392 KEYWORD(130 || ES
, 999, SUPERP
);
2396 #line 389 "glsl_lexer.lpp"
2397 KEYWORD(130, 140, SAMPLERBUFFER
);
2401 #line 390 "glsl_lexer.lpp"
2402 KEYWORD(130, 999, FILTER
);
2406 #line 391 "glsl_lexer.lpp"
2407 KEYWORD(130, 999, IMAGE1D
);
2411 #line 392 "glsl_lexer.lpp"
2412 KEYWORD(130, 999, IMAGE2D
);
2416 #line 393 "glsl_lexer.lpp"
2417 KEYWORD(130, 999, IMAGE3D
);
2421 #line 394 "glsl_lexer.lpp"
2422 KEYWORD(130, 999, IMAGECUBE
);
2426 #line 395 "glsl_lexer.lpp"
2427 KEYWORD(130, 999, IIMAGE1D
);
2431 #line 396 "glsl_lexer.lpp"
2432 KEYWORD(130, 999, IIMAGE2D
);
2436 #line 397 "glsl_lexer.lpp"
2437 KEYWORD(130, 999, IIMAGE3D
);
2441 #line 398 "glsl_lexer.lpp"
2442 KEYWORD(130, 999, IIMAGECUBE
);
2446 #line 399 "glsl_lexer.lpp"
2447 KEYWORD(130, 999, UIMAGE1D
);
2451 #line 400 "glsl_lexer.lpp"
2452 KEYWORD(130, 999, UIMAGE2D
);
2456 #line 401 "glsl_lexer.lpp"
2457 KEYWORD(130, 999, UIMAGE3D
);
2461 #line 402 "glsl_lexer.lpp"
2462 KEYWORD(130, 999, UIMAGECUBE
);
2466 #line 403 "glsl_lexer.lpp"
2467 KEYWORD(130, 999, IMAGE1DARRAY
);
2471 #line 404 "glsl_lexer.lpp"
2472 KEYWORD(130, 999, IMAGE2DARRAY
);
2476 #line 405 "glsl_lexer.lpp"
2477 KEYWORD(130, 999, IIMAGE1DARRAY
);
2481 #line 406 "glsl_lexer.lpp"
2482 KEYWORD(130, 999, IIMAGE2DARRAY
);
2486 #line 407 "glsl_lexer.lpp"
2487 KEYWORD(130, 999, UIMAGE1DARRAY
);
2491 #line 408 "glsl_lexer.lpp"
2492 KEYWORD(130, 999, UIMAGE2DARRAY
);
2496 #line 409 "glsl_lexer.lpp"
2497 KEYWORD(130, 999, IMAGE1DSHADOW
);
2501 #line 410 "glsl_lexer.lpp"
2502 KEYWORD(130, 999, IMAGE2DSHADOW
);
2506 #line 411 "glsl_lexer.lpp"
2507 KEYWORD(130, 999, IMAGE1DARRAYSHADOW
);
2511 #line 412 "glsl_lexer.lpp"
2512 KEYWORD(130, 999, IMAGE2DARRAYSHADOW
);
2516 #line 413 "glsl_lexer.lpp"
2517 KEYWORD(130, 999, IMAGEBUFFER
);
2521 #line 414 "glsl_lexer.lpp"
2522 KEYWORD(130, 999, IIMAGEBUFFER
);
2526 #line 415 "glsl_lexer.lpp"
2527 KEYWORD(130, 999, UIMAGEBUFFER
);
2531 #line 416 "glsl_lexer.lpp"
2532 KEYWORD(130, 999, ROW_MAJOR
);
2536 #line 418 "glsl_lexer.lpp"
2538 struct _mesa_glsl_parse_state
*state
= yyextra
;
2540 yylval
->identifier
= talloc_strdup(ctx
, yytext
);
2546 #line 425 "glsl_lexer.lpp"
2547 { return yytext
[0]; }
2551 #line 427 "glsl_lexer.lpp"
2554 #line 2555 "glsl_lexer.cpp"
2555 case YY_STATE_EOF(INITIAL
):
2556 case YY_STATE_EOF(PP
):
2557 case YY_STATE_EOF(PRAGMA
):
2560 case YY_END_OF_BUFFER
:
2562 /* Amount of text matched not including the EOB char. */
2563 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
2565 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2566 *yy_cp
= yyg
->yy_hold_char
;
2567 YY_RESTORE_YY_MORE_OFFSET
2569 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
2571 /* We're scanning a new file or input source. It's
2572 * possible that this happened because the user
2573 * just pointed yyin at a new source and called
2574 * _mesa_glsl_lex(). If so, then we have to assure
2575 * consistency between YY_CURRENT_BUFFER and our
2576 * globals. Here is the right place to do so, because
2577 * this is the first action (other than possibly a
2578 * back-up) that will match for the new input source.
2580 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2581 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
2582 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
2585 /* Note that here we test for yy_c_buf_p "<=" to the position
2586 * of the first EOB in the buffer, since yy_c_buf_p will
2587 * already have been incremented past the NUL character
2588 * (since all states make transitions on EOB to the
2589 * end-of-buffer state). Contrast this with the test
2592 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2593 { /* This was really a NUL. */
2594 yy_state_type yy_next_state
;
2596 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2598 yy_current_state
= yy_get_previous_state( yyscanner
);
2600 /* Okay, we're now positioned to make the NUL
2601 * transition. We couldn't have
2602 * yy_get_previous_state() go ahead and do it
2603 * for us because it doesn't know how to deal
2604 * with the possibility of jamming (and we don't
2605 * want to build jamming into it because then it
2606 * will run more slowly).
2609 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2611 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2613 if ( yy_next_state
)
2615 /* Consume the NUL. */
2616 yy_cp
= ++yyg
->yy_c_buf_p
;
2617 yy_current_state
= yy_next_state
;
2623 yy_cp
= yyg
->yy_last_accepting_cpos
;
2624 yy_current_state
= yyg
->yy_last_accepting_state
;
2625 goto yy_find_action
;
2629 else switch ( yy_get_next_buffer( yyscanner
) )
2631 case EOB_ACT_END_OF_FILE
:
2633 yyg
->yy_did_buffer_switch_on_eof
= 0;
2635 if ( _mesa_glsl_wrap(yyscanner
) )
2637 /* Note: because we've taken care in
2638 * yy_get_next_buffer() to have set up
2639 * yytext, we can now set up
2640 * yy_c_buf_p so that if some total
2641 * hoser (like flex itself) wants to
2642 * call the scanner after we return the
2643 * YY_NULL, it'll still work - another
2644 * YY_NULL will get returned.
2646 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2648 yy_act
= YY_STATE_EOF(YY_START
);
2654 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2660 case EOB_ACT_CONTINUE_SCAN
:
2662 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2664 yy_current_state
= yy_get_previous_state( yyscanner
);
2666 yy_cp
= yyg
->yy_c_buf_p
;
2667 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2670 case EOB_ACT_LAST_MATCH
:
2672 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2674 yy_current_state
= yy_get_previous_state( yyscanner
);
2676 yy_cp
= yyg
->yy_c_buf_p
;
2677 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2678 goto yy_find_action
;
2685 "fatal flex scanner internal error--no action found" );
2686 } /* end of action switch */
2687 } /* end of scanning one token */
2688 } /* end of _mesa_glsl_lex */
2690 /* yy_get_next_buffer - try to read in a new buffer
2692 * Returns a code representing an action:
2693 * EOB_ACT_LAST_MATCH -
2694 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2695 * EOB_ACT_END_OF_FILE - end of file
2697 static int yy_get_next_buffer (yyscan_t yyscanner
)
2699 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2700 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2701 register char *source
= yyg
->yytext_ptr
;
2702 register int number_to_move
, i
;
2705 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2707 "fatal flex scanner internal error--end of buffer missed" );
2709 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2710 { /* Don't try to fill the buffer, so this is an EOF. */
2711 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2713 /* We matched a single character, the EOB, so
2714 * treat this as a final EOF.
2716 return EOB_ACT_END_OF_FILE
;
2721 /* We matched some text prior to the EOB, first
2724 return EOB_ACT_LAST_MATCH
;
2728 /* Try to read more data. */
2730 /* First move last chars to start of buffer. */
2731 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2733 for ( i
= 0; i
< number_to_move
; ++i
)
2734 *(dest
++) = *(source
++);
2736 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2737 /* don't do the read, it's not guaranteed to return an EOF,
2740 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2745 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2747 while ( num_to_read
<= 0 )
2748 { /* Not enough room in the buffer - grow it. */
2750 /* just a shorter name for the current buffer */
2751 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2753 int yy_c_buf_p_offset
=
2754 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2756 if ( b
->yy_is_our_buffer
)
2758 int new_size
= b
->yy_buf_size
* 2;
2760 if ( new_size
<= 0 )
2761 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2763 b
->yy_buf_size
*= 2;
2765 b
->yy_ch_buf
= (char *)
2766 /* Include room in for 2 EOB chars. */
2767 _mesa_glsl_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2770 /* Can't grow it, we don't own it. */
2773 if ( ! b
->yy_ch_buf
)
2775 "fatal error - scanner input buffer overflow" );
2777 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2779 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2784 if ( num_to_read
> YY_READ_BUF_SIZE
)
2785 num_to_read
= YY_READ_BUF_SIZE
;
2787 /* Read in more data. */
2788 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2789 yyg
->yy_n_chars
, (size_t) num_to_read
);
2791 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2794 if ( yyg
->yy_n_chars
== 0 )
2796 if ( number_to_move
== YY_MORE_ADJ
)
2798 ret_val
= EOB_ACT_END_OF_FILE
;
2799 _mesa_glsl_restart(yyin
,yyscanner
);
2804 ret_val
= EOB_ACT_LAST_MATCH
;
2805 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2806 YY_BUFFER_EOF_PENDING
;
2811 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2813 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2814 /* Extend the array by 50%, plus the number we really need. */
2815 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2816 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) _mesa_glsl_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2817 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2818 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2821 yyg
->yy_n_chars
+= number_to_move
;
2822 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2823 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2825 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2830 /* yy_get_previous_state - get the state just before the EOB char was reached */
2832 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2834 register yy_state_type yy_current_state
;
2835 register char *yy_cp
;
2836 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2838 yy_current_state
= yyg
->yy_start
;
2839 yy_current_state
+= YY_AT_BOL();
2841 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2843 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2844 if ( yy_accept
[yy_current_state
] )
2846 yyg
->yy_last_accepting_state
= yy_current_state
;
2847 yyg
->yy_last_accepting_cpos
= yy_cp
;
2849 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2851 yy_current_state
= (int) yy_def
[yy_current_state
];
2852 if ( yy_current_state
>= 836 )
2853 yy_c
= yy_meta
[(unsigned int) yy_c
];
2855 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2858 return yy_current_state
;
2861 /* yy_try_NUL_trans - try to make a transition on the NUL character
2864 * next_state = yy_try_NUL_trans( current_state );
2866 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2868 register int yy_is_jam
;
2869 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2870 register char *yy_cp
= yyg
->yy_c_buf_p
;
2872 register YY_CHAR yy_c
= 1;
2873 if ( yy_accept
[yy_current_state
] )
2875 yyg
->yy_last_accepting_state
= yy_current_state
;
2876 yyg
->yy_last_accepting_cpos
= yy_cp
;
2878 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2880 yy_current_state
= (int) yy_def
[yy_current_state
];
2881 if ( yy_current_state
>= 836 )
2882 yy_c
= yy_meta
[(unsigned int) yy_c
];
2884 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2885 yy_is_jam
= (yy_current_state
== 835);
2887 return yy_is_jam
? 0 : yy_current_state
;
2892 static int yyinput (yyscan_t yyscanner
)
2894 static int input (yyscan_t yyscanner
)
2899 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2901 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2903 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2905 /* yy_c_buf_p now points to the character we want to return.
2906 * If this occurs *before* the EOB characters, then it's a
2907 * valid NUL; if not, then we've hit the end of the buffer.
2909 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2910 /* This was really a NUL. */
2911 *yyg
->yy_c_buf_p
= '\0';
2914 { /* need more input */
2915 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2918 switch ( yy_get_next_buffer( yyscanner
) )
2920 case EOB_ACT_LAST_MATCH
:
2921 /* This happens because yy_g_n_b()
2922 * sees that we've accumulated a
2923 * token and flags that we need to
2924 * try matching the token before
2925 * proceeding. But for input(),
2926 * there's no matching to consider.
2927 * So convert the EOB_ACT_LAST_MATCH
2928 * to EOB_ACT_END_OF_FILE.
2931 /* Reset buffer status. */
2932 _mesa_glsl_restart(yyin
,yyscanner
);
2936 case EOB_ACT_END_OF_FILE
:
2938 if ( _mesa_glsl_wrap(yyscanner
) )
2941 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2944 return yyinput(yyscanner
);
2946 return input(yyscanner
);
2950 case EOB_ACT_CONTINUE_SCAN
:
2951 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2957 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2958 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2959 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2961 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2965 #endif /* ifndef YY_NO_INPUT */
2967 /** Immediately switch to a different input stream.
2968 * @param input_file A readable stream.
2969 * @param yyscanner The scanner object.
2970 * @note This function does not reset the start condition to @c INITIAL .
2972 void _mesa_glsl_restart (FILE * input_file
, yyscan_t yyscanner
)
2974 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2976 if ( ! YY_CURRENT_BUFFER
){
2977 _mesa_glsl_ensure_buffer_stack (yyscanner
);
2978 YY_CURRENT_BUFFER_LVALUE
=
2979 _mesa_glsl__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2982 _mesa_glsl__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2983 _mesa_glsl__load_buffer_state(yyscanner
);
2986 /** Switch to a different input buffer.
2987 * @param new_buffer The new input buffer.
2988 * @param yyscanner The scanner object.
2990 void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2992 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2994 /* TODO. We should be able to replace this entire function body
2996 * _mesa_glsl_pop_buffer_state();
2997 * _mesa_glsl_push_buffer_state(new_buffer);
2999 _mesa_glsl_ensure_buffer_stack (yyscanner
);
3000 if ( YY_CURRENT_BUFFER
== new_buffer
)
3003 if ( YY_CURRENT_BUFFER
)
3005 /* Flush out information for old buffer. */
3006 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3007 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3008 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3011 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3012 _mesa_glsl__load_buffer_state(yyscanner
);
3014 /* We don't actually know whether we did this switch during
3015 * EOF (_mesa_glsl_wrap()) processing, but the only time this flag
3016 * is looked at is after _mesa_glsl_wrap() is called, so it's safe
3017 * to go ahead and always set it.
3019 yyg
->yy_did_buffer_switch_on_eof
= 1;
3022 static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner
)
3024 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3025 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
3026 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
3027 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
3028 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
3031 /** Allocate and initialize an input buffer state.
3032 * @param file A readable stream.
3033 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3034 * @param yyscanner The scanner object.
3035 * @return the allocated buffer state.
3037 YY_BUFFER_STATE
_mesa_glsl__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
3041 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3043 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3045 b
->yy_buf_size
= size
;
3047 /* yy_ch_buf has to be 2 characters longer than the size given because
3048 * we need to put in 2 end-of-buffer characters.
3050 b
->yy_ch_buf
= (char *) _mesa_glsl_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
3051 if ( ! b
->yy_ch_buf
)
3052 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__create_buffer()" );
3054 b
->yy_is_our_buffer
= 1;
3056 _mesa_glsl__init_buffer(b
,file
,yyscanner
);
3061 /** Destroy the buffer.
3062 * @param b a buffer created with _mesa_glsl__create_buffer()
3063 * @param yyscanner The scanner object.
3065 void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3067 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3072 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
3073 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
3075 if ( b
->yy_is_our_buffer
)
3076 _mesa_glsl_free((void *) b
->yy_ch_buf
,yyscanner
);
3078 _mesa_glsl_free((void *) b
,yyscanner
);
3081 /* Initializes or reinitializes a buffer.
3082 * This function is sometimes called more than once on the same buffer,
3083 * such as during a _mesa_glsl_restart() or at EOF.
3085 static void _mesa_glsl__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
3089 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3091 _mesa_glsl__flush_buffer(b
,yyscanner
);
3093 b
->yy_input_file
= file
;
3094 b
->yy_fill_buffer
= 1;
3096 /* If b is the current buffer, then _mesa_glsl__init_buffer was _probably_
3097 * called from _mesa_glsl_restart() or through yy_get_next_buffer.
3098 * In that case, we don't want to reset the lineno or column.
3100 if (b
!= YY_CURRENT_BUFFER
){
3101 b
->yy_bs_lineno
= 1;
3102 b
->yy_bs_column
= 0;
3105 b
->yy_is_interactive
= 0;
3110 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3111 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3112 * @param yyscanner The scanner object.
3114 void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
3116 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3122 /* We always need two end-of-buffer characters. The first causes
3123 * a transition to the end-of-buffer state. The second causes
3124 * a jam in that state.
3126 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
3127 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
3129 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
3132 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3134 if ( b
== YY_CURRENT_BUFFER
)
3135 _mesa_glsl__load_buffer_state(yyscanner
);
3138 /** Pushes the new state onto the stack. The new state becomes
3139 * the current state. This function will allocate the stack
3141 * @param new_buffer The new state.
3142 * @param yyscanner The scanner object.
3144 void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
3146 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3147 if (new_buffer
== NULL
)
3150 _mesa_glsl_ensure_buffer_stack(yyscanner
);
3152 /* This block is copied from _mesa_glsl__switch_to_buffer. */
3153 if ( YY_CURRENT_BUFFER
)
3155 /* Flush out information for old buffer. */
3156 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
3157 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
3158 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
3161 /* Only push if top exists. Otherwise, replace top. */
3162 if (YY_CURRENT_BUFFER
)
3163 yyg
->yy_buffer_stack_top
++;
3164 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
3166 /* copied from _mesa_glsl__switch_to_buffer. */
3167 _mesa_glsl__load_buffer_state(yyscanner
);
3168 yyg
->yy_did_buffer_switch_on_eof
= 1;
3171 /** Removes and deletes the top of the stack, if present.
3172 * The next element becomes the new top.
3173 * @param yyscanner The scanner object.
3175 void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner
)
3177 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3178 if (!YY_CURRENT_BUFFER
)
3181 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3182 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3183 if (yyg
->yy_buffer_stack_top
> 0)
3184 --yyg
->yy_buffer_stack_top
;
3186 if (YY_CURRENT_BUFFER
) {
3187 _mesa_glsl__load_buffer_state(yyscanner
);
3188 yyg
->yy_did_buffer_switch_on_eof
= 1;
3192 /* Allocates the stack if it does not exist.
3193 * Guarantees space for at least one push.
3195 static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner
)
3198 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3200 if (!yyg
->yy_buffer_stack
) {
3202 /* First allocation is just for 2 elements, since we don't know if this
3203 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3204 * immediate realloc on the next call.
3207 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_alloc
3208 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
3210 if ( ! yyg
->yy_buffer_stack
)
3211 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3213 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
3215 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3216 yyg
->yy_buffer_stack_top
= 0;
3220 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
3222 /* Increase the buffer to prepare for a possible push. */
3223 int grow_size
= 8 /* arbitrary grow size */;
3225 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
3226 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)_mesa_glsl_realloc
3227 (yyg
->yy_buffer_stack
,
3228 num_to_alloc
* sizeof(struct yy_buffer_state
*)
3230 if ( ! yyg
->yy_buffer_stack
)
3231 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_ensure_buffer_stack()" );
3233 /* zero only the new slots.*/
3234 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
3235 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3239 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3240 * @param base the character buffer
3241 * @param size the size in bytes of the character buffer
3242 * @param yyscanner The scanner object.
3243 * @return the newly allocated buffer state object.
3245 YY_BUFFER_STATE
_mesa_glsl__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
3250 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
3251 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
3252 /* They forgot to leave room for the EOB's. */
3255 b
= (YY_BUFFER_STATE
) _mesa_glsl_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3257 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_buffer()" );
3259 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
3260 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
3261 b
->yy_is_our_buffer
= 0;
3262 b
->yy_input_file
= 0;
3263 b
->yy_n_chars
= b
->yy_buf_size
;
3264 b
->yy_is_interactive
= 0;
3266 b
->yy_fill_buffer
= 0;
3267 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3269 _mesa_glsl__switch_to_buffer(b
,yyscanner
);
3274 /** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lex() will
3275 * scan from a @e copy of @a str.
3276 * @param yystr a NUL-terminated string to scan
3277 * @param yyscanner The scanner object.
3278 * @return the newly allocated buffer state object.
3279 * @note If you want to scan bytes that may contain NUL values, then use
3280 * _mesa_glsl__scan_bytes() instead.
3282 YY_BUFFER_STATE
_mesa_glsl__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
3285 return _mesa_glsl__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
3288 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
3289 * scan from a @e copy of @a bytes.
3290 * @param bytes the byte buffer to scan
3291 * @param len the number of bytes in the buffer pointed to by @a bytes.
3292 * @param yyscanner The scanner object.
3293 * @return the newly allocated buffer state object.
3295 YY_BUFFER_STATE
_mesa_glsl__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
3302 /* Get memory for full buffer, including space for trailing EOB's. */
3303 n
= _yybytes_len
+ 2;
3304 buf
= (char *) _mesa_glsl_alloc(n
,yyscanner
);
3306 YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl__scan_bytes()" );
3308 for ( i
= 0; i
< _yybytes_len
; ++i
)
3309 buf
[i
] = yybytes
[i
];
3311 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
3313 b
= _mesa_glsl__scan_buffer(buf
,n
,yyscanner
);
3315 YY_FATAL_ERROR( "bad buffer in _mesa_glsl__scan_bytes()" );
3317 /* It's okay to grow etc. this buffer, and we should throw it
3318 * away when we're done.
3320 b
->yy_is_our_buffer
= 1;
3325 #ifndef YY_EXIT_FAILURE
3326 #define YY_EXIT_FAILURE 2
3329 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
3331 (void) fprintf( stderr
, "%s\n", msg
);
3332 exit( YY_EXIT_FAILURE
);
3335 /* Redefine yyless() so it works in section 3 code. */
3341 /* Undo effects of setting up yytext. */ \
3342 int yyless_macro_arg = (n); \
3343 YY_LESS_LINENO(yyless_macro_arg);\
3344 yytext[yyleng] = yyg->yy_hold_char; \
3345 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3346 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3347 *yyg->yy_c_buf_p = '\0'; \
3348 yyleng = yyless_macro_arg; \
3352 /* Accessor methods (get/set functions) to struct members. */
3354 /** Get the user-defined data for this scanner.
3355 * @param yyscanner The scanner object.
3357 YY_EXTRA_TYPE
_mesa_glsl_get_extra (yyscan_t yyscanner
)
3359 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3363 /** Get the current line number.
3364 * @param yyscanner The scanner object.
3366 int _mesa_glsl_get_lineno (yyscan_t yyscanner
)
3368 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3370 if (! YY_CURRENT_BUFFER
)
3376 /** Get the current column number.
3377 * @param yyscanner The scanner object.
3379 int _mesa_glsl_get_column (yyscan_t yyscanner
)
3381 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3383 if (! YY_CURRENT_BUFFER
)
3389 /** Get the input stream.
3390 * @param yyscanner The scanner object.
3392 FILE *_mesa_glsl_get_in (yyscan_t yyscanner
)
3394 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3398 /** Get the output stream.
3399 * @param yyscanner The scanner object.
3401 FILE *_mesa_glsl_get_out (yyscan_t yyscanner
)
3403 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3407 /** Get the length of the current token.
3408 * @param yyscanner The scanner object.
3410 int _mesa_glsl_get_leng (yyscan_t yyscanner
)
3412 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3416 /** Get the current token.
3417 * @param yyscanner The scanner object.
3420 char *_mesa_glsl_get_text (yyscan_t yyscanner
)
3422 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3426 /** Set the user-defined data. This data is never touched by the scanner.
3427 * @param user_defined The data to be associated with this scanner.
3428 * @param yyscanner The scanner object.
3430 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
3432 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3433 yyextra
= user_defined
;
3436 /** Set the current line number.
3437 * @param line_number
3438 * @param yyscanner The scanner object.
3440 void _mesa_glsl_set_lineno (int line_number
, yyscan_t yyscanner
)
3442 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3444 /* lineno is only valid if an input buffer exists. */
3445 if (! YY_CURRENT_BUFFER
)
3446 yy_fatal_error( "_mesa_glsl_set_lineno called with no buffer" , yyscanner
);
3448 yylineno
= line_number
;
3451 /** Set the current column.
3452 * @param line_number
3453 * @param yyscanner The scanner object.
3455 void _mesa_glsl_set_column (int column_no
, yyscan_t yyscanner
)
3457 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3459 /* column is only valid if an input buffer exists. */
3460 if (! YY_CURRENT_BUFFER
)
3461 yy_fatal_error( "_mesa_glsl_set_column called with no buffer" , yyscanner
);
3463 yycolumn
= column_no
;
3466 /** Set the input stream. This does not discard the current
3468 * @param in_str A readable stream.
3469 * @param yyscanner The scanner object.
3470 * @see _mesa_glsl__switch_to_buffer
3472 void _mesa_glsl_set_in (FILE * in_str
, yyscan_t yyscanner
)
3474 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3478 void _mesa_glsl_set_out (FILE * out_str
, yyscan_t yyscanner
)
3480 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3484 int _mesa_glsl_get_debug (yyscan_t yyscanner
)
3486 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3487 return yy_flex_debug
;
3490 void _mesa_glsl_set_debug (int bdebug
, yyscan_t yyscanner
)
3492 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3493 yy_flex_debug
= bdebug
;
3496 /* Accessor methods for yylval and yylloc */
3498 YYSTYPE
* _mesa_glsl_get_lval (yyscan_t yyscanner
)
3500 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3504 void _mesa_glsl_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3506 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3507 yylval
= yylval_param
;
3510 YYLTYPE
*_mesa_glsl_get_lloc (yyscan_t yyscanner
)
3512 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3516 void _mesa_glsl_set_lloc (YYLTYPE
* yylloc_param
, yyscan_t yyscanner
)
3518 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3519 yylloc
= yylloc_param
;
3522 /* User-visible API */
3524 /* _mesa_glsl_lex_init is special because it creates the scanner itself, so it is
3525 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3526 * That's why we explicitly handle the declaration, instead of using our macros.
3529 int _mesa_glsl_lex_init(yyscan_t
* ptr_yy_globals
)
3532 if (ptr_yy_globals
== NULL
){
3537 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), NULL
);
3539 if (*ptr_yy_globals
== NULL
){
3544 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3545 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3547 return yy_init_globals ( *ptr_yy_globals
);
3550 /* _mesa_glsl_lex_init_extra has the same functionality as _mesa_glsl_lex_init, but follows the
3551 * convention of taking the scanner as the last argument. Note however, that
3552 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3553 * is the reason, too, why this function also must handle its own declaration).
3554 * The user defined value in the first argument will be available to _mesa_glsl_alloc in
3555 * the yyextra field.
3558 int _mesa_glsl_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3561 struct yyguts_t dummy_yyguts
;
3563 _mesa_glsl_set_extra (yy_user_defined
, &dummy_yyguts
);
3565 if (ptr_yy_globals
== NULL
){
3570 *ptr_yy_globals
= (yyscan_t
) _mesa_glsl_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3572 if (*ptr_yy_globals
== NULL
){
3577 /* By setting to 0xAA, we expose bugs in
3578 yy_init_globals. Leave at 0x00 for releases. */
3579 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3581 _mesa_glsl_set_extra (yy_user_defined
, *ptr_yy_globals
);
3583 return yy_init_globals ( *ptr_yy_globals
);
3586 static int yy_init_globals (yyscan_t yyscanner
)
3588 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3589 /* Initialization is the same as for the non-reentrant scanner.
3590 * This function is called from _mesa_glsl_lex_destroy(), so don't allocate here.
3593 yyg
->yy_buffer_stack
= 0;
3594 yyg
->yy_buffer_stack_top
= 0;
3595 yyg
->yy_buffer_stack_max
= 0;
3596 yyg
->yy_c_buf_p
= (char *) 0;
3600 yyg
->yy_start_stack_ptr
= 0;
3601 yyg
->yy_start_stack_depth
= 0;
3602 yyg
->yy_start_stack
= NULL
;
3604 /* Defined in main.c */
3613 /* For future reference: Set errno on error, since we are called by
3614 * _mesa_glsl_lex_init()
3619 /* _mesa_glsl_lex_destroy is for both reentrant and non-reentrant scanners. */
3620 int _mesa_glsl_lex_destroy (yyscan_t yyscanner
)
3622 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3624 /* Pop the buffer stack, destroying each element. */
3625 while(YY_CURRENT_BUFFER
){
3626 _mesa_glsl__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3627 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3628 _mesa_glsl_pop_buffer_state(yyscanner
);
3631 /* Destroy the stack itself. */
3632 _mesa_glsl_free(yyg
->yy_buffer_stack
,yyscanner
);
3633 yyg
->yy_buffer_stack
= NULL
;
3635 /* Destroy the start condition stack. */
3636 _mesa_glsl_free(yyg
->yy_start_stack
,yyscanner
);
3637 yyg
->yy_start_stack
= NULL
;
3639 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3640 * _mesa_glsl_lex() is called, initialization will occur. */
3641 yy_init_globals( yyscanner
);
3643 /* Destroy the main struct (reentrant only). */
3644 _mesa_glsl_free ( yyscanner
, yyscanner
);
3650 * Internal utility routines.
3654 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3657 for ( i
= 0; i
< n
; ++i
)
3662 #ifdef YY_NEED_STRLEN
3663 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3666 for ( n
= 0; s
[n
]; ++n
)
3673 void *_mesa_glsl_alloc (yy_size_t size
, yyscan_t yyscanner
)
3675 return (void *) malloc( size
);
3678 void *_mesa_glsl_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3680 /* The cast to (char *) in the following accommodates both
3681 * implementations that use char* generic pointers, and those
3682 * that use void* generic pointers. It works with the latter
3683 * because both ANSI C and C++ allow castless assignment from
3684 * any pointer type to void*, and deal with argument conversions
3685 * as though doing an assignment.
3687 return (void *) realloc( (char *) ptr
, size
);
3690 void _mesa_glsl_free (void * ptr
, yyscan_t yyscanner
)
3692 free( (char *) ptr
); /* see _mesa_glsl_realloc() for (char *) cast */
3695 #define YYTABLES_NAME "yytables"
3697 #line 427 "glsl_lexer.lpp"
3702 _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state
*state
, const char *string
)
3704 _mesa_glsl_lex_init_extra(state
,& state
->scanner
);
3705 _mesa_glsl__scan_string(string
,state
->scanner
);
3709 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state
*state
)
3711 _mesa_glsl_lex_destroy(state
->scanner
);