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