Home | History | Annotate | Download | only in compiler
      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 yyextra 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 COMMENT 1
   1189 #define FIELDS 2
   1190 
   1191 
   1192 
   1193 
   1194 
   1195 
   1196 #define YY_EXTRA_TYPE 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 yyextra_r;
   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 yyget_extra  (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 yyset_extra (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 yylex_init_extra( 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