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> 44 typedef int8_t flex_int8_t; 45 typedef uint8_t flex_uint8_t; 46 typedef int16_t flex_int16_t; 47 typedef uint16_t flex_uint16_t; 48 typedef int32_t flex_int32_t; 49 typedef uint32_t flex_uint32_t; 50 #else 51 typedef signed char flex_int8_t; 52 typedef short int flex_int16_t; 53 typedef int flex_int32_t; 54 typedef unsigned char flex_uint8_t; 55 typedef unsigned short int flex_uint16_t; 56 typedef unsigned int flex_uint32_t; 57 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 125 typedef 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 179 typedef 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 206 typedef size_t yy_size_t; 207 #endif 208 209 #ifndef YY_STRUCT_YY_BUFFER_STATE 210 #define YY_STRUCT_YY_BUFFER_STATE 211 struct 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 289 void _mesa_glsl_restart (FILE *input_file ,yyscan_t yyscanner ); 290 void _mesa_glsl__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); 291 YY_BUFFER_STATE _mesa_glsl__create_buffer (FILE *file,int size ,yyscan_t yyscanner ); 292 void _mesa_glsl__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); 293 void _mesa_glsl__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); 294 void _mesa_glsl_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); 295 void _mesa_glsl_pop_buffer_state (yyscan_t yyscanner ); 296 297 static void _mesa_glsl_ensure_buffer_stack (yyscan_t yyscanner ); 298 static void _mesa_glsl__load_buffer_state (yyscan_t yyscanner ); 299 static 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 303 YY_BUFFER_STATE _mesa_glsl__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); 304 YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); 305 YY_BUFFER_STATE _mesa_glsl__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); 306 307 void *_mesa_glsl_alloc (yy_size_t ,yyscan_t yyscanner ); 308 void *_mesa_glsl_realloc (void *,yy_size_t ,yyscan_t yyscanner ); 309 void _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 340 typedef unsigned char YY_CHAR; 341 342 typedef int yy_state_type; 343 344 #define yytext_ptr yytext_r 345 346 static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); 347 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); 348 static int yy_get_next_buffer (yyscan_t yyscanner ); 349 static 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. */ 365 struct yy_trans_info 366 { 367 flex_int32_t yy_verify; 368 flex_int32_t yy_nxt; 369 }; 370 static 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 469 static 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 501 static 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 512 static 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 612 static 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 712 static 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 861 static 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 1048 static 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 1101 static int 1102 literal_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. */ 1155 struct 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 1192 static 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 1200 int _mesa_glsl_lex_init (yyscan_t* scanner); 1201 1202 int _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 1207 int _mesa_glsl_lex_destroy (yyscan_t yyscanner ); 1208 1209 int _mesa_glsl_get_debug (yyscan_t yyscanner ); 1210 1211 void _mesa_glsl_set_debug (int debug_flag ,yyscan_t yyscanner ); 1212 1213 YY_EXTRA_TYPE _mesa_glsl_get_extra (yyscan_t yyscanner ); 1214 1215 void _mesa_glsl_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); 1216 1217 FILE *_mesa_glsl_get_in (yyscan_t yyscanner ); 1218 1219 void _mesa_glsl_set_in (FILE * in_str ,yyscan_t yyscanner ); 1220 1221 FILE *_mesa_glsl_get_out (yyscan_t yyscanner ); 1222 1223 void _mesa_glsl_set_out (FILE * out_str ,yyscan_t yyscanner ); 1224 1225 int _mesa_glsl_get_leng (yyscan_t yyscanner ); 1226 1227 char *_mesa_glsl_get_text (yyscan_t yyscanner ); 1228 1229 int _mesa_glsl_get_lineno (yyscan_t yyscanner ); 1230 1231 void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner ); 1232 1233 YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner ); 1234 1235 void _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 1247 extern "C" int _mesa_glsl_wrap (yyscan_t yyscanner ); 1248 #else 1249 extern int _mesa_glsl_wrap (yyscan_t yyscanner ); 1250 #endif 1251 #endif 1252 1253 #ifndef yytext_ptr 1254 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); 1255 #endif 1256 1257 #ifdef YY_NEED_STRLEN 1258 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); 1259 #endif 1260 1261 #ifndef YY_NO_INPUT 1262 1263 #ifdef __cplusplus 1264 static int yyinput (yyscan_t yyscanner ); 1265 #else 1266 static 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 1351 extern 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 */ 1378 YY_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(); 1434 yy_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 1456 yy_find_action: 1457 yy_act = yy_accept[yy_current_state]; 1458 1459 YY_DO_BEFORE_ACTION; 1460 1461 do_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 1472 case 1: 1473 YY_RULE_SETUP 1474 #line 147 "src/src/glsl/glsl_lexer.ll" 1475 ; 1476 YY_BREAK 1477 /* Preprocessor tokens. */ 1478 case 2: 1479 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1480 yyg->yy_c_buf_p = yy_cp -= 1; 1481 YY_DO_BEFORE_ACTION; /* set up yytext again */ 1482 YY_RULE_SETUP 1483 #line 150 "src/src/glsl/glsl_lexer.ll" 1484 ; 1485 YY_BREAK 1486 case 3: 1487 YY_RULE_SETUP 1488 #line 151 "src/src/glsl/glsl_lexer.ll" 1489 { BEGIN PP; return VERSION_TOK; } 1490 YY_BREAK 1491 case 4: 1492 YY_RULE_SETUP 1493 #line 152 "src/src/glsl/glsl_lexer.ll" 1494 { BEGIN PP; return EXTENSION; } 1495 YY_BREAK 1496 case 5: 1497 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1498 yyg->yy_c_buf_p = yy_cp -= 1; 1499 YY_DO_BEFORE_ACTION; /* set up yytext again */ 1500 YY_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 1518 case 6: 1519 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1520 yyg->yy_c_buf_p = yy_cp -= 1; 1521 YY_DO_BEFORE_ACTION; /* set up yytext again */ 1522 YY_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 1539 case 7: 1540 YY_RULE_SETUP 1541 #line 182 "src/src/glsl/glsl_lexer.ll" 1542 { 1543 BEGIN PP; 1544 return PRAGMA_DEBUG_ON; 1545 } 1546 YY_BREAK 1547 case 8: 1548 YY_RULE_SETUP 1549 #line 186 "src/src/glsl/glsl_lexer.ll" 1550 { 1551 BEGIN PP; 1552 return PRAGMA_DEBUG_OFF; 1553 } 1554 YY_BREAK 1555 case 9: 1556 YY_RULE_SETUP 1557 #line 190 "src/src/glsl/glsl_lexer.ll" 1558 { 1559 BEGIN PP; 1560 return PRAGMA_OPTIMIZE_ON; 1561 } 1562 YY_BREAK 1563 case 10: 1564 YY_RULE_SETUP 1565 #line 194 "src/src/glsl/glsl_lexer.ll" 1566 { 1567 BEGIN PP; 1568 return PRAGMA_OPTIMIZE_OFF; 1569 } 1570 YY_BREAK 1571 case 11: 1572 YY_RULE_SETUP 1573 #line 198 "src/src/glsl/glsl_lexer.ll" 1574 { 1575 BEGIN PP; 1576 return PRAGMA_INVARIANT_ALL; 1577 } 1578 YY_BREAK 1579 case 12: 1580 YY_RULE_SETUP 1581 #line 202 "src/src/glsl/glsl_lexer.ll" 1582 { BEGIN PRAGMA; } 1583 YY_BREAK 1584 case 13: 1585 /* rule 13 can match eol */ 1586 YY_RULE_SETUP 1587 #line 204 "src/src/glsl/glsl_lexer.ll" 1588 { BEGIN 0; yylineno++; yycolumn = 0; } 1589 YY_BREAK 1590 case 14: 1591 YY_RULE_SETUP 1592 #line 205 "src/src/glsl/glsl_lexer.ll" 1593 { } 1594 YY_BREAK 1595 case 15: 1596 YY_RULE_SETUP 1597 #line 207 "src/src/glsl/glsl_lexer.ll" 1598 { } 1599 YY_BREAK 1600 case 16: 1601 YY_RULE_SETUP 1602 #line 208 "src/src/glsl/glsl_lexer.ll" 1603 { } 1604 YY_BREAK 1605 case 17: 1606 YY_RULE_SETUP 1607 #line 209 "src/src/glsl/glsl_lexer.ll" 1608 return COLON; 1609 YY_BREAK 1610 case 18: 1611 YY_RULE_SETUP 1612 #line 210 "src/src/glsl/glsl_lexer.ll" 1613 { 1614 yylval->identifier = strdup(yytext); 1615 return IDENTIFIER; 1616 } 1617 YY_BREAK 1618 case 19: 1619 YY_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 1626 case 20: 1627 /* rule 20 can match eol */ 1628 YY_RULE_SETUP 1629 #line 218 "src/src/glsl/glsl_lexer.ll" 1630 { BEGIN 0; yylineno++; yycolumn = 0; return EOL; } 1631 YY_BREAK 1632 case 21: 1633 /* rule 21 can match eol */ 1634 YY_RULE_SETUP 1635 #line 220 "src/src/glsl/glsl_lexer.ll" 1636 { yylineno++; yycolumn = 0; } 1637 YY_BREAK 1638 case 22: 1639 YY_RULE_SETUP 1640 #line 222 "src/src/glsl/glsl_lexer.ll" 1641 return ATTRIBUTE; 1642 YY_BREAK 1643 case 23: 1644 YY_RULE_SETUP 1645 #line 223 "src/src/glsl/glsl_lexer.ll" 1646 return CONST_TOK; 1647 YY_BREAK 1648 case 24: 1649 YY_RULE_SETUP 1650 #line 224 "src/src/glsl/glsl_lexer.ll" 1651 return BOOL_TOK; 1652 YY_BREAK 1653 case 25: 1654 YY_RULE_SETUP 1655 #line 225 "src/src/glsl/glsl_lexer.ll" 1656 return FLOAT_TOK; 1657 YY_BREAK 1658 case 26: 1659 YY_RULE_SETUP 1660 #line 226 "src/src/glsl/glsl_lexer.ll" 1661 return INT_TOK; 1662 YY_BREAK 1663 case 27: 1664 YY_RULE_SETUP 1665 #line 227 "src/src/glsl/glsl_lexer.ll" 1666 KEYWORD(130, 130, UINT_TOK); 1667 YY_BREAK 1668 case 28: 1669 YY_RULE_SETUP 1670 #line 229 "src/src/glsl/glsl_lexer.ll" 1671 return BREAK; 1672 YY_BREAK 1673 case 29: 1674 YY_RULE_SETUP 1675 #line 230 "src/src/glsl/glsl_lexer.ll" 1676 return CONTINUE; 1677 YY_BREAK 1678 case 30: 1679 YY_RULE_SETUP 1680 #line 231 "src/src/glsl/glsl_lexer.ll" 1681 return DO; 1682 YY_BREAK 1683 case 31: 1684 YY_RULE_SETUP 1685 #line 232 "src/src/glsl/glsl_lexer.ll" 1686 return WHILE; 1687 YY_BREAK 1688 case 32: 1689 YY_RULE_SETUP 1690 #line 233 "src/src/glsl/glsl_lexer.ll" 1691 return ELSE; 1692 YY_BREAK 1693 case 33: 1694 YY_RULE_SETUP 1695 #line 234 "src/src/glsl/glsl_lexer.ll" 1696 return FOR; 1697 YY_BREAK 1698 case 34: 1699 YY_RULE_SETUP 1700 #line 235 "src/src/glsl/glsl_lexer.ll" 1701 return IF; 1702 YY_BREAK 1703 case 35: 1704 YY_RULE_SETUP 1705 #line 236 "src/src/glsl/glsl_lexer.ll" 1706 return DISCARD; 1707 YY_BREAK 1708 case 36: 1709 YY_RULE_SETUP 1710 #line 237 "src/src/glsl/glsl_lexer.ll" 1711 return RETURN; 1712 YY_BREAK 1713 case 37: 1714 YY_RULE_SETUP 1715 #line 239 "src/src/glsl/glsl_lexer.ll" 1716 return BVEC2; 1717 YY_BREAK 1718 case 38: 1719 YY_RULE_SETUP 1720 #line 240 "src/src/glsl/glsl_lexer.ll" 1721 return BVEC3; 1722 YY_BREAK 1723 case 39: 1724 YY_RULE_SETUP 1725 #line 241 "src/src/glsl/glsl_lexer.ll" 1726 return BVEC4; 1727 YY_BREAK 1728 case 40: 1729 YY_RULE_SETUP 1730 #line 242 "src/src/glsl/glsl_lexer.ll" 1731 return IVEC2; 1732 YY_BREAK 1733 case 41: 1734 YY_RULE_SETUP 1735 #line 243 "src/src/glsl/glsl_lexer.ll" 1736 return IVEC3; 1737 YY_BREAK 1738 case 42: 1739 YY_RULE_SETUP 1740 #line 244 "src/src/glsl/glsl_lexer.ll" 1741 return IVEC4; 1742 YY_BREAK 1743 case 43: 1744 YY_RULE_SETUP 1745 #line 245 "src/src/glsl/glsl_lexer.ll" 1746 KEYWORD(130, 130, UVEC2); 1747 YY_BREAK 1748 case 44: 1749 YY_RULE_SETUP 1750 #line 246 "src/src/glsl/glsl_lexer.ll" 1751 KEYWORD(130, 130, UVEC3); 1752 YY_BREAK 1753 case 45: 1754 YY_RULE_SETUP 1755 #line 247 "src/src/glsl/glsl_lexer.ll" 1756 KEYWORD(130, 130, UVEC4); 1757 YY_BREAK 1758 case 46: 1759 YY_RULE_SETUP 1760 #line 248 "src/src/glsl/glsl_lexer.ll" 1761 return VEC2; 1762 YY_BREAK 1763 case 47: 1764 YY_RULE_SETUP 1765 #line 249 "src/src/glsl/glsl_lexer.ll" 1766 return VEC3; 1767 YY_BREAK 1768 case 48: 1769 YY_RULE_SETUP 1770 #line 250 "src/src/glsl/glsl_lexer.ll" 1771 return VEC4; 1772 YY_BREAK 1773 case 49: 1774 YY_RULE_SETUP 1775 #line 251 "src/src/glsl/glsl_lexer.ll" 1776 return MAT2X2; 1777 YY_BREAK 1778 case 50: 1779 YY_RULE_SETUP 1780 #line 252 "src/src/glsl/glsl_lexer.ll" 1781 return MAT3X3; 1782 YY_BREAK 1783 case 51: 1784 YY_RULE_SETUP 1785 #line 253 "src/src/glsl/glsl_lexer.ll" 1786 return MAT4X4; 1787 YY_BREAK 1788 case 52: 1789 YY_RULE_SETUP 1790 #line 254 "src/src/glsl/glsl_lexer.ll" 1791 KEYWORD(120, 120, MAT2X2); 1792 YY_BREAK 1793 case 53: 1794 YY_RULE_SETUP 1795 #line 255 "src/src/glsl/glsl_lexer.ll" 1796 KEYWORD(120, 120, MAT2X3); 1797 YY_BREAK 1798 case 54: 1799 YY_RULE_SETUP 1800 #line 256 "src/src/glsl/glsl_lexer.ll" 1801 KEYWORD(120, 120, MAT2X4); 1802 YY_BREAK 1803 case 55: 1804 YY_RULE_SETUP 1805 #line 257 "src/src/glsl/glsl_lexer.ll" 1806 KEYWORD(120, 120, MAT3X2); 1807 YY_BREAK 1808 case 56: 1809 YY_RULE_SETUP 1810 #line 258 "src/src/glsl/glsl_lexer.ll" 1811 KEYWORD(120, 120, MAT3X3); 1812 YY_BREAK 1813 case 57: 1814 YY_RULE_SETUP 1815 #line 259 "src/src/glsl/glsl_lexer.ll" 1816 KEYWORD(120, 120, MAT3X4); 1817 YY_BREAK 1818 case 58: 1819 YY_RULE_SETUP 1820 #line 260 "src/src/glsl/glsl_lexer.ll" 1821 KEYWORD(120, 120, MAT4X2); 1822 YY_BREAK 1823 case 59: 1824 YY_RULE_SETUP 1825 #line 261 "src/src/glsl/glsl_lexer.ll" 1826 KEYWORD(120, 120, MAT4X3); 1827 YY_BREAK 1828 case 60: 1829 YY_RULE_SETUP 1830 #line 262 "src/src/glsl/glsl_lexer.ll" 1831 KEYWORD(120, 120, MAT4X4); 1832 YY_BREAK 1833 case 61: 1834 YY_RULE_SETUP 1835 #line 264 "src/src/glsl/glsl_lexer.ll" 1836 return IN_TOK; 1837 YY_BREAK 1838 case 62: 1839 YY_RULE_SETUP 1840 #line 265 "src/src/glsl/glsl_lexer.ll" 1841 return OUT_TOK; 1842 YY_BREAK 1843 case 63: 1844 YY_RULE_SETUP 1845 #line 266 "src/src/glsl/glsl_lexer.ll" 1846 return INOUT_TOK; 1847 YY_BREAK 1848 case 64: 1849 YY_RULE_SETUP 1850 #line 267 "src/src/glsl/glsl_lexer.ll" 1851 return UNIFORM; 1852 YY_BREAK 1853 case 65: 1854 YY_RULE_SETUP 1855 #line 268 "src/src/glsl/glsl_lexer.ll" 1856 return VARYING; 1857 YY_BREAK 1858 case 66: 1859 YY_RULE_SETUP 1860 #line 269 "src/src/glsl/glsl_lexer.ll" 1861 KEYWORD(120, 120, CENTROID); 1862 YY_BREAK 1863 case 67: 1864 YY_RULE_SETUP 1865 #line 270 "src/src/glsl/glsl_lexer.ll" 1866 KEYWORD(120 || ES, 120 || ES, INVARIANT); 1867 YY_BREAK 1868 case 68: 1869 YY_RULE_SETUP 1870 #line 271 "src/src/glsl/glsl_lexer.ll" 1871 KEYWORD(130 || ES, 130, FLAT); 1872 YY_BREAK 1873 case 69: 1874 YY_RULE_SETUP 1875 #line 272 "src/src/glsl/glsl_lexer.ll" 1876 KEYWORD(130, 130, SMOOTH); 1877 YY_BREAK 1878 case 70: 1879 YY_RULE_SETUP 1880 #line 273 "src/src/glsl/glsl_lexer.ll" 1881 KEYWORD(130, 130, NOPERSPECTIVE); 1882 YY_BREAK 1883 case 71: 1884 YY_RULE_SETUP 1885 #line 275 "src/src/glsl/glsl_lexer.ll" 1886 return SAMPLER1D; 1887 YY_BREAK 1888 case 72: 1889 YY_RULE_SETUP 1890 #line 276 "src/src/glsl/glsl_lexer.ll" 1891 return SAMPLER2D; 1892 YY_BREAK 1893 case 73: 1894 YY_RULE_SETUP 1895 #line 277 "src/src/glsl/glsl_lexer.ll" 1896 return SAMPLER3D; 1897 YY_BREAK 1898 case 74: 1899 YY_RULE_SETUP 1900 #line 278 "src/src/glsl/glsl_lexer.ll" 1901 return SAMPLERCUBE; 1902 YY_BREAK 1903 case 75: 1904 YY_RULE_SETUP 1905 #line 279 "src/src/glsl/glsl_lexer.ll" 1906 KEYWORD(130, 130, SAMPLER1DARRAY); 1907 YY_BREAK 1908 case 76: 1909 YY_RULE_SETUP 1910 #line 280 "src/src/glsl/glsl_lexer.ll" 1911 KEYWORD(130, 130, SAMPLER2DARRAY); 1912 YY_BREAK 1913 case 77: 1914 YY_RULE_SETUP 1915 #line 281 "src/src/glsl/glsl_lexer.ll" 1916 return SAMPLER1DSHADOW; 1917 YY_BREAK 1918 case 78: 1919 YY_RULE_SETUP 1920 #line 282 "src/src/glsl/glsl_lexer.ll" 1921 return SAMPLER2DSHADOW; 1922 YY_BREAK 1923 case 79: 1924 YY_RULE_SETUP 1925 #line 283 "src/src/glsl/glsl_lexer.ll" 1926 KEYWORD(130, 130, SAMPLERCUBESHADOW); 1927 YY_BREAK 1928 case 80: 1929 YY_RULE_SETUP 1930 #line 284 "src/src/glsl/glsl_lexer.ll" 1931 KEYWORD(130, 130, SAMPLER1DARRAYSHADOW); 1932 YY_BREAK 1933 case 81: 1934 YY_RULE_SETUP 1935 #line 285 "src/src/glsl/glsl_lexer.ll" 1936 KEYWORD(130, 130, SAMPLER2DARRAYSHADOW); 1937 YY_BREAK 1938 case 82: 1939 YY_RULE_SETUP 1940 #line 286 "src/src/glsl/glsl_lexer.ll" 1941 KEYWORD(130, 130, ISAMPLER1D); 1942 YY_BREAK 1943 case 83: 1944 YY_RULE_SETUP 1945 #line 287 "src/src/glsl/glsl_lexer.ll" 1946 KEYWORD(130, 130, ISAMPLER2D); 1947 YY_BREAK 1948 case 84: 1949 YY_RULE_SETUP 1950 #line 288 "src/src/glsl/glsl_lexer.ll" 1951 KEYWORD(130, 130, ISAMPLER3D); 1952 YY_BREAK 1953 case 85: 1954 YY_RULE_SETUP 1955 #line 289 "src/src/glsl/glsl_lexer.ll" 1956 KEYWORD(130, 130, ISAMPLERCUBE); 1957 YY_BREAK 1958 case 86: 1959 YY_RULE_SETUP 1960 #line 290 "src/src/glsl/glsl_lexer.ll" 1961 KEYWORD(130, 130, ISAMPLER1DARRAY); 1962 YY_BREAK 1963 case 87: 1964 YY_RULE_SETUP 1965 #line 291 "src/src/glsl/glsl_lexer.ll" 1966 KEYWORD(130, 130, ISAMPLER2DARRAY); 1967 YY_BREAK 1968 case 88: 1969 YY_RULE_SETUP 1970 #line 292 "src/src/glsl/glsl_lexer.ll" 1971 KEYWORD(130, 130, USAMPLER1D); 1972 YY_BREAK 1973 case 89: 1974 YY_RULE_SETUP 1975 #line 293 "src/src/glsl/glsl_lexer.ll" 1976 KEYWORD(130, 130, USAMPLER2D); 1977 YY_BREAK 1978 case 90: 1979 YY_RULE_SETUP 1980 #line 294 "src/src/glsl/glsl_lexer.ll" 1981 KEYWORD(130, 130, USAMPLER3D); 1982 YY_BREAK 1983 case 91: 1984 YY_RULE_SETUP 1985 #line 295 "src/src/glsl/glsl_lexer.ll" 1986 KEYWORD(130, 130, USAMPLERCUBE); 1987 YY_BREAK 1988 case 92: 1989 YY_RULE_SETUP 1990 #line 296 "src/src/glsl/glsl_lexer.ll" 1991 KEYWORD(130, 130, USAMPLER1DARRAY); 1992 YY_BREAK 1993 case 93: 1994 YY_RULE_SETUP 1995 #line 297 "src/src/glsl/glsl_lexer.ll" 1996 KEYWORD(130, 130, USAMPLER2DARRAY); 1997 YY_BREAK 1998 case 94: 1999 YY_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 2008 case 95: 2009 YY_RULE_SETUP 2010 #line 307 "src/src/glsl/glsl_lexer.ll" 2011 return STRUCT; 2012 YY_BREAK 2013 case 96: 2014 YY_RULE_SETUP 2015 #line 308 "src/src/glsl/glsl_lexer.ll" 2016 return VOID_TOK; 2017 YY_BREAK 2018 case 97: 2019 YY_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 2035 case 98: 2036 YY_RULE_SETUP 2037 #line 324 "src/src/glsl/glsl_lexer.ll" 2038 return INC_OP; 2039 YY_BREAK 2040 case 99: 2041 YY_RULE_SETUP 2042 #line 325 "src/src/glsl/glsl_lexer.ll" 2043 return DEC_OP; 2044 YY_BREAK 2045 case 100: 2046 YY_RULE_SETUP 2047 #line 326 "src/src/glsl/glsl_lexer.ll" 2048 return LE_OP; 2049 YY_BREAK 2050 case 101: 2051 YY_RULE_SETUP 2052 #line 327 "src/src/glsl/glsl_lexer.ll" 2053 return GE_OP; 2054 YY_BREAK 2055 case 102: 2056 YY_RULE_SETUP 2057 #line 328 "src/src/glsl/glsl_lexer.ll" 2058 return EQ_OP; 2059 YY_BREAK 2060 case 103: 2061 YY_RULE_SETUP 2062 #line 329 "src/src/glsl/glsl_lexer.ll" 2063 return NE_OP; 2064 YY_BREAK 2065 case 104: 2066 YY_RULE_SETUP 2067 #line 330 "src/src/glsl/glsl_lexer.ll" 2068 return AND_OP; 2069 YY_BREAK 2070 case 105: 2071 YY_RULE_SETUP 2072 #line 331 "src/src/glsl/glsl_lexer.ll" 2073 return OR_OP; 2074 YY_BREAK 2075 case 106: 2076 YY_RULE_SETUP 2077 #line 332 "src/src/glsl/glsl_lexer.ll" 2078 return XOR_OP; 2079 YY_BREAK 2080 case 107: 2081 YY_RULE_SETUP 2082 #line 333 "src/src/glsl/glsl_lexer.ll" 2083 return LEFT_OP; 2084 YY_BREAK 2085 case 108: 2086 YY_RULE_SETUP 2087 #line 334 "src/src/glsl/glsl_lexer.ll" 2088 return RIGHT_OP; 2089 YY_BREAK 2090 case 109: 2091 YY_RULE_SETUP 2092 #line 336 "src/src/glsl/glsl_lexer.ll" 2093 return MUL_ASSIGN; 2094 YY_BREAK 2095 case 110: 2096 YY_RULE_SETUP 2097 #line 337 "src/src/glsl/glsl_lexer.ll" 2098 return DIV_ASSIGN; 2099 YY_BREAK 2100 case 111: 2101 YY_RULE_SETUP 2102 #line 338 "src/src/glsl/glsl_lexer.ll" 2103 return ADD_ASSIGN; 2104 YY_BREAK 2105 case 112: 2106 YY_RULE_SETUP 2107 #line 339 "src/src/glsl/glsl_lexer.ll" 2108 return MOD_ASSIGN; 2109 YY_BREAK 2110 case 113: 2111 YY_RULE_SETUP 2112 #line 340 "src/src/glsl/glsl_lexer.ll" 2113 return LEFT_ASSIGN; 2114 YY_BREAK 2115 case 114: 2116 YY_RULE_SETUP 2117 #line 341 "src/src/glsl/glsl_lexer.ll" 2118 return RIGHT_ASSIGN; 2119 YY_BREAK 2120 case 115: 2121 YY_RULE_SETUP 2122 #line 342 "src/src/glsl/glsl_lexer.ll" 2123 return AND_ASSIGN; 2124 YY_BREAK 2125 case 116: 2126 YY_RULE_SETUP 2127 #line 343 "src/src/glsl/glsl_lexer.ll" 2128 return XOR_ASSIGN; 2129 YY_BREAK 2130 case 117: 2131 YY_RULE_SETUP 2132 #line 344 "src/src/glsl/glsl_lexer.ll" 2133 return OR_ASSIGN; 2134 YY_BREAK 2135 case 118: 2136 YY_RULE_SETUP 2137 #line 345 "src/src/glsl/glsl_lexer.ll" 2138 return SUB_ASSIGN; 2139 YY_BREAK 2140 case 119: 2141 YY_RULE_SETUP 2142 #line 347 "src/src/glsl/glsl_lexer.ll" 2143 { 2144 return LITERAL_INTEGER(10); 2145 } 2146 YY_BREAK 2147 case 120: 2148 YY_RULE_SETUP 2149 #line 350 "src/src/glsl/glsl_lexer.ll" 2150 { 2151 return LITERAL_INTEGER(16); 2152 } 2153 YY_BREAK 2154 case 121: 2155 YY_RULE_SETUP 2156 #line 353 "src/src/glsl/glsl_lexer.ll" 2157 { 2158 return LITERAL_INTEGER(8); 2159 } 2160 YY_BREAK 2161 case 122: 2162 YY_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 2169 case 123: 2170 YY_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 2177 case 124: 2178 YY_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 2185 case 125: 2186 YY_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 2193 case 126: 2194 YY_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 2201 case 127: 2202 YY_RULE_SETUP 2203 #line 378 "src/src/glsl/glsl_lexer.ll" 2204 { 2205 yylval->n = 1; 2206 return BOOLCONSTANT; 2207 } 2208 YY_BREAK 2209 case 128: 2210 YY_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. */ 2218 case 129: 2219 YY_RULE_SETUP 2220 #line 389 "src/src/glsl/glsl_lexer.ll" 2221 KEYWORD(110 || ES, 999, ASM); 2222 YY_BREAK 2223 case 130: 2224 YY_RULE_SETUP 2225 #line 390 "src/src/glsl/glsl_lexer.ll" 2226 KEYWORD(110 || ES, 999, CLASS); 2227 YY_BREAK 2228 case 131: 2229 YY_RULE_SETUP 2230 #line 391 "src/src/glsl/glsl_lexer.ll" 2231 KEYWORD(110 || ES, 999, UNION); 2232 YY_BREAK 2233 case 132: 2234 YY_RULE_SETUP 2235 #line 392 "src/src/glsl/glsl_lexer.ll" 2236 KEYWORD(110 || ES, 999, ENUM); 2237 YY_BREAK 2238 case 133: 2239 YY_RULE_SETUP 2240 #line 393 "src/src/glsl/glsl_lexer.ll" 2241 KEYWORD(110 || ES, 999, TYPEDEF); 2242 YY_BREAK 2243 case 134: 2244 YY_RULE_SETUP 2245 #line 394 "src/src/glsl/glsl_lexer.ll" 2246 KEYWORD(110 || ES, 999, TEMPLATE); 2247 YY_BREAK 2248 case 135: 2249 YY_RULE_SETUP 2250 #line 395 "src/src/glsl/glsl_lexer.ll" 2251 KEYWORD(110 || ES, 999, THIS); 2252 YY_BREAK 2253 case 136: 2254 YY_RULE_SETUP 2255 #line 396 "src/src/glsl/glsl_lexer.ll" 2256 KEYWORD(110 || ES, 140 || yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); 2257 YY_BREAK 2258 case 137: 2259 YY_RULE_SETUP 2260 #line 397 "src/src/glsl/glsl_lexer.ll" 2261 KEYWORD(110 || ES, 999, GOTO); 2262 YY_BREAK 2263 case 138: 2264 YY_RULE_SETUP 2265 #line 398 "src/src/glsl/glsl_lexer.ll" 2266 KEYWORD(110 || ES, 130, SWITCH); 2267 YY_BREAK 2268 case 139: 2269 YY_RULE_SETUP 2270 #line 399 "src/src/glsl/glsl_lexer.ll" 2271 KEYWORD(110 || ES, 130, DEFAULT); 2272 YY_BREAK 2273 case 140: 2274 YY_RULE_SETUP 2275 #line 400 "src/src/glsl/glsl_lexer.ll" 2276 KEYWORD(110 || ES, 999, INLINE_TOK); 2277 YY_BREAK 2278 case 141: 2279 YY_RULE_SETUP 2280 #line 401 "src/src/glsl/glsl_lexer.ll" 2281 KEYWORD(110 || ES, 999, NOINLINE); 2282 YY_BREAK 2283 case 142: 2284 YY_RULE_SETUP 2285 #line 402 "src/src/glsl/glsl_lexer.ll" 2286 KEYWORD(110 || ES, 999, VOLATILE); 2287 YY_BREAK 2288 case 143: 2289 YY_RULE_SETUP 2290 #line 403 "src/src/glsl/glsl_lexer.ll" 2291 KEYWORD(110 || ES, 999, PUBLIC_TOK); 2292 YY_BREAK 2293 case 144: 2294 YY_RULE_SETUP 2295 #line 404 "src/src/glsl/glsl_lexer.ll" 2296 KEYWORD(110 || ES, 999, STATIC); 2297 YY_BREAK 2298 case 145: 2299 YY_RULE_SETUP 2300 #line 405 "src/src/glsl/glsl_lexer.ll" 2301 KEYWORD(110 || ES, 999, EXTERN); 2302 YY_BREAK 2303 case 146: 2304 YY_RULE_SETUP 2305 #line 406 "src/src/glsl/glsl_lexer.ll" 2306 KEYWORD(110 || ES, 999, EXTERNAL); 2307 YY_BREAK 2308 case 147: 2309 YY_RULE_SETUP 2310 #line 407 "src/src/glsl/glsl_lexer.ll" 2311 KEYWORD(110 || ES, 999, INTERFACE); 2312 YY_BREAK 2313 case 148: 2314 YY_RULE_SETUP 2315 #line 408 "src/src/glsl/glsl_lexer.ll" 2316 KEYWORD(110 || ES, 999, LONG_TOK); 2317 YY_BREAK 2318 case 149: 2319 YY_RULE_SETUP 2320 #line 409 "src/src/glsl/glsl_lexer.ll" 2321 KEYWORD(110 || ES, 999, SHORT_TOK); 2322 YY_BREAK 2323 case 150: 2324 YY_RULE_SETUP 2325 #line 410 "src/src/glsl/glsl_lexer.ll" 2326 KEYWORD(110 || ES, 400, DOUBLE_TOK); 2327 YY_BREAK 2328 case 151: 2329 YY_RULE_SETUP 2330 #line 411 "src/src/glsl/glsl_lexer.ll" 2331 KEYWORD(110 || ES, 999, HALF); 2332 YY_BREAK 2333 case 152: 2334 YY_RULE_SETUP 2335 #line 412 "src/src/glsl/glsl_lexer.ll" 2336 KEYWORD(110 || ES, 999, FIXED_TOK); 2337 YY_BREAK 2338 case 153: 2339 YY_RULE_SETUP 2340 #line 413 "src/src/glsl/glsl_lexer.ll" 2341 KEYWORD(110 || ES, 999, UNSIGNED); 2342 YY_BREAK 2343 case 154: 2344 YY_RULE_SETUP 2345 #line 414 "src/src/glsl/glsl_lexer.ll" 2346 KEYWORD(110 || ES, 999, INPUT_TOK); 2347 YY_BREAK 2348 case 155: 2349 YY_RULE_SETUP 2350 #line 415 "src/src/glsl/glsl_lexer.ll" 2351 KEYWORD(110 || ES, 999, OUTPUT); 2352 YY_BREAK 2353 case 156: 2354 YY_RULE_SETUP 2355 #line 416 "src/src/glsl/glsl_lexer.ll" 2356 KEYWORD(110 || ES, 999, HVEC2); 2357 YY_BREAK 2358 case 157: 2359 YY_RULE_SETUP 2360 #line 417 "src/src/glsl/glsl_lexer.ll" 2361 KEYWORD(110 || ES, 999, HVEC3); 2362 YY_BREAK 2363 case 158: 2364 YY_RULE_SETUP 2365 #line 418 "src/src/glsl/glsl_lexer.ll" 2366 KEYWORD(110 || ES, 999, HVEC4); 2367 YY_BREAK 2368 case 159: 2369 YY_RULE_SETUP 2370 #line 419 "src/src/glsl/glsl_lexer.ll" 2371 KEYWORD(110 || ES, 400, DVEC2); 2372 YY_BREAK 2373 case 160: 2374 YY_RULE_SETUP 2375 #line 420 "src/src/glsl/glsl_lexer.ll" 2376 KEYWORD(110 || ES, 400, DVEC3); 2377 YY_BREAK 2378 case 161: 2379 YY_RULE_SETUP 2380 #line 421 "src/src/glsl/glsl_lexer.ll" 2381 KEYWORD(110 || ES, 400, DVEC4); 2382 YY_BREAK 2383 case 162: 2384 YY_RULE_SETUP 2385 #line 422 "src/src/glsl/glsl_lexer.ll" 2386 KEYWORD(110 || ES, 999, FVEC2); 2387 YY_BREAK 2388 case 163: 2389 YY_RULE_SETUP 2390 #line 423 "src/src/glsl/glsl_lexer.ll" 2391 KEYWORD(110 || ES, 999, FVEC3); 2392 YY_BREAK 2393 case 164: 2394 YY_RULE_SETUP 2395 #line 424 "src/src/glsl/glsl_lexer.ll" 2396 KEYWORD(110 || ES, 999, FVEC4); 2397 YY_BREAK 2398 case 165: 2399 YY_RULE_SETUP 2400 #line 425 "src/src/glsl/glsl_lexer.ll" 2401 return SAMPLER2DRECT; 2402 YY_BREAK 2403 case 166: 2404 YY_RULE_SETUP 2405 #line 426 "src/src/glsl/glsl_lexer.ll" 2406 KEYWORD(110 || ES, 999, SAMPLER3DRECT); 2407 YY_BREAK 2408 case 167: 2409 YY_RULE_SETUP 2410 #line 427 "src/src/glsl/glsl_lexer.ll" 2411 return SAMPLER2DRECTSHADOW; 2412 YY_BREAK 2413 case 168: 2414 YY_RULE_SETUP 2415 #line 428 "src/src/glsl/glsl_lexer.ll" 2416 KEYWORD(110 || ES, 999, SIZEOF); 2417 YY_BREAK 2418 case 169: 2419 YY_RULE_SETUP 2420 #line 429 "src/src/glsl/glsl_lexer.ll" 2421 KEYWORD(110 || ES, 999, CAST); 2422 YY_BREAK 2423 case 170: 2424 YY_RULE_SETUP 2425 #line 430 "src/src/glsl/glsl_lexer.ll" 2426 KEYWORD(110 || ES, 999, NAMESPACE); 2427 YY_BREAK 2428 case 171: 2429 YY_RULE_SETUP 2430 #line 431 "src/src/glsl/glsl_lexer.ll" 2431 KEYWORD(110 || ES, 999, USING); 2432 YY_BREAK 2433 /* Additional reserved words in GLSL 1.20. */ 2434 case 172: 2435 YY_RULE_SETUP 2436 #line 434 "src/src/glsl/glsl_lexer.ll" 2437 KEYWORD(120, 130 || ES, LOWP); 2438 YY_BREAK 2439 case 173: 2440 YY_RULE_SETUP 2441 #line 435 "src/src/glsl/glsl_lexer.ll" 2442 KEYWORD(120, 130 || ES, MEDIUMP); 2443 YY_BREAK 2444 case 174: 2445 YY_RULE_SETUP 2446 #line 436 "src/src/glsl/glsl_lexer.ll" 2447 KEYWORD(120, 130 || ES, HIGHP); 2448 YY_BREAK 2449 case 175: 2450 YY_RULE_SETUP 2451 #line 437 "src/src/glsl/glsl_lexer.ll" 2452 KEYWORD(120, 130 || ES, PRECISION); 2453 YY_BREAK 2454 /* Additional reserved words in GLSL 1.30. */ 2455 case 176: 2456 YY_RULE_SETUP 2457 #line 440 "src/src/glsl/glsl_lexer.ll" 2458 KEYWORD(130, 130, CASE); 2459 YY_BREAK 2460 case 177: 2461 YY_RULE_SETUP 2462 #line 441 "src/src/glsl/glsl_lexer.ll" 2463 KEYWORD(130, 999, COMMON); 2464 YY_BREAK 2465 case 178: 2466 YY_RULE_SETUP 2467 #line 442 "src/src/glsl/glsl_lexer.ll" 2468 KEYWORD(130, 999, PARTITION); 2469 YY_BREAK 2470 case 179: 2471 YY_RULE_SETUP 2472 #line 443 "src/src/glsl/glsl_lexer.ll" 2473 KEYWORD(130, 999, ACTIVE); 2474 YY_BREAK 2475 case 180: 2476 YY_RULE_SETUP 2477 #line 444 "src/src/glsl/glsl_lexer.ll" 2478 KEYWORD(130 || ES, 999, SUPERP); 2479 YY_BREAK 2480 case 181: 2481 YY_RULE_SETUP 2482 #line 445 "src/src/glsl/glsl_lexer.ll" 2483 KEYWORD(130, 140, SAMPLERBUFFER); 2484 YY_BREAK 2485 case 182: 2486 YY_RULE_SETUP 2487 #line 446 "src/src/glsl/glsl_lexer.ll" 2488 KEYWORD(130, 999, FILTER); 2489 YY_BREAK 2490 case 183: 2491 YY_RULE_SETUP 2492 #line 447 "src/src/glsl/glsl_lexer.ll" 2493 KEYWORD(130, 999, IMAGE1D); 2494 YY_BREAK 2495 case 184: 2496 YY_RULE_SETUP 2497 #line 448 "src/src/glsl/glsl_lexer.ll" 2498 KEYWORD(130, 999, IMAGE2D); 2499 YY_BREAK 2500 case 185: 2501 YY_RULE_SETUP 2502 #line 449 "src/src/glsl/glsl_lexer.ll" 2503 KEYWORD(130, 999, IMAGE3D); 2504 YY_BREAK 2505 case 186: 2506 YY_RULE_SETUP 2507 #line 450 "src/src/glsl/glsl_lexer.ll" 2508 KEYWORD(130, 999, IMAGECUBE); 2509 YY_BREAK 2510 case 187: 2511 YY_RULE_SETUP 2512 #line 451 "src/src/glsl/glsl_lexer.ll" 2513 KEYWORD(130, 999, IIMAGE1D); 2514 YY_BREAK 2515 case 188: 2516 YY_RULE_SETUP 2517 #line 452 "src/src/glsl/glsl_lexer.ll" 2518 KEYWORD(130, 999, IIMAGE2D); 2519 YY_BREAK 2520 case 189: 2521 YY_RULE_SETUP 2522 #line 453 "src/src/glsl/glsl_lexer.ll" 2523 KEYWORD(130, 999, IIMAGE3D); 2524 YY_BREAK 2525 case 190: 2526 YY_RULE_SETUP 2527 #line 454 "src/src/glsl/glsl_lexer.ll" 2528 KEYWORD(130, 999, IIMAGECUBE); 2529 YY_BREAK 2530 case 191: 2531 YY_RULE_SETUP 2532 #line 455 "src/src/glsl/glsl_lexer.ll" 2533 KEYWORD(130, 999, UIMAGE1D); 2534 YY_BREAK 2535 case 192: 2536 YY_RULE_SETUP 2537 #line 456 "src/src/glsl/glsl_lexer.ll" 2538 KEYWORD(130, 999, UIMAGE2D); 2539 YY_BREAK 2540 case 193: 2541 YY_RULE_SETUP 2542 #line 457 "src/src/glsl/glsl_lexer.ll" 2543 KEYWORD(130, 999, UIMAGE3D); 2544 YY_BREAK 2545 case 194: 2546 YY_RULE_SETUP 2547 #line 458 "src/src/glsl/glsl_lexer.ll" 2548 KEYWORD(130, 999, UIMAGECUBE); 2549 YY_BREAK 2550 case 195: 2551 YY_RULE_SETUP 2552 #line 459 "src/src/glsl/glsl_lexer.ll" 2553 KEYWORD(130, 999, IMAGE1DARRAY); 2554 YY_BREAK 2555 case 196: 2556 YY_RULE_SETUP 2557 #line 460 "src/src/glsl/glsl_lexer.ll" 2558 KEYWORD(130, 999, IMAGE2DARRAY); 2559 YY_BREAK 2560 case 197: 2561 YY_RULE_SETUP 2562 #line 461 "src/src/glsl/glsl_lexer.ll" 2563 KEYWORD(130, 999, IIMAGE1DARRAY); 2564 YY_BREAK 2565 case 198: 2566 YY_RULE_SETUP 2567 #line 462 "src/src/glsl/glsl_lexer.ll" 2568 KEYWORD(130, 999, IIMAGE2DARRAY); 2569 YY_BREAK 2570 case 199: 2571 YY_RULE_SETUP 2572 #line 463 "src/src/glsl/glsl_lexer.ll" 2573 KEYWORD(130, 999, UIMAGE1DARRAY); 2574 YY_BREAK 2575 case 200: 2576 YY_RULE_SETUP 2577 #line 464 "src/src/glsl/glsl_lexer.ll" 2578 KEYWORD(130, 999, UIMAGE2DARRAY); 2579 YY_BREAK 2580 case 201: 2581 YY_RULE_SETUP 2582 #line 465 "src/src/glsl/glsl_lexer.ll" 2583 KEYWORD(130, 999, IMAGE1DSHADOW); 2584 YY_BREAK 2585 case 202: 2586 YY_RULE_SETUP 2587 #line 466 "src/src/glsl/glsl_lexer.ll" 2588 KEYWORD(130, 999, IMAGE2DSHADOW); 2589 YY_BREAK 2590 case 203: 2591 YY_RULE_SETUP 2592 #line 467 "src/src/glsl/glsl_lexer.ll" 2593 KEYWORD(130, 999, IMAGE1DARRAYSHADOW); 2594 YY_BREAK 2595 case 204: 2596 YY_RULE_SETUP 2597 #line 468 "src/src/glsl/glsl_lexer.ll" 2598 KEYWORD(130, 999, IMAGE2DARRAYSHADOW); 2599 YY_BREAK 2600 case 205: 2601 YY_RULE_SETUP 2602 #line 469 "src/src/glsl/glsl_lexer.ll" 2603 KEYWORD(130, 999, IMAGEBUFFER); 2604 YY_BREAK 2605 case 206: 2606 YY_RULE_SETUP 2607 #line 470 "src/src/glsl/glsl_lexer.ll" 2608 KEYWORD(130, 999, IIMAGEBUFFER); 2609 YY_BREAK 2610 case 207: 2611 YY_RULE_SETUP 2612 #line 471 "src/src/glsl/glsl_lexer.ll" 2613 KEYWORD(130, 999, UIMAGEBUFFER); 2614 YY_BREAK 2615 case 208: 2616 YY_RULE_SETUP 2617 #line 472 "src/src/glsl/glsl_lexer.ll" 2618 KEYWORD(130, 140 || yyextra->ARB_uniform_buffer_object_enable, ROW_MAJOR); 2619 YY_BREAK 2620 /* Additional reserved words in GLSL 1.40 */ 2621 case 209: 2622 YY_RULE_SETUP 2623 #line 475 "src/src/glsl/glsl_lexer.ll" 2624 KEYWORD(140, 140, ISAMPLER2DRECT); 2625 YY_BREAK 2626 case 210: 2627 YY_RULE_SETUP 2628 #line 476 "src/src/glsl/glsl_lexer.ll" 2629 KEYWORD(140, 140, USAMPLER2DRECT); 2630 YY_BREAK 2631 case 211: 2632 YY_RULE_SETUP 2633 #line 477 "src/src/glsl/glsl_lexer.ll" 2634 KEYWORD(140, 140, ISAMPLERBUFFER); 2635 YY_BREAK 2636 case 212: 2637 YY_RULE_SETUP 2638 #line 478 "src/src/glsl/glsl_lexer.ll" 2639 KEYWORD(140, 140, USAMPLERBUFFER); 2640 YY_BREAK 2641 case 213: 2642 YY_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 2651 case 214: 2652 YY_RULE_SETUP 2653 #line 487 "src/src/glsl/glsl_lexer.ll" 2654 { return yytext[0]; } 2655 YY_BREAK 2656 case 215: 2657 YY_RULE_SETUP 2658 #line 489 "src/src/glsl/glsl_lexer.ll" 2659 ECHO; 2660 YY_BREAK 2661 #line 2662 "src/chromium_gensrc/mesa/glsl_lexer.cc" 2662 case YY_STATE_EOF(INITIAL): 2663 case YY_STATE_EOF(PP): 2664 case 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 */ 2804 static 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 3129 static 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 */ 3251 void _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 */ 3282 void _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 */ 3302 static 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 */ 3352 YY_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 */ 3389 YY_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 */ 3402 YY_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 3436 static 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 */ 3464 YY_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 */ 3473 int _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 */ 3486 int _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 */ 3499 FILE *_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 */ 3508 FILE *_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 */ 3517 int _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 3527 char *_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 */ 3537 void _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 */ 3547 void _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 */ 3562 void _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 */ 3579 void _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 3585 void _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 3591 int _mesa_glsl_get_debug (yyscan_t yyscanner) 3592 { 3593 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3594 return yy_flex_debug; 3595 } 3596 3597 void _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 3605 YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner) 3606 { 3607 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3608 return yylval; 3609 } 3610 3611 void _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 3617 YYLTYPE *_mesa_glsl_get_lloc (yyscan_t yyscanner) 3618 { 3619 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3620 return yylloc; 3621 } 3622 3623 void _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 3636 int _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 3665 int _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 3693 static 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. */ 3727 int _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 3761 static 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 3770 static 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 3780 void *_mesa_glsl_alloc (yy_size_t size , yyscan_t yyscanner) 3781 { 3782 return (void *) malloc( size ); 3783 } 3784 3785 void *_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 3797 void _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 3808 int 3809 classify_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 3819 void 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 3826 void 3827 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state) 3828 { 3829 _mesa_glsl_lex_destroy(state->scanner); 3830 } 3831 3832