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