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