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