glsl_lexer.cpp revision 10e230b6
1#line 1 "src/compiler/glsl/glsl_lexer.cpp" 2 3#line 3 "src/compiler/glsl/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 6 12#define YY_FLEX_SUBMINOR_VERSION 4 13#if YY_FLEX_SUBMINOR_VERSION > 0 14#define FLEX_BETA 15#endif 16 17#ifdef yy_create_buffer 18#define _mesa_glsl_lexer__create_buffer_ALREADY_DEFINED 19#else 20#define yy_create_buffer _mesa_glsl_lexer__create_buffer 21#endif 22 23#ifdef yy_delete_buffer 24#define _mesa_glsl_lexer__delete_buffer_ALREADY_DEFINED 25#else 26#define yy_delete_buffer _mesa_glsl_lexer__delete_buffer 27#endif 28 29#ifdef yy_scan_buffer 30#define _mesa_glsl_lexer__scan_buffer_ALREADY_DEFINED 31#else 32#define yy_scan_buffer _mesa_glsl_lexer__scan_buffer 33#endif 34 35#ifdef yy_scan_string 36#define _mesa_glsl_lexer__scan_string_ALREADY_DEFINED 37#else 38#define yy_scan_string _mesa_glsl_lexer__scan_string 39#endif 40 41#ifdef yy_scan_bytes 42#define _mesa_glsl_lexer__scan_bytes_ALREADY_DEFINED 43#else 44#define yy_scan_bytes _mesa_glsl_lexer__scan_bytes 45#endif 46 47#ifdef yy_init_buffer 48#define _mesa_glsl_lexer__init_buffer_ALREADY_DEFINED 49#else 50#define yy_init_buffer _mesa_glsl_lexer__init_buffer 51#endif 52 53#ifdef yy_flush_buffer 54#define _mesa_glsl_lexer__flush_buffer_ALREADY_DEFINED 55#else 56#define yy_flush_buffer _mesa_glsl_lexer__flush_buffer 57#endif 58 59#ifdef yy_load_buffer_state 60#define _mesa_glsl_lexer__load_buffer_state_ALREADY_DEFINED 61#else 62#define yy_load_buffer_state _mesa_glsl_lexer__load_buffer_state 63#endif 64 65#ifdef yy_switch_to_buffer 66#define _mesa_glsl_lexer__switch_to_buffer_ALREADY_DEFINED 67#else 68#define yy_switch_to_buffer _mesa_glsl_lexer__switch_to_buffer 69#endif 70 71#ifdef yypush_buffer_state 72#define _mesa_glsl_lexer_push_buffer_state_ALREADY_DEFINED 73#else 74#define yypush_buffer_state _mesa_glsl_lexer_push_buffer_state 75#endif 76 77#ifdef yypop_buffer_state 78#define _mesa_glsl_lexer_pop_buffer_state_ALREADY_DEFINED 79#else 80#define yypop_buffer_state _mesa_glsl_lexer_pop_buffer_state 81#endif 82 83#ifdef yyensure_buffer_stack 84#define _mesa_glsl_lexer_ensure_buffer_stack_ALREADY_DEFINED 85#else 86#define yyensure_buffer_stack _mesa_glsl_lexer_ensure_buffer_stack 87#endif 88 89#ifdef yylex 90#define _mesa_glsl_lexer_lex_ALREADY_DEFINED 91#else 92#define yylex _mesa_glsl_lexer_lex 93#endif 94 95#ifdef yyrestart 96#define _mesa_glsl_lexer_restart_ALREADY_DEFINED 97#else 98#define yyrestart _mesa_glsl_lexer_restart 99#endif 100 101#ifdef yylex_init 102#define _mesa_glsl_lexer_lex_init_ALREADY_DEFINED 103#else 104#define yylex_init _mesa_glsl_lexer_lex_init 105#endif 106 107#ifdef yylex_init_extra 108#define _mesa_glsl_lexer_lex_init_extra_ALREADY_DEFINED 109#else 110#define yylex_init_extra _mesa_glsl_lexer_lex_init_extra 111#endif 112 113#ifdef yylex_destroy 114#define _mesa_glsl_lexer_lex_destroy_ALREADY_DEFINED 115#else 116#define yylex_destroy _mesa_glsl_lexer_lex_destroy 117#endif 118 119#ifdef yyget_debug 120#define _mesa_glsl_lexer_get_debug_ALREADY_DEFINED 121#else 122#define yyget_debug _mesa_glsl_lexer_get_debug 123#endif 124 125#ifdef yyset_debug 126#define _mesa_glsl_lexer_set_debug_ALREADY_DEFINED 127#else 128#define yyset_debug _mesa_glsl_lexer_set_debug 129#endif 130 131#ifdef yyget_extra 132#define _mesa_glsl_lexer_get_extra_ALREADY_DEFINED 133#else 134#define yyget_extra _mesa_glsl_lexer_get_extra 135#endif 136 137#ifdef yyset_extra 138#define _mesa_glsl_lexer_set_extra_ALREADY_DEFINED 139#else 140#define yyset_extra _mesa_glsl_lexer_set_extra 141#endif 142 143#ifdef yyget_in 144#define _mesa_glsl_lexer_get_in_ALREADY_DEFINED 145#else 146#define yyget_in _mesa_glsl_lexer_get_in 147#endif 148 149#ifdef yyset_in 150#define _mesa_glsl_lexer_set_in_ALREADY_DEFINED 151#else 152#define yyset_in _mesa_glsl_lexer_set_in 153#endif 154 155#ifdef yyget_out 156#define _mesa_glsl_lexer_get_out_ALREADY_DEFINED 157#else 158#define yyget_out _mesa_glsl_lexer_get_out 159#endif 160 161#ifdef yyset_out 162#define _mesa_glsl_lexer_set_out_ALREADY_DEFINED 163#else 164#define yyset_out _mesa_glsl_lexer_set_out 165#endif 166 167#ifdef yyget_leng 168#define _mesa_glsl_lexer_get_leng_ALREADY_DEFINED 169#else 170#define yyget_leng _mesa_glsl_lexer_get_leng 171#endif 172 173#ifdef yyget_text 174#define _mesa_glsl_lexer_get_text_ALREADY_DEFINED 175#else 176#define yyget_text _mesa_glsl_lexer_get_text 177#endif 178 179#ifdef yyget_lineno 180#define _mesa_glsl_lexer_get_lineno_ALREADY_DEFINED 181#else 182#define yyget_lineno _mesa_glsl_lexer_get_lineno 183#endif 184 185#ifdef yyset_lineno 186#define _mesa_glsl_lexer_set_lineno_ALREADY_DEFINED 187#else 188#define yyset_lineno _mesa_glsl_lexer_set_lineno 189#endif 190 191#ifdef yyget_column 192#define _mesa_glsl_lexer_get_column_ALREADY_DEFINED 193#else 194#define yyget_column _mesa_glsl_lexer_get_column 195#endif 196 197#ifdef yyset_column 198#define _mesa_glsl_lexer_set_column_ALREADY_DEFINED 199#else 200#define yyset_column _mesa_glsl_lexer_set_column 201#endif 202 203#ifdef yywrap 204#define _mesa_glsl_lexer_wrap_ALREADY_DEFINED 205#else 206#define yywrap _mesa_glsl_lexer_wrap 207#endif 208 209#ifdef yyget_lval 210#define _mesa_glsl_lexer_get_lval_ALREADY_DEFINED 211#else 212#define yyget_lval _mesa_glsl_lexer_get_lval 213#endif 214 215#ifdef yyset_lval 216#define _mesa_glsl_lexer_set_lval_ALREADY_DEFINED 217#else 218#define yyset_lval _mesa_glsl_lexer_set_lval 219#endif 220 221#ifdef yyget_lloc 222#define _mesa_glsl_lexer_get_lloc_ALREADY_DEFINED 223#else 224#define yyget_lloc _mesa_glsl_lexer_get_lloc 225#endif 226 227#ifdef yyset_lloc 228#define _mesa_glsl_lexer_set_lloc_ALREADY_DEFINED 229#else 230#define yyset_lloc _mesa_glsl_lexer_set_lloc 231#endif 232 233#ifdef yyalloc 234#define _mesa_glsl_lexer_alloc_ALREADY_DEFINED 235#else 236#define yyalloc _mesa_glsl_lexer_alloc 237#endif 238 239#ifdef yyrealloc 240#define _mesa_glsl_lexer_realloc_ALREADY_DEFINED 241#else 242#define yyrealloc _mesa_glsl_lexer_realloc 243#endif 244 245#ifdef yyfree 246#define _mesa_glsl_lexer_free_ALREADY_DEFINED 247#else 248#define yyfree _mesa_glsl_lexer_free 249#endif 250 251/* First, we deal with platform-specific or compiler-specific issues. */ 252 253/* begin standard C headers. */ 254#ifdef _LIBC 255#include "namespace.h" 256#endif 257#include <stdio.h> 258#include <string.h> 259#include <errno.h> 260#include <stdlib.h> 261 262/* end standard C headers. */ 263 264/* $NetBSD: glsl_lexer.cpp,v 1.1 2019/09/24 19:21:11 maya Exp $ */ 265 266/* flex integer type definitions */ 267 268#ifndef FLEXINT_H 269#define FLEXINT_H 270 271/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 272 273#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 274 275/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 276 * if you want the limit (max/min) macros for int types. 277 */ 278#ifndef __STDC_LIMIT_MACROS 279#define __STDC_LIMIT_MACROS 1 280#endif 281 282#include <inttypes.h> 283typedef int8_t flex_int8_t; 284typedef uint8_t flex_uint8_t; 285typedef int16_t flex_int16_t; 286typedef uint16_t flex_uint16_t; 287typedef int32_t flex_int32_t; 288typedef uint32_t flex_uint32_t; 289#else 290typedef signed char flex_int8_t; 291typedef short int flex_int16_t; 292typedef int flex_int32_t; 293typedef unsigned char flex_uint8_t; 294typedef unsigned short int flex_uint16_t; 295typedef unsigned int flex_uint32_t; 296 297/* Limits of integral types. */ 298#ifndef INT8_MIN 299#define INT8_MIN (-128) 300#endif 301#ifndef INT16_MIN 302#define INT16_MIN (-32767-1) 303#endif 304#ifndef INT32_MIN 305#define INT32_MIN (-2147483647-1) 306#endif 307#ifndef INT8_MAX 308#define INT8_MAX (127) 309#endif 310#ifndef INT16_MAX 311#define INT16_MAX (32767) 312#endif 313#ifndef INT32_MAX 314#define INT32_MAX (2147483647) 315#endif 316#ifndef UINT8_MAX 317#define UINT8_MAX (255U) 318#endif 319#ifndef UINT16_MAX 320#define UINT16_MAX (65535U) 321#endif 322#ifndef UINT32_MAX 323#define UINT32_MAX (4294967295U) 324#endif 325 326#ifndef SIZE_MAX 327#define SIZE_MAX (~(size_t)0) 328#endif 329 330#endif /* ! C99 */ 331 332#endif /* ! FLEXINT_H */ 333 334/* begin standard C++ headers. */ 335 336/* TODO: this is always defined, so inline it */ 337#define yyconst const 338 339#if defined(__GNUC__) && __GNUC__ >= 3 340#define yynoreturn __attribute__((__noreturn__)) 341#else 342#define yynoreturn 343#endif 344 345/* Returned upon end-of-file. */ 346#define YY_NULL 0 347 348/* Promotes a possibly negative, possibly signed char to an 349 * integer in range [0..255] for use as an array index. 350 */ 351#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) 352 353/* An opaque pointer. */ 354#ifndef YY_TYPEDEF_YY_SCANNER_T 355#define YY_TYPEDEF_YY_SCANNER_T 356typedef void* yyscan_t; 357#endif 358 359/* For convenience, these vars (plus the bison vars far below) 360 are macros in the reentrant scanner. */ 361#define yyin yyg->yyin_r 362#define yyout yyg->yyout_r 363#define yyextra yyg->yyextra_r 364#define yyleng yyg->yyleng_r 365#define yytext yyg->yytext_r 366#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) 367#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) 368#define yy_flex_debug yyg->yy_flex_debug_r 369 370/* Enter a start condition. This macro really ought to take a parameter, 371 * but we do it the disgusting crufty way forced on us by the ()-less 372 * definition of BEGIN. 373 */ 374#define BEGIN yyg->yy_start = 1 + 2 * 375/* Translate the current start state into a value that can be later handed 376 * to BEGIN to return to the state. The YYSTATE alias is for lex 377 * compatibility. 378 */ 379#define YY_START ((yyg->yy_start - 1) / 2) 380#define YYSTATE YY_START 381/* Action number for EOF rule of a given start state. */ 382#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 383/* Special action meaning "start processing a new file". */ 384#define YY_NEW_FILE yyrestart( yyin , yyscanner ) 385#define YY_END_OF_BUFFER_CHAR 0 386 387/* Size of default input buffer. */ 388#ifndef YY_BUF_SIZE 389#ifdef __ia64__ 390/* On IA-64, the buffer size is 16k, not 8k. 391 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 392 * Ditto for the __ia64__ case accordingly. 393 */ 394#define YY_BUF_SIZE 32768 395#else 396#define YY_BUF_SIZE 16384 397#endif /* __ia64__ */ 398#endif 399 400/* The state buf must be large enough to hold one state per character in the main buffer. 401 */ 402#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 403 404#ifndef YY_TYPEDEF_YY_BUFFER_STATE 405#define YY_TYPEDEF_YY_BUFFER_STATE 406typedef struct yy_buffer_state *YY_BUFFER_STATE; 407#endif 408 409#ifndef YY_TYPEDEF_YY_SIZE_T 410#define YY_TYPEDEF_YY_SIZE_T 411typedef size_t yy_size_t; 412#endif 413 414#define EOB_ACT_CONTINUE_SCAN 0 415#define EOB_ACT_END_OF_FILE 1 416#define EOB_ACT_LAST_MATCH 2 417 418 #define YY_LESS_LINENO(n) 419 #define YY_LINENO_REWIND_TO(ptr) 420 421/* Return all but the first "n" matched characters back to the input stream. */ 422#define yyless(n) \ 423 do \ 424 { \ 425 /* Undo effects of setting up yytext. */ \ 426 int yyless_macro_arg = (n); \ 427 YY_LESS_LINENO(yyless_macro_arg);\ 428 *yy_cp = yyg->yy_hold_char; \ 429 YY_RESTORE_YY_MORE_OFFSET \ 430 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 431 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 432 } \ 433 while ( 0 ) 434#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) 435 436#ifndef YY_STRUCT_YY_BUFFER_STATE 437#define YY_STRUCT_YY_BUFFER_STATE 438struct yy_buffer_state 439 { 440 FILE *yy_input_file; 441 442 char *yy_ch_buf; /* input buffer */ 443 char *yy_buf_pos; /* current position in input buffer */ 444 445 /* Size of input buffer in bytes, not including room for EOB 446 * characters. 447 */ 448 size_t yy_buf_size; 449 450 /* Number of characters read into yy_ch_buf, not including EOB 451 * characters. 452 */ 453 size_t yy_n_chars; 454 455 /* Whether we "own" the buffer - i.e., we know we created it, 456 * and can realloc() it to grow it, and should free() it to 457 * delete it. 458 */ 459 int yy_is_our_buffer; 460 461 /* Whether this is an "interactive" input source; if so, and 462 * if we're using stdio for input, then we want to use getc() 463 * instead of fread(), to make sure we stop fetching input after 464 * each newline. 465 */ 466 int yy_is_interactive; 467 468 /* Whether we're considered to be at the beginning of a line. 469 * If so, '^' rules will be active on the next match, otherwise 470 * not. 471 */ 472 int yy_at_bol; 473 474 int yy_bs_lineno; /**< The line count. */ 475 int yy_bs_column; /**< The column count. */ 476 477 /* Whether to try to fill the input buffer when we reach the 478 * end of it. 479 */ 480 int yy_fill_buffer; 481 482 int yy_buffer_status; 483 484#define YY_BUFFER_NEW 0 485#define YY_BUFFER_NORMAL 1 486 /* When an EOF's been seen but there's still some text to process 487 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 488 * shouldn't try reading from the input source any more. We might 489 * still have a bunch of tokens to match, though, because of 490 * possible backing-up. 491 * 492 * When we actually see the EOF, we change the status to "new" 493 * (via yyrestart()), so that the user can continue scanning by 494 * just pointing yyin at a new input file. 495 */ 496#define YY_BUFFER_EOF_PENDING 2 497 498 }; 499#endif /* !YY_STRUCT_YY_BUFFER_STATE */ 500 501/* We provide macros for accessing buffer states in case in the 502 * future we want to put the buffer states in a more general 503 * "scanner state". 504 * 505 * Returns the top of the stack, or NULL. 506 */ 507#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ 508 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ 509 : NULL) 510/* Same as previous macro, but useful when we know that the buffer stack is not 511 * NULL or when we need an lvalue. For internal use only. 512 */ 513#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] 514 515void yyrestart ( FILE *input_file , yyscan_t yyscanner ); 516void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); 517YY_BUFFER_STATE yy_create_buffer ( FILE *file, yy_size_t size , yyscan_t yyscanner ); 518void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); 519void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); 520void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); 521void yypop_buffer_state ( yyscan_t yyscanner ); 522 523static void yyensure_buffer_stack ( yyscan_t yyscanner ); 524static void yy_load_buffer_state ( yyscan_t yyscanner ); 525static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); 526#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) 527 528YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); 529YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); 530YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner ); 531 532void *yyalloc ( yy_size_t , yyscan_t yyscanner ); 533void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); 534void yyfree ( void * , yyscan_t yyscanner ); 535 536#define yy_new_buffer yy_create_buffer 537#define yy_set_interactive(is_interactive) \ 538 { \ 539 if ( ! YY_CURRENT_BUFFER ){ \ 540 yyensure_buffer_stack (yyscanner); \ 541 YY_CURRENT_BUFFER_LVALUE = \ 542 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ 543 } \ 544 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 545 } 546#define yy_set_bol(at_bol) \ 547 { \ 548 if ( ! YY_CURRENT_BUFFER ){\ 549 yyensure_buffer_stack (yyscanner); \ 550 YY_CURRENT_BUFFER_LVALUE = \ 551 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ 552 } \ 553 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 554 } 555#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 556 557/* Begin user sect3 */ 558 559#define _mesa_glsl_lexer_wrap(yyscanner) (/*CONSTCOND*/1) 560#define YY_SKIP_YYWRAP 561typedef flex_uint8_t YY_CHAR; 562 563typedef int yy_state_type; 564 565#define yytext_ptr yytext_r 566 567static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); 568static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); 569static int yy_get_next_buffer ( yyscan_t yyscanner ); 570static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); 571 572/* Done after the current pattern has been matched and before the 573 * corresponding action - sets up yytext. 574 */ 575#define YY_DO_BEFORE_ACTION \ 576 yyg->yytext_ptr = yy_bp; \ 577 yyleng = (yy_size_t)(yy_cp - yy_bp); \ 578 yyg->yy_hold_char = *yy_cp; \ 579 *yy_cp = '\0'; \ 580 yyg->yy_c_buf_p = yy_cp; 581#define YY_NUM_RULES 277 582#define YY_END_OF_BUFFER 278 583/* This struct is not used in this scanner, 584 but its presence is necessary. */ 585struct yy_trans_info 586 { 587 flex_int32_t yy_verify; 588 flex_int32_t yy_nxt; 589 }; 590static const flex_int16_t yy_accept[1096] = 591 { 0, 592 0, 0, 18, 18, 0, 0, 278, 276, 1, 25, 593 276, 276, 276, 276, 276, 276, 275, 276, 182, 180, 594 276, 276, 276, 274, 276, 274, 274, 274, 274, 274, 595 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 596 274, 274, 274, 274, 274, 276, 1, 276, 24, 18, 597 23, 24, 22, 21, 19, 20, 16, 15, 1, 164, 598 173, 165, 176, 170, 159, 172, 160, 179, 184, 171, 599 185, 182, 0, 0, 182, 182, 0, 182, 180, 180, 600 180, 180, 168, 161, 163, 162, 169, 274, 177, 167, 601 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 602 603 274, 274, 274, 274, 34, 274, 274, 274, 274, 274, 604 274, 274, 274, 274, 274, 274, 274, 274, 274, 38, 605 274, 274, 65, 274, 274, 274, 274, 274, 274, 274, 606 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 607 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 608 274, 274, 274, 274, 274, 274, 274, 274, 178, 166, 609 1, 0, 0, 2, 0, 0, 0, 0, 18, 17, 610 21, 20, 0, 184, 0, 0, 183, 0, 185, 0, 611 0, 0, 186, 181, 174, 175, 274, 193, 274, 274, 612 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 613 614 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 615 274, 274, 274, 37, 274, 274, 274, 274, 274, 274, 616 274, 274, 274, 274, 274, 30, 274, 274, 274, 274, 617 274, 274, 274, 274, 274, 274, 274, 66, 274, 274, 618 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 619 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 620 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 621 274, 274, 274, 274, 274, 0, 0, 0, 0, 17, 622 0, 184, 188, 0, 183, 0, 0, 0, 185, 189, 623 186, 0, 0, 181, 181, 181, 274, 274, 274, 28, 624 625 274, 274, 274, 251, 244, 274, 274, 274, 274, 274, 626 274, 274, 274, 274, 274, 274, 36, 196, 274, 274, 627 274, 274, 73, 274, 274, 201, 214, 274, 274, 274, 628 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 629 274, 211, 247, 53, 54, 55, 274, 274, 274, 274, 630 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 631 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 632 274, 274, 199, 191, 274, 274, 274, 31, 274, 274, 633 274, 274, 274, 274, 274, 50, 51, 52, 157, 274, 634 274, 274, 0, 0, 0, 0, 0, 183, 187, 190, 635 636 274, 274, 274, 32, 274, 41, 42, 43, 274, 194, 637 274, 274, 27, 274, 274, 274, 225, 226, 227, 274, 638 222, 223, 224, 274, 192, 274, 215, 29, 237, 238, 639 239, 249, 219, 220, 221, 274, 274, 274, 274, 67, 640 217, 274, 274, 274, 274, 44, 45, 46, 274, 274, 641 274, 274, 274, 274, 274, 274, 274, 274, 274, 76, 642 274, 274, 274, 274, 274, 274, 274, 274, 274, 212, 643 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 644 274, 274, 274, 195, 274, 274, 246, 47, 48, 49, 645 274, 274, 35, 274, 0, 0, 0, 0, 254, 274, 646 647 274, 69, 274, 274, 252, 274, 274, 274, 274, 274, 648 274, 213, 208, 257, 274, 274, 274, 274, 274, 274, 649 274, 204, 274, 274, 274, 274, 158, 56, 57, 58, 650 59, 60, 61, 62, 63, 64, 274, 274, 274, 274, 651 218, 200, 274, 274, 206, 274, 274, 274, 40, 274, 652 264, 155, 243, 74, 207, 156, 274, 255, 202, 274, 653 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 654 0, 0, 0, 0, 274, 274, 274, 274, 274, 203, 655 39, 228, 229, 230, 231, 232, 233, 234, 235, 236, 656 274, 267, 268, 269, 274, 274, 274, 274, 274, 112, 657 658 113, 114, 274, 274, 266, 274, 274, 274, 248, 274, 659 274, 274, 274, 111, 274, 274, 274, 274, 274, 274, 660 274, 274, 197, 271, 272, 273, 274, 274, 274, 274, 661 274, 274, 68, 274, 274, 70, 274, 274, 0, 0, 662 0, 0, 0, 274, 274, 71, 149, 33, 209, 123, 663 124, 125, 274, 274, 274, 274, 274, 274, 274, 274, 664 274, 274, 274, 274, 274, 274, 205, 274, 274, 274, 665 152, 263, 151, 274, 274, 274, 274, 274, 274, 274, 666 274, 198, 134, 135, 136, 274, 274, 270, 216, 274, 667 150, 274, 0, 0, 6, 0, 0, 0, 14, 3, 668 669 274, 26, 274, 274, 274, 274, 274, 274, 274, 274, 670 274, 121, 274, 274, 274, 116, 210, 72, 274, 274, 671 274, 274, 274, 245, 274, 253, 250, 258, 77, 78, 672 79, 274, 274, 274, 274, 274, 274, 274, 274, 274, 673 274, 274, 274, 274, 274, 274, 153, 0, 0, 0, 674 0, 0, 0, 0, 0, 274, 274, 274, 132, 274, 675 274, 127, 274, 274, 274, 274, 274, 274, 274, 274, 676 88, 89, 90, 274, 274, 274, 274, 274, 274, 274, 677 274, 274, 274, 274, 274, 274, 265, 274, 274, 143, 678 274, 274, 138, 94, 95, 96, 274, 274, 4, 0, 679 680 5, 0, 0, 0, 0, 0, 0, 0, 154, 274, 681 274, 274, 274, 274, 274, 274, 274, 274, 274, 115, 682 274, 117, 274, 274, 274, 274, 274, 274, 274, 274, 683 274, 274, 274, 100, 274, 274, 274, 274, 80, 274, 684 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 685 274, 274, 0, 0, 0, 0, 0, 274, 274, 274, 686 126, 128, 274, 118, 274, 119, 274, 274, 274, 274, 687 274, 101, 274, 274, 91, 274, 274, 274, 274, 274, 688 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 689 137, 139, 274, 274, 274, 102, 274, 274, 97, 0, 690 691 0, 0, 0, 129, 130, 274, 274, 274, 145, 274, 692 274, 146, 274, 274, 274, 274, 274, 274, 274, 75, 693 274, 274, 274, 274, 240, 274, 241, 256, 274, 274, 694 274, 140, 141, 274, 274, 274, 274, 274, 274, 274, 695 274, 0, 0, 0, 0, 274, 274, 274, 274, 122, 696 120, 274, 274, 274, 259, 261, 274, 81, 274, 82, 697 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 698 274, 260, 262, 274, 0, 0, 0, 0, 0, 133, 699 131, 274, 274, 92, 93, 274, 274, 274, 83, 274, 700 274, 274, 84, 274, 274, 274, 144, 142, 98, 99, 701 702 274, 274, 0, 0, 0, 0, 0, 274, 274, 274, 703 274, 274, 274, 103, 274, 106, 274, 274, 274, 274, 704 0, 0, 0, 0, 0, 0, 274, 274, 104, 107, 705 274, 274, 274, 274, 85, 274, 105, 108, 0, 0, 706 0, 7, 0, 0, 0, 0, 147, 148, 274, 274, 707 274, 274, 110, 0, 0, 8, 0, 0, 0, 0, 708 274, 274, 242, 274, 0, 0, 0, 0, 0, 11, 709 86, 87, 274, 0, 0, 0, 9, 0, 12, 274, 710 0, 0, 10, 109, 0, 0, 0, 0, 0, 0, 711 0, 0, 0, 13, 0 712 713 } ; 714 715static const YY_CHAR yy_ec[256] = 716 { 0, 717 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 718 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 719 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 720 1, 2, 5, 1, 6, 1, 7, 8, 1, 9, 721 10, 11, 12, 1, 13, 14, 15, 16, 17, 18, 722 19, 20, 21, 22, 21, 23, 23, 24, 1, 25, 723 26, 27, 1, 1, 28, 29, 30, 31, 32, 33, 724 34, 35, 35, 35, 35, 36, 37, 35, 38, 35, 725 35, 39, 40, 41, 42, 35, 35, 43, 35, 35, 726 1, 1, 1, 44, 45, 1, 46, 47, 48, 49, 727 728 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 729 60, 61, 35, 62, 63, 64, 65, 66, 67, 68, 730 69, 70, 1, 71, 1, 1, 1, 1, 1, 1, 731 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 732 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 733 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 734 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 735 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 736 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 737 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 738 739 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 740 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 741 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 742 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 743 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 744 1, 1, 1, 1, 1 745 } ; 746 747static const YY_CHAR yy_meta[72] = 748 { 0, 749 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 750 1, 1, 1, 4, 1, 5, 5, 5, 5, 5, 751 5, 5, 6, 1, 1, 1, 1, 7, 7, 7, 752 7, 8, 9, 10, 10, 11, 10, 10, 10, 10, 753 10, 10, 12, 1, 10, 7, 7, 7, 7, 8, 754 9, 10, 10, 10, 10, 10, 11, 10, 10, 10, 755 10, 10, 10, 10, 10, 10, 10, 12, 10, 10, 756 1 757 } ; 758 759static const flex_int16_t yy_base[1110] = 760 { 0, 761 0, 70, 76, 0, 1543, 1542, 1544, 1547, 71, 1547, 762 1517, 1516, 140, 1515, 137, 138, 136, 1514, 153, 208, 763 135, 1513, 151, 0, 124, 117, 122, 133, 147, 141, 764 188, 1478, 140, 198, 156, 158, 173, 1472, 197, 186, 765 214, 213, 217, 191, 161, 206, 282, 267, 1547, 213, 766 1547, 1521, 1547, 273, 1547, 0, 1547, 1547, 251, 1547, 767 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 318, 1547, 768 360, 231, 271, 288, 1547, 1499, 0, 1477, 0, 1547, 769 1497, 1475, 1505, 1547, 1547, 1547, 1504, 0, 1547, 1547, 770 1465, 1470, 238, 1467, 1476, 1474, 1474, 1460, 1463, 1475, 771 772 260, 1469, 1456, 1472, 1452, 1466, 1452, 1449, 1449, 1455, 773 255, 269, 1449, 1460, 1445, 1451, 1455, 1456, 1485, 0, 774 1446, 1457, 292, 1456, 1451, 1431, 132, 1435, 1449, 1439, 775 266, 1432, 268, 1445, 1447, 279, 1426, 1434, 285, 1421, 776 1430, 298, 300, 1435, 1430, 1433, 1421, 1424, 1464, 153, 777 184, 268, 1433, 1420, 1433, 305, 1426, 1425, 1547, 1547, 778 361, 368, 370, 1547, 1410, 1423, 1414, 1425, 344, 0, 779 368, 0, 382, 1547, 1441, 1422, 390, 432, 1547, 1439, 780 1420, 440, 373, 428, 1547, 1547, 1416, 0, 1411, 1406, 781 1410, 1420, 1414, 1416, 357, 1399, 1399, 1411, 1402, 349, 782 783 1413, 1410, 1393, 1409, 1407, 1404, 1395, 1402, 1388, 1386, 784 1399, 1384, 1401, 0, 1398, 1385, 1393, 1390, 1394, 1375, 785 1394, 1387, 1384, 1372, 1371, 392, 1389, 1376, 1385, 1372, 786 1379, 1369, 419, 1375, 1378, 1368, 1376, 1364, 1368, 1359, 787 1374, 1373, 1363, 1370, 355, 1353, 1372, 1355, 1353, 1352, 788 1363, 1352, 1347, 1345, 1347, 1358, 1343, 1345, 1342, 1354, 789 1353, 1336, 1355, 1336, 304, 1345, 1340, 1338, 1348, 1326, 790 447, 1345, 1347, 1335, 1327, 1326, 1330, 1342, 1325, 0, 791 455, 446, 1547, 488, 1547, 1353, 1334, 496, 487, 1547, 792 1547, 1351, 1332, 1547, 1346, 1324, 1314, 1325, 1324, 0, 793 794 1321, 1326, 468, 0, 0, 1313, 1311, 1311, 1312, 1307, 795 1316, 1304, 1322, 471, 1310, 476, 0, 0, 1304, 1315, 796 1314, 1314, 0, 1298, 506, 0, 0, 1300, 509, 1310, 797 1307, 1308, 1298, 1292, 1291, 1334, 1291, 1290, 1290, 512, 798 1285, 0, 0, 1281, 1280, 1279, 1281, 1282, 1287, 1281, 799 1277, 1291, 1286, 1286, 1284, 1283, 1276, 1270, 1272, 1271, 800 1274, 1274, 1280, 1265, 1268, 1263, 1272, 1277, 1264, 1261, 801 1274, 1264, 0, 0, 1271, 1269, 1266, 1295, 1256, 1256, 802 1262, 1252, 1260, 515, 1257, 0, 0, 0, 0, 1246, 803 1259, 1258, 1257, 1256, 1253, 1241, 529, 503, 1547, 1547, 804 805 1253, 1254, 1254, 0, 1238, 0, 0, 0, 1239, 0, 806 1248, 1238, 0, 1237, 1238, 1232, 1225, 1224, 1223, 1240, 807 0, 0, 0, 1230, 0, 1226, 0, 0, 0, 0, 808 0, 0, 0, 0, 0, 1239, 1236, 538, 1235, 0, 809 0, 1239, 1232, 1228, 1224, 0, 0, 0, 1216, 522, 810 543, 546, 1221, 1217, 1223, 1213, 1211, 1225, 1209, 0, 811 1209, 1223, 1211, 1207, 1214, 1208, 1220, 1215, 1215, 0, 812 1212, 1209, 1213, 1196, 1194, 1197, 1204, 1210, 1205, 1206, 813 1203, 1232, 1189, 0, 1191, 1192, 0, 0, 0, 0, 814 1189, 1193, 0, 1186, 1186, 1242, 1185, 1188, 0, 1196, 815 816 1175, 0, 1185, 1179, 0, 1172, 1172, 1186, 551, 554, 817 557, 0, 1188, 0, 560, 564, 1202, 1201, 1200, 1165, 818 1164, 0, 1164, 1181, 1180, 1175, 0, 0, 0, 0, 819 0, 0, 0, 0, 0, 0, 1163, 1177, 1163, 1160, 820 0, 0, 1166, 378, 0, 1162, 1170, 1169, 0, 1161, 821 1153, 0, 0, 0, 0, 0, 1150, 0, 0, 1149, 822 1161, 566, 570, 1166, 1152, 1159, 1158, 1155, 1149, 1146, 823 1141, 588, 1157, 1142, 1136, 1136, 1150, 1134, 1147, 0, 824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 825 1139, 0, 0, 0, 1164, 1163, 1162, 1127, 1126, 440, 826 827 575, 0, 1139, 1142, 0, 1140, 1128, 1124, 0, 1137, 828 1134, 1133, 1122, 0, 1121, 1111, 1129, 1114, 1117, 599, 829 1122, 1125, 0, 0, 0, 0, 1143, 1142, 1141, 1106, 830 1105, 1105, 0, 1119, 1105, 0, 1116, 1108, 1110, 589, 831 617, 1161, 1103, 1107, 1110, 0, 0, 0, 0, 1131, 832 585, 0, 1107, 1110, 1094, 1102, 1092, 1113, 1102, 1098, 833 1099, 1099, 1098, 1083, 624, 1096, 0, 1097, 1085, 1084, 834 0, 0, 0, 1080, 1110, 1109, 1108, 1073, 1072, 1068, 835 1076, 0, 1106, 619, 0, 1082, 1085, 0, 0, 631, 836 0, 1062, 1070, 649, 1547, 660, 0, 671, 657, 1547, 837 838 1070, 0, 1066, 1065, 1086, 1075, 1073, 1073, 1060, 1075, 839 1058, 1091, 1070, 1071, 1066, 1087, 0, 0, 1083, 1082, 840 1081, 1046, 1045, 0, 1045, 0, 0, 0, 441, 668, 841 1069, 1056, 1059, 1035, 1048, 1035, 1034, 1055, 1044, 1041, 842 1033, 1051, 1050, 1049, 1014, 1013, 0, 1017, 642, 709, 843 481, 1031, 1020, 1008, 1019, 999, 1000, 996, 1028, 1007, 844 1001, 1021, 1002, 987, 981, 931, 928, 942, 928, 927, 845 960, 647, 0, 936, 939, 931, 922, 930, 920, 941, 846 930, 926, 928, 926, 926, 925, 0, 911, 910, 943, 847 922, 919, 940, 939, 676, 0, 913, 916, 1547, 496, 848 849 1547, 717, 0, 738, 930, 913, 10, 100, 0, 146, 850 189, 225, 233, 264, 295, 297, 314, 328, 346, 0, 851 356, 0, 371, 373, 381, 406, 442, 451, 471, 456, 852 475, 497, 491, 530, 511, 549, 548, 547, 655, 536, 853 555, 556, 559, 559, 563, 564, 565, 568, 606, 605, 854 613, 648, 697, 667, 637, 649, 650, 645, 647, 656, 855 0, 0, 659, 682, 656, 702, 697, 677, 699, 684, 856 685, 720, 701, 700, 723, 702, 707, 713, 717, 702, 857 701, 717, 703, 706, 707, 717, 712, 703, 704, 712, 858 0, 0, 713, 714, 715, 750, 731, 730, 753, 746, 859 860 731, 726, 731, 0, 0, 740, 741, 735, 0, 736, 861 721, 0, 722, 746, 747, 732, 731, 734, 735, 0, 862 729, 739, 731, 739, 762, 743, 0, 0, 742, 759, 863 760, 0, 0, 761, 762, 763, 764, 749, 748, 751, 864 752, 813, 814, 763, 759, 750, 751, 775, 776, 0, 865 0, 755, 756, 764, 0, 0, 765, 788, 762, 790, 866 785, 779, 766, 788, 786, 779, 768, 769, 770, 771, 867 779, 0, 0, 780, 841, 842, 843, 776, 795, 0, 868 0, 799, 800, 0, 0, 804, 806, 800, 0, 801, 869 786, 810, 0, 788, 798, 821, 0, 0, 0, 0, 870 871 814, 815, 803, 861, 813, 815, 864, 807, 808, 800, 872 801, 825, 828, 0, 826, 836, 810, 846, 810, 811, 873 815, 831, 881, 883, 884, 882, 820, 821, 0, 0, 874 840, 841, 834, 843, 0, 857, 0, 0, 852, 897, 875 898, 1547, 900, 899, 902, 854, 0, 0, 846, 850, 876 844, 866, 0, 852, 913, 1547, 914, 866, 867, 917, 877 853, 855, 0, 875, 872, 877, 927, 928, 929, 1547, 878 0, 0, 872, 887, 933, 934, 1547, 938, 1547, 867, 879 882, 943, 1547, 0, 882, 945, 947, 948, 949, 895, 880 898, 955, 956, 1547, 1547, 995, 1003, 1011, 1020, 1024, 881 882 1033, 1041, 1048, 1055, 1062, 1072, 1080, 1088, 1096 883 } ; 884 885static const flex_int16_t yy_def[1110] = 886 { 0, 887 1095, 1, 1095, 3, 1096, 1096, 1095, 1095, 1095, 1095, 888 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 889 1095, 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1097, 890 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 891 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 892 1095, 1095, 1095, 1095, 1095, 1098, 1095, 1095, 1095, 1095, 893 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 894 1095, 19, 1099, 1095, 1095, 1095, 1100, 1095, 20, 1095, 895 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1095, 1095, 896 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 897 898 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 899 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 900 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 901 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 902 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 903 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 904 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1101, 905 1095, 1098, 1095, 1095, 1095, 1095, 71, 1095, 1095, 1095, 906 1095, 1095, 1102, 1100, 1095, 1095, 1097, 1097, 1097, 1097, 907 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 908 909 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 910 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 911 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 912 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 913 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 914 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 915 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 916 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1101, 917 1095, 1103, 1095, 1095, 1095, 1095, 1095, 1095, 1104, 1095, 918 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 919 920 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 921 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 922 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 923 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 924 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 925 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 926 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 927 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 928 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 929 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1105, 1095, 1095, 930 931 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 932 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 933 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 934 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 935 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 936 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 937 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 938 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 939 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 940 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1097, 1097, 941 942 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 943 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 944 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 945 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 946 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 947 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 948 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 949 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 950 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 951 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 952 953 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 954 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 955 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 956 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1106, 957 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 958 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 959 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 960 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 961 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 962 1097, 1097, 1095, 1095, 1095, 1095, 1107, 1095, 1095, 1095, 963 964 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 965 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 966 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 967 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 968 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1108, 1095, 969 1107, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 970 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 971 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 972 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 973 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 974 975 1095, 1095, 1109, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 976 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 977 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 978 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 979 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 980 1097, 1097, 1109, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 981 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 982 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 983 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 984 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 985 986 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 987 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 988 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 989 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 990 1097, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 991 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 992 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 993 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 994 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 995 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 996 997 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 998 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 999 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1000 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1001 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1002 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1003 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1004 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1005 1095, 1095, 1095, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1006 1095, 1095, 1095, 1095, 0, 1095, 1095, 1095, 1095, 1095, 1007 1008 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1009 } ; 1010 1011static const flex_int16_t yy_nxt[1619] = 1012 { 0, 1013 8, 9, 10, 9, 11, 8, 12, 13, 8, 8, 1014 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 1015 20, 20, 20, 8, 21, 22, 23, 24, 24, 24, 1016 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 1017 24, 24, 24, 25, 24, 26, 27, 28, 29, 30, 1018 31, 32, 33, 34, 24, 24, 35, 36, 37, 38, 1019 39, 40, 41, 42, 43, 44, 45, 24, 24, 24, 1020 46, 47, 59, 856, 59, 48, 49, 50, 51, 50, 1021 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 1022 52, 53, 54, 54, 54, 54, 54, 54, 54, 55, 1023 1024 49, 49, 49, 56, 56, 56, 56, 56, 56, 56, 1025 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 1026 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1027 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1028 56, 56, 56, 56, 56, 56, 49, 62, 65, 89, 1029 67, 69, 69, 69, 69, 69, 69, 69, 69, 83, 1030 84, 857, 66, 68, 91, 63, 71, 90, 72, 72, 1031 72, 72, 72, 72, 72, 73, 86, 87, 98, 92, 1032 93, 94, 99, 95, 74, 116, 96, 97, 75, 100, 1033 231, 858, 101, 117, 76, 77, 102, 107, 232, 108, 1034 1035 103, 126, 74, 128, 104, 118, 105, 129, 109, 75, 1036 263, 264, 106, 157, 169, 127, 169, 78, 130, 119, 1037 77, 71, 158, 79, 79, 79, 79, 79, 79, 79, 1038 79, 159, 131, 110, 859, 136, 154, 265, 149, 74, 1039 155, 111, 133, 80, 112, 137, 266, 113, 120, 81, 1040 156, 121, 59, 114, 59, 122, 123, 74, 134, 138, 1041 124, 135, 145, 125, 80, 146, 139, 140, 163, 164, 1042 150, 141, 82, 1095, 147, 151, 160, 142, 143, 152, 1043 144, 148, 153, 161, 71, 59, 860, 162, 171, 171, 1044 171, 171, 171, 171, 171, 171, 861, 189, 1095, 182, 1045 1046 182, 190, 74, 183, 183, 183, 183, 183, 183, 183, 1047 183, 210, 198, 267, 212, 239, 165, 199, 200, 236, 1048 74, 268, 211, 166, 244, 862, 237, 167, 213, 240, 1049 249, 241, 168, 69, 69, 69, 69, 69, 69, 69, 1050 69, 245, 246, 253, 250, 169, 255, 169, 223, 173, 1051 174, 224, 225, 175, 379, 226, 863, 227, 272, 254, 1052 256, 273, 161, 380, 59, 864, 162, 173, 174, 163, 1053 164, 163, 164, 865, 176, 177, 177, 177, 177, 177, 1054 177, 177, 177, 171, 171, 171, 171, 171, 171, 171, 1055 171, 178, 179, 281, 281, 180, 866, 282, 282, 282, 1056 1057 282, 282, 282, 282, 282, 291, 304, 867, 292, 178, 1058 179, 310, 311, 336, 358, 868, 181, 165, 359, 165, 1059 305, 284, 285, 291, 166, 286, 166, 614, 167, 293, 1060 167, 615, 869, 168, 870, 168, 344, 345, 346, 284, 1061 285, 337, 871, 288, 288, 872, 287, 289, 289, 289, 1062 289, 289, 289, 289, 289, 183, 183, 183, 183, 183, 1063 183, 183, 183, 294, 386, 387, 388, 655, 777, 295, 1064 282, 282, 282, 282, 282, 282, 282, 282, 174, 656, 1065 778, 175, 694, 695, 294, 406, 407, 408, 417, 418, 1066 419, 873, 296, 421, 422, 423, 174, 800, 801, 397, 1067 1068 397, 874, 176, 398, 398, 398, 398, 398, 398, 398, 1069 398, 289, 289, 289, 289, 289, 289, 289, 289, 179, 1070 875, 876, 180, 429, 430, 431, 433, 434, 435, 446, 1071 447, 448, 488, 489, 490, 285, 877, 179, 286, 528, 1072 529, 530, 878, 181, 398, 398, 398, 398, 398, 398, 1073 398, 398, 879, 285, 517, 518, 519, 880, 881, 287, 1074 531, 532, 533, 534, 535, 536, 520, 521, 582, 583, 1075 584, 585, 586, 587, 588, 589, 590, 592, 593, 594, 1076 595, 596, 597, 624, 625, 626, 627, 628, 629, 572, 1077 694, 695, 598, 599, 882, 883, 884, 887, 630, 631, 1078 1079 888, 889, 657, 640, 641, 641, 641, 641, 641, 641, 1080 641, 658, 704, 659, 660, 675, 676, 677, 694, 695, 1081 890, 705, 891, 706, 892, 893, 894, 678, 679, 895, 1082 680, 697, 698, 698, 698, 698, 698, 698, 698, 698, 1083 719, 720, 721, 800, 801, 896, 737, 742, 743, 744, 1084 694, 695, 722, 723, 897, 738, 697, 739, 699, 745, 1085 746, 694, 695, 898, 749, 750, 750, 750, 750, 750, 1086 750, 750, 694, 695, 825, 696, 696, 696, 696, 696, 1087 696, 696, 885, 826, 803, 827, 698, 698, 698, 698, 1088 698, 698, 698, 698, 886, 779, 752, 899, 800, 801, 1089 1090 900, 901, 902, 848, 780, 753, 781, 782, 903, 803, 1091 800, 801, 849, 904, 850, 905, 754, 906, 800, 801, 1092 907, 908, 909, 755, 804, 804, 804, 804, 804, 804, 1093 804, 804, 802, 802, 802, 802, 802, 802, 802, 800, 1094 801, 910, 911, 912, 913, 914, 915, 916, 917, 918, 1095 919, 920, 921, 804, 804, 804, 804, 804, 804, 804, 1096 804, 922, 923, 924, 925, 926, 927, 928, 929, 930, 1097 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 1098 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 1099 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 1100 1101 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 1102 971, 972, 973, 974, 975, 976, 978, 979, 980, 981, 1103 982, 983, 977, 984, 985, 986, 987, 988, 989, 990, 1104 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1105 1001, 1002, 975, 976, 1004, 1006, 1007, 1008, 1009, 1010, 1106 977, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1107 1020, 1021, 1004, 1022, 1024, 1025, 1027, 1028, 1029, 1030, 1108 1031, 1023, 1026, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1109 1039, 1040, 1041, 1045, 1043, 1025, 1047, 1048, 1049, 1050, 1110 1042, 1044, 1026, 1051, 1003, 1052, 1053, 1054, 1055, 1041, 1111 1112 1057, 1043, 1005, 1045, 1059, 1061, 1056, 1042, 1044, 1062, 1113 1063, 1064, 1060, 1065, 1055, 1057, 1066, 1068, 1069, 1071, 1114 1005, 1072, 1056, 1073, 1067, 1074, 1070, 1075, 1076, 1078, 1115 1069, 1080, 1081, 1084, 1082, 1076, 1077, 1079, 1070, 1078, 1116 1085, 1046, 1083, 1077, 1082, 1086, 1087, 1079, 1087, 1089, 1117 1089, 1091, 1083, 1088, 1092, 1088, 1093, 1093, 1058, 855, 1118 854, 1046, 852, 851, 1094, 1094, 847, 846, 845, 844, 1119 843, 842, 841, 1058, 840, 839, 838, 837, 836, 835, 1120 834, 833, 832, 831, 830, 829, 828, 824, 823, 822, 1121 821, 820, 819, 1090, 1090, 57, 57, 57, 57, 57, 1122 1123 57, 57, 57, 57, 57, 57, 57, 88, 88, 88, 1124 88, 88, 88, 88, 88, 172, 172, 172, 172, 172, 1125 172, 172, 172, 73, 73, 73, 818, 73, 184, 184, 1126 184, 184, 184, 280, 280, 817, 280, 280, 280, 280, 1127 280, 280, 280, 280, 280, 183, 183, 816, 815, 183, 1128 814, 183, 282, 282, 813, 812, 282, 811, 282, 289, 1129 289, 810, 809, 289, 808, 289, 398, 398, 807, 806, 1130 398, 805, 398, 696, 696, 799, 696, 798, 797, 796, 1131 795, 794, 793, 696, 751, 751, 751, 751, 751, 802, 1132 802, 792, 802, 791, 790, 789, 788, 787, 786, 802, 1133 1134 853, 853, 853, 853, 853, 785, 784, 783, 776, 775, 1135 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 1136 764, 763, 762, 761, 760, 759, 758, 757, 756, 748, 1137 747, 741, 740, 736, 735, 734, 733, 732, 731, 730, 1138 729, 728, 727, 726, 725, 724, 718, 717, 716, 715, 1139 714, 713, 712, 711, 710, 709, 708, 707, 703, 702, 1140 701, 700, 699, 693, 692, 691, 690, 689, 688, 687, 1141 686, 685, 684, 683, 682, 681, 674, 673, 672, 671, 1142 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 1143 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 1144 1145 644, 643, 642, 639, 638, 637, 636, 635, 634, 633, 1146 632, 623, 622, 621, 620, 619, 618, 617, 616, 613, 1147 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 1148 602, 601, 600, 591, 581, 580, 579, 578, 577, 576, 1149 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 1150 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 1151 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 1152 545, 544, 543, 542, 541, 540, 539, 538, 537, 527, 1153 526, 525, 524, 523, 522, 516, 515, 514, 513, 512, 1154 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 1155 1156 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 1157 491, 487, 486, 485, 484, 483, 482, 481, 480, 479, 1158 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 1159 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 1160 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 1161 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 1162 432, 428, 427, 426, 425, 424, 420, 416, 415, 414, 1163 413, 412, 411, 410, 409, 405, 404, 403, 402, 401, 1164 294, 294, 400, 400, 399, 399, 396, 395, 394, 393, 1165 392, 391, 390, 389, 385, 384, 383, 382, 381, 378, 1166 1167 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 1168 367, 366, 365, 364, 363, 362, 361, 360, 357, 356, 1169 355, 354, 353, 352, 351, 350, 349, 348, 347, 343, 1170 342, 341, 340, 339, 338, 335, 334, 333, 332, 331, 1171 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 1172 320, 319, 318, 317, 316, 315, 314, 313, 312, 309, 1173 308, 307, 306, 303, 302, 301, 300, 299, 298, 297, 1174 290, 290, 283, 283, 279, 278, 277, 276, 275, 274, 1175 271, 270, 269, 262, 261, 260, 259, 258, 257, 252, 1176 251, 248, 247, 243, 242, 238, 235, 234, 233, 230, 1177 1178 229, 228, 222, 221, 220, 219, 218, 217, 216, 215, 1179 214, 209, 208, 207, 206, 205, 204, 203, 202, 201, 1180 197, 196, 195, 194, 193, 192, 191, 188, 187, 186, 1181 185, 80, 80, 75, 75, 170, 132, 115, 85, 70, 1182 64, 61, 60, 1095, 58, 58, 7, 1095, 1095, 1095, 1183 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1184 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1185 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1186 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1187 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1188 1189 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1190 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1191 } ; 1192 1193static const flex_int16_t yy_chk[1619] = 1194 { 0, 1195 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1196 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1197 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1198 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1199 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1200 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1201 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1202 1, 2, 9, 807, 9, 2, 3, 3, 3, 3, 1203 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1204 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1205 1206 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1207 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1208 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1209 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1210 3, 3, 3, 3, 3, 3, 3, 13, 15, 25, 1211 16, 17, 17, 17, 17, 17, 17, 17, 17, 21, 1212 21, 808, 15, 16, 26, 13, 19, 25, 19, 19, 1213 19, 19, 19, 19, 19, 19, 23, 23, 28, 26, 1214 26, 27, 28, 27, 19, 33, 27, 27, 19, 28, 1215 127, 810, 28, 33, 19, 19, 29, 30, 127, 30, 1216 1217 29, 35, 19, 36, 29, 33, 29, 36, 30, 19, 1218 150, 150, 29, 45, 50, 35, 50, 19, 37, 34, 1219 19, 20, 45, 20, 20, 20, 20, 20, 20, 20, 1220 20, 46, 37, 31, 811, 40, 44, 151, 43, 20, 1221 44, 31, 39, 20, 31, 40, 151, 31, 34, 20, 1222 44, 34, 59, 31, 59, 34, 34, 20, 39, 41, 1223 34, 39, 42, 34, 20, 42, 41, 41, 48, 48, 1224 43, 41, 20, 72, 42, 43, 46, 41, 41, 43, 1225 41, 42, 43, 47, 73, 47, 812, 47, 54, 54, 1226 54, 54, 54, 54, 54, 54, 813, 93, 72, 74, 1227 1228 74, 93, 73, 74, 74, 74, 74, 74, 74, 74, 1229 74, 111, 101, 152, 112, 133, 48, 101, 101, 131, 1230 73, 152, 111, 48, 136, 814, 131, 48, 112, 133, 1231 139, 133, 48, 69, 69, 69, 69, 69, 69, 69, 1232 69, 136, 136, 142, 139, 169, 143, 169, 123, 69, 1233 69, 123, 123, 69, 265, 123, 815, 123, 156, 142, 1234 143, 156, 161, 265, 161, 816, 161, 69, 69, 162, 1235 162, 163, 163, 817, 69, 71, 71, 71, 71, 71, 1236 71, 71, 71, 171, 171, 171, 171, 171, 171, 171, 1237 171, 71, 71, 173, 173, 71, 818, 173, 173, 173, 1238 1239 173, 173, 173, 173, 173, 183, 195, 819, 183, 71, 1240 71, 200, 200, 226, 245, 821, 71, 162, 245, 163, 1241 195, 177, 177, 183, 162, 177, 163, 544, 162, 183, 1242 163, 544, 823, 162, 824, 163, 233, 233, 233, 177, 1243 177, 226, 825, 178, 178, 826, 177, 178, 178, 178, 1244 178, 178, 178, 178, 178, 182, 182, 182, 182, 182, 1245 182, 182, 182, 184, 271, 271, 271, 600, 729, 184, 1246 281, 281, 281, 281, 281, 281, 281, 281, 282, 600, 1247 729, 282, 751, 751, 184, 303, 303, 303, 314, 314, 1248 314, 827, 184, 316, 316, 316, 282, 800, 800, 284, 1249 1250 284, 828, 282, 284, 284, 284, 284, 284, 284, 284, 1251 284, 288, 288, 288, 288, 288, 288, 288, 288, 289, 1252 829, 830, 289, 325, 325, 325, 329, 329, 329, 340, 1253 340, 340, 384, 384, 384, 398, 831, 289, 398, 450, 1254 450, 450, 832, 289, 397, 397, 397, 397, 397, 397, 1255 397, 397, 833, 398, 438, 438, 438, 834, 835, 398, 1256 451, 451, 451, 452, 452, 452, 438, 438, 509, 509, 1257 509, 510, 510, 510, 511, 511, 511, 515, 515, 515, 1258 516, 516, 516, 562, 562, 562, 563, 563, 563, 572, 1259 640, 640, 516, 516, 836, 837, 838, 840, 563, 563, 1260 1261 841, 842, 601, 572, 572, 572, 572, 572, 572, 572, 1262 572, 601, 651, 601, 601, 620, 620, 620, 641, 641, 1263 843, 651, 844, 651, 845, 846, 847, 620, 620, 848, 1264 620, 640, 641, 641, 641, 641, 641, 641, 641, 641, 1265 665, 665, 665, 749, 749, 849, 684, 690, 690, 690, 1266 694, 694, 665, 665, 850, 684, 640, 684, 699, 690, 1267 690, 696, 696, 851, 694, 694, 694, 694, 694, 694, 1268 694, 694, 698, 698, 772, 696, 696, 696, 696, 696, 1269 696, 696, 839, 772, 749, 772, 698, 698, 698, 698, 1270 698, 698, 698, 698, 839, 730, 699, 852, 853, 853, 1271 1272 854, 855, 856, 795, 730, 699, 730, 730, 857, 749, 1273 750, 750, 795, 858, 795, 859, 699, 860, 802, 802, 1274 863, 864, 865, 699, 750, 750, 750, 750, 750, 750, 1275 750, 750, 802, 802, 802, 802, 802, 802, 802, 804, 1276 804, 866, 867, 868, 869, 870, 871, 872, 873, 874, 1277 875, 876, 877, 804, 804, 804, 804, 804, 804, 804, 1278 804, 878, 879, 880, 881, 882, 883, 884, 885, 886, 1279 887, 888, 889, 890, 893, 894, 895, 896, 897, 898, 1280 899, 900, 901, 902, 903, 906, 907, 908, 910, 911, 1281 913, 914, 915, 916, 917, 918, 919, 921, 922, 923, 1282 1283 924, 925, 926, 929, 930, 931, 934, 935, 936, 937, 1284 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 1285 948, 949, 943, 952, 953, 954, 957, 958, 959, 960, 1286 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 1287 971, 974, 975, 976, 977, 978, 979, 982, 983, 986, 1288 976, 987, 988, 990, 991, 992, 994, 995, 996, 1001, 1289 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1290 1012, 1005, 1007, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1291 1021, 1022, 1023, 1026, 1024, 1025, 1027, 1028, 1031, 1032, 1292 1023, 1024, 1025, 1033, 975, 1034, 1036, 1039, 1040, 1041, 1293 1294 1044, 1043, 977, 1045, 1046, 1049, 1040, 1041, 1043, 1050, 1295 1051, 1052, 1046, 1054, 1055, 1057, 1058, 1059, 1060, 1061, 1296 1004, 1062, 1055, 1064, 1058, 1065, 1060, 1066, 1067, 1068, 1297 1069, 1073, 1074, 1080, 1075, 1076, 1067, 1068, 1069, 1078, 1298 1081, 1026, 1075, 1076, 1082, 1085, 1086, 1078, 1087, 1088, 1299 1089, 1090, 1082, 1086, 1091, 1087, 1092, 1093, 1044, 806, 1300 805, 1045, 798, 797, 1092, 1093, 794, 793, 792, 791, 1301 790, 789, 788, 1057, 786, 785, 784, 783, 782, 781, 1302 780, 779, 778, 777, 776, 775, 774, 771, 770, 769, 1303 768, 767, 766, 1088, 1089, 1096, 1096, 1096, 1096, 1096, 1304 1305 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1097, 1306 1097, 1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1098, 1307 1098, 1098, 1098, 1099, 1099, 1099, 765, 1099, 1100, 1100, 1308 1100, 1100, 1100, 1101, 1101, 764, 1101, 1101, 1101, 1101, 1309 1101, 1101, 1101, 1101, 1101, 1102, 1102, 763, 762, 1102, 1310 761, 1102, 1103, 1103, 760, 759, 1103, 758, 1103, 1104, 1311 1104, 757, 756, 1104, 755, 1104, 1105, 1105, 754, 753, 1312 1105, 752, 1105, 1106, 1106, 748, 1106, 746, 745, 744, 1313 743, 742, 741, 1106, 1107, 1107, 1107, 1107, 1107, 1108, 1314 1108, 740, 1108, 739, 738, 737, 736, 735, 734, 1108, 1315 1316 1109, 1109, 1109, 1109, 1109, 733, 732, 731, 725, 723, 1317 722, 721, 720, 719, 716, 715, 714, 713, 712, 711, 1318 710, 709, 708, 707, 706, 705, 704, 703, 701, 693, 1319 692, 687, 686, 683, 681, 680, 679, 678, 677, 676, 1320 675, 674, 670, 669, 668, 666, 664, 663, 662, 661, 1321 660, 659, 658, 657, 656, 655, 654, 653, 650, 645, 1322 644, 643, 642, 639, 638, 637, 635, 634, 632, 631, 1323 630, 629, 628, 627, 622, 621, 619, 618, 617, 616, 1324 615, 613, 612, 611, 610, 608, 607, 606, 604, 603, 1325 599, 598, 597, 596, 595, 591, 579, 578, 577, 576, 1326 1327 575, 574, 573, 571, 570, 569, 568, 567, 566, 565, 1328 564, 561, 560, 557, 551, 550, 548, 547, 546, 543, 1329 540, 539, 538, 537, 526, 525, 524, 523, 521, 520, 1330 519, 518, 517, 513, 508, 507, 506, 504, 503, 501, 1331 500, 498, 497, 496, 495, 494, 492, 491, 486, 485, 1332 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 1333 473, 472, 471, 469, 468, 467, 466, 465, 464, 463, 1334 462, 461, 459, 458, 457, 456, 455, 454, 453, 449, 1335 445, 444, 443, 442, 439, 437, 436, 426, 424, 420, 1336 419, 418, 417, 416, 415, 414, 412, 411, 409, 405, 1337 1338 403, 402, 401, 396, 395, 394, 393, 392, 391, 390, 1339 385, 383, 382, 381, 380, 379, 378, 377, 376, 375, 1340 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 1341 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 1342 352, 351, 350, 349, 348, 347, 346, 345, 344, 341, 1343 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 1344 328, 324, 322, 321, 320, 319, 315, 313, 312, 311, 1345 310, 309, 308, 307, 306, 302, 301, 299, 298, 297, 1346 296, 295, 293, 292, 287, 286, 279, 278, 277, 276, 1347 275, 274, 273, 272, 270, 269, 268, 267, 266, 264, 1348 1349 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 1350 253, 252, 251, 250, 249, 248, 247, 246, 244, 243, 1351 242, 241, 240, 239, 238, 237, 236, 235, 234, 232, 1352 231, 230, 229, 228, 227, 225, 224, 223, 222, 221, 1353 220, 219, 218, 217, 216, 215, 213, 212, 211, 210, 1354 209, 208, 207, 206, 205, 204, 203, 202, 201, 199, 1355 198, 197, 196, 194, 193, 192, 191, 190, 189, 187, 1356 181, 180, 176, 175, 168, 167, 166, 165, 158, 157, 1357 155, 154, 153, 149, 148, 147, 146, 145, 144, 141, 1358 140, 138, 137, 135, 134, 132, 130, 129, 128, 126, 1359 1360 125, 124, 122, 121, 119, 118, 117, 116, 115, 114, 1361 113, 110, 109, 108, 107, 106, 105, 104, 103, 102, 1362 100, 99, 98, 97, 96, 95, 94, 92, 91, 87, 1363 83, 82, 81, 78, 76, 52, 38, 32, 22, 18, 1364 14, 12, 11, 7, 6, 5, 1095, 1095, 1095, 1095, 1365 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1366 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1367 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1368 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1369 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1370 1371 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1372 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1373 } ; 1374 1375/* The intent behind this definition is that it'll catch 1376 * any uses of REJECT which flex missed. 1377 */ 1378#define REJECT reject_used_but_not_detected 1379#define yymore() yymore_used_but_not_detected 1380#define YY_MORE_ADJ 0 1381#define YY_RESTORE_YY_MORE_OFFSET 1382#line 1 "../src/compiler/glsl/glsl_lexer.ll" 1383#line 2 "../src/compiler/glsl/glsl_lexer.ll" 1384/* 1385 * Copyright © 2008, 2009 Intel Corporation 1386 * 1387 * Permission is hereby granted, free of charge, to any person obtaining a 1388 * copy of this software and associated documentation files (the "Software"), 1389 * to deal in the Software without restriction, including without limitation 1390 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1391 * and/or sell copies of the Software, and to permit persons to whom the 1392 * Software is furnished to do so, subject to the following conditions: 1393 * 1394 * The above copyright notice and this permission notice (including the next 1395 * paragraph) shall be included in all copies or substantial portions of the 1396 * Software. 1397 * 1398 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1399 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1400 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1401 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1402 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1403 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1404 * DEALINGS IN THE SOFTWARE. 1405 */ 1406#include <ctype.h> 1407#include <limits.h> 1408#include "util/strtod.h" 1409#include "ast.h" 1410#include "glsl_parser_extras.h" 1411#include "glsl_parser.h" 1412#include "main/mtypes.h" 1413 1414static int classify_identifier(struct _mesa_glsl_parse_state *, const char *, 1415 unsigned name_len, YYSTYPE *output); 1416 1417#ifdef _MSC_VER 1418#define YY_NO_UNISTD_H 1419#endif 1420 1421#define YY_NO_INPUT 1422#define YY_USER_ACTION \ 1423 do { \ 1424 yylloc->first_column = yycolumn + 1; \ 1425 yylloc->first_line = yylloc->last_line = yylineno + 1; \ 1426 yycolumn += yyleng; \ 1427 yylloc->last_column = yycolumn + 1; \ 1428 } while(0); 1429 1430#define YY_USER_INIT yylineno = 0; yycolumn = 0; yylloc->source = 0; 1431 1432/* A macro for handling reserved words and keywords across language versions. 1433 * 1434 * Certain words start out as identifiers, become reserved words in 1435 * later language revisions, and finally become language keywords. 1436 * This may happen at different times in desktop GLSL and GLSL ES. 1437 * 1438 * For example, consider the following lexer rule: 1439 * samplerBuffer KEYWORD(130, 0, 140, 0, SAMPLERBUFFER) 1440 * 1441 * This means that "samplerBuffer" will be treated as: 1442 * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40 1443 * - a reserved word - error ...in GLSL >= 1.30 1444 * - an identifier ...in GLSL < 1.30 or GLSL ES 1445 */ 1446#define KEYWORD(reserved_glsl, reserved_glsl_es, \ 1447 allowed_glsl, allowed_glsl_es, token) \ 1448 KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1449 allowed_glsl, allowed_glsl_es, false, token) 1450 1451/** 1452 * Like the KEYWORD macro, but the word is also treated as a keyword 1453 * if the given boolean expression is true. 1454 */ 1455#define KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1456 allowed_glsl, allowed_glsl_es, \ 1457 alt_expr, token) \ 1458 do { \ 1459 if (yyextra->is_version(allowed_glsl, allowed_glsl_es) \ 1460 || (alt_expr)) { \ 1461 return token; \ 1462 } else if (yyextra->is_version(reserved_glsl, \ 1463 reserved_glsl_es)) { \ 1464 _mesa_glsl_error(yylloc, yyextra, \ 1465 "illegal use of reserved word `%s'", yytext); \ 1466 return ERROR_TOK; \ 1467 } else { \ 1468 return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1469 } \ 1470 } while (0) 1471 1472/** 1473 * Like KEYWORD_WITH_ALT, but used for built-in GLSL types 1474 */ 1475#define TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1476 allowed_glsl, allowed_glsl_es, \ 1477 alt_expr, gtype) \ 1478 do { \ 1479 if (yyextra->is_version(allowed_glsl, allowed_glsl_es) \ 1480 || (alt_expr)) { \ 1481 yylval->type = gtype; \ 1482 return BASIC_TYPE_TOK; \ 1483 } else if (yyextra->is_version(reserved_glsl, \ 1484 reserved_glsl_es)) { \ 1485 _mesa_glsl_error(yylloc, yyextra, \ 1486 "illegal use of reserved word `%s'", yytext); \ 1487 return ERROR_TOK; \ 1488 } else { \ 1489 return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1490 } \ 1491 } while (0) 1492 1493#define TYPE(reserved_glsl, reserved_glsl_es, \ 1494 allowed_glsl, allowed_glsl_es, \ 1495 gtype) \ 1496 TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1497 allowed_glsl, allowed_glsl_es, \ 1498 false, gtype) 1499 1500/** 1501 * A macro for handling keywords that have been present in GLSL since 1502 * its origin, but were changed into reserved words in GLSL 3.00 ES. 1503 */ 1504#define DEPRECATED_ES_KEYWORD(token) \ 1505 do { \ 1506 if (yyextra->is_version(0, 300)) { \ 1507 _mesa_glsl_error(yylloc, yyextra, \ 1508 "illegal use of reserved word `%s'", yytext); \ 1509 return ERROR_TOK; \ 1510 } else { \ 1511 return token; \ 1512 } \ 1513 } while (0) 1514 1515/** 1516 * Like DEPRECATED_ES_KEYWORD, but for types 1517 */ 1518#define DEPRECATED_ES_TYPE_WITH_ALT(alt_expr, gtype) \ 1519 do { \ 1520 if (yyextra->is_version(0, 300)) { \ 1521 _mesa_glsl_error(yylloc, yyextra, \ 1522 "illegal use of reserved word `%s'", yytext); \ 1523 return ERROR_TOK; \ 1524 } else if (alt_expr) { \ 1525 yylval->type = gtype; \ 1526 return BASIC_TYPE_TOK; \ 1527 } else { \ 1528 return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1529 } \ 1530 } while (0) 1531 1532#define DEPRECATED_ES_TYPE(gtype) \ 1533 DEPRECATED_ES_TYPE_WITH_ALT(true, gtype) 1534 1535static int 1536literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state, 1537 YYSTYPE *lval, YYLTYPE *lloc, int base) 1538{ 1539 bool is_uint = (text[len - 1] == 'u' || 1540 text[len - 1] == 'U'); 1541 bool is_long = (text[len - 1] == 'l' || text[len - 1] == 'L'); 1542 const char *digits = text; 1543 1544 if (is_long) 1545 is_uint = (text[len - 2] == 'u' && text[len - 1] == 'l') || 1546 (text[len - 2] == 'U' && text[len - 1] == 'L'); 1547 /* Skip "0x" */ 1548 if (base == 16) 1549 digits += 2; 1550 1551 unsigned long long value = strtoull(digits, NULL, base); 1552 1553 if (is_long) 1554 lval->n64 = (int64_t)value; 1555 else 1556 lval->n = (int)value; 1557 1558 if (is_long && !is_uint && base == 10 && value > (uint64_t)LLONG_MAX + 1) { 1559 /* Tries to catch unintentionally providing a negative value. */ 1560 _mesa_glsl_warning(lloc, state, 1561 "signed literal value `%s' is interpreted as %lld", 1562 text, lval->n64); 1563 } else if (!is_long && value > UINT_MAX) { 1564 /* Note that signed 0xffffffff is valid, not out of range! */ 1565 if (state->is_version(130, 300)) { 1566 _mesa_glsl_error(lloc, state, 1567 "literal value `%s' out of range", text); 1568 } else { 1569 _mesa_glsl_warning(lloc, state, 1570 "literal value `%s' out of range", text); 1571 } 1572 } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) { 1573 /* Tries to catch unintentionally providing a negative value. 1574 * Note that -2147483648 is parsed as -(2147483648), so we don't 1575 * want to warn for INT_MAX. 1576 */ 1577 _mesa_glsl_warning(lloc, state, 1578 "signed literal value `%s' is interpreted as %d", 1579 text, lval->n); 1580 } 1581 if (is_long) 1582 return is_uint ? UINT64CONSTANT : INT64CONSTANT; 1583 else 1584 return is_uint ? UINTCONSTANT : INTCONSTANT; 1585} 1586 1587#define LITERAL_INTEGER(base) \ 1588 literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base) 1589 1590#line 1590 "src/compiler/glsl/glsl_lexer.cpp" 1591#line 218 "../src/compiler/glsl/glsl_lexer.ll" 1592 /* Note: When adding any start conditions to this list, you must also 1593 * update the "Internal compiler error" catch-all rule near the end of 1594 * this file. */ 1595 1596#line 1596 "src/compiler/glsl/glsl_lexer.cpp" 1597 1598#define INITIAL 0 1599#define PP 1 1600#define PRAGMA 2 1601 1602#ifndef YY_NO_UNISTD_H 1603/* Special case for "unistd.h", since it is non-ANSI. We include it way 1604 * down here because we want the user's section 1 to have been scanned first. 1605 * The user has a chance to override it with an option. 1606 */ 1607#include <unistd.h> 1608#endif 1609 1610#define YY_EXTRA_TYPE struct _mesa_glsl_parse_state * 1611 1612/* Holds the entire state of the reentrant scanner. */ 1613struct yyguts_t 1614 { 1615 1616 /* User-defined. Not touched by flex. */ 1617 YY_EXTRA_TYPE yyextra_r; 1618 1619 /* The rest are the same as the globals declared in the non-reentrant scanner. */ 1620 FILE *yyin_r, *yyout_r; 1621 size_t yy_buffer_stack_top; /**< index of top of stack. */ 1622 size_t yy_buffer_stack_max; /**< capacity of stack. */ 1623 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ 1624 char yy_hold_char; 1625 yy_size_t yy_n_chars; 1626 yy_size_t yyleng_r; 1627 char *yy_c_buf_p; 1628 int yy_init; 1629 int yy_start; 1630 int yy_did_buffer_switch_on_eof; 1631 int yy_start_stack_ptr; 1632 int yy_start_stack_depth; 1633 int *yy_start_stack; 1634 yy_state_type yy_last_accepting_state; 1635 char* yy_last_accepting_cpos; 1636 1637 int yylineno_r; 1638 int yy_flex_debug_r; 1639 1640 char *yytext_r; 1641 int yy_more_flag; 1642 int yy_more_len; 1643 1644 YYSTYPE * yylval_r; 1645 1646 YYLTYPE * yylloc_r; 1647 1648 }; /* end struct yyguts_t */ 1649 1650static int yy_init_globals ( yyscan_t yyscanner ); 1651 1652 /* This must go here because YYSTYPE and YYLTYPE are included 1653 * from bison output in section 1.*/ 1654 # define yylval yyg->yylval_r 1655 1656 # define yylloc yyg->yylloc_r 1657 1658int yylex_init (yyscan_t* scanner); 1659 1660int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); 1661 1662/* Accessor methods to globals. 1663 These are made visible to non-reentrant scanners for convenience. */ 1664 1665int yylex_destroy ( yyscan_t yyscanner ); 1666 1667int yyget_debug ( yyscan_t yyscanner ); 1668 1669void yyset_debug ( int debug_flag , yyscan_t yyscanner ); 1670 1671YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); 1672 1673void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); 1674 1675FILE *yyget_in ( yyscan_t yyscanner ); 1676 1677void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); 1678 1679FILE *yyget_out ( yyscan_t yyscanner ); 1680 1681void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); 1682 1683 yy_size_t yyget_leng ( yyscan_t yyscanner ); 1684 1685char *yyget_text ( yyscan_t yyscanner ); 1686 1687int yyget_lineno ( yyscan_t yyscanner ); 1688 1689void yyset_lineno ( int _line_number , yyscan_t yyscanner ); 1690 1691int yyget_column ( yyscan_t yyscanner ); 1692 1693void yyset_column ( int _column_no , yyscan_t yyscanner ); 1694 1695YYSTYPE * yyget_lval ( yyscan_t yyscanner ); 1696 1697void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); 1698 1699 YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); 1700 1701 void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); 1702 1703/* Macros after this point can all be overridden by user definitions in 1704 * section 1. 1705 */ 1706 1707#ifndef YY_SKIP_YYWRAP 1708#ifdef __cplusplus 1709extern "C" int yywrap ( yyscan_t yyscanner ); 1710#else 1711extern int yywrap ( yyscan_t yyscanner ); 1712#endif 1713#endif 1714 1715#ifndef YY_NO_UNPUT 1716 1717#endif 1718 1719#ifndef yytext_ptr 1720static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); 1721#endif 1722 1723#ifdef YY_NEED_STRLEN 1724static int yy_flex_strlen ( const char * , yyscan_t yyscanner); 1725#endif 1726 1727#ifndef YY_NO_INPUT 1728#ifdef __cplusplus 1729static int yyinput ( yyscan_t yyscanner ); 1730#else 1731static int input ( yyscan_t yyscanner ); 1732#endif 1733 1734#endif 1735 1736/* Amount of stuff to slurp up with each read. */ 1737#ifndef YY_READ_BUF_SIZE 1738#ifdef __ia64__ 1739/* On IA-64, the buffer size is 16k, not 8k */ 1740#define YY_READ_BUF_SIZE 16384 1741#else 1742#define YY_READ_BUF_SIZE 8192 1743#endif /* __ia64__ */ 1744#endif 1745 1746/* Copy whatever the last rule matched to the standard output. */ 1747#ifndef ECHO 1748/* This used to be an fputs(), but since the string might contain NUL's, 1749 * we now use fwrite(). 1750 */ 1751#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) 1752#endif 1753 1754/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 1755 * is returned in "result". 1756 */ 1757#ifndef YY_INPUT 1758#define YY_INPUT(buf,result,max_size) \ 1759 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 1760 { \ 1761 int c = '*'; \ 1762 yy_size_t n; \ 1763 for ( n = 0; n < max_size && \ 1764 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 1765 buf[n] = (char) c; \ 1766 if ( c == '\n' ) \ 1767 buf[n++] = (char) c; \ 1768 if ( c == EOF && ferror( yyin ) ) \ 1769 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 1770 result = n; \ 1771 } \ 1772 else \ 1773 { \ 1774 errno=0; \ 1775 while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ 1776 { \ 1777 if( errno != EINTR) \ 1778 { \ 1779 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 1780 break; \ 1781 } \ 1782 errno=0; \ 1783 clearerr(yyin); \ 1784 } \ 1785 }\ 1786\ 1787 1788#endif 1789 1790/* No semi-colon after return; correct usage is to write "yyterminate();" - 1791 * we don't want an extra ';' after the "return" because that will cause 1792 * some compilers to complain about unreachable statements. 1793 */ 1794#ifndef yyterminate 1795#define yyterminate() return YY_NULL 1796#endif 1797 1798/* Number of entries by which start-condition stack grows. */ 1799#ifndef YY_START_STACK_INCR 1800#define YY_START_STACK_INCR 25 1801#endif 1802 1803/* Report a fatal error. */ 1804#ifndef YY_FATAL_ERROR 1805#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) 1806#endif 1807 1808/* end tables serialization structures and prototypes */ 1809 1810/* Default declaration of generated scanner - a define so the user can 1811 * easily add parameters. 1812 */ 1813#ifndef YY_DECL 1814#define YY_DECL_IS_OURS 1 1815 1816extern int yylex \ 1817 (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); 1818 1819#define YY_DECL int yylex \ 1820 (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) 1821#endif /* !YY_DECL */ 1822 1823/* Code executed at the beginning of each rule, after yytext and yyleng 1824 * have been set up. 1825 */ 1826#ifndef YY_USER_ACTION 1827#define YY_USER_ACTION 1828#endif 1829 1830/* Code executed at the end of each rule. */ 1831#ifndef YY_BREAK 1832#define YY_BREAK /*LINTED*/break; 1833#endif 1834 1835#define YY_RULE_SETUP \ 1836 if ( yyleng > 0 ) \ 1837 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ 1838 (yytext[yyleng - 1] == '\n'); \ 1839 YY_USER_ACTION 1840 1841/** The main scanner function which does all the work. 1842 */ 1843YY_DECL 1844{ 1845 yy_state_type yy_current_state; 1846 char *yy_cp, *yy_bp; 1847 int yy_act; 1848 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 1849 1850 yylval = yylval_param; 1851 1852 yylloc = yylloc_param; 1853 1854 if ( !yyg->yy_init ) 1855 { 1856 yyg->yy_init = 1; 1857 1858#ifdef YY_USER_INIT 1859 YY_USER_INIT; 1860#endif 1861 1862 if ( ! yyg->yy_start ) 1863 yyg->yy_start = 1; /* first start state */ 1864 1865 if ( ! yyin ) 1866 yyin = stdin; 1867 1868 if ( ! yyout ) 1869 yyout = stdout; 1870 1871 if ( ! YY_CURRENT_BUFFER ) { 1872 yyensure_buffer_stack (yyscanner); 1873 YY_CURRENT_BUFFER_LVALUE = 1874 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); 1875 } 1876 1877 yy_load_buffer_state( yyscanner ); 1878 } 1879 1880 { 1881#line 230 "../src/compiler/glsl/glsl_lexer.ll" 1882 1883 1884#line 1884 "src/compiler/glsl/glsl_lexer.cpp" 1885 1886 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ 1887 { 1888 yy_cp = yyg->yy_c_buf_p; 1889 1890 /* Support of yytext. */ 1891 *yy_cp = yyg->yy_hold_char; 1892 1893 /* yy_bp points to the position in yy_ch_buf of the start of 1894 * the current run. 1895 */ 1896 yy_bp = yy_cp; 1897 1898 yy_current_state = yyg->yy_start; 1899 yy_current_state += YY_AT_BOL(); 1900yy_match: 1901 do 1902 { 1903 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; 1904 if ( yy_accept[yy_current_state] ) 1905 { 1906 yyg->yy_last_accepting_state = yy_current_state; 1907 yyg->yy_last_accepting_cpos = yy_cp; 1908 } 1909 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1910 { 1911 yy_current_state = (int) yy_def[yy_current_state]; 1912 if ( yy_current_state >= 1096 ) 1913 yy_c = yy_meta[yy_c]; 1914 } 1915 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 1916 ++yy_cp; 1917 } 1918 while ( yy_current_state != 1095 ); 1919 yy_cp = yyg->yy_last_accepting_cpos; 1920 yy_current_state = yyg->yy_last_accepting_state; 1921 1922yy_find_action: 1923 yy_act = yy_accept[yy_current_state]; 1924 1925 YY_DO_BEFORE_ACTION; 1926 1927do_action: /* This label is used only to access EOF actions. */ 1928 1929 switch ( yy_act ) 1930 { /* beginning of action switch */ 1931 case 0: /* must back up */ 1932 /* undo the effects of YY_DO_BEFORE_ACTION */ 1933 *yy_cp = yyg->yy_hold_char; 1934 yy_cp = yyg->yy_last_accepting_cpos; 1935 yy_current_state = yyg->yy_last_accepting_state; 1936 goto yy_find_action; 1937 1938case 1: 1939YY_RULE_SETUP 1940#line 232 "../src/compiler/glsl/glsl_lexer.ll" 1941; 1942 YY_BREAK 1943/* Preprocessor tokens. */ 1944case 2: 1945*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1946yyg->yy_c_buf_p = yy_cp -= 1; 1947YY_DO_BEFORE_ACTION; /* set up yytext again */ 1948YY_RULE_SETUP 1949#line 235 "../src/compiler/glsl/glsl_lexer.ll" 1950; 1951 YY_BREAK 1952case 3: 1953YY_RULE_SETUP 1954#line 236 "../src/compiler/glsl/glsl_lexer.ll" 1955{ BEGIN PP; return VERSION_TOK; } 1956 YY_BREAK 1957case 4: 1958YY_RULE_SETUP 1959#line 237 "../src/compiler/glsl/glsl_lexer.ll" 1960{ BEGIN PP; return EXTENSION; } 1961 YY_BREAK 1962case 5: 1963*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1964yyg->yy_c_buf_p = yy_cp -= 1; 1965YY_DO_BEFORE_ACTION; /* set up yytext again */ 1966YY_RULE_SETUP 1967#line 238 "../src/compiler/glsl/glsl_lexer.ll" 1968{ 1969 /* Eat characters until the first digit is 1970 * encountered 1971 */ 1972 char *ptr = yytext; 1973 while (!isdigit(*ptr)) 1974 ptr++; 1975 1976 /* Subtract one from the line number because 1977 * yylineno is zero-based instead of 1978 * one-based. 1979 */ 1980 yylineno = strtol(ptr, &ptr, 0) - 1; 1981 1982 /* From GLSL 3.30 and GLSL ES on, after processing the 1983 * line directive (including its new-line), the implementation 1984 * will behave as if it is compiling at the line number passed 1985 * as argument. It was line number + 1 in older specifications. 1986 */ 1987 if (yyextra->is_version(330, 100)) 1988 yylineno--; 1989 1990 yylloc->source = strtol(ptr, NULL, 0); 1991 } 1992 YY_BREAK 1993case 6: 1994*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1995yyg->yy_c_buf_p = yy_cp -= 1; 1996YY_DO_BEFORE_ACTION; /* set up yytext again */ 1997YY_RULE_SETUP 1998#line 262 "../src/compiler/glsl/glsl_lexer.ll" 1999{ 2000 /* Eat characters until the first digit is 2001 * encountered 2002 */ 2003 char *ptr = yytext; 2004 while (!isdigit(*ptr)) 2005 ptr++; 2006 2007 /* Subtract one from the line number because 2008 * yylineno is zero-based instead of 2009 * one-based. 2010 */ 2011 yylineno = strtol(ptr, &ptr, 0) - 1; 2012 2013 /* From GLSL 3.30 and GLSL ES on, after processing the 2014 * line directive (including its new-line), the implementation 2015 * will behave as if it is compiling at the line number passed 2016 * as argument. It was line number + 1 in older specifications. 2017 */ 2018 if (yyextra->is_version(330, 100)) 2019 yylineno--; 2020 } 2021 YY_BREAK 2022case 7: 2023YY_RULE_SETUP 2024#line 284 "../src/compiler/glsl/glsl_lexer.ll" 2025{ 2026 BEGIN PP; 2027 return PRAGMA_DEBUG_ON; 2028 } 2029 YY_BREAK 2030case 8: 2031YY_RULE_SETUP 2032#line 288 "../src/compiler/glsl/glsl_lexer.ll" 2033{ 2034 BEGIN PP; 2035 return PRAGMA_DEBUG_OFF; 2036 } 2037 YY_BREAK 2038case 9: 2039YY_RULE_SETUP 2040#line 292 "../src/compiler/glsl/glsl_lexer.ll" 2041{ 2042 BEGIN PP; 2043 return PRAGMA_OPTIMIZE_ON; 2044 } 2045 YY_BREAK 2046case 10: 2047YY_RULE_SETUP 2048#line 296 "../src/compiler/glsl/glsl_lexer.ll" 2049{ 2050 BEGIN PP; 2051 return PRAGMA_OPTIMIZE_OFF; 2052 } 2053 YY_BREAK 2054case 11: 2055YY_RULE_SETUP 2056#line 300 "../src/compiler/glsl/glsl_lexer.ll" 2057{ 2058 BEGIN PP; 2059 return PRAGMA_WARNING_ON; 2060 } 2061 YY_BREAK 2062case 12: 2063YY_RULE_SETUP 2064#line 304 "../src/compiler/glsl/glsl_lexer.ll" 2065{ 2066 BEGIN PP; 2067 return PRAGMA_WARNING_OFF; 2068 } 2069 YY_BREAK 2070case 13: 2071YY_RULE_SETUP 2072#line 308 "../src/compiler/glsl/glsl_lexer.ll" 2073{ 2074 BEGIN PP; 2075 return PRAGMA_INVARIANT_ALL; 2076 } 2077 YY_BREAK 2078case 14: 2079YY_RULE_SETUP 2080#line 312 "../src/compiler/glsl/glsl_lexer.ll" 2081{ BEGIN PRAGMA; } 2082 YY_BREAK 2083case 15: 2084/* rule 15 can match eol */ 2085YY_RULE_SETUP 2086#line 314 "../src/compiler/glsl/glsl_lexer.ll" 2087{ BEGIN 0; yylineno++; yycolumn = 0; } 2088 YY_BREAK 2089case 16: 2090YY_RULE_SETUP 2091#line 315 "../src/compiler/glsl/glsl_lexer.ll" 2092{ } 2093 YY_BREAK 2094case 17: 2095YY_RULE_SETUP 2096#line 317 "../src/compiler/glsl/glsl_lexer.ll" 2097{ } 2098 YY_BREAK 2099case 18: 2100YY_RULE_SETUP 2101#line 318 "../src/compiler/glsl/glsl_lexer.ll" 2102{ } 2103 YY_BREAK 2104case 19: 2105YY_RULE_SETUP 2106#line 319 "../src/compiler/glsl/glsl_lexer.ll" 2107return COLON; 2108 YY_BREAK 2109case 20: 2110YY_RULE_SETUP 2111#line 320 "../src/compiler/glsl/glsl_lexer.ll" 2112{ 2113 /* We're not doing linear_strdup here, to avoid an implicit call 2114 * on strlen() for the length of the string, as this is already 2115 * found by flex and stored in yyleng 2116 */ 2117 void *mem_ctx = yyextra->linalloc; 2118 char *id = (char *) linear_alloc_child(mem_ctx, yyleng + 1); 2119 memcpy(id, yytext, yyleng + 1); 2120 yylval->identifier = id; 2121 return IDENTIFIER; 2122 } 2123 YY_BREAK 2124case 21: 2125YY_RULE_SETUP 2126#line 331 "../src/compiler/glsl/glsl_lexer.ll" 2127{ 2128 yylval->n = strtol(yytext, NULL, 10); 2129 return INTCONSTANT; 2130 } 2131 YY_BREAK 2132case 22: 2133YY_RULE_SETUP 2134#line 335 "../src/compiler/glsl/glsl_lexer.ll" 2135{ 2136 yylval->n = 0; 2137 return INTCONSTANT; 2138 } 2139 YY_BREAK 2140case 23: 2141/* rule 23 can match eol */ 2142YY_RULE_SETUP 2143#line 339 "../src/compiler/glsl/glsl_lexer.ll" 2144{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; } 2145 YY_BREAK 2146case 24: 2147YY_RULE_SETUP 2148#line 340 "../src/compiler/glsl/glsl_lexer.ll" 2149{ return yytext[0]; } 2150 YY_BREAK 2151case 25: 2152/* rule 25 can match eol */ 2153YY_RULE_SETUP 2154#line 342 "../src/compiler/glsl/glsl_lexer.ll" 2155{ yylineno++; yycolumn = 0; } 2156 YY_BREAK 2157case 26: 2158YY_RULE_SETUP 2159#line 344 "../src/compiler/glsl/glsl_lexer.ll" 2160DEPRECATED_ES_KEYWORD(ATTRIBUTE); 2161 YY_BREAK 2162case 27: 2163YY_RULE_SETUP 2164#line 345 "../src/compiler/glsl/glsl_lexer.ll" 2165return CONST_TOK; 2166 YY_BREAK 2167case 28: 2168YY_RULE_SETUP 2169#line 346 "../src/compiler/glsl/glsl_lexer.ll" 2170{ yylval->type = glsl_type::bool_type; return BASIC_TYPE_TOK; } 2171 YY_BREAK 2172case 29: 2173YY_RULE_SETUP 2174#line 347 "../src/compiler/glsl/glsl_lexer.ll" 2175{ yylval->type = glsl_type::float_type; return BASIC_TYPE_TOK; } 2176 YY_BREAK 2177case 30: 2178YY_RULE_SETUP 2179#line 348 "../src/compiler/glsl/glsl_lexer.ll" 2180{ yylval->type = glsl_type::int_type; return BASIC_TYPE_TOK; } 2181 YY_BREAK 2182case 31: 2183YY_RULE_SETUP 2184#line 349 "../src/compiler/glsl/glsl_lexer.ll" 2185TYPE(130, 300, 130, 300, glsl_type::uint_type); 2186 YY_BREAK 2187case 32: 2188YY_RULE_SETUP 2189#line 351 "../src/compiler/glsl/glsl_lexer.ll" 2190return BREAK; 2191 YY_BREAK 2192case 33: 2193YY_RULE_SETUP 2194#line 352 "../src/compiler/glsl/glsl_lexer.ll" 2195return CONTINUE; 2196 YY_BREAK 2197case 34: 2198YY_RULE_SETUP 2199#line 353 "../src/compiler/glsl/glsl_lexer.ll" 2200return DO; 2201 YY_BREAK 2202case 35: 2203YY_RULE_SETUP 2204#line 354 "../src/compiler/glsl/glsl_lexer.ll" 2205return WHILE; 2206 YY_BREAK 2207case 36: 2208YY_RULE_SETUP 2209#line 355 "../src/compiler/glsl/glsl_lexer.ll" 2210return ELSE; 2211 YY_BREAK 2212case 37: 2213YY_RULE_SETUP 2214#line 356 "../src/compiler/glsl/glsl_lexer.ll" 2215return FOR; 2216 YY_BREAK 2217case 38: 2218YY_RULE_SETUP 2219#line 357 "../src/compiler/glsl/glsl_lexer.ll" 2220return IF; 2221 YY_BREAK 2222case 39: 2223YY_RULE_SETUP 2224#line 358 "../src/compiler/glsl/glsl_lexer.ll" 2225return DISCARD; 2226 YY_BREAK 2227case 40: 2228YY_RULE_SETUP 2229#line 359 "../src/compiler/glsl/glsl_lexer.ll" 2230return RETURN; 2231 YY_BREAK 2232case 41: 2233YY_RULE_SETUP 2234#line 361 "../src/compiler/glsl/glsl_lexer.ll" 2235{ yylval->type = glsl_type::bvec2_type; return BASIC_TYPE_TOK; } 2236 YY_BREAK 2237case 42: 2238YY_RULE_SETUP 2239#line 362 "../src/compiler/glsl/glsl_lexer.ll" 2240{ yylval->type = glsl_type::bvec3_type; return BASIC_TYPE_TOK; } 2241 YY_BREAK 2242case 43: 2243YY_RULE_SETUP 2244#line 363 "../src/compiler/glsl/glsl_lexer.ll" 2245{ yylval->type = glsl_type::bvec4_type; return BASIC_TYPE_TOK; } 2246 YY_BREAK 2247case 44: 2248YY_RULE_SETUP 2249#line 364 "../src/compiler/glsl/glsl_lexer.ll" 2250{ yylval->type = glsl_type::ivec2_type; return BASIC_TYPE_TOK; } 2251 YY_BREAK 2252case 45: 2253YY_RULE_SETUP 2254#line 365 "../src/compiler/glsl/glsl_lexer.ll" 2255{ yylval->type = glsl_type::ivec3_type; return BASIC_TYPE_TOK; } 2256 YY_BREAK 2257case 46: 2258YY_RULE_SETUP 2259#line 366 "../src/compiler/glsl/glsl_lexer.ll" 2260{ yylval->type = glsl_type::ivec4_type; return BASIC_TYPE_TOK; } 2261 YY_BREAK 2262case 47: 2263YY_RULE_SETUP 2264#line 367 "../src/compiler/glsl/glsl_lexer.ll" 2265TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec2_type); 2266 YY_BREAK 2267case 48: 2268YY_RULE_SETUP 2269#line 368 "../src/compiler/glsl/glsl_lexer.ll" 2270TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec3_type); 2271 YY_BREAK 2272case 49: 2273YY_RULE_SETUP 2274#line 369 "../src/compiler/glsl/glsl_lexer.ll" 2275TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec4_type); 2276 YY_BREAK 2277case 50: 2278YY_RULE_SETUP 2279#line 370 "../src/compiler/glsl/glsl_lexer.ll" 2280{ yylval->type = glsl_type::vec2_type; return BASIC_TYPE_TOK; } 2281 YY_BREAK 2282case 51: 2283YY_RULE_SETUP 2284#line 371 "../src/compiler/glsl/glsl_lexer.ll" 2285{ yylval->type = glsl_type::vec3_type; return BASIC_TYPE_TOK; } 2286 YY_BREAK 2287case 52: 2288YY_RULE_SETUP 2289#line 372 "../src/compiler/glsl/glsl_lexer.ll" 2290{ yylval->type = glsl_type::vec4_type; return BASIC_TYPE_TOK; } 2291 YY_BREAK 2292case 53: 2293YY_RULE_SETUP 2294#line 373 "../src/compiler/glsl/glsl_lexer.ll" 2295{ yylval->type = glsl_type::mat2_type; return BASIC_TYPE_TOK; } 2296 YY_BREAK 2297case 54: 2298YY_RULE_SETUP 2299#line 374 "../src/compiler/glsl/glsl_lexer.ll" 2300{ yylval->type = glsl_type::mat3_type; return BASIC_TYPE_TOK; } 2301 YY_BREAK 2302case 55: 2303YY_RULE_SETUP 2304#line 375 "../src/compiler/glsl/glsl_lexer.ll" 2305{ yylval->type = glsl_type::mat4_type; return BASIC_TYPE_TOK; } 2306 YY_BREAK 2307case 56: 2308YY_RULE_SETUP 2309#line 376 "../src/compiler/glsl/glsl_lexer.ll" 2310TYPE(120, 300, 120, 300, glsl_type::mat2_type); 2311 YY_BREAK 2312case 57: 2313YY_RULE_SETUP 2314#line 377 "../src/compiler/glsl/glsl_lexer.ll" 2315TYPE(120, 300, 120, 300, glsl_type::mat2x3_type); 2316 YY_BREAK 2317case 58: 2318YY_RULE_SETUP 2319#line 378 "../src/compiler/glsl/glsl_lexer.ll" 2320TYPE(120, 300, 120, 300, glsl_type::mat2x4_type); 2321 YY_BREAK 2322case 59: 2323YY_RULE_SETUP 2324#line 379 "../src/compiler/glsl/glsl_lexer.ll" 2325TYPE(120, 300, 120, 300, glsl_type::mat3x2_type); 2326 YY_BREAK 2327case 60: 2328YY_RULE_SETUP 2329#line 380 "../src/compiler/glsl/glsl_lexer.ll" 2330TYPE(120, 300, 120, 300, glsl_type::mat3_type); 2331 YY_BREAK 2332case 61: 2333YY_RULE_SETUP 2334#line 381 "../src/compiler/glsl/glsl_lexer.ll" 2335TYPE(120, 300, 120, 300, glsl_type::mat3x4_type); 2336 YY_BREAK 2337case 62: 2338YY_RULE_SETUP 2339#line 382 "../src/compiler/glsl/glsl_lexer.ll" 2340TYPE(120, 300, 120, 300, glsl_type::mat4x2_type); 2341 YY_BREAK 2342case 63: 2343YY_RULE_SETUP 2344#line 383 "../src/compiler/glsl/glsl_lexer.ll" 2345TYPE(120, 300, 120, 300, glsl_type::mat4x3_type); 2346 YY_BREAK 2347case 64: 2348YY_RULE_SETUP 2349#line 384 "../src/compiler/glsl/glsl_lexer.ll" 2350TYPE(120, 300, 120, 300, glsl_type::mat4_type); 2351 YY_BREAK 2352case 65: 2353YY_RULE_SETUP 2354#line 386 "../src/compiler/glsl/glsl_lexer.ll" 2355return IN_TOK; 2356 YY_BREAK 2357case 66: 2358YY_RULE_SETUP 2359#line 387 "../src/compiler/glsl/glsl_lexer.ll" 2360return OUT_TOK; 2361 YY_BREAK 2362case 67: 2363YY_RULE_SETUP 2364#line 388 "../src/compiler/glsl/glsl_lexer.ll" 2365return INOUT_TOK; 2366 YY_BREAK 2367case 68: 2368YY_RULE_SETUP 2369#line 389 "../src/compiler/glsl/glsl_lexer.ll" 2370return UNIFORM; 2371 YY_BREAK 2372case 69: 2373YY_RULE_SETUP 2374#line 390 "../src/compiler/glsl/glsl_lexer.ll" 2375KEYWORD_WITH_ALT(0, 0, 430, 310, yyextra->ARB_shader_storage_buffer_object_enable, BUFFER); 2376 YY_BREAK 2377case 70: 2378YY_RULE_SETUP 2379#line 391 "../src/compiler/glsl/glsl_lexer.ll" 2380DEPRECATED_ES_KEYWORD(VARYING); 2381 YY_BREAK 2382case 71: 2383YY_RULE_SETUP 2384#line 392 "../src/compiler/glsl/glsl_lexer.ll" 2385KEYWORD_WITH_ALT(120, 300, 120, 300, yyextra->EXT_gpu_shader4_enable, CENTROID); 2386 YY_BREAK 2387case 72: 2388YY_RULE_SETUP 2389#line 393 "../src/compiler/glsl/glsl_lexer.ll" 2390KEYWORD(120, 100, 120, 100, INVARIANT); 2391 YY_BREAK 2392case 73: 2393YY_RULE_SETUP 2394#line 394 "../src/compiler/glsl/glsl_lexer.ll" 2395KEYWORD_WITH_ALT(130, 100, 130, 300, yyextra->EXT_gpu_shader4_enable, FLAT); 2396 YY_BREAK 2397case 74: 2398YY_RULE_SETUP 2399#line 395 "../src/compiler/glsl/glsl_lexer.ll" 2400KEYWORD(130, 300, 130, 300, SMOOTH); 2401 YY_BREAK 2402case 75: 2403YY_RULE_SETUP 2404#line 396 "../src/compiler/glsl/glsl_lexer.ll" 2405KEYWORD_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable, NOPERSPECTIVE); 2406 YY_BREAK 2407case 76: 2408YY_RULE_SETUP 2409#line 397 "../src/compiler/glsl/glsl_lexer.ll" 2410KEYWORD_WITH_ALT(0, 300, 400, 320, yyextra->has_tessellation_shader(), PATCH); 2411 YY_BREAK 2412case 77: 2413YY_RULE_SETUP 2414#line 399 "../src/compiler/glsl/glsl_lexer.ll" 2415DEPRECATED_ES_TYPE(glsl_type::sampler1D_type); 2416 YY_BREAK 2417case 78: 2418YY_RULE_SETUP 2419#line 400 "../src/compiler/glsl/glsl_lexer.ll" 2420{ yylval->type = glsl_type::sampler2D_type; return BASIC_TYPE_TOK; } 2421 YY_BREAK 2422case 79: 2423YY_RULE_SETUP 2424#line 401 "../src/compiler/glsl/glsl_lexer.ll" 2425{ yylval->type = glsl_type::sampler3D_type; return BASIC_TYPE_TOK; } 2426 YY_BREAK 2427case 80: 2428YY_RULE_SETUP 2429#line 402 "../src/compiler/glsl/glsl_lexer.ll" 2430{ yylval->type = glsl_type::samplerCube_type; return BASIC_TYPE_TOK; } 2431 YY_BREAK 2432case 81: 2433YY_RULE_SETUP 2434#line 403 "../src/compiler/glsl/glsl_lexer.ll" 2435TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArray_type); 2436 YY_BREAK 2437case 82: 2438YY_RULE_SETUP 2439#line 404 "../src/compiler/glsl/glsl_lexer.ll" 2440TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArray_type); 2441 YY_BREAK 2442case 83: 2443YY_RULE_SETUP 2444#line 405 "../src/compiler/glsl/glsl_lexer.ll" 2445DEPRECATED_ES_TYPE(glsl_type::sampler1DShadow_type); 2446 YY_BREAK 2447case 84: 2448YY_RULE_SETUP 2449#line 406 "../src/compiler/glsl/glsl_lexer.ll" 2450{ yylval->type = glsl_type::sampler2DShadow_type; return BASIC_TYPE_TOK; } 2451 YY_BREAK 2452case 85: 2453YY_RULE_SETUP 2454#line 407 "../src/compiler/glsl/glsl_lexer.ll" 2455TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::samplerCubeShadow_type); 2456 YY_BREAK 2457case 86: 2458YY_RULE_SETUP 2459#line 408 "../src/compiler/glsl/glsl_lexer.ll" 2460TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArrayShadow_type); 2461 YY_BREAK 2462case 87: 2463YY_RULE_SETUP 2464#line 409 "../src/compiler/glsl/glsl_lexer.ll" 2465TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArrayShadow_type); 2466 YY_BREAK 2467case 88: 2468YY_RULE_SETUP 2469#line 410 "../src/compiler/glsl/glsl_lexer.ll" 2470TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler1D_type); 2471 YY_BREAK 2472case 89: 2473YY_RULE_SETUP 2474#line 411 "../src/compiler/glsl/glsl_lexer.ll" 2475TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2D_type); 2476 YY_BREAK 2477case 90: 2478YY_RULE_SETUP 2479#line 412 "../src/compiler/glsl/glsl_lexer.ll" 2480TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler3D_type); 2481 YY_BREAK 2482case 91: 2483YY_RULE_SETUP 2484#line 413 "../src/compiler/glsl/glsl_lexer.ll" 2485TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isamplerCube_type); 2486 YY_BREAK 2487case 92: 2488YY_RULE_SETUP 2489#line 414 "../src/compiler/glsl/glsl_lexer.ll" 2490TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler1DArray_type); 2491 YY_BREAK 2492case 93: 2493YY_RULE_SETUP 2494#line 415 "../src/compiler/glsl/glsl_lexer.ll" 2495TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler2DArray_type); 2496 YY_BREAK 2497case 94: 2498YY_RULE_SETUP 2499#line 416 "../src/compiler/glsl/glsl_lexer.ll" 2500TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler1D_type); 2501 YY_BREAK 2502case 95: 2503YY_RULE_SETUP 2504#line 417 "../src/compiler/glsl/glsl_lexer.ll" 2505TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2D_type); 2506 YY_BREAK 2507case 96: 2508YY_RULE_SETUP 2509#line 418 "../src/compiler/glsl/glsl_lexer.ll" 2510TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler3D_type); 2511 YY_BREAK 2512case 97: 2513YY_RULE_SETUP 2514#line 419 "../src/compiler/glsl/glsl_lexer.ll" 2515TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usamplerCube_type); 2516 YY_BREAK 2517case 98: 2518YY_RULE_SETUP 2519#line 420 "../src/compiler/glsl/glsl_lexer.ll" 2520TYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler1DArray_type); 2521 YY_BREAK 2522case 99: 2523YY_RULE_SETUP 2524#line 421 "../src/compiler/glsl/glsl_lexer.ll" 2525TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler2DArray_type); 2526 YY_BREAK 2527/* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */ 2528/* these are reserved but not defined in GLSL 3.00 */ 2529/* [iu]sampler2DMS are defined in GLSL ES 3.10 */ 2530case 100: 2531YY_RULE_SETUP 2532#line 426 "../src/compiler/glsl/glsl_lexer.ll" 2533TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::sampler2DMS_type); 2534 YY_BREAK 2535case 101: 2536YY_RULE_SETUP 2537#line 427 "../src/compiler/glsl/glsl_lexer.ll" 2538TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::isampler2DMS_type); 2539 YY_BREAK 2540case 102: 2541YY_RULE_SETUP 2542#line 428 "../src/compiler/glsl/glsl_lexer.ll" 2543TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::usampler2DMS_type); 2544 YY_BREAK 2545case 103: 2546YY_RULE_SETUP 2547#line 429 "../src/compiler/glsl/glsl_lexer.ll" 2548TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::sampler2DMSArray_type); 2549 YY_BREAK 2550case 104: 2551YY_RULE_SETUP 2552#line 430 "../src/compiler/glsl/glsl_lexer.ll" 2553TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::isampler2DMSArray_type); 2554 YY_BREAK 2555case 105: 2556YY_RULE_SETUP 2557#line 431 "../src/compiler/glsl/glsl_lexer.ll" 2558TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::usampler2DMSArray_type); 2559 YY_BREAK 2560/* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */ 2561case 106: 2562YY_RULE_SETUP 2563#line 434 "../src/compiler/glsl/glsl_lexer.ll" 2564TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArray_type); 2565 YY_BREAK 2566case 107: 2567YY_RULE_SETUP 2568#line 435 "../src/compiler/glsl/glsl_lexer.ll" 2569TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::isamplerCubeArray_type); 2570 YY_BREAK 2571case 108: 2572YY_RULE_SETUP 2573#line 436 "../src/compiler/glsl/glsl_lexer.ll" 2574TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::usamplerCubeArray_type); 2575 YY_BREAK 2576case 109: 2577YY_RULE_SETUP 2578#line 437 "../src/compiler/glsl/glsl_lexer.ll" 2579TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArrayShadow_type); 2580 YY_BREAK 2581case 110: 2582YY_RULE_SETUP 2583#line 439 "../src/compiler/glsl/glsl_lexer.ll" 2584{ 2585 if (yyextra->OES_EGL_image_external_enable || yyextra->OES_EGL_image_external_essl3_enable) { 2586 yylval->type = glsl_type::samplerExternalOES_type; 2587 return BASIC_TYPE_TOK; 2588 } else 2589 return IDENTIFIER; 2590 } 2591 YY_BREAK 2592/* keywords available with ARB_gpu_shader5 */ 2593case 111: 2594YY_RULE_SETUP 2595#line 448 "../src/compiler/glsl/glsl_lexer.ll" 2596KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || yyextra->OES_gpu_shader5_enable, PRECISE); 2597 YY_BREAK 2598/* keywords available with ARB_shader_image_load_store */ 2599case 112: 2600YY_RULE_SETUP 2601#line 451 "../src/compiler/glsl/glsl_lexer.ll" 2602TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1D_type); 2603 YY_BREAK 2604case 113: 2605YY_RULE_SETUP 2606#line 452 "../src/compiler/glsl/glsl_lexer.ll" 2607TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2D_type); 2608 YY_BREAK 2609case 114: 2610YY_RULE_SETUP 2611#line 453 "../src/compiler/glsl/glsl_lexer.ll" 2612TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image3D_type); 2613 YY_BREAK 2614case 115: 2615YY_RULE_SETUP 2616#line 454 "../src/compiler/glsl/glsl_lexer.ll" 2617TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DRect_type); 2618 YY_BREAK 2619case 116: 2620YY_RULE_SETUP 2621#line 455 "../src/compiler/glsl/glsl_lexer.ll" 2622TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::imageCube_type); 2623 YY_BREAK 2624case 117: 2625YY_RULE_SETUP 2626#line 456 "../src/compiler/glsl/glsl_lexer.ll" 2627TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::imageBuffer_type); 2628 YY_BREAK 2629case 118: 2630YY_RULE_SETUP 2631#line 457 "../src/compiler/glsl/glsl_lexer.ll" 2632TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1DArray_type); 2633 YY_BREAK 2634case 119: 2635YY_RULE_SETUP 2636#line 458 "../src/compiler/glsl/glsl_lexer.ll" 2637TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DArray_type); 2638 YY_BREAK 2639case 120: 2640YY_RULE_SETUP 2641#line 459 "../src/compiler/glsl/glsl_lexer.ll" 2642TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::imageCubeArray_type); 2643 YY_BREAK 2644case 121: 2645YY_RULE_SETUP 2646#line 460 "../src/compiler/glsl/glsl_lexer.ll" 2647TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMS_type); 2648 YY_BREAK 2649case 122: 2650YY_RULE_SETUP 2651#line 461 "../src/compiler/glsl/glsl_lexer.ll" 2652TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMSArray_type); 2653 YY_BREAK 2654case 123: 2655YY_RULE_SETUP 2656#line 462 "../src/compiler/glsl/glsl_lexer.ll" 2657TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1D_type); 2658 YY_BREAK 2659case 124: 2660YY_RULE_SETUP 2661#line 463 "../src/compiler/glsl/glsl_lexer.ll" 2662TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2D_type); 2663 YY_BREAK 2664case 125: 2665YY_RULE_SETUP 2666#line 464 "../src/compiler/glsl/glsl_lexer.ll" 2667TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage3D_type); 2668 YY_BREAK 2669case 126: 2670YY_RULE_SETUP 2671#line 465 "../src/compiler/glsl/glsl_lexer.ll" 2672TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DRect_type); 2673 YY_BREAK 2674case 127: 2675YY_RULE_SETUP 2676#line 466 "../src/compiler/glsl/glsl_lexer.ll" 2677TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimageCube_type); 2678 YY_BREAK 2679case 128: 2680YY_RULE_SETUP 2681#line 467 "../src/compiler/glsl/glsl_lexer.ll" 2682TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::iimageBuffer_type); 2683 YY_BREAK 2684case 129: 2685YY_RULE_SETUP 2686#line 468 "../src/compiler/glsl/glsl_lexer.ll" 2687TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1DArray_type); 2688 YY_BREAK 2689case 130: 2690YY_RULE_SETUP 2691#line 469 "../src/compiler/glsl/glsl_lexer.ll" 2692TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DArray_type); 2693 YY_BREAK 2694case 131: 2695YY_RULE_SETUP 2696#line 470 "../src/compiler/glsl/glsl_lexer.ll" 2697TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::iimageCubeArray_type); 2698 YY_BREAK 2699case 132: 2700YY_RULE_SETUP 2701#line 471 "../src/compiler/glsl/glsl_lexer.ll" 2702TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMS_type); 2703 YY_BREAK 2704case 133: 2705YY_RULE_SETUP 2706#line 472 "../src/compiler/glsl/glsl_lexer.ll" 2707TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMSArray_type); 2708 YY_BREAK 2709case 134: 2710YY_RULE_SETUP 2711#line 473 "../src/compiler/glsl/glsl_lexer.ll" 2712TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1D_type); 2713 YY_BREAK 2714case 135: 2715YY_RULE_SETUP 2716#line 474 "../src/compiler/glsl/glsl_lexer.ll" 2717TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2D_type); 2718 YY_BREAK 2719case 136: 2720YY_RULE_SETUP 2721#line 475 "../src/compiler/glsl/glsl_lexer.ll" 2722TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage3D_type); 2723 YY_BREAK 2724case 137: 2725YY_RULE_SETUP 2726#line 476 "../src/compiler/glsl/glsl_lexer.ll" 2727TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DRect_type); 2728 YY_BREAK 2729case 138: 2730YY_RULE_SETUP 2731#line 477 "../src/compiler/glsl/glsl_lexer.ll" 2732TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimageCube_type); 2733 YY_BREAK 2734case 139: 2735YY_RULE_SETUP 2736#line 478 "../src/compiler/glsl/glsl_lexer.ll" 2737TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::uimageBuffer_type); 2738 YY_BREAK 2739case 140: 2740YY_RULE_SETUP 2741#line 479 "../src/compiler/glsl/glsl_lexer.ll" 2742TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1DArray_type); 2743 YY_BREAK 2744case 141: 2745YY_RULE_SETUP 2746#line 480 "../src/compiler/glsl/glsl_lexer.ll" 2747TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DArray_type); 2748 YY_BREAK 2749case 142: 2750YY_RULE_SETUP 2751#line 481 "../src/compiler/glsl/glsl_lexer.ll" 2752TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::uimageCubeArray_type); 2753 YY_BREAK 2754case 143: 2755YY_RULE_SETUP 2756#line 482 "../src/compiler/glsl/glsl_lexer.ll" 2757TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMS_type); 2758 YY_BREAK 2759case 144: 2760YY_RULE_SETUP 2761#line 483 "../src/compiler/glsl/glsl_lexer.ll" 2762TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMSArray_type); 2763 YY_BREAK 2764case 145: 2765YY_RULE_SETUP 2766#line 484 "../src/compiler/glsl/glsl_lexer.ll" 2767KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); 2768 YY_BREAK 2769case 146: 2770YY_RULE_SETUP 2771#line 485 "../src/compiler/glsl/glsl_lexer.ll" 2772KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); 2773 YY_BREAK 2774case 147: 2775YY_RULE_SETUP 2776#line 486 "../src/compiler/glsl/glsl_lexer.ll" 2777KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); 2778 YY_BREAK 2779case 148: 2780YY_RULE_SETUP 2781#line 487 "../src/compiler/glsl/glsl_lexer.ll" 2782KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); 2783 YY_BREAK 2784case 149: 2785YY_RULE_SETUP 2786#line 489 "../src/compiler/glsl/glsl_lexer.ll" 2787KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, COHERENT); 2788 YY_BREAK 2789case 150: 2790YY_RULE_SETUP 2791#line 490 "../src/compiler/glsl/glsl_lexer.ll" 2792KEYWORD_WITH_ALT(110, 100, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, VOLATILE); 2793 YY_BREAK 2794case 151: 2795YY_RULE_SETUP 2796#line 491 "../src/compiler/glsl/glsl_lexer.ll" 2797KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, RESTRICT); 2798 YY_BREAK 2799case 152: 2800YY_RULE_SETUP 2801#line 492 "../src/compiler/glsl/glsl_lexer.ll" 2802KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, READONLY); 2803 YY_BREAK 2804case 153: 2805YY_RULE_SETUP 2806#line 493 "../src/compiler/glsl/glsl_lexer.ll" 2807KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, WRITEONLY); 2808 YY_BREAK 2809case 154: 2810YY_RULE_SETUP 2811#line 495 "../src/compiler/glsl/glsl_lexer.ll" 2812TYPE_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, glsl_type::atomic_uint_type); 2813 YY_BREAK 2814case 155: 2815YY_RULE_SETUP 2816#line 497 "../src/compiler/glsl/glsl_lexer.ll" 2817KEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED); 2818 YY_BREAK 2819case 156: 2820YY_RULE_SETUP 2821#line 499 "../src/compiler/glsl/glsl_lexer.ll" 2822return STRUCT; 2823 YY_BREAK 2824case 157: 2825YY_RULE_SETUP 2826#line 500 "../src/compiler/glsl/glsl_lexer.ll" 2827return VOID_TOK; 2828 YY_BREAK 2829case 158: 2830YY_RULE_SETUP 2831#line 502 "../src/compiler/glsl/glsl_lexer.ll" 2832{ 2833 if ((yyextra->is_version(140, 300)) 2834 || yyextra->ARB_bindless_texture_enable 2835 || yyextra->KHR_blend_equation_advanced_enable 2836 || yyextra->AMD_conservative_depth_enable 2837 || yyextra->ARB_conservative_depth_enable 2838 || yyextra->ARB_explicit_attrib_location_enable 2839 || yyextra->ARB_explicit_uniform_location_enable 2840 || yyextra->ARB_post_depth_coverage_enable 2841 || yyextra->has_separate_shader_objects() 2842 || yyextra->ARB_uniform_buffer_object_enable 2843 || yyextra->ARB_fragment_coord_conventions_enable 2844 || yyextra->ARB_shading_language_420pack_enable 2845 || yyextra->ARB_compute_shader_enable 2846 || yyextra->ARB_tessellation_shader_enable 2847 || yyextra->EXT_shader_framebuffer_fetch_non_coherent_enable) { 2848 return LAYOUT_TOK; 2849 } else { 2850 return classify_identifier(yyextra, yytext, yyleng, yylval); 2851 } 2852 } 2853 YY_BREAK 2854case 159: 2855YY_RULE_SETUP 2856#line 524 "../src/compiler/glsl/glsl_lexer.ll" 2857return INC_OP; 2858 YY_BREAK 2859case 160: 2860YY_RULE_SETUP 2861#line 525 "../src/compiler/glsl/glsl_lexer.ll" 2862return DEC_OP; 2863 YY_BREAK 2864case 161: 2865YY_RULE_SETUP 2866#line 526 "../src/compiler/glsl/glsl_lexer.ll" 2867return LE_OP; 2868 YY_BREAK 2869case 162: 2870YY_RULE_SETUP 2871#line 527 "../src/compiler/glsl/glsl_lexer.ll" 2872return GE_OP; 2873 YY_BREAK 2874case 163: 2875YY_RULE_SETUP 2876#line 528 "../src/compiler/glsl/glsl_lexer.ll" 2877return EQ_OP; 2878 YY_BREAK 2879case 164: 2880YY_RULE_SETUP 2881#line 529 "../src/compiler/glsl/glsl_lexer.ll" 2882return NE_OP; 2883 YY_BREAK 2884case 165: 2885YY_RULE_SETUP 2886#line 530 "../src/compiler/glsl/glsl_lexer.ll" 2887return AND_OP; 2888 YY_BREAK 2889case 166: 2890YY_RULE_SETUP 2891#line 531 "../src/compiler/glsl/glsl_lexer.ll" 2892return OR_OP; 2893 YY_BREAK 2894case 167: 2895YY_RULE_SETUP 2896#line 532 "../src/compiler/glsl/glsl_lexer.ll" 2897return XOR_OP; 2898 YY_BREAK 2899case 168: 2900YY_RULE_SETUP 2901#line 533 "../src/compiler/glsl/glsl_lexer.ll" 2902return LEFT_OP; 2903 YY_BREAK 2904case 169: 2905YY_RULE_SETUP 2906#line 534 "../src/compiler/glsl/glsl_lexer.ll" 2907return RIGHT_OP; 2908 YY_BREAK 2909case 170: 2910YY_RULE_SETUP 2911#line 536 "../src/compiler/glsl/glsl_lexer.ll" 2912return MUL_ASSIGN; 2913 YY_BREAK 2914case 171: 2915YY_RULE_SETUP 2916#line 537 "../src/compiler/glsl/glsl_lexer.ll" 2917return DIV_ASSIGN; 2918 YY_BREAK 2919case 172: 2920YY_RULE_SETUP 2921#line 538 "../src/compiler/glsl/glsl_lexer.ll" 2922return ADD_ASSIGN; 2923 YY_BREAK 2924case 173: 2925YY_RULE_SETUP 2926#line 539 "../src/compiler/glsl/glsl_lexer.ll" 2927return MOD_ASSIGN; 2928 YY_BREAK 2929case 174: 2930YY_RULE_SETUP 2931#line 540 "../src/compiler/glsl/glsl_lexer.ll" 2932return LEFT_ASSIGN; 2933 YY_BREAK 2934case 175: 2935YY_RULE_SETUP 2936#line 541 "../src/compiler/glsl/glsl_lexer.ll" 2937return RIGHT_ASSIGN; 2938 YY_BREAK 2939case 176: 2940YY_RULE_SETUP 2941#line 542 "../src/compiler/glsl/glsl_lexer.ll" 2942return AND_ASSIGN; 2943 YY_BREAK 2944case 177: 2945YY_RULE_SETUP 2946#line 543 "../src/compiler/glsl/glsl_lexer.ll" 2947return XOR_ASSIGN; 2948 YY_BREAK 2949case 178: 2950YY_RULE_SETUP 2951#line 544 "../src/compiler/glsl/glsl_lexer.ll" 2952return OR_ASSIGN; 2953 YY_BREAK 2954case 179: 2955YY_RULE_SETUP 2956#line 545 "../src/compiler/glsl/glsl_lexer.ll" 2957return SUB_ASSIGN; 2958 YY_BREAK 2959case 180: 2960YY_RULE_SETUP 2961#line 547 "../src/compiler/glsl/glsl_lexer.ll" 2962{ 2963 return LITERAL_INTEGER(10); 2964 } 2965 YY_BREAK 2966case 181: 2967YY_RULE_SETUP 2968#line 550 "../src/compiler/glsl/glsl_lexer.ll" 2969{ 2970 return LITERAL_INTEGER(16); 2971 } 2972 YY_BREAK 2973case 182: 2974YY_RULE_SETUP 2975#line 553 "../src/compiler/glsl/glsl_lexer.ll" 2976{ 2977 return LITERAL_INTEGER(8); 2978 } 2979 YY_BREAK 2980case 183: 2981#line 558 "../src/compiler/glsl/glsl_lexer.ll" 2982case 184: 2983#line 559 "../src/compiler/glsl/glsl_lexer.ll" 2984case 185: 2985#line 560 "../src/compiler/glsl/glsl_lexer.ll" 2986case 186: 2987YY_RULE_SETUP 2988#line 560 "../src/compiler/glsl/glsl_lexer.ll" 2989{ 2990 struct _mesa_glsl_parse_state *state = yyextra; 2991 char suffix = yytext[strlen(yytext) - 1]; 2992 if (!state->is_version(120, 300) && 2993 (suffix == 'f' || suffix == 'F')) { 2994 _mesa_glsl_warning(yylloc, state, 2995 "Float suffixes are invalid in GLSL 1.10"); 2996 } 2997 yylval->real = _mesa_strtof(yytext, NULL); 2998 return FLOATCONSTANT; 2999 } 3000 YY_BREAK 3001case 187: 3002#line 573 "../src/compiler/glsl/glsl_lexer.ll" 3003case 188: 3004#line 574 "../src/compiler/glsl/glsl_lexer.ll" 3005case 189: 3006#line 575 "../src/compiler/glsl/glsl_lexer.ll" 3007case 190: 3008YY_RULE_SETUP 3009#line 575 "../src/compiler/glsl/glsl_lexer.ll" 3010{ 3011 if (!yyextra->is_version(400, 0) && 3012 !yyextra->ARB_gpu_shader_fp64_enable) 3013 return ERROR_TOK; 3014 yylval->dreal = _mesa_strtod(yytext, NULL); 3015 return DOUBLECONSTANT; 3016 } 3017 YY_BREAK 3018case 191: 3019YY_RULE_SETUP 3020#line 583 "../src/compiler/glsl/glsl_lexer.ll" 3021{ 3022 yylval->n = 1; 3023 return BOOLCONSTANT; 3024 } 3025 YY_BREAK 3026case 192: 3027YY_RULE_SETUP 3028#line 587 "../src/compiler/glsl/glsl_lexer.ll" 3029{ 3030 yylval->n = 0; 3031 return BOOLCONSTANT; 3032 } 3033 YY_BREAK 3034/* Reserved words in GLSL 1.10. */ 3035case 193: 3036YY_RULE_SETUP 3037#line 594 "../src/compiler/glsl/glsl_lexer.ll" 3038KEYWORD(110, 100, 0, 0, ASM); 3039 YY_BREAK 3040case 194: 3041YY_RULE_SETUP 3042#line 595 "../src/compiler/glsl/glsl_lexer.ll" 3043KEYWORD(110, 100, 0, 0, CLASS); 3044 YY_BREAK 3045case 195: 3046YY_RULE_SETUP 3047#line 596 "../src/compiler/glsl/glsl_lexer.ll" 3048KEYWORD(110, 100, 0, 0, UNION); 3049 YY_BREAK 3050case 196: 3051YY_RULE_SETUP 3052#line 597 "../src/compiler/glsl/glsl_lexer.ll" 3053KEYWORD(110, 100, 0, 0, ENUM); 3054 YY_BREAK 3055case 197: 3056YY_RULE_SETUP 3057#line 598 "../src/compiler/glsl/glsl_lexer.ll" 3058KEYWORD(110, 100, 0, 0, TYPEDEF); 3059 YY_BREAK 3060case 198: 3061YY_RULE_SETUP 3062#line 599 "../src/compiler/glsl/glsl_lexer.ll" 3063KEYWORD(110, 100, 0, 0, TEMPLATE); 3064 YY_BREAK 3065case 199: 3066YY_RULE_SETUP 3067#line 600 "../src/compiler/glsl/glsl_lexer.ll" 3068KEYWORD(110, 100, 0, 0, THIS); 3069 YY_BREAK 3070case 200: 3071YY_RULE_SETUP 3072#line 601 "../src/compiler/glsl/glsl_lexer.ll" 3073KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); 3074 YY_BREAK 3075case 201: 3076YY_RULE_SETUP 3077#line 602 "../src/compiler/glsl/glsl_lexer.ll" 3078KEYWORD(110, 100, 0, 0, GOTO); 3079 YY_BREAK 3080case 202: 3081YY_RULE_SETUP 3082#line 603 "../src/compiler/glsl/glsl_lexer.ll" 3083KEYWORD(110, 100, 130, 300, SWITCH); 3084 YY_BREAK 3085case 203: 3086YY_RULE_SETUP 3087#line 604 "../src/compiler/glsl/glsl_lexer.ll" 3088KEYWORD(110, 100, 130, 300, DEFAULT); 3089 YY_BREAK 3090case 204: 3091YY_RULE_SETUP 3092#line 605 "../src/compiler/glsl/glsl_lexer.ll" 3093KEYWORD(110, 100, 0, 0, INLINE_TOK); 3094 YY_BREAK 3095case 205: 3096YY_RULE_SETUP 3097#line 606 "../src/compiler/glsl/glsl_lexer.ll" 3098KEYWORD(110, 100, 0, 0, NOINLINE); 3099 YY_BREAK 3100case 206: 3101YY_RULE_SETUP 3102#line 607 "../src/compiler/glsl/glsl_lexer.ll" 3103KEYWORD(110, 100, 0, 0, PUBLIC_TOK); 3104 YY_BREAK 3105case 207: 3106YY_RULE_SETUP 3107#line 608 "../src/compiler/glsl/glsl_lexer.ll" 3108KEYWORD(110, 100, 0, 0, STATIC); 3109 YY_BREAK 3110case 208: 3111YY_RULE_SETUP 3112#line 609 "../src/compiler/glsl/glsl_lexer.ll" 3113KEYWORD(110, 100, 0, 0, EXTERN); 3114 YY_BREAK 3115case 209: 3116YY_RULE_SETUP 3117#line 610 "../src/compiler/glsl/glsl_lexer.ll" 3118KEYWORD(110, 100, 0, 0, EXTERNAL); 3119 YY_BREAK 3120case 210: 3121YY_RULE_SETUP 3122#line 611 "../src/compiler/glsl/glsl_lexer.ll" 3123KEYWORD(110, 100, 0, 0, INTERFACE); 3124 YY_BREAK 3125case 211: 3126YY_RULE_SETUP 3127#line 612 "../src/compiler/glsl/glsl_lexer.ll" 3128KEYWORD(110, 100, 0, 0, LONG_TOK); 3129 YY_BREAK 3130case 212: 3131YY_RULE_SETUP 3132#line 613 "../src/compiler/glsl/glsl_lexer.ll" 3133KEYWORD(110, 100, 0, 0, SHORT_TOK); 3134 YY_BREAK 3135case 213: 3136YY_RULE_SETUP 3137#line 614 "../src/compiler/glsl/glsl_lexer.ll" 3138TYPE_WITH_ALT(130, 100, 130, 300, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::double_type); 3139 YY_BREAK 3140case 214: 3141YY_RULE_SETUP 3142#line 615 "../src/compiler/glsl/glsl_lexer.ll" 3143KEYWORD(110, 100, 0, 0, HALF); 3144 YY_BREAK 3145case 215: 3146YY_RULE_SETUP 3147#line 616 "../src/compiler/glsl/glsl_lexer.ll" 3148KEYWORD(110, 100, 0, 0, FIXED_TOK); 3149 YY_BREAK 3150case 216: 3151YY_RULE_SETUP 3152#line 617 "../src/compiler/glsl/glsl_lexer.ll" 3153KEYWORD_WITH_ALT(110, 100, 0, 0, yyextra->EXT_gpu_shader4_enable, UNSIGNED); 3154 YY_BREAK 3155case 217: 3156YY_RULE_SETUP 3157#line 618 "../src/compiler/glsl/glsl_lexer.ll" 3158KEYWORD(110, 100, 0, 0, INPUT_TOK); 3159 YY_BREAK 3160case 218: 3161YY_RULE_SETUP 3162#line 619 "../src/compiler/glsl/glsl_lexer.ll" 3163KEYWORD(110, 100, 0, 0, OUTPUT); 3164 YY_BREAK 3165case 219: 3166YY_RULE_SETUP 3167#line 620 "../src/compiler/glsl/glsl_lexer.ll" 3168KEYWORD(110, 100, 0, 0, HVEC2); 3169 YY_BREAK 3170case 220: 3171YY_RULE_SETUP 3172#line 621 "../src/compiler/glsl/glsl_lexer.ll" 3173KEYWORD(110, 100, 0, 0, HVEC3); 3174 YY_BREAK 3175case 221: 3176YY_RULE_SETUP 3177#line 622 "../src/compiler/glsl/glsl_lexer.ll" 3178KEYWORD(110, 100, 0, 0, HVEC4); 3179 YY_BREAK 3180case 222: 3181YY_RULE_SETUP 3182#line 623 "../src/compiler/glsl/glsl_lexer.ll" 3183TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec2_type); 3184 YY_BREAK 3185case 223: 3186YY_RULE_SETUP 3187#line 624 "../src/compiler/glsl/glsl_lexer.ll" 3188TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec3_type); 3189 YY_BREAK 3190case 224: 3191YY_RULE_SETUP 3192#line 625 "../src/compiler/glsl/glsl_lexer.ll" 3193TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec4_type); 3194 YY_BREAK 3195case 225: 3196YY_RULE_SETUP 3197#line 626 "../src/compiler/glsl/glsl_lexer.ll" 3198TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type); 3199 YY_BREAK 3200case 226: 3201YY_RULE_SETUP 3202#line 627 "../src/compiler/glsl/glsl_lexer.ll" 3203TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type); 3204 YY_BREAK 3205case 227: 3206YY_RULE_SETUP 3207#line 628 "../src/compiler/glsl/glsl_lexer.ll" 3208TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type); 3209 YY_BREAK 3210case 228: 3211YY_RULE_SETUP 3212#line 629 "../src/compiler/glsl/glsl_lexer.ll" 3213TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type); 3214 YY_BREAK 3215case 229: 3216YY_RULE_SETUP 3217#line 630 "../src/compiler/glsl/glsl_lexer.ll" 3218TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x3_type); 3219 YY_BREAK 3220case 230: 3221YY_RULE_SETUP 3222#line 631 "../src/compiler/glsl/glsl_lexer.ll" 3223TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x4_type); 3224 YY_BREAK 3225case 231: 3226YY_RULE_SETUP 3227#line 632 "../src/compiler/glsl/glsl_lexer.ll" 3228TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x2_type); 3229 YY_BREAK 3230case 232: 3231YY_RULE_SETUP 3232#line 633 "../src/compiler/glsl/glsl_lexer.ll" 3233TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type); 3234 YY_BREAK 3235case 233: 3236YY_RULE_SETUP 3237#line 634 "../src/compiler/glsl/glsl_lexer.ll" 3238TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x4_type); 3239 YY_BREAK 3240case 234: 3241YY_RULE_SETUP 3242#line 635 "../src/compiler/glsl/glsl_lexer.ll" 3243TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x2_type); 3244 YY_BREAK 3245case 235: 3246YY_RULE_SETUP 3247#line 636 "../src/compiler/glsl/glsl_lexer.ll" 3248TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x3_type); 3249 YY_BREAK 3250case 236: 3251YY_RULE_SETUP 3252#line 637 "../src/compiler/glsl/glsl_lexer.ll" 3253TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type); 3254 YY_BREAK 3255case 237: 3256YY_RULE_SETUP 3257#line 638 "../src/compiler/glsl/glsl_lexer.ll" 3258KEYWORD(110, 100, 0, 0, FVEC2); 3259 YY_BREAK 3260case 238: 3261YY_RULE_SETUP 3262#line 639 "../src/compiler/glsl/glsl_lexer.ll" 3263KEYWORD(110, 100, 0, 0, FVEC3); 3264 YY_BREAK 3265case 239: 3266YY_RULE_SETUP 3267#line 640 "../src/compiler/glsl/glsl_lexer.ll" 3268KEYWORD(110, 100, 0, 0, FVEC4); 3269 YY_BREAK 3270case 240: 3271YY_RULE_SETUP 3272#line 641 "../src/compiler/glsl/glsl_lexer.ll" 3273TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRect_type); 3274 YY_BREAK 3275case 241: 3276YY_RULE_SETUP 3277#line 642 "../src/compiler/glsl/glsl_lexer.ll" 3278KEYWORD(110, 100, 0, 0, SAMPLER3DRECT); 3279 YY_BREAK 3280case 242: 3281YY_RULE_SETUP 3282#line 643 "../src/compiler/glsl/glsl_lexer.ll" 3283TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRectShadow_type); 3284 YY_BREAK 3285case 243: 3286YY_RULE_SETUP 3287#line 644 "../src/compiler/glsl/glsl_lexer.ll" 3288KEYWORD(110, 100, 0, 0, SIZEOF); 3289 YY_BREAK 3290case 244: 3291YY_RULE_SETUP 3292#line 645 "../src/compiler/glsl/glsl_lexer.ll" 3293KEYWORD(110, 100, 0, 0, CAST); 3294 YY_BREAK 3295case 245: 3296YY_RULE_SETUP 3297#line 646 "../src/compiler/glsl/glsl_lexer.ll" 3298KEYWORD(110, 100, 0, 0, NAMESPACE); 3299 YY_BREAK 3300case 246: 3301YY_RULE_SETUP 3302#line 647 "../src/compiler/glsl/glsl_lexer.ll" 3303KEYWORD(110, 100, 0, 0, USING); 3304 YY_BREAK 3305/* Additional reserved words in GLSL 1.20. */ 3306case 247: 3307YY_RULE_SETUP 3308#line 650 "../src/compiler/glsl/glsl_lexer.ll" 3309KEYWORD(120, 100, 130, 100, LOWP); 3310 YY_BREAK 3311case 248: 3312YY_RULE_SETUP 3313#line 651 "../src/compiler/glsl/glsl_lexer.ll" 3314KEYWORD(120, 100, 130, 100, MEDIUMP); 3315 YY_BREAK 3316case 249: 3317YY_RULE_SETUP 3318#line 652 "../src/compiler/glsl/glsl_lexer.ll" 3319KEYWORD(120, 100, 130, 100, HIGHP); 3320 YY_BREAK 3321case 250: 3322YY_RULE_SETUP 3323#line 653 "../src/compiler/glsl/glsl_lexer.ll" 3324KEYWORD(120, 100, 130, 100, PRECISION); 3325 YY_BREAK 3326/* Additional reserved words in GLSL 1.30. */ 3327case 251: 3328YY_RULE_SETUP 3329#line 656 "../src/compiler/glsl/glsl_lexer.ll" 3330KEYWORD(130, 300, 130, 300, CASE); 3331 YY_BREAK 3332case 252: 3333YY_RULE_SETUP 3334#line 657 "../src/compiler/glsl/glsl_lexer.ll" 3335KEYWORD(130, 300, 0, 0, COMMON); 3336 YY_BREAK 3337case 253: 3338YY_RULE_SETUP 3339#line 658 "../src/compiler/glsl/glsl_lexer.ll" 3340KEYWORD(130, 300, 0, 0, PARTITION); 3341 YY_BREAK 3342case 254: 3343YY_RULE_SETUP 3344#line 659 "../src/compiler/glsl/glsl_lexer.ll" 3345KEYWORD(130, 300, 0, 0, ACTIVE); 3346 YY_BREAK 3347case 255: 3348YY_RULE_SETUP 3349#line 660 "../src/compiler/glsl/glsl_lexer.ll" 3350KEYWORD(130, 100, 0, 0, SUPERP); 3351 YY_BREAK 3352case 256: 3353YY_RULE_SETUP 3354#line 661 "../src/compiler/glsl/glsl_lexer.ll" 3355TYPE_WITH_ALT(130, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object), glsl_type::samplerBuffer_type); 3356 YY_BREAK 3357case 257: 3358YY_RULE_SETUP 3359#line 662 "../src/compiler/glsl/glsl_lexer.ll" 3360KEYWORD(130, 300, 0, 0, FILTER); 3361 YY_BREAK 3362case 258: 3363YY_RULE_SETUP 3364#line 663 "../src/compiler/glsl/glsl_lexer.ll" 3365KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); 3366 YY_BREAK 3367/* Additional reserved words in GLSL 1.40 */ 3368case 259: 3369YY_RULE_SETUP 3370#line 666 "../src/compiler/glsl/glsl_lexer.ll" 3371TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2DRect_type); 3372 YY_BREAK 3373case 260: 3374YY_RULE_SETUP 3375#line 667 "../src/compiler/glsl/glsl_lexer.ll" 3376TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2DRect_type); 3377 YY_BREAK 3378case 261: 3379YY_RULE_SETUP 3380#line 668 "../src/compiler/glsl/glsl_lexer.ll" 3381TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::isamplerBuffer_type); 3382 YY_BREAK 3383case 262: 3384YY_RULE_SETUP 3385#line 669 "../src/compiler/glsl/glsl_lexer.ll" 3386TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::usamplerBuffer_type); 3387 YY_BREAK 3388/* Additional reserved words in GLSL ES 3.00 */ 3389case 263: 3390YY_RULE_SETUP 3391#line 672 "../src/compiler/glsl/glsl_lexer.ll" 3392KEYWORD(420, 300, 0, 0, RESOURCE); 3393 YY_BREAK 3394case 264: 3395YY_RULE_SETUP 3396#line 673 "../src/compiler/glsl/glsl_lexer.ll" 3397KEYWORD_WITH_ALT(400, 300, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->OES_shader_multisample_interpolation_enable, SAMPLE); 3398 YY_BREAK 3399case 265: 3400YY_RULE_SETUP 3401#line 674 "../src/compiler/glsl/glsl_lexer.ll" 3402KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_shader_subroutine_enable, SUBROUTINE); 3403 YY_BREAK 3404/* Additional words for ARB_gpu_shader_int64 */ 3405case 266: 3406YY_RULE_SETUP 3407#line 677 "../src/compiler/glsl/glsl_lexer.ll" 3408TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::int64_t_type); 3409 YY_BREAK 3410case 267: 3411YY_RULE_SETUP 3412#line 678 "../src/compiler/glsl/glsl_lexer.ll" 3413TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec2_type); 3414 YY_BREAK 3415case 268: 3416YY_RULE_SETUP 3417#line 679 "../src/compiler/glsl/glsl_lexer.ll" 3418TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec3_type); 3419 YY_BREAK 3420case 269: 3421YY_RULE_SETUP 3422#line 680 "../src/compiler/glsl/glsl_lexer.ll" 3423TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec4_type); 3424 YY_BREAK 3425case 270: 3426YY_RULE_SETUP 3427#line 682 "../src/compiler/glsl/glsl_lexer.ll" 3428TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type); 3429 YY_BREAK 3430case 271: 3431YY_RULE_SETUP 3432#line 683 "../src/compiler/glsl/glsl_lexer.ll" 3433TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec2_type); 3434 YY_BREAK 3435case 272: 3436YY_RULE_SETUP 3437#line 684 "../src/compiler/glsl/glsl_lexer.ll" 3438TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec3_type); 3439 YY_BREAK 3440case 273: 3441YY_RULE_SETUP 3442#line 685 "../src/compiler/glsl/glsl_lexer.ll" 3443TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec4_type); 3444 YY_BREAK 3445case 274: 3446YY_RULE_SETUP 3447#line 687 "../src/compiler/glsl/glsl_lexer.ll" 3448{ 3449 struct _mesa_glsl_parse_state *state = yyextra; 3450 if (state->es_shader && yyleng > 1024) { 3451 _mesa_glsl_error(yylloc, state, 3452 "Identifier `%s' exceeds 1024 characters", 3453 yytext); 3454 } 3455 return classify_identifier(state, yytext, yyleng, yylval); 3456 } 3457 YY_BREAK 3458case 275: 3459YY_RULE_SETUP 3460#line 697 "../src/compiler/glsl/glsl_lexer.ll" 3461{ struct _mesa_glsl_parse_state *state = yyextra; 3462 state->is_field = true; 3463 return DOT_TOK; } 3464 YY_BREAK 3465case 276: 3466YY_RULE_SETUP 3467#line 701 "../src/compiler/glsl/glsl_lexer.ll" 3468{ return yytext[0]; } 3469 YY_BREAK 3470case 277: 3471YY_RULE_SETUP 3472#line 703 "../src/compiler/glsl/glsl_lexer.ll" 3473YY_FATAL_ERROR( "flex scanner jammed" ); 3474 YY_BREAK 3475#line 3475 "src/compiler/glsl/glsl_lexer.cpp" 3476case YY_STATE_EOF(INITIAL): 3477case YY_STATE_EOF(PP): 3478case YY_STATE_EOF(PRAGMA): 3479 yyterminate(); 3480 3481 case YY_END_OF_BUFFER: 3482 { 3483 /* Amount of text matched not including the EOB char. */ 3484 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; 3485 3486 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 3487 *yy_cp = yyg->yy_hold_char; 3488 YY_RESTORE_YY_MORE_OFFSET 3489 3490 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 3491 { 3492 /* We're scanning a new file or input source. It's 3493 * possible that this happened because the user 3494 * just pointed yyin at a new source and called 3495 * yylex(). If so, then we have to assure 3496 * consistency between YY_CURRENT_BUFFER and our 3497 * globals. Here is the right place to do so, because 3498 * this is the first action (other than possibly a 3499 * back-up) that will match for the new input source. 3500 */ 3501 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 3502 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 3503 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 3504 } 3505 3506 /* Note that here we test for yy_c_buf_p "<=" to the position 3507 * of the first EOB in the buffer, since yy_c_buf_p will 3508 * already have been incremented past the NUL character 3509 * (since all states make transitions on EOB to the 3510 * end-of-buffer state). Contrast this with the test 3511 * in input(). 3512 */ 3513 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) 3514 { /* This was really a NUL. */ 3515 yy_state_type yy_next_state; 3516 3517 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; 3518 3519 yy_current_state = yy_get_previous_state( yyscanner ); 3520 3521 /* Okay, we're now positioned to make the NUL 3522 * transition. We couldn't have 3523 * yy_get_previous_state() go ahead and do it 3524 * for us because it doesn't know how to deal 3525 * with the possibility of jamming (and we don't 3526 * want to build jamming into it because then it 3527 * will run more slowly). 3528 */ 3529 3530 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); 3531 3532 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3533 3534 if ( yy_next_state ) 3535 { 3536 /* Consume the NUL. */ 3537 yy_cp = ++yyg->yy_c_buf_p; 3538 yy_current_state = yy_next_state; 3539 goto yy_match; 3540 } 3541 3542 else 3543 { 3544 yy_cp = yyg->yy_last_accepting_cpos; 3545 yy_current_state = yyg->yy_last_accepting_state; 3546 goto yy_find_action; 3547 } 3548 } 3549 3550 else switch ( yy_get_next_buffer( yyscanner ) ) 3551 { 3552 case EOB_ACT_END_OF_FILE: 3553 { 3554 yyg->yy_did_buffer_switch_on_eof = 0; 3555 3556 if ( yywrap( yyscanner ) ) 3557 { 3558 /* Note: because we've taken care in 3559 * yy_get_next_buffer() to have set up 3560 * yytext, we can now set up 3561 * yy_c_buf_p so that if some total 3562 * hoser (like flex itself) wants to 3563 * call the scanner after we return the 3564 * YY_NULL, it'll still work - another 3565 * YY_NULL will get returned. 3566 */ 3567 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; 3568 3569 yy_act = YY_STATE_EOF(YY_START); 3570 goto do_action; 3571 } 3572 3573 else 3574 { 3575 if ( ! yyg->yy_did_buffer_switch_on_eof ) 3576 YY_NEW_FILE; 3577 } 3578 break; 3579 } 3580 3581 case EOB_ACT_CONTINUE_SCAN: 3582 yyg->yy_c_buf_p = 3583 yyg->yytext_ptr + yy_amount_of_matched_text; 3584 3585 yy_current_state = yy_get_previous_state( yyscanner ); 3586 3587 yy_cp = yyg->yy_c_buf_p; 3588 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3589 goto yy_match; 3590 3591 case EOB_ACT_LAST_MATCH: 3592 yyg->yy_c_buf_p = 3593 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; 3594 3595 yy_current_state = yy_get_previous_state( yyscanner ); 3596 3597 yy_cp = yyg->yy_c_buf_p; 3598 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3599 goto yy_find_action; 3600 } 3601 break; 3602 } 3603 3604 default: 3605 YY_FATAL_ERROR( 3606 "fatal flex scanner internal error--no action found" ); 3607 } /* end of action switch */ 3608 } /* end of scanning one token */ 3609 } /* end of user's declarations */ 3610} /* end of yylex */ 3611 3612/* yy_get_next_buffer - try to read in a new buffer 3613 * 3614 * Returns a code representing an action: 3615 * EOB_ACT_LAST_MATCH - 3616 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 3617 * EOB_ACT_END_OF_FILE - end of file 3618 */ 3619static int yy_get_next_buffer (yyscan_t yyscanner) 3620{ 3621 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3622 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 3623 char *source = yyg->yytext_ptr; 3624 yy_size_t number_to_move, i; 3625 int ret_val; 3626 3627 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) 3628 YY_FATAL_ERROR( 3629 "fatal flex scanner internal error--end of buffer missed" ); 3630 3631 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 3632 { /* Don't try to fill the buffer, so this is an EOF. */ 3633 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) 3634 { 3635 /* We matched a single character, the EOB, so 3636 * treat this as a final EOF. 3637 */ 3638 return EOB_ACT_END_OF_FILE; 3639 } 3640 3641 else 3642 { 3643 /* We matched some text prior to the EOB, first 3644 * process it. 3645 */ 3646 return EOB_ACT_LAST_MATCH; 3647 } 3648 } 3649 3650 /* Try to read more data. */ 3651 3652 /* First move last chars to start of buffer. */ 3653 number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); 3654 3655 for ( i = 0; i < number_to_move; ++i ) 3656 *(dest++) = *(source++); 3657 3658 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 3659 /* don't do the read, it's not guaranteed to return an EOF, 3660 * just force an EOF 3661 */ 3662 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; 3663 3664 else 3665 { 3666 yy_size_t num_to_read = 3667 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 3668 3669 while ( num_to_read <= 0 ) 3670 { /* Not enough room in the buffer - grow it. */ 3671 3672 /* just a shorter name for the current buffer */ 3673 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; 3674 3675 int yy_c_buf_p_offset = 3676 (int) (yyg->yy_c_buf_p - b->yy_ch_buf); 3677 3678 if ( b->yy_is_our_buffer ) 3679 { 3680 yy_size_t new_size = b->yy_buf_size * 2; 3681 3682 if ( new_size <= 0 ) 3683 b->yy_buf_size += b->yy_buf_size / 8; 3684 else 3685 b->yy_buf_size *= 2; 3686 3687 b->yy_ch_buf = (char *) 3688 /* Include room in for 2 EOB chars. */ 3689 yyrealloc( (void *) b->yy_ch_buf, 3690 (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); 3691 } 3692 else 3693 /* Can't grow it, we don't own it. */ 3694 b->yy_ch_buf = NULL; 3695 3696 if ( ! b->yy_ch_buf ) 3697 YY_FATAL_ERROR( 3698 "fatal error - scanner input buffer overflow" ); 3699 3700 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 3701 3702 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 3703 number_to_move - 1; 3704 3705 } 3706 3707 if ( num_to_read > YY_READ_BUF_SIZE ) 3708 num_to_read = YY_READ_BUF_SIZE; 3709 3710 /* Read in more data. */ 3711 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 3712 yyg->yy_n_chars, num_to_read ); 3713 3714 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 3715 } 3716 3717 if ( yyg->yy_n_chars == 0 ) 3718 { 3719 if ( number_to_move == YY_MORE_ADJ ) 3720 { 3721 ret_val = EOB_ACT_END_OF_FILE; 3722 yyrestart( yyin , yyscanner); 3723 } 3724 3725 else 3726 { 3727 ret_val = EOB_ACT_LAST_MATCH; 3728 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 3729 YY_BUFFER_EOF_PENDING; 3730 } 3731 } 3732 3733 else 3734 ret_val = EOB_ACT_CONTINUE_SCAN; 3735 3736 if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 3737 /* Extend the array by 50%, plus the number we really need. */ 3738 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); 3739 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( 3740 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); 3741 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 3742 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 3743 /* "- 2" to take care of EOB's */ 3744 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (yy_size_t) (new_size - 2); 3745 } 3746 3747 yyg->yy_n_chars += number_to_move; 3748 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; 3749 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 3750 3751 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 3752 3753 return ret_val; 3754} 3755 3756/* yy_get_previous_state - get the state just before the EOB char was reached */ 3757 3758 static yy_state_type yy_get_previous_state (yyscan_t yyscanner) 3759{ 3760 yy_state_type yy_current_state; 3761 char *yy_cp; 3762 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3763 3764 yy_current_state = yyg->yy_start; 3765 yy_current_state += YY_AT_BOL(); 3766 3767 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 3768 { 3769 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 3770 if ( yy_accept[yy_current_state] ) 3771 { 3772 yyg->yy_last_accepting_state = yy_current_state; 3773 yyg->yy_last_accepting_cpos = yy_cp; 3774 } 3775 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 3776 { 3777 yy_current_state = (int) yy_def[yy_current_state]; 3778 if ( yy_current_state >= 1096 ) 3779 yy_c = yy_meta[yy_c]; 3780 } 3781 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 3782 } 3783 3784 return yy_current_state; 3785} 3786 3787/* yy_try_NUL_trans - try to make a transition on the NUL character 3788 * 3789 * synopsis 3790 * next_state = yy_try_NUL_trans( current_state ); 3791 */ 3792 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) 3793{ 3794 int yy_is_jam; 3795 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ 3796 char *yy_cp = yyg->yy_c_buf_p; 3797 3798 YY_CHAR yy_c = 1; 3799 if ( yy_accept[yy_current_state] ) 3800 { 3801 yyg->yy_last_accepting_state = yy_current_state; 3802 yyg->yy_last_accepting_cpos = yy_cp; 3803 } 3804 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 3805 { 3806 yy_current_state = (int) yy_def[yy_current_state]; 3807 if ( yy_current_state >= 1096 ) 3808 yy_c = yy_meta[yy_c]; 3809 } 3810 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 3811 yy_is_jam = (yy_current_state == 1095); 3812 3813 (void)yyg; 3814 return yy_is_jam ? 0 : yy_current_state; 3815} 3816 3817#ifndef YY_NO_UNPUT 3818 3819#endif 3820 3821#ifndef YY_NO_INPUT 3822#ifdef __cplusplus 3823 static int yyinput (yyscan_t yyscanner) 3824#else 3825 static int input (yyscan_t yyscanner) 3826#endif 3827 3828{ 3829 int c; 3830 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3831 3832 *yyg->yy_c_buf_p = yyg->yy_hold_char; 3833 3834 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) 3835 { 3836 /* yy_c_buf_p now points to the character we want to return. 3837 * If this occurs *before* the EOB characters, then it's a 3838 * valid NUL; if not, then we've hit the end of the buffer. 3839 */ 3840 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) 3841 /* This was really a NUL. */ 3842 *yyg->yy_c_buf_p = '\0'; 3843 3844 else 3845 { /* need more input */ 3846 yy_size_t offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); 3847 ++yyg->yy_c_buf_p; 3848 3849 switch ( yy_get_next_buffer( yyscanner ) ) 3850 { 3851 case EOB_ACT_LAST_MATCH: 3852 /* This happens because yy_g_n_b() 3853 * sees that we've accumulated a 3854 * token and flags that we need to 3855 * try matching the token before 3856 * proceeding. But for input(), 3857 * there's no matching to consider. 3858 * So convert the EOB_ACT_LAST_MATCH 3859 * to EOB_ACT_END_OF_FILE. 3860 */ 3861 3862 /* Reset buffer status. */ 3863 yyrestart( yyin , yyscanner); 3864 3865 /*FALLTHROUGH*/ 3866 3867 case EOB_ACT_END_OF_FILE: 3868 { 3869 if ( yywrap( yyscanner ) ) 3870 return 0; 3871 3872 if ( ! yyg->yy_did_buffer_switch_on_eof ) 3873 YY_NEW_FILE; 3874#ifdef __cplusplus 3875 return yyinput(yyscanner); 3876#else 3877 return input(yyscanner); 3878#endif 3879 } 3880 3881 case EOB_ACT_CONTINUE_SCAN: 3882 yyg->yy_c_buf_p = yyg->yytext_ptr + offset; 3883 break; 3884 } 3885 } 3886 } 3887 3888 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ 3889 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ 3890 yyg->yy_hold_char = *++yyg->yy_c_buf_p; 3891 3892 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); 3893 3894 return c; 3895} 3896#endif /* ifndef YY_NO_INPUT */ 3897 3898/** Immediately switch to a different input stream. 3899 * @param input_file A readable stream. 3900 * @param yyscanner The scanner object. 3901 * @note This function does not reset the start condition to @c INITIAL . 3902 */ 3903 void yyrestart (FILE * input_file , yyscan_t yyscanner) 3904{ 3905 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3906 3907 if ( ! YY_CURRENT_BUFFER ){ 3908 yyensure_buffer_stack (yyscanner); 3909 YY_CURRENT_BUFFER_LVALUE = 3910 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); 3911 } 3912 3913 yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); 3914 yy_load_buffer_state( yyscanner ); 3915} 3916 3917/** Switch to a different input buffer. 3918 * @param new_buffer The new input buffer. 3919 * @param yyscanner The scanner object. 3920 */ 3921 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) 3922{ 3923 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3924 3925 /* TODO. We should be able to replace this entire function body 3926 * with 3927 * yypop_buffer_state(); 3928 * yypush_buffer_state(new_buffer); 3929 */ 3930 yyensure_buffer_stack (yyscanner); 3931 if ( YY_CURRENT_BUFFER == new_buffer ) 3932 return; 3933 3934 if ( YY_CURRENT_BUFFER ) 3935 { 3936 /* Flush out information for old buffer. */ 3937 *yyg->yy_c_buf_p = yyg->yy_hold_char; 3938 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; 3939 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 3940 } 3941 3942 YY_CURRENT_BUFFER_LVALUE = new_buffer; 3943 yy_load_buffer_state( yyscanner ); 3944 3945 /* We don't actually know whether we did this switch during 3946 * EOF (yywrap()) processing, but the only time this flag 3947 * is looked at is after yywrap() is called, so it's safe 3948 * to go ahead and always set it. 3949 */ 3950 yyg->yy_did_buffer_switch_on_eof = 1; 3951} 3952 3953static void yy_load_buffer_state (yyscan_t yyscanner) 3954{ 3955 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3956 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 3957 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 3958 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 3959 yyg->yy_hold_char = *yyg->yy_c_buf_p; 3960} 3961 3962/** Allocate and initialize an input buffer state. 3963 * @param file A readable stream. 3964 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 3965 * @param yyscanner The scanner object. 3966 * @return the allocated buffer state. 3967 */ 3968 YY_BUFFER_STATE yy_create_buffer (FILE * file, yy_size_t size , yyscan_t yyscanner) 3969{ 3970 YY_BUFFER_STATE b; 3971 3972 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); 3973 if ( ! b ) 3974 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3975 3976 b->yy_buf_size = size; 3977 3978 /* yy_ch_buf has to be 2 characters longer than the size given because 3979 * we need to put in 2 end-of-buffer characters. 3980 */ 3981 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); 3982 if ( ! b->yy_ch_buf ) 3983 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3984 3985 b->yy_is_our_buffer = 1; 3986 3987 yy_init_buffer( b, file , yyscanner); 3988 3989 return b; 3990} 3991 3992/** Destroy the buffer. 3993 * @param b a buffer created with yy_create_buffer() 3994 * @param yyscanner The scanner object. 3995 */ 3996 void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) 3997{ 3998 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3999 4000 if ( ! b ) 4001 return; 4002 4003 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 4004 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 4005 4006 if ( b->yy_is_our_buffer ) 4007 yyfree( (void *) b->yy_ch_buf , yyscanner ); 4008 4009 yyfree( (void *) b , yyscanner ); 4010} 4011 4012/* Initializes or reinitializes a buffer. 4013 * This function is sometimes called more than once on the same buffer, 4014 * such as during a yyrestart() or at EOF. 4015 */ 4016 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) 4017 4018{ 4019 int oerrno = errno; 4020 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4021 4022 yy_flush_buffer( b , yyscanner); 4023 4024 b->yy_input_file = file; 4025 b->yy_fill_buffer = 1; 4026 4027 /* If b is the current buffer, then yy_init_buffer was _probably_ 4028 * called from yyrestart() or through yy_get_next_buffer. 4029 * In that case, we don't want to reset the lineno or column. 4030 */ 4031 if (b != YY_CURRENT_BUFFER){ 4032 b->yy_bs_lineno = 1; 4033 b->yy_bs_column = 0; 4034 } 4035 4036 b->yy_is_interactive = 0; 4037 4038 errno = oerrno; 4039} 4040 4041/** Discard all buffered characters. On the next scan, YY_INPUT will be called. 4042 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 4043 * @param yyscanner The scanner object. 4044 */ 4045 void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) 4046{ 4047 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4048 if ( ! b ) 4049 return; 4050 4051 b->yy_n_chars = 0; 4052 4053 /* We always need two end-of-buffer characters. The first causes 4054 * a transition to the end-of-buffer state. The second causes 4055 * a jam in that state. 4056 */ 4057 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 4058 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 4059 4060 b->yy_buf_pos = &b->yy_ch_buf[0]; 4061 4062 b->yy_at_bol = 1; 4063 b->yy_buffer_status = YY_BUFFER_NEW; 4064 4065 if ( b == YY_CURRENT_BUFFER ) 4066 yy_load_buffer_state( yyscanner ); 4067} 4068 4069/** Pushes the new state onto the stack. The new state becomes 4070 * the current state. This function will allocate the stack 4071 * if necessary. 4072 * @param new_buffer The new state. 4073 * @param yyscanner The scanner object. 4074 */ 4075void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) 4076{ 4077 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4078 if (new_buffer == NULL) 4079 return; 4080 4081 yyensure_buffer_stack(yyscanner); 4082 4083 /* This block is copied from yy_switch_to_buffer. */ 4084 if ( YY_CURRENT_BUFFER ) 4085 { 4086 /* Flush out information for old buffer. */ 4087 *yyg->yy_c_buf_p = yyg->yy_hold_char; 4088 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; 4089 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 4090 } 4091 4092 /* Only push if top exists. Otherwise, replace top. */ 4093 if (YY_CURRENT_BUFFER) 4094 yyg->yy_buffer_stack_top++; 4095 YY_CURRENT_BUFFER_LVALUE = new_buffer; 4096 4097 /* copied from yy_switch_to_buffer. */ 4098 yy_load_buffer_state( yyscanner ); 4099 yyg->yy_did_buffer_switch_on_eof = 1; 4100} 4101 4102/** Removes and deletes the top of the stack, if present. 4103 * The next element becomes the new top. 4104 * @param yyscanner The scanner object. 4105 */ 4106void yypop_buffer_state (yyscan_t yyscanner) 4107{ 4108 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4109 if (!YY_CURRENT_BUFFER) 4110 return; 4111 4112 yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); 4113 YY_CURRENT_BUFFER_LVALUE = NULL; 4114 if (yyg->yy_buffer_stack_top > 0) 4115 --yyg->yy_buffer_stack_top; 4116 4117 if (YY_CURRENT_BUFFER) { 4118 yy_load_buffer_state( yyscanner ); 4119 yyg->yy_did_buffer_switch_on_eof = 1; 4120 } 4121} 4122 4123/* Allocates the stack if it does not exist. 4124 * Guarantees space for at least one push. 4125 */ 4126static void yyensure_buffer_stack (yyscan_t yyscanner) 4127{ 4128 yy_size_t num_to_alloc; 4129 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4130 4131 if (!yyg->yy_buffer_stack) { 4132 4133 /* First allocation is just for 2 elements, since we don't know if this 4134 * scanner will even need a stack. We use 2 instead of 1 to avoid an 4135 * immediate realloc on the next call. 4136 */ 4137 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ 4138 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc 4139 (num_to_alloc * sizeof(struct yy_buffer_state*) 4140 , yyscanner); 4141 if ( ! yyg->yy_buffer_stack ) 4142 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 4143 4144 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 4145 4146 yyg->yy_buffer_stack_max = num_to_alloc; 4147 yyg->yy_buffer_stack_top = 0; 4148 return; 4149 } 4150 4151 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ 4152 4153 /* Increase the buffer to prepare for a possible push. */ 4154 yy_size_t grow_size = 8 /* arbitrary grow size */; 4155 4156 num_to_alloc = yyg->yy_buffer_stack_max + grow_size; 4157 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc 4158 (yyg->yy_buffer_stack, 4159 num_to_alloc * sizeof(struct yy_buffer_state*) 4160 , yyscanner); 4161 if ( ! yyg->yy_buffer_stack ) 4162 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 4163 4164 /* zero only the new slots.*/ 4165 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); 4166 yyg->yy_buffer_stack_max = num_to_alloc; 4167 } 4168} 4169 4170/** Setup the input buffer state to scan directly from a user-specified character buffer. 4171 * @param base the character buffer 4172 * @param size the size in bytes of the character buffer 4173 * @param yyscanner The scanner object. 4174 * @return the newly allocated buffer state object. 4175 */ 4176YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) 4177{ 4178 YY_BUFFER_STATE b; 4179 4180 if ( size < 2 || 4181 base[size-2] != YY_END_OF_BUFFER_CHAR || 4182 base[size-1] != YY_END_OF_BUFFER_CHAR ) 4183 /* They forgot to leave room for the EOB's. */ 4184 return NULL; 4185 4186 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); 4187 if ( ! b ) 4188 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 4189 4190 b->yy_buf_size = (size - 2); /* "- 2" to take care of EOB's */ 4191 b->yy_buf_pos = b->yy_ch_buf = base; 4192 b->yy_is_our_buffer = 0; 4193 b->yy_input_file = NULL; 4194 b->yy_n_chars = b->yy_buf_size; 4195 b->yy_is_interactive = 0; 4196 b->yy_at_bol = 1; 4197 b->yy_fill_buffer = 0; 4198 b->yy_buffer_status = YY_BUFFER_NEW; 4199 4200 yy_switch_to_buffer( b , yyscanner ); 4201 4202 return b; 4203} 4204 4205/** Setup the input buffer state to scan a string. The next call to yylex() will 4206 * scan from a @e copy of @a str. 4207 * @param yystr a NUL-terminated string to scan 4208 * @param yyscanner The scanner object. 4209 * @return the newly allocated buffer state object. 4210 * @note If you want to scan bytes that may contain NUL values, then use 4211 * yy_scan_bytes() instead. 4212 */ 4213YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) 4214{ 4215 4216 return yy_scan_bytes( yystr, strlen(yystr) , yyscanner); 4217} 4218 4219/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 4220 * scan from a @e copy of @a bytes. 4221 * @param yybytes the byte buffer to scan 4222 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. 4223 * @param yyscanner The scanner object. 4224 * @return the newly allocated buffer state object. 4225 */ 4226YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) 4227{ 4228 YY_BUFFER_STATE b; 4229 char *buf; 4230 yy_size_t n; 4231 yy_size_t i; 4232 4233 /* Get memory for full buffer, including space for trailing EOB's. */ 4234 n = (yy_size_t) (_yybytes_len + 2); 4235 buf = (char *) yyalloc( n , yyscanner ); 4236 if ( ! buf ) 4237 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 4238 4239 for ( i = 0; i < _yybytes_len; ++i ) 4240 buf[i] = yybytes[i]; 4241 4242 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 4243 4244 b = yy_scan_buffer( buf, n , yyscanner); 4245 if ( ! b ) 4246 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 4247 4248 /* It's okay to grow etc. this buffer, and we should throw it 4249 * away when we're done. 4250 */ 4251 b->yy_is_our_buffer = 1; 4252 4253 return b; 4254} 4255 4256#ifndef YY_EXIT_FAILURE 4257#define YY_EXIT_FAILURE 2 4258#endif 4259 4260static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) 4261{ 4262 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4263 (void)yyg; 4264 fprintf( stderr, "%s\n", msg ); 4265 exit( YY_EXIT_FAILURE ); 4266} 4267 4268/* Redefine yyless() so it works in section 3 code. */ 4269 4270#undef yyless 4271#define yyless(n) \ 4272 do \ 4273 { \ 4274 /* Undo effects of setting up yytext. */ \ 4275 int yyless_macro_arg = (n); \ 4276 YY_LESS_LINENO(yyless_macro_arg);\ 4277 yytext[yyleng] = yyg->yy_hold_char; \ 4278 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ 4279 yyg->yy_hold_char = *yyg->yy_c_buf_p; \ 4280 *yyg->yy_c_buf_p = '\0'; \ 4281 yyleng = yyless_macro_arg; \ 4282 } \ 4283 while ( 0 ) 4284 4285/* Accessor methods (get/set functions) to struct members. */ 4286 4287/** Get the user-defined data for this scanner. 4288 * @param yyscanner The scanner object. 4289 */ 4290YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) 4291{ 4292 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4293 return yyextra; 4294} 4295 4296/** Get the current line number. 4297 * @param yyscanner The scanner object. 4298 */ 4299int yyget_lineno (yyscan_t yyscanner) 4300{ 4301 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4302 4303 if (! YY_CURRENT_BUFFER) 4304 return 0; 4305 4306 return yylineno; 4307} 4308 4309/** Get the current column number. 4310 * @param yyscanner The scanner object. 4311 */ 4312int yyget_column (yyscan_t yyscanner) 4313{ 4314 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4315 4316 if (! YY_CURRENT_BUFFER) 4317 return 0; 4318 4319 return yycolumn; 4320} 4321 4322/** Get the input stream. 4323 * @param yyscanner The scanner object. 4324 */ 4325FILE *yyget_in (yyscan_t yyscanner) 4326{ 4327 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4328 return yyin; 4329} 4330 4331/** Get the output stream. 4332 * @param yyscanner The scanner object. 4333 */ 4334FILE *yyget_out (yyscan_t yyscanner) 4335{ 4336 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4337 return yyout; 4338} 4339 4340/** Get the length of the current token. 4341 * @param yyscanner The scanner object. 4342 */ 4343yy_size_t yyget_leng (yyscan_t yyscanner) 4344{ 4345 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4346 return yyleng; 4347} 4348 4349/** Get the current token. 4350 * @param yyscanner The scanner object. 4351 */ 4352 4353char *yyget_text (yyscan_t yyscanner) 4354{ 4355 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4356 return yytext; 4357} 4358 4359/** Set the user-defined data. This data is never touched by the scanner. 4360 * @param user_defined The data to be associated with this scanner. 4361 * @param yyscanner The scanner object. 4362 */ 4363void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) 4364{ 4365 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4366 yyextra = user_defined ; 4367} 4368 4369/** Set the current line number. 4370 * @param _line_number line number 4371 * @param yyscanner The scanner object. 4372 */ 4373void yyset_lineno (int _line_number , yyscan_t yyscanner) 4374{ 4375 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4376 4377 /* lineno is only valid if an input buffer exists. */ 4378 if (! YY_CURRENT_BUFFER ) 4379 YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); 4380 4381 yylineno = _line_number; 4382} 4383 4384/** Set the current column. 4385 * @param _column_no column number 4386 * @param yyscanner The scanner object. 4387 */ 4388void yyset_column (int _column_no , yyscan_t yyscanner) 4389{ 4390 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4391 4392 /* column is only valid if an input buffer exists. */ 4393 if (! YY_CURRENT_BUFFER ) 4394 YY_FATAL_ERROR( "yyset_column called with no buffer" ); 4395 4396 yycolumn = _column_no; 4397} 4398 4399/** Set the input stream. This does not discard the current 4400 * input buffer. 4401 * @param _in_str A readable stream. 4402 * @param yyscanner The scanner object. 4403 * @see yy_switch_to_buffer 4404 */ 4405void yyset_in (FILE * _in_str , yyscan_t yyscanner) 4406{ 4407 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4408 yyin = _in_str ; 4409} 4410 4411void yyset_out (FILE * _out_str , yyscan_t yyscanner) 4412{ 4413 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4414 yyout = _out_str ; 4415} 4416 4417int yyget_debug (yyscan_t yyscanner) 4418{ 4419 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4420 return yy_flex_debug; 4421} 4422 4423void yyset_debug (int _bdebug , yyscan_t yyscanner) 4424{ 4425 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4426 yy_flex_debug = _bdebug ; 4427} 4428 4429/* Accessor methods for yylval and yylloc */ 4430 4431YYSTYPE * yyget_lval (yyscan_t yyscanner) 4432{ 4433 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4434 return yylval; 4435} 4436 4437void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) 4438{ 4439 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4440 yylval = yylval_param; 4441} 4442 4443YYLTYPE *yyget_lloc (yyscan_t yyscanner) 4444{ 4445 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4446 return yylloc; 4447} 4448 4449void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) 4450{ 4451 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4452 yylloc = yylloc_param; 4453} 4454 4455/* User-visible API */ 4456 4457/* yylex_init is special because it creates the scanner itself, so it is 4458 * the ONLY reentrant function that doesn't take the scanner as the last argument. 4459 * That's why we explicitly handle the declaration, instead of using our macros. 4460 */ 4461int yylex_init(yyscan_t* ptr_yy_globals) 4462{ 4463 if (ptr_yy_globals == NULL){ 4464 errno = EINVAL; 4465 return 1; 4466 } 4467 4468 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); 4469 4470 if (*ptr_yy_globals == NULL){ 4471 errno = ENOMEM; 4472 return 1; 4473 } 4474 4475 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ 4476 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); 4477 4478 return yy_init_globals ( *ptr_yy_globals ); 4479} 4480 4481/* yylex_init_extra has the same functionality as yylex_init, but follows the 4482 * convention of taking the scanner as the last argument. Note however, that 4483 * this is a *pointer* to a scanner, as it will be allocated by this call (and 4484 * is the reason, too, why this function also must handle its own declaration). 4485 * The user defined value in the first argument will be available to yyalloc in 4486 * the yyextra field. 4487 */ 4488int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) 4489{ 4490 struct yyguts_t dummy_yyguts; 4491 4492 yyset_extra (yy_user_defined, &dummy_yyguts); 4493 4494 if (ptr_yy_globals == NULL){ 4495 errno = EINVAL; 4496 return 1; 4497 } 4498 4499 *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); 4500 4501 if (*ptr_yy_globals == NULL){ 4502 errno = ENOMEM; 4503 return 1; 4504 } 4505 4506 /* By setting to 0xAA, we expose bugs in 4507 yy_init_globals. Leave at 0x00 for releases. */ 4508 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); 4509 4510 yyset_extra (yy_user_defined, *ptr_yy_globals); 4511 4512 return yy_init_globals ( *ptr_yy_globals ); 4513} 4514 4515static int yy_init_globals (yyscan_t yyscanner) 4516{ 4517 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4518 /* Initialization is the same as for the non-reentrant scanner. 4519 * This function is called from yylex_destroy(), so don't allocate here. 4520 */ 4521 4522 yyg->yy_buffer_stack = NULL; 4523 yyg->yy_buffer_stack_top = 0; 4524 yyg->yy_buffer_stack_max = 0; 4525 yyg->yy_c_buf_p = NULL; 4526 yyg->yy_init = 0; 4527 yyg->yy_start = 0; 4528 4529 yyg->yy_start_stack_ptr = 0; 4530 yyg->yy_start_stack_depth = 0; 4531 yyg->yy_start_stack = NULL; 4532 4533/* Defined in main.c */ 4534#ifdef YY_STDINIT 4535 yyin = stdin; 4536 yyout = stdout; 4537#else 4538 yyin = NULL; 4539 yyout = NULL; 4540#endif 4541 4542 /* For future reference: Set errno on error, since we are called by 4543 * yylex_init() 4544 */ 4545 return 0; 4546} 4547 4548/* yylex_destroy is for both reentrant and non-reentrant scanners. */ 4549int yylex_destroy (yyscan_t yyscanner) 4550{ 4551 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4552 4553 /* Pop the buffer stack, destroying each element. */ 4554 while(YY_CURRENT_BUFFER){ 4555 yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); 4556 YY_CURRENT_BUFFER_LVALUE = NULL; 4557 yypop_buffer_state(yyscanner); 4558 } 4559 4560 /* Destroy the stack itself. */ 4561 yyfree(yyg->yy_buffer_stack , yyscanner); 4562 yyg->yy_buffer_stack = NULL; 4563 4564 /* Destroy the start condition stack. */ 4565 yyfree( yyg->yy_start_stack , yyscanner ); 4566 yyg->yy_start_stack = NULL; 4567 4568 /* Reset the globals. This is important in a non-reentrant scanner so the next time 4569 * yylex() is called, initialization will occur. */ 4570 yy_init_globals( yyscanner); 4571 4572 /* Destroy the main struct (reentrant only). */ 4573 yyfree ( yyscanner , yyscanner ); 4574 yyscanner = NULL; 4575 return 0; 4576} 4577 4578/* 4579 * Internal utility routines. 4580 */ 4581 4582#ifndef yytext_ptr 4583static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) 4584{ 4585 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4586 (void)yyg; 4587 4588 int i; 4589 for ( i = 0; i < n; ++i ) 4590 s1[i] = s2[i]; 4591} 4592#endif 4593 4594#ifdef YY_NEED_STRLEN 4595static int yy_flex_strlen (const char * s , yyscan_t yyscanner) 4596{ 4597 int n; 4598 for ( n = 0; s[n]; ++n ) 4599 ; 4600 4601 return n; 4602} 4603#endif 4604 4605void *yyalloc (yy_size_t size , yyscan_t yyscanner) 4606{ 4607 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4608 (void)yyg; 4609 return malloc(size); 4610} 4611 4612void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) 4613{ 4614 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4615 (void)yyg; 4616 4617 /* The cast to (char *) in the following accommodates both 4618 * implementations that use char* generic pointers, and those 4619 * that use void* generic pointers. It works with the latter 4620 * because both ANSI C and C++ allow castless assignment from 4621 * any pointer type to void*, and deal with argument conversions 4622 * as though doing an assignment. 4623 */ 4624 return realloc(ptr, size); 4625} 4626 4627void yyfree (void * ptr , yyscan_t yyscanner) 4628{ 4629 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4630 (void)yyg; 4631 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ 4632} 4633 4634#define YYTABLES_NAME "yytables" 4635 4636#line 703 "../src/compiler/glsl/glsl_lexer.ll" 4637 4638 4639int 4640classify_identifier(struct _mesa_glsl_parse_state *state, const char *name, 4641 unsigned name_len, YYSTYPE *output) 4642{ 4643 /* We're not doing linear_strdup here, to avoid an implicit call on 4644 * strlen() for the length of the string, as this is already found by flex 4645 * and stored in yyleng 4646 */ 4647 char *id = (char *) linear_alloc_child(state->linalloc, name_len + 1); 4648 memcpy(id, name, name_len + 1); 4649 output->identifier = id; 4650 4651 if (state->is_field) { 4652 state->is_field = false; 4653 return FIELD_SELECTION; 4654 } 4655 if (state->symbols->get_variable(name) || state->symbols->get_function(name)) 4656 return IDENTIFIER; 4657 else if (state->symbols->get_type(name)) 4658 return TYPE_IDENTIFIER; 4659 else 4660 return NEW_IDENTIFIER; 4661} 4662 4663void 4664_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string) 4665{ 4666 yylex_init_extra(state, & state->scanner); 4667 yy_scan_string(string, state->scanner); 4668} 4669 4670void 4671_mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state) 4672{ 4673 yylex_destroy(state->scanner); 4674} 4675 4676